獲得外置驅動器是一種為較老設備注入生機的極好方法,或者允許您在不能(或不想)改變內置硬盤驅動器的機器上運行 Linux。 假設您想在雙引導系統中使用 Linux,但計算機硬盤驅動器中沒有任何可用空間。一個解決方案就是使用“活動的”Linux 發行版,如 Knoppix,它可以直接從 CD 運行。如果是偶爾使用,這種方法確實可行,但是它有許多嚴重的缺點: - 您仍需要一些數據文件的永久存儲。如果僅使用非常小的文件,可以使用軟盤;對於中等大小的文件,USB 閃存盤可能就足夠了,但是它們都不是理想的方法。 - 當使用“活動的”CD 時,要安裝自己的應用程序或定制現有應用程序會非常困難,甚至不可能。 - 使用活動發行版會降低性能,最顯著的就是當啟動檢測所有設備時 —— 但運行時也會降低性能(因為所有東西都必須從 CD 加載,這通常要比從硬盤驅動器加載慢得多)。 自然,還有其他選擇。例如,可以買其他內置驅動器並在其中安裝 Linux。但常見的情況是,機器中可能沒有任何可用的驅動器托架(筆記本電腦更是如此,它通常僅允許一個內置硬盤驅動器)。 或者,您可以使用更大的驅動器替代當前的驅動器,並在由此得到的額外空間中安裝 Linux。不過,這是一個花費時間的選擇,因為它需要您在新的驅動器上重新安裝現有 OS 系統,重新安裝和重新配置所有應用程序及還原所有數據。 一種更好的解決方案是購買外置硬盤驅動器,並在其中安裝 Linux。這使您可以不更改現有硬件和軟件,僅在想使用 Linux 的時候連接外置驅動器即可。
可移動驅動器選項 可在其中安裝 Linux 的移動設備的范圍包括從軟盤驅動器到 USB 閃存設備,再到 USB/FireWire 硬盤驅動器等等。 雖然的確可能將 Linux 安裝在小容量的設備中,如 1.44 MB 軟盤或 32 MB USB 盤,但這些通常(必然)都是專門的經過縮減的發行版,例如,用於拯救損壞的安裝。 不過,外置硬盤驅動器以合理的成本為通用的 Linux 發行版提供最多的靈活性。 外置驅動器來自許多不同的制造商(Maxtor、Western Digital 等等),可以有各種不同的大小。這些驅動器都包含一個外置盒,放置標准 3-1/2 英寸或 2-1/2 英寸 IDE 驅動器。這些驅動器通常都通過 USB 或 IEEE1394(FireWire)連接到計算機上。 USB 有兩個主要版本,1.1 和 2.0。版本 1.1 最大傳輸速度為 12 Mbit/s(兆比特/秒),而版本 2.0 支持最高達 480 Mbit/s 的傳輸速度。雖然大多數兼容 2.0 的驅動器都可向後兼容 1.1,但是一般最好避免使用 1.1,除非別無選擇(因為它的速度比較慢)。 FireWire 標准還定義了許多不同的可能速度,但是實際上,無論何時人們說到 FireWire,他們都是指“FireWire400”,它支持最高達 400 Mbit/s 的傳輸。 從速度來看,在 USB 2.0 和 FireWire 之間沒什麼可選擇的:雖然 USB 2.0 報出的速度較高,實際上因為協議不同,它們都是差不多的。如果您的計算機兩者都有,或許使用 USB 更好,而不是 FireWire(後面我會講明原因),但是如果僅有 FireWire,則當然只能選擇 FireWire。為了獲得最大的靈活性,從大量支持 USB 2.0 和 FireWire 的驅動器中選擇一個(比如,我在本文稍後使用的驅動器)。 對於沒有所需端口、PCI(對於台式電腦)和 PCMCIA(對於筆記本電腦)的計算機,可以很便宜地買到 FireWire 和 USB 2.0 卡:例如,我在本文後面使用的 PCMCIA FireWire 卡大概是用 10 GBP(不到 20 美元)買到的。 為了完成本文,我購買了 5-1/4 英寸外置驅動器盒。這是非常靈活的盤盒,它不與任何驅動器一起提供,可以裝入任何標准 IDE 設備,包括 3-1/2 英寸硬盤驅動器和 5-1/4 英寸 IDE 設備,如 CD-RW/DVD-RW 驅動器。該盤盒具有 USB 2.0 和 FireWire 連接。 為了將盤盒連接到我的 IBM Thinkpad T30 筆記本電腦,我還購買了 PCMCIA FireWire 卡(內置 USB 端口僅支持 USB 1.1)。 盤盒和 FireWire 卡都比較便宜(分別是 50 GBP 和 10 GBP)。 出於測試目的,我將盤盒與我准備的 13GB 3-1/2 英寸 IDE 驅動器連接 —— 在實際使用時,我會購買更大容量的驅動器,這些驅動器現在也非常便宜(大約每 GB 50 GBP!)
Linux 支持 正如您可能期望的那樣,Linux 對這些盤盒的支持確實很好。任何遵守“大容量存儲設備”的 SBP(Serial Bus Protocol)標准的設備都可以很容易地與 Linux 一起使用。 一般來說,要啟用對這些設備的支持,內核需要支持許多內容(直接編譯或通過模塊)。 對於 USB 和 FireWire,SBP 設備支持都通過 SCSI 仿真實現 —— 即,設備顯示給 Linux 就好像它們是 SCSI 磁盤一樣。這是在 Linux 中抽象存儲設備的一種通用方法(例如,IDE CD/DVD 驅動器也通常使用 SCSI 仿真連接)。因此,需要下列內核支持: - SCSI 支持 - SCSI 仿真 - SCSI 磁盤支持 另外,根據連接方法,還會需要下列支持: - 對於 FireWire: - IEEE1394 支持 - OHCI1394 支持 - RAW1394 支持 - SBP-2 支持 - 對於 USB: - (主機端)USB 支持 - OHCI 支持 - UHCI 支持 - USB 大容量存儲支持 顯然,您必須完全正常支持其他硬件(顯卡等等),根據您實際的硬件情況,可能還需要一些其他模塊。 例如,我使用 PCMCIA (cardbus) FireWire 卡,所以需要添加: - PCMCIA 支持 - cardbus 支持
安裝 現在我們有了外置設備,將開始在其中安裝 Linux。 現在安裝 Linux 的最容易的方法(當然是我的觀點)是連接所有硬件(在這裡,包含插入 PCMCIA FireWire 卡、將 FireWire 線纜連到 PCMCIA 卡和驅動器上、打開驅動器的電源開關);然後使用您選擇的發行版的安裝 CD 來引導計算機。 我選擇的發行版是 Gentoo(請參閱參考資料獲得相關鏈接),所以我使用最新的“Universal” x86 Live CD (2004.1)。其他發行版所需的步驟應該會比這裡講述的步驟多或者少。 一旦已經使用安裝 CD 引導,如果幸運的話,它應該已經識別了您的驅動器。驅動器應該顯示為 /dev/sdX 下的磁盤,其中 X 是從“a”開始的小寫字母。在我的系統中,外置驅動器被檢測為 /dev/sda,但是如果您有其他 SCSI 磁盤(模擬的 SCSI 磁盤),這將發生變化;在那種情況下,它可能是 /dev/sdb 或其他字母。如果驅動器沒有被自動檢測,可能需要進一步的步驟 —— 例如,您可能必須通過引導選項來啟用 FireWire 或 PCMCIA,或者可能必須手工加載一些內核模塊或類似的其他項(請參閱參考資料獲得故障排除指南的鏈接)。 一旦驅動器已經被識別,就考慮安裝的其余部分而言,它應該確實像內置硬盤驅動器一樣運轉;所以您應該可以根據需要對其進行分區和像平常一樣安裝 Linux。 不過,提醒一句:當決定安裝引導加載程序(通常是 GRUB 或 LILO)的位置時一定要小心 —— 我建議不要將其安裝在 Master Boot Record (MBR)(通常默認就是這樣)中。而是應該安裝在外置驅動器的根分區(或引導分區,如果使用單獨的引導加載程序)中。 現在我們已經在設備中安裝了 Linux,接著要引導 Linux。從這裡可以開始有一些技巧。
引導 在討論引導新的驅動器之前,需要了解一些引導加載程序理論。 引導加載程序通常安裝在計算機第一個硬盤的 MBR 中。調用引導加載程序時(BIOS 自動執行 MBR 中的代碼),它通常顯示可以引導的 OS 的菜單。選擇一個給定 OS 引導。 關於此場景應該注意兩點: - OS 選擇菜單(通常)從磁盤加載。 - 要引導相關 OS,引導加載程序需要從磁盤讀取相關內核。 由於以上操作在加載 OS 之前發生,它意味著所有磁盤讀取都必須通過 BIOS 調用的方式發生。這會涉及嚴重的問題:即為了直接引導磁盤,您的 BIOS 必須支持通過 FireWire 或 USB 連接的磁盤。這通常可以看作從這些類型的磁盤引導的一個 BIOS 選項。實際上 FireWire BIOS 支持當前很少見,但 USB 支持正在變得相當普遍。因此,如果您在相對較新的計算機中使用 USB,應該可以直接在 Linux 中引導驅動器。 在外置驅動器的 MBR 中安裝了 GRUB 之後,當通過 USB 連接時,我可以直接引導該驅動器。當引導連接的磁盤時很簡單地進入了 BIOS 設置程序。外置磁盤將顯示為普通的硬盤驅動器:移動該磁盤使它在引導順序中位於內置驅動器之前。 我也可以在內置驅動器的 MBR 中安裝引導加載程序,並使用它引導 USB 驅動器(這時它在 GRUB 中顯示為 hd1 in GRUB)。如果您使用 FireWire,有可能 BIOS 不能直接引導驅動器,將需要一些其他操作。 幸運地是,因為 Linux 的靈活性,如果您不能直接引導(使用 PCMCIA FireWire 卡,我的情況肯定是這樣!),會有相當簡單的解決方案。可以從支持的設備(如軟盤驅動器、CD、USB key 或主驅動器上的微小分區)執行初始引導步驟,然後使用外置驅動器進行其他操作。
構建引導映像 可以使用兩種方法引導: ? 一階段引導 內核引導、安裝根文件系統,並通過調用初始化腳本(通常是 /sbin/init)繼續進行初始化。 ? 兩階段(initrd)引導 內核引導、安裝初始 ram 磁盤(initrd),執行進一步的可定制初始化,然後安裝根文件系統並繼續