PCの既存のNTFSパーティションからLinuxライブシステムを含むISOを起動しようとしています。 PCにはUEFIがあり、ハードディスクはGPTでパーティション分割されているため、GRUB4DOSはオプションではありません。これはまったく可能ですか?
私は以前に質問があったことを知っています: Grub-ntfsパーティションからdebian isoファイルを起動してそれをインストールします ですが、承認された回答はありません-そのため、私はもう一度質問します。また、いくつかの修正済みでコンパイル済みのカーネルではなく、自分のカーネルを使用したいと思います。
他の回答から、何らかのカスタマイズされたカーネルファイル(EFIパーティションに配置することを想定しています)を含める必要があるようです。これにより、残りのISO(?)をNTFS自体からロードできます。
これは、GRUBエントリを実行するだけで、すでにFATパーティションで実行できます。
menuentry "Boot LINUX FROM ISO FILE" {
set iso_path=/path_to/image_on_FAT_filesystem.iso
loopback loop (hdX,msdosY)$iso_path
linux (loop)/path_to/vmlinuz nomagic base_only norootcopy from=$iso_path
}
したがって、解決策として;
背景:Arch Linuxを使用しています。 mkinitcpio を使用してinitramfs(および初期のユーザー空間(!))を生成します。 NTFSからファイルシステムイメージを起動しているので、initramfsを微調整する必要があります。 GRUBとそのntfsモジュールを使用して(GRUB ntfsモジュールはro afaikで)読み取ることができます。)NTFSパーティションからカーネルとinitramfsを取得します。この後も、initramfsからNTFSパーティションをマウントする必要があります。完全な読み取り/書き込みアクセス用。
ソリューションの動作理論:NTFSパーティションをマウントできるように、ntfs-3gおよびfusefsパッケージをinitramfsに追加しました。また、実際のマウントフックの前にロードする必要がある新しい mkinitcpioフック も作成しました。フックは次のようなパラメーターを取得する単純なシェルスクリプトです(これらはGRUBからカーネル引数として指定されます)。
menuentry "Boot LINUX FROM ISO FILE" {
insmod ntfs
set root='(hdX,Y)'
linux /in_ntfs/vmlinuz-linux root=UUID=*GPT_UUID_OF_ROOTFS_ON_DISK_IMAGE* image_path=*path_to_disk_image_on_NTFS* image_hd=*GPT_UUID_OF_NTFS_DISK*
initrd /in_ntfs/initrd.img
}
ディスクマウントに関するブート手順: