Grub 指令 `loopback loop...` 在 Ubuntu 19.10 上不起作用

Grub 指令 `loopback loop...` 在 Ubuntu 19.10 上不起作用

c在啟動過程中,我透過按下 Grub 選單進入 grub2 命令列。

當我輸入以下命令時...

loopback loop (hd0,gpt2)/ubuntu-19.10-desktop-amd64.iso

...grub 掛起,終端上不再有輸出或活動,最終筆記型電腦風扇因筆記型電腦變熱而旋轉。

該路徑(hd0,gpt2)/ubuntu-19.10-desktop-amd64.iso在我的系統上有效。

無論我使用哪個 ISO,我都會得到相同的結果,我已經驗證了 ISO 的校驗和。

我在 Ubuntu 19.10 中遇到了這個問題,並且在先前的 Ubuntu 版本中沒有遇到此問題。我的版本grub2-common是2.04-1ubuntu12。

如何讓loopbackgrub 指令發揮作用? (例如,在執行之前我是否需要載入特定模組或輸入其他命令loopback?)

(另外,如果您在 19.10 上也遇到此問題,請添加評論;我想確定這是否特定於我的安裝,或者這是否是一個更大的問題?)

(請注意,這個問題與關於啟動到磁碟上的 ISO 的另一個問題我已經發布了,但我相信它們有足夠的不同,值得單獨發布)。

答案1

有一個解決方法Ubuntu 錯誤#1851331

停用全員生產管理透過將其新增rmmod tpm為 grub 設定檔中的第一個命令來新增模組。

例如,這是我的/etc/grub.d/40_custom文件...

#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.

menuentry "Install" {
    rmmod tpm
    set isofile="/ubuntu.iso"
    loopback loop (hd0,2)$isofile
    linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isofile noprompt noeject
    initrd (loop)/casper/initrd
}

請記住在進行更改後更新 grub。

sudo update-grub

答案2

用於循環安裝 ISO 的 Grub.cfg

if loadfont /boot/grub/font.pf2 ; then
    set gfxmode=auto
    insmod efi_gop
    insmod efi_uga
    insmod gfxterm
    terminal_output gfxterm
fi

set menu_color_normal=white/black
set menu_color_highlight=black/light-gray

set timeout=5

menuentry "ubuntu-19.10-desktop-amd64.iso" {
    set root=(hd0,1)
    set isofile="/isos/ubuntu-19.10-desktop-amd64.iso"
        loopback loop $isofile
        linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isofile persistent persistent-path=/persist-1/ splash --
        initrd (loop)/casper/initrd
}
menuentry "lubuntu-16.04.3-desktop-amd64.iso" {
    set root=(hd0,1)
    set isofile="/isos/lubuntu-16.04.3-desktop-amd64.iso"
        loopback loop $isofile
        linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=$isofile persistent persistent-path=/persist-2/ splash --
        initrd (loop)/casper/initrd.lz
}

Grub.cfg 適用於我的範例。

我剛剛編輯了從 ISO 複製的 grub.cfg。

永久 USB 無法啟動的原因有很多,包括:

  • MD5SUM 錯誤/ISO 檔案損壞

  • grub 中的 ISO 路徑不正確

  • 根分區不正確

  • Casper-rw分割區不是ext檔案系統

  • grub 中的持久路徑不正確(如果使用)

  • Casper-rw 重複使用先前版本的分割區

  • Casper-rw 文件已滿

  • ISO9660 分區被修改或損壞

  • vmlinuz 和 initrd 的檔案類型不正確(.efi 和 .lz)

  • Grub 選單項目不適合作業系統

  • 在 ISO 檔案完全複製之前移除 USB

  • BIOS 或 UEFI 開機分割區或檔案有問題。

  • grub 中 USB 未設定為第一個硬碟驅動器

  • 快閃記憶體驅動器損壞

  • USB 插座不良

  • 記憶體不足

  • 電腦CPU不相容

  • 電腦 GPU 不相容

請讓我知道我錯過的任何原因。

答案3

我認為類似的問題:我使用即時 Ubuntu 作為我的“瑞士軍隊”閃存驅動器和外部 SSD 的基礎。我已經能夠循環和引導各種 Linux 和其他 ISO 一段時間了。

如果我使用 19.04 進行基本「安裝」(實際上只是將檔案複製到閃存),我可以啟動 ISO。如果我使用 19.10,我會黑畫面掛起。三指致敬將重新啟動測試筆記型電腦,但 ISO 的實際啟動似乎並未繼續。

我一直在做的事情的例子: http://www.beezmo.com/geezblog/?p=1955

如果 19.04 為基礎,則範例節有效,但如果 19.10 為基礎,則無效:

menuentry "Ubuntu 16.10 64-bit Desktop ISO" {
    set isofile="/bootable/iso/ubuntu-16.10-desktop-amd64.iso"
    loopback loop $isofile
    linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=$isofile noeject noprompt splash --
    initrd (loop)/casper/initrd.lz 
}

我會堅持使用 19.04,但從 17.x 開始,如果我啟用持久性 snapd 會燒毀我的所有 CPU 週期並且無法使用。 19.10 似乎已經解決了這個問題。

[編輯新增] 新來的,還沒有找到編輯器的方法。抱歉格式問題:(

[進一步編輯添加] 我想這應該是一條評論,而不是一個“答案”。我最終會趕上...

答案4

我也無法環回iso。
我安裝了iso並將所有檔案和目錄複製到(hd0,gpt7)。
然後重新啟動 PC 並在 grub 命令列中輸入以下內容。

set root=(hd0,gpt7)
linux /kernel
initrd /initrd.img
boot

成功了!
即使我無法環回 iso,我也可以像從 iso 啟動一樣。

相關內容