1. =[ Mise a jour freebsd 4.7 vers -current ]=-

-= Mettre a jour les sources =-

Premierement il faut mettre vos sources a jour . Editez votre fichier “src.supfile” et changez le tag CVS . Vous devriez avoir quelquechose comme ca :

*default release=cvs tag=.

Apres faites comme d habitude : cvsup /path/to/src.supfile

J'utilise src-all dans mon 'src.supfile' , si ce n' est pas le cas chez vous faites bien attention de ne pas garder de veilles sources.

Vous avez a cet instant les sources freebsd-current .

-= Compiler les source de freebsd-current =-

Faites comme d'habitude :

Effacez le contenu du repertoire /usr/obj . (rm -fr /usr/obj/*)

Puis tapez votre : make buildworld

Dans le fichier UPDATING (/usr/src/UPDATING) il est conseillé de ne pas utiliser l'option “-j” de make lors d un changement majeur de version , je n ai lu ceci qu apres avoir compilé mes sources et je n'ai pas eu de problemes . (j ai peut etre eu de la chance aussi !)

-= Compiler un Kernel =-

Les choses serieuses commencent :

Le kernel “-current” change beaucoup des kernels de la branche 4_*, il vous faut adapter votre configuration au nouveau format .

J'ai pris comme base le fichier GENERIC , viré les fonctionnalitées dont je ne me sers pas et recuperé celle qui m interressaient dans le fichier OLDCARD(*) .

Comme vous l'avez peut etre remarqué il n y a plus de ligne de ce type (avec les irq,drq,flag…) : device sbc0 at isa? port 0x220 irq 5 drq 1 flags 0x15

Elles ont étés remplacées par un fichier “.hints” qui contient tous les parametr es des periferiques (name,irq,drq,flag,…).

Copiez le fichier GENERIC.hints (ou le votre) vers /boot/device.hint . (Tres iportant sinon vous ne pourrez pas faire d'installkernel/installworld)

Si vous avez un péripherique ne se trouvant pas dans le fichier GENERIC (par exemple une carte son ISA), il vous faudra rajouter les irq… dans le fichier hints .

Exemple :


'4.7' format :

device sbc0 at isa? port 0x220 irq 5 drq 1 flags 0x15

'-current' format :

hints.sbc.0.at=“isa” hints.sbc.0.irq=“5” hints.sbc.0.drq=“1” hints.sbc.0.port=“0x220” hints.sbc.0.flags=“0x15”

Vous pouvez maintenant compiler votre kernel (avec la 'new way' cf.handbook)

Tapez :

cd /usr/src/; make buildkernel KERNCONF='your_config_name'

Hop votre nouveau kernel est pret a etre installé !

-= Installer le kernel et le nouveau bootloader =-

Vous pouvez maintenant installer le nouveau kernel , vous aurez besoin de recompiler le boot loader ou vous redemarerez avec votre ancien kernel .

Tapez : cd /usr/src ; make installkernel KERNCONF='your_config_name' cd /usr/src/sys/boot ; make ; make install ;

Verifiez qu'il n y ait pas de veilles etrées dans votre '/etc/fstab' toutes les etrées doivent correspondre a ce format :

/dev/[device_name][controller_num][slice][partition] example : /dev/da0s1f

les entrées de ce type ne sont plus acceptées : /dev/da0f

Vous devez redemarrer en mode 'single user' maintenant.

-= Installer le “mode” et le mergemaster =-

Hop ! Vous devriez voir votre nouveau kernel booter ! Les messages d erreurs peu sympathiques qui s affichent sont dus au fait que vos binaires actuels font des appels “syscalls” qui n existent plus .

Il ne reste plus qu' executer l'installworld classique :

cd /usr/src/ ; make installworld ;

Puis lancez le mergemaster , il sera un peu plus long que lors d une mise a jour simple, faites bien attention a installer tous les nouveaux scripts de demarrage (sous peine de mauvaise surprises)

Il ne reste plus qu'a redemarrer pour tourner en FreeBSD-current !!

-= Hey !! Ca ne marche pas =-

J'ai sauté quelques étapes, aussi vous devriez lire avec attention le fichier UPDATING (dans /usr/src) . Je ne fais pas le buildkernel/buildworld en mode 'single-user', cela peut affecter la compilation a cause de variables d environements (vous pouvez essayer de faire un env -i) .

Vous pouvez me contactez par mail a cette adresse : ofredj@fr.cw.net .

(*) : OLDCARD est le remplacent du fichier LINT .

freebsd/upgrade_current.txt · Last modified: 2010/01/12 13:29 (external edit)