從UEFI到Systemd

起因

  • 20年年末做了一個(gè)小項(xiàng)目,涉及到了linux系統(tǒng)的全盤(pán)加密,
  • 在這個(gè)過(guò)程中回頭從鳥(niǎo)哥開(kāi)始悠轩,了解到了系統(tǒng)啟動(dòng)的冰山一角
  • 引起了興趣后決定深入挖掘一下:把從BIOS到linux啟動(dòng)的整個(gè)流程串起來(lái)
  • 也就是本文的主要內(nèi)容:從UEFI到Systemd

UEFI和BIOS

  • 知乎大佬所述档泽,BIOS與UEFI本質(zhì)是一類(lèi)東西

  • UEFI替代BIOS的過(guò)程,類(lèi)似電動(dòng)車(chē)替代燃油車(chē)的過(guò)程惨奕,是同類(lèi)東西的更新?lián)Q代

  • 而這更新?lián)Q代背后的一系列推動(dòng)邏輯還是很有意思的雪位,比如為什么是intel芯片廠商主導(dǎo)推動(dòng),在文章中都有講

  • 一致性:引用文中BIOS與UEFI的一致的統(tǒng)一流程如下:

    1. Rom Stage:在這個(gè)階段沒(méi)有內(nèi)存梨撞,需要在ROM上運(yùn)行代碼雹洗。這時(shí)因?yàn)闆](méi)有內(nèi)存香罐,沒(méi)有C語(yǔ)言運(yùn)行需要的棧空間时肿,開(kāi)始往往是匯編語(yǔ)言庇茫,直接在ROM空間上運(yùn)行。在找到個(gè)臨時(shí)空間(Cache空間用作RAM螃成,Cache As Ram, CAR)后旦签,C語(yǔ)言終于可以登場(chǎng)了,后期用C語(yǔ)言初始化內(nèi)存和為這個(gè)目的需要做的一切服務(wù)寸宏。
    2. Ram Stage: 在經(jīng)過(guò) ROM階段的困難情況后宁炫,我們終于有了可以大展拳腳的內(nèi)存,很多額外需要大內(nèi)存的東西可以開(kāi)始運(yùn)行了氮凝。在這時(shí)我們開(kāi)始進(jìn)行初始化芯片組羔巢、CPU、主板模塊等等核心過(guò)程罩阵。
    3. Find something to boot Stage: 終于要進(jìn)入正題了竿秆,需要啟動(dòng),我們找到啟動(dòng)設(shè)備永脓。就要枚舉設(shè)備袍辞,發(fā)現(xiàn)啟動(dòng)設(shè)備,并把啟動(dòng)設(shè)備之前需要依賴(lài)的節(jié)點(diǎn)統(tǒng)統(tǒng)打通常摧。然后開(kāi)始移交工作搅吁,Windows或者Linux的時(shí)代開(kāi)始。
  • 區(qū)別處:UEFI即統(tǒng)一可擴(kuò)展固件接口落午,與BIOS即基本輸入輸出系統(tǒng)谎懦,的主要區(qū)別體現(xiàn)在上面所說(shuō)的:

    • Ram Stage階段:UEFI的的擴(kuò)展性要比BIOS好得多,體現(xiàn)在如網(wǎng)卡廠商需要編寫(xiě)固件適配主板時(shí)溃斋,會(huì)舒服很多很多
    • Find something to boot Stage:BIOS與UEFI在尋找bootloader時(shí)約定有所不同界拦,注意僅僅是一個(gè)約定,是需要我們?nèi)プ袷氐墓=伲@并不是UEFI和BIOS的核心區(qū)別享甸。盡管如此,我們?cè)谔剿骱蛯?duì)比使用時(shí)梳侨,接觸到的大多數(shù)僅僅是本階段的區(qū)別蛉威,所以接下來(lái)會(huì)著重介紹。

引導(dǎo)在哪里

  • 引導(dǎo)即bootloader走哺,會(huì)按照使用者的意愿將目標(biāo)操作系統(tǒng)拉起
    • 最初單系統(tǒng)的主機(jī)并不需要考慮復(fù)雜的bootloader行為蚯嫌,如提供菜單選擇引導(dǎo)多個(gè)系統(tǒng)
  • 承上小節(jié),接下來(lái)介紹BIOS和UEFI在從不同介質(zhì)啟動(dòng)時(shí),會(huì)去哪尋找引導(dǎo)

引導(dǎo)在哪里

  • SATA 硬盤(pán)

    • BIOS:MBR分區(qū)表的0-446字節(jié)
    • UEFI:EFI分區(qū)中的特定路徑:EFI/BOOT/BOOTX64.EFI
  • USB 硬盤(pán)

    • 同SATA硬盤(pán)
  • CDROM 光盤(pán)

    • BIOS:根據(jù)El Torito格式(ISO 9660文件系統(tǒng)擴(kuò)展)尋找
    • UEFI:將ISO本身當(dāng)作ESP分區(qū)择示,從 EFI/BOOT/BOOTX64.EFI啟動(dòng)
  • PXE 網(wǎng)絡(luò)

    • BIOS:根據(jù)dhcp返回包中的參數(shù)束凑,請(qǐng)求指定的bootloader
    • UEFI:根據(jù)dhcp返回包中的參數(shù),請(qǐng)求指定的bootloader
  • 引導(dǎo)的配置文件一般保存有多個(gè)系統(tǒng)啟動(dòng)方式栅盲,甚至多個(gè)系統(tǒng)的啟動(dòng)選項(xiàng)

  • 如centos的正常模式以及救援模式汪诉,如windows和linux雙系統(tǒng)

引導(dǎo)配置文件在哪里

  • 引導(dǎo)的配置文件中一般存儲(chǔ)著經(jīng)常變化的信息,不適合硬編碼在引導(dǎo)二進(jìn)制代碼中
    • 如引導(dǎo)提供的菜單的內(nèi)容均由引導(dǎo)配置文件中的信息提供
  • 引導(dǎo)通過(guò)什么介質(zhì)獲取谈秫,一般引導(dǎo)配置文件也通過(guò)相同方式獲取
    • 如pxe啟動(dòng)時(shí)摩瞎,grub會(huì)在tftp目錄中探測(cè)尋找grub.cfg
    • 如硬盤(pán)啟動(dòng)時(shí),grub會(huì)掛載本地啟動(dòng)硬盤(pán)的boot分區(qū)孝常,grub.cfg就在其中
  • 某個(gè)引導(dǎo)文件具體會(huì)選擇去哪里尋找配置文件旗们,是在引導(dǎo)文件編譯時(shí)固定指定的

內(nèi)核與臨時(shí)文件系統(tǒng)在哪里

  • 展示并加載指定內(nèi)核與臨時(shí)文件系統(tǒng)是bootloader的責(zé)任,這些信息記錄在配置文件中构灸,因此以下均以grub2引導(dǎo)linux為例繼續(xù)介紹
  • 內(nèi)核上渴,即linux的kernel,與kernel相配合的喜颁,還有rootfs稠氮,根目錄,類(lèi)似windows的c盤(pán)
  • 臨時(shí)文件系統(tǒng)半开,顧名思義是臨時(shí)的隔披,其核心任務(wù)為找到rootfs并掛載
    • 根文件系統(tǒng)有任何騷操作時(shí),基本都要在臨時(shí)文件系統(tǒng)中進(jìn)行相應(yīng)的配置和支持
    • 如全盤(pán)加密(根文件系統(tǒng)加密寂拆,需在臨時(shí)文件系統(tǒng)中對(duì)其進(jìn)行解密后掛載至根)
    • 如掛載遠(yuǎn)程的nfs為根目錄系統(tǒng)
    • 臨時(shí)文件系統(tǒng)的存在奢米,保持了內(nèi)核的精簡(jiǎn),將內(nèi)核非必要的一些特殊文件系統(tǒng)識(shí)別掛載等模塊集成在其中
  • 內(nèi)核文件的名字一般為vmlinuz纠永,大小一般10m以內(nèi)
  • 臨時(shí)文件系統(tǒng)一般命名為initramfs(rh系)鬓长、initrd(de系),大小根據(jù)集成模塊多少在在50m左右浮動(dòng)
  • 根據(jù)grub2的文檔尝江,中13.1條涉波,為grub2指明設(shè)備時(shí),可以使用tftp和http協(xié)議炭序,也就為全流程從網(wǎng)絡(luò)啟動(dòng)提供了可能性
  • 最后從grub2的配置文件可以看出啤覆,grub并不關(guān)心真正的根文件系統(tǒng)在哪,他只負(fù)責(zé)找到并加載內(nèi)核與臨時(shí)文件系統(tǒng)
    • 如我的工作站的grub.cfg惭聂,根文件系統(tǒng)通過(guò)內(nèi)核啟動(dòng)參數(shù)的方式傳遞
    • 由內(nèi)核和臨時(shí)文件系統(tǒng)組成的小型操作系統(tǒng)根據(jù)參數(shù)去完成尋找與掛載

根文件系統(tǒng)在哪里

  • 配置內(nèi)核有參數(shù)三種方式窗声,分別是編譯時(shí)指定、啟動(dòng)時(shí)的命令行參數(shù)指定彼妻、啟動(dòng)后/sys目錄配置

  • 根文件系統(tǒng)在哪里是由第二種的命令行參數(shù)指定的嫌佑,其中小一部分參數(shù)會(huì)被內(nèi)核讀取,而其他的復(fù)雜的配置由位于臨時(shí)文件系統(tǒng)中的dracut程序讀取并執(zhí)行

    • dracut是一個(gè)工具集侨歉,既可以按要求生成臨時(shí)文件系統(tǒng)文件屋摇,也會(huì)在臨時(shí)文件系統(tǒng)中負(fù)責(zé)根據(jù)參數(shù)尋找并掛載根目錄
    • 這些內(nèi)核啟動(dòng)的命令行參數(shù)都是在grub.cfg中指定的
  • 在硬盤(pán)

    • 內(nèi)核+臨時(shí)文件系統(tǒng)組成的臨時(shí)操作系統(tǒng),直接掛載硬盤(pán)然后chroot就好
  • 在網(wǎng)絡(luò)

    • 根據(jù)dracut的文檔幽邓,可以掛載nfs炮温、cifs、iSCSI等網(wǎng)絡(luò)上位于其他主機(jī)的文件系統(tǒng)至本機(jī)的根目錄
  • 在內(nèi)存

    • 根據(jù)dracut的文檔牵舵,可以加載SquashFS文件至內(nèi)存柒啤,并以此內(nèi)存文件系統(tǒng)為根文件系統(tǒng)

Systemd

  • 在近年發(fā)布的linux發(fā)行版基本都以systemd取代init,成為linux的守護(hù)進(jìn)程管理工具畸颅,也就是pid為1號(hào)的辣個(gè)人
    • systemd會(huì)負(fù)責(zé)為用戶使用操作系統(tǒng)做好一切準(zhǔn)備担巩,如硬件準(zhǔn)備、網(wǎng)絡(luò)準(zhǔn)備没炒、登錄準(zhǔn)備等等
  • 在正常根目錄系統(tǒng)中:
    • systemd會(huì)拉起/usr/lib/systemd/system/default.target所依賴(lài)的一系列服務(wù)
    • 此時(shí)default.target軟連接到multi-user.target為命令行界面做準(zhǔn)備
  • 在臨時(shí)文件系統(tǒng)中:
    • systemd同樣拉起default.target涛癌,只不過(guò)此時(shí)default指向了initrd.target
    • 參考此文拆包initrd,從而查看其內(nèi)容
  • 在安裝鏡像的臨時(shí)文件系統(tǒng)中:
    • systemd同樣拉起的是initrd.target
    • 但是此時(shí)initrd會(huì)依賴(lài)于一系列系統(tǒng)安裝相關(guān)的服務(wù)進(jìn)程送火,如
      • redhat系的anaconda
      • debian系的debian-installer
    • 我們安裝系統(tǒng)的時(shí)候所見(jiàn)到的安裝GUI拳话,就是anaconda這類(lèi)服務(wù)在提供
  • 最后由于anaconda還是一個(gè)非常出名的科學(xué)計(jì)算套件,這里給出此場(chǎng)景下所指的anaconda的文檔wiki
    • 文檔中所列出的boot options种吸,即kernel命令行參數(shù)弃衍,是pxe等場(chǎng)景下需要經(jīng)常查閱的

