我在北京中關村的一家以服務器,存儲爲主要產品的公司供職售前職位。公司的售後部門經常要給客戶安裝系統和存儲。安裝系統傳統的方式就是通過光驅,而光驅和光盤因爲種種原因經常出現各種問題而無法安裝系統。比如光盤劃傷,光驅的讀盤糾錯能力差等。
爲了解決這個問題,我開始嘗試用U盤來安裝各種系統(Linux,Windows,Vmware),最重要的是能把各種操作系統的安裝集成在一個U盤中。首先要解決的問題是如何引導U盤,經過選型,最終確定了兩種引導加載程序。Syslinux和Grub4dos。另外,還有兩個虛擬磁盤驅動程序,WinVBlock和FiraDISK,用於在安裝Windows時加載虛擬磁盤。下面介紹一下這幾種程序。
SYSLINUX是一個輕量級的 IBM PC 兼容機啓動程序套裝,其主要開發者爲H. Peter Anvin,遵循GNU General Public License協議。
SYSLINUX包含幾個獨立的系統:
SYSLINUX 從FAT和NTFS文件系統開機(如軟盤和USB塊設備) ISOLINUX 從CD-ROM ISO 9660 文件系統開機 PXELINUX 從設置了預啓動執行環境(preboot execute environment)的網絡服務器開機 EXTLINUX 從Linux的ext2/ext3/ext4或Btrfs文件系統開機 MEMDISK 內存映射盤,用來啓動一些比較舊的操作系統(如DOS),通常與PXELINUX和ISOLINUX配合使用
SYSLINUX包含於各中Linux發行版中。從SYSLINUX4開始,EXTLINUX和SYSLINUX已經整合在一起了,而且從4.06版之後開始支持NTFS文件系統。從6.00版本之後開始支持EFI啓動。我們可以從 http://www.syslinux.org/ 查看Syslinux這個項目的最新動態,從 https://www.kernel.org/pub/linux/utils/boot/syslinux/ 下載最新的SYSLINUX版本。
SYSLINUX的啓動過程:
1. BIOS開機主動執行,識別第一個可開機的設備
2. BIOS調用INT 13(disk driver)中斷,在實模式下調取MBR硬盤第一個扇區的446字節開機管理程序(bootloader)
3.MBR查找活動的分區,找到後啓動分區引導程序。如果是ext或fat系列文件系統,ldlinux.sys開始的扇區是被寫死到卷啓動記錄程序裏的,卷啓動程序將執行(ldlinux.sys)。如果是btrfs,ldlinux.sys將被存儲在卷啓動記錄之後的扇區上。
4.SYSLINUX完全加載後,它會查找提供選單的syslinux.cfg或isolinux.cfg或者extlinux.conf。
5.加載配置文件供用戶選擇。
6.載入用戶選擇的內核文件或轉交其它loader處理。
7.開始操作系統的功能。
Grub4DOS 是一個將Linux下的GNU GRUB啓動程序移植到dos和windows下的一個分支,該項目是由tinybit(不點)於2003年發起的,目前活躍的開發者主要有tinybit,bean,chenall,roy和karyonix等。現在已經發展爲面向廣闊應用領域的啓動引導程序。它的兼容性做的比較好。最新版本是0.4.6a。穩定版本爲0.4.4。它兼容所有的GURB 0.97命令,功能比較全。
下載地址:https://code.google.com/p/grub4dos-chenall/downloads/
WinVBlock 是一個開源的Windows虛擬磁盤支持驅動,它支持內存磁盤,支持從MEMDISK和GRUB4DOS啓動。也就是說它能夠檢測到MEMDISK或GRUB4DOS映射出來的塊設備(光盤,硬盤和軟盤)並供Windows讀寫。主要用於Windows XP和Windows2003 系統。它的作者是Sha0 Miller,於2009年6月10日創建。
官方地址:http://reboot.pro/topic/8168-winvblock/
FiraDISK與WinVBlock類似,同樣是爲了讓Windows能夠識別到GRUB4DOS映射出來的磁盤,模擬SCSI 卡。但是支持的Windows系統更爲廣泛,經過我的測試可以從Windows XP支持到現在的Windows 2012。現在最新的版本爲v0.0.1.30。它的作者是karyonix,創建與2009年8月22日。
官方地址在:http://reboot.pro/topic/8804-firadisk-latest-00130/
參考資料
The Syslinux Project http://www.syslinux.org/wiki/index.php/The_Syslinux_Project
維基百科的SYSLINUX介紹 http://zh.wikipedia.org/zh/SYSLINUX
維基百科的Grub4Dos介紹 http://zh.wikipedia.org/zh-cn/Grub4Dos
注:
GNU是GNU is NotUnix 的簡寫
1. 經過GPL授權的軟件就可以稱爲自由軟件,任何人都可以擁有它。
2. 開發 GPL 的團體(或商業企業)可以經由該軟件的服務來取得服務的費用。
3. 經過 GPL 授權的軟件,其屬於Opensource 的情況,所以應公佈其原始碼。
4. 任何人皆可修改由 GPL 授權過的軟件,使其符合自己的需求。
5. 經過修改過後 Opensource 應該回饋給 Linux 社羣。