做网站下载别人的图算不算侵权,怎么给公司做个网站,男女做暖暖不要钱的试看网站,怎么制作长图网络启动#xff0c;是用 TFTP 在服务器下载内核、dtb 文件到目标机的内存中#xff0c;同时可以用 NFS 挂载网络根文件系统到目标机上#xff0c;实现目标机的无盘启动。
准备工作#xff1a;
Firefly-RK3399 板卡#xff1b;路由器、网线#xff1b;安装有 NFS 和 …网络启动是用 TFTP 在服务器下载内核、dtb 文件到目标机的内存中同时可以用 NFS 挂载网络根文件系统到目标机上实现目标机的无盘启动。
准备工作
Firefly-RK3399 板卡路由器、网线安装有 NFS 和 TFTP 的服务器一份制作好的根文件系统。
注示例中使用的是 Ubuntu 系统的 PC 机作为服务器通过路由器和网线实现与设备的连接。 1 服务器部署
1、在服务器上部署 TFTP 服务
参考我博客这篇文章Linux工具篇 | Ubuntu搭建TFTP服务器
假设 TFTP 目录是 /tftpboot 。
2、在服务器上部署 NFS 服务
参考我博客这篇文章Linux工具篇 | Ubuntu搭建NFS服务器
然后将制作好的根文件系统复制到网络文件系统目录中假设网络文件系统目录是 /nfs/rootfs 。 2 内核的配置
内核网址FireflyTeam/kernel: BSP kernel source (github.com)当前内核 git-commit3710f06d1cc4e0a35d686d0806c42f0409084cdd
如果要做到挂载网络根文件系统需要在内核中做相关配置并在 dts 中修改相关挂载根文件系统的配置。
首先进行内核配置在内核目录中执行 make menuconfig选择相关配置
[*] Networking support ---Networking options ---[*] IP: kernel level autoconfiguration[*] IP: DHCP support[*] IP: BOOTP support[*] IP: RARP supportFile systems ---[*] Network File Systems ---[*] Root file system on NFS注意配置完成后要覆盖原来的config文件否则编译的时候还是使用原来的config文件。
修改 rk3399-linux.dtsi 配置在 dts 文件中修改 chosen 节点下的 bootargs 参数选择使用 NFS 挂载远程根文件系统内容如下。
源内容
chosen {bootargs earlyconuart8250,mmio32,0xff1a0000 swiotlb1 consolettyFIQ0 ro rootPARTLABELrootfs rootfstypeext4 rootwait overlayrootdevice:devPARTLABELuserdata,fstypeext4,mkfs1 coherent_pool1m systemd.gpt_auto0 cgroup_enablememory swapaccount1;};修改后
chosen {bootargs earlyconuart8250,mmio32,0xff1a0000 swiotlb1 consolettyFIQ0 rw root/dev/nfs rootfstypeext4 rootwait overlayrootdevice:devPARTLABELuserdata,fstypeext4,mkfs1 coherent_pool1m systemd.gpt_auto0 cgroup_enablememory swapaccount1;};编译内核
make ARCHarm64 rk3399-firefly.img -j12编译完成后将编译好的内核文件 boot.img 和 rk3399-firefly.dtb 文件复制到 /tftpboot 目录中
cp boot.img /tftpboot
cp arch/arm64/boot/dts/rockchip/rk3399-firefly.dtb /tftpboot详细说明可以参考内核目录中的 kernel/Documentation/filesystems/nfs/nfsroot.txt 3 U-Boot设置
请先确保目标机网线已插入接入到服务器的局域网内。
目标机启动进入 U-Boot 命令行模式设置以下参数
#设置目标机 IP 地址setenv ipaddr 192.168.31.101
#设置 serverip 为服务器 IP 地址setenv serverip 192.168.31.106 #设置从 TFTP 下载内核和 dtb 文件到相应地址用户请根据自己实际的目标机修改相应地址setenv bootcmd tftpboot 0x0027f800 boot.img \; tftpboot 0x08300000 rk3399-firefly.dtb \; bootm 0x0027f800 - 0x08300000#设置挂载网络根文件系统IP 参数依次为目标机 IP:服务器 IP:网关:网络掩码:设备名:off可以更简单的设置 ipdhcp通过 DHXP 自动分配 IPsetenv bootargs root/dev/nfs rw nfsroot192.168.31.106:/nfs/rootfs,v3 ip192.168.31.101:192.168.31.106:192.168.31.1:255.255.255.0::eth0:off#启动目标机boot
ethernetfe300000 Waiting for PHY auto negotiation to complete. done
Speed: 100, full duplex
Using ethernetfe300000 device
TFTP from server 192.168.31.106; our IP address is 192.168.31.101
Filename boot.img.
Load address: 0x27f800
Loading: #######################################################################################################################################################################################################################################################################################################################################################################################475.6 KiB/s
done
Bytes transferred 20072448 (1324800 hex)
Speed: 100, full duplex
Using ethernetfe300000 device
TFTP from server 192.168.31.106; our IP address is 192.168.31.101
Filename rk3399-firefly.dtb.
Load address: 0x8300000
Loading: #######645.5 KiB/s
done
Bytes transferred 97212 (17bbc hex)
## Booting Android Image at 0x0027f800 ...
Kernel load addr 0x00280000 size 19377 KiB
## Flattened Device Tree blob at 08300000Booting using the fdt blob at 0x8300000XIP Kernel Image ... OKLoading Device Tree to 0000000073edc000, end 0000000073ef6bbb ... OK
Adding bank: 0x00200000 - 0x08400000 (size: 0x08200000)
Adding bank: 0x0a200000 - 0x80000000 (size: 0x75e00000)
Total: 912260.463 msStarting kernel ......在开机内核日志中可见
[ 12.146297] VFS: Mounted root (nfs filesystem) on device 0:16.说明已经挂载上了网络根文件系统。
注意事项
确保 TFTP 服务器、NFS 服务器可用;确保目标机先插入网线后在开机且和服务器在同一局域网内如果是直连目标机和服务器请使用交叉网线;内核配置中Root file system on NFS 依赖于 IP: kernel level autoconfiguration 选项请先选择 IP: kernel level autoconfiguration之后才可以找到 Root file system on NFS 选项;在 U-Boot 命令行中请确认 boot.img 烧录地址和 dtb 文件烧录地址。提示boot.img 的文件结构中开头有2k的头文件然后才是 kernel。所以在 TFTP 下载内核到目标机时要下载到对应 kernel 地址减去0x0800的地址上;在设置挂载远程根文件系统时nfsroot192.168.31.106:/nfs/rootfs,v3 中的 v3 代表 NFS 版本信息请添加上以避免出现挂载不成功的问题。