-= 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 .