如何通過 USB 設備來安裝 CentOS

 

如何通過 USB 設備來安裝 CentOS

 

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

 

以下程序已經被不同用戶所測試,但未必能涵蓋所有可能性。CentOS 計劃並沒有一個官方的推薦做法,因爲獲支持的安裝程序是 anaconda,或者是 Live CD。 安裝者必須留意,及樂於嘗試。

 

推動力

 

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

 

CentOS-6

 

針對 CentOS-6,有位用戶推薦採用 livecd-tools 內的 livecd-iso-to-disk 於 DVD1 上。此方法已配合 EPEL 的 livecd-tools-13.4-1.el6 測試過。多謝論壇用戶 AndrewSerk 在討論中提出這個推薦。此外請也參閱郵件列表內這封郵件有關安裝 qemu 的必要性。

 

過時的方法

 

在一支 USB 存儲器上創建 CentOS 6.2 發行版本 —— 多謝 Mark Roth 提供 CentOS-6 的步驟,及 CentOS-Docs 郵件列表上的 Yves Bellefeuille 添加及修正內容。

推薦:8GB 或更大的 USB 存儲器。

  1. 把 USB 存儲器分割爲兩個分區:第一個是 FAT32,大約 250M;第二個是 ext3,佔用餘下的空間。(你需要一個 ext3 分區,因爲稍後複製的 ISO 文件尺寸超越 FAT32 或 VFAT 分區的最大容量。)
  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 /dev/sdb1 
  9. 卸下第一個 USB 分區,然後掛載第二個分區
    umount /mnt/USB
    mount /dev/sdb2 /mnt/USB
  10. 複製 .iso 檔至 /mnt/USB。請勿使用 LiveCD 或 LiveDVD。選用 DVD1、minimal CD ISO、或按照將 CD 媒體轉爲 DVD而製成的混合 DVD1/DVD2。切勿複製內容 —— 安裝器現在需要 .iso 檔本身,它會在安裝時自行掛載,跟隨上游的安裝指南在同樣的分區創建一個存放鏡像文件的目錄。要是你採用 DVD1,而且在安裝時將會用到 DVD2,你可選擇加上 DVD2。

  11. 可選:在 /mnt/USB 創建 grub.conf。如果你的系統要以 USB 存儲器作爲首個碟盤,你或許需要這樣做,好讓你稍後能把它複製至硬盤。如需指引,請參考 HowTos/GrubInstallation 第二節。

  12. 卸下 USB 存儲器,它已經準備好了。
  13. 採用 USB 媒體來開機,方法就是在 BIOS 設置它爲首個開機設備,或在某些 BIOS 下於 POST 後按 F12 鍵來選擇開機設備。
  14. 在安裝過程中,用戶會被問到 "What type of media contains the installation image?" 請選擇 USB 存儲器上的首個分區,它應該會出現在 Hard drive 選單內,接着是便是 /dev/sda1 或對應首個 USB 分區的設備。
  15. 進行分割後,用戶會被問要否安裝 Grub 開機程序及在哪處安裝它。當你以 USB 存儲器開機後,BIOS 或許會以爲 USB 存儲器是首個碟盤。如果 USB 被視爲首個設備,卻想依般例把 Grub 開機程序安裝至硬盤的 MBR 上,用戶便需要運用 Grub 的高級安裝選項更改硬盤的次序。
  16. 設置 Grub 安裝選項後,以下錯誤信息或許會出現:Missing ISO 9660 image: The installer has tried to mount image #1, but cannot find it on the hard drive。安裝程序正在 USB 存儲器的首個分區上尋找 ISO 檔,但它位於第二個分區。請按 Ctrl-Alt-F2 進入有指令殼的終端機,然後卸下 USB 的首個分區

    umount /mnt/isodir
    掛載 USB 設備上的第二個分區。它第同於上述 #14 採用的設備 —— 舉個例說
    mount -t ext3 /dev/sda2 /mnt/isodir
    返回安裝程序(Ctrl-Alt-F6)及選擇 Retry。
  17. 在沒有接上 USB 設備的情況下結束安裝及重新開機。要是你在開機時遇上問題,開機記錄很可能被寫進錯誤的設備內。見如何重新安裝開機管理程序(GRUB),要是你在辨認正確的設備上遇到困難,見排除 GRUB 的問題

 

CentOS-5

 

注:上述推薦給 CentOS-6,採用 livecd-tools 內 livecd-iso-to-disk 的方法也許更可取,但本作者未試用過它。

 

先決條件

 

  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 分區(20 MB 應該已足夠了)及一個大的 Linux 分區。請將 VFAT 分區設置爲可開機的。

    fdisk /dev/sdg 
    在 fdisk 利用 m 來顯示項目選單。指令的次序大概是這樣(去除 # 註譯):
    d # 刪除現有分區 —— 按需要重複
    n # 新增分區
    p # 主分區
    1 # 分區編號
    <enter> # 採用缺省值
    +20m # 增加 20 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 媒體。將它轉到目標系統,開機並進行安裝。

 

備註

 

  • 一般信息可參閱安裝指南

  • 在測試這個程序的過程中,某些 MicroSDHC 媒體不能運作,就算重新分割及格式化後,在寫入所有 iso 映像檔時均出現錯誤。來自另一個生產商的同類型媒體卻沒有問題。假如你遇上問題,請試用另一張媒體,或者在格式化後重試。Windows(很不幸 —— 對不起)上的 Panasonic SDHC Formatter 對不合作的 SD 媒體來說非常有好。請運用包含刪除及調整尺寸的完整格式化選項,而不是快速格式化的選項。

    Format type - FULL(Erase ON) 
    Format size adjustment ON
    
  • 你或許會須要用 CD ISO 檔,因爲有些人彙報 DVD 映像檔在 USB 存儲器上會出錯。本作者的 CD 及 DVD 映像檔都能正常運作。
  • 嘗試以只讀的 USB 媒體來進行安裝會產生大數有關只讀媒體的錯誤信息。這些警告出現後我沒有嘗試繼續安裝。

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

 

  • 採用 extlinux 較 syslinux 也許更可取,因爲它不須應用 FAT 分區。

 


 

  • 多謝 John Doe 在以下的 CentOS 郵件列表電郵內提供了基本的數據:

http://lists.centos.org/pipermail/centos/2009-June/077860.html


 

  • 來自 OP 的額外註釋:

唔,是我的錯……我是用 kickstart 檔的(並且用 HP 磁盤數組控制器),而我忘記了我須要在當中加入:

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

 

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

  • 在 syslinux/syslinux.cfg:

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

  • 在 /media/DATA/ks.cfg(內裏的相關部份):

 

  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 檔放置在存儲器上,便可直接利用它作安裝之用。

 


 

 


 

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

 


 

 


 

 


 

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

 


 

 


 

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

 


 

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

Translation of revision 46

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章