构建根文件系统
2016-12-07 15:51
447 查看
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>:<runlevels>:<action>:<process>例如上边
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根据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相关文章推荐
- Linux socket 初步
- Linux Kernel 4.0 RC5 发布!
- linux lsof详解
- linux 文件权限
- Linux 执行数学运算
- 10 篇对初学者和专家都有用的 Linux 命令教程
- Linux 与 Windows 对UNICODE 的处理方式
- Ubuntu12.04下QQ完美走起啊!走起啊!有木有啊!
- 解決Linux下Android开发真机调试设备不被识别问题
- 运维入门
- 运维提升
- Linux 自检和 SystemTap
- Ubuntu Linux使用体验
- c语言实现hashmap(转载)
- Linux 信号signal处理机制
- linux下mysql添加用户
- Scientific Linux 5.5 图形安装教程