FreeBSD

Caspar Schutijser

November 2009, bijgewerkt september 2010

Een paar maanden geleden heb ik een uitstapje gemaakt naar FreeBSD, en dat beviel erg goed. Maar als Linuxgebruiker kan je wel tegen een paar probleempjes aanlopen, en die dingen heb ik toen opgeschreven. Hier zijn een paar dingen waar je als Linuxgebruiker misschien niet meteen uitkomt.

Inhoud

Inloggen als root

Ik wilde als root inloggen, en dat lukte maar niet... Ik kreeg steeds een foutmelding:

$ su
su: sorry

Ik heb toen even op internet gezocht, en wat blijkt: voor de veiligheid moet je in FreeBSD in de groep wheel zitten, om te mogen switchen naar het rootaccount. Als je als root ingelogd bent, kan je jezelf zo toevoegen aan de groep wheel (vervang user door je accountnaam):

# pw user mod user -G wheel
# groups user

Nu kan je wel switchen naar het rootaccount.

Apache

Als je Apache hebt geinstalleerd via de ports of sysinstall, moet je nog een paar handelingen verrichten voordat Apache ook echt werkt. Als je Apache probeert te starten, lijkt hij dat gewoon te doen:

# /usr/local/etc/rc.d/apache22 start
#

Als je vervolgens probeert je webserver te bereiken, lukt dat niet. Apache draait dus niet, helaas. Doe nu dit om Apache wel te kunnen starten en draaien:

Voeg accf_http_load="YES"toe aan /boot/loader.conf.

Voeg de hostname toe aan /etc/hosts, en dan aan de regel die start met 127.0.0.1. Bijvoorbeeld:

127.0.0.1 localhost

Dat verander je naar

127.0.0.1 localhost hostname

Ports

Met het ports systeem van FreeBSD kan je software pakketen installeren. Zie voor meer informatie hier. Hier wordt nu besproken hoe je software zelf compileerd. Je kan ook gewoon binaries installeren, dat kan je op de site van FreeBSD lezen.

Eerste keer ports

Als je ports wilt gebruiken, moet je eerst de portstree ophalen. Dat doe je zo:

# portsnap fetch

Dat kan een tijdje duren. Nu moet je de ports uitpakken:

# portsnap extract

Met het volgende commando kan je je portstree up2date houden:

# portsnap update

Een programma installeren

Maargoed, met portsnap extract hebben we de ports nu uitgepakt. In /usr/ports:

# pwd
/usr/ports
# ls
.cvsignore	UPDATING	emulators	misc		textproc
.portsnap.INDEX	accessibility	finance		multimedia	ukrainian
CHANGES		arabic		french		net		vietnamese
COPYRIGHT	archivers	ftp		net-im		www
GIDs		astro		games		net-mgmt	x11
INDEX-5		audio		german		net-p2p		x11-clocks
INDEX-6		benchmarks	graphics	news		x11-drivers
INDEX-7		biology		hebrew		palm		x11-fm
KNOBS		cad		hungarian	polish		x11-fonts
LEGAL		chinese		irc		ports-mgmt	x11-servers
MOVED		comms		japanese	portuguese	x11-themes
Makefile	converters	java		print		x11-toolkits
Mk		databases	korean		russian		x11-wm
README		deskutils	lang		science
Templates	devel		mail		security
Tools		dns		math		shells
UIDs		editors		mbone		sysutils

Er zijn dus, zoals je kan zien, categorieen aangemaakt. Als je bijvoorbeeld Audacity wilt installeren, moet je naar de audio/ direcory gaan. In audio/ bevinden zich weer een aantal directories, namelijk alle programma's die vallen in deze categorie. Als je Audacity wilt installeren, heb je twee keuzes:

# pwd
/usr/ports/audio
# ls | grep audacity
audacity
audacity-devel

Meestal ga je dan gewoon voor audacity/. Nu gaan we naar deze directory.

# pwd
/usr/ports/audio/audacity
# ls
Makefile	distinfo	files		pkg-descr	pkg-plist

Hier staat dus onder andere de makefile. Deze heeft de compiler nodig. Om Audacity te installeren (downloaden en compileren), voer je nu het volgende commando uit:

# make; make install
# make clean

Het hangt natuurlijk van de snelheid van je computer af, maar het compileren kan wel een hele tijd duren.

