红联Linux门户
Linux帮助

Linux根文件系统的制作实例

发布时间:2014-07-31 09:49:29来源:linux网站作者:xiongyaoqiongyao

花了我几个小时的时间,最后终于把那个Linux根文件系统制作好了。


(一):首先Linux根文件系统的制作需要的开发环境。

1:移植Linux内核版本:  linux-3.0.1  (只要能用就行)

2:交叉编译工具:arm-linux-gcc 4.3.2(任选)

3:文件系统制作工具:Busybox-1.13.3(任选)

4:etc.tar.gz


(二):交叉编译环境的搭建(这一步我在我的博客其他文章里面有 详细的搭建过程,很简单滴。)


(三):创建根文件系统的目录

1:在主目录下面新建一个文件夹rootfs

[root@localhost fs]# ls

[root@localhost fs]# mkdir rootfs

[root@localhost fs]# cd rootfs/

[root@localhost rootfs]# mkdir bin dev etc lib proc sbin sys usr mnt tmp var

[root@localhost rootfs]# mkdir usr/bin usr/lib usr/sbin lib/modules


2:创建设备文件

[root@localhost rootfs]#cd dev/

[root@localhost dev]# mknod -m 666 console c 5 1

[root@localhost dev]# mknod -m 666 null c 1 3

说明:mknod  -m 666 console c 5 1

console 为设备文件名,自己可以随便取,c代表是字符型设备(可选b,块设备)

5是主设备号  /dev/devices里面记录现有的设备

1是次设备号当你要给两个同样的设备上一个驱动的时候就要分了,从0开始,1就是第二个了 ,对于字符设备,次设备号就表示同类型设备的不同设备。666代表访问的权限


3:配置/etc/

这里有两种方法

1:可以把系统上面的/etc/下面一些比较重要的文件拷贝过来

2:也可以直接在网上下载一个etc.tar.gz

#tar  -zxvf  etc.tar.gz

将解压出来的文件etc下面的东西全部拷贝到上面新建的根目录下面/rootfs/etc/下面

etc/inittab

etc/profile

etc/fstab

etc/init.d/

etc/init.d/rcS


4:编译内核模块

首先进入内核目录下面(内核目录和根文件系统目录不是在同一个目录下面的)

# cd  linux-3.0.1

#make  modules  ARCH=arm  CROSS_COMPILE=arm-linux-

说明:在这一步出现一些问题,发现怎么编译也不行,后来由下载了一个内核,编译通过


5:安装内核模块

#make  modules_install  ARCH=arm  INSTALL_MOD_PATH=/home/xiongyao/rootfs

说明:将内核里面编译好的模块放在根文件系统目录下面


6:配置busybox

说明:关于busybox:(百度百科)

busybox是一个集成了一百多个最长用linux命令和工具的软件。BusyBox 包含了一些简单的工具,例如ls、 cat 和 echo等等,还包含了一些更大、更复杂的工具,例如 grep、find、mount 以及 telnet。有些人将 BusyBox 称为 Linux 工具里的瑞士军刀。简单的说BusyBox就好像是个大工具箱,它集成压缩了 Linux 的许多工具和命令,也包含了 Android 系统的自带的shell。

# tar -xvzf busybox-1.13.3.tar.gz

# cd  busybox-1.13.3

#make menuconfig

说明:这一步是要配置busybox的图形界面,使之生效,运行这个命令可能会出错,原因是因为你没有

安装那个图像界面的依赖库,在终端里面输入apt-get install libncurses5-dev  就ok了~

Busybox Settings-----> build Options----->

选中Build BusyBox as a static binary(no shared libs)

Busybox Settings-----> InstallationOptions ------------>

选中 “don't use /usr”    选中此项可以避免busybox被安装到宿主系统的/usr目录下,破坏宿主系统

Busybox Installation Prefix(/home/fs/myrootfs)  这里要输入busybox安装的绝对路径


7:编译安装busybox

#make  ARCH=arm  CROSS_COMPILE=arm-linux-

#make  install

到现在为止,根文件系统就完全做好了,你可以把这个根文件系统制作成ramdisk系统


8:、将根文件系统制作 成ramdisk

#genext2fs -b 8192 -d /home/fs/myrootfs/  ramdisk

说明:这一步出现问题,后来发现是这个分配的空间太小,于是将8192改为120400

#genext2fs  -b  /home/xiongyao/rootfs/  ramdisk

#gzip  -9  -f  ramdisk

这样就可以将ramdisk.gz下载到开发板上面去了


在制作的过程中可能会遇到各种各样的问题,遇到问题没事,我一般直接上百度,里面有各种解决方案,只要用心去理解,相信肯定能制作成功!