Est-il possible d'exécuter debootstrap dans un environnement fakeroot?

J'ai un script qui prépare une image d'installation en exécutant debootstrap , fait quelques modifications sur les files, puis copy les files sur une image disque sauvegardée par un file.

Cela fonctionne sous root , mais je voulais pouvoir exécuter le script sans privilèges root , car il ne devrait pas avoir besoin de ressources privilégiées. Je pensais que j'allais exécuter le script entier en utilisant fakeroot , mais debootstrap échoue avec

 W: Failure trying to run: chroot /tmp/tmp..... mount -t proc proc /proc 

Y a-t-il un moyen de contourner cela?

En général, oui , il est possible d'exécuter debootstrap tant debootstrap non root via fakeroot , mais il y a plus de détails que cela.

Le problème immédiat que vous semblez avoir est d'essayer d'utiliser chroot tant qu'user non-root; vous devez utiliser fakechroot place, en plus de fakeroot . Par exemple:

 fakechroot fakeroot debootstrap sid /tmp/sid 

Problèmes ultérieurs que vous pouvez exécuter pour inclure la création de assemblys de bouclage ou la création de tables de partition d'image disque en tant qu'user non root.

Au lieu de travailler sur tous ces détails un par un, vous pouvez find plus facile d'utiliser une variante debootstrap comme polystrap , qui gère également la compilation croisée (par exemple, générer une image armhf à partir de x86-64) si vous finissez par vouloir un jour .

Le chroot (2) syscall nécessite le privilège root, ou plus exactement et techniquement la capacité CAP_SYS_CHROOT (voir les capacités (7))

Par conséquent, vous ne pouvez pas utiliser juste fakeroot dessus (vous avez aussi besoin de fakechroot etc).