Je voudrais essayer de configurer un ordinateur pour qu'il ait plusieurs installations Linux toutes dans le même système de fichiers. Par exemple, le système de fichier aurait 3 dossiers: /Ubuntu_Precise
, /Ubuntu_Oneiric
et /Ubuntu_Natty
.
(Je sais que vous pouvez le faire avec BTRFS et sous-volumes, mais je voudrais utiliser EXT4 pour la vitesse).
J'ai une fois configuré plusieurs installations de différentes distributions à l'aide de BTRFS, et à partir du moment où cela fonctionne, je sais que Grub réussit très bien à démarrer l'image vmlinuz et initrd à partir de chemins `` non standard ''. Mais quand je faisais le truc BTRFS, il y avait le rootflags=subvol=@<subvolume_name>
qui disait au noyau de monter ce sous-volume en tant que / dans le système de fichiers. Y a-t-il un argument selon lequel vous pourriez passer le noyau qui le ferait lier monter un sous-dossier dans une partition en tant que / puis démarrer?
Je pense que pour les autres parties, je suis assez proche. Je sais comment spécifier une monture de liaison dans /etc/fstab
. De plus, à partir du moment où j'ai configuré mon système avec plusieurs installations Linux dans des sous-volumes BTRFS, j'ai l'habitude d'installer une distribution dans une machine virtuelle et de la migrer ensuite à l'aide de rsync, donc je ne suis pas trop inquiet de ce que je devrais faire pour obtenir la bonne configuration, j'essaie juste de savoir quelle serait la bonne configuration. Une fois que je le sais, je devrais être capable de faire la migration dans les sous-dossiers et l'édition de fichiers assez facilement.
Je connais déjà la virtualisation et les partitions, mais ce n'est pas ce que je recherche. L'ordinateur cible n'a pas assez de puissance pour effectuer la virtualisation et les partitions ne partagent pas d'espace libre. Je cherche à mettre en place un système qui double / triple / quad / etc démarre les distributions Linux, mais cela le fait avec un seul système de fichiers, afin qu'il n'y ait pas de cas "J'ai de l'espace libre, mais il est dans la mauvaise partition!"
Si quelqu'un a des suggestions pour éditer ma question ou son titre pour être plus clair, je suis à l'écoute.
la source
Réponses:
Réponse courte - il n'y a pour autant que je sache aucune solution de travail prête à l'emploi pour vos besoins spécifiques. Vous devrez ajuster chaque initramfs de chaque distribution pour répondre à vos besoins spécifiques.
Réponse longue - oui c'est possible. De nos jours, la plupart des distributions Linux utilisent un initramfs qui sera chargé en mémoire par le chargeur de démarrage puis décompressé par le noyau. Là, il s'exécutera,
/sbin/init
qui est responsable de la configuration de l'espace utilisateur initial (exécution d'udev, chargement des modules, démarrage de plymouth, demande de phrase secrète de cryptage, configuration du réseau pour les montages réseau,… vous l'appelez). Comme vous pouvez exécuter vos propres scripts et évaluer les paramètres de démarrage personnalisés.Exemple pour Debian
Si vous utilisez Debian (devrait être le même avec Ubuntu), vous devriez pouvoir placer un script dans
/etc/initramfs-tools/scripts/init-bottom/
lequel il sera exécuté avant le démarrage d'init. Pour plus d'informations sur le script, les différents répertoires et la mise en page jettent un œil à man initramfs-tools . Vous devrez ajusterrootmnt
et ajouter le répertoire cible.Exemple de script (non testé) qui doit être installé en tant que
/etc/initramfs-tools/scripts/local-bottom/00-myroot
ou/usr/share/initramfs-tools/scripts/init-top/00-myroot
:L'idée est d'ajuster
rootmnt
ce qui est utilisé dans leinit
script initramfs pour démarrer / exécuter le vrai init. Comme le périphérique racine est déjà monté dans lainit-bootom
scène, vous pouvez simplement ajuster / modifier le répertoire cible.Pour utiliser ce script, ajoutez simplement un nouveau paramètre de démarrage, copiez le script, rendez-le exécutable, régénérez vos initramfs et ajoutez un paramètre de démarrage pour votre distribution Linux, par exemple
rootdir=/Ubuntu_Precise
.la source
mount /dev/rootdevice /mountpoint
après le fonctionnement du systèmeVoici deux méthodes qui fonctionnent dans ubuntu bionic (et peut-être ailleurs). Je n'ai pas assez de représentants pour commenter, mais, bionic: / usr / share / initramfs-tools / init cherche dans / etc / fstab pour / usr juste après avoir appelé mountroot et avant d'appeler les scripts * -bottom, donc ajouter un init- le script du bas (comme suggéré dans une autre réponse ici) est "trop tard". au lieu de cela, je recommande ces derniers:
la source
Amorcer différents linux sans jouer avec la table de partition est intéressant à différentes fins, une solution alternative à un système de fichiers partagé est d'utiliser des volumes de boucle, ici les quelques changements nécessaires en supposant que vous avez un fichier / volume de boucle / debian dans le système de fichiers / dev / sdb1 (J'utilise GNU / Debian sid / unstable actuel pour les OS principal et de boucle).
Les arguments définis dans grub comme ligne de commande linux sont définis sur env par initrd / init, donc:
la boucle permet de monter le volume sur "lui-même", le flux de script par défaut fait un
mount /dev/sdb1 /root
nous remontons simplement le / dev / sdb1 comme rw s'il était ro puis ajoutons toujours amount -o loop /root/debian /root
.Besoin également de précharger un module dans l'initram (puis n'oubliez pas d'exécuter update-initramfs)
Je ne sais pas combien utiliser les performances d'influence de la boucle ou gaspiller les ressources, je me demande si le montage ext4 sur ext4 double les probabilités de défaillance d'un système de fichiers, mais devinez qu'un ajustement pourrait être fait. Peut-être y a-t-il une meilleure façon d'utiliser la boucle, moins de hack, s'il vous plaît faites le moi savoir car je n'ai pas trouvé.
la source
Ce n'est pas une réponse mais je veux clarifier un point sur la réponse et les commentaires d'Ulrich (je ne peux pas commenter ci-dessus).
La solution proposée par Ulrich "peut" fonctionner (non encore testée) mais vous obtiendrez alors un système de fichiers non remontable . Comme solution de contournement (à mon humble avis), vous pouvez monter le fs en tant que rw avant le chrootage ( comme suggéré ici ) mais faites attention aux scripts d'initialisation cassés. Je suppose que cette solution de contournement a plus d'effets secondaires (comme les fs brisés qui tentent de remonter le ro et échouent).
J'utilise le noyau 3.2 avec ext4 et je monte un dev déjà monté à l'intérieur du chroot, ce qui donne toujours EBUSY comme le commentait psusi.
la source