tl; dr-暗号化されていないlmv2論理ボリュームにある.isoファイルから起動することは可能ですか?どうやって?
ラップトップで実際に行う前に、VirtualBox VMでこれを設定しようとしています。次の設定があります:
私は次のように働いています:
私がやりたいのは、gpt3 lvmのisoから起動することです(そして、最終的には、非lvm gpt2パーティションさえもありません)。
私のグラブエントリは次のとおりです。
menuentry "Xubuntu ISO" {
set isofile="/xubuntu-12.04.1-desktop-AMD64.iso"
# from non-lvm
loopback loop (hd0,gpt2)$isofile
# from lvm
#loopback loop (vgboot-iso)$isofile
linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isofile noprompt noeject
initrd (loop)/casper/initrd.lz
}
2つのループバックラインは、同じISOの2つの異なるコピーを指しています。 grubコマンドラインで、両方のループバックラインが機能することを確認しました。
非lvmパーティションのisoから起動する場合、すべてが正常に機能します。
Lvmパーティションのisoから起動すると、起動が開始され、最終的に次のエラーが発生します。
(initramfs) /scripts/casper-premount/20iso_scan: line 46: can't open /dev/sr0: No medium found
Archエントリの場合:
menuentry "Arch ISO" {
set isofile="/archlinux-2012.09.07-dual.iso"
loopback loop (hd0,gpt2)$isofile
#loopback loop (vgboot-iso)$isofile
linux (loop)/Arch/boot/x86_64/vmlinuz archisolabel=Arch_201209 img_dev=/dev/sda2 img_loop=$isofile earlymodules=loop
initrd (loop)/Arch/boot/x86_64/archiso.img
}
gpt2 isoからの起動は機能しますが、lvm起動用に「/ dev/sda2」を何に変更すればよいかわかりません。
編集:これはできますか? any現在のLinuxディストリビューションの公式.isoファイル? Fedora? Debian? openSUSE? CentOS?
これは不可能ですか?それとも、これまで誰も試したことがなかったものですか?
EDIT2:私の報奨金は期限切れになってからずっと経ち、9か月後、これはLinuxディストリビューションでは不可能だと思います。質問は開いたままにしておきますが、近い将来いつでも実用的な解決策があるかどうかは疑わしいです。
Fedora 21 ISOを使用して、私は次のことをうまく試しました。
menuentry "Fedora 21 Live M6600" --class Fedora {
insmod part_gpt
insmod lvm
insmod ext2
set vg='m6600'
set lv='F21Live'
set root="lvm/${vg}-${lv}"
search --no-floppy --fs-uuid --set=root --hint=${root} 95e4eec8-c1de-4802-b821-5753de990cbe
set isofile="/Fedora-Live-Workstation-x86_64-21-5.iso"
echo "Using ${isofile}..."
loopback loop $isofile
linux (loop)/isolinux/vmlinuz0 iso-scan/filename=${isofile} root=live:CDLABEL=Fedora-Live-WS-x86_64-21-5 rootfstype=auto ro rd.live.image quiet rhgb rd.luks=0 rd.md=0 rd.dm=0 rd.auto=1
initrd (loop)/isolinux/initrd0.img
}
rd.auto = 1 LinuxにすべてのLVMをロードするように指示し、iso-scanそれらを検索します。
buntuのこの単純なソリューション に触発されて、Fedora 27 KDEisoとUbuntu17.10isoをロードするために機能する以下を使用しました。
ファイル/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行を埋めます。
Ubuntuなど:ディレクトリ/boot/grub
に移動すると、grub.cfg
というファイルが見つかります。ここには、menuentry
で始まる行がいくつかあり、その下に次の重要な行があります。
linux /casper/vmlinuz.efi file=/cdrom/preseed/ubuntu.seed boot=casper quiet splash ---
initrd /casper/initrd.lz
コピーするだけです。
その上でのポイント:
起動時のISOはISOをマウントする必要があるため、その検索方法を知っている必要があります。
Grub2はinsmod ...コマンドでISOを見ることができますが、それはGrub2にISO内の読み取り、ループマウントなどをさせる以外に何もしませんが、ISO内のLinuxが起動するとすぐにLVM/LUKS /ループなどがそこにない(マウントされていない)場合、ISO内のブートスクリプトはそのLVM/LUKS /ループをマウントする方法を知っている必要があります。そのため、そのLinuxがそうする準備ができていない場合、Linuxから起動することはできません。
LVM、LUKSなどを使用しないサンプル...通常のLinux LiveCD ISOが、起動中にループを検索して.isoファイルにマウントするように設計されていない場合、Grub2から起動することはできません(.isoをファイル)。
このような場合は、ハードウェアCD/DVDエミュレーター(実際のハードウェアの場合)が必要です。または、仮想マシンの仮想CD/DVDユニットに.isoをマウントするだけです。
もちろん、他のオプションは、そのようなISOを「編集」して、起動時にLVM/LUKS /などを検索してマウントするためのスクリプトを組み込むことです。
あなたはこれを試すことができます:
Menuentryの先頭にこれを追加します。
insmod lvm
次に、LVMパーティションを次のように指定します。
set lvmpart=lvm/<lvm_group_name>-<lvm_logical_partition_name>
したがって、XubuntuISOエントリは次のようになります。
menuentry "Xubuntu ISO" {
insmod lvm
set lvmpart=lvm/<lvm_group_name>-<lvm_logical_partition_name>
set isofile="/xubuntu-12.04.1-desktop-AMD64.iso"
loopback loop $lvmpart$isofile
linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isofile noprompt noeject
initrd (loop)/casper/initrd.lz
}
必要に応じて修正してください。
これにより、GRUBはlvm2ボリュームを認識し、その中のISOファイルを読み取ることができるようになります。ただし、おそらくISOはまだ見つかりません...
ほとんどのディストリビューションの公式ISOファイルでは不可能だと思います。
あなたが得ているエラー:
(initramfs) /scripts/casper-premount/20iso_scan: line 46: can't open /dev/sr0: No medium found
つまり、起動時に、起動しているライブシステムがcd/dvdドライブを検索していて、何も見つかりません。
ライブCDは、LVMでソースISOを検索するように構成されていません。イメージのブートスクリプトを変更してそれを行うこともできますが、現在のディストリビューションの公式.isoファイルではそれが行われていないと思います。お気に入りのディストリビューションの開発者に連絡して、統合してもらうことができますか?