Rechercher

lundi 23 août 2010

Update houleux vers Fedora 12 Constantine

L'update de ma Fedora 11 à Fedora 12 Constantine, fait l'objet de mon premier post sur ce blog.
Cela aurait pût commencer mieux, car cette upgrade a mal tourné du fait que mon trop faible espace libre de mon /boot.
Voila donc quelques manipulations qui m'ont étaient très utiles !



Libérer de l'espace dans votre /boot !



Jusque ici, c'est le coup classique, pour y remédier, j'ai suivis la methode 1 "Not enough space in /boot and Free up space" de cet article.

La commande : "df -h /boot" vous permet de rapidement voir le taux de l'espace disque utilisé dans la partition /boot.
L'upgrade nécéssite environ 26Mo.
Si vous avez à faire un peu de place, une solution est de supprimer les versions du kernel anciennements installé mais plus utilisé par votre système.

Vous pouvez connaître les kernels inutiles qui peuvent être supprimé :
curl -O 'http://skvidal.fedorapeople.org/misc/kernel-prune.py'
chmod a+x kernel-prune.py
./kernel-prune.py


Puis les supprimer grâce à yum :

[root@xxx ~]# PKGS=`./kernel-prune.py`
[root@xxx ~]# echo $PKGS
[root@xxx ~]# yum remove $PKGS


Pour laisser propre et libérer encore un peu d'espace , utiliser cette commande (en root) pour voir quel partition contient votre /boot:
[root@xxx ~]# mount | grep "/boot"

Pour moi la réponse est : /dev/sda1 on /boot type ext3 (rw) , ma partition est donc "/dev/sda1"
Nous avons plus que a utiliser la commande "tune2fs" pour libérer des blocks mémoire aloués inutilement dans votre /boot.
[root@xxx ~]# tune2fs -r 0 /dev/sda1

Relancer "df -h /boot", si votre espace libre est supérieure a 26Mo, l'upgrade devrait fonctionner.



J'ai donc relancé "preupgrade", et une fois le téléchargement des paquets terminé, on me propose de rebooter.. , ben allez hein !
En temps normal vous devrez tomber sur Anaconda qui termine la mise à jour en installant les paquets.
Pour ma part, rien n'a était lancé et mon système a démarré comme si de rien n'était, sur mon ancien os.
J'ai donc voulu retenter ma chance, mais apartir de là "preupgrade" plantait, car mon système d'upgrade est bancale.
J'ai donc lancait la version en ligne de commandes, "preupgrade-cli" pour essayer de comprendre ce qui bloque.


[root@xxx ~]# preupgrade-cli "Fedora 12 (Constantine)"
/usr/lib/python2.6/site-packages/yum/__init__.py:203: UserWarning: Use .preconf instead of passing args to _getConfig
warnings.warn('Use .preconf instead of passing args to _getConfig')
Loaded plugins: blacklist, dellsysidplugin2, refresh-packagekit, whiteout
Loaded plugins: dellsysidplugin2, refresh-packagekit
preupgrade-main (mirrorlist)
url: http://mirrors.fedoraproject.org/mirrorlist?repo=fedora-12&arch=$basearch
now: http://mirrors.fedoraproject.org/mirrorlist?repo=fedora-12&arch=i386
preupgrade (mirrorlist)
url: http://mirrors.fedoraproject.org/mirrorlist?path=pub/fedora/linux/releases/12/Fedora/$basearch/os
now: http://mirrors.fedoraproject.org/mirrorlist?path=pub/fedora/linux/releases/12/Fedora/i386/os
preupgrade-google-chrome (baseurl)
url: http://dl.google.com/linux/rpm/stable/i386
now: http://dl.google.com/linux/rpm/stable/i386
[...]
url: https://mirrors.fedoraproject.org/metalink?repo=updates-released-f12&arch=i386
now: https://mirrors.fedoraproject.org/metalink?repo=updates-released-f12&arch=i386
Traceback (most recent call last):
File "/usr/share/preupgrade/preupgrade-cli.py", line 312, in
pu.main(myrelease)
File "/usr/share/preupgrade/preupgrade-cli.py", line 175, in main
self.setup(myrelease)
File "/usr/lib/python2.6/site-packages/preupgrade/__init__.py", line 130, in setup
self.complete_repo_setup()
File "/usr/lib/python2.6/site-packages/preupgrade/__init__.py", line 328, in complete_repo_setup
repo._grabfunc.opts.user_agent = __user_agent__
AttributeError: 'NoneType' object has no attribute 'opts'


Oops,celà ne fonctionne pas non plus. Après quelques recherches je trouve une super commande curative,
[root@xxx ~]# rm -rf /var/cache/yum/preupgrade*

Tadam .. ! Celle-ci vide le repertoire a moitié installer par preupgrade. Je retente ma chance.
[root@xxx ~]# preupgrade-cli "Fedora 12 (Constantine)"

Et ça fonctionne ! Après le téléchargement de quelques 1400 paquets, mon preupgrade a tout l'air d'avoir fonctionné. J'ai rebooté, Anaconda a prit le relais et commence l'installation. Voyant le temps que ça va prendre, j'ai décidé de faire un petit tour, et lors de mon retour .. bizarre, mon pc était éteind. Je l'ai rallumé pour voir dans quel état était il. Et là c'est le drame.., un kernel panic !!


RAMDISK: incomplete write (1337 != 5348)
write error
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)



J'assistai donc à mon premier kernel panic, c'est toujours plus sympas qu'un blue screen Windozien (toutes les leds de mon laptop clignotaient d=P ), surtout quand on arrive a s'en sortir. Alors j'ai sorti mon Live CD Fedora 12, mais cela doit fonctionner avec bien d'autres. Voici la marche à suivre.



Installation d'un kernel via un Live CD




Allez chercher sur internet le kernel actuel et gardait le sur votre disque dur, par exemple :
Kernel de la release:

http://download.fedora.redhat.com/pub/fedora/linux/releases/_version_/Fedora/_votre_build_/os/Packages/_kernel_xx_

Dernier kernel:

http://download.fedora.redhat.com/pub/fedora/linux/updates/_version_/Fedora/_votre_build_/os/Packages/_kernel_xx_


Il faut ensuite monter le dossier /boot de votre os dans le dossier /boot du live cd. Pour ça, il faut les reconnaîtres, pour ma part c'est :
/media/_boot : celui du live cd et
/media/Fedora-11-i686-Live : celui du mon os.
[root@xxx ~]#mount --move /media/_boot /media/Fedora-11-i686-Live/boot

On change ensuite les options de montage :
[root@xxx ~]#mount -o remount,suid,exec,dev /media/Fedora-11-i686-Live
[root@xxx ~]#mount -o remount,suid,exec,dev /media/Fedora-11-i686-Live/boot


On change ensuite le root directory de ce point de montage :
[root@xxx ~]#chroot /media/Fedora-11-i686-Live

Enfin on installe le kernel précédement téléchargé ( --force peut être nécéssaire si il nous signal qu' il est déjà installé ):
[root@xxx ~]#rpm -ivh kernel-xx.fc12.i686rpm –force

Redémarrer, et vous pouvez booter normalement !



Oouf ! Quelques mises à jour de quelques package et mon upgrade est fini !