J'ai une machine qui a des partitions multi-boot. J'ai Ubuntu 14.04 sur une partition, Ubuntu 15.04 sur la seconde 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 /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.
Une fois que GRUB a transféré l’amorçage au noyau, celui-ci n’a aucune idée de ce qui l’a démarré et /boot
pourrait ne pas être celui utilisé par GRUB. Vous pouvez vérifier les heures d'accès de boot/grub/grub.cfg
dans chacune des partitions pour voir celle qui a été consultée le plus récemment. Cela pourrait vous indiquer le fichier de configuration de la partition GRUB 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 entre les paramètres du noyau utilisés par les divers fichiers de configuration GRUB. Si vous pouvez les modifier, par exemple, ajoutez foo=1
, foo=2
, etc. à GRUB_CMDLINE_LINUX
dans chacun de ceux-ci, exécutez Sudo update-grub2
et redémarrez, puis vous pouvez vérifier /proc/cmdline
pour voir laquelle de ces valeurs a été utilisée.
Comme vous le savez, le fichier que vous recherchez se trouve dans le répertoire /boot
de votre système en cours d’exécution. /boot
est une partition séparée ou non; Si votre /boot
est une partition distincte, recherchez-le:
$ lsblk -r | grep '/boot'
sda2 8:1 0 400M 0 part /boot
Désigne le grub.cfg
qui a été utilisé se trouve dans sda2
.
Sinon, vous devriez chercher root
:
$ lsblk -r | grep '/$'
sda1 8:1 0 121.2G 0 part /
cette fois, il se trouve dans sda1
.
Ou même pour fun nous pouvons vérifier les paramètres de temps de démarrage:
$ cat /proc/cmdline
BOOT_IMAGE=/boot/vmlinuz-3.16.0-4-686-pae root=UUID=938495-1fe2-3302 ro quiet
utilisez ensuite UUID
pour savoir quelle partition est votre racine.
$ Sudo blkid | grep 938495-1fe2-3302
/dev/sda1: UUID="938495-1fe2-3302"
Ce qui signifie de sda1
.
Vous pouvez également rechercher ces paramètres de démarrage pour savoir lequel de vos fichiers grub.cfg
les contient. Ceci ne fonctionne que lorsque vos paramètres de démarrage dans grub.cfg
sont différents les uns des autres.
Pour afficher le périphérique contenant le système de fichiers racine actuellement monté:
awk '$2=="/"{print $1}' /proc/mounts
Pour afficher la version actuelle d'Ubuntu en cours d'exécution:
lsb_release -rs
Nous pourrions ajouter une entrée de menu personnalisée simple dans chaque système d'exploitation et nous verrions dans le menu Grub à partir duquel le système d'exploitation Grub chargeait 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.
#!/bin/sh exec tail -n +3 $ 0 # Ce fichier permet d'ajouter facilement des entrées de menu personnalisées. Tapez simplement les entrées de menu # Que vous souhaitez ajouter après ce commentaire. Veillez à ne pas modifier # La ligne 'queue' exécutée au-dessus. # Menuentry 'grub.conf chargé à partir de 16.04' { redémarrer }
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 le menuentry, par exemple. nous changeons 16.04
en 15.04
et ainsi de suite.
Si nous sélectionnons cette entrée de menu dans le menu Grub lors du démarrage, la machine ne fera que redémarrer. Nous les avons créées pour ne démarrer aucun système d'exploitation, mais pour voir quel système d'exploitation est réellement utilisé pour charger grub.conf
.
informations complémentaires
Ce genre de confusion apparaît lorsque nous installons plusieurs systèmes d'exploitation utilisant tous Grub et, lors de l'installation d'un système d'exploitation, nous choisissons le même emplacement pour le chargeur de démarrage. Nous n'avons en effet besoin que d'un seul système d'exploitation qui installe Grub, Grub pouvant démarrer dans n'importe quelle distribution Linux. Ainsi, si une seule distribution est installée (y compris Grub), nous pouvons 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 de l'installation du chargeur de démarrage, car nous pouvons choisir l'emplacement de partition-boot-record, 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 SE l'installent sur le PBR de la partition du système d'exploitation. Cette possibilité existe uniquement lorsque nous utilisons l'option Something else
- lors de l'installation.
Dans les installations UEFI, c'est un peu plus étrange, 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 versions d'Ubuntu ainsi que d'autres distributions linux installeront Grub dans le même dossier dans le ESP et nous n'avons pas le choix. Donc, installer une distribution Linux supplémentaire écraserait notre chargeur de démarrage existant. Le seul moyen d'éviter ce problème est de démarrer une session en direct et de lancer le programme d'installation avec Sudo ubiquity -b
.
ne autre solution simple
Supposons que trois distributions Linux sont installées sur les partitions sda1
, sda2
et sda3
. Regardons maintenant les entrées du menu de démarrage de Grub. Au démarrage, nous verrons quelque chose comme ceci:
1 Ubuntu 2 Options avancées pour Ubuntu 3 Test de mémoire (memtest86 +) 4 Test de mémoire (memtest86 +, console série 115200) 5 Ubuntu (on/dev/sda2) 6 Options avancées pour Ubuntu (sur /dev/sda2) 7 Ubuntu 17.04 (sur /dev/sda3) 8 Options avancées pour Ubuntu (sur/dev/sda3 )
Les deux premières entrées sont celles du système d'exploitation qui a généré le fichier grub.conf
- que nous utilisons réellement. Les entrées # 3 et # 4 ne sont pas intéressantes pour le moment. Les entrées n ° 5, n ° 6, n ° 7 et n ° 8 sont les entrées générées avec l'OS-prober et nous voyons sur quelles partitions se trouvent les systèmes d'exploitation de ces entrées. Ainsi, dans le cas de ce petit exemple, nous pouvons conclure que le fichier grub.config
- que nous utilisons en réalité n'appartient pas au système d'exploitation de sda2
ou sda3
mais du système d'exploitation de sda1
. Dans le cas où un ou plusieurs systèmes d'exploitation sont installés avec une partition /boot
- distinct, nous devons déterminer quelle partition /boot
- appartient à quel système d'exploitation, mais cela se fait facilement en exécutant la commande findmnt
- dans chaque système d'exploitation.
lsblk
Et vérifiez quel disque est monté dans /
. Veuillez lire les commentaires ci-dessous ou la réponse de Ravexina si vous avez /boot
dans vos points montés.
Si vous n’êtes pas sûr, vérifiez l’UUID
lsblk -o UUID,NAME,SIZE,MOUNTPOINT
Pour savoir à partir de quelle partition l'utilisateur a démarré, consultez le menu du chargeur de démarrage avant initialisez l'un des systèmes installés. Il est difficile de dire sans voir le menu du chargeur de démarrage.
Où regarder
Dans les captures d'écran combinées suivantes, j'ai nommé trois astuces permettant de savoir à partir de quelle partition l'utilisateur avait démarré.
Label (1): entrées du menu GNU GRUB sous la première entrée
Label (2): version GNU GRUB en haut du menu du chargeur de démarrage
Étiquette (3): image d'arrière-plan GNU GRUB (configuration manuelle requise)
L’indice le plus apparent est label (3), qui consiste à changer l’image d’arrière-plan de GNU GRUB sur le système ayant le contrôle du menu du chargeur de démarrage. C'est le plus facile à dire, à condition que l'utilisateur l'ait configuré au préalable.
Étiquette (1) expliquée
Recherchez la partition not 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".
Ubuntu
Advanced options for Ubuntu
Memory test (memtest86+)
Memory test (memtest86+, serial console 115200)
Ubuntu 14.04.5 LTS (14.04) (on /dev/sda3)
Advanced options for Ubuntu 14.04.5 LTS (14.04) (on /dev/sda3)
Ce dernier 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 l’amorçage du système, c’est-à-dire "Ubuntu", exécutez la commande appropriée pour répertorier les partitions disponibles (lsblk
semble être la méthode la plus simple).
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 13G 0 disk
├─sda1 8:1 0 976M 0 part [SWAP]
├─sda2 8:2 0 6G 0 part /
└─sda3 8:3 0 6G 0 part
sr0 11:0 1 55.7M 0 rom
Ce n'est qu'après avoir comparé à la sortie de lsblk
que nous savons que le système "Ubuntu" se trouve à /dev/sda2
(qui é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 l’amorçage du système, c’est-à-dire "Ubuntu", exécutez la commande appropriée pour vérifier la version du paquet GRUB (grub-install --version
est pertinent et très simple).
$ grub-install --version
grub-install (GRUB) 2.02~beta2-9
Comment est-ce pertinent? Parce que les commandes grub-install
et update-grub
sont toutes deux fournies par le même package grub2-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 indication doit être configurée manuellement, car l'image d'arrière-plan par défaut du menu du chargeur de démarrage est none (tout simplement en noir). L'image d'arrière-plan doit avoir une profondeur de 8 bits.
Si le paquetage desktop-base
est installé sur votre système, les images d’arrière-plan spécialement conçues pour GRUB se trouvent facilement avec le suffixe de nom de fichier *grub.png
dans le répertoire cible.
$ ls /usr/share/images/desktop-base/*grub.png
/usr/share/images/desktop-base/desktop-grub.png
/usr/share/images/desktop-base/joy-grub.png
/usr/share/images/desktop-base/moreblue-orbit-grub.png
/usr/share/images/desktop-base/spacefun-grub.png
Pour configurer l'image de fond:
Ouvrez le fichier /etc/default/grub
en tant que superutilisateur, puis ajoutez la ligne GRUB_BACKGROUND=
avec le chemin complet de l’image de choix et entre guillemets.
$ Sudo nano /etc/default/grub
...
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""
# Show background in GRUB boot menu
GRUB_BACKGROUND="/usr/share/images/desktop-base/spacefun-grub.png"
...
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.
$ Sudo update-grub
Generating grub configuration file ...
Found background: /usr/share/images/desktop-base/spacefun-grub.png
Found background image: /usr/share/images/desktop-base/spacefun-grub.png
Found linux image: /boot/vmlinuz-3.13.0-24-generic
Found initrd image: /boot/initrd.img-3.13.0-24-generic
Found memtest86+ image: /boot/memtest86+.elf
Found memtest86+ image: /boot/memtest86+.bin
Found Ubuntu 14.04.5 LTS (14.04) on /dev/sda3
done
Redémarrez la machine et voyez si le menu du chargeur de démarrage comportait des modifications visibles apportées par la commande update du système.
Sinon, répétez les étapes pour les autres systèmes, un à la fois. Les étapes répétées auraient été inutiles, si l'utilisateur savait quel système avait le contrôle sur le menu du chargeur de démarrage (là encore, cela dépend de la manière dont l'installation a été effectuée).
Clause de non-responsabilité
Cette réponse explique des critères éprouvés et bien testés pour le système BIOS avec une configuration à démarrage multiple utilisant la version GNU GRUB PC/BIOS. Les exceptions suivantes s'appliqueront.
Pour le système équivalent UEFI utilisant la version GNU GRUB EFI, il est not garanti ou not si les critères sembleraient être les mêmes que ceux décrits ci-dessus.
L'accent est mis sur le looks du menu du chargeur de démarrage (en quoi il peut sembler différent, c'est-à-dire la moitié supérieure de la capture d'écran) plutôt que de montrer le fonctionnement du chargement en chaîne. En tant que tel, en ce qui concerne "comment le démarrage multiple a été configuré comme indiqué dans la capture d'écran" serait not expliqué dans cette réponse.
Si la configuration à amorçage multiple est toujours constituée exactement des mêmes copies d’un système d’exploitation similaire, à savoir Ubuntu 14.04, Kubuntu 14.04, Xubuntu 14.04, etc., le seul moyen fiable de savoir à partir de quelle partition l’utilisateur a démarré est label (3).
Label (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.-à-d. "Ce menu de démarrage est géré à partir de/dev/sda1". De même, en ce qui concerne "comment créer une image d'arrière-plan personnalisée pour GRUB", not serait expliqué dans cette réponse.
TL; DR Consultez le menu du chargeur de démarrage avant initialisez l’un des systèmes installés. Le moyen le plus simple et le plus fiable de savoir est label (3), qui consiste à configurer manuellement l’image d’arrière-plan GRUB.