NTFSパーティションのGRUBブートISO /ディスクイメージ

NTFSパーティションのGRUBブートISO /ディスクイメージ

私の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
}
  1. NTFSパーティション内のディスクイメージの場所(image_path)
  2. NTFSパーティションGPT GUID(image_hd)
  3. ディスクイメージに複数のパーティションが含まれている場合はrootfs UUID(root)

ディスクマウントの起動プロセスに関して:

  1. initcpioフックはNTFSパーティションをマウントします。
  2. initcpioフックは、NTFSパーティションにディスクイメージをループデバイスとしてマウントします。
  3. これで通常のマウントフックが実行され、ext4または手順2でマウントされたディスクイメージ内のLinux rootfsを含むパーティションに提供されます。
  4. システムは初期ユーザー空間を終了します。 newroot は、NTFS 循環マウントイメージファイルの rootfs パーティションに設定されます。
  5. さて、私たちはNTFSパーティション内のディスクイメージ/ isoイメージで実行される読み取りおよび書き込み権限を持つLinuxシステムを実行しています。

おすすめ記事