Como instalo o syslinux / extlinux em um arquivo de imagem de disco sem exigir privilégios de root

13

Eu construí uma distribuição Linux caseira, e posso fazer o arquivo de imagem de disco completo como um usuário não-root com uma exceção - instalar o gerenciador de inicialização. Eu estou usando o syslinux (na verdade, extlinux), e para instalá-lo eu tenho que voltar a montar a partição de inicialização, que requer privilégios root / sudo. Os comandos são executados a partir de um makefile, e os nomes das variáveis devem indicar claramente com o que substituí-los.

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)

Existe uma maneira de escrever syslinux ou extlinux no arquivo de imagem de disco sem exigir privilégios de root?

    
por Patrick 20.05.2014 / 21:31

2 respostas

8

Isso é possível para syslinux :

syslinux ~/floppy.ima

O instalador syslinux contém magia suficiente para ser executado em um sistema de arquivos desmontado. (Na verdade, ele foi projetado para fazer isso.) O instalador extlinux espera ser executado em um sistema de arquivos montado, no entanto.

É quase certamente possível dividir o instalador extlinux em uma parte que copia os arquivos ( algo como mtools para o FAT , que é raro mas parece existir , embora se possa apenas integrá-los diretamente com genext2fs ), e uma parte que instala o setor de inicialização (talvez eu consiga montar isso juntos).

Eu fiz algo assim para o GRUB 2, que é instalado no espaço entre o MBR e a primeira partição, para Grml ; isso foi realmente mais fácil de fazer porque o GRUB, ao contrário do SYSLINUX, não requer tanto do setor de inicialização. Basicamente depende de seus requisitos mais amplos. Se a parte acima sobre o SYSLINUX não ajudar você, entre em contato comigo, para que possamos resolver o problema.

    
por 20.05.2014 / 22:54
5

Se você adicionar uma linha em /etc/fstab dizendo algo como:

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

você pode montar / desmontar /dev/loop0 como usuário comum.

E se você fizer chown youruser:youruser <MOUNTPOINT> <LOOPDEVICE> , então extlinux , losetup , mkfs , etc poderá ser feito como youruser .

    
por 20.05.2014 / 21:50