GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Comment démarrer dans Arch Linux en utilisant Initramfs, dans le Grub d'Ubuntu ?

J'ai deux disques durs, avec deux Grubs correspondants. L'un vient d'Arch Linux et l'autre d'Ubuntu. En utilisant le grub d'Arch, je peux démarrer dans l'une ou l'autre des distributions. Cependant, en utilisant le grub d'Ubuntu, je peux voir à la fois Arch et Ubuntu, mais je ne peux pas démarrer dans Arch. J'obtiens l'erreur :

Kernel offset
End kernel panic. Not syncing: VFS.
Unable to mount root fs on unknown-block.

J'ai comparé grub.cfg pour les deux distributions. Dans le grub d'Ubuntu, je peux voir une entrée pour Arch, avec la ligne suivante.

initrd /boot/intel-ucode.img

Je l'ai changé pour suivre le grub.cfg d'Arch :

initrd /boot/intel-ucode.img /boot/initramfs-linux.img

Maintenant, je peux démarrer Arch à partir du grub d'Ubuntu. Il semble qu'Ubuntu n'ajoute pas cette option requise par défaut. Comment puis-je faire en sorte qu'Ubuntu crée automatiquement l'entrée correcte ?

Modifier

Je mets à jour le grub d'Arch avec grub-mkconfig -o /boot/grub/grub.cfg . Dans Ubuntu, j'ai essayé à la fois update-grub et la commande brute ci-dessus (dont elle est un alias).

Modifier 2

Les lignes non commentées de /etc/default/grub

GRUB_DEFAULT="saved"
GRUB_SAVEDEFAULT="true"
GRUB_HIDDEN_TIMEOUT_QUIET="true"
GRUB_TIMEOUT="3"
GRUB_DISTRIBUTOR="`lsb_release -i -s 2> /dev/null || echo Debian`"
GRUB_CMDLINE_LINUX_DEFAULT=""
GRUB_CMDLINE_LINUX=""

Réponse acceptée :

En fait, il y a deux fichiers qui doivent être modifiés pour résoudre ce problème. J'ai testé cela sur mon Lubuntu 16.04.1 et Manjaro Linux.

Sous Ubuntu :

1) Fichier /usr/lib/linux-boot-probes/mount/40grub2 il existe une fonction parse_grub_menu qui ne gère pas tous les paramètres initrd. Vous devez modifier 'cas "$1" dans ... initrd) ' :

a) supprimer l'attribution

initrd="$(echo "$2" ...)"

b) ajouter deux lignes à la place de celle supprimée :

shift 1
initrd="$(echo "[email protected]" | sed 's/(.*)//')"

2) Fichier /etc/grub.d/30_os-prober dans une boucle for, corrigez l'affectation de LINITRD :

for LINUX in ${LINUXPROBED}; do
...
    LINITRD="`echo ${LINUX} | cut -d ':' -f 5 | tr '^' ' '`"

Le premier correctif prend en compte toutes les informations initrd disponibles pour Manjaro. Le deuxième correctif nettoie la ligne initrd générée en remplaçant certains caractères '^' par des espaces.


Ubuntu
  1. Ubuntu - Comment empêcher Grub d'utiliser/démarrer n'importe quelle interface utilisateur graphique ?

  2. Comment démarrer le serveur Ubuntu 14.04 en réseau avec Pxe à l'aide de NFS?

  3. Comment faire un double démarrage d'Ubuntu et de Linux Mint ?

  4. Comment démarrer en mode console (texte) avec Debian / Ubuntu, Fedora, Arch Linux / Manjaro et plus

  5. Comment démarrer Ubuntu en mode de récupération

Comment mettre à jour Grub sur Ubuntu et d'autres distributions Linux

Comment installer le navigateur Web Falkon sur Ubuntu Linux

Comment créer un fichier dans Ubuntu Linux à l'aide de la commande et de l'interface graphique

Comment démarrer en mode de secours ou en mode d'urgence dans Ubuntu 20.04 / 18.04

Comment démarrer en mode de secours ou en mode d'urgence dans Ubuntu

Comment installer WordPress en utilisant Nginx dans Ubuntu Linux