如何通過 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 存儲器。
- 把 USB 存儲器分割爲兩個分區:第一個是 FAT32,大約 250M;第二個是 ext3,佔用餘下的空間。(你需要一個 ext3 分區,因爲稍後複製的 ISO 文件尺寸超越 FAT32 或 VFAT 分區的最大容量。)
- 假若不是自動掛載的,請掛載 DVD(在 /media 或 /mnt 上)。下面假設是 /mnt/USB 及 /mnt/DVD。
-
掛載 USB 存儲器在 /mnt/USB/ 上。
-
複製 /mnt/DVD/isolinux 的目錄及內容至 /mnt/USB/。
-
把 /mnt/USB/isolinux 換名爲 /mnt/USB/syslinux
-
把 /mnt/USB/syslinux/isolinux.cfg 換名爲 /mnt/USB/syslinux/syslinux.cfg
-
複製 /mnt/DVD/images 的目錄及內容至 /mnt/USB/。(有一個錯誤已被彙報,因爲截至 2012 年 1 月 11 日,安裝時需要 .iso(參考下文),但 linux rescue 需要映像的內容來裝入程序及執行。)
- 假設 USB 存儲器是 /dev/sdb
syslinux /dev/sdb syslinux /dev/sdb1
- 卸下第一個 USB 分區,然後掛載第二個分區
umount /mnt/USB mount /dev/sdb2 /mnt/USB
-
複製 .iso 檔至 /mnt/USB。請勿使用 LiveCD 或 LiveDVD。選用 DVD1、minimal CD ISO、或按照將 CD 媒體轉爲 DVD而製成的混合 DVD1/DVD2。切勿複製內容 —— 安裝器現在需要 .iso 檔本身,它會在安裝時自行掛載,跟隨上游的安裝指南在同樣的分區創建一個存放鏡像文件的目錄。要是你採用 DVD1,而且在安裝時將會用到 DVD2,你可選擇加上 DVD2。
-
可選:在 /mnt/USB 創建 grub.conf。如果你的系統要以 USB 存儲器作爲首個碟盤,你或許需要這樣做,好讓你稍後能把它複製至硬盤。如需指引,請參考 HowTos/GrubInstallation 第二節。
- 卸下 USB 存儲器,它已經準備好了。
- 採用 USB 媒體來開機,方法就是在 BIOS 設置它爲首個開機設備,或在某些 BIOS 下於 POST 後按 F12 鍵來選擇開機設備。
- 在安裝過程中,用戶會被問到 "What type of media contains the installation image?" 請選擇 USB 存儲器上的首個分區,它應該會出現在 Hard drive 選單內,接着是便是 /dev/sda1 或對應首個 USB 分區的設備。
- 進行分割後,用戶會被問要否安裝 Grub 開機程序及在哪處安裝它。當你以 USB 存儲器開機後,BIOS 或許會以爲 USB 存儲器是首個碟盤。如果 USB 被視爲首個設備,卻想依般例把 Grub 開機程序安裝至硬盤的 MBR 上,用戶便需要運用 Grub 的高級安裝選項更改硬盤的次序。
-
設置 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。 -
在沒有接上 USB 設備的情況下結束安裝及重新開機。要是你在開機時遇上問題,開機記錄很可能被寫進錯誤的設備內。見如何重新安裝開機管理程序(GRUB),要是你在辨認正確的設備上遇到困難,見排除 GRUB 的問題。
CentOS-5
注:上述推薦給 CentOS-6,採用 livecd-tools 內 livecd-iso-to-disk 的方法也許更可取,但本作者未試用過它。
先決條件
- 一臺支持以 USB 媒體開機的目標安裝系統。這可能須要在 BIOS 設置內設置。
- 一支擁有足夠空間來容納安裝媒體的 USB 存儲器 —— 又名:記憶棒、快閃存儲器、手指存儲器、等。CentOS 5.4 i386 應該能夠放置在一支 4GB 存儲器內,x86_64 需要多過 4GB,而一支的 1GB 存儲器應該可支持通過首張光盤進行最小安裝。同樣的技巧亦適用於家居的 USB 硬盤。這裏假設了整個程序是已圖像界面(GNOME/KDE/等)進行,因此這個 USB 媒體將會被自動掛載。
-
一臺可用的 Linux 系統(Linux 多數安裝在另一臺計算機上、運行於 Live CD、或者在一虛擬機器上),連同 syslinux(假若未安裝的話,"yum install syslinux" 或者以發行版本的原生組件管理程序安裝)。本作者在使用 CentOS-5.3/5.4 的 syslinux 組件時遇上了問題。由 CentOS 的 LiveCD Tools 軟件庫所提供的組件卻能正常運作。
- 一套針對所需結構的 CentOS 安裝 CD ISO 映像,或 DVD ISO 映像。
你或許會需要更改設備名稱、結構、及/或 syslinux 路徑來配合你安裝了的發行版本、情況、及首選。
當剪貼以下指令時,請留心地按你的處境作出調整!
程序
假設 USB 存儲器以 /dev/sdg 出現(請按你的處境調整 —— 這很大機會是不相同的)而 CentOS 5.4 i386 將會被安裝。
-
成爲 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
- 創建文件系統:
mkfs.vfat -n BOOT /dev/sdg1 mkfs.ext2 -m 0 -b 4096 -L DATA /dev/sdg2
拔出後再插入這個 USB 媒體。這些分區現在應該被掛載在 /media/BOOT 及 /media/DATA。 - 複製 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
- 在 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
- 使用圖像界面來「安全地刪除」這個 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
此外,老實的說,我不應該領任何功勞;我在網上找到大部份的數據…… _
早前我亦彙報了:
- 我的 HP 服務器似乎不願意用只讀的 USB 存儲器開機。
- Anaconda 過早嘗試讀入 ks.cfg……假如我在硬件檢測完成後(只是 2-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 推薦這個方法。
-
在 USB 存儲器上創建安裝碟的另一個做法。
-
在沒有網絡的情況下,另一個可行的方法就是按照安裝指南中所記載,用 USB 存儲器以 diskboot.img 開機,然後利用目標計算機上的 ISO 映像檔進行硬盤安裝。
-
論壇用戶 ixeous 描述利用 GRUB2 來創建一支開機用的 USB 存儲器以備不時之需。
-
這不是一則廣告,但 OSDisc.com 以相宜的價格發售多款載有 CentOS 的 USB 開機媒體。假如有人試用它們,煩請在論壇上作出彙報。
-
這頁的英文版由 PhilSchaffner 創建及維護。歡迎其它擁有編輯權限的 Wiki 貢獻者作出更正或添加。其它有意見的讀者可以在他的 Wiki 頁內找到聯絡數據。
Translation of revision 46