使用根檔案系統目錄而不是磁碟映像運行 QEMU

使用根檔案系統目錄而不是磁碟映像運行 QEMU

為了測試根文件系統,我需要使用創建的磁碟映像作為根文件系統來運行QEMU,QEMU 接受-kernel,它可用於直接指定內核,而無需將其部署在根文件系統內,但是我需要類似的root功能檔案系統來指定提取的根檔案系統的路徑,而不是建立磁碟映像並將其與 -hda 或 -usbdisk 選項一起使用。

單獨使用 QEMU 是否可能?或使用第三方工具(例如虛擬磁碟映像模擬器)

我的目標是在不創建磁碟映像的情況下測試根檔案系統的 tar 存檔

答案1

如果您的 rootfs 不太大,您可以使用 initd。使用-initrdqemu 選項並提供帶有 rootfs 的(壓縮的)cpio 檔案。因此,如果您有 tar 文件,則必須將其解壓縮並建立 cpio。您必須使用-H newccpio 格式。例子;

mkdir /tmp/rootfs
cd /tmp/rootfs
tar xf /path/to/rootfs.tar
find | cpio --quiet -o -H newc | bzip2 -c > /tmp/rootfs.cpio

一件好事是您不需要 root 或 sudo 來執行此操作。

答案2

您可以將檔案系統寫入 USB 驅動器,然後將其與 QEMU 虛擬機器連接。

然後使用 GRUB 中的核心選項將其掛載為根檔案系統

  1. 啟動虛擬機器中的啟動選單
  2. 連接包含核心的檔案系統所在的外部磁碟機。
  3. 如果你的檔案系統有核心和 grub,那就沒問題了。另外,還可以將任何 Linux Live CD 與虛擬機器一起附加。編輯 GRUB 命令列並使用您的核心和根檔案系統。

假設你的隨身碟是/dev/sdB(考慮到你還附加了一個硬碟映像,也就是說/dev/sdA,無論如何你都可以找到它)你的 grub 指令應該是這樣的

kernel (hd1,gpt0)/location_of-kernel root=/dev/sdB
initramfs mention_if_you_have
boot

替換gpt0為正確的分割區和/dev/sdB正確的字母/dev/sdb1/dev/sdb(如果 USB 沒有分割區)

相關內容