linux 0.11根文件系统,构建根文件系统_Linux教程_Linux公社-Linux系统门户网站

busybox

wget http://www.busybox.net/downloads/busybox-1.20.2.tar.bz2

make defconfig

make CROSS_COMPILE=arm-linux-gnueabi-

make install

编译完install后会默认安装在busybox源码目录下_install目录内,但是此文件系统并不完整,只有四个目录

root-># ls

bin linuxrc sbin usr

虽然可以直接用这个简易的文件系统启动内核,但是功能在以后的使用过程中会很受限制。

构建/etc目录及几个关键文件

/etc/inittab文件

::sysinit:/etc/init.d/rcS

ttySAC0::askfirst:-/bin/sh

::ctrlaltdel:/sbin/reboot

::shutdown:/bin/umount -a -r

格式::::例如上边

id:表示输出的终端,省略的话表示输出到init终端

runlevels:运行等级,busybox中没有意义,省略

action:如下

process:要执行的程序,“-”开头表示这个程序是交互的。

action名称执行条件说明

sysinit

系统启动后最先执行

只执行一次,init进程等待它执行结束后才执行其他进程

wait

系统执行完sysinit进程后

同上

once

系统执行完wait进程后

只执行一次,但不等待它结束

respawn

系统执行完once进程后

init进程检测,发现子进程退出后,重新启用它

askfirst

系统执行完respawn进程后

与respawn类似,但是先输出“Please press Enter to active this console”,等用户键入回车后才启动

shutdown

系统关机时

重启,关机命令执行时

restart

Busybox中配置CONFIG_FEATURE_USE_INITTAB,并且init进程接收到SIGHUP信号时

先重新读取、解析/etc/inittab文件再执行restart

ctrlaltdel

按下ctrl+alt+del组合键时

创建/etc/ini.d/rcS文件

#!/bin/sh

ifconfig eth0 192.168.1.222

mount -a #这个命令会自动读取/etc/fstab文件并按要求挂载制定的文件系统

mkdir /dev/pts

mount -t devpts devpts /dev/pts //用来支持外部网连接(telnet)

echo /sbin/mdev > /proc/sys/kernel/hotplug #最后的两行是为了mdev能够以守护进程的形式运行,当驱动程序插入内核的时候能够自动创建设备文件节点。

mdev -s

此外还要修改此文件的权限,使它能够运行。

创建/etc/fstab文件

#device mount-point type options dump fsck order

proc /proc proc defaults 0 0

tmpfs /tmp tmpfs defaults 0 0

sysfs /sys sysfs defaults 0 0 //mdev需要

tmpfs /dev tmpfs defaults 0 0 //mdev需要

这里把/dev目录挂载上tmpfs文件系统,是为了mdev(pc机上是udev)程序能够动态的创建删除设备文件。

oprions的参数如下,当同时满足多个时,用逗号分隔

参数名说明默认值

auto\noauto

执行”mount -a”时是否自动挂载

auto

user\nouser

允许普通用户挂载还是只能root挂载

nouser

exec\noexec

是否允许执行所挂载设备上的程序

execc

ro

以只读方式挂载文件系统

rw

以读写方式挂载文件系统

sync\async

sync:修改文件时会同步写入设备

sync

defaults

rw,suid,,dev,exec,auto,nouser,async的组合

dump是一个用来备份文件的程序,fsck是一个用来检查磁盘的程序

dump根据dump字段的值决定是否需要备份此文件系统,如果没有这个字段或者这个字段为0,则dump忽略此文件系统

fsck程序根据fsck order字段决定检查磁盘的顺序,一般将根文件系统设置为1,其他文件系统设置为2,如果为0,则fsck程序忽略这个文件系统。

总结

先解析/etc/inittab文件,然后执行/etc/init.d/rcS脚本,并根据/etc/fatab文件挂载其他文件系统。

补全其他几个目录

mkdir -p lib lib/modules dev proc tmp sys

0b1331709591d260c1c78e86d0c51c18.png

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值