(linux启动流程详解.docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
(linux启动流程详解

一、从哪里到哪里 本文旨在描述linux中内核如何调用启动,然后如何从img的文件系统切换到硬盘的过程。 描述起于:linux-2.6.11/init/main.c中函数 static int init(void * unused) 描述止于:/etc/rc.d/rc.sysinit文件的被调用 二、描写流程 在linux代码linux-2.6.11/init/main.c中init这个函数被调用时,初始启动的文件 系统镜像:/boot/initrd-2.6.11.12.img(以2.6.11.12内核为例)已被grub加载到 内存中,并已挂载到根目录上(/)。 1、我们先来看看initrd-2.6.11.12.img到底是个什么东西: [root@wj-server1 tmp]# cd /tmp [root@wj-server1 tmp]# cp /boot/initrd-2.6.11.12.img /tmp/initrd-2.6.11.12.gz [root@wj-server1 tmp]# gunzip initrd-2.6.11.12.gz 解压缩后的文件为: [root@wj-server1 tmp]# ls -l initrd-2.6.11.12 -rw-r--r--??1 root root 846848??7月 31 17:01 initrd-2.6.11.12 是一个CPIO格式的文件,该文件格式是种文件镜像让我们将它解开到一个目录中看看 其中的具体内容: [root@wj-server1 tmp]# mkdir initrd [root@wj-server1 tmp]# cd initrd [root@wj-server1 initrd]# cpio -i??../initrd-2.6.11.12 1654 blocks [root@wj-server1 initrd]# gzip ../initrd-2.6.11.12 [root@wj-server1 initrd]# mv ../initrd-2.6.11.12.gz ../initrd-2.6.11.12.img 2、回到内核init函数中,看看如何调用/boot/initrd-2.6.11.12.img中/init脚本的 ? ?.... // 这里判断在grub装载的/boot/initrd-2.6.11.12.img中是否有/init这个文件? if (sys_access((const char __user *) /init, 0) == 0) ? ? execute_command = /init else ? ? .... // 如果有/init这个文件就先运行它。 if (execute_command) ? ? run_init_process(execute_command); run_init_process(/sbin/init); run_init_process(/etc/init); run_init_process(/bin/init); run_init_process(/bin/sh); panic(No init found. Try passing init= option to kernel); 由代码我们看到kernel会先判断并运行/boot/initrd-2.6.11.12.img中的/init文件,我们 来看看该/boot/initrd-2.6.11.12.img/init文件的内容,我们上面已将该文件展开到目录 /tmp/initrd中: [root@wj-server1 initrd]# cat ./init #!/bin/nash? ???# 该文件是个nash的脚本文件 # 挂接proc文件系统 mount -t proc /proc /proc # 不输出nash调试信息,由/proc/cmdline决定,cat /proc/cmdline我的启动参数 # 输出ro root=/dev/hda3 vga=791 splash=silent,如果该命令行中带了quiet参 # 数,则不输出nash提示信息。 setquiet # 提示信息(这里提示因该放到上面去,mkinitrd-4.2.17-2mgc.rpm包中原来如是, # 笔误?为什么这里牵涉到mkinitrd这个包类?因为:/boot/initrd-2.6.11.12.img # 文件由下面命令生成:mkinitrd /boot/initrd-2.6.11.12.img 2.6.11.12) echo Mounted /proc filesystem # 挂接sys文件系统 echo Mounting sysfs mount -t sy

文档评论(0)

lisuf331 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档