構造Linux的圖形化安裝程序
這是一個(gè)向用戶(hù)介紹如何構造Linux的圖形化安裝程序的專(zhuān)欄。介紹的內容包括:安裝環(huán)境的定制,圖形化啟動(dòng),本地化支持,分區功能,如何支持reiserfs、raid、lvm,rpm包的安裝,定制各種啟動(dòng)配置腳本等等。本文是這個(gè)系列文章的第一篇,主要是向您介紹如何定制系統安裝環(huán)境,包括生成安裝內核,初始Ram盤(pán)的生成,最小化安裝環(huán)境的定制。
本文引用地址:http://dyxdggzs.com/article/201610/305962.htm自從Caldera推出了第一個(gè)Linux系統下的圖形化安裝程序以來(lái),現在的主流Linux發(fā)布大多都使用圖形化的安裝程序進(jìn)行系統環(huán)境的安裝,比如RedHat的安裝程序anaconda,Suse的安裝程序yast2,Caldera的安裝程序lizard,以及Mandrake的安裝程序gi。
這些主流廠(chǎng)商的安裝程序都有一個(gè)共同的特點(diǎn),就是它們都是先構造一個(gè)完備的最小化的Linux運行環(huán)境,定制Linux的啟動(dòng)過(guò)程,使得系統內核啟動(dòng)后,加載一個(gè)系統裝載程序,這個(gè)程序將定制好的Linux運行環(huán)境部分或者全部加載進(jìn)入內存,然后將控制轉移到圖形化安裝程序。最后再由此程序啟動(dòng)的圖形環(huán)境(XFree86),設置對應的語(yǔ)言環(huán)境,啟動(dòng)對應的系統安裝過(guò)程。
1 主流安裝程序簡(jiǎn)介
Caldera的安裝程序lizard是Linux世界的第一個(gè)圖形化安裝程序,它的全部程序使用c++語(yǔ)言編制,圖形化的風(fēng)格是基于kde和qt的。值得一提的是,caldera在定制圖形化安裝時(shí),修改了內核,實(shí)現了內核的圖形化啟動(dòng),同時(shí)其安裝程序的硬件檢測功能很強大,可以檢測到部分非即插即用的isa設備,而且還提供了類(lèi)似html風(fēng)格的幫助系統。因為安裝程序要求精煉的環(huán)境,而此時(shí)通用的XWindows窗口管理器是無(wú)法滿(mǎn)足需求的(太大而且占用資源太多),所以caldera中還提供了一個(gè)最小化的窗口管理器lwm。在caldera安裝系統包的過(guò)程中,您還可以玩吃豆子游戲,這也是lizard的一大創(chuàng )意。
Redhat的安裝程序anaconda可能是大家最熟悉的安裝程序之一。它的全部程序都是由Python完成。Python是一種面向對象的腳本語(yǔ)言,您可以在http://www.python.org獲得它的相關(guān)資料。Redhat使用Python Gtk作為圖形界面的開(kāi)發(fā)工具。在您解開(kāi)anaconda的源碼包之后,您會(huì )發(fā)現一個(gè)anaconda的文件,這是程序執行的主文件。它提供了一個(gè)最小化的slang庫以支持文本方式的安裝。Redhat的安裝程序最大的特點(diǎn)就是很穩健,支持的驅動(dòng)程序較多,對硬件的支持很強(這說(shuō)明Redhat安裝內核定制得非常好,而且得到了相當多的廠(chǎng)商支持)。但是Redhat安裝程序的功能不是特別強,比如對于reiserfs、lvm不提供支持,不支持中文安裝(7.2可能會(huì )推出中文版)。也有很多廠(chǎng)商的安裝程序是稍微修改了RedHat源碼構成的,比如VALinux、中科紅旗等。
對于Mandrake的安裝程序gi,它的全部程序都是使用Perl編制,您可以從Mandrake的CVS服務(wù)器上下載最新的安裝程序。Perl是一種功能強大的腳本語(yǔ)言,可以非常方便的處理Linux上的各種配置腳本,它的圖形界面使用Perl-GTK編制。Mandrake的安裝程序是第一種提供中文安裝的主流發(fā)布。它的安裝程序的特點(diǎn)是新,支持的功能相當多,包括配置復雜的文件系統,支持無(wú)線(xiàn)通訊設備,多種打印機支持等等。
Redhat和Mandrake的安裝程序都是由腳本構成的,它們雖然速度稍慢,但是其構成的安裝程序一般都比較穩定,而且便于移植到其他平臺上。Redhat的整個(gè)安裝環(huán)境是保存在一個(gè)stage2.img的文件里。您可用命令:
mount -o loop stage2.img /mnt/tmp
將其掛接到指定的目錄下,察看Redhat安裝程序的結構。Mandrake的安裝環(huán)境保存在mdkinst的目錄下。
2 安裝環(huán)境的構成
一個(gè)圖形化的安裝環(huán)境實(shí)際上就是一個(gè)最小化的Linux運行環(huán)境。一般由如下幾部分構成:Linux系統安裝內核,Linux系統的初始Ram磁盤(pán),系統運行所需的一些shell命令和程序所必需的系統庫,初始化程序,系統運行時(shí)必須的外部命令,XFree86子系統,字體集和本地化的環(huán)境設置,系統的桌面風(fēng)格和貼圖,鍵盤(pán)映射,設備配置數據庫,系統安裝程序等部分。
系統內核vmlinuz存在系統的啟動(dòng)映像之中,在系統啟動(dòng)時(shí)調入,然后Linux調入初始Ram磁盤(pán),由此Ram磁盤(pán)上的程序加載運行安裝程序的第一階段加載程序。這是個(gè)可執行程序,它一般執行加載硬盤(pán)驅動(dòng)模塊,將磁盤(pán)上的整個(gè)安裝環(huán)境調入內存,并作為根分區掛接。
這時(shí)就有一個(gè)在內存中的最小化的Linux系統了,一段映像程序結束運行,釋放自己所占的內存,并將控制轉移到真正的系統安裝程序。這時(shí)系統安裝程序開(kāi)始啟動(dòng)X(jué)Free86子系統,設置正確的本地化環(huán)境,包括本地化環(huán)境變量,字體集,正確的鍵盤(pán)映射等,這時(shí)就允許用戶(hù)進(jìn)行交互,從而在用戶(hù)的干預下,完成整個(gè)系統的安裝過(guò)程。
整個(gè)安裝過(guò)程的一般流程:
2.1 定制安裝內核
一個(gè)好的安裝程序內核是和安裝程序緊密相關(guān)的,它必須是完備的和精簡(jiǎn)的。完備的內核是指:如果安裝程序要對某方面的功能進(jìn)行支持的話(huà),必須在內核中也提供相應的支持。精簡(jiǎn)的內核是指:對于安裝程序不需要的功能,內核一定不要支持,而且能作為模塊存在的,就一定要把它設置為模塊。這樣定制出來(lái)的內核很小,保證了定制的內核以及必須的硬盤(pán)驅動(dòng)模塊能放入啟動(dòng)映像中。
例如,對于2.4.3內核一組選項是:(在下面的一組選項中沒(méi)有注明的選項,可以在定制安裝程序的內核時(shí)省略)
Loadable module support 可加載模塊支持
Enable loadable module support 將可加載模塊支持打入內核
Kernel module loader 將內核模塊加載器打入內核
Processor type and features 內核支持的處理器類(lèi)型
(386) Processor family 選擇386兼容方式編譯內核
Toshiba Laptop support 東芝筆記本支持作為模塊
(off) High Memory Support 對大于2GB的內存不提供支持
選擇386兼容方式是為了保證安裝程序具有良好的兼容性,在某種程度上來(lái)說(shuō),速度的快慢并不是衡量安裝程序的指標。一個(gè)好的安裝程序,應該具有高穩定性和高兼容性。
General setup 一般選項
Networking support 內核級網(wǎng)絡(luò )支持
PCI support 內核級PCI總線(xiàn)支持
(Any) PCI access mode PCI硬件的存取方式
EISA support 內核級EISA總線(xiàn)支持
Support for hot-pluggable devices 支持熱插拔設備
System V IPC SystemV的進(jìn)程間通訊機制
(ELF) Kernel core (/proc/kcore) format 內核文件格式為ELF
Kernel support for a.out binaries 內核模塊支持a.out文件
*> Kernel support for ELF binaries 內核支持ELF格式
Kernel support for MISC binaries 內核模塊支持其他的格式
對于網(wǎng)絡(luò )支持和IPC機制的內核支持是必須的,因為L(cháng)inux上的很多程序,即便它沒(méi)有進(jìn)行網(wǎng)絡(luò )通訊,它也用這些方式進(jìn)行進(jìn)程間通訊。對于ELF的內核支持也是必須的,因為安裝程序需要使用初始內存映像(initrd),這種方式需要調用程序完成一些初始化的工作,這就要求內核必須能夠支持ELF可執行文件格式。其他對于PCI、EISA設備的支持,是提高安裝內核硬件兼容性的必要選項。
Parallel port support 并行端口支持,要引入并口設備支持時(shí)
Parallel port support 模塊化的并行端口支持
PC-style hardware PC類(lèi)型的硬件
IEEE 1284 transfer modes IEEE 1284傳送模式支持(支持設備自檢)
對于并口而言,為了自動(dòng)檢測連接到并口的設備,必須將IEEE 1284傳送模式支持打入內核。對于不支持IEEE 1284傳送模式的并口設備,系統是無(wú)法進(jìn)行自動(dòng)檢測的。
Plug and Play configuration
Plug and Play support 模塊化的即插即用設備支持
ISA Plug and Play support 模塊化的ISA即插即用設備支持
在2.4.x內核中,對ISA Plug and Play設備的支持存在一些錯誤,對于部分設備,將此選項置入內核,設備是無(wú)法正常工作的。因此,建議在定制內核時(shí),對此類(lèi)設備的支持采用內核模塊方式。
Block devices 引入對塊設備的支持
*> RAM disk support 核心支持RAM磁盤(pán)
(4096) Default RAM disk size
Initial RAM disk (initrd) support
初始RAM磁盤(pán)的內核支持。因為安裝程序需要設置初始內存鏡像以加載設備模塊,所以這一選項對于安裝程序是必須的。
其他的選項都作為設備模塊存在,在需要時(shí)可以放入初始內存鏡像中。
Multi-device support (RAID and LVM)
Multiple devices driver support (RAID and LVM)
*> RAID support 將設備模塊md.o打入內核
如果將md.o不置入內核,僅為模塊方式,raid分區將無(wú)法作為根分區啟動(dòng)系統。這主要是因為raid設備需要在啟動(dòng)之初對硬盤(pán)進(jìn)行讀寫(xiě),以決定raid分區的位置,類(lèi)型等參數。
Linear (append) mode
RAID-0 (striping) mode
RAID-1 (mirroring) mode
RAID-4/RAID-5 mode
Multipath I/O support
Logical volu
評論