分享
 
 
 

Linux 开机流程分析

王朝system·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

开机流程分析

开机不是只要按一下电源钮而关机只要关掉电源钮就可以了吗?有何大学问?

话是这样没错啦,但是由于 Linux 是一套多人多任务的操作系统,你难保你在关机时没有人在线上,假如你关机的时候碰巧一大群人在线上工作,那会让当时在线上工作的人马上断线的!那不是害死人了!一些资料可以无价之宝哩!另外,与 DOS 环境不同的是, Linux 在执行的时候,虽然你在画面上只会看到黑压压的一片,完全没有任何画面,但其实他是有很多的程序在背景底下执行的,例如邮件程序、浏览器主机程序等,你假如随便关机的话,是很轻易伤害硬盘及数据传输的动作的!所以在 Linux 下关机可是一门大学问喔

既然开机是很严厉的一件事,呵呵,那我们来了解一下整个开机的过程吧!好让大家比较轻易发现开机过程里面发生错误的地方,与解决之道!不过,由于开机的过程中,那个 Boot Loader 使用的软件可能不一样,例如 Mandrake 9.0 已经同时提供 Lilo 与 Grub 这两个开机治理程序,虽然 lilo 与 grub 的激活过程或许有点不太相同,但是他的原理则都是一样的哩!这里我们先介绍较老牌的 Lilo 啰! Lilo 是什么?!简单的说,他是 LInux LOader 的缩写,就是 Linux 开机时候加载的咚咚就对了!这东西可是控制了你的多重开机的命脉!底下的篇幅会再分别介绍这两套开机治理程序!底下先开始来谈谈 Linux 是如何开机的呢?基本的流程为:

1.加载 BIOS 的硬件信息;

2.读取 MBR 的 Kernel Loader (亦即是 lilo, grub, spfdisk 等等)开机信息;

3.加载 Kernel 的操作系统核心信息;

4.Kernel 执行 init 程序并取得 run-level 信息;

5.init 执行 /etc/rc.d/rc.sysinit 档案;

6.激活核心的外挂式模块 (/etc/modules.conf);

7.init 执行 run-level 的各个批次档( Scripts );

8.init 执行 /etc/rc.d/rc.local 档案;

9.执行 /bin/login 程序;

10.登入之后开始以 Shell 控管主机。

大概的流程就是上面写的那个样子啦,而每一个程序的内容主要是在干嘛呢?底下就分别来谈一谈吧!

·寻找 BIOS 加载硬件信息:

稍微有 PC 硬件经验的人们大概都知道 BIOS ( Basic Input/Output Setup ) 的作用!他是第一个被加载计算机的资料!你主机的 CPU 资料、开机顺序、硬盘大小、芯片组工作状态、PnP 的开启与否、内存的时脉等等等...这都记录在 BIOS 当中!所以啦,开机之后,系统会先去找这个东西;

·可开机硬盘的 MBR 读取 Kernel loader:

再来呢?呵呵!当然就是硬盘的开机资料啰!由于个人计算机的系统在读完 BIOS 之后,会先去读取第一个开机硬盘的第一个扇区(就是 master boot record, MBR 啰!),还记得这个 MBR 吗?嗄!忘记了?赶紧回到第二篇好好的再复习一遍ㄋㄟ?。而这个扇区主要就是在记录开机的信息!还记得上面提到的 Lilo 及 grub 吧?他的纪录就是在这里啰!所以啰,这个时候 Lilo 纪录的信息就会被读出来,系统并依 Lilo 的信息去不同的系统开机,这也就是多重开机设定的地方啦。

好了,先再往返忆一下,假如你是以 grub 程序开机的话,那么在开机的时候会显示什么资料呢?呵呵!会显示蛮多的开机选单,没错?就是『选单』,然后选择了你的选择项目之后,系统就会跑到该扇区去读取该操作系统的核心啰!呵呵!所以一个好的 boot loader 会具有两个功能,就是:

o选单功能 ( menu )

o指向功能 ( pointer )

那么为何要有 loader 呢?我想,我们得先来探讨一下这个话题才行!要探讨之前先来了解一下,晓不晓得 Windows 与 Linux 的档案格式一不一样?!呵呵!当然不一样对不对,好了,那么再来说一说,请问,你的计算机怎么知道你的硬盘的资料是什么系统?哈哈!那就是 loader 的主要功能啰!在你能使用系统之前,一定需要加载核心对吧!?但是怎样让你的硬件熟悉核心呢?那就是 kernel loader 的主要功能了!所以这里需要提出的是, Linux 的 loader ( lilo 或 grub ) 是可以熟悉 windows 的核心档案的,但是 Windows 的 loader 却不熟悉 Linux 的核心档案,因此,作为一个多重开机的设定 loader ,就无法使用 Windows 所提供的 loader 啰!由于需要让系统熟悉你的 kernel ,因此,就需要 kernel loader 啦!这样想就对啦!

这一部份的信息我们在后续的章节会再提及!

·加载核心( Kernel ):

好了,等我们在 grub 的选单中选择了 Linux 这个系统,然后主机跑到 Linux 所在的硬盘之下,就开始将他的核心加载啰。

