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: 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):
# 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:
#
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:
Dat verander je naar
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:
Dat kan een tijdje duren. Nu moet je de ports uitpakken:
Met het volgende commando kan je je portstree up2date houden:
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:
/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:
Daar staat een regel met ongeveer het volgende:
Vervang dat door
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:
Daemon starten bij booten FreeBSD
Wil je bijvoorbeeld Apache starten als je je FreeBSD bak boot? Voeg dan
toe aan /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::
root (hd0,0,a)
kernel /boot/loader
Vervang
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:
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:
Draai dan het commando
om het probleem op te lossen.
init.d?
Als je van bijvoorbeeld Debian afkomt, zou je Apache herstarten met het commando
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:
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:
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: