NTFS 파티션의 GRUB 부팅 ISO/디스크 이미지

NTFS 파티션의 GRUB 부팅 ISO/디스크 이미지

PC의 기존 NTFS 파티션에서 Linux 라이브 시스템이 포함된 ISO를 부팅하려고 합니다. PC에는 UEFI가 있고 하드 디스크는 GPT로 파티션되어 있으므로 GRUB4DOS는 옵션이 아닙니다. 이것이 전혀 가능합니까?

나는 그 질문이 이전에 요청되었다는 것을 알고 있습니다.Grub - ntfs 파티션에서 데비안 iso 파일을 부팅하고 설치합니다., 하지만 거기에는 승인된 답변이 없습니다. 그래서 다시 질문하는 것입니다. 또한 고정되고 미리 컴파일된 커널 대신 내 자신의 커널을 사용하고 싶습니다.

다른 답변에 따르면 일종의 사용자 정의 커널 파일을 포함해야 하는 것 같습니다(EFI 파티션에 배치한다고 가정합니다). 그런 다음 NTFS 자체에서 나머지 ISO(?)를 로드할 수 있습니다.

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를 사용하고 있습니다. 그것은 사용한다mkinitcpioinitramfs(및 초기 사용자 공간(!))을 생성합니다. NTFS에서 파일 시스템 이미지를 부팅하고 있으므로 initramfs를 조정해야 합니다. GRUB 및 해당 ntfs 모듈을 사용하여 NTFS 파티션에서 커널 및 initramfs를 읽을 수 있습니다(GRUB ntfs 모듈은 afaik입니다.). 그 후에도 전체 읽기/쓰기 액세스를 위해서는 initramfs에서 NTFS 파티션을 마운트해야 합니다.

솔루션 작동 이론: NTFS 파티션을 마운트할 수 있도록 initramfs에 ntfs-3g 및 퓨즈fs 패키지를 추가했습니다. 저도 새로 만들었어요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(루트)

디스크 마운트에 관한 부팅 절차:

  1. initcpio 후크는 NTFS 파티션을 마운트합니다.
  2. initcpio 후크는 NTFS 파티션의 디스크 이미지를 루프 장치로 마운트합니다.
  3. 이제 일반 마운트 후크가 실행되고 ext4 또는 2단계에서 마운트된 디스크 이미지 내부에 linux rootfs가 포함된 파티션이 제공됩니다.
  4. 시스템은 초기 사용자 공간을 종료합니다. newroot는 NTFS 루프 탑재 이미지 파일의 rootfs 파티션으로 설정됩니다.
  5. 그런데, 우리는 NTFS 파티션 내부의 디스크 이미지/iso 이미지에서 실행되는 읽기 및 쓰기 권한을 가진 Linux 시스템을 실행하고 있습니다.

관련 정보