最小根文件系统制作
一、移植
所谓制作根文件系统,就是创建各种目录,并且在里面创建各种文件。对于创建一个最下根文件系统,只需要在/dev目录下创建必要的设备节点、在/etc目录下创建一些配置文件就可以了,如果使用动态链接库,那还要在/lib目录下包含库文件。支持库和glibc库,对.2.x之后的内涵支持良好。的源码可以从 下载,我下载的是-1.7.5.tar.bz2.
(1)解压
$tar -jxvf -1.7.5.tar.bz2
(2)配置
$make
--->
Build --->
[ ] Build as a (no libs) (是否编译成静态库,在这里我没选,使用动态库)
--->
[*] Tab (tab缩进功能)
[*]
[*] Fancy shell (这两项在创建/etc/文件时要用,这样可以命令行有提示符显示)
其它配置自己可以参考着修改,我就没动了。退出记得保存!
(3)编译和安装
3.1编译之前首先修改,使用交叉编译器
$vim
175 ARCH ?= arm
176 ?= arm-linux-gnu-
然后执行"make"命令编译
如果出现什么错误,你尽可上网搜索,一般都可以解决。我这里没什么问题。
3.2安装"make =/home/ stall"
=/home/为指定安装目录(前提你首先得在home目录创建目录,只要mkdir /home/)
如果你没有指定只执行:make 那么在默认的-1.7.5目下会生成目录,
$ls /home/
bin sbin usr
如果是make 那么-1.7.5/目录下会有一样的结果。
二、使用glibc库
在你安装交叉工具链时,已经生成了glibc库,可以直接使用它来构建根文件系统。
在上面我用的是编译动态库,所以要拷贝一些应用程序使用的库,否则你交叉编译应用程序要加上-表示静态链接
这样生成的文件非常大。
首先进入我/home/
$cd /home/
$mkdir lib
$cp //gcc-3.4.5-glibc-2.3.6/arm-linux-gnu/arm-linux-gnu/lib/*so* ./lib -a
注意:记得加 -a否则非常大,-a可以把软连接形式保存,不用直接拷贝
顺便可以给库瘦身,这样可以减小库的大小
$arm-linux-gnu-strip lib/* sbin/* bin/*
$du -h lib (可以看出减小了很多,不信你不用瘦身试试)
3.3Mlib
这样库就加好了!
三、构建etc目录
etc目录下的内容取决于要运行的程序,init进程根据/etc/文件来创建其它进程,比如调用脚本文件配置IP地址、
挂接其它文件系统,最后启动shell等。
在这里我们只要在etc目录下创建3个文件:etc/、etc/init.d/rcS、etc/fstab、etc/。
$mkdir etc
$vim etc/
(1)创建etc/文件
内容如下:
:::/etc/init.d/rcS
:::-/bin/sh
:::/sbin/init
:::/sbin/
::: -a -r
$cd etc
$mkdir init.d
$vim init.d/rcS
(2)创建etc/init.d/rcS文件
内容如下:
mount -a
mkdir /dev/pts
mount -t /dev/pts
echo /sbin/mdev > /proc/sys//
mdev -s
给rcS加上可执行权限
$sudo chmod +x rcS
$cd ../
$vim fstab
(3)创建etc/fstab文件
内容如下:
# mount-point type dump fsck order
proc /proc proc 0 0
sysfs /sys sysfs 0 0
tmpfs /temp tmpfs 0 0
tmpfs /dev tmpfs 0 0
$vim
(4)创建etc/文件 (前面配置提到,用于命令行提示符号)
内容如下:
#!/bin/sh
=caoyi
USER=root
HOME=root
PS1="[$USER@$ \W]\#"
PATH=/bin:/sbin:/usr/bin:/usr/sbin
=/lib:/usr/lib:$
PATH
四、创建其它目录
创建一些常用的目录,只要执行命令:
$cd /home/
$mkdir dev home temp proc sys
五、还要创建两个基本的设备文件
$cd /home//dev
$ mknod c 5 1
$ mknod null c 1 3
至此一个最小根文件系统已经制作成功,里面含有命令行提示符、mdev功能!那么你可以通过NFS挂载到你的开发板做其它实验。
如果你觉得有点小,那么你可以在这个基础上扩展。