基于USB接口的微型桌面Linux系統設計方案
1 引言
隨著USB 3.0 標準的發布,存儲容量為8GB 至128GB 的USB 接口移動存儲設備成為主流。由于USB盤體積小、攜帶方便、同時具有熱插拔功能,給移動數據存儲帶來了便利。而開源的Linux 操作系統具有的高可靠性和安全性、廣泛的硬件支持、靈活實用的可定制性等特點,使得Linux 桌面系統在辦公應用方面也逐步受到人們的青睞。如果在USB 接口的移動存儲設備上實現一個Linux 微型桌面系統,將是一個不錯選擇。然而,將標準的Linux 發行版系統安裝在USB盤上,將占用近2G 的存儲空間,其中有許多軟件我們移動辦公并不需要。同時,人們從數據安全性角度的考慮,希望在不使用原有宿主機操作系統和數據的前提下進行便捷的移動辦公。因此本文將從LFS 系統開始,在USB 盤上搭建Linux 微型桌面系統,實現操作系統與辦公娛樂軟件的一體化,并采用squashfs 文件系統壓縮技術,對整個系統進行壓縮,最后通過grub和initrd 實現系統的啟動。
2 微型桌面系統的構成
本文是在LFS Live CD 6.3 宿主系統上,通過LFS技術構建基本Linux 系統后,使用chroot 命令轉入基本系統,完成后續整個桌面系統的搭建。
基于USB 盤的微型桌面系統構成如圖1 所示,由以下幾部分組成的:
①啟動引導管理器:選用Grub 0.97.Grub 程序是計算機加電啟動,引導到USB 盤設備后運行的第一個程序,其目的是將Linux 內核從USB 盤加載到內核中。
然后轉由內核執行后續操作。
②內核:作為Linux 操作系統的核心,它負責管理進程調度、內存管理、虛擬文件系統、網絡接口、進程間通信,并提供對主板、顯卡、網卡、聲卡、存儲器、USB 設備等驅動的支持。由于是移動系統,面臨硬件平臺多樣性的問題,所以需要將一些常用基本驅動和USB 相關驅動編譯進內核,而將squashfs、aufs、聲卡、顯卡等相關支持以模塊的形式動態加載,這樣在減少內核鏡像大小的同時,提高了系統啟動時間。
③基本Linux 系統:包括能夠正常啟動字符界面的基本文件系統結構、最常用的應用程序、基本函數庫和相關的配置文件。
④圖形桌面系統:桌面系統采用xfce4.6.2,并安裝如下應用軟件:永中office 2009 辦公應用軟件(集Word、Excel、PowerPoint 于一體);fcitx 中文輸入法;MPlayer 媒體播放軟件;網絡配置工具軟件;遠程桌面連接控件軟件;QQ;Vnc;實驗室自主研發的播放瀏覽一體化的網絡瀏覽器Hfox[2];其他軟件:圖片查看器、文本編輯器、PDF 閱讀器、解壓縮軟件等。

圖1 基于USB 接口的微型桌面Linux 系統的組成
整個微型桌面系統安裝完成后要占用大約1.7GB磁盤空間,通過運行mksquashfs 命令壓縮成只讀系統鏡像system.squashfs(約495MB)。
3 關鍵技術
3.1 內核編譯
采用版本為2.6.27.27 的Linux 內核。為使系統更精簡,部分模塊將不會被編譯進內核:聲卡驅動模塊等。系統將由U 盤引導,需要將SCSI 設備、Usbcore、Usb-storage 、Loopback device support 、RAM disksupport 和Initrd 等編譯到內核中。
將Squshfs、AUFS 編譯成模塊,通過Initrd 引導加載。
常見的硬盤接口為IDE 和SATA,在Linux 中通常將這兩類硬盤標識為不同的盤符名。為了避免內核掛載U 盤根系統出現盤符名不一致的情況,需要將IDE 和SATA 硬盤中盤符統一成/dev/sdX,在內核編譯時需要加如下的選項:

編譯出來的內核會將這兩類硬盤同等對待。從而使不同接口硬盤的盤符名在Linux 中都統一為sdX,方便本系統的掛載。
3.2 LFS 構建系統
LFS(Linux From Scratch 的縮寫),是從源代碼開始搭建的Linux 系統。LFS 有以下幾個優點:
①LFS 是非常靈活的,可以根據自身需求定制。
②構建的LFS 系統是一個非常緊湊的系統,可以大大節省磁盤空間。
③LFS 可自定義安裝相關的安全補丁,系統有保障。
本文目的是設計一款微型桌面系統,根據其小巧靈活實用的特點,與使用標準的Linux 發行版和使用精簡的Linux 系統相比,LFS 更適合。
3.3 SquashFS+LZMA 只讀壓縮系統
構建一個小型或嵌入式Linux 系統,存儲設備(軟盤、U 盤等)的空間資源非常有限,因此壓縮應盡可能用在各個方面。
SquashFS 是一種在Linux 下使用的只讀壓縮文件系統,是目前最好的壓縮文件系統之一,它的目的是為通用只讀文件系統使用。目前,SquashFS 壓縮文件系統應用很廣,已在Linux Live CD 各發行版、嵌入式系統、以及在服務器及桌面系統中都有著大量的應用。
LZMA(Lempel-Ziv-Markov chain-Algorithm 的縮寫),是一個Deflate和LZ77算法改良和優化后的壓縮算法,是目前最好的壓縮算法之一。
SquashFS 默認的壓縮算法是GZIP,本文中采用給SquashFS 打補丁,使其支持LZMA 算法壓縮。實驗證明,通過LZMA 算法壓縮比GZIP 算法壓縮率更高,而壓縮時間比GZIP 算法稍長。通過對整個系統采用GZIP 和LZMA 算法進行Squashfs 壓縮,在壓縮時間和存儲空間的比較如表1 如示。

表1 兩種壓縮算法的比較
目前Linux 內核還不支持LZMA,在編譯內核時需要將CONFIG_SQUASHFS*中所有值置為N;再單獨將帶LZMA 支持的Squshfs 編譯成模塊,通過動態加載方式運行。
3.4 AUFS 聯合文件系統
AUFS( Another UnionFS 的縮寫), 是一個與UnionFS 類似的可堆疊聯合文件系統,它將多個目錄整合成單一的目錄,是Linux 文件系統聯合掛載的實現。
linux操作系統文章專題:linux操作系統詳解(linux不再難懂)linux相關文章:linux教程
評論