ubuntu

Loading initial ramdisk boot error : la solution en 2024

loading initial ramdisk… error: out of memory. La solution pour Ubuntu 22.04 qui ne veut plus booter grâce à chroot et une clé live USB

Dernière modification le 18 février 2023 à 10:19 heures

Après la dernière mise à jour, mon Ubuntu 22.04 ne veut plus booter et bloque après l’affichage du message ‘loading initial ramdisk…error: out of memory’

loading initial ramdisk error

Pourquoi l’erreur ‘Loading initial ramdisk… error: out of memory’ lors du boot ?

Voici un écran complet de cette erreur ‘loading initial ramdisk‘. Comme vous pouvez le constater, cela se termine par un Kernel panic et impossible d’aller plus loin !

Loading Linux 5.15.0-56-generic...
Loading initial ramdisk ...
error: out of memory
Press any key to continue

VFS: Cannot open root device "UUID=d2fa4dcf-6a7e-48bd-86b4-f8bf17b05956" or unknown-block(0,0): error -6
PLease append a correct "root=" boot option; here are the available partitions:
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block (0,0)
CPU: 2 PID: 1 Comm: swapper/0 Not tainted 5.15.0-56-generic #30-Ubuntu
Hardware name: VirtualBox, innotek GmbH, Release Date: 12/01/2006
Call trace:
dump_stack+0x6d/0x9a
panic+0x101/0x2e3
mount_block_root+0x23f/0x2e8
mount_root+0x38/0x3a
prepare_namespace+0x13f/0x194
kernel_init_freeable+0x231/0x255
? rest_init+0xb0/0xb0
kernel_init+0xe/0x100
ret_from_fork+0x35/0x40
Kernel Offset: 0x6a00000 from 0xffffffff81000000 (relocation range_ 0xffffffff8000000-0xffffffffbffffffff)
---[ end Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0) ]---

Ne paniquez pas, il existe un moyen de contourner ce ‘loading initial ramdisk error’ sans pour autant passer par la case ‘réinstallation de Ubuntu 22.04’ au complet.

C’est le manque de place dans la partition /boot qui empêche le nouveau noyau de s’y déployer et provoque l’erreur ‘Loading initial ramdisk’

Pour réparer votre Ubuntu. Il vous faudra utiliser une clé USB live et accéder à votre partition grâce à la commande chroot.

La commande chroot signifie littéralement ‘change root‘, c’est à dire changer la racine. Elle permet donc d’« entrer dans » une installation de Linux avec des droits root sans booter dessus.

Un fois que vous serez dans la partition adéquate, vous pourrez la ‘réparer’ et faire en sorte que le nouveau noyau puisse se déployer sans provoquer cette fameuse ‘loading initial ramdisk error’

Étape 1: bootez sur une clé USB Ubuntu Desktop

  • choisissez l’option ‘Try Ubuntu
  • Adaptez au besoin votre clavier et la langue utilisée.

Étape 2: trouvez la partition root de votre Ubuntu qui ne veut plus booter

  • trouvez la partition avec la commande fdisk -l
sudo fdisk -l
Disk /dev/loop0: 4 KiB, 4096 bytes, 8 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk /dev/loop1: 163,29 MiB, 171225088 bytes, 334424 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

....

Disk /dev/loop7: 284 KiB, 290816 bytes, 568 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk /dev/sda: 25 GiB, 26843545600 bytes, 52428800 sectors
Disk model: VBOX HARDDISK   
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: D15BF4C1-8452-4114-AF3E-58136D197378

Device       Start      End  Sectors  Size Type
/dev/sda1     2048     4095     2048    1M BIOS boot
/dev/sda2     4096  1054719  1050624  513M EFI System
/dev/sda3  1054720 52426751 51372032 24,5G Linux filesystem

Disk /dev/loop8: 49,62 MiB, 52031488 bytes, 101624 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

....

Disk /dev/loop12: 346,33 MiB, 363151360 bytes, 709280 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

