精通init ramfs构建step by step (四)
ty命令看看当前的终端设备文件名:
# tty /dev/console 它还是console,不是tty设备,问题没有解决.不过,reboot和halt命令倒是可以正常工作了. 经过验证,busybox的缺省init模式无法满足我们的要求,我们还是要写inittab,定制自己的init初始化流程.
要写自己的inittab,需要理解busybox的inittab文件格式. busybox的inittab文件与通常的inittab不同,它没有runlevel的概念,语句功能上也有限制.inittab语句的标准格式是 ::: 各字段的含义如下 拥有帝国一切,皆有可能。欢迎访问phome.net: id字段与通常的inittab中的含义不同,它代表的是这个语句中process执行所在的tty设备,内容就是/dev目录中tty设备的文件名.是运行process的tty设备的文件名,也不能象通常的inittab那样要求每条语句id的值唯一. : busybox不支持runlevel,此字段完全被忽略. : 为下列这些值之一: sysinit, respawn, askfirst, wait,once, restart, ctrlaltdel, shutdown 其含义与通常的inittab的定义相同.特别提一下askfirst,它的含义与respawn相同,只是在运行process前,会打出一句话“please press Enter to active this console”,然后等用户在终端上敲入回车键后才运行process. : 指定要运行的process的命令行. 十六、写mini linux的inittab 理解了busybox的inittab格式,我们就可以写mini linux的inittab: ::sysinit:/etc/init.d/rcS tty1::askfirst:/bin/sh tty2::askfirst:/bin/sh tty3::askfirst:/bin/sh tty4::askfirst:/bin/sh tty5::askfirst:/bin/sh tty6::askfirst:/bin/sh ::restart:/sbin/init ::ctrlaltdel:/sbin/reboot ::shutdown:/bin/umount -a -r 把这个文件放到image的etc目录下.为了执行reboot命令时避免提示找不到/etc/fstab文件,我们再在etc目录下创建一个空文件: touch fstab 做好了这些,就可以重新编译内核,生成新的init ramfs了.在QEMU试验环境下验证新生成的mini linux,系统运行正常,象通常的linux系统一样,用ALT F1~F6键可以在6个终端间切换. mini linux系统不需要登录,用askfirst的方式来模拟登录,用户敲回车键后,init进程才会启动shell. 拥有帝国一切,皆有可能。欢迎访问phome.net |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |