4.4. 为从 USB 闪盘引导准备文件

您需要一台运行支持 USB 的 GNU/Linux 系统来为 USB 闪盘引导准备文件。您应该确定 usb-storage 内核模块已经被加载(modprobe usb-storage) 然后尝试找出 USB 闪盘被映射到的哪个 SCSI 设备(在此以 /dev/sda 为例)。为了写入您的闪盘,您可能需要关闭它的写保护开关。

注意,准备的 USB 闪盘应该至少有 128MB 的容量(在更小的尺寸安装也是可能的,请参考 第 4.4.2 节 “复制文件 — 灵活的方法”)。

4.4.1. 复制文件 — 轻松的途径

这里有一个合集文件 hd-media/boot.img.gz,其中包含了所有的安装程序文件(包括内核),以及 SYSLINUX 和它的配置文件。您只需要把它直接解压到您的 USB 闪盘内即可:

# zcat boot.img.gz > /dev/sda

警告

采用这种方法将销毁设备上的任何内容。请确保您使用了 USB 闪盘的正确设备名。

然后,挂载 USB 闪盘(mount /dev/sda /mnt),它上面应该已经具有 一个 FAT 文件系统 ,您再将一个 Debian netinst(网络安装) 或 businesscard(名片) ISO 映像拷贝到盘上。请注意文件名必须以 .iso 结尾。卸载闪盘(umount /mnt)后结束。

4.4.2. 复制文件 — 灵活的方法

如果您需要更多的灵活性或者只是想了解其间发生了什么,您应该使用如下的方法来把文件放到您的闪盘。

4.4.2.1. 在 Intel x86 上为 USB 闪盘分区

我们将展示如何使用闪盘的第一个分区,而不是整个设备。

注意

由于大多数 USB 闪盘预先设置了一个单独的 FAT16 分区,您可能不需要重新分区或者格式化 USB 闪盘。如果您必须这么做,请使用 cfdisk 或者其他的分区工具来创建一个 FAT16 分区并且输入:

# mkdosfs /dev/sda1

注意使用正确的 USB 盘设备名称。mkdosfs 命令包含在 dosfstools Debian 包中。

为了能在 USB 闪盘引导后启动内核,我们要在 USB 闪盘上放入一个启动引导程序。尽管任何引导装载程序(比如 LILO)都应该可以胜任这个工作,不过还是使用 SYSLINUX 更方便。主要原因是是它可以使用 FAT16 分区,而且只需要编辑一个文本文件就能对其进行配置。任何支持 FAT 文件系统的操作系统可以用来改变启动引导器的配置文件。

为了把 SYSLINUX 放到您的 USB 闪盘的 FAT16 分区上,请在您的系统中安装 syslinuxmtools 包,然后执行:

# syslinux /dev/sda1

再提醒一次,请确认您使用的是正确的设备名称。还有,一定不能在启动 SYSLINUX 的时候挂载该分区,因为在操作过程中会向分区的引导扇区写入数据并且创建包含启动引导器代码的 ldlinux.sys 文件。

接下来就是挂载分区(mount /dev/sda1 /mnt)以及将下列文件从 Debain 文件库拷贝到闪盘上:

  • vmlinuz (内核二进制文件)

  • initrd.gz (初始化内存映像)

  • syslinux.cfg (SYSLINUX 配置文件)

  • 可选的内核模块

如果您想给这些文件改名,请注意 SYSLINUX 只能处理 DOS (8.3) 格式的文件名。

syslinux.cfg 配置文件应该含有下列两行:

default vmlinuz
append initrd=initrd.gz ramdisk_size=12000 root=/dev/ram rw

请注意,根据所启动的内存映像的大小,在必要的时候,您可能需要增大ramdisk_size 参数的数值。如果引导失败,您可以尝试添加 devfs=mount,dall 到 “append” 那一行。

4.4.2.2. 添加 ISO 映像

现在您需要把任意一个 Debian ISO 映像(businesscard、netinst 或者甚至是完全版)放入您的 USB 闪盘内(如果它装得下的话)。这样的一个映像文件的后缀名必须是 .iso

如果您想直接通过网络安装而不使用 ISO 映像,当然就可以跳过上述步骤。并且您必须要使用 netboot 目录中的初始化内存映像来取代来自 hd-media 的相同文件。这是因为 hd-media/initrd.gz 并不包含网络支持。

当您完成后,卸载 USB 闪盘(umount /mnt)并打开写保护。

4.4.2.3. 从 USB 闪盘启动

警告

如果您的系统拒绝从 USB 闪盘引导,那么可能是因为它含有无效的主引导扇区记录(MBR)。您可以使用 install-mbr 命令来修复这个问题,该命令来自 mbr 软件包:

# install-mbr /dev/sda