Eu construí uma distribuição Linux doméstica e posso criar o arquivo de imagem de disco completo como um usuário não raiz com uma exceção - instalar o carregador de inicialização. Estou usando o syslinux (na verdade extlinux), e para instalá-lo, tenho que montar em loopback a partição de inicialização, o que requer privilégios de 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 gravar syslinux ou extlinux no arquivo de imagem de disco sem exigir privilégios de root?
Respostas:
Isso é possível para
syslinux
:O
syslinux
instalador contém mágica suficiente para ser executado em um sistema de arquivos desmontado. (De fato, ele foi projetado para fazer isso.) Oextlinux
instalador espera ser executado em um sistema de arquivos montado.É quase certamente possível dividir o
extlinux
instalador em uma parte que copia os arquivos ( algo como mtools for FAT , que é raro, mas parece existir , embora alguém possa apenas integrá-los diretamentegenext2fs
) e uma parte que instala o setor de inicialização ( Talvez eu consiga juntar isso).Eu fiz algo assim para o GRUB 2, que é instalado no espaço entre o MBR e a primeira partição, para o Grml ; isso foi realmente mais fácil de fazer, porque o GRUB, ao contrário do SYSLINUX, não requer muito do setor de inicialização. Basicamente, depende de seus requisitos mais amplos. Se a parte acima sobre o SYSLINUX não ajudar, entre em contato comigo, para que possamos resolver algo.
fonte
grub-install
, tenho , mas ainda requer que a partição de inicialização seja montada.core.img
geração ... deixe-me ver ... verifique aqui agrub-mkimage
ligação. Isso depende muito do ambiente de destino (basicamente, quais módulos são necessários para carregar os outros dinamicamente; o GRUB 1 era muito mais fácil).Se você adicionar uma linha ao
/etc/fstab
dizer algo como:você pode montar / desmontar
/dev/loop0
como um usuário comum.E se você fizer
chown youruser:youruser <MOUNTPOINT> <LOOPDEVICE>
, entãoextlinux
,losetup
,mkfs
, etc pode ser feito comoyouruser
.fonte
disk
grupo. (Ou crie umloop
grupo e usar isso ...)