1.Linux内核从远程nfs启动(踩坑记录)

前言

本次实验的启动方式是:通过网络挂载rootfs,内核从sd卡加载,并没有通过网络下载
关于uboot的两点配置bootargs,bootcmd
bootargs:传递给内核使用的参数,对uboot来说只是一个环境变量
bootcmd:uboot启动命令,主要是加载内核,设备树,rootfs,然后用bootm启动内核

1.先将随便烧写个官方镜像到sd卡(也不能太随便,只要你要编译的内核要接近镜像的,否则后面替换内核可能导致uboot和内核版本不匹配,从而无法启动),由于我只需要使用内核所以只需要烧录到第一个分区截至,嗯,我这里用了一张128M的古董及sd卡,物尽其用了。先看一下镜像分区表
在这里插入图片描述
可以看到我这个镜像内核分区截至到地133119扇区(1扇区=512字节),拷贝到sd卡:

sudo dd if=s5p4418-kitkat-sd8g-20171017.img of=/dev/sdd bs=512 count=133119 conv=fsync

2.再回到uboot的参数配置,看一下bootcmd参数。

bloader=ext4load mmc 0:1
bootcmd=$bloader 0x48000000 $kernel;$bloader 0x49000000 root.img.gz;bootm 0x48000000

可以看到bootcmd使用ext4load mmc 0:1(=bloader) 加载了内核和根文件系统。由于内核都是从sd加载的,所以bootcmd我们不用改,至于bootcmd也加载了rootfs,这个不影响后续的启动。

3.配置bootargs,bootargs的配置只需要保留console,添加ip地址设置,nfsroot,init进程地址

bootargs=console=ttyAMA0,115200n8 nfsroot=192.168.0.109:/home/minicoco/disk1/Dev/nanopi/rootfs 
ip=192.168.0.99:192.168.0.109:192.168.0.1:255.255.255.0::eth0::off root=/dev/nfs rw init=/sbin/init

配置内核支持NFS启动

make menuconfig
  • Networking support

    • –>Networking options
    • –>TCP/IP networking
    • –>IP:kernel level autoconfiguration
  • File systems

    • –>Network File System
    • –>NFS client support
    • –>Root file system on NFS

重点检查ramdisk是否开启,这个开启了很有可能挂不上NFS

  • General setup
    • –>Initial RAM filesystem and RAM disk(initramfs/initrd) support//去掉

重新编译内核

make -j16 				 #得到zImage
make uImage LOADADDR=0x48000000 #从uboot可以看出loadaddr地址为0x48000000

获取uImage,插上sd卡替换

搭建NFS服务器

1.安装nfs服务

sudo apt install nfs-kernel-server

2.配置nfs

sudo nano /etc/exports
------------------------------
在/etc/exports结尾添加,no_root_squash参数很重要,不能少
/home/rootfs 192.168.0.0/24(rw,sync,no_subtree_check,no_root_squash)

3.测试nfs服务器
可以吧镜像中自带的root.img.gz拷贝出来解压,先当做rootfs测试下
最后我测试失败了,卡在了网络驱动加载的地方,初步怀疑是nfs没有挂载成功
在这里插入图片描述
经过网上各种搜索分析,最后发现这里有个非常大的坑,nfs服务器不能用最新的1.1.3的版本,需要降级。我是用的是Lubuntu,什么版本已经不记得了,看了下服务器仓库中的版本,只有1.1.3。尝试下载deb包自己装,一堆依赖无法解决,最后被迫换到ubuntu16系统。血淋淋的教训,以后还是用老一点版本的系统比较好。
在这里插入图片描述
最后这个样子就算挂载成功了

猜你喜欢

转载自blog.csdn.net/qq_16054639/article/details/106503319