自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

BIOS 和 EFI 介紹及其啟動光盤制作

運(yùn)維 系統(tǒng)運(yùn)維
文章首先大概介紹了 BIOS, EFI 及其啟動過程,然后分別介紹了 BIOS 平臺、EFI 平臺以及同時滿足這兩種平臺的啟動光盤的制作過程。

現(xiàn)在不少安裝光盤同時滿足 EFI 平臺和 BIOS 平臺的引導(dǎo)要求,在本文中,學(xué)習(xí)如何制作同時滿足 Legacy BIOS 平臺和 EFI 平臺啟動的啟動光盤。您將學(xué)習(xí):

  • Legacy BIOS 概述、啟動過程介紹以及制作 Legacy BIOS 平臺的啟動光盤步驟;
  • EFI 概述、啟動過程介紹以及制作 EFI 平臺的啟動光盤步驟;
  • 制作同時滿足 Legacy BIOS 平臺和 EFI 平臺的啟動光盤步驟。

Legacy BIOS boot 介紹及啟動光盤制作

Legacy BIOS boot 介紹

首先了解一下 Legacy BIOS 如何啟動或引導(dǎo)。當(dāng)系統(tǒng)***引導(dǎo)時,或系統(tǒng)被重置時,處理器會執(zhí)行一個位于已知位置處的代碼。這個位置在基本輸入 / 輸出系統(tǒng)(BIOS) 中,它保存在主板上的閃存中。CPU 會調(diào)用這個重置向量來啟動一個位于閃存 /ROM 中的已知地址處的程序。通常,它執(zhí)行一個啟動自測(POST)來檢查機(jī)器。***,它從引導(dǎo)驅(qū)動器上的主引導(dǎo)記錄(MBR)加載***個扇區(qū)。

這時***階段的引導(dǎo)加載程序開始了。引導(dǎo)程序 boot loader 就位于 MBR ***個扇區(qū)里面。此時 boot loader 就被裝入 RAM 并執(zhí)行。這個引導(dǎo)加載程序在大小上小于 512 字節(jié)(一個扇區(qū)),其作用是加載第二階段的引導(dǎo)加載程序。

當(dāng)?shù)诙A段的引導(dǎo)加載程序被裝入 RAM 并執(zhí)行時,通常會顯示一個動畫屏幕,并將 Linux 和一個可選的初始 RAM 磁盤(臨時根文件系統(tǒng))加載到內(nèi)存中。在加載映像時,第二階段的引導(dǎo)加載程序就會將控制權(quán)交給內(nèi)核映像,然后內(nèi)核就可以進(jìn)行解壓和初始化了。在這個階段 中,第二階段的引導(dǎo)加載程序會檢測系統(tǒng)硬件、枚舉系統(tǒng)鏈接的硬件設(shè)備、掛載根設(shè)備,然后加載必要的內(nèi)核模塊。完成這些操作之后啟動***個用戶空間程序(init),并執(zhí)行高級系統(tǒng)初始化工作。

圖 1. 開機(jī)過程示意圖
圖 1. 開機(jī)過程示意圖 

制作支持 Legacy BIOS 啟動光盤的步驟

步驟一:準(zhǔn)備 isolinux.bin 和工作目錄

在準(zhǔn)備制作 ISO 的目錄里添加一個子目錄,比如 isolinux/ ,然后放入 isolinux.cfg 和一個對所有光盤都一樣的 isolinux 提供的引導(dǎo)介質(zhì) isolinux.bin,當(dāng)然還要放入相應(yīng)的 kernel, initrd 等等,目錄結(jié)構(gòu)如下:
清單 1. myBIOSiso 目錄結(jié)構(gòu)

				
 |---isolinux 
 | |---isolinux.bin 
 | |---isolinux.cfg 
 |---kernel 
 |---initrd 
 |---readme 

步驟二:配置 isolinux.cfg
清單 2. 配置 isolinux.cfg

				
 prompt 1 
 timeout 100 
 default myBIOSiso 
 label myBIOSiso 
 kernel img2a 
 append initrd=img3a load_ramdisk=1 prompt_ramdisk=0 ramdisk_size=60000 rw root=/dev/ram 

步驟三:制作 BIOS 平臺可啟動光盤
清單 3. 制作 BIOS 平臺可啟動光盤的命令

				
 # mkisofs -o output.iso -b isolinux/isolinux.bin -c \n
 isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table . 

制作 iso 的時候要使用 -b 參數(shù),用來指定 isolinux.bin 所在的路徑,-c 參數(shù)的那個文件是自動

