一、根文件系统制作
1、源码下载
我们选择的版本是busybox-1.17.3.tar.bz2下载路径为:
http://busybox.net/downloads/
2、解压源码
$ tar xvf busybox-1.17.3.tar.bz2
3、进入源码目录,修改Makefile,选择自己的交叉工具
$ cd busybox-1.17.3
busybox-1.17.3$ vim Makefile +164
4、 配置源码
$ make menuconfig
Busybox Settings --->
[ ] Build with Large File Support (for accessing files > 2 GB)
() Cross Compiler prefix (NEW)
() Additional CFLAGS (NEW)
5、编译
make
6、安装
make install
busybox默认安装路径为源码目录下的_install
7、进入安装目录下
$ cd _install
$ ls
8、创建其他需要的目录
$ mkdir dev etc mnt proc var tmp sys root lib home usr
9、拷贝_install到自己合适的路径下,重命名
cp -raf_install /home/linux myrootfs
10、添加动态库
cp /usr/local/toolchain-4.4.6/arm-cortex_a8-linux-gnueabi/lib/* lib/
注:根据自己的交叉工具链选择相应的路径
删除库文件中的符号表,也叫瘦身$ rm -rflib/*.a
$ chmod a+w lib/*
$ arm-none-linux-gnueabi-strip lib/*
11、添加系统启动文件
在etc/下创建文件inittab,文件内容如下:
::sysinit:/etc/init.d/rcS
::askfirst:/bin/ash
::ctrlaltdel:/sbin/reboot
::shutdown:/sbin/swapoff -a
::shutdown:/bin/umount -a -r
::restart:/sbin/init
在etc下创建文件fstab,文件内容如下:
proc /proc proc defaults 0 0
tmpfs /tmp tmpfs defaults 0 0
sysfs /sys sysfs defaults 0 0
tmpfs /dev tmpfs defaults 0 0
(以下该步骤可不做)
这里我们挂载的文件系统有三个proc、sysfs和tmpfs。在内核中proc和sysfs默认都支持,而tmpfs是没有支持的,我们需要添加tmpfs的支持
修改内核配置:
File systems --->
Pseudofilesystems --->
[*] /proc file systemsupport (NEW)[*]sysfs file system support (NEW)
[*]Virtual memory file system support (former shm fs)
[*] Tmpfs POSIX Access Control Lists
重新编译内核
在etc下创建init.d目录,并在init.d下创建rcS文件,rcS文件内容为:
#!/bin/sh
echo "------------*_*-----my first rootfsstart--------"
/bin/mount -a
/sbin/mdev -s
echo "------------^_^-----my first rootfsend----------"
为rcS添加可执行权限:
$ chmod +x init.d/rcS
12,在etc下添加profile文件,文件内容为:
#! /bin/shexport HOSTNAME=Linux
export USER=root
export HOME=root
export PS1="[$USER@$HOSTNAME \W]\# "
PATH=/bin:/sbin:/usr/bin:/usr/sbin
LD_LIBRARY_PAHT=/bin:/usr/lib:$LD_LIBRARY_PAHT
export PATH LD_LIBRARY_PAHT
13、设备文件创建
根文件系统中有一个设备节点是必须的,在dev下创建console节点
$ sudo mknod dev/console c 5 1
以上的步骤就完成了linux根目录所需要的所有文件,可以直接使用
NFS测试
1、将做好的根目录复制成/opt/myrootfs(如果你已经有这个目录,就要注意啦)
$ sudo cp -raf myrootfs /opt/
2, 在ubuntu中将/opt/myrootfs设置成nfs文件系统
修改ubuntu的/etc/exports: 将/opt/myrootfs设置成nfs文件系统格式
/opt/myrootfs *(subtree_check,rw,no_root_squash,async)
sudo service nfs-kernel-server restart
测试
1》在用户主目录中创建一个挂载点: mkdir ~/mnt
2》挂载文件系统:/opt/myrootfs
sudo mount192.168.x.x:/opt/myrootfs mnt (注:自己Linux的ip地址)
3》查看mnt下是否可以看到rootfs中的内容,如果可以看到,nfsOK