从 FreeBSD UFS2 分区启动 Linux Live 工具

从 FreeBSD UFS2 分区启动 Linux Live 工具

我想启动 Live Linux CD,而不需要 CD。以 GParted 或 CloneZilla 为例。我定期从它们的 Live CD 启动。但我想消除使用 CD/DVD 介质的麻烦,因为它速度慢、噪音大且容易出错(光盘上有划痕)。我更愿意从我的服务/维修 PC 的硬盘加载这些工具,我使用 Grub2 在 Win7 (NTFS) 和 FreeBSD (UFS2) 之间进行双启动。

我已经在 Google 上搜索过足够多的信息,了解到启动 ISO 映像效果不佳(并且我也知道原因),而解决这个问题的方法是提取 Live CD 的内容并直接启动这些文件。

以下是我目前所做的事情:

  • 将 ISO 映像中的文件复制到 UFS2 分区上的文件夹中。
  • 将 Live CD 的 isolinux 菜单项转换为 grub2 子菜单。

当我在系统启动时选择其中一个子菜单项时,该条目开始启动,但是在屏幕上出现一些有希望的输出后,它开始多次吐出同样令人失望的消息。

modprobe: module unknown not found in modules.dep

我非常清楚它失败的原因和地点。但我对这些 Live Linux 版本的架构和内部工作原理了解不够,无法采取下一步行动。而且我对此进行的网络搜索没有给我有用的结果。

作为一个实际示例,我将在此使用 GParted Live CD 中的文件。相关文件包括:

  • 文件系统.包
  • 文件系统.squashfs
  • 初始化系统映像
  • 维姆林兹

我将它们放在我的 UFS2 分区 ada0s2a(grub2 术语中的“hd0,msdos2,bsd1”)的 /boot/Gparted/live/ 下。

我从 Live CD 的 syslinux 条目组装的 grub2 条目是...

menuentry "GParted Live" {
  insmod part_msdos
  insmod ufs2
  set root=(hd0,msdos2,bsd1)
  linux /boot/Gparted/live/vmlinuz boot=live config noswap ip=frommedia nosplash
  initrd /boot/GParted/live/initrd.img
}

以及“GParted Live (to RAM)”条目,其中包含所有相同的行,但

  linux /boot/GParted/live/vmlinuz boot=live config noswap noprompt toram=filesystem.squashfs ip=frommedia nosplash

在我看来文件系统.包这些条目中未提及文件。同样,我不知道 Linux 启动过程应该如何工作,但我确信我遇到的问题是因为加载的 kernel+initrd 试图使用 filesystem.packages 或 filesystem.squashfs 映像中保存的数据,但找不到它们。

为了解决这个问题,我应该帮助内核,告诉它这些图像文件在哪里。问题是,我该怎么做?我在哪里做?

参考文件系统.包可能在初始化系统映像某处。我可以使用枪械太平洋保险协会提取该映像文件的内容。但我仍然不知道要查找什么。而且,我不确定加载的 linux kernel+initrd.img 是否可以访问我的 UFS2(非 Linux)文件系统上的文件。也许我应该将文件放在单独的 Ext2 分区上。

欢迎提出建议、解释和指点!

答案1

找到解决方案!

硬盘上的 GParted Live页面很好地描述了需要做什么才能启动GParted 直播从复制到硬盘文件夹中的文件。我还在 SuperUser 上找到了一些与我的问题类似的问题。我还找到了

http://www.kernel.org/doc/Documentation/kernel-parameters.txt

https://www.kernel.org/doc/Documentation/x86/boot.txt

这两篇文档都是各自主题的优秀文档,但事实证明它们对我的问题毫无用处。首先,因为它们包含太多细节,无法通读;其次,它们没有包含我所寻找的论据。因此,我故意在这里以文本形式而非链接形式展示它们。

需要注意几个重要细节:

  • 如果文件位于我的 UFS2 分区上,Live 系统将无法正常启动,因为基于 Debian 的 GParted 映像无法访问 ufs 文件系统。这与以下事实相矛盾:当我启动实际的 Live CD 并打开 XTerm 时,我总是可以挂载我的 UFS2 分区。显然,此 ufs 处理功能出现在启动过程的后期阶段。
  • 但是,如果文件位于我的 NTFS 分区上,Live 系统可以正常启动。因此,我不需要创建单独的 Linux 友好型 Ext2、Ext3、Ext4 或 FAT 分区。我可以使用双启动配置的另一个 (Win7) 分区。
  • “GParted Live on Hard Disk”页面包含一个替代解决方案,让 grub2 将实际 ISO 映像挂载为循环设备,然后从该设备启动。这种可能性非常符合我的喜好,但我从未设法让它工作。
  • 在阅读“硬盘上的 GParted Live”页面后,我让一切正常工作的实际方法非常简单,只用了不到 5 分钟。我将其应用于我很久以前下载的现有 gparted-live-0.16.1-1-i486 版本。一切按我想要的方式工作后,我尝试使用最新(撰写本文时为 2016 年 5 月 25 日)gparted-live-0.26.0-2-i686 版本(使用 ZIP,因为我无法安装 ISO),但这一直无法正常启动。只是说说而已!所以您可能需要尝试多个版本才能获得可行的解决方案。

有效做法如下:

将我原帖中提到的 GParted ISO(或 ZIP)中的四个文件复制到我的 NTFS 分区上的 /GParted/ 文件夹中。您可以将文件夹命名为任何您想要的名称,只需记住稍后引用该确切名称即可。然后创建一个 grub2 菜单项,如下所示:

menuentry "GParted Live" {
  insmod part_msdos
  insmod ntfs
  set root=(hd0,msdos1)
  linux /GParted/vmlinuz boot=live config union=aufs noswap noprompt ip=frommedia live-media-path=/GParted bootfrom=/dev/sda1 toram=filesystem.squashfs
  initrd /GParted/initrd.img
}

希望这可以帮助其他人解决类似的问题!

相关内容