nkbj@image.dk
fdisk
). I suggerimenti che trovate qui sono stati testati usando FreeBSD 2.2.2 ma dovrebbero essere validi anche per le nuove versioni. Non esitate a inviarmi un messaggio e-mail se avete commenti, domande o suggerimenti riguardo questo documento. Mi piacerebbe anche avere contatti con persone che hanno esperienza nell'uso di Linux insieme a NetBSD e OpenBSD.
FreeBSD è un sistema operativo Unix-like libero simile a Linux. La differenza maggiore è che, mentre il kernel di Linux è stato scritto ex-novo, FreeBSD è basato sulle parti gratuite e ridistribuibili di 4.4BSD (Berkeley Software Distribution) conosciuto come 4.4BSD-lite. Questo fatto può condurre certe persone a pensare che FreeBSD sia più vicino ad essere un ``vero'' UNIX® rispetto a Linux. FreeBSD gira solo su piattaforma Intel PC (i386 e superiori); i porting su piattaforma DEC Alpha e Sun Sparc sono attualmente in lavorazione. NetBSD e OpenBSD sono simili a FreeBSD, e ambedue girano su più piattaforme. Le richieste hardware per tutti questi sistemi *BSD sono simili a quelle per Linux.
Lo sviluppo di FreeBSD è gestito in modo diverso rispetto allo sviluppo di Linux. Un gruppo ristretto di sviluppatori serve come arbitrato e centro direzionale per il progetto. I grossi cambiamenti vengono prima discussi sulle mailing list. Il progetto FreeBSD ha due diramazioni di sviluppo (tipo Linux): ``-CURRENT'' e ``-STABLE''. La parte ``-CURRENT'' è quella dove si sviluppano le novità. Lo sviluppo nella parte ``-STABLE'' è ristretta alla correzione dei bug e ad alcuni test accurati di nuove funzionalità.
FreeBSD può essere usato e (ri-)distribuito liberamente come Linux. La maggior parte del sistema è realizzato sotto il copyright BSD; il resto è sotto la GNU GPL o altre license open-source.
Linux e FreeBSD etichettano dischi e partizioni in due schemi differenti. Questa sezione spiega le differenze principali fra i due schemi. Di fatto lo schema di etichettatura di FreeBSD è un adattamento del tradizionale stile di etichettatura BSD adattato a vivere dentro le partizioni di fdisk dei PC. Quindi è molto simile agli altri sistemi Unix BSD-based tipo NetBSD, OpenBSD, Ultrix, Digital Unix, SunOS e Solaris.
FreeBSD necessita di una delle quattro partizioni della tavola delle
partizioni del vostro disco rigido. Questa partizione primaria
è chiamata ``slice'' (fetta, porzione) nella terminologia
FreeBSD. FreeBSD poi usa il programma di etichettatura disklabel
per preparare fino a otto partizioni in questa partizione
primaria. Queste partizioni logiche sono chiamate ``partitions''
(partizioni) nella terminologia FreeBSD. Questo concetto è
simile al modo come Linux (e DOS) gestiscono le partizioni logiche in
una partizione estesa. Non potete installare FreeBSD in una partizione
estesa creata da Linux (o DOS). Notate che il programma fdisk
di
Linux non mostra le partizioni BSD in una slice FreeBSD dal menù
principale, ma può mostrare informazioni sull'etichettatura del
disco BSD se date il comando `b'. L'output è qualcosa di simile
a questo (/dev/hda4
è la slice FreeBSD):
bash# fdisk /dev/hda Command (m for help): p Disk /dev/hda: 64 heads, 63 sectors, 621 cylinders Units = cylinders of 4032 * 512 bytes Device Boot Begin Start End Blocks Id System /dev/hda1 * 1 1 27 54400+ 83 Linux native /dev/hda2 28 28 55 56448 83 Linux native /dev/hda3 56 56 403 701568 83 Linux native /dev/hda4 404 404 621 439488 a5 BSD/386 Command (m for help): b Reading disklabel of /dev/hda4 at sector 1624897. BSD disklabel command (m for help): p 8 partitions: # size offset fstype [fsize bsize cpg] a: 64512 1624896 4.2BSD 0 0 0 # (Cyl. 404 - 419) b: 104832 1689408 swap # (Cyl. 420 - 445) c: 878976 1624896 unused 0 0 # (Cyl. 404 - 621) e: 64512 1794240 4.2BSD 0 0 0 # (Cyl. 446 - 461) f: 645120 1858752 4.2BSD 0 0 0 # (Cyl. 462 - 621) BSD disklabel command (m for help): q bash#
Le lettere `a'...`f' nella prima colonna sono le stesse etichette mostrate sotto nell'esempio di una slice BSD. Ci sono tre partizioni speciali nel linguaggio BSD. La lettera `a' indica la partizione di root, `b' indica al partizione di swap, mentre `c' indica l'intera slice. Consultate la documentazione FreeBSD per ulteriori informazioni sul modo ``standard'' di assegnare queste lettere ai differenti tipi di partizione.
I dischi rigidi sono etichettati nel modo seguente in Linux e FreeBSD:
Linux FreeBSD Primo disco IDE /dev/hda /dev/wd0 Secondo disco IDE /dev/hdb /dev/wd1 Primo disco SCSI /dev/sda /dev/sd0 Secondo disco SCSI /dev/sdb /dev/sd1
Le partitizioni (FreeBSD slice) su un disco IDE sono etichettate nel modo seguente (viene usato /dev/hda
come esempio):
Linux FreeBSD Prima partizione primaria /dev/hda1 /dev/wd0s1 Seconda partizione primaria /dev/hda2 /dev/wd0s2 Terza partizione primaria /dev/hda3 /dev/wd0s3 Quarta partizione primaria /dev/hda4 /dev/wd0s4
Le partizioni nel mio slice FreeBSD sono etichettate nel modo seguente. Questo è il modo di etichettatura predefinito. È possibile cambiare l'etichettatura se eseguite una installazione custom (personalizzata) di FreeBSD (/dev/hda4
è la slice FreeBSD nell'esempio):
Etichetta Linux Etichetta FreeBSD mount point FreeBSD /dev/hda5 /dev/wd0s4a / /dev/hda6 /dev/wd0s4b swap /dev/hda7 /dev/wd0s4e /var /dev/hda8 /dev/wd0s4f /usr
Se lanciate dmesg
in Linux vedrete questo (il kernel linux deve essere compilato con UFS filesystem support per ottenere questo. Vedere la sezione
Installare e preparare Linux):
Partition check: hda: hda1 hda2 hda3 hda4 < hda5 hda6 hda7 hda8 >
Se avete installato nella slice /dev/sd1s3
(/dev/sdb3
in terminologia Linux), e /dev/sdb2
è una partizione estesa Linux contenente due partizioni logiche (/dev/sdb5
e /dev/sdb6
), l'esempio precedente dovrebbe apparire così:
Etichetta Linux Etichetta FreeBSD mount point FreeBSD /dev/sdb7 /dev/sd1s3a / /dev/sdb8 /dev/sd1s3b swap /dev/sdb9 /dev/sd1s3e /var /dev/sdb10 /dev/sd1s3f /usr
Questo sarà mostrato come:
Partition check: sdb: sdb1 sdb2 < sdb5 sdb6 > sdb3 < sdb7 sdb8 sdb9 sdb10 >nell'output di
dmesg
.
Se avete una partizione estesa Linux dopo la vostra slice FreeBSD avete dei problemi, perché la maggior parte dei floppy di installazione del kernel di Linux sono preparati senza il supporto UFS, i quali non riconosceranno le partizioni FreeBSD interne alla slice. Quello che avrebbe dovuto essere visto come (/dev/hda3
è la slice FreeBSD e /dev/hda4
è la partizione Linux estesa)
Partition check: hda: hda1 hda2 hda3 < hda5 hda6 hda7 hda8 > hda4 < hda9 hda10 >è visto come:
Partition check: hda: hda1 hda2 hda3 hda4 < hda5 hda6 >
Questo può darvi una assegnazione sbagliata del disco e causare la perdita di dati. Il mio consiglio è di mettere sempre la vostra slice FreeBSD dopo qualsiasi partizione Linux estesa e non cambiare nessuna partizione logica nella vostra partizione Linux estesa dopo aver installato FreeBSD!
Questa sezione descrive come ho ottenuto che Linux e FreeBSD condividessero una partizione di swap. Ci possono essere altri modi di ottenere lo stesso risultato. Potete installare FreeBSD prima di Linux se volete prestare attenzione all'ordine delle partizioni nella slice FreeBSD.
Il primo passo è quello di installare Linux normalmente. Dovete lasciare spazio per la slice FreeBSD nel vostro disco. Non dovete creare una partizione Linux di swap, ma se ne volete una, mettetela nello spazio che volete allocare per FreeBSD. In questo modo potrete cancellare la partizione di swap Linux in seguito e usare lo spazio per FreeBSD.
Quando avrete installato Linux dovrete compilare un nuovo kernel. Leggete The Linux Kernel HOWTO se questa è una cosa nuova per voi. Dovete includere sia UFS filesystem support (read only) sia BSD disklabel (il supporto per la tavola delle partizioni di FreeBSD):
UFS filesystem support (read only) (CONFIG_UFS_FS) [N/y/m/?] y BSD disklabel (FreeBSD partition tables) support (CONFIG_BSD_DISKLABEL) [N/y/?] (NEW) y
Installate il nuovo kernel e riavviate. Rimuovete qualsiasi riga che include la parola swap dal vostro file /etc/fstab
se avete creato una partizione Linux di swap. Accertatevi di avere un floppy di boot di Linux funzionante con il kernel. Ora siete pronti per installare FreeBSD.
Installate FreeBSD come descritto nella documentazione di FreeBSD. Rimuovete la partizione Linux di swap se ne avete creata una (potete usare il programma fdisk
di FreeBSD). Prestate attenzione all'ordine delle partizioni nello slice FreeBSD. Se usate l'etichettatura predefinita la seconda partizione sarà la partizione di swap. Completate l'installazione di FreeBSD e riavviate in Linux usando il nuovo floppy di boot di Linux.
Lanciate dmesg
quando avete riavviato in Linux. Nell'output dovreste vedere qualcosa del genere:
Partition check: hda: hda1 hda2 hda3 hda4 < hda5 hda6 hda7 hda8 >
Questo significa che /dev/hda4
è il vostro slice FreeBSD, mentre
/dev/hda5
, /dev/hda6
, /dev/hda7
e /dev/hda8
sono le partizioni FreeBSD. Se la vostra partizione di swap è la seconda partizione nello slice, questa sarà /dev/hda6
.
Dovete inserire le linee seguenti nel vostro file /etc/fstab
di Linux per abilitare la partizione di swap:
/dev/hda6 none swap sw 0 0
Mentre FreeBSD può usare qualsiasi tipo di partizione come area di swap, Linux necessita di un tipo di marcatura particolare per la partizione di swap. Questa marcatura si ottiene con mkswap
. FreeBSD rovina questa marcatura quando usa la partizione di swap condivisa, quindi dovete lanciare mkswap
ogni volta che avviate con Linux. Per fare questo automaticamente dovete trovare lo script che lancia swapon
al momento del boot. In Red Hat Linux questo è /etc/rc.d/rc.sysinit
. Inserite la riga seguente in questo file appena prima di swapon -a
:
awk -- '/swap/ && ($1 !~ /#/) { system("mkswap "$1"") }' /etc/fstab
Questo lancerà mkswap
su qualsiasi partizione di swap in /etc/fstab
ogni volta che avviate eccetto se queste sono commentate (aventi ``#'' come primo carattere della riga).
Lanciate free
per controllare le dimensioni della partizione di swap quando avrete riavviato in Linux. Dovreste anche riavviare in FreeBSD per accertarvi che tutto funzioni come ci si aspetta. Se non funziona, avete probabilmente usato una partizione sbagliata come partizione di swap. L'unica soluzione a questo problema è di reinstallare FreeBSD e riprovare ancora.
L'esperienza è una grande maestra. :-)
Potete facilmente avviare FreeBSD con LILO. Non installate il boot selector di FreeBSD
(Booteasy
) se volete usare LILO. Aggiungete le seguenti righe al vostro file /etc/lilo.conf
e lanciate lilo
(assumendo che lo slice FreeBSD sia /dev/hda4
):
other=/dev/hda4 table=/dev/hda label=FreeBSD
Se avete installato FreeBSD sul secondo disco SCSI, usate qualcosa del genere (assumendo che lo slice FreeBSD sia /dev/sdb2
):
other=/dev/sdb2 table=/dev/sdb loader=/boot/chain.b label=FreeBSD
Sfortunatamente il driver UFS nei kernel Linux 2.0.xx non includono il supporto per FreeBSD. Quando provate a montare un filesystem FreeBSD, ottenete solo dei messaggi di errore (il filesystem di fatto viene montato, ma non potete di fatto farci alcunché). Questo problema è stato risolto con i nuovi kernel Linux (versione 2.1.87 e successive.)
C'è un'altra versione del driver UFS per kernel Linux 2.0.xx (xx <= 30)
su
metalab.unc.edu (in passato sunsite.unc.edu). Si chiama U2FS e la versione corrente è u2fs-0.4.3.tar.gz
. Una versione di U2FS (ufs-0.4.4.tar.gz
) per Linux 2.0.31 e successivi (2.0.xx; not 2.1.xx) si può trovare in
questo sito insieme ad ulteriori informazioni riguardo U2FS (e UFS.)
Ora dovete compilare un nuovo kernel con il supporto per U2FS filesystem e BSD disklabels. Vedere la sezione Installare e preparare Linux per maggiori informazioni in proposito. Potete lasciar perdere l'UFS filesystem support nel kernel quando usate U2FS.
Quando avrete installato il nuovo kernel, potrete montare i filesystem UFS (tutte le partizioni nella slice FreeBSD eccetto la partizione di swap) con un comando tipo questo:
mount -t u2fs /dev/hda8 /mnt
Dovrete usare un comando tipo:
mount -t ufs /dev/hda8 /mntse usate un kernel Linux versione 2.1.87 o successivo. Dal kernel Linux versione 2.1.112 dovete aggiungere
-o ufstype=44bsd
ad un comando come questo:
mount -t ufs -o ufstype=44bsd /dev/hda8 /mnt
Il driver UFS (e U2FS) è di sola lettura (read-only). E così; potete leggere da un filesystem UFS ma non potete scriverci sopra. Un driver sperimentale lettura-scrittura (read-write) UFS ha rimpiazzato il driver read-only nel kernel Linux versione 2.1.112 e superiori; scrivere su partizioni FreeBSD è supportato dalla versione 2.1.127.
Per montare un filesystem ext2fs sotto FreeBSD, dovete prima compilare un nuovo kernel con supporto di ext2fs. Leggete the FreeBSD handbook per imparare come fare. Inserite la riga
options "EXT2FS"nel vostro file di configurazione del kernel per il nuovo kernel.
Quando avrete riavviato con il nuovo kernel, potrete montare un filesystem ext2fs dando un comando come:
mount -t ext2fs /dev/wd0s3 /mnt
Notate che non potete montare filesystems ext2fs in partizioni estese da FreeBSD.
Per colpa di un bug in FreeBSD 2.2.8 e precedenti dovrete smontare (unmount) tutti i filesystems ext2fs prima di chiudere FreeBSD se state usando queste versioni.
Se chiudete FreeBSD con un filesystem ext2fs montato, FreeBSD non potrà sincronizzare (sync) i filesystem UFS. Questo risulterà in fsck
quando verrà lanciato al successivo avvio di FreeBSD. Potete aggirare questo bug inserendo la riga:
umount -a -t ext2fsnel file
/etc/rc.shutdown
. Il bug dovrebbe essere stato corretto in FreeBSD-3.x (qulcuno può confermare questo?)
Il pacchetto iBCS
supporta l'esecuzione di binari FreeBSD sotto Linux; ma è vecchio e non più mantenuto. Io non sono riuscito a farlo funzionare. Per favore fatemi sapere se avete avuto migliore fortuna con questo pacchetto.
FreeBSD ha la possibilità di far girare binari Linux, sia nei formati a.out che ELF. Per fare questo dovete seguire i seguenti tre passaggi:
/etc/rc.conf
e cambiare
linux_enable="NO"in
linux_enable="YES"e riavviare. Un altro modo per caricare il supporto binario con Linux è quello di eseguire il comando
/usr/bin/linux
. In
questo modo non dovete riavviare e non avete il supporto binario con Linux sempre caricato (es. salvate memoria).
Ricordate di aggiungere la riga
options COMPAT_LINUXnel file config del kernel FreeBSD se compilate un nuovo kernel FreeBSD.
linux_lib-2.4.tgz
(nuove versioni potrebbero essere disponibili). Lanciate il comando seguente per installare il pacchetto:
pkg_add <path_del_package>/linux_lib-2.4.tgz<path_del_package> è la directory che contiene il pacchetto. Potete anche scaricare il pacchetto dalla rete con:
pkg_add ftp://ftp.freebsd.org/pub/FreeBSD/packages-stable/All/linux_lib-2.4.tgzo rilanciando
/stand/sysinstall
. Entrate in ``Configure'', ``Packages''
e usate i menù. Dovrete eseguire i comandi seguenti se state lanciando binari Linux linkati staticamente:
brandelf -t Linux <nome_del_binario_linux_linkato_staticamente>
Ho eseguito con successo le versioni Linux di Applixware 4.3 e Netscape 3.01 (ambedue in formato ELF) sotto FreeBSD 2.2.2 usando questo metodo (sì, so che esiste una versione nativa di Netscape 4 per FreeBSD). Anche le versioni Linux di acroread e StarOffice 3 e 4 lavorano bene sotto FreeBSD. StarOffice 5 dipende dai threads nativi di Linux e attualmente non funziona sotto FreeBSD. Leggete la documentazione FreeBSD per maggiori informazioni a questo riguardo.
L'ultima versione di questo mini-HOWTO può essere scaricata da questo sito in diversi formati (incluso SGML e PostScript.) Il documento è stato tradotto in giapponese da Mr. Teruyoshi Fujiwara come parte del the JF project.
Gregor Hoffleit mantiene un sito con informazioni relative allo sviluppo di U2FS e UFS.
Annelise Anderson sta lavorando ad una Linux+FreeBSD FAQ, la quale coprirà gli stessi temi di questo mini-HOWTO (e altro). Le FAQ sono intese essere parte del freebsd-doc project.
Potete trovare alcuni articoli sulle differenze fra Linux e FreeBSD qui.
Potete trovare altre informazioni riguardo FreeBSD (e scaricare l'intero sistema) in questo sito. Potete anche comprare il sistema su CDROM da Walnut Creek CDROM (I loro server girano con FreeBSD).
Il Linux Kernel HOWTO (e questo mini-HOWTO) è realizzato come parte del The Linux Documentation Project.
Grazie ai membri del *BSD user group in Danimarca per aver risposto alle domande di un novizio (newbie) di FreeBSD, a Mr. Takeshi Okazaki per avermi fatto conoscere U2FS, e a Mr. David O'Brien per suggerimenti importanti.
Trademarks are owned by their owners.
Although the information given in this document is believed to be correct, the author will accept no liability for the content of this document. Use the tips and examples given herein at your own risk.
Copyright © 1997, 1998, 1999 by Niels Kristian Bech Jensen. This document may be distributed only subject to the terms and conditions set forth in the LDP license http://metalab.unc.edu/LDP/LDP-COPYRIGHT.html.
Ovvero:
I marchi sono proprietà dei loro possessori.
Nonostante le informazioni date in questo documento si pensa siano corrette, l'autore non accetterà responsabilità per il contenuto di questo documento. Usate i suggerimenti e gli esempi qui contenuti a vostro rischio.
Copyright © 1997, 1998, 1999 by Niels Kristian Bech Jensen. Questo documento potrà essere distribuito solo sotto i termini e le condizioni esposte in the LDP license.