linux操作系統常規啓動流程:
POST-->BIOS(boot sequence)-->MBR(bootloader(512,446))-->Kernel-->initramfs-->init
MBR(bootloader)詳述:
GRUB:GRand Unified Bootloader 比較流行的啓動引導程序,突破了446字節的限制
Stage1:MBR 主要目的爲了引導第二階段
Stage1_5: 用來識別常見的不同的 文件系統 的
Stage2: 位於內核所在的分區,/boot/grub/(這是一個基本磁盤分區,肯定能訪問的)
GRUB的配置文件:
/boot/grub/grub.conf
#boot=/dev/sda
default=0 #默認啓動的title的編號
timeout=5
splashp_w_picpath=(hd0,0)/grub/splash.xpm.gz #指定grub的背景圖片
hiddenmenu #隱藏菜單
#password --md5 密碼串 #通過grub-md5-crypt命令生成密文密碼串(防止編輯GRUB)
title CentOS 6 (2.6.32-573.el6.x86_64) #內核或操作系統的標題可自由修改
root (hd0,0) #內核文件所在的設備,對grub而言,硬盤識別爲hd(磁盤,分區)
kernel /vmlinuz-2.6.32-573.el6.x86_64 ro root=/dev/mapper/VolGroup-lv_root rd_NO_LUKS LANG=en_US.UTF-8 rd_NO_MD rd_LVM_LV=VolGroup/lv_swap SYSFONT=latarcyrheb-sun16 crashkernel=auto rd_LVM_LV=VolGroup/lv_root KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet #內核路徑及傳遞給內核的參數,/boot是獨立分區的,grub直接
訪問的分區而不是通過文件系統訪問的,所以內核路徑在/vmlinux
#password --md5 密碼串 #(啓動內核需要密碼)
initrd /initramfs-2.6.32-573.el6.x86_64.img #ramdisk文件路徑(操作系統安
裝過程最後一步生成的;ramdisk與內核版本要保持一致)
GRUB的使用:
安裝grub stage1:
# grub
grub> root (hd0,0)
grub> set (hd0)
安裝grub第二種方式:
# grub-install --root-directory=/path/to/boot的父目錄 /PATH/TO/DEVICE
GRUB配置文件丟失後:
啓動進入grub命令行
grub> find(hd0,0)/ 查看分區下都有什麼問題件
grub> kernel /PATH/TO/KERNEL_FILE
grub> initrd /PATH/TO/INITRD_FILE
grub> boot
kernel初始的過程:
1、設備探測
2、驅動初始化(可能會從initramfs文件中裝載驅動模塊)
3、以只讀掛載根文件系統:
4、裝載第一個進程init(PID:1)
/sbin/init: (配置文件/etc/inittab,centos5是順序啓動的很慢,centos6文件被切割了)
upstart: 並行啓動,基於envent-drive事件驅動d-bus (/etc/init/*.conf很多配置文件)
systemd: 並行啓動
/etc/rc.d/rc.sysinit完成的任務:
1、激活udev和selinux
2、根據/etc/sysctl.conf文件,來設定內核參數;
3、設定時鐘;
4、裝載鍵盤映射;
5、啓用交換分區;
6、設置主機名;
7、根文件系統檢測,並以讀寫方式重新掛載;
8、激活RAID和LVM設備;
9、啓用磁盤配額;
10、根據/etc/fstab,檢查並掛載其他文件系統;
11、清理過期的鎖和PID文件;