u-boot下配置挂载NFS根文件系统

一、在linux系统主机下安装NFS服务器

       在ubuntu10.04下安装命令为:

       sudoapt-get  install nfs-kernel-server

二、配置nfs服务器

       在ubuntu下安装完ssh服务器后默认开机启动,其他linux发行版具体安装与启动在此不再说明。

       修改nfs服务器配置文件

       /etc/exports

在该文件最后添加一行:

       /home/liu/rootfs *(rw,sync,no_root_squash)

意义为通过nfs共享的目录为/home/liu/rootfs,其后的‘*’代表允许所有ip访问,也可以把‘*’换成‘192.168.0.*’等正则表达式,来限制访问的ip,括号里的两个参数意为可读可写,且无root权限限制,即若挂载该目录为根文件系统后可以具有root权限。

       执行exports –r使配置生效。

sudo mount –tnfs localhost:/home/liu/rootfs  /mnt

若成功则说明nfs设置成功。

三、确保内核支持nfs跟文件系统。

       makemenuconfig

       在选项File systems  --->Network File Systems  --->

下相关的nfs版本及nfs根文件系统的相关选项选上。

四、挂载nfs根文件系统。

方法一:先启动一个文件系统(无论是yaffs,ramdis等等),进入shell后

mount –t nfs192.168.0.22:/home/liu/rootfs  /mnt      -o nolock

chroot /mnt

即可进入nfs根文件系统。需要先配置好ip,可以把配置ip及以上两步操作写入启动脚本。

方法二:内核启动时直接挂载nfs根文件系统。

在u-boot下配置环境变量:

<1>setenv serverip192.168.0.22;setenv gatewayip 192.168.0.1;setenv netmask 255.255.255.0;setenv hostname ubuntu;

setenv rootpath  /home/liu/rootfs/p2020_rootfs;

<2>setenv bootargs 'root=/dev/nfs rw nfsroot=$serverip:${rootpath} ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}:${netdev}:off  console=${consoledev},${baudrate} ${otherbootargs}'

注意每一项参数是一行,没有换行符,不能直接复制粘贴。带有’$’符号的为变量,根据自身板卡的情况填写。

若调试内核,使用tftp下载时命令如下:

<3>tftp ${loadaddr} ${bootfile};tftp${fdtaddr} ${fdtfile};bootm ${loadaddr} - ${fdtaddr}

若直接使用NOR上烧写好的内核和dtb映像的话,命令如下:

<4>bootm ef080000 - ef040000

注:powerpc下uboot 启动linux的命令bootm 需要3个参数: 内核地址 、ramdisk地址、 dtb地址。

例如uboot使用ramdisk启动内核,最后一条命令为

bootm ${loadaddr} ${ramdiskaddr} ${fdtaddr}

而不使用ramdisk时,uboot最后一条命令为

bootm${loadaddr} - ${fdtaddr}

其中${loadaddr}是内核镜像物理地址,${ramdiskaddr}是ramdisk镜像物理地址,$fdtaddr是dtb文件的物理地址。这三个文件都在flash上。

你可能感兴趣的:(Linux系统开发)