linux启动过程详解

      想添添东西,使内容丰富一些。对linux的启动过程做一个整体的理解。
     现在以rhel6-x86_64我参考。
启动过程可以理解为,权限的移交过程。BIOS->BOOT loder->linux _init 整个交接分为三个部分。
权限移交之一:BISO
BIOS就不介绍咯,biso不认识系统,自检完懒得去认你,所以就叫loader程序把系统资源一脚给操作系统。

权限移交之二:引导转载程序组件
   引导装载程序
一:容量小,位于 MBR ,或者引导部分
二:从引导分区装载
对于 Linux 的最低要求:(换句话说,就是grub要启动系统至少要有/boot下的内核,初始化ram(initrd)因为里面装了进入系统的必备驱动等;确定内核后一定只能根文件系统的位置)
标签:内核位置: os 根文件系统:初始化的 ram(initrd)
提示:其实就是grub.conf写的东西。这个对于grub的操作会有更深的理解。从grub引导Linux就是需要这些参数。

对其他的系统要求
引导装置,标签。 //比如说wins 在grub.conf里的写法。
装载程序负责在计算机启动时启动您的 linux 或其他系统。

调用装载程序的两种方法;
第一:就是 BISO 自检完将控制权交给你 mbr 上的初始化引导装载程序( initial program loader)LPL GRUB );
第二就是: BISO 自检完交给另一个装载程序,这个程序将控制权交给安装在部分分区上的 lpl(grub)
配置装载程序的两种方式:
在第一阶段的引导:将 linux 的引导装载工具直接安装在 MBR(446 字节内)中,引导装载程序的配置必须让它可以把控制权交给需要的操作系统。
第二阶段的引导:将安装引导程序的第一阶段安装在某个分区引导部分。但是在 mbr 中必须安装另一个引导安装程序,其配置允许叫控制权交给我的 linux 的引导装载程序。(就是不要叫 grub 写到 sda 上而是写在 sdan 的某个分区上,这时候要在 mb 上装上另一个 grub 不然第一阶段过不去)(双重grub)
 
GRUB grub.conf
grub 的配置文件 /boot/grub/grub.conf
       首先:要明确系统有没有 boot 分区。没有的话直接跟 / 分区联系。 boot 分区的话 /boot/ 分区
      如果 /dev/hda 中的 mbr 坏了的话,要重新安装 /sbin/grub-install /dev/hda
     要将 grub-md5-crypt 生成的密文写入 grub.conf 中,加上
password  --md5  $1$IK2Ac0$w/TTS.1CM51dYkqmc7bip1
配置 grub.conf 会立即生效。
 
加密过后的 grub 要按 P 键输入密码才能进入 grub 菜单编辑模式。   e 是编辑, d 是删除, b 是启动。
 
内核初始化步骤, /var/log/dmesg
     调用编译在内核里的驱动,并试图选找和他们对应的设备。找到了驱动就初始话设备;如果的必要的驱动程序被编译成模块而不是直接编译在内核里,那么一定要在 initrd 里,内核然后会挂载这个映像文件临时挂在 ram 里,以便初始化进程使用该模块。
所有的驱动都装载完以后,内核会以只读的方式挂载根文件系统。
第一个进程( init )被装载后控制从这个内核到这个进程。
ps:如果想看到这个初始化过程可以修改一下grub.conf的参数,这些参数都是传给内核的。kernel /vmlinuz-2.6.32-71.el6.x86_64.debug ro root=/dev/mapper/vg_studnet20-LogVol00  rhgb quiet //把quiet 去掉就可看到了哦。重启就可以看到了,或者在启动机器的时候在grub引导的时候去掉这个参数。


   用户接口阶段
init 初始化
A:初始化运行级别;
B:系统初始化脚本;
C:对应运行级别的脚本目录;
D:捕获某个关键字顺序;
F:定义 UPS 电源中断 / 恢复脚本;
G:虚拟控制台生成 getty;
H:运行级别 5 初始化;
 
A:读其初始化文件 /etc/inittab
系统运行级别:
0:halt (do not set initdefault to this)
1:sample user mode
2:multiuser mode ,no nfs (the same as 3 ,if you do no have networking )
3:multiuser mode
4:unused
5: X11+3
6:restart (do not set initdefault to this)
s ,S,single 备用单用户。
Emergency 绕过 rc.sysinit,nologin
#N is runlevel num
id:N:initdefault:
选定运行级别:
方法1:修改 /etc/inittab
方法2:给引导转载程序一个参数;
#init new_runlevel
 
注意:如果 /etc/inittab 文件丢失,那么必须进入单人模式或者是紧急模式。
#pstree   //init 总是第一个进程 .
 
 
B:/etc/rc.d/rc.sysinit

1:激活 udev,selinux
2:在 /etc/sysyctl.conf 设定内核参数。
3:设定系统时间
4:装载按键设置
5:启用交换分区
6 :  设置主机名
7:检查并重新挂载跟文件系统
8 :   激活 raid lvm
9 :启用磁盘配额
10 :  清理过时的锁和
pid 文件
 
 
C:/etc/rc.d/rcX.d
每个运行配备都有运行的目录
/etc/rc.d/init.d
运行级别文件目录中 的符号链接到这个目录中的对应文件使用 start stop 参数调用 init.d
 
指定运行级别脚本后运行
通常可以运行自定义修改。
 
  
 
 
 

本文出自 “kikupotter” 博客,转载请与作者联系!

你可能感兴趣的:(linux,grub,linux启动过程)