Linux學習筆記之Linux引導流程解析 1、Linux引導流程:frimeware--bootloader--kernel--init--/etc/inittab--initdefault--/etc/rc.d/rc.sysinit--/etc/rc.d/rc/--/etc/rc.d/rcN.d(N代表0~6的數字)--username--password www.2cto.com ->韌體firmware(CMOS/BIOS) -->POST加電自檢 MBR:Master Boot Record主引導記錄 位於0柱面0磁頭1扇區 裡面儲存了 Bootloader(引導載入程式)、Partition table(分區表)、Magic Number(結束標記) ->自舉程式BootLoader(GRUB) -->載入核心 BootLoader(GRUB):相當於windows作業系統的NTLDR,其配置問價為boot.ini。在linux裡面也有一個這樣的自啟動程式就是GRUB,其設定檔vi /etc/grub.conf 這是/boot/grub/grub.conf的符號連結檔案 www.2cto.com "kernel /boot/vmlinuz-2.6.32-279.el6.i686"其中vmlinuz-2.6.32為核心的版本號碼,其中6表示該作業系統為正式版,奇數為測試版,偶數為正式版 可以使用uname -r 查看linux系統的版本號碼 ->載入核心 Kernel ("kernel /boot/vmlinuz-2.6.32-279.el6.i686") -->核心只需要做兩件事情:1、驅動硬體,核心裡面有硬體的驅動程式。2、啟動一個進程,進程名字為init,也是系統啟動的第一個進程 init進程啟動後讀取inittab檔案,執行預設的運行層級,從而繼續引導過程。在UNIX系統中,init是第一個可以存在的進程,它的PID恒為1,但它也必須向一個更進階的進程負責:PID為0的核心調度器(Kernel scheduler),從而獲得CPU時間.可以使用 ps -le |more查看進程號 [root@CentOS-Test boot]# ps -le |more F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 4 S 0 1 0 0 80 0 - 718 - ? 00:00:02 init (是所有進程的父進程) 1 S 0 2 0 0 80 0 - 0 - ? 00:00:00 kthreadd ->啟動進程init ->讀取執行設定檔/etc/inittab inittab是init進程的設定檔。檔案位置 /etc/inittab。是linux的運行層級設定檔 運行層級相當於windows裡面的安全模式等等。 www.2cto.com 同步硬體和軟體的時鐘: 設定以硬體時鐘的時間設定系統時鐘 [root@CentOS-Test data]# hwclock --hctosys 設定以系統時鐘時間設定硬體時鐘 [root@CentOS-Test data]# hwclock --systohc 設定系統時鐘: [root@CentOS-Test data]# date -s "2012-11-21 12:01:25" 2、Linux運行層級 使用grep -v "^#" /etc/inittab去掉注釋去查看inittab設定檔 [root@CentOS-Test etc]# grep -v "^#" /etc/inittab |more (#是要排除的行) id:5:initdefault:
或者使用vi命令進行修改 vi /etc/inittab # Default runlevel. The runlevels used are: # 0 - halt (Do NOT set initdefault to this) //表示關機 # 1 - Single user mode //單一使用者模式,類似於windows的安全模式。只有root可以登入。沒有圖形介面。是一種修複模式 # 2 - Multiuser, without NFS (The same as 3, if you do not have networking)//多使用者模式,無網路檔案系統,不能實現Linux和Unix的檔案分享權限設定 # 3 - Full multiuser mode//全功能下的多使用者模式 # 4 - unused //沒有在使用的,只啟動自己需要的服務 # 5 - X11 //是系統預設的運行層級。是圖形介面環境的運行層級 # 6 - reboot (Do NOT set initdefault to this) //系統重啟,不能將此運行層級設定為預設的運行層級 # id:5:initdefault: id:當前的運行層級 initdefault:預設的運行層級 查看當前的運行層級:runlevel [root@CentOS-Test etc]# runlevel 3 5 切換當前的運行層級:telinit或init(telinit是init的一個連結) init 1 init3 init 5