busybox
wget http://www.busybox.net/downloads/busybox-1.20.2.tar.bz2
make defconfig
make CROSS_COMPILE=arm-linux-gnueabi-
make install
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
::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
#!/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需要
#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文件挂载其他文件系统。
补全其他几个目录
先解析/etc/inittab文件,然后执行/etc/init.d/rcS脚本,并根据/etc/fatab文件挂载其他文件系统。
mkdir -p lib lib/modules dev proc tmp sys
本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-11/137063.htm