创建最小根文件系统:
(1)/dev/console /dev/null
(2)/init=>busybox (/sbin/init 是到busybox的链接)
(3)/etc/inittab 配置文件
(4)配置文件指定的应用程序
(5)C库
编译busybox(命令工具集ls、cp……):
make menuconfig
配置完后 make
mkdir /work/nfs_root/second_fs
make CONFIG_PREFIX=/work/nfs_root/second_fs install
/work/nfs_root/second_fs文件夹里将生成:bin sbin linuxrc usr 目录,bin linuxrc 都是指向busybox的链接
(直接make install 会安装到宿主机上,把原来的覆盖掉)
创建设备文件 :
先查看pc(sever)机上这两个设备文件 ls /dev/console /dev/null -l
mkdir dev
cd dev/
sudo mknod console c(字符设备) 5(主设备号) 1(次设备号)
sudo mknod null c(字符设备) 1(主设备号) 3(次设备号)
设置配置项文件etc/inittab:
创建etc/inittab
mkdir etc
vi etc/inittab
添加 :console::askfirst:-/bin/sh
inittab格式:
<id>:<runlevels>:<action>:<process>
<id> => /dev/id(加一个/dev前缀),用作终端:stdin,stdout,stderr
<runlevels> 可以完全忽略
<action> 指示何时执行
<process> 应用程序或脚本
创建C库:
mkdir lib
cd /work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib
cp *.so* /work/nfs_root/second_fs/lib -d(如果原来是链接文件,则还保持链接文件)
制作映像文件:
cd /work/system
tar xjf yaffs_source_util_larger_small_page_nand.tar.bz2
解压后生成文件Development_util_ok
cd Development_util_ok
cd yaffs2
cd utils
执行make 生成制作映像文件工具
执行ls -l 可查看mkyaffs2image
把mkyaffs2image 拷到系统目录/usr/local/bin sudo cp mkyaffs2image /usr/local/bin
增加mkyaffs2image的可执行权限sudo chmod +x /usr/local/bin/mkyaffs2image
cd /work/nfs_root
制作文件系统映像:mkyaffs2image filesystem filesystem.yaffs2
把映像文件filesystem.yaffs2下载到开发板
完善:(当运行根文件系统时,执行ps 显示:ps:can't open 'proc':no such file or directory)
cd /work/nfs_root
mkdir proc
内核提供一个虚拟文件系统/proc
手工挂载:mount -t proc none /proc 即可运行ps 命令
不想手工挂载,则需要增加一个配置项::sysinit:/etc/init.d/rcS(配置项文件etc/inittab)
创建脚本程序:(etc/init.d/rcS是一个脚本程序,可以在里面添加想自动执行的命令)
mkdir etc/init.d
vi etc/init.d/rcS 添加挂载命令mount -t proc none /proc
然后增加可执行属性:chmod +x etc/init.d/rcS
另一种方法:
etc/init.d/rcS里添加mount -a
使用mount -a (也就是读/etc/fstab 配置文件,创建该文件,根据里面的内容来挂载跟文件系统)
device mount-point type operation dump fask oder
proc /proc proc defaults 0 0
sysfs /sys sysfs defaults 0 0
tmpfs /dev tmpfs defaults 0 0
重新制作文件系统映像:mkyaffs2image filesystem filesystem.yaffs2
udev机制=> 自动创建/dev/目录下的设备节点
mdev 是udev的简化版本
使用mdev的命令如下:(在etc/init.d/rcS里加入这几行)
mount -a
mkdir /dev/pts
mount -t devpts devpts /dev/pts
echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s(将现有的设备驱动都创建出来)
NFS
挂接NFS:(1)服务器“允许”那个目录可被挂接,nfs服务,它的配置文件/etc/exports,在这个配置文件里面定义这个目录就可以了
(2)单板去挂接
sudo vi /etc/exports 添加
/work/nfs_root/filesystem *(rw,sync,no_root_squash)
然后重启nfs服务:sudo /etc/init.d/nfs-kernel-server restart
试验挂载,sudo mount -t nfs serverip:/work/nfs_root/first_fs(文件系统所在目录) /mnt
单板挂载:
mkdir /mnt
sudo mount -t nfs -o nolock serverip:/work/nfs_root/first_fs /mnt
直接从NFS启动:set bootargs root=dev/nfs nfsroot=serverip:/...(文件系统所在目录)/ init=/linuxrc console=ttySAC0