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 dual booting!Linux, FreeBSD (zie FreeBSD dualboot) Linux!FreeBSD dualboot met (zie FreeBSD dualboot) FreeBSD!Linux dualboot met (zie FreeBSD dualboot) Dit document beschrijft hoe je Linux en FreeBSD op hetzelfde systeem kunt gebruiken. Het introduceert FreeBSD en bespreekt hoe de twee besturingssystemen 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 ( Wat is FreeBSD? FreeBSD dualboot!Freebsd overzicht

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. en 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):

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

De beste manier om FreeBSD's harddrives te labelen FreeBSD dualboot!disk drive labelling

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 ``slices'' en ``partities'' FreeBSD dualboot!disk drive partitions FreeBSD dualboot!disk drive slices

FreeBSD heeft één van de vier ingangen in de partitietabel van de harddisk van je PC nodig. Deze primaire partitie wordt een /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.

Drive en partitie labeling in Linux en FreeBSD FreeBSD dualboot!disk drive labeling!vergeleken met Linux FreeBSD dualboot!disk drive partities!vergeleken met Linux

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 ): 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

Als je een Linux extended partitie /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!

Swap space delen tussen Linux en FreeBSD FreeBSD dualboot!swap space, sharing

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.

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.

FreeBSD installeren FreeBSD dualboot!FreeBSD, installing

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.

De FreeBSD swap partitie instellen onder Linux FreeBSD dualboot!FreeBSD swap partition configuration

Start 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 /etc/rc.d/rc.sysinit. Zet de volgende regel in dat bestand net awk -- '/swap/ && ($1 !~ /#/) { system("mkswap "$1"") }' /etc/fstab

Hiermee zal iedere keer als je opnieuw opstart /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 :-)

FreeBSD booten met behulp van LILO FreeBSD dualboot!FreeBSD, booting with 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

Mounten van bestandssystemen FreeBSD dualboot!filesystems, mounting FreeBSD dualboot!mounting filesystems Het mounten van UFS bestandssystemen onder Linux FreeBSD dualboot!mounting filesystems!UFS, in 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 . Het wordt 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 voor meer informatie hierover. Je kun de

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.

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

Uitvoeren van externe binaire bestanden FreeBSD dualboot!foreign binary's Uitvoeren van FreeBSD binaire bestanden onder Linux FreeBSD dualboot!foreign binary's!FreeBSD in Linux

Het Uitvoeren van Linux binaire bestanden onder FreeBSD FreeBSD dualboot!foreign binary's!Linux in 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: 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. 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 pkg_add /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.tgz of 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 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 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.

Informatiebronnen FreeBSD dualboot!information resources

De laatste versie van deze mini-HOWTO kan worden gedownload van in diverse formaten (inclusief SGML en PostScript). Het document is vertaald naar de Japanse taal door Mr. Teruyoshi Fujiwara als een onderdeel van .

Een aantal artikelen over het verschil tussen Linux en FreeBSD zijn te vinden.

Je kunt meer informatie over FreeBSD vinden (en het volledige systeem downloaden bij . Je kunt het systeem ook op CDROM's kopen van (hun servers draaien FreeBSD.)

De Linux Kernel HOWTO (en deze mini-HOWTO) zijn uitgegeven als onderdeel van .

Verdiensten en rechtsgeldige zaken FreeBSD dualboot!credits and legal stuff

Met dank aan de leden van de 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.

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 .