應(yīng)用實(shí)例

Hybrid ISO

  • 現(xiàn)在下載較新的linux鏡像時(shí),各種文檔都會(huì)提醒坚俗,只需要dd if=xx.iso of=/dev/usb就可以刻錄系統(tǒng)盤(pán)

  • 那么問(wèn)題來(lái)了镜盯,為什么?為什么用于刻錄在光盤(pán)的文件可以直接刻錄在u盤(pán)中并生效

  • 經(jīng)過(guò)一番搜索發(fā)現(xiàn)了isohybrid關(guān)鍵字猖败,但是卻沒(méi)有找到詳細(xì)介紹相關(guān)技術(shù)的文章

  • 最后還是在iso9600的wiki中順藤摸瓜形耗,還原出了技術(shù)細(xì)節(jié):

  • 一個(gè)hybrid iso鏡像具體構(gòu)成如下:

    1. MBR分區(qū)表判呕,位于iso9660未使用的前32kb空白區(qū)域(注意MBR只占用第一個(gè)扇區(qū)倦踢,即頭512byte),分區(qū)表如下
      • 第一個(gè)分區(qū)打上了boot標(biāo)志侠草,但分區(qū)類(lèi)型為0辱挥,即空,開(kāi)始與結(jié)束指針指向了iso鏡像的頭與尾边涕,即整個(gè)iso9660文件系統(tǒng)作為第一個(gè)分區(qū)
      • 第二個(gè)分區(qū)分區(qū)類(lèi)型為ef晤碘,即EFI分區(qū)褂微,開(kāi)始與結(jié)束指針指向了下文提到的efiboot.img文件,其文件內(nèi)容為一個(gè)vfat格式的文件系統(tǒng)园爷,其中包含了EFI模式下的grub引導(dǎo)相關(guān)文件
        • 在學(xué)習(xí)hybrid iso時(shí)宠蚂,最困惑的問(wèn)題就是為什么iso9660文件系統(tǒng)中能夠兼容一個(gè)vfat系統(tǒng)用作EFI引導(dǎo),在這里得到了解答
    2. Volume Descriptors童社,iso9660文件系統(tǒng)信息結(jié)構(gòu)求厕,其中包含了:
      • 指向文件系統(tǒng)根目錄結(jié)構(gòu)的指針(Primary Volume Descriptor)
      • 指向引導(dǎo)相關(guān)的目錄結(jié)構(gòu)的指針(Boot Record),相關(guān)規(guī)范在El-Torito中定義
    3. 光盤(pán)文件系統(tǒng)(iso9660文件系統(tǒng)格式)扰楼,也就是我們通過(guò)mount -o loop掛載后看到的內(nèi)容呀癣,其中包含
      • linux系統(tǒng)的內(nèi)核及臨時(shí)文件系統(tǒng),即centos鏡像中的images/pxeboot文件夾
      • 提供efi分區(qū)內(nèi)容的文件弦赖,即centos鏡像中的images/efiboot.img文件
      • 提供傳統(tǒng)BIOS模式下的引導(dǎo)项栏,即centos鏡像中的isolinux/文件夾,注意傳統(tǒng)BIOS在光盤(pán)介質(zhì)使用的是isolinux引導(dǎo)蹬竖,而不是grub
  • 同一個(gè)二進(jìn)制文件忘嫉,BIOS與UEFI模式 * 寫(xiě)入光盤(pán)與U盤(pán)時(shí),分別的啟動(dòng)流程:

    • BIOS + 光盤(pán):讀取光盤(pán)Boot Record信息案腺,從而尋找到isolinux文件夾中的引導(dǎo)庆冕,引導(dǎo)尋找光盤(pán)中的內(nèi)核與臨時(shí)文件系統(tǒng)
    • BIOS + U盤(pán):讀取MBR頭部的引導(dǎo)代碼,從而尋找到isolinux中的引導(dǎo)劈榨,最后引導(dǎo)掛載boot分區(qū)(iso9660格式)找到內(nèi)核與臨時(shí)文件系統(tǒng)
    • UEFI + 光盤(pán):讀取光盤(pán)Boot Record信息访递,從而尋找到光盤(pán)中的EFI文件夾中的grub2引導(dǎo),最后引導(dǎo)尋找光盤(pán)中的內(nèi)核與臨時(shí)文件系統(tǒng)
    • UEFI + U盤(pán):讀取MBR分區(qū)表同辣,發(fā)現(xiàn)類(lèi)型為ef的EFI分區(qū)拷姿,掛載后找到efiboot.img文件中的引導(dǎo),最后引導(dǎo)尋找boot分區(qū)中的內(nèi)核與臨時(shí)文件系統(tǒng)
  • 最后總結(jié)一下:

    • 光盤(pán)Boot Record中的信息旱函,指導(dǎo)光盤(pán)介質(zhì)下响巢,BIOS找到isolinux/ 與 UEFI找到EFI/
    • MBR分區(qū)表中的信息,指導(dǎo)U盤(pán)介質(zhì)下棒妨,BIOS找到isolinux/ 與 UEFI找到images/efiboot.img
  • 最后的最后踪古,在調(diào)用isoparser庫(kù)解析iso鏡像查詢信息的時(shí)候,發(fā)現(xiàn)一個(gè)有意思的事情券腔,即不同的文件路徑有可能指向了同一個(gè)文件伏穆,如images/pxeboot/initrd.img與isolinux/initrd.img其實(shí)是同一個(gè)文件內(nèi)容,這樣節(jié)省了一些空間纷纫,代碼如下

