1

请告诉我wubi安装程序的工作原理。如果我们在windows中安装ubuntu,在boot.ini文件中有一个ubuntu loader的条目。但是内核如何启动?root.disk文件在加载内核之前如何挂载?

4

1 回答 1

0

Windows 引导加载程序能够启动 Windows 以外的操作系统。我不能专门与 Wubi 交谈,因为我没有看过他们的代码,但几年前我开发了一个类似的解决方案,效果相当。基本上,您执行以下操作:

引导

  1. 将内核副本和自定义 initrd 放在 C:\ 驱动器上的文件中
  2. 将包含根文件系统内容的文件(可能是 SquashFS 映像文件)也放在 C:\ 驱动器上
  3. 配置 Windows 引导加载程序以使用您的自定义 initrd 将 linux 内核加载为引导菜单上的项目之一,并将文件系统映像文件的位置作为引导参数传递(如何完成取决于正在使用的 Windows 版本。 .. XP和Vista之间的巨大差异)

Initrd 中的早期用户空间

  1. 使用 ntfs-3g 挂载 Windows C:\ 驱动器
  2. 解析命令行参数以确定根文件系统映像的位置
  3. Loopback 将映像文件挂载到子目录,例如/read_only_root
  4. 配置 UnionFS 或 AUFS 挂载,为只读根文件系统提供可写覆盖。您可以使用posixovl文件系统来使用本机 windows 目录或在 windows C: 驱动器上的文件内创建固定大小的 ext3 文件系统
  5. 一旦所有的挂载魔法完成并且你有一个看起来像可写根文件系统的目录,使用pivot_root它来将它转换为新的根目录
  6. 执行/sbin/init
于 2011-06-06T13:04:23.473 回答