บอร์ด Raspberry Pi 4 Model B และ Raspberry Pi OS (64-bit): การใช้งานแบบ Headless#


บอร์ด Raspberry Pi 4 Model B#

บริษัท Raspberry Pi Trading Ltd. / Raspberry Pi Foundation (Cambridge, UK) เป็นที่รู้จักในฐานะผู้ผลิตบอร์ด Raspberry Pi (RPi) จัดอยู่ในประเภทที่เรียกว่า "คอมพิวเตอร์บอร์ดเดี่ยว" (Single Board Computer: SBC) ที่ใช้ชิป SoC (System-on-Chip) ของบริษัท Broadcom ภายในมีตัวประมวลผลตามสถาปัตยกรรมของ ARM Cortex-A Series

โครงการนี้ได้เริ่มพัฒนาจากโมเดลรุ่นแรก ตั้งแต่ปีค.ศ. 2012 บอร์ดรุ่นแรก ๆ ใช้ตัวประมวลผล 32 บิต ที่มีหลายแกน ต่อมามีการเปลี่ยนมาใช้ตัวประมวลผล 64 บิต ตั้งแต่ Raspberry Pi 3 มาถึงบอร์ด Raspberry Pi 4 Model B ซึ่งมีชิป Broadcom BCM2711 (Quad-core Arm Cortex-A72 64-bit SoC @ 1.8GHz) เป็นตัวประมวลผลหลัก และมีหน่วยความจำ SDRAM ให้เลือกใช้ 2GB, 4GB และ 8GB ตามลำดับ และในปีค.ศ. 2023 ก็มีการเปิดตัวบอร์ด Raspberry Pi 5 ซึ่งใช้ชิป Broadcom BCM2712 (Quad-core Arm Cortex-A76 64-bit SoC @ 2.4GHz) เป็นตัวประมวลผลหลัก

บอร์ด RPi มีความสามารถในการประมวลผลมากพอที่จะนำมาใช้เป็นคอมพิวเตอร์อเนกประสงค์ที่มีขนาดเล็กและใช้พลังงานต่ำ เช่น การใช้งานในลักษณะเป็นเครื่องแม่ข่าย (Server) ในระบบเครือข่ายหรือใช้งานแบบตั้งโต๊ะ (Desktop Computer) หรือใช้งานเป็นระบบคอมพิวเตอร์ฝังตัว (Embedded Computer)

แต่ในเอกสารนี้จะกล่าวถึงการติดตั้งและใช้งาน OS สำหรับบอร์ด Raspberry Pi 4 เท่านั้น


การเริ่มต้นใช้งานบอร์ด Raspberry Pi (64-bit)#

ขั้นตอนการเริ่มต้นการใช้งานบอร์ด Raspberry Pi มีดังนี้

  1. เตรียมอุปกรณ์ฮาร์ดแวร์ ได้แก่
    • เลือกใช้บอร์ด RPi 4 Model B (หรือจะเป็นรุ่น RPi 3 Model B/B+ ก็ได้)
    • อุปกรณ์แปลงไฟฟ้า AC-DC Adapter ที่มีเอาต์พุต 5V / 3W สำหรับบอร์ด RPi และมีคอนเนกเตอร์แบบ USB Type-C สำหรับจ่ายไฟ
    • การ์ดหน่วยความจำ MicroSD คลาส 10 (หรือดีกว่า) มีความจุขั้นต่ำ 8GB
    • อุปกรณ์ USB Memory Card Reader สำหรับการเขียนหรืออ่านการ์ดหน่วยความจำ MicroSD ผ่านทางพอร์ต USB (ถ้าคอมพิวเตอร์ผู้ใช้ ไม่มีอุปกรณ์แบบ built-in)
    • สาย LAN ในกรณีที่เชื่อมต่อเข้ากับระบบเครือข่ายด้วย Ethernet
  2. ดาวน์โหลดไฟล์ Raspberry OS Image (64-bit) เช่น สำหรับ RPi 4
    • แนะนำให้ใช้ Official Raspberry OS Image แต่ยังมีตัวเลือกอื่นอีกที่เป็น ระบบปฏิบัติการและสามารถนำมาใช้กับ RPi ได้ เช่น Ubuntu เป็นต้น
  3. ติดตั้งไฟล์ Raspberry Pi OS Image ลงในการ์ดหน่วยความจำ และสามารถใช้ซอฟต์แวร์ Raspberry Pi Imager สำหรับขั้นตอนนี้
  4. เสียบการ์ดหน่วยความจำที่ได้มีการติดตั้ง Raspberry Pi OS ไว้แล้ว และป้อนแรงดันไฟเลี้ยงจากอุปกรณ์ 5V Adapter เข้ากับคอนเนกเตอร์ USB Type-C ของบอร์ด เพื่อให้ RPi เริ่มต้นบูทระบบ
  5. ตรวจสอบการเชื่อมต่อการทำงานของบอร์ด RPi เข้ากับระบบเครือข่าย LAN / WLAN เพื่อทราบหมายเลขแอดเดรสของบอร์ด (IP Address) ที่ได้รับมาโดยอัตโนมัติจาก DHCP Server ในระบบเครือข่าย
  6. ทำขั้นตอน Login เพื่อเข้าใช้งานบอร์ด RPi แบบรีโมทผ่านทาง SSH (Secure Shell)

