通过NFS挂载根文件系统

实验八通过NFS挂载根文件系统

【实验目的】

       掌握bootcmdbootargs环境变量的设置和NFS挂载根文件系统的方法。

       说明:在实验中命令行提示符为“$”表示在主机上运行,“#”表示在目标板上运行。

【实验环境】

1. Ubuntu 12.04  32位发行版

2. FS6818平台

【实验步骤】

1.  将“案例源码\第一天\镜像文件\rootfs.tar.xz”拷贝至Ubuntu主机的/source目录中。

2.  如果/source目录下有rootfs目录,使用下面的命令删除。

$ rm -rf /source/rootfs

3.  进入到/source目录,解压根文件系统的压缩文件。

$ cd /source

$ tar -xvf rootfs.tar.xz

4.  /source/rootfs目录设置为NFS共享目录。

    1).$sudo vi /etc/exports

        添加:/source/rootfs  *(rw,sync,no_root_squash,no_subtree_check)

        含义:

                /source:共享目录(存放开发板访问的文件系统)

                /rootfs : 文件系统名字(linux内核访问的第一个文件系统)

                rw : 读写权限(当用户进入到文件系统后,对该文件系统拥有rw权限)

                sync : 把文件同步到内存和硬盘

                no_root_squash : 如果以root用户进入到文件系统后,对文件系统进行的操作不需要权限

                no_subtree_check : 如果文件系统的子目录为共享目录,则访问时不会检测父目录的权限

通过NFS挂载根文件系统

    2).启动服务器

            $ sudo /etc/init.d/nfs-kernel-server restart

5.  开发板上电后,运行U-Boot,设置bootcmd环境变量和bootargs环境变量。

FS6818# setenv serverip192.168.0.10

FS6818# setenv ipaddr192.168.0.100

FS6818# setenv bootcmd mmc read 0x48000000 0x800 0x3000\;bootm 0x48000000

FS6818# setenv bootargs root=/dev/nfs nfsroot=192.168.7.149:/source/rootfs rw console=ttySAC2,115200init=/linuxrc ip=192.168.7.150

FS6818 # saveenv

6.  在串口终端中使用下面的命令来运行系统并挂载根文件系统。

FS6818 # boot

7.  如果重启开发板,不需要任何操作则可以自动启动Linux系统。


实验中遇到问题:加载到    “[    4.229000]   #1: SPDIF-Transciever”停止

原因:没插网线


[    4.223000] ALSA device list:
[    4.226000]   #0: I2S-WM8960
[    4.229000]   #1: SPDIF-Transciever
[  140.316000] INFO: task swapper/0:1 blocked for more than 10 seconds.
[  140.317000] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
[  140.324000] swapper/0       D c06d7304     0     1      0 0x00000000
[  190.332000] INFO: task swapper/0:1 blocked for more than 10 seconds.
[  190.333000] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
[  190.340000] swapper/0       D c06d7304     0     1      0 0x00000000
[  200.347000] INFO: task swapper/0:1 blocked for more than 10 seconds.
[  200.347000] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
[  200.355000] swapper/0       D c06d7304     0     1      0 0x00000000