如何設置一支 USB 儲存器來安裝 CentOS

<!> 其它用家比較喜歡「另類方法」部份內的某些做法,而且已證實適用於 CentOS-6。

以下程序已經被不同用戶所測試,但未必能涵蓋所有可能性。安裝者敬請留意。

推動力

很多新近的系統,尤其是筆記型及超輕型電腦,都未必擁有 CD 或 DVD 機,而視乎網絡連線及安裝器對網絡硬件的支援,進行網絡安裝可以是困難、不設實際、或根本不可能。這裡的程序容許你在沒有網絡連線、或其它安裝媒體的情況下,只利用一支可開機的 USB 裝置及目標系統的碟盤來安裝 CentOS。

CentOS-6

在一支 USB 儲存器上建立 CentOS 6.2 發行版本 —— 多謝 Mike Roth <m.roth@5-cent.us> 提供 CentOS-6 的步驟。

建議:8GB 或更大的 USB 儲存器。

  1. 把 USB 儲存器分割為兩個分割區:第一個是 FAT32,大約 10M;第二個是 ext3,佔用餘下的空間。
  2. 假若不是自動掛載的,請掛載 DVD(在 /media 或 /mnt 上)。下面假設是 /mnt/USB 及 /mnt/DVD。
  3. 掛載 USB 儲存器在 /mnt/USB/ 上。

  4. 複製 /mnt/DVD/isolinux 的目錄及內容至 /mnt/USB/

  5. /mnt/USB/isolinux 改名為 /mnt/USB/syslinux

  6. /mnt/USB/syslinux/isolinux.cfg 改名為 /mnt/USB/syslinux/syslinux.cfg

  7. 複製 /mnt/DVD/images 的目錄及內容至 /mnt/USB/。(有一個錯誤已被匯報,因為截至 2012 年 1 月 11 日,安裝時需要 .iso(參考下文),但 linux rescue 需要映像的內容來載入程式及執行。)

  8. 假設 USB 儲存器是 /dev/sdb
    syslinux /dev/sdb
    syslinux -i /dev/sdb1
    
  9. 卸下 /mnt/USB,然後

    mount /dev/sdb2 /mnt/USB.
    
  10. 複製 .iso 檔至 /mnt/USB。切勿複製內容 —— 安裝器現在需要 .iso 檔本身,它會在安裝時自行掛載。

  11. /mnt/USB 建立 grub.conf。如果你的系統要以 USB 儲存器作為首個碟盤,你必須這樣做,好讓你能把它複製至硬盤。

  12. 卸下 USB 儲存器,它已經準備好了。

CentOS-5

先決條件

  1. 一台支援以 USB 媒體開機的目標安裝系統。這可能須要在 BIOS 設置內設定。
  2. 一支擁有足夠空間來容納安裝媒體的 USB 儲存器 —— 又名:記憶棒、快閃儲存器、手指儲存器、等。CentOS 5.4 i386 應該能夠放置在一支 4GB 儲存器內,x86_64 需要多過 4GB,而一支的 1GB 儲存器應該可支援透過首張光碟進行最小安裝。同樣的技巧亦適用於家居的 USB 硬碟。這裡假設了整個程序是已圖像介面(GNOME/KDE/等)進行,因此這個 USB 媒體將會被自動掛載。
  3. 一台可用的 Linux 系統(Linux 多數安裝在另一台電腦上、運行於 Live CD、或者在一虛擬機器上),連同 syslinux(假若未安裝的話,"yum install syslinux" 或者以發行版本的原生套件管理程式安裝)。本作者在使用 CentOS-5.3/5.4 的 syslinux 套件時遇上了問題。由 CentOS 的 LiveCD Tools 軟件庫所提供的套件卻能正常運作。

  4. 一套針對所需架構的 CentOS 安裝 CD ISO 映像,或 DVD ISO 映像。

你或許會需要更改裝置名稱、架構、及/或 syslinux 路徑來配合你安裝了的發行版本、情況、及喜好。

