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 光盘套装” 获取 CD 或 DVD 映像。

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

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

# cp debian.iso /dev/sdX
# sync

重要

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

The hybrid image on the stick does not occupy all the storage space, so it may be worth considering using the free space to hold firmware files or packages or any other files of your choice. This could be useful if you have only one stick or just want to keep everything you need on one device.

Create a second, FAT partition on the stick, mount the partition and copy or unpack the firmware onto it. For example:

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

You might have written the mini.iso to the USB stick. In this case the second partition doesn't have to be created as, very nicely, it will already be present. Unplugging and replugging the USB stick should make the two partitions visible.

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 或完整的 CD) 到里面。卸载 U 盘 (umount /mnt) 就完成了。

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

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

4.3.3.1. 给 U 盘分区

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

注意

由于大多数 U 盘预先设置了一个单独的 FAT16 分区,您可能不需要重新分区或者格式化 U 盘。如果必须要做,请使用 cfdisk 或者其他的分区工具来创建一个 FAT16 分区[3],安装 MBR 使用:

# install-mbr /dev/sdX

其中 install-mbr 命令包含在 mbr Debian 软件包内。然后建立文件系统:

# mkdosfs /dev/sdX1

注意,请使用 U 盘正确的设备名称。mkdosfs 命令包含在 dosfstools Debian 软件包内。

为了在 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) 文件名。

接下来,您需要创建一个 syslinux.cfg 配置文件,里面最少要包含下面两行(如果您使用 netboot 映象,修改内核文件名为 linux ):

default vmlinuz
append initrd=initrd.gz

对于图形安装程序,您需要添加 vga=788 到第二行尾部。还可以添加其他的参数。

添加 prompt 1 一行,使得引导提示符可以允许附加参数。

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



[3] 别忘记设置 bootable 引导标记。

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