รูป: เว็บไซต์ของ Raspberry Pi Trading สำหรับดาวน์โหลดซอฟต์แวร์ที่เป็น OS Images สำหรับบอร์ด RPi

ไฟล์ที่ดาวน์โหลดมาสำหรับ Raspberry Pi OS Image มีชื่อไฟล์ลงท้ายด้วย img.xz ให้ทำการแตกไฟล์ออก (เช่น ใช้โปรแกรม 7-Zip) เพื่อให้ได้ไฟล์นามสกุล .img

รูป: ไฟล์สำหรับการติดตั้งและใช้งาน Raspberry Pi Imager

ในตัวอย่างนี่ได้ติดตั้งและใช้งานซอฟต์แวร์ Raspberry Pi Imager (ทดลองใช้เวอร์ชัน v1.72 สำหรับ Windows) และเลือกไฟล์ OS Image (.img) เพื่อนำไปเขียนข้อมูลลงในการ์ดหน่วยความจำ

รูป: เริ่มต้นใช้งาน Raspberry Pi Imager (for Windows)

รูป: จากรายการเมูนคำสั่ง Choose OS ให้เลือก Use custom เพื่อเลือกไฟล์ .img หรือ .img.xz ที่ดาวน์โหลดมาแล้ว

เมื่อได้เลือกไฟล์สำหรับ OS Image แล้ว ถัดไปให้เลือกอุปกรณ์ที่จะเขียนข้อมูล ซึ่งก็คือ การ์ดหน่วยความจำ (microSD) ที่เสียบอยู่ในช่อง Built-in / USB Card Reader และมองเห็นในเครื่องคอมพิวเตอร์ของผู้ใช้

รูป: เลือกรายการสำหรับ Storage

รูป: เลือกไฟล์ OS Image: 64-bit ARM ที่ต้องการจะเขียนข้อมูลลงในการ์ดหน่วยความจำ (เลือกไฟล์ .img หรือ img.xz ก็ได้)

ถ้าต้องการตั้งค่าเพิ่มเติม ให้กดปุ่ม Advanced Options (อยู่บริเวณด้านขวาล่าง) เช่น การเปิดใช้งาน SSH (Secure Shell) การสร้างบัญชีผู้ใช้ pi และตั้งรหัสผ่านสำหรับผู้ใช้ การตั้งค่า SSID และรหัสผ่าน สำหรับเชื่อมต่อกับระบบเครือข่าย Wi-Fi เป็นต้น

รูป: การตั้งค่าสำหรับ Advanced Options ก่อนการติดตั้ง OS Image ไปยังการ์ด MicroSD

รูป: การตั้งค่าสำหรับ Advanced Options

รูป: กดปุ่ม WRITE เพื่อเริ่มต้นเขียนไฟล์ (แต่แนะนำให้ทำขั้นตอน Erase เพื่อลบข้อมูลทั้งหมดในการ์ดหน่วยความจำและฟอร์แมตให้เป็น FAT32 ก่อนเขียนข้อมูลใหม่ลงไป)

รูป: เมื่อ Raspberry Pi Imager เขียนข้อมูลได้สำเร็จแล้ว

เมื่อเขียนข้อมูลลงใน microSD สำเร็จแล้ว คอมพิวเตอร์ของผู้ใช้จะมองเห็นไดรฟ์ ที่มีชื่อว่า boot ซึ่งจะมีไฟล์ต่าง ๆ ของระบบสำหรับการตั้งค่าและบูทระบบ Linux

 


การใช้งานแบบ Headless#

การใช้งานสำหรับคอมพิวเตอร์โดยทั่วไป ผู้ใช้ก็จะต้องต่อเครื่องคอมพิวเตอร์ เข้ากับจอแสดงผล (เช่น ผ่านพอร์ต Mini-HDMI ของบอร์ด RPi) และอุปกรณ์ที่เป็นอินพุตสำหรับผู้ใช้ (Human Input Devices: HID) เช่น แป้นพิมพ์และเมาส์ เป็นต้น

