Univention Bugzilla – Bug 28973
Bootverfahren / Imagerollout
Last modified: 2013-03-26 09:14:11 CET
Für interim-2 sollten noch weitere Punkte verbessert werden: - Debug Ausgabe sollte konfigurierbar sein - Abfangen von bekannten Fehlermeldungen - Testdefinition
In einem Test hatte ich keine Festplatte in die VM eingebunden, es wurde dann trotzdem versucht ein Image zu schreiben.
Man kann nun "verbose=y" als cmdline Parameter übergeben. Es wird dann im Skript ein set -x gestartet.
Per Default werden dem UCC Client jetzt Parameter für das Remote Logging übergeben. Standardmäßig ist das Remote Logging auf UCS Systemen deaktiviert. Es kann folgendermaßen aktiviert werden: echo -e '$ModLoad imudp\n$UDPServerRun 514\n' >>/etc/rsyslog.d/ucc.conf ucr set security/packetfilter/udp/514/all=ACCEPT /etc/init.d/univention-firewall restart /etc/init.d/rsyslog restart Die Parameter werden dem UCC Client per PXE übergeben: ucc/pxe/append?"syslog=y syslogserver=$(get_default_ip_address)" Zusätzlich kann noch verbose=y übergeben werden, dann wird das Skript per set -x ausgeführt. Um Änderungen an der initrd vorzunehmen ohne die gesamte DVD neu zu bauen: mount -o loop /var/lib/univention-client-boot/ucc-1.0-thinclient-image.img /mnt # do stuff chroot /mnt /usr/sbin/update-initramfs -c -k all cp /mnt/boot/initrd.img-3.2.0-35-generic /var/lib/univention-client-boot/ucc-1.0-thinclient-image.img.initrd Es fehlt noch eine Überprüfung der Imagegrößen: Bug #28974.
(In reply to comment #3) > Per Default werden dem UCC Client jetzt Parameter für das Remote Logging > übergeben. Standardmäßig ist das Remote Logging auf UCS Systemen deaktiviert. > Es kann folgendermaßen aktiviert werden: Das gilt aber nur für den PXE Boot. Startet der Client lokal, wird das nicht automatisch gemacht (kann aber über grub/append konfiguriert werden). OK? > Zusätzlich kann noch verbose=y übergeben werden, dann wird das Skript per set > -x ausgeführt. Das set -x reicht nicht bis zum Update Script /tmp/upgrade_script in ucc_update(). Vielleicht sollt man das noch (in Abhängigkeit von $verbose) mit sh -x /tmp/upgrade_script starten. > Um Änderungen an der initrd vorzunehmen ohne die gesamte DVD neu zu bauen: > mount -o loop /var/lib/univention-client-boot/ucc-1.0-thinclient-image.img /mnt > # do stuff > chroot /mnt /usr/sbin/update-initramfs -c -k all > cp /mnt/boot/initrd.img-3.2.0-35-generic > /var/lib/univention-client-boot/ucc-1.0-thinclient-image.img.initrd OK, das klappt. Wäre es noch denkbar, dass wenn verbose und rsyslog auf dem Client aktiviert sind, die set -x Meldungen auf dem Server landen? Um Problem im initramfs Script (scripts/ucc) nachzuvollziehen wäre das sicher hilfreich. Ich hatte erst an so etwas gedacht, exec 2> >(logger) exec 1> >(logger) das geht aber leider nicht, da nicht die Bash verwendet wird. Denkbar wäre aber auch dies mountroot() { ... test "$verbose" = "y" && set -x if [ "$verbose" = "y" -a "$syslog" = "y" ]; then exec 6>&1 exec 7>&2 exec 1>>/tmp/aa exec 2>>/tmp/aa fi # do stuff ... if [ "$verbose" = "y" -a "$syslog" = "y" ]; then exec 1>&6 6>&- exec 2>&7 7>&- logger -f /tmp/aa fi stop_remote_logging
Für das Remote-Logging habe ich den separaten Bug 29923 angelegt.
(In reply to comment #4) > (In reply to comment #3) > > Per Default werden dem UCC Client jetzt Parameter für das Remote Logging > > übergeben. Standardmäßig ist das Remote Logging auf UCS Systemen deaktiviert. > > Es kann folgendermaßen aktiviert werden: > > Das gilt aber nur für den PXE Boot. Startet der Client lokal, wird das nicht > automatisch gemacht (kann aber über grub/append konfiguriert werden). OK? Das steht jetzt an dem neuen Bug, das muss einfach in die grub-Konfiguration geschrieben werden. > > Zusätzlich kann noch verbose=y übergeben werden, dann wird das Skript per set > > -x ausgeführt. > > Das set -x reicht nicht bis zum Update Script /tmp/upgrade_script in > ucc_update(). Vielleicht sollt man das noch (in Abhängigkeit von $verbose) mit > sh -x /tmp/upgrade_script starten. Wird jetzt mit sh -x aufgerufen. > > > Um Änderungen an der initrd vorzunehmen ohne die gesamte DVD neu zu bauen: > > mount -o loop /var/lib/univention-client-boot/ucc-1.0-thinclient-image.img /mnt > > # do stuff > > chroot /mnt /usr/sbin/update-initramfs -c -k all > > cp /mnt/boot/initrd.img-3.2.0-35-generic > > /var/lib/univention-client-boot/ucc-1.0-thinclient-image.img.initrd > > OK, das klappt. > > > Wäre es noch denkbar, dass wenn verbose und rsyslog auf dem Client aktiviert > sind, die set -x Meldungen auf dem Server landen? Um Problem im initramfs > Script (scripts/ucc) nachzuvollziehen wäre das sicher hilfreich. > > Ich hatte erst an so etwas gedacht, > exec 2> >(logger) > exec 1> >(logger) > das geht aber leider nicht, da nicht die Bash verwendet wird. Denkbar wäre aber > auch dies > > mountroot() { > > ... > > test "$verbose" = "y" && set -x > > if [ "$verbose" = "y" -a "$syslog" = "y" ]; then > exec 6>&1 > exec 7>&2 > exec 1>>/tmp/aa > exec 2>>/tmp/aa > fi > > # do stuff ... > > if [ "$verbose" = "y" -a "$syslog" = "y" ]; then > exec 1>&6 6>&- > exec 2>&7 7>&- > logger -f /tmp/aa > fi > > stop_remote_logging Problem ist, dass es dann keine normale Ausgabe mehr gibt. In einer Standard Bash würde es so funktionieren: exec 3>&1 > >(tee -a /dev/fd/3 | logger -n "$syslogserver") 2>&1 Aber das geht in der busybox Shell nicht. Ich habe es jetzt so ergänzt, dass im verbose-Modus immer wieder auf Return gewartet wird. Dadurch hat man mehr Möglichkeiten zu prüfen, was passiert. Optional kann man anstatt nur Return noch shell eingeben und es wird eine Shell gestartet, nach dem exit aus der shell wird normal weiter gebootet.
OK, verbose=y hilft jetzt schon deutlich mehr und.
UCC 1.0 has been released: http://forum.univention.de/viewtopic.php?f=26&t=2417 http://forum.univention.de/viewtopic.php?f=54&t=2418 If this error occurs again, please use "Clone This Bug".