#! /usr/bin/python3
import isoparser
a = isoparser.parse('CentOS-7-x86_64-Minimal-2009.iso')
def foo(base, r):
    for i in r.children:
        if i.is_directory:
            foo(base + [i.name], i)
        else:
            print(i.location,'\t', b'/'.join(base + [i.name]))
            res.append((i.location, b'/'.join(base + [i.name])))
res = []
foo([], a.root)
sorted(res, key=lambda x:x[0])

極簡(jiǎn)pxe

  • 上面已經(jīng)說(shuō)過(guò)無(wú)論BIOS還是UEFI都是根據(jù)dhcp響應(yīng)包中的字段去尋找引導(dǎo)

  • pxe引導(dǎo)安裝系統(tǒng)的過(guò)程可以簡(jiǎn)單總結(jié)如下

    1. BIOS/UEFI指定網(wǎng)卡并從pxe啟動(dòng)
    2. 主板廣播dhcp請(qǐng)求
    3. 我們搭建的dhcp服務(wù)器響應(yīng)dhcp請(qǐng)求枕扫,在響應(yīng)包中通過(guò)dhcp option返回相關(guān)信息,如
      • option 3 - gateway
      • option 6 - dns
      • option 66 - tftp server ip
      • dhcp obot - 引導(dǎo)在tftp服務(wù)中的路徑
    4. 主板從我們搭建的tftp服務(wù)器中下載引導(dǎo)
    5. 執(zhí)行引導(dǎo)辱魁,引導(dǎo)從tftp服務(wù)器中通過(guò)遍歷尋找配置文件烟瞧,即grub.cfg
    6. 尋找到配置文件后诗鸭,在屏幕顯示引導(dǎo)菜單供用戶選擇
    7. 用戶選擇安裝系統(tǒng)后,使用指定協(xié)議向執(zhí)行服務(wù)器下載內(nèi)核及臨時(shí)文件系統(tǒng)
      • 常規(guī)情況會(huì)繼續(xù)向我們搭建的tftp服務(wù)器下載
      • 但是grub也會(huì)支持從http服務(wù)器下載参滴,因此如果能通公網(wǎng)的話强岸,可以編寫(xiě)grub.cfg直接指定公網(wǎng)華為軟件源中的對(duì)應(yīng)內(nèi)核與臨時(shí)文件系統(tǒng)
      • grub支持什么協(xié)議,這里就可以用什么協(xié)議卵洗,這時(shí)候已經(jīng)和主板的支持沒(méi)有關(guān)系了
    8. 由內(nèi)核與臨時(shí)文件系統(tǒng)組成的操作系統(tǒng),會(huì)根據(jù)傳入的內(nèi)核命令行參數(shù)弥咪,執(zhí)行相應(yīng)的操作过蹂,如安裝操作系統(tǒng)至本地硬盤(pán)
      • 安裝過(guò)程涉及幾個(gè)文件下載的過(guò)程:
      • 一:自動(dòng)化安裝時(shí)需要指定自動(dòng)化安裝腳本(kickstart之于centos、preseed之于debian)
      • 相應(yīng)的安裝程序(anaconda之于centos聚至、debian-install之于debian)讀取通過(guò)內(nèi)核參數(shù)傳入的腳本地址酷勺,并下載
      • 這里不同的安裝程序也支持不同的腳本來(lái)源,如debian-installer支持tftp扳躬,而anaconda就不支持脆诉,具體支持協(xié)議列表需查閱文檔
      • 二:下載腳本后,開(kāi)始了安裝過(guò)程贷币,其中涉及第二點(diǎn)下載的過(guò)程時(shí)軟件包的安裝
      • 一個(gè)操作系統(tǒng)可以理解為內(nèi)核 + 臨時(shí)文件系統(tǒng) + 根目錄(由很多很多軟件包組成)
      • 而內(nèi)核是直接由安裝時(shí)期的內(nèi)核拷貝過(guò)去击胜,臨時(shí)文件系統(tǒng)根據(jù)根目錄的位置使用工具重新生成
      • 根目錄中的軟件包卻是需要從網(wǎng)絡(luò)或硬盤(pán)源中下載安裝的,這也是我們?cè)谙螺d安裝鏡像的時(shí)候everything與netinstall版本的區(qū)別
      • 即everything或者minial中內(nèi)置了軟件源役纹,而netinstall需要從網(wǎng)絡(luò)下載偶摔,我們需要在鏡像大小與網(wǎng)絡(luò)速度之間權(quán)衡下載
  • 了解了pxe的啟動(dòng)過(guò)程,我們可以通過(guò)搭建cobbler促脉、debian-fai等搭建pxe所需的dhcp辰斋、tftp服務(wù),但往往比較復(fù)雜瘸味,適用于大規(guī)模pxe管理宫仗,因此也可以嘗試everything under control的極簡(jiǎn)pxe

    • 通過(guò)閱讀dnsmasq的文檔發(fā)現(xiàn)dnsmasq不止支持作為dns、dhcp服務(wù)旁仿,還支持tftp服務(wù)
    • 而根據(jù)上述的pxe過(guò)程藕夫,只有dhcp與tftp服務(wù)是本地內(nèi)網(wǎng)不可或缺的,內(nèi)核與臨時(shí)文件系統(tǒng)可以從網(wǎng)絡(luò)下載枯冈,安裝腳本也可以從網(wǎng)絡(luò)下載汁胆,軟件包更是可以從網(wǎng)絡(luò)下載
    • 其中內(nèi)核與臨時(shí)文件系統(tǒng)和軟件包都可以從公網(wǎng)的centos鏡像源中下載,與我們下載的iso鏡像中完全相同
    • 而安裝腳本的位置霜幼,如果安裝程序如debian-installer支持從tftp下載安裝腳本嫩码,那么把腳本放在tftp服務(wù)即可
    • 如果不支持從tftp下載腳本,那么在公網(wǎng)的自己的服務(wù)器的web或者內(nèi)網(wǎng)搭建一個(gè)web服務(wù)提供腳本下載均可
    • 綜上罪既,其實(shí)一個(gè)dnsmasq就能夠支撐pxe引導(dǎo)铸题,我當(dāng)前的配置如下
