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