Upgrade FreeBSD versione 8.0 a 8.1: piccola guida ed un'opinione
Dico subito che l'upgrade è fallito. Infatti, dopo qualche periodo il sistema ha cominciato a denotare blocchi dovuti probabilmente a dipendenze non risolte. Ho tentato in vari modi, compreso un upgrade dei pacchetti ma il sistema a questo punto ha cominciato ad incartarsi sempre più su fallite dipendenze. Sempre di motore FreeBSD si tratta...
Tuttavia, per correttezza e per qualcuno più bravo di me riporto i passi effettuati ed i problemi incontrati.
I sistemi *BSD hanno i loro fan, come per tutti i sistemi operativi. Tra questi, i più conosciuti sono quelli che usano FreeBSD. Uno dei cavalli di battaglia che portano avanti per dimostrare la superiorità di FreeBSD, anche rispetto alle varie distro Linux, è la facilità con cui avviene l'upgrade al momento del rilascio di una versione del sistema operativo. Per testare la bontà della faccenda, trovandomi un FreeBSD 8.0 sul mio desktop, ho pensato bene di upgradare alla versione 8.1 recentemente uscita. La base di partenza per farlo è leggersi attentamente il tutorial ufficiale nella sezione "major and minor upgrades". Una scorciatoia potrebbe essere quest'altra indicazione specifica sull'upgrade alla versione 8.1 ma è meglio seguire le fonti ufficiali.
Basandomi su questa, sintetizzo cosa ho fatto e cosa è successo. Premetto che avevo installato un kernel generico, quindi ho saltato ovviamente le istruzioni specifiche per kernel customizzati.
Dunque, per prima cosa, aprire un bel terminale da root e dare: portupgrade -af
Lasciamo lavorare il tutto, seguendo il consiglio di dire "yes" ad eventuali domande poste durante il processo.
Se tutto va bene, diamo il comando successivo: freebsd-update -r 8.1-RELEASE upgrade. Attenzione: accertatevi di avere come versione installata proprio la precedente 8.0-RELEASE, altrimenti non vi aggiornerà alla 8.1-RELEASE ma a quella possibile rispetto alla vostra installata.
Durante questa operazione, qui viene il bello, vi saranno poste delle domande, come dice anche la guida. Che fare? Bella domanda. Se non sapete esattamente cosa fare è meglio dare sempre "yes" alla domanda e proseguire, sperando bene....
Alla fine ed il tempo ovviamente dipende da cosa deve aggiornare e dalla velocità di connessione, vi dovreste ritrovare al prompt del terminale senza avvisi di errore e potete dare il comando freebsd-update install. Questo installerà le patches. A questo punto, FreeBSD assomiglia molto a Windows (oddio solo per questo e per questa volta) perchè ha bisogno di un reboot per continuare l'installazione. Il reboot avverrà dando il comando solito shutdown -r now.
E' qui, al momento del reboot, che dovrete incrociare le dita e non solo in senso metaforico. Perchè potreste trovare una brutta sorpresa e non così rara come uno spera, date le segnalazioni trovate in giro per la rete, proprio perchè, per sfiga o per la configurazione del mio desktop, sono stato oggetto di uno di questi problemi. Quale? Semplice, al reboot il sistema andrà in tilt e vi dirà che non riesce a montare la partizione root e vi manderà direttamente ad un prompt sullo schermo con scritto mountroot>
Che fare? Apro qui lunga parentesi. Se non vi succede nulla, saltate pure beati questo pezzo e proseguite.
Sopra al prompt una serie di scritte in inglese tentano di aiutarvi. Che cosa è accaduto, in verità? Ve lo spiego in soldoni, nel caso vi dovesse succedere. Durante l'aggiornamento e non chiedetemi il perchè (1), FreeBSD ha cambiato l'ordine delle partizioni sia di quelle del suo sistema sia quelle di altri sistemi che avete installato sull'HD! Al prompt che appare potete inserire un punto interrogativo (?) e vi usciranno elencate le partizioni che trova dopo l'aggiornamento. Naturalmente suppongo che già siete avvezzi a interpretare la modalità di FreeBSD per elencare le partizioni, diversa da quella di Linux. In teoria, ad0s1a dovrebbe essere la canonica partizione in cui si trova root di FreeBSD. In pratica, se avete casi simili al mio con due HD zeppi di partizioni montate, potreste impazzire a capire quale diavolo di partizione è adesso per lui quella buona. Vi do una dritta che spero sia una regola: semplicemente vi dovrebbe aver aggiunto 2 numeri alla partizione che avevate. In sostanza se prima root era su ad0s1a adesso dovrebbe essere su ad2s1a, se era su ad1s1a (su un secondo HD) dovrebbe essere su ad3s1a. Per accertarsene non c'è che un modo. Tentare di montarla, seguendo le istruzioni visualizzate sopra al prompt mountroot>
Il comando sarà, seguendo l'esempio: ufs:/dev/ad2s1a (oppure ufs:/dev/ad3s1a) e vedrete, se c'avete azzeccato, che ripartirà il boot. Però i problemi non sono finiti qui. Perchè il boot andrà avanti fino a quando non troverà le altre directory del sistema (secondo l'uso canonico sono /root /tmp /var /usr ed eventualmente /home). Anche queste sono cambiate. Tranquilli, però. Dovrebbero cambiare solo le lettere Per cui se ad2s1a è la /, allora ad2s1b dovrebbe essere la swap, ad2s1c la /tmp e così via. Non cè niente da fare: le dovete montare pazientemente una per una al prompt che vi esce (e dopo aver dato su per divenire root) con il solito comando mount -t ufs /dev/ad2s1c /tmp eccetera eccetera, secondo la vostra necessità. Fatto questo, dovrete rimontare la / con mount -o rw -t /dev/ad2s1a /, cioè dovrete montare la directory radice in modalità scrittura. Questo perchè, a questo punto, dovrete accedere al file /etc/fstab e modificarlo secondo la nuova numerazione delle partizioni. Già che ci siete, date un'occhiata anche a le altre in fstab e seguite lo stesso criterio (se avete Windows su ad0s2 sarà adesso in ad2s2 e via dicendo). Ora date un reboot e sperate.
Chiusa parentesi in caso di problemi con il mountroot. Se, dato il reboot, accedete al tutto come era prima, significa che l'upgrade sta riuscendo alla grande. Riaprite un terminale e sempre da root proseguite dando ancora: freebsd-update install
Qui l'upgrade del sistema è terminato ma dovrete aggiornare la parte riguardante il software terze parti. Darete nell'ordine i seguenti comandi:
# portupgrade -f ruby
# rm /var/db/pkg/pkgdb.db
# portupgrade -f ruby18-bdb
# rm /var/db/pkg/pkgdb.db /usr/ports/INDEX-*.db
# portupgrade -af
Alla fine ancora (!) un comando freebsd-update install.
Finish! Per corretezza è meglio aggiornare i ports e darete anche il comando portsnap fetch update
Ricordatevi che FreeBSD ha aggiornato il sistema alla nuova versione ma non le singole applicazioni. Detto in pratica, se avevate OpenOffice 3.1 quello è restato, dovrete aggiornarlo a parte e così via per gli applicativi che ritenete opportuno aggiornare.
Giudizio? Diciamo che senza quel grave problema al reboot l'upgrade non presenta grosse difficoltà (almeno per chi è avvezzo alla riga di comando) e, con la dovuta velocità di connessione, è anche piuttosto veloce, anche perchè non aggiorna gli applicativi ma solo il sistema. Quindi, questa cosa mi sembra tagliare la testa al toro per qualsiasi paragone con distro Linux che fanno generalmente l'upgrade di tutto quello che trovano installato. Poi, personalmente, apprezzo sempre di più in questi casi le distro cosidette rolling-release di Linux come ArchLinux e Gentoo.
In seguito all'upgrade, ho avuto un problema ad accedere al kdm (gestore degli accessi) di Kde. Quindi, niente server grafico (partivo comunque con il comando startx da login utente che necessita di un file di testo .xinitrc nella propria directory). Credo perchè avevo problemi di conflitto tra due kdmrc (file di configurazione di kdm): uno nella cartella /usr/local/share/config/kdm/ e l'altro in /usr/local/kde4/share/config/kdm (quello richiesto). Quest'ultimo puntava ad un tema (greeter) che non gli piaceva. Ho semplicemente dato un "false" all'uso del tema nalla linea apposita (trovata cercando con un editor di testo la parola "themes") e decommentato la riga con la directory che aveva. Sorpresa: fatto il reboot è riapparso il kdm. Non solo ma il file kdmrc ha autogenerato il path stavolta giusto al tema (oxygen) adatto!
(1) Che il problema c'è lo si vede da queste note trovate nel tutorial ufficiale di FreeBSD: The disklabel editor is entered with the nominated disk's filesystem devices listed. Prior to commencing the upgrade, the administrator should make a note of the device names and corresponding mountpoints. These mountpoints should be entered here. Do notset the ``newfs flag'' for any filesystems, as this will cause data loss.