diff --git a/configs/releng/airootfs/usr/share/anaconda/interactive-defaults.ks b/configs/releng/airootfs/usr/share/anaconda/interactive-defaults.ks index 191ad0a..d2abb84 100644 --- a/configs/releng/airootfs/usr/share/anaconda/interactive-defaults.ks +++ b/configs/releng/airootfs/usr/share/anaconda/interactive-defaults.ks @@ -89,6 +89,19 @@ SYSROOT=/mnt/sysroot # DNS pour que « pacman -S » fonctionne dans le chroot. cp -f /etc/resolv.conf "$SYSROOT/etc/resolv.conf" 2>/dev/null || true +# --- Hostname : reprendre celui saisi dans Anaconda, sinon « fws » ----------- +# BUG observé : Anaconda écrit un /etc/hostname VIDE dans la cible (le hostname +# du spoke Réseau n'est pas capté). On reprend donc le hostname COURANT du LIVE +# (Anaconda l'applique au live quand on le saisit dans le spoke) s'il diffère du +# défaut archiso, sinon on pose un défaut propre « fws » — jamais de hostname +# vide. (Ce %post tourne APRÈS l'écriture d'Anaconda → on écrase son fichier +# vide.) +HN="$(cat /proc/sys/kernel/hostname 2>/dev/null)" +case "$HN" in + ""|archlinux|localhost|localhost.localdomain) HN="fws" ;; +esac +echo "$HN" > "$SYSROOT/etc/hostname" + # Choix du bureau (écrit par l'addon « Choix du bureau », à venir ; valeur lue # par le %post chrooté ci-dessous). « cli » par défaut si absent. if [ -f /tmp/fws-desktop ]; then @@ -194,6 +207,44 @@ else echo "[FWS] AVERTISSEMENT : grub-install a échoué — bootloader à refaire à la main" fi +# --- 3bis) Clavier : corriger le keymap selon le TERRITOIRE de la locale ------ +# BUG observé : Anaconda dérive le clavier de la LANGUE en IGNORANT le territoire +# → fr_CH (Suisse) donne « fr » (France) au lieu du clavier SUISSE. On corrige : +# si un keymap console spécifique au territoire existe (fr_CH, de_CH…), on +# l'impose dans /etc/vconsole.conf, et on règle aussi le clavier X11 (pour un +# bureau installé ensuite) via langtable. Locale lue dans /etc/locale.conf, à +# défaut dans /root/anaconda-ks.cfg (« lang … »). +fix_keyboard() { + local langv loc lng terr font xk xl xv + langv="$(. /etc/locale.conf 2>/dev/null; printf '%s' "${LANG:-}")" + [ -n "$langv" ] || langv="$(sed -n 's/^lang[[:space:]]\+//p' /root/anaconda-ks.cfg 2>/dev/null | head -1)" + loc="${langv%%.*}" # fr_CH.UTF-8 → fr_CH + lng="${loc%%_*}" # fr + terr="${loc#*_}"; [ "$terr" = "$loc" ] && terr="" # CH + [ -n "$terr" ] || return 0 + find /usr/share/kbd/keymaps -name "${lng}_${terr}.map.gz" 2>/dev/null | grep -q . || return 0 + # vconsole (console TTY) : keymap du territoire (ex. fr_CH). On préserve FONT. + font="$(grep '^FONT=' /etc/vconsole.conf 2>/dev/null)" + { echo "KEYMAP=${lng}_${terr}"; [ -n "$font" ] && echo "$font"; } > /etc/vconsole.conf + # X11 (bureau) : layout/variant via langtable (ex. fr_CH → 'ch(fr)' → ch/fr). + xk="$(python3 -c "import langtable; k=langtable.list_keyboards(languageId='$lng', territoryId='$terr'); print(k[0] if k else '')" 2>/dev/null)" + case "$xk" in + *'('*')') xl="${xk%%(*}"; xv="${xk#*(}"; xv="${xv%)}" ;; + ?*) xl="$xk"; xv="" ;; + *) return 0 ;; + esac + mkdir -p /etc/X11/xorg.conf.d + cat > /etc/X11/xorg.conf.d/00-keyboard.conf <