Linux根文件系统的构建

 首先,介绍下列几个定义

根文件系统:系统启动所必需的文件,如内核映像文件、内核启动后运行的第一个程序(init)、给用户提供操作界面的shell程序、应用程序所依赖的库,这些必需、基本的文件合称为根文件系统。

挂接点或安装点(mount point):Linux以树状结构管理所有目录、文件,其他分区挂接在某个目录上,这个目录就称为挂接点或安装点。

文件系统类型:分区上存储文件时,要遵循一定的格式,这种格式称为文件系统类型。(fat16、fat32、ntfs、ext2、ext3、yaffs、jffs2等)(虚拟文件系统类型:proc、sysfs等),常常把文件系统类型简称为“文件系统”。

FHS标准(Filesystem Hierarchy Standard,文件系统层次标准),定义了系统运行所需的最小文件、目录的集合,并列举了不遵循这些原则的例外情况及其原因。

    /
     |___ /bin                          存放所有用户可以使用的、基本的命令。必须与根文件系统在同一个分区。
     |___ /sbin                        存放系统命令,管理员才能使用。还可存放在/usr/sbin、/usr/local/sbin,启动、修复系统
     |___ /dev                         存放设备文件。通过读写某个设备文件操作某个具体的外设。
     |___ /etc                          存放各种配置文件。
     |___ /lib                           存放共享库和可加载模块(驱动程序)。
     |___ /home                      用户目录,可选。
     |___ /root                        根用户目录。
     |___ /usr                         可存放在另一个分区,存放的是共享、只读的程序和数据。只读。
     |___ /var                         存放可变的数据,如spool(mail、news、打印机等用的),log文件、临时文件。
     |___ /proc                       空目录,作为proc文件系统挂接点。(常在/etc/fstab进行设置自动挂接)
     |___ /mnt                        通常为空目录,临时挂接某个文件系统的挂接点。/mnt/cdrom、/mnt/hda1
     |___ /tmp                        存放临时文件,通常为空目录。


在构造根文件系统时使用动态链接的busybox,构造根文件时需要在/lib目录下面放置glibc库文件。

1、编译安装busybox

首先修改busybox根目录下的Makefile,使用交叉编译器。在189行的ARCH?=$(SUBARCH)修改为ARCH?=arm,在164行的CROSS_COMPILE?=修改为CROSS_COMPILE?=arm-linux-修改后执行make;make install,在busybox的根目录下有_install文件夹,里面就是我们所生成的文件和目录如下所示:

由于每个版本的配置选项组织有所不同。不管怎样,我们注意以下选项就行了:

1) Support for devfs

2) Build BusyBox as a static binary ( no shared libs )  //将busybox编译成静态链接

3) Do you want to build busybox with a Cross Compile?

(/usr/local/arm/3.3.2/bin/arm-linux-) Cross Compile prefix  //指定交叉编译器

4) init

5) Support reading an inittab file  //支持init读取/etc/inittab 配置文件

6) (X) ash选中ash   //建立的rcS脚本才能执行

7)ash

8)cp  cat  ls  mkdir  mv   //可执行命令工具的选择,自己看着办吧,需要用到的就选上

9) mount

10) umount

11) Support loopback mounts

12) Support for the old /etc/mtab file

13) insmod

14) Support version 2.2.x to 2.4.x Linux kernels

15) Support version 2.6.x Linux kernels

16) vi

17)don’t use user

以上内容必须选上,其他可按默认值;如果要支持其他功能,如网络支持等,可按需选择.


2、建立root根目录root_nfs

进入root_nfs目录,通过mkdir dev etc home lib mnt opt proc root sys tmp var web目录

同时将 _install文件夹下的内容也放到root_nfs下,如下所示:

3、创建etc目录下的文件

3.1 创建etc/inittab文件

init进程根据/etc/inittab文件来创建其他子进程,比如调用脚本文件配置ip地址、挂接其他文件系统,最后启动shell等。

参考busybox源码下面的"examples/inittab"文件,创建inittab代码如下:

::sysinit:/etc/init.d/rcS//指定系统启动的脚本

::respawn:/bin/sh//打开一个登录会话

ttySAC0::askfirst:/bin/sh//打开一个无需登陆验证的shell,以ttySAC0作为控制台

::ctrlaltdel:/sbin/reboot//指定当按下ctrl+alt+del时执行命令

::shutdown:/bin/umount -a -r//关机时执行的操作

3.2 创建etc/init.d/rcS文件

rcS文件,借助启动脚本设置各种程序开机后自动运行,也可进行其他系统设置,创建的文件内容如下:

#! /bin/sh

ifconfig eth0 up XXX.XXX.XXX.XXX

mount -a

mk /dev/pts

mount -t devpts devpts /dev/pts

echo /sbin/mdev > /proc/sys/kernel/hotplug

mdev -s

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值