手机版
你好,游客 登录 注册
背景:
阅读新闻

构建根文件系统

[日期:2016-11-13] 来源:Linux社区  作者:kevin_mr [字体: ]

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是一个用来备份文件的程序,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

本文永久更新链接地址http://www.linuxidc.com/Linux/2016-11/137063.htm

linux
相关资讯       根文件系统 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款