博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux系统启动详解(一)
阅读量:5289 次
发布时间:2019-06-14

本文共 1461 字,大约阅读时间需要 4 分钟。

本篇主要以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       grub

grub的启动参数,如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中。

转载于:https://www.cnblogs.com/fangyuan1004/p/4091737.html

你可能感兴趣的文章
第二次作业(WordCount)重制版
查看>>
vim 学习
查看>>
FreeBSD从零开始---安装后配置
查看>>
结构体数组 and 结构体数组大小的内存
查看>>
1078. Hashing (25)
查看>>
ios开发所有的iCON 的大小
查看>>
20171108h5的文档扫尾,解决记录的相关问题
查看>>
go语言基础教程2
查看>>
单例模式的优化之路(java)
查看>>
当一个DBA离职时,如何清除掉数据库里属于他的那些“东西” (job所有者更新)...
查看>>
struts2学习笔记--总结获取servletAPI的几种方式
查看>>
design pattern notes [1] - Bridge and composite
查看>>
TCP 的那些事儿(上) SACK
查看>>
jquery 时间运算、格式化的方法扩张
查看>>
C语言中各种进制的表示
查看>>
打印数组
查看>>
删除菜品
查看>>
如何不让DataGridView自动生成列
查看>>
不用写代码的框架 - RobotFramework+Eclispe环境安装篇
查看>>
Android Studio占用C盘内存
查看>>