Vreemd maar toch vertrouwd
Hoe OpenSolaris ontstond en hoe je ermee werkt
In de vergelijkende test in c't 7-8/2008 tref je naast Ubuntu 8.04 en Fedora 9 ook een vreemde eend in de bijt aan, namelijk OpenSolaris 2008.05. Sun probeert hiermee om Sun's eigen besturingssysteem Solaris bekender en aantrekkelijker te maken voor het grote publiek. Dankzij Gnome als desktopomgeving en de bekende GNU-tools kunnen Linux-gebruikers vrij snel wennen aan de vrije Solaris-variant. Maar Solaris is natuurlijk eigenlijk vooral bekend als besturingssysteem voor servers. De grote verschillen komen dan ook pas in beeld als je naar OpenSolaris' systeembeheertools en serverdiensten gaat kijken.
De naam OpenSolaris heeft twee betekenissen. De 'distributie' met zijn website opensolaris.com, zoals we die hier gaan bekijken, is eigenlijk pas vorig jaar opgericht om aan de vraag naar een downloadbare OpenSolaris te voldoen. Het pakket is ontwikkeld onder de codenaam "Indiana", de eerste release heeft versienummer "2008.05". OpenSolaris als distributie bevat delen die vallen onder Suns CDDL-licentie, bijvoorbeeld de kernel en gerelateerde userland-delen ("ON"), en andere delen die vallen onder de GPL (Xen/xVM, de GNU-tools, Bash, GNOME, X.org etc.). Omdat de hele distributie open-source is, is er geen probleem meer qua herdistributierechten. Hierdoor mag OpenSolaris vrij gemirrored worden via bijvoorbeeld FTP, Bittorrent of als een bijlage bij tijdschriften etc.
De Device Driver Utility geeft een overzicht van de aanwezige hardware en de geladen drivers.
Geschiedenis van OpenSolaris
Oorspronkelijk (vanaf 2005) was OpenSolaris met als website opensolaris.org de open source code van wat de opvolger van Solaris 10 zal worden. Dit is wat algemeen bekend staat als "Nevada" – Suns interne codenaam voor Solaris 'next'. Het is te vergelijken met wat kernel.org is voor Linux, maar omdat ON meer omvat dan alleen de kernel, is de scope van OpenSolaris.org dus breder dan die van Linux' kernel-development. Behalve ON vind je op opensolaris.org ook de code van X, code van Xen-projecten etc.
De broncode van de OpenSolaris kernel valt onder de CDDL, een OSI-goedgekeurde opensourcelicentie, vergelijkbaar met de MPL. In tegenstelling tot de GPL is de CDDL bestandsgebaseerd, dus als je CDDL-gelicenseerde code in je product gebruikt, hoef je alleen wijzigingen op de CDDL-delen terug te geven. De rest mag je voor jezelf houden als je dat wilt. Dat is ook de reden dat Apple de OpenSolaris-functies ZFS en Dtrace in Leopard kon opnemen. Apple hoeft alleen de CDDL-gelicenseerde broncode openbaar te maken, de rest van de broncode van OS X kan en mag geheim blijven.
Elke twee weken geeft Sun interne 'development snapshots' vrij van Solaris Next onder de naam Solaris Express Community Edition (SXCE). Sun zit ten tijde van dit schrijven bij build 90. SXCE is dus een complete binary distro à la Solaris 10. Alleen bevat SXCE wél third-party componenten waarvoor Sun geen aparte herdistributierechten heeft, zowel voor het source- als binary-formaat, behalve dan als onderdeel van Solaris als totaalproduct. SXCE mag je daarom ook niet via FTP of Bittorrent verder verspreiden. Tot voor kort bestond er ook nog Solaris Express Developer Edition (SXDE), een driemaandelijks verschijnende versie van SXCE met een simpelere installer met een aantal ontwikkeltools extra. De functie van SXDE is nu echter overgenomen door OpenSolaris.
Overigens is OpenSolaris 2008.05 niet eens de eerste gebruiksvriendelijke vrije OpenSolaris-distro. Nexenta (Debian op de OpenSolaris kernel) en Belenix (uit India) bestaan al veel langer. Zij hadden bijvoorbeeld ook al eerder een LiveCD-installatie. Om die reden is dan ook niet iedereen uit de OpenSolaris-community tevreden dat Sun's eigen 'Project Indiana' nu simpelweg OpenSolaris is gaan heten.
Kortom, het aantal OpenSolaris-versies is nogal verwarrend (zie Steve Lau's weblog) en Sun zelf droeg daar tot voor kort ook aan bij.
Het dienstenbeheer van Gnome laat maar weinig informatie zien, maar je kunt er wel systeemdiensten mee starten of afsluiten.
Bestandssysteem en devicenamen
Dat OpenSolaris onder de motorkap toch iets anders werkt dan een willekeurige Linux-distributie, merk je al meteen als je in de filemanager kijkt. De home-directory’s staan niet onder /home, maar in de directory /export/home. Alleen automount heeft de controle over /home, waardoor je zelfs als beheerder geen directory’s onder /home kunt aanmaken. Welke directory’s automount nog meer controleert, vind je in het bestand /etc/auto_master.
Ook de devicenamen zijn anders dan onder Linux. Een harddiskpartitie heet geen /dev/hda of /dev/sda. In plaats daarvan vind je de ruwe diskdevices in de /dev/rdsk. Wil je partities benaderen, dan moet je in de /dev/dsk zijn, waar je namen tegenkomt als c0d0. In die afkorting staat c0 voor de eerste controller en 'd0' voor het eerste device.
Als je een SCSI-systeem hebt, heet je disk geen c0d0, maar c0t0d0. Om de apparaatnaam van een schijf te achterhalen kun je het commando echo | format gebruiken, dat alle schijven opsomt. Het commando format start normaal gesproken in de interactieve modus, van waaruit je een harde schijf selecteert. Via een menu kun je dan meer informatie bekijken of fdisk in de interactieve modus starten.
Met de partitienamen erbij zien devicenamen er nog cryptischer uit. De eerste partitie van je eerste SCSI-disk heet bijvoorbeeld c0d0t0s0. Daarin is 't0' het eerste target (altijd nul, behalve bij speciale back-uphardware) en 's0' de eerste slice, ofwel de eerste partitie. De namen voor ATA-disks zijn iets simpeler: typisch zie je daarbij dingen als 'c0d0s0' of 'c0d0p0', waarbij p-partities staan voor DOS/Windows-partities.
Ook in de rest van het bestandssysteem vind je typische Solarisismes. Zo wordt onder OpenSolaris de directory /opt intensief gebruikt (zoals ook gebeurt bij Hewlett Packard's propriëtaire Unix-versie HP-UX, trouwens). Zo’n beetje alle software van derde aanbieders komt daar terecht. Vrije software die op de OpenSolaris-cd staat, belandt deels in de map /usr/sfw; pakketten uit de Sunfreeware-repository komen juist in de directory /opt/sfw terecht. Bij die laatste vergeet OpenSolaris echter om het zoekpad voor bibliotheken bij te werken. Om ervoor te zorgen dat je nieuwe programma’s hun bijbehorende bibliotheken in /opt/sfw/lib vinden, moet je als beheerder het zoekpad uitbreiden met
crle –u –l /usr/sfw/lib/
Als je crle (configure runtime linking environment) zonder argumenten uitvoert, kun je controleren of de actie geslaagd is.
Beheer van systeemdiensten
Bijna alles wat met Solaris' systeembeheer van doen heeft, verschilt totaal van Linux. OpenSolaris regelt zaken als de bootvolgorde van diensten (daemons), de netwerkconfiguratie en het pakketbeheer met andere mechanismen dan onder Linux gebruikelijk is.
Je zou verwachten dat het met de verschillen qua bootvolgorde wel meevalt. Traditioneel hoort Solaris namelijk net als Linux tot de System V-school, waarbij zogenaamde init-scripts in de /etc/rc*d/ bepalen in welke volgorde de systeemservices 'opkomen' na het booten. Helaas: onder OpenSolaris mag je dat allemaal direct weer vergeten, want daarbij worden diensten beheerd door de Service Management Facility (SMF). Je kunt ze beheren met de twee commando’s svcadm en svcs. Met de eerste kun je afzonderlijke diensten in- en uitschakelen. Zo activeert
svcadm enable network/http:apache2
de webserver Apache en wordt deze direct gestart. Vervang je enable door disable, dan wordt de dienst juist afgesloten en uitgeschakeld. SMF houdt de status per dienst vast, zodat je opstart met dezelfde draaiende diensten als toen je de computer uitzetten / herstartte.
Met het commando svcs kun je informatie opvragen over de geregistreerde diensten. Start je svcs met de parameter –a, dan krijg je een lijst van alle diensten en de status. Mogelijke toestanden zijn online, offline (wat op een fout duidt bij het starten van de dienst), disabled en legacy_run (voor diensten die nog via scripts in de /etc/rc*d-directory’s worden geregeld). Uitvoerige informatie over een bepaalde dienst kun je opvragen je met de parameter –l, gevolgd door de servicenaam. Zo krijg je met
svcs –l svc:/system/hal:default
een korte beschrijving van de HAL-dienst, de status en de locatie van de logfile. Ook vertelt het commando je van welke andere diensten de HAL-daemon afhankelijk is.
Als een dienst is uitgeschakeld hoewel hij eigenlijk zou moeten draaien, kun je de fout proberen op te sporen met het commando svcs –x gevolgd door de servicenaam. Met dit commando kun je zien of de dienst door de beheerder zelf is uitgeschakeld of dat het starten ervan misschien juist is mislukt, omdat er een fout plaatsvond bij een andere noodzakelijke dienst. Het commando verwijst bovendien naar de manpages en uitgebreidere online documentatie.
In het 'Beheer'-menu vind je een rudimentaire grafische tool voor dienstenbeheer, maar daarmee kun je alleen diensten starten en stoppen. Meer informatie geeft de tool niet.
Spelen met ZFS
Een bijzondere feature van OpenSolaris is het bestandssysteem ZFS, dat RAID-functies en volumemanagement integreert en je de mogelijkheid biedt om snapshots te maken en weer terug te zetten [1]. ZFS maakt intussen ook deel uit van Mac OS X 10.5 en FreeBSD 8, hoewel het bij die twee respectievelijk alleen nog read-only en nog niet in een stabiele versie is geïmplementeerd.
Bij het ontwikkelen van ZFS vond Sun het vooral belangrijk dat het beheer eenvoudig zou zijn. Daarom kun je met slechts één commando nog een partitie of harddisk als ZFS-pool toevoegen. Met het commando
zpool create pakhuis c0d0p3
maak je in één klap een ZFS-pool met de naam ‘pakhuis’ op de derde partitie van de eerste harde schijf aan de eerste IDE-controller, maak je het bestandssysteem aan, laat je het opnemen in de map /pakhuis en bewaar je de instelling meteen voor na de volgende reboot. Dat kost veel minder tijd en werk dan onder Linux, waar je de partitie eerst met de hand moet formatteren, dan een mountpoint moet aanmaken om de partitie vervolgens nog eens handmatig in /etc/fstab te moeten zetten – een nauwkeurig karwijtje.
Binnen je nieuwe ZFS-pool kun je nu meer hiërarchisch ondergeschikte bestandssystemen aanmaken, als je wilt ook met een eigen mountpoint. Zo maakt
zfs create pakhuis/mp3
een onderliggend bestandssysteem aan voor je muziekverzameling. Om te voorkomen dat dat meteen alle ruimte van pakhuis in beslag neemt, kun je de ruimte voor de mp3’s beperken tot 10 GB met
zfs set quota=10g pakhuis/mp3
Zoals gezegd, zullen de apparaatnamen voor harde schijven en partities voor Linux-gebruikers even wennen zijn. In een eerdere c't hebben we overigens al eerder geschreven over zfs (zie c't 10/2006, p.154).
Hoe weet je of je hardware werkt?
In onze test stelden we al vast dat de hardwareondersteuning van OpenSolaris minder goed is dan onder Linux. Een van de redenen daarvoor is dat niet alle originele Solaris-code zomaar onder een opensourcelicentie gezet kan worden. Als je OpenSolaris 2008.05 vergelijkt met de Solaris Express Community Edition (SXCE) "Nevada", blijkt de hardwareondersteuning in SXCE heel wat beter. Maar ja, die is dus geen opensource.
Hoewel de meest gangbare hardware wel werkt onder OpenSolaris, moet je er rekening mee houden dat bepaalde apparaten als je geluids- of netwerkkaart het misschien niet zullen doen. Op het bureaublad van de OpenSolaris-livecd staat daarom de Device Driver Utility klaar, zodat je nog vóór de installatie een idee hebt hoeveel van je hardware herkend is. Achter de apparaten laat OpenSolaris de bijbehorende geladen driver zien. Niet ondersteunde componenten krijgen een rode achtergrondkleur. Naast de Device Driver Utility kun je ook commandline-tools als scanpci en prtconf gebruiken om te zien welke hardware er in je computer zit. Welke kernelmodules geladen zijn, kun je zien met modinfo. En als je van een bepaalde module specifiek meer wilt weten, kun je de parameter –i gevolgd door het ID-nummer van de module gebruiken. Verder is nog het commando prtdiag het vermelden waard: dat geeft een overzichtelijk lijstje van je BIOS-versie, je processor en de geheugenuitrusting van je computer.
Wil een apparaat niet meewerken, geef dan niet meteen op. Net als onder Linux wil het vaak nog wel eens werken om even te googelen op de term 'Solaris' of 'OpenSolaris' en de producent- en device-ID van je probleemcomponent. Zo’n zoekactie levert vaak aanwijzingen of je het probleem kunt oplossen door iets speciaals te configureren of met een andere driver. Op die manier konden we bij onze test bijvoorbeeld een niet functionerende Intel-ICH6-geluidchip aan de praat krijgen met de OSS-drivers voor Solaris, nadat we het driverpakket met het commando pkgadd hadden geïnstalleerd.
Netwerkconfiguratie
Ook bij de netwerkconfiguratie bewandelt OpenSolaris andere wegen dan Linux: alle verbindingen worden beheerd door de network auto-magic daemon (nwamd). Je komt alleen automatisch online als OpenSolaris verbinding kan leggen met een DHCP-server en van deze het IP-adres en informatie over de standaard gateway krijgt. Om met de hand een vast IP-adres in je configuratie op te nemen kun je meerdere dingen doen. Optie 1: in de documentatie duiken voor het hoe en wat, want de belangrijkste netwerktools in OpenSolaris, ifconfig en route, verwachten net wat andere parameters dan hun gelijknamige tegenhangers onder Linux. Optie 2: nwamd met svcadm geheel uitschakelen en het netwerk zelf configureren via het Gnome-netwerkbeheer. Oh ja, en dan is er nog een optie 3: eventueel kun je je OpenSolaris-systeem ook met sys-unconfig weer in de begintoestand terugzetten. Bij de volgende reboot vraagt het dan in een dialoogvenster in tekstmodus naar zaken als de toetsenbordlay-out, je taal van voorkeur, het root-wachtwoord en de netwerkconfiguratie. sys-unconfig verandert niets aan de opgeslagen instellingen van gebruikers.
De Packagemanager is een grafische interface voor het beheer van de geïnstalleerde software.
Pakketbeheer
Het oude Solaris werkte al langer met packages via de commando's pkgadd, pkgrm, pkginfo, pkgadm enzovoort, al waren de namen van pakketten daarbij soms nogal cryptisch. OpenSolaris heeft echter een nieuw pakketbeheer dat doet denken aan Debians apt. Het Image Packaging System (IPS) ondersteunt een willekeurig aantal repository’s, waaruit je pakketten kunt installeren via ofwel het commando pkg, ofwel het grafische frontend. Standaard kent OpenSolaris alleen de repository op opensolaris.org, waarin extra pakketten staan als OpenOffice, Netbeans en SunStudio. Als je de repository’s Sunfreeware en Blastwave toevoegt, kun je aanzienlijk meer pakketten installeren. Sunfreeware omvat uiteenlopende software, van alternatieve desktops als WindowMaker en XFCE tot en met praktische tools als de snelle PDF-viewer Xpdf. Blastwave is een door de community onderhouden pagina, waarop bijna elk opensourceprogramma wel staat dat je misschien al van Linux kent – je kunt bijvoorbeeld de KDE-desktop als pakket op OpenSolaris installeren, je favoriete mailprogramma en verschillende praktische tools, zoals het CAB-decompressieprogramma cabextract en antiword voor het converteren van Word-documenten.
De centrale tool voor het IPS heet pkg; hier vind je een kleine vergelijking van parameters tussen IPS en Debian's apt. Om een voorbeeld te geven, met het commando
pkg set-authority –0 http:// pkg.sunfreeware.com:9000 Sunfreeware
configureer je de Sunfreeware-repository als een geldige pakketbron voor OpenSolaris, en
pkg set-authority –0 http:// blastwave.network.com:10000 Blastwave
doet hetzelfde voor de Blastwave-repository. Welke repository’s er nog meer geldig zijn voorgeconfigureerd, kom je aan de weet via pkg authority. Het installeren van pakketten zelf gaat met de opdracht pkg install gevolgd door de pakketnaam. Deïnstalleren van software die niet meer nodig is gaat op een vergelijkbare manier, met pkg uninstall. Daarnaast geeft pkg je ook gedetailleerde informatie over de inhoud van pakketten, en kun je met de parameter search ook zoeken in het flinke aanbod. Een vreemde eend in de bijt is het commando pkg image-update, een variant op apt-get dist-upgrade, dat (na configuratie) al je pakketten met één commando upgradet naar een volgende versie van je distributie. Dit werkt alleen anders met pkg, om beter gebruik te maken van Solaris-specifieke zaken als zones en slimme rollbacks via ZFS: eerst maakt het een kloon aan van je huidige bootomgeving, en daar installeert het de updates. Vervolgens worden binnen die omgeving alle geïnstalleerde pakketten geüpdatet. De oude, stabiele bootomgeving blijft als kopie bewaard. Om ruimte te sparen, kun je deze na een succesvolle update wissen met het commando beadm.
En nu jij!
Zoals op de OpenSolaris-website te lezen is, kun je op allerlei manieren de speciale eigenschappen van OpenSolaris gaan verkennen. Als je Linux gewend bent zul je in het begin wat afwijkende zaken tegenkomen, maar gelukkig word je daarbij geholpen door de (Engelstalige) manpages en allerlei documentatie op internet. Nagenoeg elke taak wordt er uitvoerig en met voorbeelden beschreven.
Voor meer informatie over nieuwe Solaris-specifieke technieken als DTrace en ZFS kunnen we je beter verwijzen naar aparte artikelen.
(Met dank aan Menno Lageman van Sun Microsystems voor de passage over de totstandkoming van OpenSolaris.)
Literatuur
[1] ZFS-leesvoer: www.sun.com/software/solaris/zfs_learning_center.jsp
[2] OpenSolaris-documentatie: www.opensolaris.com/learn/index.html
[3] Sun-documentatieverzameling: http://docs.sun.com