Bonjour
En créant une entrée dans le menu grub pour lancer linux sans interface graphique, j'ai été confronté au problème du clavier qwerty.
De nombreuses solutions (pas toujours efficaces) sont proposées sur Internet.
Je suis finalement arrivé a mes fins mais un problème demeure.

L'activation du clavier fr bloque le décompte du GRUB_TIMEOUT et il faut appuyer sur une touche pour le lancer.
Ce n'est pas très pratique et le responsable est
Code : Sélectionner tout - Visualiser dans une fenêtre à part
GRUB_TERMINAL_INPUT=at_keyboard
.
Pour remédier au problème, vu que je n'utilise le clavier qu'en mode commande, j'ai créer une fonction dans 40-custom :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
# Pour le clavier fr ou autre
function kbd {
  insmod keylayouts
  insmod at_keyboard
  terminal_input at_keyboard
  keymap $1
}
Comme ça, quand je suis dans grub, j'appuie sur c pour passer en ligne de commande.
Je rentre puis je presse entrée.
Ma fonction est exécutée et mon clavier azerty est reconnu.

Je suis ici aussi obligé d'appuyer sur une touche avant que le clavier fonctionne correctement.

Il est aussi possible de choisir un autre type de clavier avec la commande par exemple

Pour que ça fonctionne et que ce soit complet, il faut d"abord créer un fichier de clavier.

grub va chercher les fichiers dans /boot/grub/layouts/
l'extension doit être .gkb
Pour créer le fichier de disposition du clavier Français :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
grub-kbdcomp -o /boot/grub/layouts/fr.gkb fr
clavier canadien
Code : Sélectionner tout - Visualiser dans une fenêtre à part
grub-kbdcomp -o /boot/grub/layouts/ca.gkb ca
clavier russe
Code : Sélectionner tout - Visualiser dans une fenêtre à part
grub-kbdcomp -o /boot/grub/layouts/ru.gkb ru
mais attention, ça ne fonctionne pas avec ru.
J'ai aussi essayé avec de et gr sans résultat !
Peut être que sans le clavier correspondant ?


J'ai essayé d'utiliser sendkey mais ça ne fonctionne pas car sendkey charge les touches dans le buffer clavier qui sera transmis au kernel lancé.

Je ne peut pas passer directement en mode édition en pressant e car là le clavier est en qwerty, je suis obligé de passer par l'étape c.

Si quelqu'un a un début de commencement d'idée pour résoudre ce problème ?
Merci.

Bon puis pour finir en attendant les nombreuses suggestions qui vont bientôt pleuvoir.

Pour obtenir une ligne dans grub permettant de lancer le dernier noyau linux sans interface graphique :
Il faut modifier le fichier 10_linux.
Presqu'à la fin, il faut insérer ces lignes.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
  if [ "x$is_top_level" = xtrue ] && [ "x${GRUB_DISABLE_SUBMENU}" != xy ]; then
    linux_entry "${OS}" "${version}" simple \
    "${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}"
#lignes a inserer
    linux_entry "${OS} en ligne de commande" "${version}" simple \
    "${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT} 3"
#fin de lignes a inserer
    submenu_indentation="$grub_tab"
Attention, ceci ne fonctionne pas si les sous-menus sont désactivés par GRUB_DISABLE_SUBMENU=y
Cordialement.