He creado una distribución de Linux propia y puedo crear el archivo de imagen de disco completo como usuario no root con una excepción: instalar el cargador de arranque. Estoy usando syslinux (en realidad, extlinux), y para instalarlo tengo que montar en bucle la partición de arranque, que requiere privilegios de root / sudo. Los comandos se ejecutan desde un archivo MAKE y los nombres de las variables deben indicar claramente con qué reemplazarlos.
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)
¿Hay alguna manera de escribir syslinux o extlinux en el archivo de imagen de disco sin requerir privilegios de root?
Respuestas:
Esto es posible para
syslinux
:El
syslinux
instalador contiene suficiente magia para ejecutarse en un sistema de archivos desmontado. (De hecho, está diseñado para hacer eso). Sinextlinux
embargo, el instalador espera ejecutarse en un sistema de archivos montado.Es casi seguro que sea posible dividir el
extlinux
instalador en una parte que copie los archivos ( algo así como mtools para FAT , que es raro pero parece existir , aunque uno podría integrarlos directamentegenext2fs
), y una parte que instala el sector de arranque ( Podría ser capaz de improvisar esto juntos).Hice algo como esto para GRUB 2, que se instala en el espacio entre el MBR y la primera partición, para Grml ; En realidad, esto era más fácil de hacer porque GRUB, a diferencia de SYSLINUX, no requiere tanto del sector de arranque. Básicamente depende de sus requisitos más amplios. Si la parte anterior sobre SYSLINUX no lo ayuda, contácteme para que podamos resolver algo.
fuente
grub-install
, pero aún requiere que se monte la partición de arranque.core.img
generación ... déjame ver ... verifica aquí lagrub-mkimage
llamada. Esto depende en gran medida del entorno de destino (básicamente, qué módulos son necesarios para cargar los otros dinámicamente; GRUB 1 fue mucho más fácil).Si agrega una línea al
/etc/fstab
decir algo como:luego puede montar / desmontar
/dev/loop0
como usuario normal.Y si lo hace
chown youruser:youruser <MOUNTPOINT> <LOOPDEVICE>
a continuaciónextlinux
,losetup
,mkfs
, etc se puede hacer tanyouruser
.fuente
disk
grupo. (O cree unloop
grupo y