如何通过 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/p_w_picpaths 的目录及内容至 /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 p_w_picpath?" 请选择 USB 存储器上的首个分区,它应该会出现在 Hard drive 选单内,接着是便是 /dev/sda1 或对应首个 USB 分区的设备。
- 进行分割后,用户会被问要否安装 Grub 开机程序及在哪处安装它。当你以 USB 存储器开机后,BIOS 或许会以为 USB 存储器是首个碟盘。如果 USB 被视为首个设备,却想依般例把 Grub 开机程序安装至硬盘的 MBR 上,用户便需要运用 Grub 的高级安装选项更改硬盘的次序。
-
设置 Grub 安装选项后,以下错误信息或许会出现:Missing ISO 9660 p_w_picpath: The installer has tried to mount p_w_picpath #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/p_w_picpaths mkdir /media/DATA/centos mkdir /tmp/cdp_w_picpath mount -ro loop CentOS-5.4-i386-bin-1of6.iso /tmp/cdp_w_picpath 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/cdp_w_picpath/isolinux syslinux mv syslinux/isolinux.cfg syslinux/syslinux.cfg rm -f syslinux/isolinux.bin umount /tmp/cdp_w_picpath <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