获取已安装的 Android x86 分区以在 KVM 上运行

获取已安装的 Android x86 分区以在 KVM 上运行

(最初发布于超级用户这里,但由于缺乏回复而发布在这里。)

我在 sda3 上安装了 Android,并且使用以下命令从 Grub 加载时可以正常启动:

set root='(hd0,3)'
search --no-floppy --fs-uuid --set=root 977083a6-5762-4064-b860-39429b9e0cf8
linux /kernel root=UUID=977083a6-5762-4064-b860-39429b9e0cf8 
initrd /initrd.img

我尝试使用以下命令将其加载到 KVM 中:

#Mount the Android partition as read-only so KVM can read its kernel and initrd
sudo mkdir /media/android
sudo mount -o ro /dev/sda3 /media/android

#Command to start the vm
sudo kvm -kernel /media/android/kernel -initrd /media/android/initrd.img /dev/sda3

在这两种情况下,都会出现命令行环境并快速配置大量选项,但是当从 Grub 启动时,会出现正确的 Android 操作系统,而当尝试使用 KVM 将其作为虚拟机启动时,它只会加载到终端界面中。是否需要向 KVM 命令添加任何选项才能使其正常工作(可能使用 -append 参数)

(ps 不确定我是否应该在 SuperUser 或 Unix & Linux 上发布此内容)

使用 Ubuntu 14.10 和 Intel i5-4690K。



更新:
我尝试添加该选项-append root=/dev/sda,但无济于事。一些初始化过程仍然可见,包括以下行:

sd 0:0:0:0: [sda] Write Protect is off
sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
sd 0:0:0:0: Attached scsi generic sy0 type 0
sda: unknown partition table
sd 0:0:0:0: [sda] Attached SCSI disk
Detecting Android-x86... found at /dev/sda

当我尝试使用 cli 中的“mkdir”等操作时,我被告知mkdir failed, Read-only file system



更新2:
我设法让它在安装在单独硬盘上的 Windows 上的 VirtualBox 中运行,方法是使用安装 Android 的整个物理硬盘驱动器的原始磁盘映像(与我的 Ubuntu 分区所在的硬盘驱动器相同)。在 Windows 和 Ubuntu 中尝试仅创建 Android 分区的原始磁盘映像会创建一个无法启动的 VM(即使使用不包括无法访问的分区的自定义 GRUB 2 ISO)。当我fdisk -l在 Ubuntu 中运行时,我收到一条警告:“分区 3 [安装 Android 的位置] 未与逻辑扇区边界对齐”(或类似内容)。这可能是根本原因吗?

除了默认安装的内容之外,Android 分区上没有任何数据或应用程序,因此我将尝试删除该分区并重新安装它并在此处报告。

答案1

在我看来,它无法挂载 rootfs,并且您看到的终端界面是 init 程序放弃并仅运行 shell。您可能需要添加一个root=内核参数,就像您在 grub 配置中一样(请注意,设备可能显示不同),可能类似于-append root=/dev/sda(请注意,分区显示为无 MBR 的磁盘,因此它是不是 sda3)。

您还可以尝试从您获得的 cli 手动安装它,如果您没有看到设备/dev/或无法安装它,那么可能是因为 [host] linux 不允许 qemu 访问原始分区,因为它已经安装或者 qemu 没有以 root 身份运行。

相关内容