แต่สำหรับการใช้งานบอร์ด RPi ก็ไม่จำเป็นต้องต่ออุปกรณ์อินพุต-เอาต์พุตสำหรับผู้ใช้ตามที่กล่าวไป การใช้งานในลักษณะนี้เรียกว่า การใช้งานแบบ Headless

สำหรับการใช้งานแบบ Headless แนะนำให้เพิ่มไฟล์หรือแก้ไขต่อไปนี้ใน /boot (มองเห็นเป็นไดรฟ์ใน Windows ที่มีชื่อว่า boot)

  • เพิ่มไฟล์ ssh ซึ่งภายในว่างเปล่า (เป็น Empty File) และการเพิ่มไฟล์นี้ ก็เพื่อเปิดใช้งาน SSH Server / Service เมื่อเริ่มใช้งานระบบครั้งแรก และจะทำให้ผู้ใช้สามารถเข้าใช้งานแบบรีโมท ผ่านเครือข่ายได้ด้วย SSH
  • เพิ่มไฟล์ userinfo ซึ่งภายในจะมีชื่อผู้ใช้และรหัสผ่าน เพื่อใช้ในการสร้างบัญชีผู้ใช้ใหม่โดยอัตโนมัติ เมื่อเริ่มใช้งานระบบครั้งแรก (สำหรับ Raspberry OS Bullseye ไม่มีการสร้างบัญชีผู้ใช้ pi ให้มา ด้วยเหตุผลทางด้านความปลอดภัย ดังนั้นจะต้องสร้างบัญชีผู้ใช้เพิ่มเอง)
  • เพิ่มไฟล์ wpa_supplicant ซึ่งใช้สำหรับการตั้งค่าเพื่อให้บอร์ด RPi สามารถเชื่อมต่อด้วย Wi-Fi เข้ากับอุปกรณ์ Access Point ในระบบเครือข่ายไร้สาย (ในกรณีที่ไม่ได้ใช้วิธีการเชื่อมต่อด้วยสาย LAN ที่พอร์ต RJ45)

ข้อสังเกต: ถ้าได้สร้างบัญชีผู้ใช้ ได้เปิดใช้งาน SSH และตั้งค่าสำหรับเชื่อมต่อ WiFi ไว้แล้ว เมื่อทำขั้นตอนการเขียนไฟล์ OS Image ด้วย Raspberry Pi Imager ก็ไม่ต้องทำขั้นตอนนี้

 

รูป: ไดรฟ์ boot ที่มองเห็นหลังจากการเขียนไฟล์ OS Image ไปยังการ์ดหน่วยความจำได้สำเร็จแล้ว

รูป: รายการไฟล์ที่ได้มีการเพิ่มไฟล์ลงในไดรฟ์ boot ในการ์ด microSD

 

ตัวอย่างเนื้อหาภายในไฟล์ที่จะเพิ่มในไดรฟ์ boot

1) ตัวอย่างข้อความที่มีเพียงหนึ่งบรรทัดในไฟล์ userinfo สำหรับบัญชีผู้ใช้ pi และตั้งค่ารหัสผ่านเป็น raspberry

pi:$6$hngYxN8Q45.UyhCI$tUzLqE5JIa6cXU47.../41fM/1

ข้อความในบรรทัดข้างบน (ซึ่งมีการตัดและดัดแปลงบ้างส่วนให้สั้นลง) แบ่งออกเป็นส่วนต่าง ๆ โดยใช้เครื่องหมาย $ เป็นตัวแบ่ง โดยมีส่วนแรกเป็นชื่อบัญชีผู้ใช้ pi ส่วนที่สองเป็นข้อความสำหรับ Salt เพื่อใช้เป็นค่าในการเข้ารหัส และส่วนที่สามคือ ข้อความที่ถูกเข้ารหัสด้วยวิธี SHA512 โดยคำนวณจากค่า Salt และรหัสผ่านของผู้ใช้ และข้อความนี้จะถูกนำไปใส่ไว้ในไฟล์ /etc/shadow เมื่อมีการบูทระบบและเข้าใช้งานเป็นครั้งแรก

 

2) ตัวอย่างการใช้คำสั่ง openssl เพื่อคำนวณค่า Secure Hash Value สำหรับรหัสผ่าน (ในกรณีตัวอย่างนี้คือ raspberry คือ plaintext password) ด้วยวิธี -6 ซึ่งหมายถึง SHA512 และให้ข้อความเป็นเอาต์พุต

