Linux系统启动详解(一)

王朝学院·作者佚名  2016-05-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

linux系统启动详解(一)本篇主要以Centos为例,讲述整个Linux系统启动过程,包括了grub引导,initramfs流程,/sbin/init执行rc.sysinit及rc的大体流程。另外,本篇有一个实例来说明,将整个操作系统运行在内存的实例(系统默认是使用一块物理磁盘存储操作系统)。

1 概述 Linux系统从软件角度,启动大致过程如下:

1) 硬件及BIOS加载,通过启动项找到MBR,读取MBR中的boot loader,即我们常用的grub工具。

2) boot loader,通过(如grub.conf)指定的root设备,加载kernel(vmlinux)、initramfs,并运行initramfs中的init。

3) 切换到真正的root fs,执行/sbin/init,执行rc.sysinit。

4) 执行/etc/rc3.d下服务脚本。

关于rootfs是什么,参考文档[1]描述得比较易懂。

[1]: 什么是根文件系统(rootfs)http://www.crifan.com/what_is_root_filesystem/

2 grubgrub的启动参数,如title,timeout等,google一搜一大把,就不在此说明。

关于grub还有一个作用,就是启动内核时,向内核传递参数,如我们常见的root=…,就是向内核传递真正的root fs所在的设备,即root device。

其它可向内核传递的参数,具体在参考内核源码目录中有文档说明其作用:Documentation/kernel-parameters.txt(以内核src.rpm来说,安装源码包后,其内核源码在/root/rpmbuild/BUILD/kernel-2.6.32-71.el6/linux-2.6.32-71.el6.x86_64/)。

其作用相当于修改/PRoc/sys/kernel/下的对应参数值,以/proc/sys/kernel/panic为例。

[root@localhost ~]# cat /proc/sys/kernel/panic

0

[root@localhost ~]# vim /boot/grub/grub.conf

……

root (hd0,0)

kernel /boot/vmlinuz-2.6.32-71.el6.5.vsds.x86_64 ro root=UUID=212c95a4-56d0-44fc-93ce-73b5f3e8cf2a rd_NO_LUKS rd_NO_LVM rd_NO_MD rd_NO_DM LANG=en_US.UTF-8 SYSFONT=latarcyrheb-sun16 KEYBOARDTYPE=pc KEYTABLE=us panic=2

initrd /boot/initramfs-2.6.32-71.el6.5.vsds.x86_64.img

……

[root@localhost ~]#reboot

[root@localhost ~]# cat /proc/sys/kernel/panic

2

更多说明,参见资料[2]。

[2]: linux 内核可接受的参数| 通过grub给内核传递参数

下节将跟小伙伴们来说说initramfs那些事,和本人通过简单修改initramfs将系统从运行在磁盘,修改为运行到ramdisk中。

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航