Cette après-midi, j'ai passé un moment à lutter pour mettre à jour *proprement* une Debian/s390x de "stable" (Lenny) en "Sid.
En suivant la procédure dont j'avais l'habitude (sudo aptitude dist-upgrade), cette #@#{@{! d'udev n'arrête pas de ouiner, et l'upgrade plante en plein milieu.
Après plusieurs essais infructueux, j'ai demandé aux lutins du jardin de l'admin magique, et c'est PèreNoël qui m'a mis sur la voie.
Je précise que j'ai accès à la console de la machine virtuelle, et que je ne fais pas ça totalement à l'aveugle - c'est du test, quoi.
Au pire, si ça pète, ça pète, je recrée une VM en quelques minutes.
On commence par changer le fichier /etc/apt/sources.list pour qu'il pointe sur les dépôts de Sid:
sed -i 's/lenny/sid/g' /etc/apt/sources.list
On en profite pour faire un peu de ménage dans le fichier (les sources updates et security sont pas nécessaires en Sid).
On met la base de données d'aptitude à jour, puis on installe le kernel de Sid (2.6.32):
debgls:/home/guigui# sudo aptitude update && sudo aptitude install linux-image-2.6-s390x
Une fois le kernel installé et le boot loader mis à jour, on reboote. C'est à ce moment qu'il est rassurant d'avoir accès à la console, et des machines de tests jetables. Comme le disait _mat, si la compatibilité glibc a été pété, à ce moment, on l'a dans le luc.
reboot
Tout va bien, la machine est revenue, on peut donc ensuite passer au dist-upgrade classique que l'on connait:
debgls:/home/guigui# aptitude update && aptitude safe-upgrade
Hit http://ftp.fr.debian.org sid Release.gpg
Hit http://ftp.fr.debian.org sid Release
Get:1 http://ftp.fr.debian.org sid/main Packages/DiffIndex [2038B]
Fetched 2038B in 1s (1185B/s)
Reading package lists... Done
Reading package lists... Done
Building dependency tree
Reading state information... Done
Reading extended state information
Initializing package states... Done
Reading task descriptions... Done
Resolving dependencies...
Resolving dependencies...
Resolving dependencies...
Resolving dependencies...
Resolving dependencies...
Resolving dependencies...
Resolving dependencies...
Resolving dependencies...
Resolving dependencies...
Resolving dependencies...
Resolving dependencies...
The following NEW packages will be installed:
apt-xapian-index{a} ca-certificates{a} dash{a} diffutils{a} file{a} gcc-4.4-base{a} gnupg-curl{a} insserv{a} install-info{a} iso-codes{a} javascript-common{a} libapr1{a} libaprutil1{a} libboost-iostreams1.40.0{a} libbsd0{a}
libc-bin{a} libcurl3-gnutls{a} libdb4.5{a} libdb4.7{a} libdb4.8{a} libexpat1{a} libfile-copy-recursive-perl{a} libgssapi-krb5-2{a} libidn11{a} libjs-jquery{a} libk5crypto3{a} libkrb5-3{a} libkrb5support0{a} libldap-2.4-2{a}
liblockfile1{a} liblog4cxx10{a} libmagic1{a} libpci3{a} libreadline6{a} libsasl2-modules{a} libsqlite3-0{a} libudev0{a} lockfile-progs{a} lsb-release{a} make{a} mime-support{a} pciutils{a} perl{a} perl-modules{a} python{a}
python-apt{a} python-central{a} python-debian{a} python-minimal{a} python-support{a} python-xapian{a} python2.5{a} python2.5-minimal{a} sensible-utils{a} usbutils{a} wwwconfig-common{a}
The following packages will be REMOVED:
libkrb53{u}
The following packages will be upgraded:
adduser apt apt-utils aptitude base-files base-passwd bash bsdmainutils bsdutils busybox bzip2 coreutils cpio cron debconf debconf-i18n debianutils dhcp3-client dhcp3-common diff dmsetup dpkg e2fslibs e2fsprogs ed findutils ftp
gcc-4.3-base gnupg gpgv grep groff-base gzip hostname ifupdown info initramfs-tools initscripts installation-report iproute iptables iputils-ping klibc-utils libacl1 libattr1 libblkid1 libbz2-1.0 libc6 libcomerr2 libconsole
libcwidget3 libdb4.6 libdevmapper1.02.1 libedit2 libept0 libgcc1 libgcrypt11 libgdbm3 libgnutls26 libgpg-error0 libkeyutils1 libklibc liblocale-gettext-perl libncurses5 libncursesw5 libnewt0.52 libpam-modules libpam-runtime libpam0g
libpopt0 libreadline5 libsasl2-2 libselinux1 libsepol1 libsigc++-2.0-0c2a libslang2 libss2 libssl0.9.8 libstdc++6 libtasn1-3 libtext-charwidth-perl libtext-iconv-perl libtext-wrapi18n-perl libuuid1 libwrap0 libxapian15 locales login
logrotate lsb-base lvm2 makedev man-db manpages mawk mktemp module-init-tools mount nano ncurses-base ncurses-bin net-tools netbase openssh-client openssh-server openssl passwd perl-base procps readline-common rsyslog screen sed
sudo sysconfig-hardware sysstat sysv-rc sysvinit sysvinit-utils tar tasksel tasksel-data tcpd traceroute tzdata ucf udev update-inetd util-linux vim-common vim-tiny wget whiptail zlib1g
The following packages are RECOMMENDED but will NOT be installed:
aptitude-doc-cs aptitude-doc-en aptitude-doc-es aptitude-doc-fi aptitude-doc-fr aptitude-doc-ja bash-completion bsd-mailx citadel-mta courier-mta dma esmtp-run exim4 exim4-daemon-heavy exim4-daemon-light heirloom-mailx libatm1
libfribidi0 libgpm2 libparse-debianchangelog-perl libpng12-0 mailutils masqmail msmtp-mta nullmailer openssh-blacklist-extra postfix psmisc reportbug sendmail-bin ssmtp uuid-runtime xauth xmail
134 packages upgraded, 56 newly installed, 1 to remove and 0 not upgraded.
Need to get 80.8MB of archives. After unpacking 95.8MB will be used.
Do you want to continue? [Y/n/?]
Need to get 80.8MB of archives. After unpacking 95.8MB will be used.
Do you want to continue? [Y/n/?]
Writing extended state information... Done
Get:1 http://ftp.fr.debian.org sid/main locales 2.10.2-5 [4752kB]
Get:2 http://ftp.fr.debian.org sid/main libc-bin 2.10.2-5 [736kB]
Get:3 http://ftp.fr.debian.org sid/main libc6 2.10.2-5 [4317kB]
Get:4 http://ftp.fr.debian.org sid/main perl-base 5.10.1-9 [1086kB]
Get:5 http://ftp.fr.debian.org sid/main liblocale-gettext-perl 1.05-6 [20.6kB]
Get:6 http://ftp.fr.debian.org sid/main libtext-iconv-perl 1.7-2 [17.8kB]
Get:7 http://ftp.fr.debian.org sid/main libtext-charwidth-perl 0.04-6 [11.8kB]
Get:8 http://ftp.fr.debian.org sid/main libtext-wrapi18n-perl 0.06-7 [9004B]
Get:9 http://ftp.fr.debian.org sid/main debconf-i18n 1.5.28 [178kB]
Get:10 http://ftp.fr.debian.org sid/main debconf 1.5.28 [149kB]
Get:11 http://ftp.fr.debian.org sid/main gcc-4.4-base 4.4.2-9 [115kB]
Get:12 http://ftp.fr.debian.org sid/main libgcc1 1:4.4.2-9 [31.2kB]
Get:13 http://ftp.fr.debian.org sid/main libcomerr2 1.41.9-1 [46.7kB]
Get:14 http://ftp.fr.debian.org sid/main libkeyutils1 1.2-12 [6606B]
Get:15 http://ftp.fr.debian.org sid/main libkrb5support0 1.8+dfsg~alpha1-4 [42.9kB]
Get:16 http://ftp.fr.debian.org sid/main libk5crypto3 1.8+dfsg~alpha1-4 [115kB]
Get:17 http://ftp.fr.debian.org sid/main libkrb5-3 1.8+dfsg~alpha1-4 [391kB]
Get:18 http://ftp.fr.debian.org sid/main libgssapi-krb5-2 1.8+dfsg~alpha1-4 [129kB]
Get:19 http://ftp.fr.debian.org sid/main libpam0g 1.1.0-4 [115kB]
Get:20 http://ftp.fr.debian.org sid/main libselinux1 2.0.89-4 [87.0kB]
Get:21 http://ftp.fr.debian.org sid/main zlib1g 1:1.2.3.4.dfsg-3 [82.0kB]
Get:22 http://ftp.fr.debian.org sid/main libssl0.9.8 0.9.8k-8 [1042kB]
Get:23 http://ftp.fr.debian.org sid/main libwrap0 7.6.q-18 [32.7kB]
Get:24 http://ftp.fr.debian.org sid/main libdb4.7 4.7.25-9 [670kB]
Get:25 http://ftp.fr.debian.org sid/main libpam-modules 1.1.0-4 [346kB]
Get:26 http://ftp.fr.debian.org sid/main libpam-runtime 1.1.0-4 [219kB]
Get:27 http://ftp.fr.debian.org sid/main sensible-utils 0.0.2 [4566B]
Get:28 http://ftp.fr.debian.org sid/main debianutils 3.2.2 [49.9kB]
Get:29 http://ftp.fr.debian.org sid/main passwd 1:4.1.4.2-1 [1037kB]
Get:30 http://ftp.fr.debian.org sid/main adduser 3.112 [157kB]
Get:31 http://ftp.fr.debian.org sid/main dpkg 1.15.5.6 [2251kB]
Get:32 http://ftp.fr.debian.org sid/main install-info 4.13a.dfsg.1-5 [146kB]
Get:33 http://ftp.fr.debian.org sid/main sed 4.2.1-6 [250kB]
Get:34 http://ftp.fr.debian.org sid/main ncurses-bin 5.7+20090803-2 [315kB]
Get:35 http://ftp.fr.debian.org sid/main lsb-base 3.2-23 [20.0kB]
Get:36 http://ftp.fr.debian.org sid/main libncurses5 5.7+20090803-2 [363kB]
[...]
Replacing config file /etc/default/sysstat with new version
insserv: warning: current stop runlevel(s) (0 6) of script `sysstat' overwrites defaults (empty).
Setting up usbutils (0.86-3) ...
Setting up makedev (2.3.1-89) ...
.udevdb or .udev presence implies active udev. Aborting MAKEDEV invocation.
.udevdb or .udev presence implies active udev. Aborting MAKEDEV invocation.
.udevdb or .udev presence implies active udev. Aborting MAKEDEV invocation.
.udevdb or .udev presence implies active udev. Aborting MAKEDEV invocation.
.udevdb or .udev presence implies active udev. Aborting MAKEDEV invocation.
.udevdb or .udev presence implies active udev. Aborting MAKEDEV invocation.
.udevdb or .udev presence implies active udev. Aborting MAKEDEV invocation.
.udevdb or .udev presence implies active udev. Aborting MAKEDEV invocation.
.udevdb or .udev presence implies active udev. Aborting MAKEDEV invocation.
.udevdb or .udev presence implies active udev. Aborting MAKEDEV invocation.
.udevdb or .udev presence implies active udev. Aborting MAKEDEV invocation.
chmod: cannot access `/dev/tty[0-9]*': No such file or directory
.udevdb or .udev presence implies active udev. Aborting MAKEDEV invocation.
.udevdb or .udev presence implies active udev. Aborting MAKEDEV invocation.
.udevdb or .udev presence implies active udev. Aborting MAKEDEV invocation.
Setting up tasksel-data (2.81) ...
Setting up perl-modules (5.10.1-9) ...
Setting up tasksel (2.81) ...
Setting up perl (5.10.1-9) ...
update-alternatives: using /usr/bin/prename to provide /usr/bin/rename (rename) in auto mode.
Setting up libfile-copy-recursive-perl (0.38-1) ...
Setting up update-inetd (4.35) ...
Processing triggers for python-support ...
Processing triggers for initramfs-tools ...
update-initramfs: Generating /boot/initrd.img-2.6.32-trunk-s390x
Using config file '/etc/zipl.conf'
Building bootmap in '/boot'
Building menu 'menu'
Adding #1: IPL section 'debian' (default)
Adding #2: IPL section 'old'
Preparing boot device: dasda (0100).
Done.
Reading package lists... Done
Building dependency tree
Reading state information... Done
Reading extended state information
Initializing package states... Done
Writing extended state information... Done
Reading task descriptions... Done
Current status: 0 updates [-134].
Et on vérifie:
guigui@debgls:~$ cat /etc/issue Debian GNU/Linux squeeze/sid \n \l
Impecc. M'enfin, il m'aura fallu 3 essais pour en arriver là.
Reste un dernier point.
Entre le kernel 2.6.26 de Lenny et le kernel 2.6.32 de Sid, le driver qeth, qui gère les connexions réseaux sur System z, a été découpé en 3 morceaux: qeth, qeth_l2 et qeth_l3. Qeth est la partie commune, qeth_l2 assure la gestion du Layer 2, et qeth_l3 la gestion du .... Layer 3, bravo!
Les sripts d'init sont toujours dans l'ancien modèle, donc après un reboot, les connexions réseaux sont pétées - encore une bonne raison d'avoir une console 3270 pas trop loin.
Pour rétablir les connexions, on va gruiker salement les scripts d'init réseau:
cd /etc/sysconfig/hardware/scripts
et on édite le fichier hwup-ccw-group:
error "no kernel module for ctc devices available!"
fi
elif [ "$name" == qeth ]; then
__modprobe qeth_l3 2> /dev/null || :__
if [ -d $SYSFS/module/qeth ]; then
DRIVER=qeth

