Linux基礎(chǔ)(7)-Linux啟動(dòng)

linux操作系統(tǒng)啟動(dòng)流程

  1. POST系統(tǒng)
    X86平臺(tái)硬件被設(shè)計(jì)成一旦通電會(huì)自動(dòng)運(yùn)行ROM中的程序,所以當(dāng)主機(jī)加電時(shí),CPU尋址ROM,使存放于ROM中的POST系統(tǒng)運(yùn)行,該系統(tǒng)用于硬件自檢,內(nèi)容包括檢查內(nèi)存,I/O設(shè)備是否存在,顯示設(shè)備是否存在等,如果正常,則進(jìn)入下一步。

  2. Boot Sequence
    加電自檢完成后,位于ROM中的BIOS系統(tǒng)運(yùn)行,BIOS為基本輸入輸出系統(tǒng),此時(shí)BIOS中的Boot Sequence會(huì)按次序查找各引導(dǎo)設(shè)備,其中第一個(gè)有bootloader(引導(dǎo)程序)的設(shè)備即為本次啟動(dòng)要用到的設(shè)備,BIOS會(huì)讀取該設(shè)備的MBR,MBR即為Master Boot Record,大小為512bytes,其中前446bytes為bootloader,之后46bytes為分區(qū)表,后2bytes為魔術(shù),當(dāng)標(biāo)記55AA時(shí)即表示MBR有效,否則無(wú)效。

  3. BootLoader
    現(xiàn)Linux用GRUB作為bootloader,GRUB分為兩段,1st stage為bootloader,用于把第二階段加載到內(nèi)存從而完整實(shí)現(xiàn)更多功能,2nd stage 即為存放于內(nèi)核中的/boot/grub,其中1.5stage可做為文件系統(tǒng)驅(qū)動(dòng),使文件系統(tǒng)中的2nd stage可以被識(shí)別。UEFI與GPT分區(qū)格式不同于MBR。

  4. Kernel
    通過(guò)GRUB會(huì)加載內(nèi)核程序到內(nèi)存中,首先內(nèi)核會(huì)自身初始化,探測(cè)可識(shí)別到的所有硬件設(shè)備,在內(nèi)存上劃出臨時(shí)根ramdisk,并轉(zhuǎn)換為基于fs的文件系統(tǒng)來(lái)防止雙緩沖,通過(guò)該系統(tǒng)加載硬件所需要的驅(qū)動(dòng)。

  5. rootfs
    有了臨時(shí)根,有了驅(qū)動(dòng),就可以以只讀方式掛載硬件上的真正的根文件系統(tǒng),使用只讀方式是為了防止因內(nèi)核BUG等原因造成破壞。 有了根文件系統(tǒng),將會(huì)啟動(dòng)用戶(hù)空間的第一個(gè)應(yīng)用程序init程序,其中CentOS7使用Systemd作為第一個(gè)程序

  6. init
    init程序?qū)⒆x取/etc/inittab文件中的配置,根據(jù)運(yùn)行級(jí)別,運(yùn)行對(duì)應(yīng)的腳本程序來(lái)開(kāi)啟或關(guān)閉對(duì)應(yīng)的服務(wù)程序。其中系統(tǒng)初始化腳本為/etc/rc.d/rc.sysinit,該文件配置了
    (1) 設(shè)置主機(jī)名;hostname
    (2) 設(shè)置歡迎信息
    (3) 激活udev和selinux;
    (4) 掛載/etc/fstab文件中定義的所有文件系統(tǒng);
    (5) 檢測(cè)根文件系統(tǒng),并以讀寫(xiě)方式重新掛載根文件系統(tǒng); (之前是只讀掛載)
    (6) 設(shè)置系統(tǒng)時(shí)鐘; (讀取硬件時(shí)鐘實(shí)現(xiàn))
    (7) 根據(jù)/etc/sysctl.conf文件來(lái)設(shè)置內(nèi)核參數(shù);
    (8) 激活lvm及軟raid設(shè)備;
    (9) 激活swap設(shè)備;(fstab已包含)
    (10) 加載額外設(shè)備的驅(qū)動(dòng)程序;
    (11) 清理操作;

  • 運(yùn)行級(jí)別:
    分為7個(gè)級(jí)別,分別為0-6
    0:關(guān)機(jī), shutdown
    1:?jiǎn)斡脩?hù)模式(single user),root用戶(hù),無(wú)須認(rèn)證;維護(hù)模式;
    2、多用戶(hù)模式(multi user),會(huì)啟動(dòng)網(wǎng)絡(luò)功能,但不會(huì)啟動(dòng)NFS(網(wǎng)絡(luò)文件系統(tǒng));維護(hù)模式;
    3、多用戶(hù)模式(mutli user),完全功能模式;文本界面;
    4、預(yù)留級(jí)別:目前無(wú)特別使用目的,但習(xí)慣以同3級(jí)別功能使用;
    5、多用戶(hù)模式(multi user), 完全功能模式,圖形界面;
    6、重啟,reboot
    開(kāi)機(jī)默認(rèn)級(jí)別為:3或 5

