루트 권한없이 디스크 이미지 파일에 syslinux / extlinux를 설치하는 방법


13

집에서 자란 리눅스 배포판을 만들었고 부트 로더 설치를 제외하고 루트가 아닌 사용자로 완전한 디스크 이미지 파일을 만들 수 있습니다. syslinux (실제로 extlinux)를 사용하고 있으며이를 설치하려면 루트 / 스도 권한이 필요한 부트 파티션을 루프백 마운트해야합니다. 명령은 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를 디스크 이미지 파일에 쓰는 방법이 있습니까?


루트없이 모든 명령 을 수행 할 수 있는지 궁금 하십니까? 아니면 그냥 extlinux 명령입니까?
BenjiWiebe

@BenjiWiebe 다른 방법이 있다면 어떤 명령이 필요하지만, 내가 이해하는 것처럼 extlinux를 실행하려면 마운트 된 파일 시스템이 필요하며, extlinux는이 방법으로 루트 권한으로 실행해야합니다.

답변:


8

이것은 가능합니다 syslinux:

syslinux ~/floppy.ima

syslinux설치 마운트 해제 된 파일 시스템에서 실행하기에 충분한 마법이 포함되어 있습니다. (실제로 그렇게하도록 설계되었습니다.)extlinux 설치 프로그램은 마운트 된 파일 시스템에서 실행될 것으로 예상합니다.

오프 분할 거의 확실히 가능하다 extlinux일부에 설치 프로그램을 복사하는 파일 ( FAT에 대한 mtools를 같은 이며, 희귀 하지만 존재하는 나타납니다 하나 그냥 직접 그들을 통합 할 수 있지만,genext2fs ), 그리고 부트 섹터를 설치하는 부분 ( 나는 이것을 함께 모을 수있다.)

GRUB 2의 경우 이와 같은 작업을 수행했습니다. GRUB 2는 MBR과 첫 번째 파티션 사이의 공간에 Grml설치합니다 . SYSLINUX와 달리 GRUB은 부트 섹터에서 많은 것을 필요로하지 않기 때문에 실제로는이 작업이 더 쉬웠습니다. 기본적으로 광범위한 요구 사항에 따라 다릅니다. SYSLINUX에 대한 위의 부분이 도움이되지 않으면 저에게 연락하여 문제를 해결할 수 있습니다.


이 정보에 감사드립니다. genext2fs를 사용하고 있으므로 제안 사항이 가장 좋습니다. 단순히 extlinux 코드를 MBR에 복사하고 파일을 fs에 복사하는 것입니까, 아니면 파일이 fs의 특정 블록으로 이동해야합니까?

아직 EXTLINUX를 자세히 보지 않았지만 (이 주석을 삭제하고 약간의 시간을주십시오) SYSLINUX, LILO, GRUB 및 기타 부트 로더의 경우 일반적으로 코드가 PBR에 복사됩니다. (파티션 부트 레코드, MBR이 아닌 vulgo 부트 섹터), 파일의 위치를 ​​하드 코딩하도록 코드가 편집되므로 설치 프로그램이 필요합니다. 나는 당신을 위해 무언가를 함께 자갈 것입니다.
mirabilos

@ 패트릭 나는 이것에 대해 토론이 필요하다, 나는 채팅을
mirabilos

grub을 사용하여 구현을 가리킬 수 있습니까? 나는 현재 가지고 grub-install있지만 부트 파티션을 마운트해야합니다.
복사

@copy 이것은 OpenADK에서 사용되는 방식으로 Grml (ISO 9660 파일 시스템 만 생성하면 됨)보다 훨씬 유연한 이미지 생성 기능을 제공합니다. 아마도 도움이 되겠습니까? 그렇지 않은 경우 직접 저에게 연락하십시오. -편집 : 오, 아니, core.img세대 ... lemme 참조 ... 여기grub-mkimage전화를 확인 하십시오 . 이는 대상 환경에 크게 의존합니다 (기본적으로 다른 모듈을 동적으로로드하는 데 필요한 모듈 : GRUB 1이 훨씬 쉬움).
mirabilos

5

/etc/fstab다음과 같이 말하는 줄을 추가하면 :

/dev/loop0      /mnt                                    ext4    defaults,user   0 0

그런 다음 마운트 / 마운트 해제 할 수 있습니다 /dev/loop0 일반 사용자로 .

당신이 만약 chown youruser:youruser <MOUNTPOINT> <LOOPDEVICE>다음 extlinux, losetup, mkfs, 등은 다음과 같이 수행 할 수 있습니다 youruser.


나는 이것이 일반적인 빌드 프로세스의 일부가되기를 원하며 이미지 파일과 마운트 포인트의 위치는 사용자마다 다를 수 있습니다. 각 사용자마다 fstab을 편집하지 않아도됩니다.

@Patrick Editing fstab은 전 세계적입니다.
BenjiWiebe

그러나 losetup은 루트 전용으로 유지됩니다.
bmargulies

@bmargulies 루프 디바이스가 chown'd 또는 chmod'ed되어 사용자가 액세스 할 수있는 경우가 아닙니다. 또는 Fedora에서는 최소한 사용자를 disk그룹에 추가 할 수 있습니다 . (또는 loop그룹을 만들어서 사용 ...)
BenjiWiebe
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.