De Linux+FreeBSD mini-HOWTO
Niels Kristian Bech Jensen, nkbj@image.dk
Vertaald door Ellen Bokhorst, bokkie@nl.linux.org
v1.11, 30 maart 2000
Dit document beschrijft hoe je Linux en FreeBSD op hetzelfde systeem
kunt gebruiken. Het introduceert FreeBSD en bespreekt hoe de twee bes
turingssystemen kunnen samenwerken b.v. door het delen van swap space.
Je zult waarschijnlijk wel enige ervaring nodig hebben met Linux of
FreeBSD en het partitioneren (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.
______________________________________________________________________
Inhoudsopgave
1. Wat is FreeBSD?
2. De beste manier om FreeBSD's harddrives te labelen
2.1 FreeBSD ``slices'' en ``partities''
2.2 Drive en partitie labeling in Linux en FreeBSD
3. Swap space delen tussen Linux en FreeBSD
3.1 Installeren en voorbereiden van Linux
3.2 FreeBSD installeren
3.3 De FreeBSD swap partitie instellen onder Linux
4. FreeBSD booten met behulp van LILO
5. Mounten van bestandssystemen
5.1 Het mounten van UFS bestandssystemen onder Linux
5.2 Het mounten van ext2fs bestandssystemen onder FreeBSD
6. Uitvoeren van externe binaire bestanden
6.1 Uitvoeren van FreeBSD binaire bestanden onder Linux
6.2 Uitvoeren van Linux binaire bestanden onder FreeBSD
7. Informatiebronnen
8. Verdiensten en rechtsgeldige zaken
8.1 Rechtsgeldige zaken
______________________________________________________________________
1. Wat is FreeBSD?
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.
2. De beste manier om FreeBSD's harddrives te labelen
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.
2.1. FreeBSD ``slices'' en ``partities''
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.
2.2. Drive en partitie labeling in Linux en FreeBSD
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!
3. Swap space delen tussen Linux en FreeBSD
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.
3.1. Installeren en voorbereiden van Linux
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.
3.2. FreeBSD 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.
3.3. De FreeBSD swap partitie instellen onder Linux
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 :-)
4. FreeBSD booten met behulp van LILO
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
5. Mounten van bestandssystemen
5.1. Het mounten van UFS bestandssystemen onder Linux
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 /mnt
als 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.
5.2.
Het mounten van ext2fs bestandssystemen onder FreeBSD
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.
6. Uitvoeren van externe binaire bestanden
6.1. Uitvoeren van FreeBSD binaire bestanden onder Linux
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.
6.2. Uitvoeren van Linux binaire bestanden onder FreeBSD
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:
1. Je moet Linux compatibiliteit aanzetten. Om dit te kunnen doen (in
FreeBSD 2.2.2 --- details kunnen in andere versies variëren) moet
je je /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_LINUX
aan het FreeBSD kernel configuratiebestand als je een nieuwe FreeBSD
kernel aanmaakt.
2. Je moet de Linux shared library's installeren als je Linux binary's
dynamisch zijn gelinkt. De library's worden bij FreeBSD 2.2.{2,5,6}
meegeleverd, als het package linux_lib-2.4.tgz (wellicht zijn er
nieuwere versies beschikbaar). Geef de volgende opdracht om het
package te installeren:
pkg_add /linux_lib-2.4.tgz
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.tgz
of door het nog eens opstarten van /stand/sysinstall. Enter ``Config
ure'', ``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
3. Installeer de Linux programma('s) die je wilt gebruiken. De
programma('s) kunnen op zowel de UFS als de ext2fs bestandssystemen
worden geïnstalleerd. Zie sectie ``Mounten van ext2fs
bestandssystemen onder FreeBSD'' voor meer informatie over het
gebruik van ext2fs bestandssystemen onder FreeBSD.
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.
7. Informatiebronnen
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
.
8. Verdiensten en rechtsgeldige zaken
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.
8.1. Rechtsgeldige zaken
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
.