在 Linux 的系统下,通常开机的核心都摆在 /boot 底下,因此,这个时候的 boot loader 就会到 /boot 去寻找相关的核心。我们的 kernel 名称通常就是 /boot/vmlinuz-xxxx 的格式,目前 Mandrake 9.0 的核心版本为 2.4.19,而 Mandrake 自行释出的版本为 2.4.19-16mdk ,所以,使用 uname –r 会出现 2.4.19-16mdk 呦!然后 MDK 9.0 预设核心档案就是: /boot/vmlinuz-2.4.19-16mdk 这一个!好了,加载这个档案再往下继续吧!

·核心执行 init 并由 /etc/inittab 取得系统登入状态:

核心加载之后,由核心执行的第一个程序就是 /sbin/init 啰!而这个程序第一个目标当然就是确定主机是要以怎样的情况登入!这个时候就必须要以 /sbin/init 来加载 /etc/inittab 的信息啦!而 Linux 共有几种登入模式呢?嗯!这里似乎有需要说明一下 Linux 有哪些登入的状态!假如你进入 Linux 的 /etc/inittab 档案的话( 可以使用 vi 啦 ),你应该会看到如下的信息:

[root @test /root]# vi /etc/inittab # 0 - halt (Do NOT set initdefault to this)关机# 1 - Single user mode单人使用(系统有问题时候的登入状况)# 2 - Multiuser, without NFS (The same as 3, if you do not have networking) 多人但无网络# 3 - Full multiuser mode 文字界面登入的多人系统# 4 - unused系统保留# 5 - X11 X-Windows 图形界面登入的多人系统# 6 - reboot (Do NOT set initdefault to this)重新开机#id:3:initdefault:

·

上面显示的就是目前可以登入的状态了(就是 run-level 啦!),共有 0?6 的登入状态,其中,我们比较常使用的是 3 与 5 , 因为我们需要 Linux 是多人多任务的情况,而较常登入的状态就是文字与图形界面啦!所以这里需要设定成 3 或者是 5 ,千万不要设定成 0 或者是 6 喔!不然系统会一直直接重新开机或者是直接关机....预设的系统登入在上面这个表格的最底下一行纪录着!就是『id:3:initdefault 』那一行!注重喔!因为 VBird 预设是以文字界面来登入,所以才会是 3 ,假如你要改成图形界面登入的话(请确定你的 X-windows 没有问题),那么就将 /etc/inittab 里面的上面那一行,将 3 改成 5 即可啰!

那么什么是『单人维护模式 ( run-level 为 1 )』?假如你有玩过 Windows 的话,那么你在开机的时候假如按下 F8 时,不是会出现一些什么『安全模式』啦、『正常开机』啦或『 MS-DOS 模式』等等的进入 Windows 的状态吗?尤其是当你不正常关机的时候, Windows 预设就会以『安全模式』来激活 Windows 啰!Windows 的『安全模式』几乎不加载一些复杂的模块,让你的 Windows 一定可以开机成功!那么 Linux 的维护模式状态即是使用单人模式( 就是 run_level 为 1 啦!)所以说, Linux 的登入情况是如何呢?呵呵!没错,就是在这里加载的啦!

·init 的第一个执行内容 /etc/rc.d/rc.sysinit :

确定了登入状态之后,再来当然就是需要将主机的信息给他读进去 Linux 系统啰!而 Linux 系统的第一个资料内容就是 /etc/rc.d/sysinit 这个档案啦!假如你有空进入这个档案去看看的话,会发现这个档案的内容包括了==设定预设路径( PATH )、设定主机名称、执行 /etc/sysconfig/network 所记录的网络信息、挂载 /proc 这个保存在内存当中的主机基本讯息、以及其它几个 Linux 操作系统最基本的几个信息!大抵来说,他的基本工作是:

1.设定预设路径:( PATH)

2.设定网络状态:系统会再去读取 /etc/sysconfig/network,并将该档案内的资料,如 NETWORKING, FORWARD_IPV4, HOSTNAME, DOMAINNAME, GATEWARY, GATEWAYDEV 等等的设定读入系统中。

3.激活系统的置换空间(简单的可以想成是虚拟内存): swapping

4.检查档案系统:这个时候系统会去检查一些可能会存在的目录,例如 /fsckoptions 与 /forcfsck 及 /fastboot 等等的目录,当你的系统有不正常关机的现象时(例如忽然的断电等等),那么 Linux 将会自动的强制去检查 root 的档案系统 ( checking root filesystems )。简单的想一想,就好象是 Windows 系统下,当你不正常关机时,在开机的过程中就会出现扫瞄硬盘的情况相同啦!

5.周边设定与系统设定的参数 ( /proc ):在 Linux 或者是 Unix 系统中,你会在根目录中发现一个很希奇的扇区,那就是 /proc 啰!其实这个目录是记录在内存当中的,每次开机的时候就会被建置起来。他的主要功能是记录主机的一些接口设备的最新资料状况!例如网络周边啦、输入输出周边啦等等的。没事的话,不要到里面乱砍喔!会有问题

6.设定 Plug and Play ( PNP )的一些参数资料;

7.清除 /etc/mtab ;

8.mount root 及 /proc 档案系统 :好了,将一些资料都设定好之后,当然就是需要将资料写下来啰!这个时候就会将 root 与 /proc 资料给他 mount 上档案系统啦!

9.决定是否使用模块,

加载模块

10.检查档案系统 :与前面相同的,当前面的 /fastboot 检查的旗标开启之后,就会以 fsck 检查你的

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有