J'ai une machine qui a des partitions multi-boot. J'ai Ubuntu 14.04 sur une partition, Ubuntu 15.04 sur la deuxième et Ubuntu 16.04 sur une troisième. Existe-t-il un moyen de savoir, à partir de la ligne de commande, à partir de quelle partition j'ai démarré, afin de vous trouver sur quelle partition est celle /boot/grub/grub.cfg
qui a été utilisée pour le processus de démarrage? J'ai /boot/grub/grub.cfg
sur chacune des trois partitions.
12
/boot/grub/grub.cfg
fichier utilisé pour le démarrage aurait pu être supprimé, cette partition aurait pu être supprimée de la table de partition et ce disque supprimé physiquement du système.Réponses:
Une fois que GRUB a transféré le démarrage au noyau, le noyau n'a aucune idée de ce qui l'a démarré, et
/boot
peut-être pas celui que GRUB a utilisé. Vous pouvez vérifier les temps d'accès deboot/grub/grub.cfg
chacune des partitions pour voir laquelle a été accédée le plus récemment. Cela pourrait vous dire quel fichier de configuration de la partition GRUB a utilisé.Si les temps d'accès ne sont pas mis à jour, vous devrez rechercher toute différence dans les paramètres du noyau utilisés par les différents fichiers de configuration GRUB. Si vous pouvez les modifier, par exemple, ajouter
foo=1
,foo=2
etc. pourGRUB_CMDLINE_LINUX
dans chacun d'eux, courirsudo update-grub2
et redémarrer, vous pouvez vérifier/proc/cmdline
pour voir quelles de ces valeurs ont été utilisées.la source
/boot
se trouve, mais ce n'est peut-être pas ce que grub a utilisé, et Katu et vous trouvez que la partition montée/
est montée, mais, comme Ravexina l'a noté, cela a probablement encore moins de connexion/
, bien sûr. Trouver la configuration GRUB de la partition utilisée lors du démarrage? Je ne vois pas comment cela se rapporte.Comme vous le savez, le fichier que vous recherchez se trouve dans le
/boot
répertoire de votre système en cours d'exécution. soit/boot
une partition séparée, soit ce n'est pas le cas; Si votre/boot
partition est distincte, vous devez la rechercher:Signifie que celui
grub.cfg
qui a été utilisé se trouve danssda2
.Sinon, vous devez rechercher
root
:cette fois, il est situé dans
sda1
.Ou même pour le plaisir, nous pouvons vérifier les paramètres de temps de démarrage:
puis utilisez
UUID
pour savoir quelle partition est votre racine.Ce qui signifie de
sda1
.Vous pouvez également vérifier ces paramètres de démarrage pour voir lequel de vos
grub.cfg
fichiers les contient, cela ne fonctionne que lorsque vos paramètres de démarragegrub.cfg
sont différents les uns des autres.la source
readlink -f /dev/disk/by-uuid/<UUID>
.Pour afficher le périphérique contenant le système de fichiers racine actuellement monté:
Pour afficher la version de sortie d'Ubuntu en cours d'exécution:
la source
lsb_release -rs
chaque fois. KISSNous pourrions ajouter une simple entrée de menu personnalisée dans chaque système d'exploitation et nous verrions dans le menu Grub à partir duquel OS Grub a chargé son fichier de configuration.
Exemple:
Nous démarrons en 16.04 et éditons le fichier
/etc/grub.d/40_custom
pour ajouter une entrée de menu.Nous nous assurons que le fichier est exécutable et exécuté
sudo update-grub
.Ensuite, nous faisons les mêmes changements dans les autres systèmes d'exploitation, nous utilisons simplement des noms différents pour l'entrée de menu, ig nous changeons
16.04
en15.04
et ainsi de suite.Si nous sélectionnons cette entrée de menu dans le menu Grub lors du démarrage, la machine va simplement redémarrer, nous les avons créés non pas pour démarrer un OS, mais pour voir quel OS est réellement utilisé pour charger
grub.conf
.Information additionnelle
Ce type de confusion apparaît, lorsque nous installons plusieurs systèmes d'exploitation qui utilisent tous Grub et lors de l'installation d'un système d'exploitation, nous choisissons le même emplacement du chargeur de démarrage. Nous avons en effet besoin d'un seul système d'exploitation qui installe Grub, Grub peut démarrer dans n'importe quelle distribution Linux, donc si nous avons une distribution installée (y compris Grub), nous pourrions installer des systèmes d'exploitation supplémentaires sans installer Grub.
Dans les installations héritées, il est assez facile de gérer l'emplacement pour l'installation du chargeur de démarrage, car nous pouvons choisir l'enregistrement de démarrage de la partition comme emplacement, mais nous devons prendre soin de choisir la bonne partition. Ainsi, un système d'exploitation installe le chargeur de démarrage sur le MBR et des systèmes d'exploitation supplémentaires installent le chargeur de démarrage sur le PBR de la partition du système d'exploitation. Cette possibilité n'est disponible que lorsque nous utilisons l'
Something else
option -pendant l'installation.Dans les installations UEFI, c'est un peu plus étrange, le chargeur de démarrage sera installé dans un dossier dans la partition système EFI (ESP) et plusieurs chargeurs de démarrage peuvent facilement coexister. Le problème ici est que toutes les versions d'Ubuntu et aussi certaines autres distributions linux installeront Grub dans le même dossier dans l'ESP et nous n'avons pas le choix. Ainsi, l'installation d'une distribution Linux supplémentaire écraserait notre chargeur de démarrage déjà existant. La seule façon que je connais pour éviter cela est de démarrer dans une session en direct et de démarrer le programme d'installation avec
sudo ubiquity -b
.Une autre solution simple
Supposons que trois distributions Linux soient installées sur les partitions
sda1
,sda2
etsda3
. Maintenant, nous examinons les entrées du menu de démarrage de Grub. Au démarrage, nous verrons quelque chose comme ceci:Les deux premières entrées sont les entrées de l'OS qui a généré le
grub.conf
fichier que nous utilisons réellement. Les entrées # 3 et # 4 ne sont pas intéressantes pour le moment. Les entrées # 5, # 6, # 7 et # 8 sont les entrées qui ont été générées avec l'OS-prober et nous voyons sur quelles partitions résident les OS pour ces entrées. Donc, dans le cas de ce petit exemple, nous pouvons conclure que legrub.config
fichier que nous utilisons réellement n'appartient pas au système d'exploitationsda2
ousda3
à celui-cisda1
. Dans le cas où un ou plusieurs systèmes d'exploitation sont installés avec une/boot
partition séparée, nous devons vérifier quelle/boot
partition appartient à quel système d'exploitation, mais cela se fait facilement en exécutant lafindmnt
commande-dans chaque système d'exploitation.la source
Et vérifiez dans quel disque est monté
/
. Veuillez lire les commentaires ci-dessous ou la réponse de Ravexina si vous en avez/boot
dans vos points montés.Si vous n'êtes pas sûr, vérifiez l'UUID
la source
/boot
est une partition séparée?/boot/grub/grub.cfg
n'est alors pas situé dans la/
partition./
partition ne compte-t- elle pas ?/boot
.Pour savoir à partir de quelle partition l'utilisateur a démarré, consultez le menu du chargeur de démarrage avant de démarrer l'un des systèmes installés. C'est difficile à dire sans voir le menu du chargeur de démarrage.
Où regarder
Dans les captures d'écran combinées suivantes, j'ai étiqueté trois conseils que l'on pourrait savoir à partir de quelle partition l'utilisateur a démarré.
L'astuce la plus apparente est label (3), qui consiste à changer l'image d'arrière-plan GNU GRUB sur le système qui contrôle le menu du chargeur de démarrage. C'est le plus simple à dire, à condition que l'utilisateur l'ait configuré au préalable.
Étiquette (1) expliquée
Recherchez la partition qui n'est pas répertoriée dans les entrées de menu sous la première entrée. Dans la capture d'écran, seuls deux systèmes d'exploitation sont installés, à savoir "Ubuntu" et "Ubuntu 14.04.5 LTS".
Ce dernier l'a mentionné
(on /dev/sda3)
, ce qui signifie que le premier pourrait être situé sur/dev/sda2
ou/dev/sda1
. Pour être sûr, après le démarrage du système, c'est-à-dire "Ubuntu", exécutez la commande appropriée pour répertorier les partitions disponibles (lsblk
semble être la plus simple).Ce n'est qu'après avoir comparé à la sortie de
lsblk
, que nous savons que le système, c'est-à-dire "Ubuntu", se trouve dans/dev/sda2
(qui n'était pas répertorié dans les entrées de menu) à partir duquel le menu du chargeur de démarrage est géré.Étiquette (2) expliquée
Recherchez la version GRUB imprimée en haut du menu du chargeur de démarrage. Notez cette version et comparez-la à la version GRUB qui se trouve sur le système démarré, c'est-à-dire "Ubuntu".
Dans la capture d'écran (moitié inférieure):
GNU GRUB version 2.02~beta2-9
Après avoir démarré le système, c'est-à-dire "Ubuntu", exécutez la commande appropriée pour vérifier la version du package GRUB (
grub-install --version
est pertinente et la plus simple).En quoi est-ce pertinent? Parce que
grub-install
et lesupdate-grub
commandes sont toutes deux fournies par le même packagegrub2-common
. Étant donné que le menu du chargeur de démarrage est créé et mis à jour à l'aide d'outils du même package, la version imprimée en haut du menu du chargeur de démarrage sera la même.Étiquette (3) expliquée
Cette astuce doit être configurée manuellement, car l'image d'arrière-plan par défaut du menu du chargeur de démarrage est aucune (juste noir). L'image d'arrière-plan doit avoir une profondeur de 8 bits.
Si le
desktop-base
package est installé sur votre système, ces images d'arrière-plan spécialement conçues pour GRUB se trouvent facilement avec le suffixe du nom de fichier*grub.png
dans le répertoire cible.Pour configurer l'image d'arrière-plan:
Ouvrez le
/etc/default/grub
fichier en tant que superutilisateur, puis ajoutez la ligneGRUB_BACKGROUND=
avec le chemin d'accès complet à l'image de votre choix et citée.Ensuite, exécutez
sudo update-grub
pour mettre à jour/boot/grub/grub.cfg
qui inclut le menu du chargeur de démarrage. L'utilisateur verra une sortie similaire à la suivante.Redémarrez la machine et voyez si le menu du chargeur de démarrage a des modifications visibles apportées par la commande de mise à jour du système.
Sinon, répétez les étapes pour les autres systèmes, un par un. Les étapes répétées auraient été inutiles si l'utilisateur savait quel système contrôlait le menu du chargeur de démarrage (là encore, cela dépend de la façon dont l'installation a été effectuée).
Avertissement
Cette réponse explique les critères éprouvés et bien testés pour le système BIOS avec configuration multi-démarrage utilisant la version PC / BIOS GNU GRUB. Les exceptions suivantes s'appliquent.
Pour les homologues du système UEFI utilisant la version GNU GRUB EFI, il n'est pas garanti ou on ne sait pas si les critères semblent être les mêmes que ceux décrits ci-dessus.
L'accent est mis sur l' apparence du menu du chargeur de démarrage (comment il peut sembler différent, c'est-à-dire la moitié supérieure de la capture d'écran) plutôt que de montrer comment fonctionne le chargement de chaîne. En tant que tel, concernant "la façon dont le démarrage multiple a été configuré comme indiqué dans la capture d'écran" ne serait pas expliqué dans cette réponse.
Si la configuration de démarrage multiple est jamais faite d'exactement les mêmes copies d'un système d'exploitation similaire, c'est-à-dire Ubuntu 14.04, Kubuntu 14.04, Xubuntu 14.04, etc., alors le seul moyen fiable de savoir à partir de quelle partition l'utilisateur a démarré est label (3).
L'étiquette (3) pourrait mieux fonctionner en utilisant une image d'arrière-plan personnalisée qui écrit explicitement à partir de laquelle elle est démarrée, c'est-à-dire "Ce menu de démarrage est géré à partir de / dev / sda1". De même, concernant "comment créer une image d'arrière-plan personnalisée pour GRUB" ne serait pas expliqué dans cette réponse.
TL; DR Regardez le menu du chargeur de démarrage avant de démarrer l'un des systèmes installés. Le moyen le plus simple et le plus fiable de savoir est l'étiquette (3), qui consiste à configurer manuellement l'image d'arrière-plan GRUB.
la source