Upgrade von Fedora 16 auf Fedora 17

Das Upgrade auf Fedora 17 läuft nicht mehr so reibungslos, wie bei den früheren Versionen. Das Problem ist die Umstellung des Dateisystems. Viele Verzeichnisse, wie z.B. /sbin werden unter Fedora 17 nach /usr/sbin verschoben und /sbin wird zum symbolischen Link.

Fedora 17 lässt sich ohne Neuinstallation von F 16 aufdatieren (Zusammenfassung und Übersetzung von How to use PreUpgrade und Fedora-Docs:Upgrading Fedora using yum)

Erster Schritt: preupgrade

yum -y update
yum install preupgrade
preupgrade

Evtl. meldet preupgrade, dass zu wenig Speicherplatz auf der Festplatte vorhanden sei. Es muss dann Platz gemacht werden. Nach Beendigung von preupgrade muss das System neu gestartet werden. Das System startet wie gewohnt, zeigt auch Fedora 17 an, doch sind die Pakete (fast) alle noch aus F 16. Ein 'yum update' schlägt fehl. Grund ist die geänderte Dateisystem-Struktur: es liegt noch die alte vor.

Zweiter Schritt: update mit yum

Gelingt das Upgrade mittel preupgrade nicht, muss etwas Hand angelegt werden.

Das Programm dracut hilft hier weiter. Es kann eine bootbare initramfs erzeugen, die an die Anforderungen von Fedora 17 angepasst ist. (Es muss mindesten dracut von F 15 installiert sein (rpm -qi dracut), ansonsten: yum update dracut).

initramfs für den aktuellen kernel aufdatieren und dracut veranlassen für das Konvertieren des Dateisystems ein entsprechendes Modul einzubinden:

dracut --force --add convertfs

Liegt /usr nicht unter /, sondern bspw. auf einer eigenen Partition, dann hilft

dracut -H --force --add convertfs

Dann müssen im Bootloader die Kernel-Parameter geändert werden. Dazu anders als in Fedoradocs empfohlen, die Datei /etc/default/grub ändern: 'rhgb ro' entfernen und 'rw rd.info rd.convertfs enforcing=0' (ohne '') zufügen in der Linie, die mit GRUB_CMDLINE_LINUX="… beginnt. Mit gedit oder vi

cp /etc/default/grub /etc/default/grub.bak
vi /etc/default/grub

Dann muss noch grub2 selber aufdatiert werden,  nachdem ein Backup gemacht wurde:

cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.bak
grub2-mkconfig -o /boot/grub2/grub.cfg
reboot

Der darauf zu folgende Neustart kann einfach mit dem Befehl reboot ausgelöst werden. Da das Update nach der preupgrade-Prozedur geschieht, braucht es nicht mehr alle einzelnen Update-Pakete herunter zu laden.
Aber erst grub wieder in Ordnung bringen:

cp /etc/default/grub.bak /etc/default/grub
grub2-mkconfig -o /boot/grub2/grub.cfg

Dann:

yum --releasever=17 update rpm
rm -f /var/lib/rpm/__*
rpm --rebuilddb
yum -y --nogpgcheck --releasever=17 --disableplugin=presto --skip-broken distro-sync
fixfiles onboot

'preupgrade' datiert grub2 nicht auf

Folgender Fehler kann auftreten, das System startet trotzdem. Der Fehler ist auf Bugzilla rapportiert:

-----------------
error: file not found.
error: file not found.
error: file not found.
Loading Linux 3.3.7-1.fc17.x86_64 ...

Press any key to continue...

Der Bootloader auf der Harddisk ist noch von Fedora 16. Um ihn aufzudatieren gibt man ein (vorausgesetz, der Bootloader ist auf /dev/sda):

grub2-install /dev/sda

Nach dem Neustart liegt Fedora 17 vor, alle vorhandenen Pakete wurden, wenn möglich, aufdatiert.