Plan 9 (föreläsningsanteckningar) [Tillbaka till UppLYSningar som varit] Plan 9 ====== Historia -------- 1987 bestämde sig Bell för att ersätta den Unix de själva utvecklat eftersom den inte längre motsvarade de krav som ställdes. Under tiden hade det inom Bell utvecklats en intern Unix som så småningom blivit "the 10th edition". Målet med Plan 9 var nu att göra något som var bättre än "the 10th edition", men som samtidigt skulle se ut på traditionellt Unix-system. Därav kommer det sig att många vanliga Unix-verktyg är återimplementerade i Plan 9 och en Unix-hacker känner snabbt igen sig i Plan 9. Plan 9 skulle också bli ett distribuerat operativsystem. Utveckling ---------- Man utvecklade ursprungligen Plan 9 för datorer med processor <= 68020 och <= 8 MB komihåg. Därför är kärnan väldigt liten, ungefär 60 KB för en 68020 -- med tjänster för filsystem inkluderat! Då kärnan är väldigt liten har man valt att låta varje processor ha en kopia av kärnan. Det finns inga lättviktsprocesser och inga riktiga trådar i Plan 9. Organisering ------------ I ett Plan 9 system finns det tre entiteter: o Terminaler o CPU-servrar o Filservrar Terminalerna är typiskt ganska enkla, men dock mer avancerade än en vanlig textterminal. De ligger någonstans mellan en arbetsstation och en vanlig terminal: de kör editorer och fönstersystem men inga tunga tillämpningar. CPU-servrarna används för mer krävande tilämpningar, såsom kompileringar. Filservrarna har alla filer och program. Kommunikationslänken mellan CPU- och filservrar är typiskt ganska snabb. På filservrarna körs inga användarprogram alls. Det går visserligen att logga in på en filserver men endast på en console. På så vis når man en fysisk säkerhet för filservern. Ytterligare en fördel är att backupper kan tas på alla användares filer, något som kanske inte alltid händer ifall man har möjlighet att spara filer på sin egen dator eller arbetsstation. Allt är filer ------------- I Plan 9 är allt filer. o Inloggade användare är filer o Processer är filer (jfr procfs som finns under bl.a. Linux och somliga BSD-varianter). En debugger blir enkel att skriva genom att man kan titta i processens minne genom att öppna en fil. Man kan då även debugga processer på andra maskiner genom att exportera processen, d.v.s. filen. o Varje fönster är en fil. Man kan rita i fönstret genom att skriva kommandon till fönsterfilen. Fönsterfiler kan monteras över nätverket och vips så har man ett distribuerat fönstersystem! Detta gör att protokollet mot fönstersystemet blir mycket enklare och det går mycket snabbare att visa fönster över en långsam förbindelse. Jämför t.ex. med att köra X över ppp med ett 14.4-modem. Olikt Unix finns det ingen begränsning på vilka filer man kan exportera. Det är fritt fram att exportera och montera även filer i biblioteket /dev. o Nätverket är filer. På så vis blir nätverkstyp helt bortabstraherat. Man begär helt enkelt en tillförlitlig förbindelse till en dator med någon viss adress och får en fil man kan skriva till och läsa från, t.ex. /net/tcp/17 eller /net/il/18 eller /net/novell/19 ("Gud förbjude!", som Mikael sade). o FTP innebär helt enkelt att man monterar något filsystem någonstans och sedan kan man navigera runt i det med cd och ls precis som vanligt. Ungefär som ange-ftp i emacs. Det fungerar på samma sätt med vanliga band. Det skulle inte gå att låta alla datorer skulle montera alla andras filsystem. Därför kan man låta varje process få en egen namnrymd. Man kan tala om vilka filer som ska synas, var roten ligger o.s.v. Processens namnrymd ärvs av alla barn till processen. Man kan även montera en union av olika filsystem på samma monteringsplats i biblioteksträdet och på något sätt specificera en prioritetsordning mellan dem. Säkerhet -------- Säkerheten i Plan 9 fungerar ungefär som med kerberos. Man skriver lösenordet endast en gång. Därefter får man biljetter av en signaturserver för att kunna logga in på andra ställen. På så vis skickas aldrig några lösenord i klartext genom nätverket, till skillnad från t.ex. en vanlig telnet under Unix. Endast vid ftp skickas lösenordet oskyddat över nätet, men det finns ett par olika lösningar på det problemet. Naturligtvis skickas lösenordet i klartext också när man via gateways tar sig till externa system, som t.ex. kör Unix. Då använder man ju vanligen en telnetsession av klassiskt snitt om inte annat ordnats. Verktyg ------- Plan 9 finns att ladda hem från nätet (se nedan). Här är några av de verktyg och program som följer med: o 8 ½. Fönstersystemet. Det är ganska spartanskt och ganska likt mgr. Filmkännare känner genast igen att 8 ½ är en Fellinifilm precis som namnet på operativsystemet anspelar på en annan film. Någon person som var närvarande från Skövde via ett videokonferensssytem påpekade att likheten med mgr är kanske inte så konstig om man betänker att mgr är skrivet av Bellcore som senare, efter företagsdelning, blev bl.a. Bell Laboratories som ju har skrivit 8 ½. o Acme. Ett verktyg som är filebrowser, editor och nästan emacs i ett. Texten i Acme kan användas på olika sätt; som filnamn, som kommando, som text. Musknapparna (en Plan 9-mus har alltid 3 knappar) har här en mängd olika funktioner beroende på vilken knapp man trycker på och vilken omgivning som gäller. På så vis kan man öppna en fil genom att klicka på ett filnamnet med en viss knapp medan samma knapp gör något annat med en text. När man så klickar på felutskrift från make öppnar man den fil som innehåller felet på den raden som felet är på! Och detta får man "på köpet", eftersom det slumpar sig så, att utdatat från kompilatorn är en korrekt adress till en rad i en fil, t.ex. foo.c:17. Naturligtvis öppnas inte filen om den redan är öppen. Då placeras i stället muspekaren i rätt fönster. o Swap. Swappern följer inte med distributionen som man får från nätet. Eftersom Plan 9 är minnessnålt behövs den för det mesta inte, utom då man kör Mothra. o Mothra. En spartansk WWW-bläddrare som äter minne och kan visa bilder. Markören blir en mediterande figur i lotusställning och namnet anspelar på meditation och väntan, en inte helt ovanlig företeelse då man surfar på nätet. o Alef. Alef är ett C-likt, lite objektorienterat språk för Plan 9. Det kan hantera parallella "nästantrådar". I Plan 9 skriver man inte fönsterprogram genom att ha en eventloop. Istället har man en tråd om för varje event som kan komma. o mk. Make. o rc. Skalet, mer C än vad csh någonsin varit! Det finns även ett skal som heter es. Distributionen -------------- Bell har valt att göra likadant som med Unix (vilket är dumt, säger Mikael). De säljer inte Plan 9. Istället litar de på att "någon annan" ska göra det. Precis som med Unix kan man bara köpa källkodslicenser för dyra pengar från AT&T. Man köpa källkoden på en CD för $350. Den finns för en mängd olika arkitekturer såsom: o Sparc Station 2, ELC, SLC, IPC, 10/xx. (Övriga är inte testade.) o Motorola 68020 -- 040 o NeXT 68040 o GNOT (Bells egna terminaler som inte är marknadsförda kommersiellt) och AT&T:s egen Hobbit-CPU. o PC >= 386 o Mips Magnum o SGI IRIS 4d-servrar och SGI IRIS Indigo. Om man köpt källkodsdistibutionen får man använda den privat eller inom organisationen för forskning och utbildning. Vad man inte får göra är att sälja något program som man länkat med ett Plan 9-bibliotek eller som överhuvudtaget är utvecklat i Plan 9. Det går heller inte att släppa källkod man själv skrivit som litar på att det finns en Plan 9-miljö att kompilera i till andra än licensägare utan att bryta mot lagen. Vill man utveckla program kommerciellt får man köpa Plan 9-källkoden för $200 000. Avsikten är att AT&T ska sälja till storföretag som sedan kan sälja användarlicenser av Plan 9 för ett betydligt lägre pris. Frågor under föredraget ----------------------- Q: Användare i filsystemet... hur fungerar det? A: who använder det, (who finns inte med i demodistributionen). Q: Finns det fler verktyg i demodistributionen? Kompilatorer? A: Det finns C, Alef, assembler, länkare (förståss) och två debuggrar: db och acid. Q: Hur lätt är det att porta Unixprogram? A: Om programmet följer POSIX-standarden ska det vara enkelt att porta. Det finns även BSD-bibliotek med t.ex. sockets som man kan länka med. Demo ---- Härvid följde en demonstration av Plan 9 på den dator som Mikael tagit med sig. Han startade fönstersystemet, ändrade lite i namnrymden för en process så att den trodde att något visst fönster var /dev/cons och startade fönstersystemet på nytt i det fönstret. Han demostrerade även Acme och datorn lämnades sedan till nyfikna åskådare. För den som vill prova hur fönsterhanteraren i Plan 9 känns så finns en sådan på Lysator som man kan köra på X-windows. (/usr/local/bin/9wm) Demodistributionen ------------------ En gratis demodistribution för PC finns på ftp://plan9.att.com/. (4 diskar) Prova även http://plan9.att.com/. Mikael Cardell kan nås på mkc@bull.se. Ture Pålsson påpekade att man måste vara lite försiktig när man ska installera den ifall man kör Linux. Det är viktigt att den första partitionen på hårddisken är en DOS-partition. I annat fall kan installationsprogrammet glatt skriva över Linuxpartitionen. Läs mer om problemen här. Det rekommenderas varmt att ta en backup på disken innan du börjar leka. Läs för övrigt noga igenom install.html och errata.html före installationen. "Intrycket av det här är att det är så kraftfullt att det är livsfarligt", tyckte Daniel Johansson efter föredraget. Nedtecknat av Tomas Abrahamsson , som gärna tar emot rättelser och förbättringsförslag.