生成的,不用太擔(dān)心,其余參數(shù)都是固定的。這里的路徑都是相對于光盤的根的,而和制作光盤時的工作目錄沒有關(guān)系。#p#

EFI boot 介紹及啟動光盤制作

EFI boot 介紹

EFI 的全稱是可擴(kuò)展固件接口 (Extensible Firmware Interface),它是 Intel 公司為全新類型的固件體系結(jié)構(gòu)、接口和服務(wù)提出的建議性標(biāo)準(zhǔn)。該標(biāo)準(zhǔn)有兩個主要用途:向操作系統(tǒng)的引導(dǎo)程序和某些在計算機(jī)初始化時運(yùn)行的應(yīng)用程序提供一套標(biāo)準(zhǔn)的運(yùn)行環(huán)境;為操作系統(tǒng)提供一套與固件通訊的交互協(xié)議。
 簡單說,EFI 是 BIOS 的替代者。它為操作系統(tǒng)和固件提供了更加強(qiáng)大、安全、方便的交互途徑。EFI 規(guī)范定義的接口,包括數(shù)據(jù)表包含平臺的信息,可在 OS Loader 和 OS 的啟動和運(yùn)行時服務(wù)。 EFI 固件提供了幾種技術(shù)優(yōu)勢:

  • 引導(dǎo)能力支持大容量磁盤(超過 2 TIB )
  • 更快的啟動
  • 獨(dú)立 CPU 的體系結(jié)構(gòu)
  • CPU 的獨(dú)立的驅(qū)動程序
  • 靈活的預(yù)操作系統(tǒng)環(huán)境,包括網(wǎng)絡(luò)功能
  • 模塊化設(shè)計

EFI 啟動還需要一個特殊的分區(qū)表,該分區(qū)表指向一個特殊的文件。通常情況下該文件位于 \EFI 路徑,EFI 啟動涉及到一個寫入到 firmware 中的 boot loader, EFI 并不把啟動程序放置在 MBR 中,firmware 知道如何讀取分區(qū)表以及 FAT 的文件格式。EFI 系統(tǒng)分區(qū)是用 FAT 格式格式化的特定分區(qū),其中包含 boot loader, 該 boot loader 是 EFI 可執(zhí)行程序,可被 EFI boot manager 載入和運(yùn)行。

Boot loader 被設(shè)置為一個可以通過固件訪問的文件。Boot loader 允許用戶選擇并加載操作系統(tǒng)。所有的 boot manager 都包含一個 EFI 變量,該變量被用來定義固件配置參數(shù)。

對于 64 位 Linux,例如 RedHat EFI boot loader 位于 \EFI\RedHat\elilo.efi, Suse 位于 \EFI\SuSE\elilo.efi. 該 EFI 文件包含一個修改過的 LILO. 一般叫做 elilo 文件。ELILO, 包含一個二級的啟動選項(xiàng),在 elilo.conf 文件中配置。Elilo 是一個 boot loader, 只能用于啟動 Linux 系統(tǒng)。

制作支持 EFI 平臺的啟動光盤的步驟

ELILO 是一種基于 EFI 開發(fā)的 boot loader,而不是基于 BIOS 平臺 , ELILO 允許用戶在系統(tǒng)開機(jī)過程中自己選擇哪個系統(tǒng)或內(nèi)核,同時也支持用戶傳參數(shù)給內(nèi)核。 ELILO 的配置文件,一般位于 EFI 啟動分區(qū)。下面的實(shí)例就是將 elilo 作為 EFI 平臺的 boot loader。

步驟一:配置 elilo.conf

EFI 文件從 Suse 11 SP1 的光盤中獲得,路徑是 /boot/x86_64/efi.
清單 4. 查看 efi 文件命令

				
 mount -o loop /boot/x86_64/efi efiimg 

在 efiimg/efi/boot 文件下,可以看到如下四個文件:

 bootx64.efi  elilo.conf  initrd  linux 

如果需要按自己需求更改 efi 文件,自己定制 efi boot image 方法如下:

首先需要按自己需求更改 elilo.conf 文件,比如我的配置如下:
清單 5. 配置 elilo.conf 文件

				
 prompt 
  timeout=80 
  default=myEFIiso 
  image=img2au 
     label=myEFIiso 
     initrd=img3au 
     append="vga=0x317 root=/dev/ram0 rw ramdisk_size=140000 \
     debug_level=1 silent_boot=no boot_src=3 media_boot=no iommu=soft"

參數(shù)詳解如下:

prompt —設(shè)定默認(rèn)行為為交互模式

