建立根文件系统

步骤:

一、建立/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所使用的编译器为:

建立根文件系统_第1张图片

使用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即可


你可能感兴趣的:(建立根文件系统)