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

为了准备 U 盘,推荐使用一台正在运行的支持 USB 的 GNU/Linux 系统。当前的 GNU/Linux 系统会在您插入 U 盘的时候自动识别。如果没有,您应该确认 usb-storage 内核模块是否已经被加载。U 盘插入后,它将被映射到名为 /dev/sdX 的设备,其中的 X 是 a-z 的字母。您可以通过在插入 U 盘前后运行 lsblk 命令来查看 U 盘被映射到哪个设备名。(查看 dmesg 命令的输出(以 root 用户运行)也是一种方法。)要写入信息,您需要先关闭 U 盘的写保护开关。

[警告] 警告

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

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

针对此架构的 Debian安装映像是采用 isohybrid 技术创建的,这意味着它们可以被直接写入 U 盘,这是非常简单的制作安装介质的方法。只需为 U 盘选择一个大小合适的映像(如 netint、CD 或 DVD-1)。参阅 第 4.1 节 “官方的 Debian GNU/Linux 安装映像” 获取安装映像。

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

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

# cp debian.iso /dev/sdX
# sync

在其它操作系统上如何做的信息可以在Debian CD FAQ中找到。

[重要] 重要

映像必须写入整个盘设备上而不是分区上,例如 /dev/sdb 而不是 /dev/sdb1。不要使用 unetbootin 的工具,它会更改映像。

[重要] 重要

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

U 盘上的混合映像不占据所有的存储空间,所以可以考虑使用空余的空间来保存您需要保存的固件文件、软件包或任何其它文件。如果您只有一块 U 盘或者想将所有东西保存在同一个设备上,这会很有用。

要如此做,请使用 cfdisk 或者任何其他的分区工具在 U 盘上创建额外的分区。然后,在分区上创建一个(FAT)文件系统,挂载它,并将固件复制或者解压进分区,例如:

# mkdosfs -n FIRMWARE /dev/sdX3
# mount /dev/sdX3 /mnt
# cd /mnt
# tar zxvf /path/to/firmware.tar.gz
# cd /
# umount /mnt

注意使用符合您的 U 盘的正确的分区名。mkdosfs 命令包含于 dosfstools Debian 软件包。

[注意] 注意

如果您选择将 mini.iso 写到 U 盘上,则不必建立第二个分区,因为很棒的是,它将已经存在。拔下再插上 U 盘就可以看到两个分区。

4.3.2. 手动复制文件到 U 盘

在 isohybrid 技术用于 Debian 安装介质之前,下面章节描述的方法曾用于准备安装介质以从 USB 设备启动。这些方法已经被 第 4.3.1 节 “使用混合 CD/DVD 映像制作 U 盘” 描述的技术取代,但本文档仍保留这部分内容,以供教学和存档目的,并且某些用户也可能需要它们。

第 4.3.1 节 “使用混合 CD/DVD 映像制作 U 盘” 不同的另一种方法是手动将安装文件和安装映像复制到 U 盘。注意 U 盘的最小容量为 1 GB(如果您使用 netboot 的文件,则也可以使用更小的容量,请参考 第 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;参见 第 4.1 节 “官方的 Debian GNU/Linux 安装映像”)到里面。卸载 U 盘 (umount /mnt) 就完成了。

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

如果您需要更多的灵活性,或者只是想了解其间发生了什么,应该使用如下的方法来把文件放到 U 盘。使用这个方法的一个优点是,— 如果 U 盘的足够大—,那么可以选择将任何 ISO 映像复制到上面,甚至是 DVD 映像。

4.3.3.1. 分区和添加 boot loader

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

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

首先,您需要在您的系统上安装 syslinuxmtools 软件包。

[注意] 注意

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

# cat /usr/lib/syslinux/mbr/mbr.bin 
>/dev/sdX

现在,使用以下命令创建文件系统:

# mkdosfs /dev/sdX1

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

现在,既然已经有了正确分区的 U 盘,您需要使用以下命令来在 FAT16 分区上安装 syslinux

# syslinux /dev/sdX1

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

4.3.3.2. 添加安装程序文件

这里可以选择两种不同的安装方式:hd-media 方式需要 U 盘上有 ISO 安装映像,以加载安装程序模块和基本系统。netboot 安装程序则会从 Debian 镜像站点加载上述文件。

根据您的选择,您需要从任意 Debian 镜像站点的 debian/dists/bullseye/main/installer-i386/current/images/ 目录的 hd-media 或者 netboot 子目录下载一些安装程序文件:

  • vmlinuzlinux(内核二进制文件)

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

您可以选择安装程序的文本版本(直接能在 hd-media 或 netboot 下找到的文件)或者图形版本(在对应的 gtk 子目录寻找)。

接下来就是挂载分区(mount /dev/sdX1 /mnt),然后复制下载的文件到 U 盘的根目录。

接下来需要在 U 盘根目录创建一个名为 syslinux.cfg 的纯文本 syslinux 配置文件,里面最少要包含下面的行:

default vmlinuz initrd=initrd.gz

如果您使用了来自 netboot 的文件,请将内核二进制文件的名称改为 linux

对于图形安装程序(来自 gtk),您需要在行末添加 vga=788。您还可以添加您想添加的其他参数。

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

如果您使用了来自 hd-media 的文件,您需要现在将 Debian 安装映像 ISO 文件复制到 U 盘上。(对于 netboot 方法,则不需要这一步。)

您可以选择 netinst 或完整 CD/DVD 映像(参阅 第 4.1 节 “官方的 Debian GNU/Linux 安装映像”)。请选择适合您 U 盘大小的映像。注意 netboot mini.iso 映象在这里并不适用。

完成后,卸载 U 盘(umount /mnt)。



[3] 别忘记激活 bootable 标记。