歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> 關於Linux >> 使用isolinux制作liveUSB

使用isolinux制作liveUSB

日期:2017/3/1 13:39:52   编辑:關於Linux

摘要:在linux的啟動過程中,控制權需要從biso轉移到引導程序再轉移到系統內核。其中,引導程序有很多種,包括lilo,grub等,本文我們講解的是isolinux。通過學習isolinux的引導方式,我們將能學習到如何制作“從USB啟動的系統”。同時,如果你想定做自己的linux發行版,你應該如何做?這些,我們都能在學習isolinux的時候找到答案。最後,本文其他系列的文章還將教你如何定制自己的系統。

1.isolinux是什麼

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

\

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

2.isolinux的構造

引導程序isolinux.bin:它的作用是讀取isolinux.cfg,根據配置選項,決定引導的內核文件。

配置文件isolinux.cfg:它的格式如下:

label linux
  kernel vmlinuz
  append initrd=initrd26.gz ramdisk_size=1000000 vga=791
關於cfg文件中相關配置選項的意義,大致如下:

必須選項:

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

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

可選選項:略

系統啟動內核:initrd

嚴格說來,initrd並不是引導程序的一部分,而是內核程序的一部分。關於initrd的做作用和相關介紹可以參考這裡:http://blog.csdn.net/trochiluses/article/details/17583991

initrd文件很好制作,可以將Linux系統啟動時的initrd文件作為一個基本文件,在裡面修改即可。如果有需要添加的內容,直接將linux系統中的相應文件拷貝進去就可以了。另外,initrd下面的啟動腳本是init文件,建議根據自己的需求修改該文件,該文件是一個用shell寫的腳本。在Linux系統啟動時,加載完成內核以後,就開始調用該腳本了,所以有什麼需要啟動的,都可以在該腳本中添加。甚至可以將該腳本作為一個自己安裝,修復等的基本腳本來做。

3.制作實例

我們的目標是利用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
append initrd=cpio.gz rdinit=/init
label bad
menu label Bad hardware install
kernel vmlinuz
append initrd=cpio2.gz badhardware rdinit=/init

可以看的出來,這裡的主要調整是,調整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/,這都是約定俗成的,你完全可以用自己的。這裡的路徑都是相對於光盤的根的,而和制作光盤時的工作目錄沒有關系。

4.總結

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

在2.6以後的內核中,initrd的格式是gzip,此時,需要將它解壓縮為普通的文件系統鏡像。

gzip -d initrd.img.gz
注意:gzip解壓縮需要識別文件後綴名為gz,所以我們先要給文件添加後綴名。

解壓縮以後,我們用file命令查看,可以發現initrd.img的文件格式發生了變化。

解壓縮以後,這是一個cpio格式的文件,需要將歸檔文件打開:

cpio -idv initrd.img < initrd.img
啟動以後,執行init腳本,實際上,如果我們想定制自己的發行辦,只是需要制作這個initrd和相關的iso文件即可。制作過程和上述過程相反。
Copyright © Linux教程網 All Rights Reserved