Linux下电脑启动步骤
Tofloor
poster avatar
hellcon
deepin
2014-08-25 19:59
Author
相信许多朋友都对这个话题有点兴趣,所以拿出来和各位讨论讨论。
因为没找到适合的版块,并且觉得这个话题和系统安装有点联系(总得重启电脑),所以就拿到这里和大家交流了,望版主见谅!!! ;)  ;)  ;)

电脑加电后,首先是启动BIOS程序,BIOS自检完毕后,找到硬盘上的主引导记录MBR,MBR读取DPT(分区表),从中找出活动的主分区,然后读取活动主分区的PBR(分区引导记录,也叫pbr),PBR再搜寻分区内的启动管理器grub,在grub被找到后,控制权就交给了grub。当grub开始时,它寻找自己的配置文件(menu.lst)。当找到配置文件后,它使用这个配置文件建立一个要载入的操作系统的菜单列表, 然后显示引导菜单接口。 如果配置文件没有被找到,或者如果配置文件不能读取,那么GRUB将载入命令行接口。接下来的步骤就是加载内核映像到内存中,内核映像并不是一个可执行的内核,而是一个压缩过的内核映像。通常它是一个zImage(压缩映像,小于512KB)或是一个bzImage(较大的压缩映像,大于512KB),它是提前使用zlib压缩过的。在这个内核映像前面是一个例程,它实现少量硬件设置,并对内核映像中包含的内核进行解压缩,然后将其放入高端内存中。如果有初始RAM磁盘映像,系统就会将它移动到内存中,并标明以后使用。然后该例程会调用内核,并开始启动内核引导的过程。然后执行init进程 -->>通过/etc/inittab文件进行初始化-->>执行/bin/login程序。登陆后进入系统。

注:有的说grub就在MBR中,不知是否是这样的,希望知道的朋友解释解释!!!     
Reply Favorite View the author
All Replies
hehethegreat
deepin
2014-08-25 20:26
#1
1. 传统  BIOS 和 UEFI ,请去了解下, 变化还是很大的。
2. 传统init 快不用了, 替代是systemd  , 很多发行版已经换了。Debian 8 会开始使用。

不是专业的不用了解那么多。 如果引导出了问题, 参考郭德纲相声 - 揭瓦:

此处不留爷自有留爷处,处处不留爷老子投八路
Reply View the author
hehethegreat
deepin
2014-08-25 20:29
#2
相信许多朋友都对这个话题有点兴趣,所以拿出来和各位讨论讨论。
因为没找到适合的版块,并且觉得这个话题和系统安装有点联系(总得重启电脑),所以就拿到这里和大家交流了,望版主见谅!!! ;)  ;)  ;)

电脑加电后,首先是启动BIOS程序,BIOS自检完毕后,找到硬盘上的主引导记录MBR,MBR读取DPT(分区表),从中找出活动的主分区,然后读取活动主分区的PBR(分区引导记录,也叫pbr),PBR再搜寻分区内的启动管理器grub,在grub被找到后,控制权就交给了grub。当grub开始时,它寻找自己的配置文件(menu.lst)。当找到配置文件后,它使用这个配置文件建立一个要载入的操作系统的菜单列表, 然后显示引导菜单接口。 如果配置文件没有被找到,或者如果配置文件不能读取,那么GRUB将载入命令行接口。接下来的步骤就是加载内核映像到内存中,内核映像并不是一个可执行的内核,而是一个压缩过的内核映像。通常它是一个zImage(压缩映像,小于512KB)或是一个bzImage(较大的压缩映像,大于512KB),它是提前使用zlib压缩过的。在这个内核映像前面是一个例程,它实现少量硬件设置,并对内核映像中包含的内核进行解压缩,然后将其放入高端内存中。如果有初始RAM磁盘映像,系统就会将它移动到内存中,并标明以后使用。然后该例程会调用内核,并开始启动内核引导的过程。然后执行init进程 -->>通过/etc/inittab文件进行初始化-->>执行/bin/login程序。登陆后进入系统。

注:有的说grub就在MBR中,不知是否是这样的,希望知道的朋友解释解释!!!     

安装系统时, 会选择grub的安装位置, 默认是MBR, 也可以选择安装在硬盘上。
Reply View the author
hellcon
deepin
2014-08-25 20:38
#3
多谢hehethegreat的发言!     
        不知除了init外其它有没有被替代的?


请问有没有对MBR熟悉的朋友,也请出来聊一聊!!!     
Reply View the author
MattD
deepin
2014-08-25 23:03
#4
首先要假设一个大前提,即你的计算机采用传统的BIOS固件,而非新型的UEFI固件。
在采用传统BIOS固件的情况下,又分为两种情况。
针对grub安装到超级块而非MBR的情况,你的流程没错,但是已经过时。
针对grub安装到MBR的情况,那么流程就不一样了。无论grub-legacy还是grub2,grub需要分为三部分进行安装。
第一部分是将grub的boot.img写入MBR,用来装入core.img的第一个扇区,引导后续流程。
第二部分是将grub的core.img写入MBR后面的62个保留扇区,用来加载各种文件系统模块。因为grub的MBR部分是不认识/boot所在分区的文件系统的,需要借助这一步骤加载相应的文件系统模块之后,才能正确寻找/boot所在分区下的grub配置文件。
第三部分就是/boot/grub或者/boot/grub2文件夹了,经过第二阶段的操作以后,grub就能识别/boot的文件系统,然后可以从中读取配置文件,向用户展示引导菜单。
到这里,grub的作用结束,之后就是装入内核,挂载根文件系统,执行/sbin/init。
Reply View the author
hehethegreat
deepin
2014-08-26 00:15
#5
多谢hehethegreat的发言!     
        不知除了init外其它有没有被替代的?


请问有没有对MBR熟悉的朋友,也请出来聊一聊!!!     

变化是相当大的, 你去看下 rhel7 的文档, 现在连ifconfig 都不预装了 ........  等 Debian 8 开始变了 , Ubuntu等衍生版也会发生系列变化 ......  Linux 就是个大坑。
Reply View the author
hellcon
deepin
2014-08-26 01:36
#6
多谢Mattd和hehethegreat的回复!!!
        坑就坑吧!Deepin还是挺好用的,坚决要顶!!!     
Reply View the author
redbrother
deepin
2014-08-26 07:13
#7
楼主说的是Linux下?grub2和pbr没关系吧?和是否活动分区也没关系吧。楼主那一套在Windows下还差不多
Reply View the author
hellcon
deepin
2014-08-27 06:01
#8
感谢deepinwuyuvl的回复!!!     
不知你是否能肯定和pbr无关,能拿出详细的说明与大家分享吗??
Reply View the author