4.3. 为从 U 盘引导准备文件

为了准备 U 盘,您需要一台运行的支持 USB 的 GNU/Linux 系统。当前的 GNU/Linux 系统会在您插入 U 盘的时候自动识别。如果没有,您应该确认 usb-storage 内核模块是否已经被加载。U 盘插入后,它将被映射到名为 /dev/sdX 的设备,其中的 X 是 a-z 的字母。您可以通过运行 dmesg 在插入 U 盘后确认是否被正确映射。要写入信息,请要先打开它上面的写保护开关。

警告

采用这种方法将销毁设备上已有的任何内容!请确认您使用了正确的 U 盘设备名。如果搞错,比如写成硬盘,将造成该设备上的所有信息丢失。

4.3.1. 使用混合 CD 或 DVD 映像制作 U 盘

现在 Debian CD 和 DVD 映像可以直接写入 U 盘,这是非常简单的制作启动 U 盘的方法。只需为 U 盘选择一个合适的 CD 或 DVD 映像。参阅 第 4.1 节 “官方的 Debian GNU/Linux 光盘套装” 获取 CD 或 DVD 映像。

另外,对于只有几 M 的小容量 U 盘,您可以从 netboot 目录下载 mini.iso 映像(位于 第 4.2.1 节 “在哪里能找到安装映像”)。 [4]

您选中的 CD 或 DVD 映像应该被直接写入 U 盘,覆盖它当前的内容。例如,使用已有的 GNU/Linux 系统,CD 或 DVD 映像文件可以参照下面方法写入 U 盘,写之前请确认 U 盘已经卸载:

# cp debian.iso /dev/sdX
# sync

重要

对大多数用户来说,简单地把 CD 或 DVD 映像写入 U 盘已经够用。下面更为复杂的选项主要提供给有特殊需要的用户。

4.3.2. 手动复制文件到 U 盘。

另一种方法制作 U 盘是手动复制安装文件和 CD 映像。注意 U 盘最小容量为 1 GB (也可以使用较少容量,请参考 第 4.3.3 节 “手动复制文件到 U 盘 — 灵活的方法”)。

有一个文件合集 hd-media/boot.img.gz 包含所有的安装程序文件(包括内核) 以及 syslinux 和对应的配置文件

需要注意的是,虽然方便,但该方法有一个主要缺点:即使 U 盘容量更大,该设备的逻辑尺寸还是限制在 1 GB。如果您要该 U 盘作其他用途,需要为它重新分区,为剩余容量创建一个新的文件系统。

使用该映象只须将它直接解压到 U 盘:

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

然后,挂载 U 盘 (mount /dev/sdX /mnt), 现在上面有了 一个 FAT 文件系统 ,然后复制 Debian ISO 映像 (netinst、businesscard 或完整的 CD) 到里面。卸载 U 盘 (umount /mnt) 就完成了。

4.3.3. 手动复制文件到 U 盘 — 灵活的方法

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

4.3.3.1. 给 U 盘分区

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

注意

Since most USB sticks come pre-configured with a single FAT16 partition, you probably won't have to repartition or reformat the stick. If you have to do that anyway, use cfdisk or any other partitioning tool to create a FAT16 partition[5], install an MBR using:

# install-mbr /dev/sdX

The install-mbr command is contained in the mbr Debian package. Then create the filesystem using:

# mkdosfs /dev/sdX1

Take care that you use the correct device name for your USB stick. The mkdosfs command is contained in the dosfstools Debian package.

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

为了把 syslinux 放到 U 盘的 FAT16 分区上,请在您的系统中安装 syslinuxmtools 软件包,然后执行:

# syslinux /dev/sdX1

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

4.3.3.2. 添加安装程序映像

挂载分区(mount /dev/sdX1 /mnt)并复制下列安装程序映象文件到 U 盘:

  • vmlinuzlinux (内核二进制文件)

  • initrd.gz (初始化 ramdisk 映象)

你可以选择使用安装程序的文本或者图形界面。后者放在 gtk 子目录下面。如果需要改文件名,请注意 syslinux 只能处理 DOS (8.3) 文件名。

Next you should create a syslinux.cfg configuration file, which at a bare minimum should contain the following two lines (change the name of the kernel binary to linux if you used a netboot image):

default vmlinuz
append initrd=initrd.gz

For the graphical installer you should add vga=788 to the second line. Other parameters can be appended as desired.

To enable the boot prompt to permit further parameter appending, add a prompt 1 line.

如果您使用 hd-media 映象,现在应该复制 Debian ISO 映像文件[6] 到 U 盘。完成后,卸载 U 盘 (umount /mnt)。



[4] 有一个特殊的方法可以将固件加入 mini.iso。首先将 mini.iso 写入 U 盘。接着取得所需的固件。参阅 第 6.4 节 “加载缺失的固件” 了解固件信息。然后拔插 U 盘,会有两个分区出现在 U 盘上。您应该挂载第二个分区,并将固件解压到里面。

# mount /dev/sdX2 /mnt
# cd /mnt
# tar zxvf /path/to/firmware.tar.gz
# cd /
# umount

[5] Don't forget to set the bootable bootable flag.

[6] 您可以选择 businesscard、netinst 或完整 CD 映像 (参阅 第 4.1 节 “官方的 Debian GNU/Linux 光盘套装”)。确认选择合适的映象。注意 netboot mini.iso 映象并在这里并不适用。