Dans notre cas, nous voyons clairement que notre Ubuntu se trouve sur la partition /dev/sda3 du disque /dev/sda.

Étape 3: chrooter sur la partition de votre Ubuntu

  • pour plus de facilité, passez en root
sudo su
  • faites un umount de la partition /dev/sd[XN] au cas où la partition serait déjà montée
umount /dev/sd[XN]
  • Montez la partition sur un nouvel emplacement MonChroot
mkdir /mnt/MonChroot
mount /dev/sd[XN] /mnt/MonChroot
  • Montez un pseudo-terminal dans le nouvel emplacement
if [ ! -d "/mnt/MonChroot/dev/pts" ]; then mkdir /mnt/MonChroot/dev/pts; fi
mount -t devpts none /mnt/MonChroot/dev/pts
  • Montez les process informations dans le nouvel emplacement
mount --bind /proc /mnt/MonChroot/proc
  • Montez le Devices Directory
mount --bind /dev /mnt/MonChroot/dev
  • Montez le sysfs virtual file system
mount --bind /sys /mnt/MonChroot/sys
  • Montez également un tmp
mount --bind /tmp /mnt/MonChroot/tmp
  • Activez le networking simplement en copiant le fichier resolv.conf
cp /etc/resolv.conf /mnt/MonChroot/etc/resolv.conf
  • Nous pouvons alors ‘chrooter’ vers la nouvelle destination
chroot /mnt/MonChroot /bin/bash

Pour montrer que nous sommes bien sur la bonne partition de notre Ubuntu qui ne veut plus booter, nous pouvons effectuer quelques commandes:

pwd
whoami
ping -c 3 google.com
ls -la
...

Étape 4: apporter les modifications nécessaires

  • éditez le fichier /etc/initramfs-tools/initramfs.conf
nano /etc/initramfs-tools/initramfs.conf
  • changez la ligne MODULES=most en MODULES=dep pour ne charger que les modules nécessaires
  • changez la ligne COMPRESS=zstd en COMPRESS=xz pour utiliser la compression de fichiers ‘xz lossless data compression’ plus efficace pour gagner de l’espace disque.

Voici le fichier initramfs.conf ainsi obtenu:

#
# initramfs.conf
# Configuration file for mkinitramfs(8). See initramfs.conf(5).
#
# Note that configuration options from this file can be overridden
# by config files in the /etc/initramfs-tools/conf.d directory.

#
# MODULES: [ most | netboot | dep | list ]
#
# most - Add most filesystem and all harddrive drivers.
#
# dep - Try and guess which modules to load.
#
# netboot - Add the base modules, network modules, but skip block devices.
#
# list - Only include modules from the 'additional modules' list
#

MODULES=dep

#
# BUSYBOX: [ y | n | auto ]
#
# Use busybox shell and utilities.  If set to n, klibc utilities will be used.
# If set to auto (or unset), busybox will be used if installed and klibc will
# be used otherwise.
#

BUSYBOX=auto

#
# COMPRESS: [ gzip | bzip2 | lz4 | lzma | lzop | xz | zstd ]
#

COMPRESS=xz

#
# DEVICE: ...
#
# Specify a specific network interface, like eth0
# Overridden by optional ip= or BOOTIF= bootarg
#

DEVICE=

#
# NFSROOT: [ auto | HOST:MOUNT ]
#

NFSROOT=auto

#
# RUNSIZE: ...
#
# The size of the /run tmpfs mount point, like 256M or 10%
# Overridden by optional initramfs.runsize= bootarg
#

RUNSIZE=10%

#
# FSTYPE: ...
#
# The filesystem type(s) to support, or "auto" to use the current root
# filesystem type
#

FSTYPE=auto
  • mettez les fichiers initramfs et grub à jour
update-initramfs -c -k all
update-grub

Étape 5: Rebootez

Votre système Ubuntu 22.04 va maintenant booter normalement.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *