快速业务通道

精通init ramfs构建step by step (四)

作者 佚名技术 来源 Linux系统 浏览 发布时间 2012-05-11
ty命令看看当前的终端设备文件名:

  # tty

  /dev/console

  它还是console,不是tty设备,问题没有解决.不过,reboot和halt命令倒是可以正常工作了.

  经过验证,busybox的缺省init模式无法满足我们的要求,我们还是要写inittab,定制自己的init初始化流程.


十五、busybox的inittab文件格式说明

  要写自己的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 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号