J'ai construit une distribution Linux maison, et je peux créer le fichier d'image disque complet en tant qu'utilisateur non root à une exception près - l'installation du chargeur de démarrage. J'utilise syslinux (en fait extlinux), et pour l'installer, je dois monter en boucle la partition de démarrage, ce qui nécessite des privilèges root / sudo. Les commandes sont exécutées à partir d'un makefile, et les noms des variables doivent clairement indiquer par quoi les remplacer.
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-t-il un moyen d'écrire syslinux ou extlinux dans le fichier d'image disque sans avoir besoin des privilèges root?
Réponses:
Ceci est possible pour
syslinux
:Le programme d'
syslinux
installation contient suffisamment de magie pour être exécuté sur un système de fichiers non monté. (En fait, il est conçu pour cela.) Le programme d'extlinux
installation s'attend toutefois à être exécuté sur un système de fichiers monté.Il est presque certainement possible de diviser le programme d'
extlinux
installation en une partie qui copie les fichiers ( quelque chose comme mtools for FAT , ce qui est rare mais semble exister , bien que l'on puisse simplement les intégrer directementgenext2fs
), et une partie qui installe le secteur de démarrage ( Je pourrais peut-être bricoler cela ensemble).J'ai fait quelque chose comme ça pour GRUB 2, qui s'installe dans l'espace entre le MBR et la première partition, pour Grml ; c'était en fait plus facile à faire car GRUB, contrairement à SYSLINUX, n'exige pas autant du secteur de démarrage. Cela dépend essentiellement de vos besoins plus larges. Si la partie ci-dessus sur SYSLINUX ne vous aide pas, contactez-moi, afin que nous puissions trouver une solution.
la source
grub-install
, mais il nécessite toujours la partition de démarrage pour être monté.core.img
grub-mkimage
Si vous ajoutez une ligne en
/etc/fstab
disant quelque chose comme:vous pouvez ensuite monter / démonter en
/dev/loop0
tant qu'utilisateur régulier.Et si vous le faites
chown youruser:youruser <MOUNTPOINT> <LOOPDEVICE>
alorsextlinux
,losetup
,mkfs
, etc peut être fait commeyouruser
.la source
disk
groupe. (Ou créez unloop
groupe et utilisez-le ...)