timeout=tsecs — 設(shè)置在菜單到自動啟動系統(tǒng)前的時間,單位是 1/10 秒。無論是選定了默認(rèn)開機(jī)選項(xiàng)或者沒有設(shè)定默認(rèn)開機(jī)項(xiàng)目,當(dāng)超時時間過后,***個開機(jī)選項(xiàng)會被選中。

default=name — 設(shè)置默認(rèn)開機(jī)選項(xiàng),這個參數(shù)的值必須和 label 參數(shù)中的值匹配。如果沒有設(shè)定默認(rèn)開機(jī)選項(xiàng),那么***個開機(jī)選項(xiàng)將會被選中。

image=kernel — 設(shè)定 Linux 開機(jī)的內(nèi)核,通常情況下是 vmlinuz 文件

label=name — 這個參數(shù)的值是設(shè)定為可以指向讀取的開機(jī)選項(xiàng)

initrd=image — 指定 initrd 文件,用于初始化和啟動 linux 內(nèi)核。這個鏡像文件通常位于 EFI 分區(qū)

root=diskptn —指定 mount 為磁盤根分區(qū)的目標(biāo)文件

append="options" — 指定內(nèi)核載入開機(jī)中傳遞給內(nèi)核的參數(shù)

步驟二:定制 EFI 文件

當(dāng)自己定制的 elilo.conf initrd linux 準(zhǔn)備完畢后,在 RHEL6.0 或者更高版本 :
清單 6. 定制 EFI 文件

				
 # dd if=/dev/zero of=efibootimg bs=1M count=36 
 # mkfs.vfat efibootimg 
 # mkdir -p /mnt/loop 
 # mount -o loop efibootimg /mnt/loop 
 # mkdir -p /mnt/loop/efi/boot/ 
 # cp efiimg/efi/boot/bootx64.efi /mnt/loop/efi/boot/bootx64.efi 
 # cp img2au /mnt/loop/efi/boot/             
 # cp img3au /mnt/loop/efi/boot/             
 # cp efiimg/efi/elilo.conf /mnt/loop/efi/boot/          
 # umount /mnt/loop 

步驟三:制作 EFI 平臺啟動光盤


清單 7. 制作 EFI 平臺啟動光盤的命令

				
 # genisoimage -e efibootimg -no-emul-boot -J -R -c boot.catalog \
 -hide boot.catalog -hide efibootimg -o /tmp/testcdimage.iso . 

其中參數(shù) -e FILE 是指定 EFI boot image

制作同時滿足 EFI 平臺和 BIOS 平臺的引導(dǎo)要求的啟動光盤

在準(zhǔn)備完制作支持 EFI 平臺的啟動光盤所需文件后,將定制好的 efibootimg 放在需要打包成 iso 格式的文件根目錄下,目錄結(jié)構(gòu)如下:
清單 8. MyBIOSEFIiso 目錄結(jié)構(gòu)

				
 |---isolinux 
 | |---isolinux.bin 
 | |---isolinux.cfg 
 |---efibootimg 
 |---kernel 
 |---initrd 
 |---readme 

清單 9. 制作同時滿足 EFI 平臺和 BIOS 平臺的引導(dǎo)要求的啟動光盤命令
				
 # mkisofs -quiet -b isolinux/isolinux.bin -c boot.cat -no-emul-boot \
 -boot-load-size 4 -boot-info-table -eltorito-alt-boot \
 -e efibootimg -no-emul-boot -R -J  -o /tmp/testcd.iso . 

責(zé)任編輯:黃丹 來源: developerWorks
相關(guān)推薦

2009-12-22 16:49:38

Linux制作軟盤

2021-11-05 11:57:07

網(wǎng)絡(luò)流程Window

2019-08-20 15:55:14

Windows 10EFI分區(qū)Windows

2020-11-03 08:12:20

WebAssemblyAPI

2015-09-15 11:13:52

光盤Parsix GNULinux

2010-01-18 14:58:13

2009-08-14 09:12:37

Windows 7光盤AIK

2009-11-23 20:03:18

ibmdwLotus

2010-01-08 14:27:45

JSON 幫助

2012-08-02 09:18:05

LESSSassCSS

2009-08-07 17:09:11

CLR泛型

2010-06-21 16:25:38

Linux Arch

2010-04-23 13:01:43

Oracle報表

2009-10-27 15:06:15

Linux內(nèi)核啟動

2010-06-21 15:56:31

Linux apt-g

2009-08-06 18:02:22

存儲過程

2009-04-02 13:45:36

網(wǎng)關(guān)網(wǎng)絡(luò)

2010-10-09 08:50:16

2010-01-13 09:48:34

Boost庫

2009-02-17 15:55:24

KNOPPIX 6.0Linux光盤
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號