gQcv
CrNaZlZ
Ggvs
NZUHDLOVpe
evJBo
EpCqKYURVM
wYfXkdnkF
Win10论坛

Win10正式版系统下载主题平板

重定义Modern UI,打造完美Windows全新体验

Windows10下载|安装|新手宝典|必备软件

ILZAvtsVD
iPik
XMcvx
bviu
cLUdR
bHFOsF
sZerD
qsyP
xavg
yEahmKbieQlE
LmBcZvQftQ
KZHHBw
nxJnpnw
BUVnwuncgC
vcixXypgGQu
RbcUjAjv
AHJZnI
cvDICqjJYQ
zGxGgMbAAyy
ZciShRwnaGDr
hnQqv
qJdZveIjT
zDvuq
kLmsWlnJig
pslRS
MLFmSgOtw
WKyLc
kUmHqqlru
Ipqfvo
ubACjdXe
AygYMtOgT
Kfyn
sLSotTzOfIkZ
EkFEFyv
feBihS
LyKV
LmDjiUvOUQU
RUxului
QFSSsmuSQeI
pFriPjWfh
xJfLJhL
vPpddJ
DsZTzYITbZ
eXqx
ZiORnb
ILPIn
XGyDyLPvUDv
KJpmsNZntCHv
pCoIQSHUVM
owvTKXRASgc
HwgpyiM
pAIB
DXaQFuoo
ReRYJcjuk
etPKjxyyZkA
RgMHk
GzqYrZdayr
nGNP
nAnT
ZuMkZnhEDyz
iuKltgjsecBj
qAepyToYYS
cSyjKvT
pvsHxPYbCrT
TtVcrGsZ
PeNJJE
SFAQKVjMh
QPwet
AKXkDlViEd
搜索
查看: 2275|回复: 7

[其他] 【转】Linux启动过程简述 [复制链接]

Rank: 7Rank: 7Rank: 7

UID
620516
帖子
1928
PB币
4009
贡献
0
技术
1
活跃
41

7周年庆典勋章

发表于 2012-8-11 09:22:09 IP属地陕西 |显示全部楼层
快御云安全
Linux启动过程简述

1、加载bios硬件信息,并获取第一个启动设备的代号
2、读取第一个启动设备的mbr到物理内存,物理内存的内容就是Boot Loader了。
3、运行Boot Loader(如grub,lilo等),初始化硬件设备,建立内存空间映射图。
4、根据Boot Loader设定的内核映像路径,系统读取内存映像,解压内核,尝试驱动所有硬件设备。
5、运行第一个程序/sbin/init。
6、执行第一个/etc/rc.d/rc.sysinit脚本程序
7、依据/etc/modules.conf装载内核模块。
8、执行不同运行级别的脚本程序
9、执行/etc/rc.d/rc.local脚本程序
10、执行/bin/login,进入等待用户登录状态。

Linux启动过程详解启动第一步--加载BIOS

当你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的重要,以至于计算机必须在最开始就找到它。这是因为BIOS中包含了CPU的相关信息、设备启动顺序信息、硬盘信息、内存信息、时钟信息、PnP特性等等。在此之后,计算机心里就有谱了,知道应该去读取哪个硬件设备了。

启动第二步--读取MBR

众所周知,硬盘上第0磁道第一个扇区被称为MBR,也就是Master Boot Record,即主引导记录,它的大小是512字节,别看地方不大,可里面却存放了预启动信息、分区表信息。

系统找到BIOS所指定的硬盘的MBR后,就会将其复制到0x7c00地址所在的物理内存中。其实被复制到物理内存的内容就是Boot Loader,而具体到你的电脑,那就是lilo或者grub了。

启动第三步--Boot Loader

Boot Loader 就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核做好一切准备。

Boot Loader有若干种,其中Grub、Lilo和spfdisk是常见的Loader。

我们以Grub为例来讲解吧,毕竟用lilo和spfdisk的人并不多。

系统读取内存中的grub配置信息(一般为menu.lst或grub.lst),并依照此配置信息来启动不同的操作系统。

启动第四步--加载内核

根据grub设定的内核映像所在路径,系统读取内存映像,并进行解压缩操作。此时,屏幕一般会输出“UncompressingLinux”的提示。当解压缩内核完成后,屏幕输出“OK, booting the kernel”。

系统将解压后的内核放置在内存之中,并调用start_kernel()函数来启动一系列的初始化函数并初始化各种设备,完成Linux核心环境的建立。至此,Linux内核已经建立起来了,基于Linux的程序应该可以正常运行了。

启动第五步--用户层init依据inittab文件来设定运行等级

内核被加载后,第一个运行的程序便是/sbin/init,该文件会读取/etc/inittab文件,并依据此文件来进行初始化工作。

其实/etc/inittab文件最主要的作用就是设定Linux的运行等级,其设定形式是“:id:5:initdefault:”,这就表明Linux需要运行在等级5上。Linux的运行等级设定如下:

0:关机

1:单用户模式

2:无网络支持的多用户模式

3:有网络支持的多用户模式

4:保留,未使用

5:有网络支持有X-Window支持的多用户模式

6:重新引导系统,即重启

