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 se trouve le système d'exploitation Ubuntu. /boot/grub/grub.cfg
qui a été utilisé pour le processus de démarrage ? J'ai /boot/grub/grub.cfg
sur chacune des trois partitions.
Réponses
Trop de publicités?Une fois que Grub a transmis le démarrage au noyau, le noyau n'a aucune idée de ce qui l'a démarré, et /boot
pourrait ne pas être celui que Grub a utilisé. Vous pourriez vérifier les temps d'accès de boot/grub/grub.cfg
dans chacune des partitions pour voir laquelle a été la plus récemment accédée. Cela pourrait vous indiquer quel fichier de configuration de la partition Grub a utilisé.
stat -c %x /boot/grub/grub.cfg
Si les temps d'accès ne sont pas mis à jour, vous devrez rechercher les différences éventuelles dans les paramètres du noyau utilisés par les divers fichiers de configuration Grub. Si vous pouvez les modifier, ajoutez par exemple foo=1
, foo=2
etc. GRUB_CMDLINE_LINUX
dans chacun d'eux, exécutez sudo update-grub2
et redémarrer, alors vous pouvez vérifier /proc/cmdline
pour voir lesquelles de ces valeurs ont été utilisées.
Comme vous le savez, le fichier que vous recherchez se trouve dans le dossier suivant /boot
de votre système d'exploitation. /boot
est une partition séparée ou ne l'est pas ; Si votre /boot
est une partition séparée, vous devez la rechercher :
$ lsblk -r | grep '/boot'
sda2 8:1 0 400M 0 part /boot
Signifie que le grub.cfg
qui a été utilisé est situé dans sda2
.
En outre, vous devez rechercher root
:
$ lsblk -r | grep '/$'
sda1 8:1 0 121.2G 0 part /
cette fois-ci, il est situé à sda1
.
Ou même pour amusant nous pouvons vérifier les paramètres du temps de démarrage :
$ cat /proc/cmdline
BOOT_IMAGE=/boot/vmlinuz-3.16.0-4-686-pae root=UUID=938495-1fe2-3302 ro quiet
puis utiliser UUID
pour savoir quelle partition est votre racine.
$ sudo blkid | grep 938495-1fe2-3302
/dev/sda1: UUID="938495-1fe2-3302"
Ce qui signifie que de sda1
.
Vous pouvez également vérifier ces paramètres de démarrage pour voir lequel de vos grub.cfg
les contient, cela ne fonctionne que si vos paramètres de démarrage dans le fichier grub.cfg
sont différentes les unes des autres.
Nous pourrions ajouter une simple entrée de menu personnalisée dans chaque OS et nous verrions dans le Grub-menu à partir de quel OS Grub a chargé son fichier de configuration.
Exemple :
Nous démarrons dans 16.04 et éditons le fichier /etc/grub.d/40_custom
pour ajouter une entrée de menu.
#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries. Simply type the
# menu entries you want to add after this comment. Be careful not to change
# the 'exec tail' line above.
#
menuentry 'grub.conf loaded from 16.04' {
reboot
}
Nous nous assurons que le fichier est exécutable et exécutons 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 les entrées de menu, par exemple nous changeons 16.04
a 15.04
et ainsi de suite.
Si nous sélectionnons cette entrée de menu dans le Grub-menu pendant le démarrage, la machine va juste 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
.
Informations complémentaires
Ce genre de confusion apparaît, lorsque nous installons plusieurs OS qui utilisent tous Grub et que lors de l'installation d'un OS nous choisissons le même emplacement de boot-loader. Nous avons en effet besoin d'un seul OS qui installe Grub, Grub peut démarrer dans n'importe quelle distribution Linux, donc si nous avons une distribution installée (incluant Grub), nous pourrions installer des OS supplémentaires sans installer Grub.
Dans les installations héritées, il est assez facile de gérer l'emplacement de l'installation du chargeur de démarrage, car nous pouvons choisir la partition-boot-record 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 d'autres systèmes d'exploitation installent le chargeur de démarrage sur le PBR de la partition du système d'exploitation. Cette possibilité n'existe que lorsque nous utilisons la fonction Something else
-pendant l'installation.
Dans les installations UEFI, c'est un peu plus bizarre, le chargeur de démarrage sera installé dans un dossier de la partition système EFI (ESP) et plusieurs chargeurs de démarrage peuvent facilement coexister. Le problème ici est que toutes les saveurs 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. Le seul moyen que je connaisse pour éviter cela est de démarrer dans une session live et de lancer l'installateur avec sudo ubiquity -b
.
Une autre solution simple
Supposons que nous ayons trois distributions Linux installées sur les partitions sda1
, sda2
y sda3
. Maintenant, nous jetons un coup d'œil aux entrées du menu de démarrage de Grub. Pendant le démarrage, nous verrons quelque chose comme ceci :
1 Ubuntu
2 Advanced options for Ubuntu
3 Memory test (memtest86+)
4 Memory test (memtest86+, serial console 115200)
5 Ubuntu (on /dev/sda2)
6 Advanced options for Ubuntu (on /dev/sda2)
7 Ubuntu 17.04 (on /dev/sda3)
8 Advanced options for Ubuntu (on /dev/sda3)
Les deux premières entrées sont les entrées pour le système d'exploitation qui a généré l'alerte. 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 de ces entrées. Donc, dans le cas de ce petit exemple, nous pouvons conclure que l'OS-prober a été généré par l'OS-prober. grub.config
-Le fichier que nous utilisons réellement n'appartient pas au système d'exploitation sur lequel nous travaillons. sda2
o sda3
mais à l'OS sur sda1
. Dans le cas où un ou plusieurs systèmes d'exploitation sont installés avec un système d'exploitation distinct, il est possible d'utiliser le système d'exploitation. /boot
-nous devrions vérifier quelle /boot
-appartient à quel système d'exploitation, mais cela peut être fait facilement en exécutant la commande findmnt
-dans chaque système d'exploitation.
- Réponses précédentes
- Plus de réponses