如何设置一支 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
