步骤:
一、建立/dev/console /dev/null节点
方法:
首先查看pc机上这两个节点的主设备号和次设备号。
book@book-desktop:/work/nfs_root/first_fs/dev$ ls -l /dev/null /dev/console crw------- 1 root root 5, 1 2013-03-20 19:54 /dev/console crw-rw-rw- 1 root root 1, 3 2013-03-20 19:48 /dev/null
前面是主设备号,后面的是次设备号
book@book-desktop:/work/nfs_root/first_fs/dev$ sudo mknod console c 5 1 [sudo] password for book: book@book-desktop:/work/nfs_root/first_fs/dev$ sudo mknod null c 1 3
这样/dev/console /dev/null节点就创建成功了。
二、建立inittab配置文件:
console::askfirst:-/bin/sh 使用命令~/bin/sh 将输入输出都定位到console
shanl@shanl-E430:~/Work/Embeded/nfsroot/etc$ vi inittab内容为:
console::askfirst:-/bin/sh
三、.c库的安装:(可以参考韦东山完全开放手册)
将编译器中的lib库拷贝到lib目录:
cp 编译器目录/arm-linux/lib/*.so* lib -d (-d的作用是链接文件就以链接文件的方式拷贝过来)
6410所使用的编译器为:
使用mkyaffs2image工具制作
usage: mkyaffs2image dir image_file [convert]
例子:
mkyaffs2image first_fs first_fs_shanl.yaffs2
使用下面烧写到flash上的bootargs:
setenv bootargs root=/dev/mtdblock3 init=/linuxrc console=ttySAC0
到这里最小的文件系统就已经制作完成
下面完善一下根文件系统:
1.proc:内核提供的虚拟文件系统
执行ps会发现出现下面的错误:
# ps PID Uid VSZ Stat Command ps: can't open '/proc': No such file or directory
解决:
mkdir proc
mount -t proc none /proc
这种方法是手动设置的,如果重启命令又不生效了。
下面是解决如何在系统启动的时候自动加载/proc文件系统
可以在/etc/inittab中加入
::sysinit:/etc/init.d/rcS脚本 #加入这个脚本的意思是在系统启动的时候去读rcS脚本
然后再/etc/init.d/rcS脚本中添加上面的命令mount -t proc none /proc
chmod +x etc/init.d/rcS 改变一下rcS的可执行权限
这样重新烧写系统,启动的时候就会自动挂接proc文件系统了
也可以使用下面一种方法:
在/etc/init.d/rcS中加入:
mount -a #这个命令的意思去读/etc/fstab的内容:
fstab是有格式的:
# <file system> <mount point> <type> <options> <dump> <pass> proc /proc proc defaults 0 0
2.添加/dev下面的设备节点:
mkdir sys
使用udev机制:自动创建/dev下面的设备节点
busybox下面有udev的简化版本mdev ==》具体文档可以参考busybox下的mdev.txt
在/etc/fstab里面加入:
# <file system> <mount point> <type> <options> <dump> <pass> sysfs /sys sysfs defaults 0 0 tmpfs /dev tmpfs defaults 0 0
然后再rcS中加入:
mkdir /dev/pts mount -t devpts devpts /dev/pts echo /sbin/mdev > /proc/sys/kernel/hotplug mdev -s /*-s意思就是将内核默认的驱动加载进来*/
到这里文件系统就比较完善了。
NFS文件系统:
条件:
服务器允许那个目录可被挂接(nfs服务,/etc/exports中加入那个目录,加入后,重启nfs服务,sudo /etc/init.d/nfs-kernel-server restart
试验一下:sudo mount -t nfs 192.168.1.19:/work/nfs_root/first_fs /mnt)
方法:
单板去挂载(手动):
mkdir mnt
mount -t nfs 192.168.1.19:/work/nfs_root/first_fs /mnt
启动自动挂载:
在开发板中:ifconfig eth0 up 启动网卡
ifconfig设置ip地址
ping一下服务器地址,看看是否可以ping通
直接从NFS启动(设置bootargs):
setenv bootargs root=/dev/nfs rw nfsroot=192.168.1.19:/work/nfs_root/first_fs ip=192.168.1.24:192.168.1.19::255.255.255.0 console=ttySAC0,115200 init=/linuxrc mem=64M
在rmmod模块的时候可能会出现下面错误:
rmmod: chdir(2.6.33.5): No such file or directory
或
rmmod: chdir(lib/modules): No such file or directory
直接创建/liv/modules/2.6.33.5即可