使用isolinux製作liveUSB

2021-06-19 22:18:13 字數 3523 閱讀 2300

在作業系統啟動之前,需要由引導程式將作業系統載入到記憶體,isolinux就是引導程式的一種,和他有相同作用的是lilo和grub。整個系統的載入和初始化過程,大致如下圖:

syslinux/isolinux 是專門用來引導可移動介質的輕量級引導程式,因為這樣的介質通常不會固定只針對一種硬體。我們主要介紹以下isolinux 引導安裝程式。isolinux其實是乙個簡單的linux系統。

引導程式isolinux.bin:它的作用是讀取isolinux.cfg,根據配置選項,決定引導的核心檔案。

配置檔案isolinux.cfg:它的格式如下:

label linux

kernel vmlinuz

必須選項:

prompt=1這是說,向使用者提示輸入選擇,直接回車就是預設選項了。當然,如果使其等於0則,不向使用者提示輸入選擇。

timeout=0沒有時間限制,當然也可以指定一定時間之後自動進入預設選項。這個時間是秒數的10倍。例如,如果要等待30秒進入,則應該在這裡輸入timeout=300。

可選選項:略

系統啟動核心:initrd

嚴格說來,initrd並不是引導程式的一部分,而是核心程式的一部分。關於initrd的做作用和相關介紹可以參考這裡:

initrd檔案很好製作,可以將linux系統啟動時的initrd檔案作為乙個基本檔案,在裡面修改即可。如果有需要新增的內容,直接將linux系統中的相應檔案拷貝進去就可以了。另外,initrd下面的啟動指令碼是init檔案,建議根據自己的需求修改該檔案,該檔案是乙個用shell寫的指令碼。在linux系統啟動時,載入完成核心以後,就開始呼叫該指令碼了,所以有什麼需要啟動的,都可以在該指令碼中新增。甚至可以將該指令碼作為乙個自己安裝,修復等的基本指令碼來做。

我們的目標是利用isolinux來引導系統,所以,我們需要製作乙個iso映象檔案,修改initrd中的相關配置,製作引導配置檔案。

3.1)啟動介面的製作

字元模式啟動介面

字元模式的啟動介面,使用的是menu.c32核心做為啟動核心。menu.c32檔案由isolinux包提供。可以直接從isolinux包中編譯產生。

有了該檔案,我們只需要對isolinux.cfg檔案進行修改一下即可。具體的修改可以參照下面的配置項

default menu.c32

prompt 0

menu title my distro installer

timeout 600

f1 help.txt

f2 version.txt

label bls

menu label normal install

menu default

kernel vmlinuz

label bad

menu label bad hardware install

kernel vmlinuz

可以看的出來,這裡的主要調整是,調整default選項,修改其為menu.c32檔案。因為如此是指定,預設使用menu.c32引導。接下來就是幾個menu選項的加入。這幾個選項的主要目的是設定啟動的選擇項。在命名時建議能夠設定成容易識別的名稱。

另外,注意menu default選項是指定,預設從那項啟動。

當然,使用menu時,還可以加入下面的一些引數來設定選項視窗的寬高比:

menu width 80	 /*設定寬度*/

menu margin 10

menu rows 12 /*設定行數*/

menu tabmsgrow 18

menu cmdlinerow 12

menu endrow 24

menu timeoutrow 20

這幾個選項可以新增,也可以不新增,可以均新增,也可以乙個都不新增。設定很方便。

此種啟動,都是字元模式,而且是用ascii碼繪製出來的。其優點是占用記憶體小,啟動快。缺點是介面單調。

使用vesamenu製作啟動介面

使用vesamenu啟動的方法與使用menu的使用方法基本是一致的。所不同的是default的引導項不一樣,此種模式下,default的啟動項要設定成vesamenu。

另外,vesamenu的預設背景色是灰色,如果想更換背景,可以加入menu background os102.png來更換背景。但是值得注意的是背景不能夠製作的過於絢麗,因為該如果比較絢麗,則無法被正常載入。

這種方法的有點在於啟動快,而且可以製作乙個圖形啟動介面。缺點是無法製作乙個比較絢麗的啟動介面。

使用bootlogo檔案製作啟動介面

使用bootlogo製作啟動介面的方法是,先製作乙個比較絢麗的bootlogo檔案。這個檔案是乙個加入的二進位制檔案,具體如何製作,還需要高手能夠幫忙指點一下,小弟還不是很清楚。另外,只需要在isolinux.cfg檔案中加入gfxboot bootlogo選項即可。

3.2)iso檔案的製作

在準備製作iso的目錄裡新增乙個子目錄,比如boot/isolinux/,然後放入 isolinux.cfg和乙個對所有光碟都一樣的isolinux提供的引導介質 isolinux.bin,當然還要放入相應的kernel,initrd等我們需要在引導時呼叫到的檔案,然後製作iso的時候要使用-b引數,來指明要使用isolinux.bin檔案啟動:

mkisofs -o output.iso /

-b boot/isolinux/isolinux.bin -c boot/isolinux/boot.cat /

-no-emul-boot -boot-load-size 4 -boot-info-table /

for-iso-dir/

最後的引數就是指定的光碟的目錄了,-c引數的那個檔案是自動生成的,不用太擔心,其餘引數都是固定的。事實上,也常常有人用isolinux/而不是 boot/isolinux/,這都是約定俗成的,你完全可以用自己的。這裡的路徑都是相對於光碟的根的,而和製作光碟時的工作目錄沒有關係。

定製自己的發行版或者liveusb,往往需要改動initrd,改動的方法如下:

在2.6以後的核心中,initrd的格式是gzip,此時,需要將它解壓縮為普通的檔案系統映象。

gzip -d initrd.img.gz
注意:gzip解壓縮需要識別檔案字尾名為gz,所以我們先要給檔案新增字尾名。

解壓縮以後,我們用file命令檢視,可以發現initrd.img的檔案格式發生了變化。

解壓縮以後,這是乙個cpio格式的檔案,需要將歸檔檔案開啟:

cpio -idv < initrd.img
啟動以後,執行init指令碼,實際上,如果我們想定製自己的發行辦,只是需要製作這個initrd和相關的iso檔案即可。製作過程和上述過程相反。

使用ISOLinux製作Linux系統安裝盤

任何乙個作業系統在任何乙個硬體平台上的執行都需要乙個引導的過程,即,初始化軟體環境 把核心從儲存介質放到記憶體當中去,並開始執行。當然對於某些簡單軟硬體系統,這個過程可能及其簡單,而對於 pc 就要略微複雜一些了。pc 的引導程式上承 bios,下接核心的初始化 雖然開一次機只執行一次後就不留痕跡了...

使用isolinux製作Linux啟動光碟

以前我們很多啟動盤採用的是loadlin引導linux核心的模式進行的 比如早期的slackware 也就是採用win98的dos啟動,然後通過loadlin工具引導我們的自己的linux核心,解開我們的安裝檔案系統。但是,隨著我們接觸的硬體機型多樣化,目前部分新裝置不能採用dos 或win98 引...

使用ISOLinux製作Linux系統安裝盤

任何乙個作業系統在任何乙個硬體平台上的執行都需要乙個引導的過程,即,初始化軟體環境 把核心從儲存介質放到記憶體當中去,並開始執行。當然對於某些簡單軟硬體系統,這個過程可能及其簡單,而對於 pc 就要略微複雜一些了。pc 的引導程式上承 bios,下接核心的初始化 雖然開一次機只執行一次後就不留痕跡了...