나는 chroot(debootstrap) 환경에서 나만의 Debian Live 부트 스틱을 만들고 싶습니다.
루트 파일 시스템은 squashfs로 마운트되어야 하며 grub은 단일 EFI 파티션에서 시스템을 부팅할 수 있어야 합니다.
지금까지 USB 스틱에 chroot 환경인 vmlinuz와 initrd.img의 squashfs 이미지가 있습니다. 그러나 로컬 시스템을 부팅하지 않고(grub-install...을 사용해 보십시오) 대신 USB 스틱의 squashfs를 부팅하도록 grub을 구성하는 방법을 모르겠습니다.
답변1
문제를 해결했습니다!
먼저, chroot 환경에는 shquashfs 이미지를 로드하는 데 필요한 initframe이 있어야 합니다. 이를 위해 chroot에 라이브 부팅 패키지를 설치한 다음 initframe을 업데이트했습니다. 제대로 작동하려면 chroot에서 /proc, /dev/pts, /dev, /sys를 사용할 수 있어야 합니다.
# @ root on localhost
mount -o bind /proc /debootstrap/proc
mount -o bind /dev /debootstrap/dev
mount -o bind /dev/pts /debootstrap/dev/pts
mount -o bind /sys /debootstrap/sys
# @ root in chroot
apt install live-boot live-boot-initramfs-tools
update-initramfs -u
완료되면 이러한 디렉터리를 마운트 해제해야 하며 shquashfs를 /target/live/filesystem.squashfs에 생성할 수 있습니다.
# @ root on localhost
umount /debootstrap/proc
umount /debootstrap/dev
umount /debootstrap/dev/pts
umount /debootstrap/sys
# @ root on localhost
mksquashfs -comp xz /debootstrap /target/live/filesystem.squashfs
USB 드라이브를 fat32로 포맷하고 /target에 마운트했습니다. 이제 Grub을 설치할 준비가 되었습니다.
# @ root on localhost
grub-install --target=x86_64-efi --root-directory=/target
완료되면 vmlinuz 및 initrd.img를 /target/boot에 복사하고 /target/boot/grub/grub.cfg에 다음 내용으로 grub.cfg를 생성합니다.
insmod all_video
set default=0
set timeout=0
menuentry "debian live" {
linux /boot/vmlinuz boot=live toram=filesystem.squashfs quiet
initrd /boot/initrd.img
}
이제 컴퓨터가 이 스틱을 EFI 부팅할 수 있어야 합니다.