近日閒來無事研究樹莓派4b,發現樹莓派的內建管理工具raspi-config
中新增了boot order
選項欄,開啟之後裡面赫然寫著usb boot
和network boot
兩個選項。
usb boot
不必多言,選擇之後拿一塊u盤寫入映象插入usb介面後即可自動執行,不需要sd卡,但是network boot
勾起了博主的興趣,經過三天的研究,終於成功實現網路啟動。
樹莓派4b一塊,網路啟動伺服器一台(這裡博主使用了一塊orangepi zero作為網路啟動伺服器),讀卡器乙個,網線一根。
配置系統
從映象裡安裝新系統,並且將系統設定為開機自動進入cli介面。
sudo raspi-config
找到3.boot options -> b1 desktop / cli
,選擇b2 console autologin
設定bootloader網路啟動
sudo raspi-config
找到3.boot options -> b4 boot order
,選擇b2 network boot
,應用後重啟.這個時候,客戶端已經準備完成,可以把tf卡拔出,將樹莓派先放到一邊。
由於博主用的是一塊香橙派zero作為伺服器使用,所以安裝命令不能照抄,請按照你自己的系統來進行操作。以下命令均在root使用者下執行。
安裝dhcp伺服器,nfs伺服器
apt update
aptinstall dnsmasq nfs-kernel-server
建立nfs目錄mkdir -p /nfs/raspberrypi
mkdir /raspiboot
chmod
777 /raspiboot
複製樹莓派系統
將讀卡器插入伺服器中
mount /dev/sda1 /mnt
cp /mnt/* /raspiboot
umount /mnt
mount /dev/sda2 /mnt
cp /mnt/* /nfs/raspberrypi
umount /mnt
由於tf卡的i/o效能十分低下,複製需要很長時間。博主這裡採用的方法是,將系統燒錄進一塊u盤,再直接將u盤掛載在系統內:
mount /dev/sda1 /raspiboot
mount /dev/sda2 /nfs/raspberrypi
能夠節省很多時間。
關閉dhcp客戶端等一系列服務
博主的伺服器上採用的系統是armbian,執行systemd-resolved
來進行網域名稱解析服務,由於該服務會占用dns埠,所以需要關閉該服務:
systemctl stop systemd-resolved
systemctl disable systemd-resolved
關閉networkmanager以防止出現意外錯誤:
systemctl stop networkmanager
systemctl disable networkmanager
為伺服器配置靜態ip
vim /etc/systemd/network/10-eth0.netdev
寫入以下內容
[match]
name=eth0
[network]
dhcp=no
vim /etc/systemd/network/11-eth0.network
寫入以下內容
[match]
name=eth0
[network]
address=192.168.2.100/24
dns=192.168.2.1
gateway=192.168.2.1
配置dnsmasq
vim /etc/dnsmasq.conf
inte***ce=eth0
no-hosts
dhcp-range=192.168.2.101,192.168.2.200,12h
log-dhcp
enable-tftp
tftp-root=/raspiboot
pxe-service=0,"raspberry pi boot"
配置nfs
vim /etc/exports
/nfs/raspberrypi *(rw,sync,no_subtree_check,no_root_squash)
/raspiboot *(rw,sync,no_subtree_check,no_root_squash)
修改樹莓派核心啟動命令列
vim /raspiboot/cmdline.txt
console=serial0,115200 console=tty1 root=/dev/nfs
nfsroot=192.168.2.100:/nfs/raspiberrypi,vers=3 rw ip=dhcp rootwait elevator=deadline
修改樹莓派檔案系統掛載
vim /nfs/raspberrypi/etc/fstab
將內容替換為:
proc /proc proc defaults 0 0
192.168.2.100:/raspiboot /boot nfs defaults,vers=3 0 0
啟動服務systemctl enable dnsmasq.service
systemctl restart dnsmasq.service
systemctl enable systemd-networkd
systemctl restart systemd-networkd
systemctl enable rpcbind
systemctl restart rpcbind
systemctl enable nfs-kernel-server
systemctl restart nfs-kernel-server
將樹莓派用網線連線到伺服器上,開啟電源,觀察螢幕上是否啟動成功。
樹莓派4b入門
sudo apt get install scim pinyin rebootdeb buster main non free contrib deb src buster main non free contrib deb buster main ui 配置vncverver服務允許遠端通過圖形化...
樹莓派4B配置U盤啟動
樹莓派4b的啟動程式比較特殊,儲存在外部eeprom晶元中。早期版本的eeprom啟動韌體不支援系統直接從usb裝置 u盤 行動硬碟 中啟動。因此,使用usb裝置啟動前,需要檢測當前eeprom韌體版本是否符合要求。方法1 在raspbian os終端中輸入命令 sudo rpi eeprom up...
樹莓派4b遠端桌面教程
1.更換清華源 sudo nano etc apt sources.list deb buster main non free contrib deb src buster main non free contrib sudo nano etc apt sources.list.d raspi.li...