저는 홈브류 Linux 배포판을 구축했으며 부트로더 설치라는 한 가지 예외를 제외하고 루트가 아닌 사용자로 전체 디스크 이미지 파일을 만들 수 있습니다. 저는 syslinux(실제로는 extlinux)를 사용하고 있으며 이를 설치하려면 루트/sudo 권한이 필요한 부팅 파티션을 루프백 마운트해야 합니다. 이러한 명령은 makefile에서 실행되며 변수 이름은 이를 대체할 항목을 명확하게 나타내야 합니다.
sudo losetup -o $(BOOT_FS_PARTITION_OFFSET) $(LOOP_DEVICE) $(IMAGE_FILE_NAME)
sudo mount $(LOOP_DEVICE) $(LOOP_MOUNT_POINT)
sudo $(EXTLINUX) -S $(DISK_SECTORS) -H $(DISK_HEADS) -i $(LOOP_MOUNT_POINT)
sudo umount $(LOOP_MOUNT_POINT)
sudo losetup -d $(LOOP_DEVICE)
루트 권한 없이 디스크 이미지 파일에 syslinux 또는 extlinux를 쓸 수 있는 방법이 있습니까?
답변1
이는 다음과 같은 상황에서 가능합니다 syslinux
.
syslinux ~/floppy.ima
설치 프로그램에는 syslinux
마운트 해제된 파일 시스템에서 실행하기에 충분한 마법이 포함되어 있습니다. (실제로는 바로 그렇게 하도록 설계되었습니다.) extlinux
그러나 설치 프로그램은 이미 마운트된 파일 시스템에서 실행될 것으로 예상합니다.
extlinux
설치 프로그램을 파일을 복사하는 부분으로 분할 하는 것이 거의 확실합니다 (FAT와 유사한 mtools,지금 바로희귀한하지만존재하는 것 같다genext2fs
) 및 부트 섹터를 마운트하는 부분(함께 엮을 수도 있음) 과 직접 통합하는 것이 가능하지만 .
MBR과 첫 번째 파티션 사이의 공간에 설치된 GRUB 2와 비슷한 작업을 수행했습니다.게미르;SYSLINUX와 달리 GRUB은 많은 부트 섹터를 필요로 하지 않기 때문에 실제로 수행하기가 더 쉽습니다. 기본적으로 광범위한 요구 사항에 따라 다릅니다. SYSLINUX에 대한 위 섹션이 도움이 되지 않으면 문제를 해결할 수 있도록 저에게 연락해 주십시오.
답변2
다음과 같은 줄을 추가하면 /etc/fstab
:
/dev/loop0 /mnt ext4 defaults,user 0 0
/dev/loop0
그런 다음 일반 사용자로 설치/제거 할 수 있습니다 .
chown youruser:youruser <MOUNTPOINT> <LOOPDEVICE>
이렇게 하면 등 이 extlinux
완료 될 수 있습니다 .losetup
mkfs
youruser