一、Linux操作系統啟動流程
- Linux操作系統的啟動流程為:POST(加電自檢)–> BIOS –> Bootloader –> kernel –> /sbin/init。
POST介紹:
POST(POST ON SELF TEST)開機自檢,主機接通電源后,系統進行的一個自我檢測的過程,對系統的幾乎所有的硬件設備進行檢測。如果必需的硬件被發現而且發現正在適當地工作,計算機開始啟動。如果硬件沒有被發現或者被發現工作不正常,根據問題的性質,基本輸出輸入系統(BIOS)發出一個錯誤信息,可能是在熒屏顯示的文本或一系列的特殊的蜂鳴聲。有些設備的存在與否不影響系統的正常啟動:如鍵盤、鼠標等。
BIOS介紹:
自檢的功能是由BIOS(BASIC INPUT OUTPUT SYSTEM)程序來實現的,即基本輸入輸出功能,它是裝在在硬件芯片CMOS之上。BIOS會列出一些可以啟動的裝置順序,隨后BIOS會讀取該引導設備中的MBR來進行系統啟動的下一階段。MBR為第一個可以啟動的硬盤的第一個扇區,即主引導記錄(Master Boot Record)。MBR大小為512bytes,前446bytes為bootloader,后64bytes為分區表,最后2bytes為結束標識;
GRUB介紹:
GRUB系統引導啟動工具,grub有兩個版本,0.x系列被稱為grub1,也被稱為grub legacy,centos5,6上使用的是0.x系列;1.x被稱為gurb2,用于centos7;grub分為3個階段: 1:Stage1的作用是啟動安裝在MBR中的bootloader主程序,其作用便是指向stage2,引導stage2運行; 2:Stage1.5作用為讓grub程序能夠識別grub2所在的分區?;蛟S你也已經發現,在/boot/grub目錄下有諸多以stage15結尾的文件,表示各種文件系統所對應的stage15,和stage1文件一樣,能夠讓grub識別stage2所在分區的文件不是這些,而是在系統安裝時,早已確定了stage2所在目錄的文件系統格式,并將與之對應的以stage1_5結尾的文件安裝至MBR之后的62個扇區內; 3:Stage2 作用:提供菜單、并提供交互式接口;加載用戶選擇的內核或操作系統,并允許傳遞參數給內核;提供菜單保護機制。
kernel介紹:
系統進入kernel階段,所有的硬件設備都已準備就緒,kernel進一步加載硬件驅動程序,在內存中生成臨時只讀的rootfs,運行用戶控件的第一個應用程序:/sbin/init。在Centos 6中系統的初始化程序是/sbin/init,但是到了Centos 7 則該用了systemd作為系統的初始化程序。
init初始化:
系統開始完成初始化,運行第一個程序init,init主要實現的功能為: (1) 設置主機名; (2) 設置歡迎信息; (3) 激活udev和selinux; (4) 掛載/etc/fstab文件中定義的所有文件系統; (5) 檢測根文件系統,并以讀寫方式重新掛載根文件系統; (6) 設置系統時鐘; (7) 根據/etc/sysctl.conf文件來設置內核參數; (8) 激活lvm及軟raid設備; (9) 激活swap設備; (10) 加載額外設備的驅動程序; (11) 清理操作;
Linux系統運行級別:
Linux系統共有7個運行級別:
運行級別0:系統停機狀態,系統默認運行級別不能設為0,否則不能正常啟動
運行級別1:單用戶工作狀態,root權限,用于系統維護,禁止遠程登陸
運行級別2:多用戶狀態(沒有NFS)
運行級別3:完全的多用戶狀態(有NFS),登陸后進入控制臺命令行模式
運行級別4:系統未使用,保留
運行級別5:X11控制臺,登陸后進入圖形GUI模式
運行級別6:系統正常關閉并重啟,默認運行級別不能設為6,否則不能正常啟動
運行級別的原理:
1:在目錄/etc/rc.d/init.d下有許多服務器腳本程序,一般稱為服務(service)
2:在/etc/rc.d下有7個名為rcN.d的目錄,對應系統的7個運行級別
3:rcN.d目錄下都是一些符號鏈接文件,這些鏈接文件都指向init.d目錄下的service腳本文件,命名規則為K+nn+服務名或S+nn+服務名,其中nn為兩位數字。
4:系統會根據指定的運行級別進入對應的rcN.d目錄,并按照文件名順序檢索目錄下的鏈接文件
對于以K開頭的文件,系統將終止對應的服務
對于以S開頭的文件,系統將啟動對應的服務
5:查看運行級別用:runlevel
6:進入其它運行級別用:init N
7:另外init0為關機,init 6為重啟系統
二、簡述grub啟動引導程序配置及命令行接口詳解
GNU GRUB(GRand Unified Bootloader)是一個多操作系統啟動程序;它允許用戶可以在計算機內同時擁有多個操作系統,并在計算機啟動時選擇希望運行的操作系統。GRUB可用于選擇操作系統分區上的不同內核,也可用于向這些內核傳遞啟動參數。GRUB主要分為三個步驟:stage1,stage1.5,stage2。
1:stage1:用于啟動Boot loader來加載stage2的內容至內存中;
2:stage1_5:其能夠識別內核和stage2所在的分區的文件系統格式類型,幫助引導stage2;
3:stage2:讀取grub.conf 配置文件,并實現引導功能的擴展;
Linux GRUB的配置文件放置于:/etc/grub.conf;/boot/grub/grub.conf上:
[root@localhost ~]# ll /etc/grub.conf /boot/grub/grub.conf
-rw-------. 1 root root 771 Apr 13 23:01 /boot/grub/grub.conf
lrwxrwxrwx. 1 root root 22 Mar 5 17:17 /etc/grub.conf -> ../boot/grub/grub.conf
GRUB配置文件信息如下:
default=0:表示有多個grub引導菜單時,選擇哪一個作為默認啟動引導菜單,default=0表示默認使用第一個title菜單中的配置;
timeout=5:在grub選擇菜單中,5秒內,如果用戶沒有選擇任何一個title,則使用default中指定的titile菜單中的配置進行啟動;
splashimage:指定引導菜單中的背景圖片的路徑;
titile:指定title菜單到的名稱;
root:表示kernel和initrd文件所在的分區路徑,而不是“根分區”;其設置格式為:root (hd#,#),硬盤均會被識別為hd,第一個#表示第幾個硬盤,從0開始;地第二個#表示同一個硬盤上的不同分區,也使用數字標識,從0開始;
kernel:通常用于指定要運行的內核文件路徑,如:/vmlinuz-2.6.32-642.el6.x86_64;另外也可在其后設置相關的內核參數,如:ro表示只讀,root表示指定根分區所在路徑,關閉selinux等等;
initrd:為內核運行指定其可用的ramdisk文件,其版本須與內核版本相一致;
系統開機過程中按任意鍵,即可進入 GRUB菜單界面:
GRUB命令行接口:
在菜單欄界面按c可進入grub命令行接口:
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配置啟動系統;
三、實現kickstart文件制作與光盤鏡像制作
kickstart主要用于實現自動安裝和配置的工作,通過使用kickstart,系統管理員能夠創建一個單獨的、包含安裝過程中遇到的所有問題答案的文件。kickstart文件能被存儲在服務器系統之上,機器在安裝系統的時候可以讀取該文件。在Centos系統中,完成系統安裝后,在root目錄下會生成一個名為anaconda-ks.cfg的kickstart文件。此文件即為配置自動安裝的腳本
- kickstart文件的組成部分包括三部分:命令段:用于配置系統安裝時除了軟件安裝以外的自動應答;
軟件包段,用于選擇系統安裝哪些packages,通常以%packages開頭,結尾;
腳本段,為可選段落,用于設置自動執行的腳本,可設置在安裝系統前或安裝系統后執行。
kictstart的參考配置如下:
install
cdrom
lang en_US.UTF-8
keyboard us
network --onboot no --device eth0 --bootproto dhcp --noipv6
rootpw --iscrypted $6$Sb9pJZSdPRxv6w2t$Knsn1j/sh6hZ7yDueCMkJWfj/JSE7xQ19ciEL1PToemsUaDqro0jJKA9Y1SrKYTp4gn4KLS72mviDrIwcuvtQ.
firewall --service=ssh
authconfig --enableshadow --passalgo=sha512
selinux --enforcing
timezone --utc Asia/Shanghai
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"
repo --name="CentOS" --baseurl=cdrom:sr0 --cost=100
%packages
@base
@core
@debugging
@basic-desktop
@desktop-debugging
@desktop-platform
@directory-client
@fonts
@general-desktop
@graphical-admin-tools
@input-methods
@internet-applications
@internet-browser
@java-platform
@legacy-x
@network-file-system-client
@office-suite
@print-client
@remote-desktop-clients
@server-platform
@server-policy
@workstation-policy
@x11
mtools
pax
python-dmidecode
oddjob
wodim
sgpio
genisoimage
device-mapper-persistent-data
abrt-gui
samba-winbind
certmonger
pam_krb5
krb5-workstation
libXmu
%end
光盤鏡像制作:
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 myboot/
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/95833