树莓派4B 网络启动教程

前言

近日闲来无事研究树莓派4b,发现树莓派的内置管理工具raspi-config中添加了Boot Order选项栏,打开之后里面赫然写着USB BootNetwork Boot两个选项。
New Boot Menu

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
apt install 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

interface=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

验证

将树莓派用网线连接到服务器上,打开电源,观察屏幕上是否启动成功。
成功

全家福

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/CNflysky/article/details/107883459