如何設置一支 USB 儲存器來安裝 CentOS
|
以下程序已經被不同用戶所測試,但未必能涵蓋所有可能性。安裝者敬請留意。
推動力
很多新近的系統,尤其是筆記型及超輕型電腦,都未必擁有 CD 或 DVD 機,而視乎網絡連線及安裝器對網絡硬件的支援,進行網絡安裝可以是困難、不設實際、或根本不可能。這裡的程序容許你在沒有網絡連線、或其它安裝媒體的情況下,只利用一支可開機的 USB 裝置及目標系統的碟盤來安裝 CentOS。
CentOS-6
在一支 USB 儲存器上建立 CentOS 6.2 發行版本 —— 多謝 Mike Roth <m.roth@5-cent.us> 提供 CentOS-6 的步驟。
建議:8GB 或更大的 USB 儲存器。
- 把 USB 儲存器分割為兩個分割區:第一個是 FAT32,大約 10M;第二個是 ext3,佔用餘下的空間。
- 假若不是自動掛載的,請掛載 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 -i /dev/sdb1
卸下 /mnt/USB,然後
mount /dev/sdb2 /mnt/USB.
複製 .iso 檔至 /mnt/USB。切勿複製內容 —— 安裝器現在需要 .iso 檔本身,它會在安裝時自行掛載。
在 /mnt/USB 建立 grub.conf。如果你的系統要以 USB 儲存器作為首個碟盤,你必須這樣做,好讓你能把它複製至硬盤。
- 卸下 USB 儲存器,它已經準備好了。
CentOS-5
先決條件
- 一台支援以 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 分割區(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
- 建立檔案系統:
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(很不幸 —— 對不起)上的 SDHC Formatter 對不合作的 SD 媒體來說非常有好。請運用包含刪除及調整大小的完整格式化選項,而不是快速格式化的選項。
Format type - FULL(Erase ON) Format size adjustment ON
- 你或許會須要用 CD ISO 檔,因為有些人匯報 DVD 映像檔在 USB 儲存器上會出錯。本作者的 CD 及 DVD 映像檔都能正常運作。
- 嘗試以唯讀的 USB 媒體來進行安裝會產生大數有關唯讀媒體的錯誤信息。這些警告出現後我沒有嘗試繼續安裝。
|
- 採用 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 推薦這個方法。
論壇用戶 ron_l_j 推薦名為 iso2usb 的 Windows 工具。
有一位 CentOS 郵件列表的成員建議Pendrivelinux.com。
在 USB 儲存器上建立安裝碟的另一個做法。
在沒有網絡的情況下,另一個可行的方法就是按照安裝指南中所記載,用 USB 儲存器以 diskboot.img 開機,然後利用目標電腦上的 ISO 映像檔進行硬碟安裝。
這不是一則廣告,但 OSDisc.com 以相宜的價格發售多款載有 CentOS 的 USB 開機媒體。假如有人試用它們,煩請在論壇上作出匯報。
這頁的英文版由 PhilSchaffner 建立及維護。歡迎其他擁有編輯權限的 Wiki 貢獻者作出更正或添加。其他有意見的讀者可以在我的 Wiki 頁內找到聯絡資料。
Translation of revision 29