##### dhcp
listen-address=198.18.0.1,127.0.0.1
dhcp-range=198.18.10.0,198.18.126.254,48h
dhcp-option=3,198.18.0.1
dhcp-option=6,114.114.114.114
dhcp-option=66,198.18.0.1
dhcp-boot=grubx64.efi

dhcp-lease-max=1000
dhcp-authoritative

##### tftp
enable-tftp
tftp-root=/mnt/
  • tftp提供服務(wù)的目錄也非常簡(jiǎn)單铡恕,只有兩個(gè)文件:grubx64.efi 和 grub.cfg
  • grubx64.efi是從centos鏡像中拆出來(lái)的grub引導(dǎo),grub.cfg內(nèi)容如下
set default="1"

function load_video {
  insmod efi_gop
  insmod efi_uga
  insmod video_bochs
  insmod video_cirrus
  insmod all_video
}

load_video
set gfxpayload=keep
insmod gzio
insmod part_gpt
insmod ext2
insmod net

set timeout=60
### END /etc/grub.d/00_header ###

search --no-floppy --set=root -l 'CentOS 7 x86_64'

### BEGIN /etc/grub.d/10_linux ###
menuentry 'Install CentOS 7.6.1810' --class fedora --class gnu-linux --class gnu --class os {
        linuxefi (http,mirrors.huaweicloud.com)/centos-vault/7.6.1810/os/x86_64/images/pxeboot/vmlinuz ks=http://xxx/kickstart/centos.ks
        initrdefi (http,mirrors.huaweicloud.com)/centos-vault/7.6.1810/os/x86_64/images/pxeboot/initrd.img
}
menuentry 'Install Debian 10 buster' {
    linuxefi    (http,mirrors.huaweicloud.com)/debian/dists/buster/main/installer-amd64/current/images/netboot/debian-installer/amd64/linux vga=788 debian-installer/allow_unauthenticated=true --- quiet auto=true priority=critical interface=auto preseed/url=http://xxx/kickstart/debian.seed
    initrdefi   (http,mirrors.huaweicloud.com)/debian/dists/buster/main/installer-amd64/current/images/netboot/debian-installer/amd64/initrd.gz
}
  • 內(nèi)核丢间、臨時(shí)文件系統(tǒng)探熔、軟件包都從華為源下載,真滴很快樂(lè)
  • 唯一的缺點(diǎn)可能是不同發(fā)行版的軟件源目錄布局不同烘挫,需要好好找一找到底在哪
    • 比如centos7的軟件源已經(jīng)過(guò)時(shí)了遷移到了centos-vault
    • 比如debian提供了netboot/debian-installer文件夾專(zhuān)供pxe引導(dǎo)的文件