grub啟動(dòng)引導(dǎo)程序配置及命令行接口詳解

  • grub的命令行接口
    • help: 獲取幫助列表

    • help KEYWORD: 詳細(xì)幫助信息

    • find (hd#,#)/PATH/TO/SOMEFILE:查找文件

    • root (hd#,#) 設(shè)定根設(shè)備

    • kernel /PATH/TO/KERNEL_FILE: 內(nèi)核文件路徑

      • 內(nèi)核通常為vmlinuz,z表示是壓縮格式存放
      • 設(shè)定本次啟動(dòng)時(shí)用到的內(nèi)核文件;額外還可以添加許多內(nèi)核支持使用的cmdline參數(shù);
      • 例如:init=/path/to/init, selinux=0
    • initrd /PATH/TO/INITRAMFS_FILE:

      • 設(shè)定為選定的內(nèi)核提供額外文件的ramdisk;
      • 需要與內(nèi)核版本號(hào)完完全全匹配
    • boot: 引導(dǎo)啟動(dòng)選定的內(nèi)核;

    • 手動(dòng)在grub命令行接口啟動(dòng)系統(tǒng):

          grub> root (hd#,#)
          grub> kernel /vmlinuz-VERSION-RELEASE ro root=/dev/DEVICE
          grub> initrd /initramfs-VERSION-RELEASE.img
          grub> boot

grub配置文件

  • 配置文件:/boot/grub/grub.conf
    配置項(xiàng):

    • default=#: 設(shè)定默認(rèn)啟動(dòng)的菜單項(xiàng);落單項(xiàng)(title)編號(hào)從0開(kāi)始;
    • timeout=#:指定菜單項(xiàng)等待選項(xiàng)選擇的時(shí)長(zhǎng);(超時(shí)時(shí)間,超時(shí)則選擇默認(rèn)菜單項(xiàng))
    • splashimage=(hd#,#)/PATH/TO/XPM_PIC_FILE:指明菜單背景圖片文件路徑;xpm格式,只能使用14位色,默認(rèn)的圖片需要800*600分辨率才能顯示,可以替換為更小的,使用gimp可以編輯圖片
    • hiddenmenu:隱藏菜單;
    • password [--md5] STRING: 菜單編輯認(rèn)證;設(shè)定認(rèn)證方式,匹配才可以編輯
    • title TITLE:定義菜單項(xiàng)“標(biāo)題”, 可出現(xiàn)多次;
      • root (hd#,#):grub查找stage2及kernel文件所在設(shè)備分區(qū);為grub的“根”;
      • kernel /PATH/TO/VMLINUZ_FILE [PARAMETERS]:?jiǎn)?dòng)的內(nèi)核
      • initrd /PATH/TO/INITRAMFS_FILE: 內(nèi)核匹配的ramfs文件;
      • password [--md5] STRING: 啟動(dòng)選定的內(nèi)核或操作系統(tǒng)時(shí)進(jìn)行認(rèn)證;
  • grub-md5-crypt命令:生成要保護(hù)的密碼串,將密碼串貼到--md5 密碼串,這要配置文件里的密碼就不會(huì)明文暴露

  • 進(jìn)入單用戶(hù)模式:
    • (1) 編輯grub菜單(選定要編輯的title,而后使用e命令);
    • (2) 在選定的kernel后附加
    • 1, s, S或single都可以;
    • (3) 在kernel所在行,鍵入“b”命令;

實(shí)現(xiàn)kickstart文件制作與光盤(pán)鏡像制作

kickstart文件的格式

  • 命令段:
    • 指定各種安裝前配置選項(xiàng),如鍵盤(pán)類(lèi)型等;
      • 必備命令
      • 可選命令
    • 程序包段:
      • 指明要安裝程序包,以及包組,也包括不安裝的程序包;
        • %packages 程序包段開(kāi)始
        • @group_name 安裝的包組
        • package 安裝的包
        • -package 不安裝的,也可能因?yàn)橐蕾?lài)而被安裝
        • %end 程序包段結(jié)束
  • 腳本段:
    • %pre:安裝前腳本
      • 運(yùn)行環(huán)境:運(yùn)行安裝介質(zhì)上的微型Linux系統(tǒng)環(huán)境;
    • %post:安裝后腳本
      • 運(yùn)行環(huán)境:安裝完成的系統(tǒng);

命令段中的必備命令:

authconfig:認(rèn)證方式配置,本地認(rèn)證配置,基于shadow

authconfig  --enableshadow  --passalgo=sha512

bootloader:定義bootloader的安裝位置及相關(guān)配置,--append=補(bǔ)充參數(shù)

bootloader  --location=mbr  --driveorder=sda  --append="crashkernel=auto rhgb quiet"

keyboard:設(shè)置鍵盤(pán)類(lèi)型

keyboard us

lang:語(yǔ)言類(lèi)型

lang  zh_CN.UTF-8

part:分區(qū)布局;以及分區(qū)使用方式,默認(rèn)被注釋?zhuān)J(rèn)單位mb,pv為固定前綴

part  /boot  --fstype=ext4  --size=500
part  pv.008002  --size=51200

rootpw:管理員密碼

rootpw   --iscrypted  $6$4Yh15kMGDWOPtbbW$SGax4DsZwDAz4201.O97WvaqVJfHcISsSQEokZH054juNnoBmO/rmmA7H8ZsD08.fM.Z3Br/67Uffod1ZbE0s.

timezone:時(shí)區(qū)

timezone  Asia/Shanghai

clearpart:清除分區(qū)

clearpart  --none
 --drives=sda:清空磁盤(pán)分區(qū);

volgroup:創(chuàng)建卷組

volgroup  myvg  --pesize=4096  pv.008002

logvol:創(chuàng)建邏輯卷

logvol  /home  --fstype=ext4  --name=lv_home  --vgname=myvg  --size=5120

生成加密密碼的方式:生成4個(gè)字節(jié)8位16進(jìn)制數(shù)為隨機(jī)數(shù)

~]# openssl  passwd  -1  -salt `openssl rand -hex 4`

命令段中的可選命令:

install OR upgrade:安裝或升級(jí);

text:

    安裝界面類(lèi)型,text為tui,默認(rèn)為GUI,單獨(dú)成行,不需要參數(shù)  

network:配置網(wǎng)絡(luò)接口,自動(dòng)dhcp

network  --onboot yes  --device eth0  --bootproto dhcp  --noipv6

firewall:防火墻

firewall  --disabled

selinux:SELinux安全加強(qiáng)的策略庫(kù)

selinux --disabled

repo:指明安裝時(shí)使用的repository;

repo  --name="CentOS"   --baseurl=cdrom:sr0  --cost=100

url: 指明安裝時(shí)使用的repository,但為url格式;

url --url=http://172.16.0.1/cobbler/ks_mirror/CentOS-6.7-x86_64/

halt、poweroff或reboot:安裝完成之后的行為;

    參考官方文檔:《Installation Guide》

定制kickstart文件:

# yum install  system-config-kickstart
# system-config-kickstart

通過(guò)該程序界面可以配置上面所有選項(xiàng)

創(chuàng)建光盤(pán)鏡像:

~]# 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/
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容