Linux系統啟動流程及grub重建(1)


日志系統

Linux系統啟動流程

PC: OS(Linux)

POST-->BIOS(Boot Sequence)-->MBR(bootloader,446)-->Kernel-->initrd-->(ROOTFS)/sbin/init(/etc/inittab)


啟動的服務不同:
    運行級別:0-6
        0:halt
        1: single user mode, 直接以管理員身份切入, s,S,single
        2:multi user mode, no NFS
        3: multi user mode, text mode
        4:reserved
        5: multi user mode, graphic mode
        6: reboot

詳解啟動過程
    bootloader(MBR)
        LILO: LInux LOader
        GRUB: GRand Unified Bootloader
            Stage1: MBR
            Stage1_5:
            Stage2: /boot/grub/

grub.conf            

default=0  # 設定默認啟動的title的編號,從0開始
timeout=5  # 等待用戶選擇的超時時長,單位是秒
splashimage=(hd0,0)/grub/splash.xpm.gz  # grub的背景圖片
hiddenmenu # 隱藏菜單
password redhat
password --md5 $1$HKXJ51$B9Z8A.X//XA.AtzU1.KuG.    (說明:使用grub-md5-crypt雜質加密)
title Red Hat Enterprise Linux Server (2.6.18-308.el5)  # 內核標題,或操作系統名稱,字符串,可自由修改
    root (hd0,0)  # 內核文件所在的設備;對grub而言,所有類型硬盤一律hd,格式為(hd#,N);hd#, #表示第幾個磁盤;最后的N表示對應磁盤的分區;
    kernel /vmlinuz-2.6.18-308.el5 ro root=/dev/vol0/root rhgb quiet   # 內核文件路徑,及傳遞給內核的參數
    initrd /initrd-2.6.18-308.el5.img # ramdisk文件路徑
    password --md5 $1$HKXJ51$B9Z8A.X//XA.AtzU1.KuG.
title Install Red Hat Enterprise Linux 5
    root (hd0,0)
    kernel /vmlinuz-5 ks=http://172.16.0.1/workstation.cfg ksdevice=eth0 noipv6
    initrd /initrd-5
    password --md5 $1$FSUEU/$uhUUc8USBK5QAXc.BfW4m.



查看運行級別:
runlevel:
who -r

查看內核release號:
    uname -r


破壞grub,bootloader
dd if=/dev/zero of=/dev/sda count=1 bs=400
sync 同步到磁盤

    
安裝grub stage1:
# grub
grub> root (hd0,0)
grub> set (hd0)

安裝grub第二種方式:
# grub-install --root-directory=/path/to/boot's_parent_dir  /PATH/TO/DEVICE

grub.conf文件損壞
grub> find
grub> root (hd#,N)
grub> kernel /PATH/TO/KERNEL_FILE
grub> initrd /PATH/TO/INITRD_FILE
grub> boot
啟動后重建grub.conf



Kernel初始化的過程:
1、設備探測
2、驅動初始化(可能會從initrd(initramfs)文件中裝載驅動模塊)
3、以只讀掛載根文件系統;
4、裝載第一個進程init(PID:1)


/sbin/init:(/etc/inittab)
    upstart: ubuntu, d-bus, event-driven
    systemd:

id:runlevels:action:process
id: 標識符
runlevels: 在哪個級別運行此行;
action: 在什么情況下執行此行;
process: 要運行程序;

id:3:initdefault:

si::sysinit:/etc/rc.d/rc.sysinit    


ACTION:
initdefault: 設定默認運行級別
sysinit: 系統初始化
wait: 等待級別切換至此級別時執行
respawn: 一旦程序終止,會重新啟動



/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文件;



for I in /etc/rc3.d/K*; do
  $I stop
done

for I in /etc/rc3.d/S*; do
  $I start
done




##: 關閉或啟動的優先次序,數據越小越優先被選定
先關閉以K開頭的服務,后啟動以S開頭的服務;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM