Problème au démarrage / affichage de initramfs

Fermé
Lee - Modifié le 9 avril 2020 à 01:45
 drom - 20 avril 2020 à 14:12
Bonjour,

J'ai voulu me lancer dans le grand bain de linux, il y a de celà un mois. Et j ai installé Zorin Os sur mon dd. Tout allait bien jusqu'à ce matin.
Depuis ce matin, mon écran affiche le message suivant :

BusyBox v1.27.2 (Ubuntu 1:1.27.2-2ubuntu3.2) built-in shell a(ash)
Enter 'help' for a list ogf built-in commands.

(initramfs)


Donc voulant trouver ma solution moi même et ne voulant pas perdre mes données, j'ai lu un peu sur le sujet et j'ai trouvé que le problème est que

1/je n'aurais pas dû forcer la fermeture (appui de 3s+ ) (mais alors que faire quand mon ordinateur bug? et aussi pourquoi bugge-t'il subitement?)

2/ c'est un problème de démarrage si je peux m'exprimer ainsi. Cependant, j'ai lu que je pouvais essayer la commande
fsck
. Sauf qu'elle n'apparaît pas quand j'écris
help
au démarrage.

Heureusement, j'ai ma clé USB bootable qui me permet d'essayer Zorin Os avant de l'installer /de l'installer.

J'ai lu aussi que depuis ma clé usb je pourrais réparer mon OS avec la commande
fsck -y /dev/sdb1
(j'ai conclu que c'était le
sdb
car sda semble être la clé USB bootable)

Sauf que pour faire les choses bien, j'avais crypté mon dd (une option que Zorin propose / je ne sais pas si tous les linux Os le proposent) et je crois (je n'en suis pas certain vu que je débute sur linux) que ca bloque entre autres choses.

J'ai essayé cette commande
sudo fdisk -l mount
pour essayer une réparation voir une réinstallation sans perte de données si possible, mais ca ne donne rien.

J'ai aussi essayé la commande
sudo fsck /dev/sdb1
, encore une fois sans plus de succès.

Donc j'ai finalement opté pour boot repair en suivant les lignes de codes pour l'installer et l'update // je l'ai lancé et il m'a sorti un rapport qui est ici. http://paste.ubuntu.com/p/8x3pSzjQSj/

Donc deux questions : selon le rapport de boot repair, mon problème est il réglé? Si non que puis je faire d'autre svp, sachant que j'aimerai ne pas perdre mes données.

Configuration: Linux / Firefox 73.0
A voir également:

2 réponses

mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
9 avril 2020 à 02:36
Bonjour,

Plusieurs élément de réponses.

Explication de l'erreur

Par rapport à l'erreur busybox : grub est le menu qui permet de choisir sur quel système (et pour linux, avec quel noyaux et quelles options) on démarre. Quand grub plante, tu vois typiquement un terminal "busybox". Il peut planter pour de multiple raison (typiquement, un disque dur manquant, un noyau pas trouvé, des partitions incohérentes par rapport à sa configuration, etc).

En pratique, busybox ne permet pas de faire grand chose. La plupart du temps, il faut passer par une réparation à l'aide d'une clé USB bootable. Depuis celle-ci il faut alors lancer un linux permettant de lancer un "vrai" terminal à partir, à partir duquel on pourra faire la réparation. En soit un disque (USB ou CD) d'installation linux suffit. Mais ça n'est pas évident quand on débute.

C'est pour cela que boot-repair a été créé. C'est un linux bootable sur une clé usb, mais celui-ci a été personnalisé pour un débutant à faire la réparation. Donc, tu es sur la bonne voie :)

Ensuite je ne sais pas qui t'a dit de faire un
fsck
(filesystem check) mais je doute fortement que ça te débloque. En terminologie windows, cela correspond à un scandisk, mais ça n'est pas ça qui corrigera ta configuration grub pour la rendre cohérente avec ton ou tes disques durs. Des commandes telles que
sudo update-grub
, lancées depuis ton linux "chrooté" ont beaucoup plus de sens.

Quelques pré-requis


Alors qu'est ce qu'un
chroot
.

Sous linux, il n'y a pas de notion de lecteur comme sous windows. Pas de C: ou autre. Il y a une arborescence, dont la racine est
/
qui contient tout. La notion la plus proche est ce qu'on appelle sous linux les "devices" (voir /dev). Sur les linux modernes, les disques ont typiquement un nom qui suit cette nomenclature :
  • /dev/sda
    identifie le premier disque (USB, disque dur, autre...)
  • /dev/sdb
    identifie le second disque (USB, disque dur, autre...)
  • /dev/sda1
    identifie la 1ere partition du disque sda.
  • /dev/md0
    désigne un disque RAID


Les devices en eux-mêmes ne sont pas directement lisibles. Il faut monter un device pour voir le contenu de la partition qu'il représente. C'est ce que fait la commande
mount
.

En particulier, certains de ces devices seront monté (comme des poupées russes) de sorte à constituer le contenu exposé dans l'arborescence
/
. Typiquement :
  • /
    contient (si on omet les éléments qui suivent) la partition du système linux sur lequel tu as démarré
  • /home
    contient la partition linux contenant tes documents
  • les éventuels périphériques, partitions windows, partages distants, etc sont généralement montées dans un sous-dossier de
    /media
    ou de
    /mnt
    .


Bref, comme
/
correspond au système linux sur lequel tu as démarré, il n'a pas le même sens quand tu démarres sur un linux USB ou sur le linux de ton disque dur.
/
correspond au système sur lequel tu as démarré. Mais par contre, si tu démarres sur ton linux USB, tu peux monter la partition du linux du disque dur dans un répertoire (disons
/media/linux
).

Ainsi, si tu démarres sur ton linux USB et que tu montes ton linux disque dur dans
/media/linux
, la configuration de grub sera à ce stade dans
/media/linux/etc/default/grub
et non
/etc/default/grub
.

Par contre, linux permet de "déplacer"
/
(sous certaines conditions), dans mon exemple, au niveau de
/media/linux
. C'est ce qu'on appelle faire un
chroot
.. Donc si tu fais en sorte que dans ce répertoire, tout le nécessaire soit présent et que tu te chrootes dedans, alorstout se passera dès lors dans ce terminal "comme si" tu avais démarré sur le linux du disque dur. Et de là, en particulier tu pourras réinstaller/reconfigurer tout ce qui est cassé.

Réparer grub (en temps normal)

L'essentiel de la procédure indiquée dans boot-repair consistent à réaliser ce
chroot
. Vu que tu es arrivé à faire un rapport boot repair, c'est que tu y es arrivé.

Idéalement, il suffit alors de lancer dans l'environnement chrooté
sudo update-grub
ce qui doit ressembler à ceci :

(mando@aldur) (~) $ sudo update-grub
[sudo] Mot de passe de mando :
Generating grub configuration file ...
Found background image: /usr/share/images/desktop-base/desktop-grub.png
Found linux image: /boot/vmlinuz-5.4.0-4-amd64
Found initrd image: /boot/initrd.img-5.4.0-4-amd64
Found linux image: /boot/vmlinuz-5.4.0-3-amd64
Found initrd image: /boot/initrd.img-5.4.0-3-amd64
Found linux image: /boot/vmlinuz-5.3.0-3-amd64
Found initrd image: /boot/initrd.img-5.3.0-3-amd64
Found linux image: /boot/vmlinuz-4.19.0-6-amd64
Found initrd image: /boot/initrd.img-4.19.0-6-amd64
Found Windows Boot Manager on /dev/nvme0n1p1@/EFI/Microsoft/Boot/bootmgfw.efi
Adding boot menu entry for EFI firmware configuration
done


Première question, que se passe-t'il dans ton cas ? (copie colle le résultat)

Dans ton cas

Si on regarde ton rapport boot repair, tu as des erreurs bizarre :

ERROR: pdc: reading /dev/dm-0[Input/output error]
ERROR: pdc: reading /dev/dm-0[Input/output error]
ERROR: pdc: reading /dev/dm-0[Input/output error]
ERROR: pdc: reading /dev/dm-0[Input/output error]
ERROR: pdc: reading /dev/dm-0[Input/output error]
ERROR: pdc: reading /dev/dm-0[Input/output error]


Ça c'est pas bon, ça veut dire qu'un disque RAID (logiciel ?) est bancale. Je ne sais pas si tu t'es amusé à configuré du RAID mais c'est mauvais signe ce genre d'erreur.

De plus, tu dis que tu as chiffré ton disque. Ce qui signifie que
mount
seul ne suffit pas, il faut d'abord déchiffrer la partition. L'idée reste la même mais ça complexifie légèrement car il y a du LVM et de LUKS qui s'en mêlent. Et dans ton cas probablement du RAID en prime...

Méthode 1 : la plus simple

Tu réinstalles, tu oublies le chiffrement et le RAID sauf si tu sais ce que tu fais.

Méthode 2 : si tu as du courage

Partitionnement supposé (à adapter dans ton cas)
  • /dev/sda1
    is
    /boot
  • /dev/sda5
    is an encrypted with LUKS containing a LVM partition, where reside
    /
    and the swap.


Étape 1 : Monter le système

sudo -s
mkdir -p /mnt/linux
cryptsetup luksOpen /dev/sda5 sda5_crypt # This creates /dev/mapper/sda5_crypt
# Enter the LUKS password
apt-get install lvm2
modprobe dm-mod
vgchange -ay
lvscan # À ce stade on devrait voir /dev/Ubuntu/{root, swap_1} ACTIVE


Maintenant on monte tout.

mount /dev/mapper/Ubuntu-root /mnt/linux
mount /dev/sda1 /mnt/linux/boot
mount --bind /dev /mnt/linux/dev
chroot /mnt/linux
mount -t proc proc /proc
mount -t sysfs sys /sys
mount -t devpts devpts /dev/pts
/etc/init.d/lvm2 start
/etc/init.d/lvm2-lvmetad start
/etc/init.d/lvm2-lvmpolld start


De là on peut lancer
update-grub
(ouf).

Étape 2 : Réparer
grub


On vérifie les paramètres de
cryptsetup
en se basant sur ce tutoriel.

1) Vérifier que la ligne concernant
sda5
est présente dans
/etc/crypttab
(on peut ouvrir ce fichier avec
nano /etc/crypttab
, ctrl x pour sauver et quitter).

Exemple : (attention, ces valeurs dépendent de ton système) :

sda5_crypt UUID=8af9859f-9922-4ed3-9f9b-bc31f0c9aeb4 none luks,retry=1,lvm=Ubuntu
storage_crypt UUID=f4e689ec-fda1-450e-8787-61c081c0bee7 none luks


2) Vérifier également
/etc/initramfs-tools/conf.d/cryptroot
.

Exemple : (attention, ces valeurs dépendent de ton système) :

CRYPTROOT=target=sda5_crypt,source=/dev/disk/by-uuid/8af9859f-9922-4ed3-9f9b-bc31f0c9aeb4


3) Si tout est référencé, on peut alors lancer :

update-initramfs -k all -c


4) Maintenant, on contrôle
/etc/default/grub
.

Exemple : (attention, ces valeurs dépendent de ton système) :

GRUB_CMDLINE_LINUX="cryptopts=target=sda5_crypt,source=/dev/disk/by-uuid/8af9859f-9922-4ed3-9f9b-bc31f0c9aeb4,lvm=Ubuntu"

5) Enfin, on réinstalle grub

update-grub


6) ... et on quitte proprement

/etc/init.d/lvm2 stop
/etc/init.d/lvm2-lvmetad stop
/etc/init.d/lvm2-lvmpolld stop
umount /sys
umount /proc
umount /dev/pts
exit
umount /mnt/linux/boot
umount /mnt/linux/dev
umount /mnt/linux
reboot


Bonne chance :-)
0