Bonjour je vous raconte aujourd'hui un problème résolu qui m'a pris une journée entière où je me suis arraché les cheveux. Heuresement avec susan34 nous avons aboutti à une solution. Peux être que cette histoire va vous aider en retour, si c'est le cas tant mieux, c'est le but de ce sujet.
Contexte :
J'ai deux disques durs (HDD) intégrés dans mon pc portable. Sur le premier HDD (hd0) j'ai installé la distribution linux Debian Buster. Sur le deuxième HDD (hd1) j'ai flashé l'image batocera. Depuis le bios je pouvais booter sans problème sur batocera ou sur Debian (enfin Grub2).
Quand je ne passe pas par le bios, Grub2 est lancé (car installé avec Debian sur hd0). J'ai voulu ajouté batocera à la liste de Grub2 comme ça je pouvais potentiellement choisir entre booter sur debian ou batocera automatiquement au bout de X secondes si aucun choix n'etait fait).
1) J'ai donc suivi le wiki officiel pour le dualboot
Cette solution est censé marcher en temps normal mais pour moi ce n'était pas le cas pour nous ne savons quel raison...
J'avais en effet Grub2 quand j'essayais de booter sur batocera qui me disait "no such device"
2) Du coup je persiste et bidouille un peu en tant que root le fichier 15_batocera (créé précédement, voir §1) je remplace les lignes commencant par insmod et search par la ligne : set root='hd1,msdos1'
Je valide les modifications avec la commande update-grub
Je redémarre et essaye de booter sur batocera et maintenant il me met "no such partition"... ARRRRRGGGGHHHH
3) Cette fois c'est la bonne ! Nous y arrivons enfin, après avoir admis que pour une raison qui nous échappe, Grub2 n'arrive pas à lire les partitions de hd1.
Voici la solution que me présente susan34 finalement et qui fonctionne pour ces cas là :
Grub2 n'a besoin que de deux fichiers pour booter batocera : /boot/linux et /boot/initrd.gz
Comme mon Grub2 ne reconnais que le hd0 où il est installé (avec Debian), nous allons l'utiliser.
Pour faire un truc un peu propre je créé donc un dossier batocera depuis debian (sur debian!) dans le dossier boot (nous faisons tout en tant que root ici) : mkdir /boot/batocera/
Je monte ensuite le disque batocera (/dev/sdb1) depuis l'interface graphique.
Puis je copie les 2 fichiers de /dev/sdb1/boot vers /boot/batocera/ :
cp /dev/sdb1/boot/linux /boot/batocera/linux
cp /dev/sdb1/boot/initrd.gz /boot/batocera/initrd.gz
Ensuite je modifie le fichier 15_batocera : nano etc/grub.d/15_batocera
pour remplacé hd1 par hd0 et pour remplacer les chemins des 2 fichiers ce qui donne finalement en résumé le contenu suivant :
#! /bin/sh
BATOCERA_UUID=$(lsblk --fs --noheadings --pairs -o TYPE,LABEL,UUID |
grep -E '^TYPE="part" LABEL="BATOCERA" UUID="[^"]*"$' |
sed -e s+'^TYPE="part" LABEL="BATOCERA" UUID="\([^"]*\)"$'+'\1'+ | head -1)
if test -n "${BATOCERA_UUID}"
then
echo "Image batocera found on ${BATOCERA_UUID}" >&2
cat <<EOF
menuentry "batocera.linux" {
set root='hd0,msdos1'
linux /boot/batocera/linux label=BATOCERA console=tty3 quiet loglevel=0 vt.global_cursor_default=0
initrd /boot/batocera/initrd.gz
}
EOF
fi
J'enregistre et je met à jour Grub2 : update-grub
Je redémarre le pc et là quand je choisis batocera dans Grub ca marche enfin !!! Je suis trop content, Merciiiii
Le truc IMPORTANT à savoir si jamais vous mettez à jour batocera à l'avenir : pensez également à recopier les deux fichiers que nous avons mis dans /boot/batocera/
C'est un plaisir d'avoir contribué à la commu, hésitez pas à le faire savoir si ca vous a aidé en retour !
PS : Et si quelqu'un sais pourquoi ce foutu hd1 ou les partitions de hd1 n'étaient pas reconnues par Grub2 faites le savoir svp ;)