# create an encrypted password from a plaintext password
$ echo 'raspberry' | openssl passwd -6 -stdin

 

3) ตัวอย่างข้อความ (อยู่ในหนึ่งบรรทัดเดียวกัน) ในไฟล์ /boot/cmdlines.txt

console=serial0,115200 console=tty1 root=PARTUUID=xxxxxxxx-xx 
rootfstype=ext4 fsck.repair=yes rootwait quiet splash 
plymouth.ignore-serial-consoles

 

ตัวอย่างข้อความในไฟล์ wpa_supplicant สำหรับการเชื่อมต่อกับอุปกรณ์ Wi-Fi Access Point ตามที่ระบุไว้โดยชื่อ SSID โดยอัตโนมัติ และข้อความจากไฟล์นี้จะถูกนำไปใส่ไว้ในไฟล์ /etc/wpa_supplicant/wpa_supplicant.conf ของระบบไฟล์สำหรับ Raspberry Pi OS เมื่อบูทระบบครั้งแรก

country=TH
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
    ssid="YOUR_WIFI_SSID"
    psk="YOUR_WIFI_PASSWORD"
    key_mgmt=WPA-PSK
}

 

ถ้าต้องการเปิดใช้งาน Serial Console ตามที่ระบุไว้ในเอกสาร "The config.txt file" ให้แก้ไขไฟล์ /boot/config.txt โดยเพิ่มข้อความ enable_uart=1 ต่อท้ายอีกหนึ่งบรรทัด และในไฟล์ /boot/cmdline.txt ให้เพิ่มข้อความ console=serial0,115200 เป็นข้อความเริ่มต้นของบรรทัด

  • หากเชื่อมต่อกับบอร์ด RPi ผ่านระบบเครือข่ายไม่ได้ ก็สามารถใช้การเชื่อมต่อด้วยวิธีนี้แทนได้ (ไม่จำเป็นต้องนำจอแสดงผลและคีย์บอร์ดมาต่อเพิ่ม)
  • แต่จะต้องมีอุปกรณ์ USB-to-Serial Adapter เชื่อมต่อจากคอมพิวเตอร์ของผู้ใช้ไปยังบอร์ด RPi เพื่อทำคำสั่งต่าง ๆ ผ่านทาง Serial Console (Baudrate: 115200)
  • ขา GPIO-14 (UART0_TXD) และ GPIO-15 (UART0_RXD) ของคอนเนกเตอร์แบบ 40-pin บนบอร์ด RPi สามารถใช้เป็นขาสัญญาณ TXD/RXD เพื่อเชื่อมต่อกับอุปกรณ์ USB-to-Serial Adapter

รูป: การตั้งค่า Configuration ในไฟล์ /boot/config.txt

รูป: ตำแหน่งของขา GPIO ของคอนเนกเตอร์แบบ 40-pin

รูป: ตัวอย่างการเชื่อมต่อโมดูล USB-to-Serial Adapter (CP2104 chip) กับบอร์ด RPi

ขาของ RPi ที่ใช้ในการเชื่อมต่อได้ TX, RX, GND ซึ่งตรงกับขาหมายเลข 8,10,39 ของ 40-Pin Header ตามลำดับ โดยนำไปต่อกับขา RX, TX, GND ของโมดูล USB-to-Serial

 


การบูทระบบและเข้าใช้งานด้วย SSH#

ขั้นตอนถัดไป ให้นำการ์ด microSD ไปเสียบใช้งานกับบอร์ด RPi 4B เพื่อบูทระบบ แล้วใช้ซอฟต์แวร์ เช่น Angry IP Scanner ตรวจสอบอุปกรณ์ที่อยูในระบบเครือข่ายเดียวกันกับเครื่องคอมพิวเตอร์ของผู้ใช้ในขณะนั้น

ถ้าตรวจพบหมายเลข IP Address ของบอร์ด RPi ก็สามารถเชื่อมต่อไปยังบอร์ดด้วยซอฟต์แวร์ที่ทำหน้าที่เป็น SSH Client และเข้าใช้งานบัญชีผู้ใช้ pi และรหัสผ่านตามที่ได้สร้างเอาไว้

รูป: ตัวอย่างผลการสแกนหาแอดเดรส (IPv4 address) ของบอร์ด RPi

รูป: ตัวอย่างการเข้าใช้งานด้วย SSH client และทำคำสั่ง ping (ไปยังคอมพิวเตอร์ที่ทำหน้าที่เป็น Public DNS Server) เพื่อทดสอบการเชื่อมต่อกับอินเทอร์เน็ตจากบอร์ด RPi

