내 PC의 기존 NTFS 파티션에서 Linux 라이브 시스템이 포함된 ISO를 부팅하려고 합니다. PC에는 UEFI가 있고 하드 드라이브는 GPT로 파티션되어 있으므로 GRUB4DOS는 옵션이 아닙니다. 이것이 가능합니까?
나는 이 질문이 이전에 요청되었다는 것을 알고 있습니다.Grub - ntfs 파티션에서 데비안 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(루트)
디스크 마운팅의 시작 프로세스와 관련하여:
- initcpio 후크는 NTFS 파티션을 마운트합니다.
- initcpio 후크는 NTFS 파티션에 디스크 이미지를 루프 장치로 마운트합니다.
- 이제 일반 마운트 후크가 실행되었으므로 ext4 또는 2단계에서 마운트된 디스크 이미지 내의 Linux rootfs가 포함된 파티션에 제공됩니다.
- 시스템은 초기 사용자 공간을 종료합니다. newroot는 NTFS 순환 마운트 이미지 파일의 rootfs 파티션으로 설정됩니다.
- 음, 우리는 NTFS 파티션 내부의 디스크 이미지/iso 이미지에서 실행되는 읽기 및 쓰기 권한을 가진 Linux 시스템을 실행하고 있습니다.