fdisk
) van de harddisk
voordat je dit document leest. De tips hierin zijn getest met FreeBSD
2.2.2, maar ze zouden ook voor nieuwe versies moeten gelden. Aarzel niet me te mailen als je opmerkingen, vragen of suggesties hebt over
dit document. Ik zou ook graag iets willen horen van mensen die ervaring
hebben met het gebruiken van Linux en NetBSD of OpenBSD.
FreeBSD is een vrij verkrijgbaar op Unix gelijkend besturingssysteem dat veel weg heeft van Linux. Het belangrijkste verschil is dat, terwijl de Linux kernel helemaal vanaf het begin is geschreven, FreeBSD is gebaseerd op de vrij verspreidbare delen van 4.4BSD (Berkeley Software Distribution) bekend als 4.4BSD-lite. Dit feit kan er toe leiden dat sommige mensen suggereren dat FreeBSD dichter bij de ``echte'' UNIX® staat dan Linux. FreeBSD draait alleen op het Intel PC platform (i386 en hoger); aan ports naar de DEC Alpha en Sun Sparc platformen wordt op het moment gewerkt. NetBSD en OpenBSD zijn gelijk aan FreeBSD, en beide draaien op diverse platformen. Hardware vereisten voor al deze *BSD systemen zijn gelijk aan die voor Linux.
De ontwikkeling van FreeBSD wordt op een andere manier beheerd dan de Linux ontwikkeling. Een vaste kern ontwikkelaars fungeert als scheidsrechter en leidt het project. Grote wijzigingen worden van te voren besproken via mailing lists. Het FreeBSD project heeft twee ontwikkelings takken (net als bij Linux): ``-CURRENT'' en ``-STABLE''. De ``-CURRENT'' ontwikkelingstak is waar de ontwikkeling van nieuwe mogelijkheden plaatsvindt. Ontwikkeling in de ``-STABLE'' tak is beperkt tot bug fixes en enkele grondig geteste nieuwe mogelijkheden.
FreeBSD kan net als Linux vrij worden ge(re-)distribueerd. De meeste onderdelen van het systeem zijn uitgegeven onder het BSD copyright; de rest onder het GNU GPL of andere open-source licenties.
Linux en FreeBSD labelen harddisks en partities volgens twee verschillende schema's. Deze sectie legt de belangrijkste verschillen tussen de twee schema's uit. In feite is het FreeBSD labelingsschema een overblijfsel van de traditionele BSD stijl van labelen in leven gehouden binnen de de PC's fdisk partities. Dus het is erg vergelijkbaar met andere op BSD-gebaseerde Unix systemen zoals NetBSD, OpenBSD, Ultrix, Digital Unix, SunOS, en Solaris.
FreeBSD heeft één van de vier ingangen in de partitietabel
van de harddisk van je PC nodig. Deze primaire partitie wordt een
``slice'' genoemd in FreeBSD's terminologie. Het maakt vervolgens
gebruik van het disklabel
programma om tot acht partities in deze
primaire partitie aan te maken. Deze logische partities worden in FreeBSD's
terminologie ``partities'' genoemd. Dit principe is vergelijkbaar
met de manier waarop Linux (en DOS) met logische partities in een extended
partitie omgaan. Je kunt FreeBSD niet in een extended partitie installeren
die door Linux (of DOS) is aangemaakt. Merk op dat het Linux fdisk
programma de BSD partities in een FreeBSD slice vanaf het hoofdmenu niet
laat zien, het kan de BSD disklabel informatie wel tonen als je het commando
`b' geeft. De uitvoer ziet er ongeveer als volgt uit
(/dev/hda4
is de FreeBSD slice):
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#
De letters `a'...`f' in de eerste kolom zijn dezelfde labels als die hieronder in het voorbeeld voor een FreeBSD slice worden getoond. Er zijn in BSD's terminologie drie speciale partities. De letter `a' duidt de root partitie aan, `b' duidt de swap partitie aan, terwijl `c' de volledige slice aanduidt. Zie de FreeBSD documentatie voor meer informatie over de ``standaard'' wijze waarop deze letters aan de verschillende partitietypes worden toegewezen.
De harddisks zijn op de volgende wijze in Linux en FreeBSD gelabeld:
Linux FreeBSD Eerste IDE drive /dev/hda /dev/wd0 Tweede IDE drive /dev/hdb /dev/wd1 Eerste SCSI drive /dev/sda /dev/sd0 Tweede SCSI drive /dev/sdb /dev/sd1
De partities (FreeBSD slices) op een IDE drive worden op de volgende manier
gelabeld, (/dev/hda
is als een voorbeeld gebruikt):
Linux FreeBSD Eerste primaire partitie /dev/hda1 /dev/wd0s1 Tweede primaire partitie /dev/hda2 /dev/wd0s2 Derde primary partitie /dev/hda3 /dev/wd0s3 Vierde primaire partitie /dev/hda4 /dev/wd0s4
De partities in mijn FreeBSD slice zijn op de volgende manier gelabeld.
Het zijn de labels die je standaard krijgt. Het is mogelijk de labels te
wijzigen als je kiest voor een aangepaste installatie van FreeBSD
(/dev/hda4
is de FreeBSD slice in het voorbeeld):
Linux label FreeBSD label FreeBSD mount point /dev/hda5 /dev/wd0s4a / /dev/hda6 /dev/wd0s4b swap /dev/hda7 /dev/wd0s4e /var /dev/hda8 /dev/wd0s4f /usr
Als je dmesg
opstart onder Linux, zul je dit te zien krijgen als
(De linux kernel moet zijn aangemaakt met ondersteuning voor het UFS
bestandssysteem wil dit werken. Zie sectie
Installeren en voorbereiden van Linux):
Partition check: hda: hda1 hda2 hda3 hda4 < hda5 hda6 hda7 hda8 >
Als je FreeBSD in de /dev/sd1s3
slice hebt geïnstalleerd
(/dev/sdb3
in Linux termen ), en /dev/sdb2
is een Linux
extended partitie met twee logische partities (/dev/sdb5
en
/dev/sdb6
), dan zal het voorgaande voorbeeld er ongeveer zo uitzien:
Linux label FreeBSD label FreeBSD mount point /dev/sdb7 /dev/sd1s3a / /dev/sdb8 /dev/sd1s3b swap /dev/sdb9 /dev/sd1s3e /var /dev/sdb10 /dev/sd1s3f /usr
Dit zal worden getoond als
Partition check: sdb: sdb1 sdb2 < sdb5 sdb6 > sdb3 < sdb7 sdb8 sdb9 sdb10 >in de uitvoer van
dmesg
.
Als je een Linux extended partitie na je FreeBSD slice hebt, haal je
je moeilijkheden op de hals, omdat de meeste Linux kernel installatie
diskettes zonder UFS ondersteuning zijn aangemaakt, ze zullen de FreeBSD
partities binnenin de slice niet herkennen. Wat je zou moeten zien als de
FreeBSD slice (/dev/hda3
en /dev/hda4
als de Linux
extended partitie)
Partition check: hda: hda1 hda2 hda3 < hda5 hda6 hda7 hda8 > hda4 < hda9 hda10 >wordt gezien als:
Partition check: hda: hda1 hda2 hda3 hda4 < hda5 hda6 >
Dit kan de verkeerde device aanwijzing opleveren en verlies van gegevens veroorzaken. Mijn advies is om je FreeBSD slice altijd achter een Linux extended te plaatsen, en geen wijzigingen meer aan te brengen in je Linux extended partities nadat je FreeBSD hebt geïnstalleerd!
Deze sectie beschrijft hoe ik Linux en FreeBSD zover kreeg om een swap partitie te delen. Het kan zijn dat er andere manieren zijn om hetzelfde resultaat te verkrijgen. Je kunt FreeBSD vóór Linux installeren als je dat wilt, let alleen op de volgorde van de partities in de FreeBSD slice.
De eerste stap is om Linux net als anders te installeren. Je moet ruimte op je harddisk openlaten voor de FreeBSD slice. Je hoeft geen Linux swap partitie aan te maken, maar als je er een wilt, plaats deze dan in de ruimte die je wilt inruimen voor FreeBSD. Op die manier kun je de Linux swap partitie later verwijderen en de ruimte voor FreeBSD gebruiken.
Als je Linux hebt geïnstalleerd dan moet je een nieuwe kernel aanmaken. Lees de Linux Kernel HOWTO als dit nieuw voor je is. Je moet zowel de ondersteuning voor het UFS bestandssysteem (alleen lezen) als ondersteuning voor BSD disklabel (FreeBSD partitie tabellen) insluiten:
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
Installeer de nieuwe kernel en reboot.
Verwijder iedere regel uit je /etc/fstab
waarin het woord
swap voorkomt als je een Linux swap partitie hebt aangemaakt.
Zorg ervoor dat je een werkende Linux opstartdiskette hebt met de
nieuwe kernel. Nu ben je er klaar voor om FreeBSD te installeren.
Installeer FreeBSD zoals beschreven staat in de FreeBSD documentatie.
Verwijder de Linux swap partitie als je er één hebt
aangemaakt (je kunt hiervoor het programma fdisk
van FreeBSD
gebruiken). Let op de volgorde van de partities in de FreeBSD slice. Als je
de standaard labeling gebruikt dan zal de tweede partitie de swap partitie
zijn. Maak de installatie van FreeBSD af en start Linux weer op
met gebruik van de nieuwe Linux opstartdiskette.
Start dmesg
op als je Linux hebt geboot. In de uitvoer zal je iets
dergelijks als het volgende te zien moeten krijgen:
Partition check: hda: hda1 hda2 hda3 hda4 < hda5 hda6 hda7 hda8 >
Dit betekent dat /dev/hda4
je FreeBSD slice is, terwijl
/dev/hda5
, /dev/hda6
, /dev/hda7
en
/dev/hda8
de FreeBSD partities zijn. Als je swap partitie
de tweede partitie is in de slice, dan zal dit /dev/hda6
zijn.
Je moet de volgende regel in Linux /etc/fstab
bestand zetten
om de swap partitie te activeren:
/dev/hda6 none swap sw 0 0
Terwijl FreeBSD elk type partitie als swap space kan gebruiken, heeft Linux
een speciaal teken in de swap partitie nodig. Dit teken wordt aangemaakt
door mkswap
. FreeBSD vernielt dit teken zodra het gebruik maakt van de
gedeelde swap partitie, dus je moet iedere keer dat je Linux boot
mkswap
uitvoeren. Om dit automatisch te laten uitvoeren, zul je
uit moeten zoeken waar het script zich bevindt dat tijdens het booten
swapon
uitvoert. In Red Hat Linux is dit /etc/rc.d/rc.sysinit
.
Zet de volgende regel in dat bestand
net voor swapon -a
:
awk -- '/swap/ && ($1 !~ /#/) { system("mkswap "$1"") }' /etc/fstab
Hiermee zal iedere keer als je opnieuw opstart mkswap
voor iedere swap
partitie in /etc/fstab
worden uitgevoerd, behalve als de regels
als commentaar in het bestand staan geplaatst (``#'' staat als eerste
teken in de regel).
Start free
op om de grootte van de swap space te controleren als
je Linux opnieuw hebt opgestart. Je zal ook FreeBSD opnieuw op moeten starten
om er zeker van te zijn dat alles werkt zoals je mag verwachten.
Als het niet zo is, dan heb je waarschijnlijk de verkeerde partitie als
swap partitie aangegeven. De enige oplossing voor dat probleem is om FreeBSD
opnieuw te installeren en het nog eens te proberen.
Ervaring is een goede leermeester :-)
Je kunt FreeBSD gemakkelijk met LILO booten.
Installeer de FreeBSD's boot selector (Booteasy
) niet
als je LILO wilt gebruiken. Voeg de volgende regels toe aan het
bestand /etc/lilo.conf
en start lilo
op. (ervan uitgaande dat
de FreeBSD slice /dev/hda4
) is:
other=/dev/hda4
table=/dev/hda
label=FreeBSD
Als je FreeBSD op de tweede drive hebt geïnstalleerd, gebruik dan iets
als (als de FreeBSD slice /dev/sdb2
) is:
other=/dev/sdb2
table=/dev/sdb
loader=/boot/chain.b
label=FreeBSD
Helaas bevat de UFS driver in de Linux 2.0.xx kernels geen ondersteuning voor FreeBSD. Als je een FreeBSD bestandssysteem probeert te mounten, krijg je slechts wat foutmeldingen. (Het bestandssysteem kan wel worden gemount, maar je kunt er niets mee doen). Dit probleem is opgelost in de nieuwere Linux kernels (versie 2.1.87 en hoger).
Er is nog een andere versie van de UFS driver voor Linux 2.0.xx kernels
(xx <= 30) te verkrijgen bij
metalab.unc.edu ( voormalige sunsite.unc.edu). Het
wordt U2FS genoemd en de huidige versie is u2fs-0.4.3.tar.gz
.
Een versie van U2FS (ufs-0.4.4.tar.gz
) voor Linux 2.0.31 en hoger
(2.0.xx; niet 2.1.xx) is te vinden bij
deze site samen met verdere informatie over U2FS (en UFS).
Nu moet je een nieuwe kernel aanmaken met ondersteuning voor het U2FS bestandssysteem en BSD disklabels. Zie sectie Installeren en voorbereiden van Linux voor meer informatie hierover. Je kun de ondersteuning voor het bestandssysteem UFS uit de kernel weglaten als je U2FS gebruikt.
Als je de nieuwe kernel hebt geïnstalleerd, kun je je UFS bestands systemen mounten (alle partities in de FreeBSD slice behalve de swap partitie) met een commando als:
mount -t u2fs /dev/hda8 /mnt
Je zult een commando als het volgende moeten gebruiken
mount -t ufs /dev/hda8 /mntals je een Linux kernel versie 2.1.87 of hoger gebruikt. Vanaf Linux-kernel versie 2.1.112 moet je als volgt
-o ufstype=44bds
toevoegen aan
het commando:
mount -t ufs -o ufstype=44bsd /dev/hda8 /mnt
De UFS (en U2FS) driver is read-only. Dat wil zeggen; je kunt de UFS bestandssystemen wel lezen maar je kunt er niet naar toe schrijven. Een experimentele read-write UFS driver heeft de read-only driver in Linux kernels version 2.1.112 en hoger vervangen; het schrijven naar een FreeBSD partitie wordt vanaf versies vanaf 2.1.127 ondersteund.
Om ext2fs bestandssystemen onder FreeBSD te kunnen mounten, moet je als eerste een nieuwe kernel aanmaken met ondersteuning voor ext2fs. Lees het FreeBSD handboek om te leren hoe je dat moet doen. Zet de volgende regel in je kernel configuratie bestand voor de nieuwe kernel:
options "EXT2FS"
Zodra je je systeem met de nieuwe kernel hebt opgestart, kun je het ext2fs bestandssysteem mounten door een commando op te geven als:
mount -t ext2fs /dev/wd0s3 /mnt
Te wijten aan een bug in FreeBSD 2.2.8 en eerder zul je alle ext2fs
bestandssystemen moeten unmounten voordat je FreeBSD afsluit als
je van deze versies gebruikt maakt. Als je FreeBSD afsluit met een
gemount ext2fs bestandssysteem, kan FreeBSD niet synchroon lopen met
UFS bestandssystemen. Dit resulteert de volgende keer dat FreeBSD
wordt opgestart, in het uitvoeren van fsck
. Je kunt deze
bug omzeilen door de volgende regel in het bestand /etc/rc.shutdown
te plaatsen:
umount -a -t ext2fs
Deze bug is in FreeBDS 3.x gecorrigeerd.
Het iBCS
package geeft ondersteuning voor het uitvoeren
van FreeBSD's uitvoerbare bestanden onder Linux;
maar het is oud en onbeheerd. Ik krijg het niet werkend
Laat me alsjeblieft weten als je hiermee meer geluk hebt.
FreeBSD biedt de mogelijkheid de uitvoerbare bestanden van Linux, zowel in a.out als in het ELF formaat, uit te voeren. Hiervoor moet je de volgende drie stappen volgen:
/etc/rc.conf
bestand wijzigen en
linux_enable="NO"veranderen in
linux_enable="YES"en opnieuw opstarten. Een andere manier om Linux binaire ondersteuning te verkrijgen is door het commando
/usr/bin/linux
uit te voeren.
Op deze manier hoef je niet te rebooten, en je hebt de ondersteuning
voor Linux binary's niet altijd geladen (i.e. je bespaart geheugen.)
Denk er aan de volgende regel toe te voegen
options COMPAT_LINUXaan het FreeBSD kernel configuratiebestand als je een nieuwe FreeBSD kernel aanmaakt.
linux_lib-2.4.tgz
(wellicht zijn er
nieuwere versies beschikbaar).
Geef de volgende opdracht om het package te installeren:
pkg_add <path_naar_package>/linux_lib-2.4.tgz<path_naar_package> is de directory waar het package is opgeslagen. Je kunt het ook van het net afhalen:
pkg_add ftp://ftp.freebsd.org/pub/FreeBSD/packages-stable/All/linux_lib-2.4.tgzof door het nog eens opstarten van
/stand/sysinstall
.
Enter ``Configure'', ``Packages'' en de menu's te gebruiken. Je zal het
volgende commando uit moeten voeren als je statisch gelinkte Linux binary's
gebruikt:
brandelf -t Linux <name_of_statically_linked_linux_binary>
Ik heb de Linux versies Applixware 4.3 en Netscape 3.01 (beide ELF formaat) onder FreeBSD 2.2.2 met gebruik van deze methode met succes gedraaid (ja, ik weet dat er een gedegen FreeBSD versie van Netscape 4 is). De Linux versies acroread en StarOffice 3 en 4 werken ook goed onder FreeBSD. StarOffice 5 rekent op de native Linux treads en werkt thans niet onder FreeBSD. Lees de FreeBSD documentatie voor meer informatie over dit onderwerp.
De laatste versie van deze mini-HOWTO kan worden gedownload van deze site in diverse formaten (inclusief SGML en PostScript). Het document is vertaald naar de Japanse taal door Mr. Teruyoshi Fujiwara als een onderdeel van het JF project.
Een aantal artikelen over het verschil tussen Linux en FreeBSD zijn hier te vinden.
Je kunt meer informatie over FreeBSD vinden (en het volledige systeem downloaden bij deze site. Je kunt het systeem ook op CDROM's kopen van Walnut Creek CDROM (hun servers draaien FreeBSD.)
De Linux Kernel HOWTO (en deze mini-HOWTO) zijn uitgegeven als onderdeel van Het Linux Documentatie Project.
Met dank aan de leden van de *BSD gebruikers groep in Denemarken voor het beantwoorden van vragen van een FreeBSD newbie, aan Mr. Takeshi Okazaki voor het onder mijn aandacht brengen van het bestaan van U2FS, en aan Mr. David O'Brien voor de waardevolle suggesties.
Handelsmerken zijn in eigendom bij hun eigenaren.
Alhoewel wordt verondersteld dat de informatie die in dit document is gegeven, correct is, zal de auteur geen aansprakelijkheid aanvaarden voor de inhoud van dit document. Gebruik de tips en voorbeelden hierin gegeven op eigen risico.
Copyright © 1997-2000 door Niels Kristian Bech Jensen. Dit document mag slechts worden gedistribueerd onder de voorwaarden en condities zoals staat beschreven in de LDP licentie.