web-dev-qa-db-ja.com

lvmを使用したISOからのGrubブート

ISOイメージからの簡単なブート手順では、以下のステートメントが適切に機能します。

menuentry "Ubuntu.iso" {
set isofile="/iso/ubuntu.iso"
loopback loop (hd0,3)$isofile
linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=$isofile      noeject noprompt --
initrd (loop)/casper/initrd.lz
}

ここで、hd0は最初のhddで、3はパーティション番号です。

私は、lvm環境に行う方法を知りたい

loopback loop (hd0,3)$isofile   ----> (hd0,???)

Blkidコマンドの結果は

/dev/sda1: UUID="28f0906e-d285-42dd-b3cd-18ef27b9261e" TYPE="ext2" 
/dev/sda5: UUID="Nx2a6F-O11u-sZxe-HDvm-6a2u-zdUf-suvn46" TYPE="LVM2_member" 
/dev/mapper/sal06--vg-root: UUID="2adef9b5-66de-4ffc-9c04-b33199815a35" TYPE="ext4" 
/dev/mapper/sal06--vg-swap_1: UUID="95938380-8ee5-42c9-ad1b-eee1338870db" TYPE="swap"

私のisoは/dev/mapper/sal06--vg-rootにあります。

2
George Poliovei

最後に道を見つけた

/ etc/default/grubに次の行を追加するにはaddが必要です

GRUB_PRELOAD_MODULES="lvm"

次に、/ etc/grub.d/40_custom

menuentry "Ubuntu.iso" {
set isofile="/iso/ubuntu.iso"
search --no-floppy --fs-uuid --set=root <your LV uuid here >
loopback loop ($root)$isofile
linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=$isofile          noeject noprompt --
initrd (loop)/casper/initrd.lz

}

そして、ここで私はビデオを作りました

https://youtu.be/5MCWFStgkQ

1
George Poliovei

あなたのソリューションとやや複雑なものに触発されました ここで見つけました 、私は以下を使用しました。Fedora27 KDE isoとUbuntu 17.10 isoをロードするために動作します。

ファイルに次の行を追加しました/etc/grub.d/40_custom

menuentry "Live Fedora KDE 27" --class Fedora {
  insmod part_msdos
  insmod lvm
  set iso_path="/erik/Downloads/transmission/Fedora-KDE-Live-x86_64-27/Fedora-KDE-Live-x86_64-27-1.6.iso"
  search --no-floppy --fs-uuid --set=root 6340d364-fc09-44d1-914f-b902a6394a55
  loopback loop ($root)$iso_path
  linux (loop)/isolinux/vmlinuz iso-scan/filename=${iso_path} root=live:CDLABEL=Fedora-KDE-Live-27-1-6 rootfstype=auto rd.live.image quiet
  initrd (loop)/isolinux/initrd.img
}

menuentry "Ubuntu 17.10.1" --class ubuntu {
  insmod part_msdos
  insmod lvm
  set iso_path="/erik/Downloads/transmission/ubuntu-17.10.1-desktop-AMD64.iso"
  search --no-floppy --fs-uuid --set=root 6340d364-fc09-44d1-914f-b902a6394a55
  loopback loop ($root)$iso_path
  linux (loop)/casper/vmlinuz.efi  file=/cdrom/preseed/ubuntu.seed boot=casper iso-scan/filename=${iso_path} quiet splash ---
  initrd (loop)/casper/initrd.lz
}

説明

  • set iso_pathで始まる行は、論理ボリューム上のisoファイルを見つけることができるパスを定義します。システムを起動すると、/home/erik/Downloads/transmission/Fedora-KDE-Live-x86_64-27/Fedora-KDE-Live-x86_64-27-1.6.iso"にありますが、/homeはマウントされた論理ボリュームであるため、これを省き、/erik/Downloads/…でパスを開始します
  • searchで始まる行の最後には、6340で始まる奇妙な英数字変数(いわゆるUUID)があります。この番号はコマンドから取得しました

    Sudo blkid
    

    他の人に沿って、次の行を与えました

    /dev/mapper/Fedora_pluto-home: UUID="6340d364-fc09-44d1-914f-b902a6394a55" TYPE="ext4"
    
  • 次に、他のisoファイルを起動する場合のもう1つの重要なことは、linuxおよびinitrdで始まる行です。私はそれらをisoファイルを開くfile-roller(圧縮されたアーカイブを抽出するためのGUI)またはmc(コンソールファイルマネージャー)で取得しました。

    • Fedoraおよび類似のもの:そこで、/isolinuxというディレクトリに移動します。このディレクトリには、isolinux.cfgというファイルがあります。そこでlabelで始まる行を見つけ、その下に次の重要な行を見つけました

      kernel vmlinuz
      append initrd=initrd.img root=live:CDLABEL=Fedora-KDE-Live-27-1-6 rd.live.image quiet
      

      これを使用して、grub2 menuentryの最後の2行を埋めます。

    • buntuと同様:/boot/grubというディレクトリに移動すると、grub.cfgというファイルが見つかります。ここでは、menuentryで始まる行がいくつかあり、その下に次の重要な行があります。

      linux   /casper/vmlinuz.efi  file=/cdrom/preseed/ubuntu.seed boot=casper quiet splash ---
      initrd  /casper/initrd.lz
      

      コピーするだけです。

0
erik