คำเตือน!! บทความนี้มีแต่ Text ไม่เหมาะกับผู้ที่ไม่ชอบอ่านหนังสือนะครับ :P
จริงๆ เคยคิดว่าอยากจะลองศึกษาเกี่ยวกับการใช้งาน dotnet core บน arm cpu ดู แต่ก็ไม่เคยได้ลองสักที มีแต่ได้เขียนบน Windows ซะเป็นส่วนใหญ่ เอาเป็นว่าวันนี้อยากจะลองติดตั้ง DotNet Core บน Raspbian หรือ OS ของ Raspberry Pi นั่นเอง
เริ่มเลยดีกว่า.... และขอข้ามขั้นตอนติดตั้ง Raspbian ไปเลยก็แล้วกัน
ขั้นตอนแรกสุด เราก็ต้องไปเอาไฟล์ของ Dot Net Core(ขอใช้ตัวย่อ .netCore แทน) จากเว็บกันก่อน โดยในที่นี้จะใช้ Version 3.1.201 สำหรับ SDK และ 3.1.3 สำหรับ runtime และจะใช้แบบ Arm32 ทั้งหมด (จริงๆ จะใช้แบบ Arm64 ก็ได้ แต่ว่าตั้งใจว่าจะเขียนใช้งานกับพวก Hardware ด้วย ซึ่ง libraries ที่มีตอนนี้ยังไม่รองรับ 64bit แบบเต็มๆ เหมือนกับ 32ิbit)
ให้เราโหลดไฟล์ลงมาที่ pi (ขอใช้แทนการเรียก Raspbian/Raspberry Pi) โดยใช้คำสั่งนี้
SDK
wget https://download.visualstudio.microsoft.com/download/pr/ccbcbf70-9911-40b1-a8cf-e018a13e720e/03c0621c6510f9c6f4cca6951f2cc1a4/dotnet-sdk-3.1.201-linux-arm.tar.gz
Runtime
wget https://download.visualstudio.microsoft.com/download/pr/c11e9248-404f-4e5b-bd99-175079419d6f/83902a43e06f9fb4e45a4c6a6d5afc0b/dotnet-runtime-3.1.3-linux-arm.tar.gz
Asp.net Core Runtime
wget https://download.visualstudio.microsoft.com/download/pr/b68cde83-05c7-4421-ad9a-3e6f2cc53824/876dbfc9b4521d3ca89a226c6438ffc1/aspnetcore-runtime-3.1.3-linux-arm.tar.gz
สำหรับ .netCore เวอร์ชันใหม่ๆ สามารถเช็คได้จากลิงค์นี้ https://dotnet.microsoft.com/download
หลังจากที่เราโหลดไฟล์มาครบแล้ว ขั้นตอนต่อไปก็จะเป็นการติดตั้ง .netCore กันสักที โดยที่เราจะเริ่มจากสร้างโฟลเดอร์ dotnet-arm32 ที่ ~/ (หรือ $Home) -> ติดตั้ง SDK -> ติดตั้ง Runtime -> ติดตั้ง Asp.net Core Runtime
ซึ่งคำสั่งก็จะมีดังนี้
mkdir dotnet-arm32
tar zxf dotnet-sdk-3.1.201-linux-arm.tar.gz -C $HOME/dotnet-arm32
tar zxf dotnet-runtime-3.1.3-linux-arm.tar.gz -C $HOME/dotnet-arm32
tar zxf aspnetcore-runtime-3.1.3-linux-arm.tar.gz -C $HOME/dotnet-arm32
ขั้นตอนต่อไป เราก็จะทำการ setup path ให้กับ .netCore เพื่อให้สามารถเรียกใช้งานได้ โดยที่เราจะเพิ่มคำสั่งข้างล่างเข้าไปในไฟล์ .profile เพื่อให้สามารถเรียกใช้งานได้เลย โดยที่เราไม่ต้อง setup ทุกครั้งที่ต้องการใช้งาน
# set .NET Core SDK and Runtime path
export DOTNET_ROOT=$HOME/dotnet-arm32
export PATH=$PATH:$HOME/dotnet-arm32
เปิดไฟล์ .profile ขึ้นมาด้วยสิทธิ์ของ root ด้วยคำสั่ง
sudo nano .profile
แล้วจากนั้นก็เพิ่มคำสั่งเข้าไปที่ด้านล่างสุดของไฟล์ ดังภาพ
จากนั้นให้สั่ง Reboot เครื่องใหม่เพื่อให้ pi อ่านค่า path ที่เพิ่มเข้าไปใหม่
หลังจากนั้นเมื่อ Reboot เสร็จแล้ว ให้ลองใช้คำสั่งนี้เพื่อแสดงรายละเอียดของ .netCore
dotnet --info
ซึ่งก็จะได้รายละเอียดดังภาพ
เพี่ยงเท่านี้ก็จะสามารถใช้งาน .netCore บน pi ได้แล้ว แต่....
ถ้าจะให้ใช้ terminal ide อย่าง nano หรือ vim ก็คงจะลำบากสำหรับบางคน งั้นเรามาใช้ VSCode บน Windows เขียนโปรแกรมกันดีกว่า
เปิด VSCode ขึ้นมาแล้วติดตั้ง extension ที่ชื่อ Remote Development
โดยใช้คีย์ลัด CTRL + Shift + X เพื่อเปิดหน้าต่างของ Extension ขึ้นมา แล้วในช่องค้นหาก็ใส่ชื่อ Remote Development และเลือก Install
หลังจากติดตั้งเสร็จแล้ว ให้กดปุ่ม F1 หรือ CTRL + Shift + P เพื่อเปิด short command ขึ้นมา จากนั้นให้พิมพ์ Remote-ssh: Connect to Host และเลือก + Add new SSH Host เพื่อเป็นการกำหนดข้อมูลของ Pi ที่เราต้องการจะใช้งาน โดยเราสามารถใส่เป็น pi@ ก็ได้ แล้วกด Enter
จากนั้นจะให้เลือกตำแหน่งที่จะบันทึกการตั้งค่าของ SSH ซึ่งในที่นี้จะเลือกเป็น user directory ดังภาพ
เมื่อบันทึกเสร็จแล้ว ให้ปิด VSCode แล้วเปิดขึ้นมาให้ VSCode จะทำการเชื่อมต่อไปยัง Pi และจากนั้นจะถามเกี่ยวกับระบบปลายทางว่าเป็น OS แบบไหน ให้เลือก Linux และกด Enter
หากไม่ขึ้น popup ให้กด F1 และเลือก Remote-ssh: Connect to Host อีกครั้ง จะขึ้นโปรไฟล์ SSH ขึ้นมาให้เลือกไปยังโปรไฟล์ที่เพิ่มเข้าไป
หลังจากนั้นก็จะถามรหัสผ่านสำหรับ login อีกครั้ง ก็จะเป็นอันเสร็จ
สำหรับวิธีใช้งาน ขั้นแรกเราก็ต้องไปสร้างโปรเจคบน pi ขึ้นมาก่อน โดยในที่นี้จะสร้างเป็นโปรเจคไว้ในโฟลเดอร์ Documents\dotnet-projects และสร้างโปรเจคแบบ Console ด้วยคำสั่ง
dotnet new console --name HelloWorld
หลังจากนั้นกลับมาที่ VSCode ก็จะเจอโปรแจค ดังภาพ
จากนั้นทดลองรันโปรเจคโดยใช้ Terminal โดยใช้คีย์ลัด CTRL + Shift + ~ ก็จะมีหน้าต่าง Terminal แสดงขึ้นมา ให้เราย้ายไปใช้โฟลเดอร์ที่เก็บโปรเจคก่อน ซึ่งก็จะเหมือนกับในภาพ
จากนั้นเราจะใช้คำสั่งเพื่อรันโปรเจค ดังนี้
dotnet run
ซึ่งก็จะได้ผลลัพท์แบบนี้
Top comments (0)