从外部 USB 驱动器上的映像启动 Debian Linux

从外部 USB 驱动器上的映像启动 Debian Linux

我有一个带有一个大 VFAT 分区的外部 USB 硬盘。为了偶尔在 Windows 系统上运行 Linux,我想在debianroot.img外部硬盘的 VFAT 分区上的一个大文件(例如)中维护 Debian Linux 安装。

我从现有的 Linux 系统创建安装。我知道如何为 创建回送设备debianroot.img,如何在那里创建和挂载 ext3 文件系统,并且我可以使用(例如)在目标位置安装 Debian debootstrap。我只是不熟悉启动过程。

我的 bios 支持从 USB 设备启动,因此将启动管理器写入外部硬盘的 MBR 并从那里启动应该可以。但我不确定哪个启动管理器最适合(grub?),标准 Debian 内核是否有足够的选项,我是否/如何配置初始 ramdisk 设备(initrd),以及如何在外部硬盘上正确获取启动文件。

乍一看,回送根文件系统 HOWTO似乎包含非常有用的信息,但它看起来已经过时了(1999 年),而且它不是针对 Debian 的。

答案1

关于 bootmanager:当使用 FAT 作为文件系统时,syslinux 是一种方法。特别是当从 USB 启动时,您可能考虑使用 grub 进行启动,因为 grub shell 会很灵活(提供很好的制表符补全功能)。要安装 grub,您需要运行类似以下程序:

mount /dev/sdX /mnt/
grub-install --recheck --no-floppy --root-directory=/mnt /dev/sdX

并相应地调整 /boot/grub/menu.lst。

您的引导程序必须加载内核和 initrd。因此,这些文件必须位于 debianroot.img 之外(除非您使用 ISO 方法和带有回送选项的 grub2,请参阅http://michael-prokop.at/blog/2009/05/25/boot-an-iso-via-grub2/) 并且需要在引导加载程序中引用/配置 (对于 syslinux 为 syslinux.cfg,对于 grub1 为 menu.lst,对于 grub2 为 grub.cfg)。以下是用于 grml live 系统的示例 menu.lst 文件 (http://grml.org/) 由 grml2usb 生成 (http://grml.org/grml2usb/):

# misc options:
timeout 30
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
foreground  = 000000
background  = FFCC33

title grml  - Default boot (using 1024x768 framebuffer)
kernel (hd0,0)/boot/release/grml/linux26 apm=power-off vga=791 quiet boot=live nomce live-media-path=/live/grml/ 
initrd (hd0,0)/boot/release/grml/initrd.gz

initrd 文件必须找到设备上的 debianroot.img 并将其回送挂载。然后它应该通过例如 pivot_root 更改您的根文件系统(请参阅http://linux.die.net/man/8/pivot_root) 到已挂载的环回文件内部。您可以在 Linux 内核源代码的 Documentation/initrd.txt 中找到有关 initrd 进程的更多详细信息:http://lxr.linux.no/linux/Documentation/initrd.txt

如果你想知道常见的实时系统是如何做这种事情的,请查看 debian-live (http://debian-live.alioth.debian.org/)或 grml-live(http://grml.org/grml-live/) 与 live-initramfs 结合使用(它可以完成 initrd/initramfs 的所有功能,并在大多数基于 Debian 的实时系统中使用;http://packages.debian.org/sid/live-initramfs)。

与 debianroot.img 方法不同的是,该方法与现有的基于 Debian 的 Linux Live 系统有关,该系统提供所谓的“根持久性”(例如,官方 Debian-live 项目和 grml 2009.05 都提供此功能)。

答案2

如果要将文件系统保留为 VFAT,请使用系统Linux

答案3

您有几个问题需要解决:

1) 从 USB 驱动器启动。

2)获取引导加载程序以加载内核和initrd。

3)设置系统,使其能够转向“/”分区。

第一步很简单,你让 BIOS 启动 USB 设备,然后执行 grub-install 之类的操作来更改 MBR。请注意,第二步和第三步是不同的步骤。人们通常有一个单独的小型 /boot 分区,grub 可以读取该分区,grub 可以在其中找到内核、initrd 等。你只能使用 grub 可以理解的设备和设置类型。我不确定,但我非常确定你无法让 grub 挂载回送文件系统来访问 /boot。

重新分区驱动器并为 /boot 创建 ext2/3 分区可能会更好。您仍然必须解决设置 initrd 和内核的问题,以便将回送文件系统挂载到“/”,但这听起来是可行的。

相关内容