Zoeken in ports

Als je de gehele portstree wilt doorzoeken, ga dan naar /usr/local en voer het volgende commando uit:

# pwd
/usr/ports
# make search name="lighttpd"
Port: lighttpd-1.4.23
Path: /usr/ports/www/lighttpd
Info: A secure, fast, compliant, and very flexible Web Server
Maint: mnag@FreeBSD.org
B-deps: autoconf-2.62 autoconf-wrapper-20071109 automake-1.10.1 automake-wrapper-20071109 libtool-2.2.6a_1 m4-1.4.13,1 pcre-7.9 perl-5.8.9_3 pkg-config-0.23_1
R-deps: pcre-7.9 pkg-config-0.23_1 spawn-fcgi-1.6.2_2
WWW: http://www.lighttpd.net/

Als je alleen wilt zoeken in de categorie audio, ga je natuurlijk naar /usr/ports/audio, en voer je het make commando weer uit.

Statisch IP-adres

Als je een statisch IP-adres wilt, doe dan het volgende:

Permanent

Open /etc/rc.conf met een teksteditor:

# ee /etc/rc.conf

Daar staat een regel met ongeveer het volgende:

ifconfig_em0="DHCP"

Vervang dat door

ifconfig_em0="inet 192.168.0.25 netmask 255.255.255.0"
defaultrouter="192.168.0.1"

192.168.0.25 is het IP-adres van de FreeBSD-machine, 255.255.255.0 is je netmask, en 192.168.0.1 is het IP-adres van je gateway.

Tot de volgende reboot

Je kan het IP-adres ook zo instellen, maar dan is het niet permanent:

# ifconfig em0 inet 192.168.0.25 netmask 255.255.255.0

Daemon starten bij booten FreeBSD

Wil je bijvoorbeeld Apache starten als je je FreeBSD bak boot? Voeg dan

apache22_enable="YES"

toe aan /etc/rc.conf.

# echo 'apache22_enable="YES"' >> /etc/rc.conf

FreeBSD en Linux dualbooten

Als je FreeBSD en Linux wil dualbooten, raad ik je aan eerst FreeBSD te installeren, en daarna Linux.Na de installatie van Linux, moet je de /boot/grub/menu.lst file bewerken.

Voeg dit toe::

title FreeBSD 7.2
root (hd0,0,a)
kernel /boot/loader

Vervang

root (hd0,0,a)

door je harddisk, partitie and slice van je FreeBSD installatie.

Geluid

Voor het gebruik van je headset of speakers zal je FreeBSD moeten vertellen dat 'ie een driver moet laden. Voeg toe aan /boot/loader.conf:

snd_driver_load="YES"

Voor mijn laptop (zie casparx2 op deze pagina) moest ik de driver snd_hda nog kldloaden.

Na een crash

Als je FreeBSD systeem bijvoorbeeld een keer is uitgevallen, en dus niet netjes is afgesloten, kan je de volgende melding krijgen:

Enter full pathname of shell or RETURN for /bin/sh

Draai dan het commando

# fsck

om het probleem op te lossen.

init.d?

Als je van bijvoorbeeld Debian afkomt, zou je Apache herstarten met het commando

# /etc/init.d/apache2 restart

Maar dat werkt niet in FreeBSD. In FreeBSD moet je een ander pad gebruiken: /etc/rc.d.

Cronjobs

Ik weet niet precies onder wat voor kop ik deze informatie moet plaatsen, maar ik kwam erachter toen ik Python wilde starten vanuit een cronjob, dus vandaar.

In een cronjob had ik staan:

@reboot python2.6 /home/caspar/pp/server.py -p 60002

Als ik dat commando in de commandline uitvoerde, werkte het wel gewoon. Echter, vanuit een cronjob werkte het niet! Gelukkig is FreeBSD zo aardig om de output van een cronjob te mailen, dus ik keek even.

Daarin zag ik het volgende staan:

python2.6: not found

Zo lukt het echter wel, ik voerde het volgende commando uit:

$ which python2.6
/usr/local/bin/python2.6

De output van dit commando moet ik dus als Python-pad gebruiken om 'm te starten. Mijn cronjob werd dus:

@reboot /usr/local/bin/python2.6 /home/caspar/pp/server.py -p 60002