web-dev-qa-db-fra.com

Comment savoir à partir de quelle partition j'ai démarré?

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.

12
Kevin Wilson

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.

10
muru

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.

4
Ravexina

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
3
David Foerster

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.

2
mook765
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
1
Katu

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é.

Multi boot menu using GNU GRUB PC/BIOS version with annotation

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:

  1. 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"
    ...
    
  2. 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
    
  3. 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.

0
clearkimura