linux - 如何修改linux内核以在启动时挂载vhd文件并从中加载系统?

标签 linux kernel boot vhd

我想修改linux内核,以便它可以挂载vhd文件并从中启动...请给我一些想法!正如我们所知,Linux 内核在加载 initrd.gz 后挂载硬盘分区...我希望不是挂载 Linux 分区,而是挂载位于硬盘中某个位置的 vhd 文件,其中包含已安装的 ubuntu 并从中启动系统。 Windows 7 支持从 vhd 启动的功能,但 ubuntu 不支持。所以我问我们如何为此目的修改内核。谢谢您

最佳答案

这绝非易事。

要开始加载 Linux,需要使用引导加载程序。该程序找到 vmlinux 或 vmlinuz 文件以及 initrd 文件并将它们加载到 RAM 中。

我假设您的 VHD 文件存储在 NTFS 文件系统上。 VHD 文件内是 vmlinuz 和 initrd 文件。

首先,引导加载程序需要了解 NTFS。接下来,引导加载程序需要了解 VHD。

只有在那之后 Linux 才能开始加载。

此时,事情会变得更容易,因为 Linux 具有可供您使用的 NTFS 文件系统驱动程序。可能是 NTFS-3G 用户空间驱动程序与 FUSE 结合。我不确定 VHD 格式,但您可以使用 VirtualBox 中的 vdfuse 来安装它。

NTFS 和 VHD 挂载程序必须进入 initrd 内部。然后 initrd 可以从 VHD 挂载根分区并进入正常的 Linux 用户空间。

关于linux - 如何修改linux内核以在启动时挂载vhd文件并从中加载系统?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12111233/

相关文章:

twitter-bootstrap - Bootstrap 3.1.1 : how to use its RTL?

linux - 启动时重新启动 autossh 反向隧道的问题

linux - 如何调试vmware启动时linux进程?

python - 从 Python 中查找 Linux 中特定 PID 的命令

Ruby IO 无法按预期在 Windows 上工作,随机卡在 put 和 read 上

c - Linux共享内存段错误

c - 错误 13 : Invalid or unsupported executable while booting simple kernel in grub with string literal

c++ - 有什么方法可以将 Dbgprint() 消息存储到文件中吗?

linux - Linux 上的重新扫描 LUN 如何工作

c - 读取Linux内核空间中的字符设备