ventoy

  • 一個(gè)神奇的啟動(dòng)盤(pán)制作工具诀艰,顯著的優(yōu)點(diǎn)是只需要把iso鏡像copy到u盤(pán)里就可以引導(dǎo)了,還不會(huì)廢了一個(gè)u盤(pán)饮六,地址
  • ventoy在安裝到u盤(pán)的過(guò)程中其垄,會(huì)初始化MBR分區(qū)表(為了兼容傳統(tǒng)BIOS)
    • 第一個(gè)大分區(qū)格式化成exfat用于存放文件
    • 第二個(gè)小分區(qū)格成vfat用于EFI引導(dǎo)以及ventoy相關(guān)的文件和配置
  • 除了各類(lèi)插件能定制grub2讓引導(dǎo)菜單更好看之外,ventoy提供了安裝腳本的掛載卤橄,這個(gè)功能真的非常棒绿满,小規(guī)模的幾臺(tái)機(jī)器想自動(dòng)化裝系統(tǒng)但又懶得搭pxe時(shí),這是個(gè)非常好的替代方案窟扑,省去了很多鼠標(biāo)操作
  • 特地為了ventoy買(mǎi)了一個(gè)64G的u盤(pán)豆喇颁,從此系統(tǒng)走到哪裝到哪

Liveos

  • dracut的文檔中如何指定live模式,以及指定root目錄的SquashFS文件有明確說(shuō)明
  • 至于引導(dǎo)以及內(nèi)核和臨時(shí)文件系統(tǒng)在哪嚎货,都可以的
  • 但一般live模式啟動(dòng)啟動(dòng)用于把必要的工具裝里面從而現(xiàn)場(chǎng)維護(hù)設(shè)備
  • 所以大概率引導(dǎo)橘霎、內(nèi)核、臨時(shí)文件系統(tǒng)殖属、SquashFS都在U盤(pán)里

