快速业务通道

精通init ramfs构建step by step (十二)

作者 佚名技术 来源 Linux系统 浏览 发布时间 2012-05-11
量有:

  ----------------a) rootdelay=<时间>, 加载根文件系统前等待的时间.如果根文件系统在U盘上,一定要在这里或在grub的kernel后加上这个参数,等待发现U盘后再mount根文件系统,否则会出现找不到根文件系统的错误.

  ----------------b) panic=<时间> 系统panic后,隔多长时间再reboot.当你试验新内核或新initrd,经常panic而不想按开机按钮时可以加上这个参数

  --------7) depmod -a 在/lib/modules/<内核版本号>/目录下产生modules.dep文件

  --------8) 执行init_top目录下的脚本文件.这里只有一个framebuffer,它处理内核参数video=,vga=,splash等参数, 另外创建节点/dev/tty[0-8]

  --------9) 用modprobe按顺序加载/conf/modules列出的模块.注意,udev需要unix模块,否则会出现错误: udevd[606]: error initializing udev socket

  --------10) 执行/scripts/init-premount/下的脚本文件.

  -------------10.1) 文件thermal: 它根据DPKG_ARCH的不同值加载相应需要的模块,并且加载fan和thermal模块.

  -------------10.2) 文件udev: 执行如下过程:

  ------------------------a) mkdir -p /dev/.udev/db

  ------------------------b) udevd --daemon 以daemon形式启动udevd,大概用于监视hotplug设备的插拔

  ------------------------c) mkdir -p /dev/.udev/queue/ (不知道这两个mkdir的用途)

  ------------------------d) udevtrigger 对于coldplug的设备,(也就是开机前插入的设备),触发设备的uevents,以便内核处理

  ------------------------e) udevsettle 等待,直到内核uevents事件处理完

  --------11) 执行/scripts/local, 它完成mount根文件系统的过程:

  ----------------11.1) 执行local-top/目录下的脚本

  ------------------------11.1.1) 文件udev_helper:

  ----------------------------------a) 针对根文件系统设备(如通常的/dev/sda1, /dev/sda2等)不存在的情况,加载了模块ide_generic.我可以针对找不到硬盘的情况,加载模块aic94xx, sd_mod.

  ----------------11.2) 如果根文件系统设备还不存在,则年等待一段时间(默认180s),过了这段时间还找不到根文件系统设备就panic.

  ----------------11.3) 取得根文件系统的类型:先看有没有传递参数rootfstype=,如果没有就执行/bin/fstype,如果还不知道文件系统类型就执行/lib/udev/vol_id来取得文件系统类型.

  ----------------11.4) 执行local-premount/ 下的脚本:

  -------------------------11.4.1) 文件resume: (没看太懂)

  ------------------------------a) 处理传递的resume参数,它指定的是一个分区,格式为resume=LABEL=/dev/sda1或resume=UUID=xxx, 用于suspend to disk

  ----------------11.5) 根据文件系统类型加载相应的模块,例如如果根文件系统是ext2类型的,就加载ext2(如果没编译进内核).

  ----------------11.6)mount根文件系统到/root上

  ----------------11.7) 执行local-bottom/下的脚本(这里没有脚本).

  --------12) 执行init-bottom/下的脚本:

  ---------------12.1) 文件udev:

  ------------------------a) kill掉udevd

  ------------------------b) nuke /dev/.udev/queue/ (不知啥意思)

  ------------------------c) 执行/etc/udev/udev.conf 设置变量tmpfs_size=10M

  ------------------------d) mkdir /dev/.static/dev (注意,这个目录不是在硬盘上创建的)

  ------------------------e) mount -n -o bind /root/dev /dev/.static/dev 把真实文件系统的/dev目录下的node(在硬盘上) bind到/de

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号