Det frie operativsystemet OpenBSD er kjent for å være «funksjonelt, fritt og sikkert i utgangspunktet», og det har spilt en viktig rolle i åpen kildekode i mer enn et kvart århundre. For min egen del har det også vært heller sentralt i det jeg har drevet med de siste to tiår og litt til. Her vil jeg si noe om hvordan livet med OpenBSD har vært, med spesiell vekt på noen hendelser og punkter i utviklingen som har gjort livet, eller i alle fall mitt liv, bedre.
Jeg vil våge å anta at du allerede vet at et av de viktigste kjennetegnene ved OpenBSD er kontinuerlig kodegransking («code audit») og skarpt fokus på sikker og korrekt kode.
Granskingen har ført til en hel del forbedringer, inkludert en strøm av feilrettingsrunder der feil av samme type ble rettet mange steder i kildekodetreet, og til og med noen tilfeller av at hele delsystemer ble skrevet på nytt. I tillegg skjer det, også for frie operativsystemprosjekter, at livet bare går videre. Verden endres rundt oss og tvinger utviklere til å ta opp nye innfallsvinkler til både nye og velkjente problemer og utvikle kode slik at livet blir bedre for oss alle.
Hvis du ikke er så veldig godt kjent med OpenBSD som system eller prosjekt, kan presentasjonen «OpenBSD and you», som jeg tidvis oppdaterer, være et ikke helt galt sted å starte. Men i denne kronikkserien vil jeg fokusere på noen spesifikke øyeblikk da jeg følte at endringer i OpenBSD gjorde mitt liv bedre. Disse hendelsene er bakgrunnen for at jeg begynte med å fortelle andre hvor bra systemet er og har fortsatt med å gjøre det.
Installeringsprogrammet har alltid vært bra, ble bedre
Da jeg fant OpenBSD for mer enn tyve år siden, hadde jeg erfaring med Unix først og fremst ved å jobbe med Linux-varianter og FreeBSD. Det som dro meg i retning av OpenBSD, og som til slutt fikk meg til å kjøpe et CD-sett med OpenBSD 2.5, var fokuset på sikkerhet og korrekt kode. Da CD-settet og T-skjorten med det klassiske trådmodell-daemonhodet til slutt kom i posten, satte jeg nokså fort i gang med å installere på noe ellers ubrukt maskinvare jeg hadde liggende.
Hvis jeg husker rett, var den første maskinen jeg prøvde å installere OpenBSD på, en 80386/33 MHz med 8 MB RAM og noe slikt som 100 MB IDE-harddisk. Det hørtes ganske skralt ut den gangen også, men det virket faktisk uten videre.
Denne første installeringen var ganske rett frem, og da jeg begynte å se meg rundt i det jeg hadde installert, fant jeg ut to ting om meg selv og det nye systemet: Alt så fornuftig og logisk ut, og alt jeg kom på å sjekke i systemet, hadde en leseverdig man-side. Så den første endringen jeg kjenner til som gjorde verden bedre med OpenBSD, var beslutningen om å håndheve strengt regelen «Ingen commit uten dokumentasjon», som kom tidlig i prosjektet, antakelig omtrent samtidig med at OpenBSD-utviklerne ga oss innsikt i utviklingen i prosjektet i nær sanntid via anonym CVS. Du kan se hva som skjer så å si umiddelbart.
Det er verdt å nevne at installeringsprogrammet fortsatt er ikke-grafisk, kun tekst. Grunnen til at installeringsprogrammet kjører i ren tekst, er at det er en betydelig fordel som setter utviklere og brukere i stand til å håndtere den ganske varierte samlingen maskinvareplattformer som OpenBSD kjører på, med samme portable, velkjente og kompakte kode overalt.
Tilværelsen er ikke helt fullverdig uten en laptop som kjører OpenBSD.
Installeringsprogrammet har alltid vært både scriptbart og utvidbart, og i årenes løp har det blitt utvidet med automatisk, gjentakbar og skriptbar installering (kalt autoinstall(8), som dukket opp i OpenBSD 5.5 i 2014), og utvidelsen sysupgrade(8) (som så dagens lys først i OpenBSD 6.6 i 2019) gir automatisert oppgradering fra snapshot til snapshot, eller fra en release til den neste, så sant konfigurasjonen ikke er helt overdrevet tilhacket. I hvert enkelt av disse øyeblikkene, eller mer spesifikt når den nye koden dukket opp i nye snapshot, satte jeg enda mer pris på OpenBSD og følte at livskvaliteten hadde tatt seg opp et merkbart hakk.
Og nå noe for laptopen - maskinvarestøtte
Noe over tyve år senere handler den siste artikkelen jeg fikk publisert i Digi.no, eller for så vidt på min egen blogg, om noen små runder utvikling i OpenBSD som på kort tid førte til at min nye laptop med 11. generasjon Intel Core-brikkesett fungerte prikkfritt med OpenBSD. Det krevde litt frem og tilbake med OpenBSD-utviklere og ble godt hjulpet av at OpenBSD-utviklere flest, og en betydelig del av OpenBSD-brukere, kjører OpenBSD på bærbare. Selv bruker jeg også en Mac og en Thinkpad fra arbeidsgiver med Ubuntu Linux, men tilværelsen er ikke helt fullverdig uten en laptop som kjører OpenBSD.
Nå skal jeg være helt ærlig. I løpet av noen få dager gikk jeg fra «Å f**n, SSD-en blir ikke gjenkjent» – kontrolleren var satt i en noe som likner på RAID-modus i utgangspunkt – via denne kjernepanikken:
– til at alt i maskinen var fullt ut støttet.
Problemet med SSD-en viste seg å være enkelt å fikse: bare finne frem til alternativet under «Advanced»-menyen i BIOS og slå av kvasi-RAID-funksjonaliteten slik at operativsystemet igjen kunne snakke direkte med lagringsenheten.
For de andre tingene ble det til at jeg i en periode på et par uker måtte kjøre med hjemmekompilert kjerne basert på checkout fra Jonathan Greys git-repo, mens han i samarbeid med noen andre testere og meg fikk koden i slik form at det ikke lenger var patcher som sirkulerte, men ble commitet til den generelt tilgjengelige utviklingsversjonen av OpenBSD. Da koden ble commitet til -current, kunne jeg gå tilbake til min normale rutine med sysupgrade(8) fra ett utviklings-snapshot til det neste.
Hele prosessen, selv med egenkompilerte kjerner i en overgangsperiode, var faktisk ganske behagelig. Og da koden med støtte for mitt utstyr ble commitet til den primære utviklingsversjonen, var det også et øyeblikk da jeg følte at endringer i OpenBSD hadde bidratt til å gjøre livet bedre. Koden med støtten for denne maskinvaren er nå i snapshotene og vil være med i OpenBSD 7.0, som er forventet utgitt tidlig i november 2021.
Leve livet, med dynamikk
Mens vi er inne på dette med laptoper, så skjedde det nylig en annen utvikling som gjør brukeropplevelsen med OpenBSD på laptop bedre. Laptoper og annet utstyr som bruker dynamisk nettverkskonfigurasjon, ble enklere å bruke da dhcpleased(8) ble aktivert som standard i OpenBSD 6.9-current, etter at programmet ble innført i OpenBSD 6.9. Denne endringen markerte slutten på en syklus på fem år med gradvis utvikling, som blant annet bestod i å skrive flere nye tjenesteprogrammer. Hvert av disse programmene ble utformet i samsvar med klassisk Unix-filosofi om at programmer skal gjøre én ting og gjøre den tingen ordentlig.
Den første delen som kom på plass, var slaacd(8) – daemonen for tilstandsløs autokonfigurering av IPv6-adresser – som først ble offentliggjort i OpenBSD 6.2 og håndterer automatisk IPv6-konfigurering ved å lytte etter router-annonseringer.
Motstykket, daemonen for router-annonsering, fikk navnet rad(8) og dukket opp i OpenBSD 6.4. Dermed var det meste av det som trengs for automatisk konfigurasjon av IPv6, på plass.
Det neste som skjedde, var at en validerende DNS-resolver med navnet unwind(8) ble presentert i OpenBSD 6.5. Den lærer hvilke navneservere den skal sende forespørsler til ut fra DHCP-informasjon og andre kilder.
Samlingen ble komplett med OpenBSD 6.9, som ga oss resolvd(8) til å håndtere og redigere /etc/resolv.conf, og oppdatere filen med informasjon som er hentet fra andre kilder, sammen med dhcpleased(8), som nå henter DHCP-informasjon for IPv4 som klient og sender denne informasjonen inn i konfigurasjonen.
Når dette blir kombinert med at laptopen din kan slutte seg til (med nøkkelordet join) nettverk etterhvert som de blir tilgjengelige, kan det å gå fra et nettverk til et annet være helt udramatisk og uten synlige forstyrrelser.
Alt dette faller på plass hvis du redigerer /etc/hostname.$if (for eksempel hostname.iwx0) til noe à la dette:
join adipose wpakey thedoctorknows
join tardis wpakey biggerontheinside
join cybermen wpakey nowedont
inet autoconf
inet6 autoconf
kan du vente minimalt med bry når du skifter mellom disse nettverkene. Og som alltid ble det slik at når ny funksjonalitet ble vurdert å være pålitelig, ble den aktivert som standard i OpenBSD-current, og OpenBSD 7.0 vil bli levert med denne adferden aktivert som standard for nettverksgrensesnitt som er innstilt til autoconf for enten inet eller inet6.
Men dette er i moderne tider, og for noen av oss ligger akkurat dette noe frem i tid. OpenBSD på laptop er en god opplevelse. På den annen side ser det ut som det meste av verden ser på BSD-ene og OpenBSD som operativsystem som først og fremst egner seg til serverbruk eller i nettverksutstyr, til tross for den ganske betydelige andelen BSD-kode i for eksempel Apple-systemer.
Dette er en serie i tre deler. I neste del forteller Peter Hansteen litt om hva som gjorde at han gikk til å være nesten ren OpenBSD-bruker, hvordan prosjektet sørget for at det finnes virkelig fri programvare for to viktige delsystemer: pakkefilter (brannmur) og sikker pålogging med SSH, før han går over til det som er virkelig viktig: Gjøre livet så vanskelig som mulig for spammere.
Intel sliter på mange fronter