當剪貼以下指令時,請留心地按你的處境作出調整!

程序

假設 USB 儲存器以 /dev/sdg 出現(請按你的處境調整 —— 這很大機會是不相同的)而 CentOS 5.4 i386 將會被安裝。

  1. 成為 root 用戶。在 USB 媒體上建立一個細小的 VFAT 分割區(100 MB 應該已足夠了)及一個大的 Linux 分割區。請將 VFAT 分割區設定為可開機的。

    fdisk /dev/sdg
    
    在 fdisk 利用 m 來顯示項目選單。指令的次序大概是這樣(去除 # 註譯):
    d # 刪除現有分割區 —— 按需要重複
    n # 新增分割區
    p # 主分割區
    1 # 分割區編號
    <enter> # 採用預設值
    +10m # 增加 10 MB
    t # 更改類型
    1 # 分割區編號
    b # VFAT
    n # 新增分割區
    p # 主分割區
    2 # 分割區編號
    <enter> # 採用預設值
    <enter> # 採用預設值
    a # 切換可開機旗標
    1 # 分割區編號
    w # 寫入磁碟
    
    在完成後應該類似這個樣子:
    Disk /dev/sdg: 7948 MB, 7948206080 bytes
    81 heads, 10 sectors/track, 19165 cylinders
    Units = cylinders of 810 * 512 = 414720 bytes
    Disk identifier: 0x00000000
    
       Device Boot      Start         End      Blocks   Id  System
    /dev/sdg1   *           1          65       26320    b  W95 FAT32
    /dev/sdg2              66       19165     7735500   83  Linux
    
  2. 建立檔案系統:
    mkfs.vfat -n BOOT /dev/sdg1
    mkfs.ext2 -m 0 -b 4096 -L DATA /dev/sdg2
    
    拔出後再插入這個 USB 媒體。這些分割區現在應該被掛載在 /media/BOOT 及 /media/DATA。
  3. 複製 CentOS 的 ISO 檔到那個 ext2 分割區內。針對 CD 映像檔:
    cd /dir/of/iso/images
    mkdir /media/DATA/centos
    mkdir /tmp/cdimage
    mount -ro loop CentOS-5.4-i386-bin-1of6.iso /tmp/cdimage
    cp *sum* /media/DATA/centos
    for i in 1 2 3 4 5 6; do cp -v CentOS-5.4-i386-bin-${i}of6.iso /media/DATA/centos/; sync; done
    cd /media/DATA/centos
    grep of6 sha1sum.txt | sha1sum -c - CentOS-5.4-i386-bin-?of6.iso
    
    針對 DVD 映像樣,請用下面兩行取代上面的 for 迴圈
    cp -v CentOS-5.4-i386-bin-DVD.iso /media/DATA/centos/; sync
    cd /media/DATA/centos
    grep DVD sha1sum.txt | sha1sum -c - CentOS-5.4-i386-bin-DVD.iso
    
  4. 在 VFAT 分割區及 MBR 內安裝並設定 syslinux:
    syslinux -s /dev/sdg1
    dd if=/usr/share/syslinux/mbr.bin of=/dev/sdg
    cd /media/BOOT
    cp -rv /tmp/cdimage/isolinux syslinux
    mv syslinux/isolinux.cfg syslinux/syslinux.cfg
    rm -f syslinux/isolinux.bin
    umount /tmp/cdimage
    <your-favorite-editor> syslinux/syslinux.cfg
    
    在各部份的 append 語句內加入:
      method=hd:sda2:/centos
    
    若然要採用 kickstart:
      ks=hd:sda2:/ks.cfg method=hd:sda2:/centos
    
  5. 使用圖像介面來「安全地移除」這個 USB 媒體。將它移至目標系統,開機並進行安裝。

備註

<!> 進行安裝時,請確保 Anaconda 安裝程式將開機記錄寫入正確位置,而不是在 USB 儲存器內。你多數須要用 GRUB 的「進階開機程式選項」來更改裝置的次序,把目標開機裝置放在清單的頂部,好讓 GRUB 能被正確地安裝。假如你沒有這樣做,GRUB 開機程式便會被寫入 USB 儲存器,你必須在儲存器重裝 syslinux MBR 才能運作,而且系統無法開機。如果你落在這個境況中,請參閱 zh-tw/TipsAndTricks/ReinstallGRUB 這篇文章,及/或參閱 SuperGRUB


多謝 John Doe 在以下的 CentOS 郵件列表電郵內提供了基本的資料: http://lists.centos.org/pipermail/centos/2009-June/077860.html


來自 OP 的額外註釋: 唔,是我的錯……我是用 kickstart 檔的(並且用 HP 磁碟陣列控制器),而我忘記了我須要在當中加入:

 bootloader --driveorder=cciss/c0d0,sda --location=mbr

kickstart 方面,我採用以下設定:

  append initrd=initrd.img ks=hd:sda2:/ks.cfg method=hd:sda2:/centos

  harddrive --partition=sda2 --dir=/centos
  ignoredisk --drives=sda
  bootloader --driveorder=cciss/c0d0,sda --location=mbr

此外,老實的說,我不應該領任何功勞;我在網上找到大部份的資料…… _

早前我亦匯報了:

  1. 我的 HP 伺服器似乎不願意用唯讀的 USB 儲存器開機。
  2. Anaconda 過早嘗試讀取 ks.cfg……假如我在硬件偵測完成後(只是 2-3 秒後)重試,那便沒有問題。
  3. 有一句 "cannot mount read/write, will mount read-only" 的錯誤信息出現(我喜歡唯讀模式)

另類方法

UNetbootin 也許是最受歡迎的「外來」方法。它同時備有 Windows 及 Linux 的執行檔,助你把不同的 Linux 發行版本,包括 CentOS,建立為開機用的 USB 儲存器。它曾經有一個 anaconda 錯誤可導致媒體無法使用 —— 這個錯誤在 Fedora 13 已獲修正,在 RHEL/CentOS-6 上理應一樣。論壇上有用戶匯報它至少適用於 CentOS-6 的 netinstall ISO。當使用 netinstall ISO 時,你可以把整隻安裝碟的 ISO 檔複製到 USB 媒體的根目錄裡,然後選擇「硬盤」安裝。


Marcus Moeller 的建議:

livecd-iso-to-disk 更棒,你可透過 git 取得它:

http://git.fedorahosted.org/git/?p=livecd;a=blob_plain;f=tools/livecd-iso-to-disk.sh;hb=HEAD

下載後,chmod +x 然後執行它:

./livecd-iso-to-disk.sh /path/to/iso /dev/partition_of_your_usb_stick

你也可加上這個選項:

--overlay-size-mb 1024

為儲存器加上持續功能專用的空間。

你無須再把 ISO 檔放置在儲存器上,便可直接利用它作安裝之用。


論壇用戶 Al_Stu 推薦這個方法


論壇用戶 ron_l_j 推薦名為 iso2usb 的 Windows 工具。


有一位 CentOS 郵件列表的成員建議Pendrivelinux.com


在 USB 儲存器上建立安裝碟的另一個做法。


在沒有網絡的情況下,另一個可行的方法就是按照安裝指南中所記載,用 USB 儲存器以 diskboot.img 開機,然後利用目標電腦上的 ISO 映像檔進行硬碟安裝。


這不是一則廣告,但 OSDisc.com 以相宜的價格發售多款載有 CentOS 的 USB 開機媒體。假如有人試用它們,煩請在論壇上作出匯報。


這頁的英文版由 PhilSchaffner 建立及維護。歡迎其他擁有編輯權限的 Wiki 貢獻者作出更正或添加。其他有意見的讀者可以在我的 Wiki 頁內找到聯絡資料。

Translation of revision 29

zh-tw/HowTos/InstallFromUSBkey (last edited 2012-02-06 03:47:51 by TimothyLee)