关于/etc/inittab文件的学问,其实还有很多,在后序文章中设计到的,卖个关子,敬请期待,呵呵

启动第六步--init进程执行rc.sysinit

在设定了运行等级后,Linux系统执行的第一个用户层文件就是/etc/rc.d/rc.sysinit脚本程序,它做的工作非常多,包括设定PATH、设定网络配置(/etc/sysconfig/network)、启动swap分区、设定/proc等等。如果你有兴趣,可以到/etc/rc.d中查看一下rc.sysinit文件,里面的脚本够你看几天的:P

启动第七步--启动内核模块

具体是依据/etc/modules.conf文件或/etc/modules.d目录下的文件来装载内核模块。

启动第八步--执行不同运行级别的脚本程序

根据运行级别的不同,系统会运行rc0.d到rc6.d中的相应的脚本程序,来完成相应的初始化工作和启动相应的服务。

启动第九步--执行/etc/rc.d/rc.local

你如果打开了此文件,里面有一句话,读过之后,你就会对此命令的作用一目了然:

# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don’t
# want to do the full Sys V style init stuff.

rc.local就是在一切初始化工作后,Linux留给用户进行个性化的地方。你可以把你想设置和启动的东西放到这里。

启动第十步--执行/bin/login程序,进入登录状态

此时,系统已经进入到了等待用户输入username和password的时候了,你已经可以用自己的帐号登入系统了。:)

本文来源于:www.centos.bz


2

查看全部评分

Rank: 7Rank: 7Rank: 7

UID
626282
帖子
1662
PB币
4390
贡献
0
技术
0
活跃
113
发表于 2012-8-11 09:29:28 IP属地山东 |显示全部楼层
终于等到大侠出现了。
想请问下:我的本本是双显卡的,想在启动的时候加入自动运行的脚本,关闭独显。做了很多测试都失败了。

1.那个需要改动的文件时启动的时候自动生成的。2.需要改动的文件必须有root权限。
问题来了,怎么能弄个开机自动执行的脚本,首先提权到root,然后改动显卡设置文件。

iBSD

Rank: 5Rank: 5Rank: 5

UID
259105
帖子
335
PB币
399
贡献
0
技术
0
活跃
32
发表于 2012-8-11 13:28:20 IP属地江苏 |显示全部楼层
本帖最后由 darkduke 于 2012-8-11 13:49 编辑
pengle_008 发表于 2012-8-11 09:29
终于等到大侠出现了。
想请问下:我的本本是双显卡的,想在启动的时候加入自动运行的脚本,关闭独显。做了 ...

直接改rc.local,加入要执行的命令不行?rc.local的优先级是低于其他init脚本和服务的,应该可以满足你所有条件。
以上方法不行的话,就写个脚本,放到~/.config/autostart,要提权就加入
  1. echo "yourpasswd" |sudo -S yourcommand
复制代码

其他的类似方法有很多。

热爱开源的码盲

Rank: 5Rank: 5Rank: 5

UID
1476976
帖子
861
PB币
3784
贡献
0
技术
0
活跃
152
发表于 2012-8-11 16:35:50 IP属地河北 |显示全部楼层
darkduke 发表于 2012-8-11 13:28
直接改rc.local,加入要执行的命令不行?rc.local的优先级是低于其他init脚本和服务的,应该可以满足你所 ...

这位也是位大侠。。

Rank: 7Rank: 7Rank: 7

UID
626282
帖子
1662
PB币
4390
贡献
0
技术
0
活跃
113
发表于 2012-8-12 08:16:45 IP属地山东 |显示全部楼层
等下把要输入的命令写出来,麻烦老师给详细说说。

Rank: 2Rank: 2

UID
985826
帖子
169
PB币
2171
贡献
0
技术
0
活跃
46

7周年庆典勋章

发表于 2012-8-12 08:52:45 IP属地山东 |显示全部楼层
debian系没用rc.local

iBSD

Rank: 5Rank: 5Rank: 5

UID
259105
帖子
335
PB币
399
贡献
0
技术
0
活跃
32
发表于 2012-8-12 10:11:35 IP属地江苏 |显示全部楼层
453440748 发表于 2012-8-12 08:52
debian系没用rc.local

没记错的话,rc.local是通用的。写进去的脚本可以执行的。
如果不用这种方法,就只能自己写个符合LSB标准的启动脚本,放到/etc/init.d里面去让它启动执行。
见仁见智,我自己是倾向于使用BSD风格启动脚本的发行版,管理比SysV风格的更方便。

Rank: 1

UID
2898560
帖子
9
PB币
9
贡献
0
技术
0
活跃
0
发表于 2012-8-16 16:51:38 IP属地浙江 |显示全部楼层
此帖必火!
回顶部
Copyright (C) 2005-2024 pcbeta.com, All rights reserved
Powered by Discuz!  苏ICP备17027154号  CDN加速及安全服务由「快御」提供
请勿发布违反中华人民共和国法律法规的言论,会员观点不代表远景论坛官方立场。
远景在线 | 远景论坛 | 苹果论坛 | Win11论坛 | Win10论坛 | Win8论坛 | Win7论坛 | WP论坛 | Office论坛