瘦客戶端

  • 引導(dǎo)通過(guò)pxe茎毁、內(nèi)核臨時(shí)文件系統(tǒng)通過(guò)http或tftp、根目錄可以通過(guò)nfs掛載
  • 最終完全依靠網(wǎng)絡(luò)引導(dǎo)一個(gè)操作系統(tǒng)忱辅,主機(jī)不需要硬盤(pán)或硬盤(pán)當(dāng)作數(shù)據(jù)盤(pán)七蜘,有cpu和內(nèi)存就夠了
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市墙懂,隨后出現(xiàn)的幾起案子橡卤,更是在濱河造成了極大的恐慌,老刑警劉巖损搬,帶你破解...
    沈念sama閱讀 221,331評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件碧库,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡巧勤,警方通過(guò)查閱死者的電腦和手機(jī)嵌灰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,372評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)颅悉,“玉大人沽瞭,你說(shuō)我怎么就攤上這事∈F浚” “怎么了驹溃?”我有些...
    開(kāi)封第一講書(shū)人閱讀 167,755評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵城丧,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我豌鹤,道長(zhǎng)亡哄,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,528評(píng)論 1 296
  • 正文 為了忘掉前任布疙,我火速辦了婚禮蚊惯,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘灵临。我一直安慰自己截型,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,526評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布俱诸。 她就那樣靜靜地躺著菠劝,像睡著了一般赊舶。 火紅的嫁衣襯著肌膚如雪睁搭。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 52,166評(píng)論 1 308
  • 那天笼平,我揣著相機(jī)與錄音园骆,去河邊找鬼。 笑死寓调,一個(gè)胖子當(dāng)著我的面吹牛锌唾,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播夺英,決...
    沈念sama閱讀 40,768評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼晌涕,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了痛悯?” 一聲冷哼從身側(cè)響起余黎,我...
    開(kāi)封第一講書(shū)人閱讀 39,664評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎载萌,沒(méi)想到半個(gè)月后惧财,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,205評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡扭仁,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,290評(píng)論 3 340
  • 正文 我和宋清朗相戀三年垮衷,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片乖坠。...
    茶點(diǎn)故事閱讀 40,435評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡搀突,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出熊泵,到底是詐尸還是另有隱情描姚,我是刑警寧澤涩赢,帶...
    沈念sama閱讀 36,126評(píng)論 5 349
  • 正文 年R本政府宣布,位于F島的核電站轩勘,受9級(jí)特大地震影響筒扒,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜绊寻,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,804評(píng)論 3 333
  • 文/蒙蒙 一花墩、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧澄步,春花似錦冰蘑、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,276評(píng)論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至梯皿,卻和暖如春仇箱,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背东羹。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,393評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工剂桥, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人属提。 一個(gè)月前我還...
    沈念sama閱讀 48,818評(píng)論 3 376
  • 正文 我出身青樓权逗,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親冤议。 傳聞我的和親對(duì)象是個(gè)殘疾皇子斟薇,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,442評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • 這篇文章主要介紹UEFI啟動(dòng)流程、Linux系統(tǒng)下的備份還原以及grub引導(dǎo)修復(fù)恕酸。 UEFI相關(guān)知識(shí) UEFI啟動(dòng)...
    moriv4閱讀 15,590評(píng)論 0 2
  • 一堪滨、選擇題:(20 分,每題2 分) 1尸疆、下列哪個(gè)不屬于內(nèi)核的功能椿猎? ( A ) A 用戶管理B 內(nèi)存管理C 進(jìn)程...
    xinxin2019閱讀 658評(píng)論 0 0
  • linux資料總章2.1 1.0寫(xiě)的不好抱歉 但是2.0已經(jīng)改了很多 但是錯(cuò)誤還是無(wú)法避免 以后資料會(huì)慢慢更新 大...
    數(shù)據(jù)革命閱讀 12,175評(píng)論 2 33
  • 一、Linux內(nèi)核的組成 相關(guān)概念: Linux系統(tǒng)的組成部分:內(nèi)核+根文件系統(tǒng)內(nèi)核功能包括進(jìn)程管理寿弱、內(nèi)存管理犯眠、網(wǎng)...
    華煉閱讀 481評(píng)論 0 0
  • cenos6啟動(dòng)流程 加載BIOS的硬件信息,獲取第一個(gè)啟動(dòng)設(shè)備 讀取第一個(gè)啟動(dòng)設(shè)備MBR的引導(dǎo)加載程序(grub...
    毛利卷卷發(fā)閱讀 1,064評(píng)論 0 1