Linux開機程序 Linux開機流程 Runlevel /etc/inittab Redhat 設定開機啟動的工具 Trace runlevel 5的開機程序
Linux開機流程 系統載入並執行MBR,啟動grub、lilo或 spfdisk等開機管理程式 透過grub、lilo等程式,讀取、載入並啟動 linux kernel: /boot/vmlinuz。 kernel載入後,先檢查、探測(probe)各項 硬體與週邊裝置(硬碟、光碟.....) mount root paration 啟動init這個程序(pid=1),該程序受到 /etc/inittab的控制
Linux開機細節 Linux載入Kernel的過程中,只會mount 根目 錄,而且是以唯讀的方式mount。 系統會檢查 initrd來製作RAM DISK協助開機 man initrd Boot loader 先mount /dev/initrd,再啟動 kernel取得更多驅動程式。 如果/dev/initrd製作的根目錄中有linuxrc,就 執行之 掛載正常的根目錄,開始執行 Single User Mode是用來維修的(如何設定密 碼?)
runlevel 0,1,6是特別被保留下來的 0用來停止系統 6用來reboot系統 1用來當single user mode 3通常用在多人使用模式,5用在GUI模式 在Linux中runlevel 7-9 也可以用,不過傳統的Unix 不能使用 runlevel ABC,只是所謂的on demand runlevel , 並不會真正的切換過去,只是會執行inittab定義的 東西後,又回到原來的 runlevel
/etc/inittab (一) 格式為 id:runlevels:action:process id:1到4個字元,識別用。runlevels:指示該 命令在那個runlevel生效,action:行動, process:那一個程序 action:只列出常用的 respawn:程序結束就重新啟動 initdefault:定義系統開機後的run level sysinit:下一張詳細描述 wait:進入這個runlevel時執行一次,init會等 這個程序執行結束才進行下一個動作。 ctrlaltdel:壓下ctrlaltdel
/etc/inittab (二) sysinit:定義系統開機的初始化動作,init最早 執行的命令 Fedora /etc/rc.d/rc.sysinit mount /proc,設定系統時間,初始化usb與 硬碟,處理fsck與quota,啟動swap partitions, mount local filesystems /etc/rc.d/rc runlevel 用來看runlevel執行 rcx.d 底下的script S開頭啟動、K開頭停止 一般都是soft link /etc/rc.d/init.d 裡面的 script到/etc/rc.d/rcx.d底下
/etc/inittab (三) init.d 目錄底下的 script用來控制應用程式的啟 動、停止 例如:sendmail 有stop start reload status restart 等命令(測試看看) 在Fedora的rcn.d 底下都有一個S99local link 到 /etc/rc.d/rc.local 是拿來做BSD形式的系統 啟動控制的。只要把指令加在這裡,就會在開 機的最後去執行此指令。 靠rc去執行S99local
Fedora設定開機啟動的工具 chkconfig 來設定單一daemon開機是否啟動 chkconfig --del sendmail 該RUN LEVEL開 機不啟動sendmail chkconfig --add sendmail 該RUN LEVEL開 機啟動sendmail chkconfig --list 列出該RUN LEVEL的啟動狀 況 serviceconf:X WINDOWS下的設定程式 與ntsysv:Terminal下的設定程式
Trace runlevel 5的開機程序 boot rc.sysinit /etc/rc.d/rc5.d/S* rc.local