私のPC上の既存のNTFSパーティションからLinuxライブシステムを含むISOを起動しようとしています。 PCにはUEFIがあり、ハードドライブはGPTでパーティション化されているため、GRUB4DOSはオプションではありません。これは可能ですか?
私はこの質問が以前に要求されたことを知っています。Grub - ntfsパーティションからDebian isoファイルを起動してインストールします。しかし、そこには承認された答えはありません。だからもう一度質問することです。また、固定されたプリコンパイルされたカーネルの代わりに私自身のカーネルを使用したいと思います。
他の回答によると、NTFS自体から残りのISO(?)をロードできるカスタムカーネルファイル(EFIパーティションに配置すると仮定)を含める必要があるようです。
これはFATパーティションですでに実行できます。 GRUB項目だけを実行できます。
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
}
答え1
だから解決策として。
背景:私はArch Linuxを使用しています。それを使うmkinitcpioこれを生成したinitramfs(および初期ユーザースペース(!))。 NTFSからファイルシステムイメージを起動するため、initramfsを調整する必要があります。 GRUBおよび対応するntfsモジュール(GRUB ntfsモジュールはro afaik。)カーネルとinitramfsを使用してNTFSパーティションから読み取ることができます。その後も、完全な読み取り/書き込みアクセスのためにinitramfsからNTFSパーティションをマウントする必要があります。
ソリューションの仕組み:NTFSパーティションをマウントできるように、ntfs-3gとヒューズfsパッケージを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
}
- NTFSパーティション内のディスクイメージの場所(image_path)
- NTFSパーティションGPT GUID(image_hd)
- ディスクイメージに複数のパーティションが含まれている場合はrootfs UUID(root)
ディスクマウントの起動プロセスに関して:
- initcpioフックはNTFSパーティションをマウントします。
- initcpioフックは、NTFSパーティションにディスクイメージをループデバイスとしてマウントします。
- これで通常のマウントフックが実行され、ext4または手順2でマウントされたディスクイメージ内のLinux rootfsを含むパーティションに提供されます。
- システムは初期ユーザー空間を終了します。 newroot は、NTFS 循環マウントイメージファイルの rootfs パーティションに設定されます。
- さて、私たちはNTFSパーティション内のディスクイメージ/ isoイメージで実行される読み取りおよび書き込み権限を持つLinuxシステムを実行しています。