如何设置一支 USB 存储器来安装 CentOS

<!> 其它用家比较喜欢「另类方法」部份内的某些做法,而且已证实适用于 CentOS-6。

以下程序已经被不同用户所测试,但未必能涵盖所有可能性。安装者敬请留意。

推动力

很多新近的系统,尤其是笔记型及超轻量计算机,都未必拥有 CD 或 DVD 机,而视乎网络连接及安装器对网络硬件的支持,进行网络安装可以是困难、不设实际、或根本不可能。这里的程序容许你在没有网络连接、或其它安装媒体的情况下,只利用一支可开机的 USB 设备及目标系统的碟盘来安装 CentOS。

CentOS-6

在一支 USB 存储器上创建 CentOS 6.2 发行版本 —— 多谢 Mike Roth <m.roth@5-cent.us> 提供 CentOS-6 的步骤。

推荐:8GB 或更大的 USB 存储器。

  1. 把 USB 存储器分割为两个分区:第一个是 FAT32,大约 10M;第二个是 ext3,占用余下的空间。
  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 -i /dev/sdb1
    
  9. 卸下 /mnt/USB,然后

    mount /dev/sdb2 /mnt/USB.
    
  10. 复制 .iso 档至 /mnt/USB。切勿复制内容 —— 安装器现在需要 .iso 档本身,它会在安装时自行挂载。

  11. /mnt/USB 创建 grub.conf。如果你的系统要以 USB 存储器作为首个碟盘,你必须这样做,好让你能把它复制至硬盘。

  12. 卸下 USB 存储器,它已经准备好了。

CentOS-5

先决条件

  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 分区(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
    
  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 媒体。将它转到目标系统,开机并进行安装。

备注

<!> 进行安装时,请确保 Anaconda 安装程序将开机记录写入正确位置,而不是在 USB 存储器内。你多数须要用 GRUB 的「高级开机程序选项」来更改设备的次序,把目标开机设备放在清单的顶部,好让 GRUB 能被正确地安装。假如你没有这样做,GRUB 开机程序便会被写入 USB 存储器,你必须在存储器重装 syslinux MBR 才能运作,而且系统不能开机。如果你落在这个境况中,请参阅 zh/TipsAndTricks/ReinstallGRUB 这篇文章,及/或参阅 SuperGRUB


多谢 John Doe 在以下的 CentOS 邮件列表电邮内提供了基本的数据: http://lists.centos.org/pipermail/centos/2009-June/077860.html


来自 OP 的额外注释: 唔,是我的错……我是用 kickstart 档的(并且用 HP 磁盘数组控制器),而我忘记了我须要在当中加入:

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

kickstart 方面,我采用以下设置:

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

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


论坛用户 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

zh/HowTos/InstallFromUSBkey (last edited 2012-02-06 03:47:53 by TimothyLee)