ตัวอย่างการคำสั่งแบบ Command Line ผ่านทาง SSH Console / Bash Shell ในบรรทัดที่เริ่มต้นด้วย # เป็นบรรทัดสำหรับ Line Comment แต่ถ้าเริ่มต้นด้วยสัญลักษณ์ $ หมายถึง การคำสั่ง เช่น uname เช่น คำสั่งตรวจสอบและแสดงเวอร์ชันของ Linux Kernel และชื่อสถาปัตยกรรมของซีพียู

# get the kernel name, kernel version, kernel release date
$ uname -s -r -v
Linux 5.15.32-v8+ #1538 SMP PREEMPT Thu Mar 31 19:40:39 BST 2022

# get the machine name: aarch64 = 64-bit ARM Cortex-A series CPU
$ uname -m
aarch64

รูป: ตัวอย่างการทำคำสั่ง uname -a

 


การตั้งค่าใช้งานสำหรับ RPi ด้วยคำสั่ง raspi-config#

Raspberry Pi OS มีคำสั่ง raspi-config สำหรับการตั้งค่าใช้งาน โดยมีการแบ่งออกเป็นเมนูคำสั่งต่าง ๆ เมื่อพิมพ์คำสั่ง sudo raspi-config โดยใช้สิทธิ์เป็น root (superuser) ก็จะปรากฏหน้าต่าง โดยใช้ปุ่มคีย์ Tab หรือลูกศร Arrow เลื่อนไปยังรายการเมนู แล้วกดปุ่ม Enter สำหรับการเลือก หรือจะย้อนกลับไป ก็ให้ใช้ปุ่มข้อความ Back หรือจะออกจากโปรแกรมนี้ ก็กดปุ่ม ESC

รูป: การใช้งานเมนูคำสั่งต่าง ๆ ของ raspi-config

หากต้องการใช้งาน RealVNC Server (พอร์ต 5900) เพื่อให้สามารถเข้าใช้งาน RPi แบบ Remote Desktop ก็ให้ไปที่เมนู Interface Options > VNC แล้วตั้งค่าเพื่อเปิดใช้งาน

รูป: เมนูสำหรับเปิดใช้งาน VNC

สำหรับ VNC Client ให้ดาวน์โหลดซอฟต์แวร์ เช่น RealVNC Viewer มาติดตั้งและใช้งาน ในระบบ Windows

รูป: เมื่อเข้าใช้งาน Raspberry - Remote Desktop โดยใช้ RealVNC Viewer (for Windows)


การแชร์การเชื่อมต่ออินเทอร์เน็ตจากเครื่องที่ใช้ Windows#

ในกรณีที่คอมพิวเตอร์ของผู้ใช้เป็น Windows 10 หรือ 11 และเชื่อมต่อผ่านเครือข่าย Wi-Fi ไปยังอินเทอร์เน็ตได้ในขณะใช้งาน และหากว่าต้องการให้บอร์ด Raspberry Pi เชื่อมต่อกับอินเทอร์เน็ตได้ด้วย โดยเลือกวิธีใช้สาย LAN ต่อเข้าที่พอร์ต RJ45 และไม่ได้เชื่อมต่อด้วย Wi-Fi ก็สามารถตั้งค่าให้เครื่อง Windows แชร์การใช้งานอินเทอร์เน็ตผ่านทาง Wi-Fi

ในกรณีนี้ต้องใช้สาย Ethernet / LAB cable เชื่อมต่อที่พอร์ต RJ45 ระหว่างบอร์ด RPi และคอมพิวเตอร์ของผู้ใช้ จากนั้นให้ตั้งค่าใน Control Panel ของ Windows ดังนี้

รูป: เปิด Control Panel > Network and Sharing Center แล้วคลิกเลือกเครือข่าย Wi-Fi ที่กำลังใช้งานอยู่ เพื่อตั้งค่า "Wi-Fi Properties"

รูป: ตั้งค่าเพื่อการแชร์ Wi-Fi ที่เชื่อมต่อกับอินเทอร์เน็ต ให้แก่อุปกรณ์อื่นที่ต่อเข้ามาทาง Ethernet ของคอมพิวเตอร์ผู้ใช้ (ในกรณีนี้คือ บอร์ด RPi)


กล่าวสรุป#

บทความนี้แนะนำการใช้งานบอร์ด Raspberry Pi 4 Model B ร่วมกับ Raspberry Pi OS (64-bit) และเข้าใช้งานแบบ Headless ผ่านระบบเครือข่ายและ Secure Shell (SSH) หรือเข้าใช้งานแบบ Remote Desktop ด้วย RealVNC Viewer

 


This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.

Created: 2022-05-25 | Last Updated: 2023-11-30