[FIX] qemu debian s390x : journal de console et question reseau Z
« L'installation a echoue, pas de sortie pertinente » : une console pty ne garde RIEN. Quand d-i s'arrete, il l'ecrit a l'ecran d'une VM que personne ne regarde, et il ne reste rien a lire. La voie installateur ecrit desormais un journal qui survit a l'arret du domaine. Ce journal a immediatement nomme la premiere cause : d-i s'arretait sur « Configure the network device », une question propre a s390x posee par le udeb s390-netdevice — ctc, qeth, iucv ou virtio. Elle n'a AUCUNE valeur par defaut, donc priority=critical ne la saute pas. Preseedee a virtio, elle disparait. Reste un second arret, non resolu : netcfg n'essaie aucun DHCP et tombe sur la saisie d'une adresse statique. Ni le delai de lien, ni le nom explicite de l'interface n'y changent quoi que ce soit. --- EN --- "The install failed, no relevant output": a pty console keeps NOTHING. When d-i stops, it says so on the screen of a VM nobody watches, and nothing is left to read. The installer path now writes a log that outlives the domain. That log immediately named the first cause: d-i stopped on "Configure the network device", an s390x-only question from the s390-netdevice udeb — ctc, qeth, iucv or virtio. It has NO default, so priority=critical does not skip it. Preseeded to virtio, it is gone. A second stop remains, unsolved: netcfg attempts no DHCP and falls to static address entry. Neither the link timeout nor naming the interface explicitly changes anything. Assisted-by: Claude Opus 5 (cherry picked from commit d1a371a8f4775e8488522fba24a79775a5a101e8)
This commit is contained in:
parent
4df994f721
commit
12db87e1c2
1 changed files with 33 additions and 2 deletions
|
|
@ -1733,9 +1733,32 @@ def build_preseed(
|
||||||
lines = [
|
lines = [
|
||||||
"d-i debian-installer/locale string en_US.UTF-8",
|
"d-i debian-installer/locale string en_US.UTF-8",
|
||||||
"d-i keyboard-configuration/xkb-keymap select us",
|
"d-i keyboard-configuration/xkb-keymap select us",
|
||||||
|
# Question propre à s390x, posée par le udeb « s390-netdevice » et
|
||||||
|
# inexistante ailleurs : le matériel Z offre ctc, qeth, iucv ou
|
||||||
|
# virtio, et d-i ne devine pas. Elle n'a AUCUNE valeur par défaut,
|
||||||
|
# donc « priority=critical » ne la saute pas — l'installation se
|
||||||
|
# figeait dessus, sur le premier choix de la liste (ctc), en
|
||||||
|
# n'affichant rien d'autre qu'un écran bleu. Mesuré.
|
||||||
|
"d-i s390-netdevice/choose_networktype select virtio",
|
||||||
# « auto » évite la question du choix d'interface : sous virtio-ccw
|
# « auto » évite la question du choix d'interface : sous virtio-ccw
|
||||||
# elle s'appelle enc1 et non eth0, et le nom n'est pas devinable.
|
# elle s'appelle enc1 et non eth0, et le nom n'est pas devinable.
|
||||||
"d-i netcfg/choose_interface select auto",
|
# « enc1 » et non « auto ». Sur s390x la liste d'interfaces est bâtie
|
||||||
|
# par le udeb s390-netdevice, et « auto » ne s'y résout pas : netcfg
|
||||||
|
# n'essaie alors AUCUN DHCP — aucun bail côté dnsmasq — et tombe
|
||||||
|
# droit sur la saisie d'une adresse statique. Mesuré deux fois.
|
||||||
|
# Le nom est déterministe sous s390-ccw-virtio : le premier NIC
|
||||||
|
# virtio-ccw est enc1, comme le journal du noyau le montre
|
||||||
|
# (« virtio_net virtio2 enc1: renamed from eth0 »).
|
||||||
|
"d-i netcfg/choose_interface select enc1",
|
||||||
|
# Émulation TCG : le lien met bien plus longtemps à monter qu'en
|
||||||
|
# natif — « enc1 » n'est renommé qu'à 4,7 s de temps invité, et
|
||||||
|
# netcfg sonde avant. Sans lien détecté il n'ESSAIE MÊME PAS le DHCP
|
||||||
|
# et tombe droit sur la saisie d'une adresse statique. Mesuré : zéro
|
||||||
|
# DHCPDISCOVER côté dnsmasq, aucun bail. On lui laisse le temps, et
|
||||||
|
# un échec repart en autoconfiguration au lieu de poser la question.
|
||||||
|
"d-i netcfg/link_wait_timeout string 60",
|
||||||
|
"d-i netcfg/dhcp_timeout string 120",
|
||||||
|
"d-i netcfg/dhcp_options select Retry network autoconfiguration",
|
||||||
f"d-i netcfg/get_hostname string {args.hostname}",
|
f"d-i netcfg/get_hostname string {args.hostname}",
|
||||||
"d-i netcfg/get_domain string localdomain",
|
"d-i netcfg/get_domain string localdomain",
|
||||||
"d-i netcfg/hostname string " + args.hostname,
|
"d-i netcfg/hostname string " + args.hostname,
|
||||||
|
|
@ -1941,6 +1964,7 @@ def virt_install(
|
||||||
# s390x n'a pas de port série ISA : la console est SCLP (ttysclp0), et non
|
# s390x n'a pas de port série ISA : la console est SCLP (ttysclp0), et non
|
||||||
# ttyS0. Ailleurs (x86/arm64), console série classique.
|
# ttyS0. Ailleurs (x86/arm64), console série classique.
|
||||||
console_target = "sclp" if args.arch == "s390x" else "serial"
|
console_target = "sclp" if args.arch == "s390x" else "serial"
|
||||||
|
console_log = f"/var/log/libvirt/qemu/{args.name}-console.log"
|
||||||
# Écran virtuel pour une VM graphique. s390x en est écarté : QEMU y expose
|
# Écran virtuel pour une VM graphique. s390x en est écarté : QEMU y expose
|
||||||
# bien « virtio-gpu-ccw », mais rien ne garantit que le noyau s390x de la
|
# bien « virtio-gpu-ccw », mais rien ne garantit que le noyau s390x de la
|
||||||
# distribution embarque le pilote DRM virtio-gpu — la VM démarrerait alors
|
# distribution embarque le pilote DRM virtio-gpu — la VM démarrerait alors
|
||||||
|
|
@ -2027,7 +2051,14 @@ def virt_install(
|
||||||
"--graphics",
|
"--graphics",
|
||||||
graphics,
|
graphics,
|
||||||
"--console",
|
"--console",
|
||||||
f"pty,target_type={console_target}",
|
# Journal de console pour la voie installateur. Une console « pty »
|
||||||
|
# seule ne gardE rien : quand d-i échoue, il l'écrit à l'écran d'une
|
||||||
|
# VM que personne ne regarde, et il ne reste RIEN à lire ensuite —
|
||||||
|
# exactement « l'installation a échoué, pas de sortie pertinente ».
|
||||||
|
# Le fichier, lui, survit à l'arrêt du domaine.
|
||||||
|
f"pty,target_type={console_target},log.file={console_log}"
|
||||||
|
if installer
|
||||||
|
else f"pty,target_type={console_target}",
|
||||||
# Canal virtio de l'agent invité (org.qemu.guest_agent.0) : permet à
|
# Canal virtio de l'agent invité (org.qemu.guest_agent.0) : permet à
|
||||||
# virsh de piloter la VM SANS réseau (ex. étendre le FS invité après
|
# virsh de piloter la VM SANS réseau (ex. étendre le FS invité après
|
||||||
# un redimensionnement de disque). Inoffensif si l'agent est absent.
|
# un redimensionnement de disque). Inoffensif si l'agent est absent.
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue