linux作業系統啟動流程和光碟映象製作
阿新 • • 發佈:2018-11-24
1、簡述linux作業系統啟動流程
POST (加電自檢):自檢主要硬體裝置如:CPU、記憶體、硬碟是否正常,以及輸入輸出裝置是否存在問題等。 BIOS(Boot Sequence):BIOS(基本的輸入輸出系統)裝載在硬體晶片CMOS之上,自檢時會啟動這個程式,並根據CMOS上的配置資訊去讀取其他的硬體資訊,檢測正常之後進行硬體裝置的初始化。 讀取MBR:引導載入程式,在MBR(主引導記錄)中,主要功能是識別,載入系統的核心檔案,並提交到記憶體中執行來啟動對應的系統。 Kernel執行:Kernel會自身初始化,探測可識別的硬體裝置,Kernel是存在硬碟之中的,但是在核心啟動時還沒有載入硬碟,為了解決這個問題Kernel核心通過ramdisk(虛擬檔案系統)來載入硬體程式,為防止根檔案系統載入時出現bug等問題無法挽回的情況,以只讀方式來掛載根檔案系統,來完成跟檔案系統的初始化。 init執行:在核心、硬體及驅動資訊載入完畢後,核心會執行使用者空間的第一個應用程式:/sbin/init.包括系統的主機名、網路管理、檔案系統格式等其他服務。 預設執行級別、系統初始化、關閉及啟動服務、啟動終端(圖形終端): 執行級別:為了系統的執行或維護等目的而設定的機制; 0-6:7個級別; 0、關機, shutdown 1、單使用者模式(single user),root使用者,無須認證;維護模式; 2、多使用者模式(multi user),會啟動網路功能,但不會啟動NFS;維護模式; 3、多使用者模式(mutli user),完全功能模式;文字介面; 4、預留級別:目前無特別使用目的,但習慣以同3級別功能使用; 5、多使用者模式(multi user), 完全功能模式,圖形介面; 6、重啟,reboot 預設級別:3, 5 級別切換:init # 級別檢視: who -r runlevel 系統初始化指令碼:/etc/rc.d/rc.sysinit (1) 設定主機名; (2) 設定歡迎資訊; (3) 啟用udev和selinux; (4) 掛載/etc/fstab檔案中定義的所有檔案系統; (5) 檢測根檔案系統,並以讀寫方式重新掛載根檔案系統; (6) 設定系統時鐘; (7) 根據/etc/sysctl.conf檔案來設定核心引數; (8) 啟用lvm及軟raid裝置; (9) 啟用swap裝置; (10) 載入額外裝置的驅動程式; (11) 清理操作; 系統初始化時執行的指令碼在/etc/rc.d/rc.sysinit配置檔案中;關閉及啟動服務意味著啟動或關閉/etc/rc.d/rc#.d/目錄下的服務指令碼所控制的服務,最後就是啟動終端(圖形終端)了
2、簡述grub啟動載入程式配置及命令列介面詳解
grub的三個階段:
stage 1:執行bootloader主程式,這個程式必須要被安裝在MBR中
stage 1_5:在MBR隨後的扇區中存放,主要用於與stage2所在分割槽的檔案系統進行互動
stage 2:讀取 grub.conf 配置檔案,並實現引導功能的擴充套件
grub配置檔案:/boot/grub/grub.conf
defaule: 表示有多個grub引導選單時,選擇哪一個作為預設啟動引導選單; defaule=0:表示預設選擇第一個選項進行配置 ; timeout: 表示選擇選單的時間,如果過了這個時間沒有選擇則表示使用預設選項 ; splashimage: 指定引導選單中的背景圖片的路徑 ; titile: 指定選項的名稱 ; root: 表示kernel和initrd檔案所在的分割槽路徑,而不是”根分割槽”;其格式為; kernel: 通常是用於指定要執行的核心檔案路徑,如:/vmlinuz-2.6.32-642.el6.x86_64;另外也可在其後設定相關的核心引數,如:ro表示只讀,root表示指定根分割槽所在路徑,關閉selinux等等; initrd: 為核心執行指定其可用的ramdisk檔案,其版本須和核心版本一致;
grub常用的指令:
help:檢視命令幫助;
root (DEVICE):指定系統和核心檔案所在的分割槽,如root(hd0,0)。
find (hd0,0) /path/to/file:用於查詢對應分割槽下的檔案。常用於當不確認核心檔案在哪個分割槽時,可使用此命令確認檔案所在路徑;支援tab補全;
kernel /path/to/kernel_file:用於指定要執行的核心檔案。
initrd /path/to/kernel_file:指定initrd檔案;
boot:以當前配置好的grub配置啟動系統;
3、
定製kickstart 檔案:
[[email protected] ~]# yum install system-config-kickstart
檢查語法錯誤:
[[email protected] ~]# ksvalidator anaconda-ks.cfg
準備目錄,複製光碟內容到該目錄中:
[[email protected] ~]# mkdir /tmp/cdrom
[[email protected] ~]# mkdir /media/cdrom
[[email protected] ~]# mount -r -t iso9660 /dev/cdrom /media/cdrom
[[email protected] ~]# cp -r /media/cdrom/ /tmp/cdrom/
[[email protected] ~]# cd /tmp/cdrom/
[[email protected] cdrom]# cd cdrom/
[[email protected] ~]# chmod u+w isolinux/*
將ks.cfg檔案拷貝到/tmp/cdrom中
[[email protected] cdrom]# cp /root/ks.cfg /tmp/cdrom
建立iso映象
[root[email protected] cdrom]# mkisofs -R -J -T -v --no-emul-boot --boot-load-size 4 --boot-info-table -V "CentOS 6 x86_64 boot" -c isolinux/boot.cat -b isolinux/isolinux.bin -o /root/boot.iso cdrom/