Plan 9

A Unix/Linux szerverek üzemeltetése wikiből
(Változatok közti eltérés)
1. sor: 1. sor:
A Plan 9 from Bell Labs - röviden Plan 9 - kezdetben egy kísérleti operációs rendszer volt, melyet a UNIX folytatásának szántak. A Unix alapvető filozófiáját viszi tovább utópisztikus szintekre. Nevét Ed Wood Plan 9 from Outer Space című sci-fi filmjéről kapta. A Plan9 kabalafigurája, Glenda is egy Ed Wood filmből származik. A rendszert kutatók és önkéntesek máig fejlesztik, rendszeresen jönnek ki új verziók. Naprakészségét mi sem támasztja alá jobban annál, hogy már a népszerű Raspberry PI platformot is támogatja. Unix és Linux kompatibilitási modulokat írnak hozzá, fejlesztik a hardvertámogatását, illetve folyamatosan kerülnek át belőle ötletek népszerűbb operációs rendszerekbe.
+
A Plan 9 from Bell Labs - röviden Plan 9 - kezdetben egy kísérleti operációs rendszer volt, melyet a UNIX folytatásának szántak. A Unix alapvető filozófiáját viszi tovább utópisztikus szintekre. Nevét Ed Wood Plan 9 from Outer Space című sci-fi filmjéről kapta. A Plan 9 kabalafigurája, Glenda is egy Ed Wood filmből származik. A rendszert kutatók és önkéntesek máig fejlesztik, rendszeresen jönnek ki új verziók. Naprakészségét mi sem támasztja alá jobban annál, hogy már a népszerű Raspberry PI platformot is támogatja. Unix és Linux kompatibilitási modulokat írnak hozzá, fejlesztik a hardvertámogatását, illetve folyamatosan kerülnek át belőle ötletek népszerűbb operációs rendszerekbe.
   
 
== Története ==
 
== Története ==
7. sor: 7. sor:
 
== Alapvető irányelvek ==
 
== Alapvető irányelvek ==
   
A Plan9-et úgy tervezték, hogy legyen “unixabb a Unixnál”, tehát a Unix elveit fejlesztették tovább. A visszafelé kompatibilitást nem tartották szem előtt, sem a korábbi konvenciókat, csak az elveik alapján folyt a tervezés. A következőben az Eric S Raymond - The Art of Unix Programming című könyvében található alapvető unix filozófiai szabályai közül hozok néhány példát.
+
A Plan 9-et úgy tervezték, hogy legyen “unixabb a Unixnál”, tehát a Unix elveit fejlesztették tovább. A visszafelé kompatibilitást nem tartották szem előtt, sem a korábbi konvenciókat, csak az elveik alapján folyt a tervezés. A következőben az Eric S Raymond - The Art of Unix Programming című könyvében található alapvető Unix filozófiai szabályai közül hozok néhány példát.
   
 
=== Minden objektum fájl vagy fáljrendszer ===
 
=== Minden objektum fájl vagy fáljrendszer ===
15. sor: 15. sor:
 
* Rule of Transparency: Design for visibility to make inspection and debugging easier.
 
* Rule of Transparency: Design for visibility to make inspection and debugging easier.
   
Plan9-ben fájlokon keresztül lehet elérni a rendszer összes funkcióját, jelenthetnek ablakokat, hálózati kapcsolatokat, processzeket és bármi mást, amit a rendszerben el lehet érni. A fájlokat névtereken keresztül lehet elérni. Egy névtérbe több helyről lehet fájlokat gyűjteni, létre lehet hozni mappák unióját(union directory). A processzeknek saját névtereik vannak, melyekben átlátszóan történik a távoli és helyi erőforrások elérése. A kernel processzenként külön mount táblát is tarthat fenn, így minden processz saját névtérrel/fájlrendszerrel dolgozhat. A felhasználó így egyszerre dolgozhat olyan programokkal, melyek más fájlrendszert látnak, így akár chroot szerű sandboxokat is létre lehet hozni a processzeknek.
+
Plan 9-ben fájlokon keresztül lehet elérni a rendszer összes funkcióját, jelenthetnek ablakokat, hálózati kapcsolatokat, processzeket és bármi mást, amit a rendszerben el lehet érni. A fájlokat névtereken keresztül lehet elérni. Egy névtérbe több helyről lehet fájlokat gyűjteni, létre lehet hozni mappák unióját(union directory). A processzeknek saját névtereik vannak, melyekben átlátszóan történik a távoli és helyi erőforrások elérése. A kernel processzenként külön mount táblát is tarthat fenn, így minden processz saját névtérrel/fájlrendszerrel dolgozhat. A felhasználó így egyszerre dolgozhat olyan programokkal, melyek más fájlrendszert látnak, így akár chroot szerű sandboxokat is létre lehet hozni a processzeknek.
   
 
=== 9P (9P2000) ===
 
=== 9P (9P2000) ===
25. sor: 25. sor:
 
*Rule of Representation: Fold knowledge into data so program logic can be stupid and robust.[4]
 
*Rule of Representation: Fold knowledge into data so program logic can be stupid and robust.[4]
   
A 9P - és az újabb verziója a 9P2000 - hálózati protokoll, melyet a Plan9 komponenseinek összekapcsolására hoztak létre. Ezzel csökkentették a Plan9-ben az API-k számát, mivel a plan9 összes lehetséges interfészt 9P-ben implementálták. A protokoll szerver-kliens alapon működik, processzeket, programokat és adatot köt össze, illetve a így kötődnek a programok a felhasználói felülethez is. Mivel hálózati protokoll, transzparansen lehet a szerver és a kliens más gépen, így téve a plan9-t grid operációs rendszerré. A programok nem használhatnak socketeket és ioctl hívásokat. Az eszközmeghajtóknak is fájlként van implementálva az interfészük, így a 9P protokollon keresztül elérhetők, és megoszthatók, akár a hálózatban is. Ezen irányelvek következményeként a rendszerben szinte mindent el lehet végezni ls, cat, grep, cp, rm és a shell műveleteivel, anélkül, hogy tudnánk az adott erőforrásról, hogy melyik gépen van.
+
A 9P - és az újabb verziója a 9P2000 - hálózati protokoll, melyet a Plan 9 komponenseinek összekapcsolására hoztak létre. Ezzel csökkentették a Plan 9-ben az API-k számát, mivel a Plan 9 összes lehetséges interfészt 9P-ben implementálták. A protokoll szerver-kliens alapon működik, processzeket, programokat és adatot köt össze, illetve a így kötődnek a programok a felhasználói felülethez is. Mivel hálózati protokoll, transzparensen lehet a szerver és a kliens más gépen, így téve a Plan 9-t grid operációs rendszerré. A programok nem használhatnak socketeket és ioctl hívásokat. Az eszközmeghajtóknak is fájlként van implementálva az interfészük, így a 9P protokollon keresztül elérhetők, és megoszthatók, akár a hálózatban is. Ezen irányelvek következményeként a rendszerben szinte mindent el lehet végezni ls, cat, grep, cp, rm és a shell műveleteivel, anélkül, hogy tudnánk az adott erőforrásról, hogy melyik gépen van.
   
 
=== /proc ===
 
=== /proc ===
44. sor: 44. sor:
 
=== Az alapelvek felhasználása ===
 
=== Az alapelvek felhasználása ===
   
Az említett alapelvek betartása nem feltétlenül jelent korlátozást, hiszen egyeszerűbb, atomibb elemekből sokkal könnyebben építhetünk bonyolultabb dolgokat, illetve bonyolultabb dolgok valósíthatók meg így egyszerűbben.
+
Az említett alapelvek betartása nem feltétlenül jelent korlátozást, hiszen egyszerűbb, atomibb elemekből sokkal könnyebben építhetünk bonyolultabb dolgokat, illetve bonyolultabb dolgok valósíthatók meg így egyszerűbben.
Ha például egy Plan9-et futtató gépnek van internet elérése, más gépekkel pedig egy hálózatban van, akkor azokon a gépeken 9P protokoll segítségével union directory-t csinálunk a /net fájlrendszereikből, így lehetőség nyíilik új kapcsolatokat nyitni arról a gépről az internet felé. Ezzel a megoldással NAT-tal ekvivalens működést valósítunk meg. Nagyon különleges, hogy a hálózati rétegek kapcsolata itt is fájl szintű, és transzparansen működik, így olyan a NAT-oló gépen kapcsolatot nyitni, mintha lokális gépen lenne. Ha például az interneten keresztül több gépet kapcsolunk össze a biztonságosá tett 9P protokolllal, és a /net fájlrendszereket Union fájlrendszerként összevonjuk, akkor VPN szerű működést valósítunk meg. A /proc fájlrendszer közösítésével elosztott számítási felhőt lehet létrehozni. A lehetőségek száma korlátlan.
+
Ha például egy Plan 9-et futtató gépnek van internet elérése, más gépekkel pedig egy hálózatban van, akkor azokon a gépeken 9P protokoll segítségével union directory-t csinálunk a /net fájlrendszereikből, így lehetőség nyilik új kapcsolatokat nyitni arról a gépről az internet felé. Ezzel a megoldással NAT-tal ekvivalens működést valósítunk meg. Nagyon különleges, hogy a hálózati rétegek kapcsolata itt is fájl szintű, és transzparansen működik, így olyan a NAT-oló gépen kapcsolatot nyitni, mintha lokális gépen lenne. Ha például az interneten keresztül több gépet kapcsolunk össze a biztonságossá tett 9P protokollal, és a /net fájlrendszereket Union fájlrendszerként összevonjuk, akkor VPN szerű működést valósítunk meg. A /proc fájlrendszer közösítésével elosztott számítási felhőt lehet létrehozni. A lehetőségek száma korlátlan.
   
 
== Felhasználói felület ==
 
== Felhasználói felület ==
   
A unix-al ellentétben a Plan9 grafikus felületre van tervezve. Rendelkezik csak szöveges terminállal is, de a funkcionalitása lényegesen gyengébb. A grafikus felület a rio nevű ablakkezelőt használja. Az ablakok kezdetben az rc nevű shell-t futtatják, a később itt futtatott grafikus programok átveszik az ablakot.
+
A Unix-al ellentétben a Plan 9 grafikus felületre van tervezve. Rendelkezik csak szöveges terminállal is, de a funkcionalitása lényegesen gyengébb. A grafikus felület a rio nevű ablakkezelőt használja. Az ablakok kezdetben az rc nevű shell-t futtatják, a később itt futtatott grafikus programok átveszik az ablakot.
 
;rc
 
;rc
 
:A Plan 9 parancssora, a UNIX 10-es verziójából származik. Hasonlít a bourne shellre, de egyszerűbb szintaxissal.
 
:A Plan 9 parancssora, a UNIX 10-es verziójából származik. Hasonlít a bourne shellre, de egyszerűbb szintaxissal.
61. sor: 61. sor:
 
Számos olyan programmal és parancssori elemmel rendelkezik, amikkel a UNIX is, grafikus felületén azonban egészen másképp működnek a dolgok. A rio sajátosságai miatt nagyon érdekes felhasználói szoftverek alakultak ki. A programok a 9P protokollon kommunikálnak, gombok nem léteznek, a menük csak szövegesek lehetnek, az ablakok minden részébe lehet írni. Ezek miatt egészen másképp működik egy ilyen rendszer, mint azt megszokhattuk.
 
Számos olyan programmal és parancssori elemmel rendelkezik, amikkel a UNIX is, grafikus felületén azonban egészen másképp működnek a dolgok. A rio sajátosságai miatt nagyon érdekes felhasználói szoftverek alakultak ki. A programok a 9P protokollon kommunikálnak, gombok nem léteznek, a menük csak szövegesek lehetnek, az ablakok minden részébe lehet írni. Ezek miatt egészen másképp működik egy ilyen rendszer, mint azt megszokhattuk.
 
;sam
 
;sam
:Egy többfájlos struktúrális regurális kifejezés alapú szövegszerkesztő program. Használata megköveteli az aktív háromgombos egérhasználatot. Rendelkezik egy egyszerű ám erőteljes, részben az ed nevű szövegszerkesztőtől örökölt parancsnyelvvel, ami nagyban épít a reguláris kifejezésekre.
+
:Egy többfájlos strukturális reguláris kifejezés alapú szövegszerkesztő program. Használata megköveteli az aktív háromgombos egérhasználatot. Rendelkezik egy egyszerű ám erőteljes, részben az ed nevű szövegszerkesztőtől örökölt parancsnyelvvel, ami nagyban épít a reguláris kifejezésekre.
 
;acme
 
;acme
:Egy szövegszerkesztő, egy fájlkezelő és egy ablakkezelő program együttvéve. A program ablakán belül egy belső ablakkezelő működik, és fájlrendszer és fájltartalom böngésző ablakokat lehet nyitni, és menedzselni őket. Ahogy a többi plan9 alkalmazás, ez is igényli a 3 gombos egér aktív használatát. Például a menügombok itt a középső gombbal működnek. Mivel azonban nincsenek felületi elemek, úgy van megoldva, hogy bármilyen futtatható kifejezésre lehet a középső gombbal kattintani, az le fog futni, akkor is ha egy fájl tartalma. A jobb gombbal pedig meg lehet nyitni egy fájlt, akkor is ha egy fájlban szerepelt a fájlnév, vagy akár bárhová leírtuk, hiszen bárhova lehet írni az ablakokban.
+
:Egy szövegszerkesztő, egy fájlkezelő és egy ablakkezelő program együttvéve. A program ablakán belül egy belső ablakkezelő működik, és fájlrendszer és fájltartalom böngésző ablakokat lehet nyitni, és menedzselni őket. Ahogy a többi Plan 9 alkalmazás, ez is igényli a 3 gombos egér aktív használatát. Például a menügombok itt a középső gombbal működnek. Mivel azonban nincsenek felületi elemek, úgy van megoldva, hogy bármilyen futtatható kifejezésre lehet a középső gombbal kattintani, az le fog futni, akkor is ha egy fájl tartalma. A jobb gombbal pedig meg lehet nyitni egy fájlt, akkor is ha egy fájlban szerepelt a fájlnév, vagy akár bárhová leírtuk, hiszen bárhova lehet írni az ablakokban.
   
 
== Tárolás ==
 
== Tárolás ==
   
 
;Fossil
 
;Fossil
:A Plan9 fájlrendszere. Természtesen 9P protokollon keresztül lehet elérni a fájlrendszer tartalmát, és így a gépek számára átlátszó, hogy helyi vagy távoli tárat érnek el éppen. Emiatt a Fossil hálózati fájlrendszer(NAS). A fossil daemonként fut a user space-ben. A fájlrendszerben lehetséges pillanatképeket készíteni, és saját fájljaikról a felhasználók is készíthetnek snapshotot, és vissza is tölthetik azt.
+
:A Plan 9 fájlrendszere. Természetesen 9P protokollon keresztül lehet elérni a fájlrendszer tartalmát, és így a gépek számára átlátszó, hogy helyi vagy távoli tárat érnek el éppen. Emiatt a Fossil hálózati fájlrendszer(NAS). A Fossil daemonként fut a userspace-ben. A fájlrendszerben lehetséges pillanatképeket készíteni, és saját fájljaikról a felhasználók is készíthetnek snapshotot, és vissza is tölthetik azt.
 
;Venti
 
;Venti
:A venti blokk alapú tárolórendszer a Plan 9 operációs rendszerhez. 160 bites SHA-1 hasheli a tartalmat blokkonként, és ez alapján helyezi el a táron. Ezzel csökkenti a töredezettséget, és a duplikációt is. Ha a Fossil fájlszintű rendszert a Venti blockszintű megoldása felett használjuk, akkor lehetőség nyílik permanens snapshotok készítésére. A venti nem 9P protokollon működik, hiszen az fájl alapú. Egy TCP alapú RPC megoldást használ, így a venti egy hálózati tárolórendszer(SAN).
+
:A Venti blokk alapú tárolórendszer a Plan 9 operációs rendszerhez. 160 bites SHA-1 hasheli a tartalmat blokkonként, és ez alapján helyezi el a táron. Ezzel csökkenti a töredezettséget, és a duplikációt is. Ha a Fossil fájlszintű rendszert a Venti blockszintű megoldása felett használjuk, akkor lehetőség nyílik permanens snapshotok készítésére. A Venti nem 9P protokollon működik, hiszen az fájl alapú. Egy TCP alapú RPC megoldást használ, így a Venti egy hálózati tárolórendszer(SAN).
 
;replica
 
;replica
 
:Egy 9P alapú adatreplikációs rendszer. A Fossil fájlrendszer logjai alapján képes szinkronba hozni a fájlrendszereket.
 
:Egy 9P alapú adatreplikációs rendszer. A Fossil fájlrendszer logjai alapján képes szinkronba hozni a fájlrendszereket.
   
== A plan9 kipróbálása ==
+
== A Plan 9 kipróbálása ==
   
A projekt weboldaláról letölthető cd indítható live cd és install üzemmódban is. A tesztet az nyílt forrású kvm virtualizácós szoftverrel végeztem, de ennek használatára nem térek ki, mert nem állítottam be semmi specifikusat rajta. Más virtualizációs szoftverrel is jól működik.
+
A projekt weboldaláról letölthető cd indítható live cd és install üzemmódban is. A tesztet az nyílt forrású kvm virtualizációs szoftverrel végeztem, de ennek használatára nem térek ki, mert nem állítottam be semmi specifikusat rajta. Más virtualizációs szoftverrel is jól működik.
   
 
=== Installálás ===
 
=== Installálás ===
   
A plan9 legfrissebb iso-ja letölthető a projekt weboldaláról:
+
A Plan 9 legfrissebb iso-ja letölthető a projekt weboldaláról:
 
http://plan9.bell-labs.com/plan9/download.html
 
http://plan9.bell-labs.com/plan9/download.html
   
A projekt weboldalán található leírás alapján nagyon egyszerűen fel lehet installálni a rendszert. Az installer közöl minden lényeges információt, és csak néhány olyan opció van, ahol nem felel meg az alapbeállítás a céljainknak.
+
A projekt weboldalán található leírás alapján nagyon egyszerűen fel lehet installálni a rendszert. A telepítő közöl minden lényeges információt, és csak néhány olyan opció van, ahol nem felel meg az alapbeállítás a céljainknak.
   
 
==== A telepítő elindítása ====
 
==== A telepítő elindítása ====
   
A telepítés kiválasztása után megkérdezi az installer futtatásához szükséges beállításokat. Nekem problémáim akadtak a grafikus vezérlő beállításával kvm alatt, ezért az egyszerűbb vesa vezérlőt állítottam be xga helyett.
+
A telepítés kiválasztása után megkérdezi a telepítő futtatásához szükséges beállításokat. Nekem problémáim akadtak a grafikus vezérlő beállításával kvm alatt, ezért az egyszerűbb vesa vezérlőt állítottam be xga helyett.
   
 
Ha bejött a grafikus felület, 3 ablakot látunk. A felső nagy konzolban fogunk dolgozni. A fel le nyilakkal egyszerű görgetni az ablakban. Az ablakban bárhova lehet írni, ami elsőre nagyon szokatlan érzés. Mindig az aktív sorra kell állítani a kurzort, ami többnyire az utolsó sor, így a lefelé nyíllal elérhetjük.
 
Ha bejött a grafikus felület, 3 ablakot látunk. A felső nagy konzolban fogunk dolgozni. A fel le nyilakkal egyszerű görgetni az ablakban. Az ablakban bárhova lehet írni, ami elsőre nagyon szokatlan érzés. Mindig az aktív sorra kell állítani a kurzort, ami többnyire az utolsó sor, így a lefelé nyíllal elérhetjük.
93. sor: 93. sor:
 
Egy enter megnyomása elkezdhetjük a telepítés első fázisát. Az első ahol nincs alapbeállítás, az installálás célját kérdezi. Csak be kell írni az eszköz nevét a leírása alapján a listából, nálam sdC0. A második kérdés, hogy mbr-t is kérek rá.
 
Egy enter megnyomása elkezdhetjük a telepítés első fázisát. Az első ahol nincs alapbeállítás, az installálás célját kérdezi. Csak be kell írni az eszköz nevét a leírása alapján a listából, nálam sdC0. A második kérdés, hogy mbr-t is kérek rá.
   
Ezután a particionálás következik, mivel üres virtuális lemezt használok, megfelelnek az alapbeállítások, ez az installer szövege alapján w, majd q parancsokkal tehető meg. A plan9 x86-on úgy oldotta meg a particionálást, hogy egy hagyományos dos particióba kerül telepítésre, és itt létrehozza a saját particiós tábláját( a solarishoz hasonlóan). Mindkét particionálásnál az alapbeállításokat használom. A lokális médiáról telepítem. Később lesz szó a rendszer frissítéséről. Kiválasztom a cdromot, mint adatforrást. Kapunk egy shell-t, hogy megtaláljuk a telepítés forrását. Ha az install cd-ről telepítjük, akkor elég kilépni egy exit-tel.
+
Ezután a particionálás következik, mivel üres virtuális lemezt használok, megfelelnek az alapbeállítások, ez a telepítő szövege alapján w, majd q parancsokkal tehető meg. A Plan 9 x86-on úgy oldotta meg a particionálást, hogy egy hagyományos DOS particióba kerül telepítésre, és itt létrehozza a saját particiós tábláját( a solarishoz hasonlóan). Mindkét particionálásnál az alapbeállításokat használom. A lokális médiáról telepítem. Később lesz szó a rendszer frissítéséről. Kiválasztom a cdromot, mint adatforrást. Kapunk egy shell-t, hogy megtaláljuk a telepítés forrását. Ha az install cd-ről telepítjük, akkor elég kilépni egy exit-tel.
A bootolás típusának a plan9-t érdemes használni.
+
A rendszerbetöltő típusának a plan9-t érdemes használni.
   
 
==== Az első indítás ====
 
==== Az első indítás ====
   
A rendszer indításkor megkérdezi, melyik médiáról akarunk rendszert betölteni, alapbeállításon megfelel. Lépjünk be glenda felhasználói névvel. Ez a kabalafigurájuk neve, ezért kitüntetett szerepet képvisel: egy előre telepített felhasználó, és bejelentkezés után hasznos programokat és readme-ket tesz a kijelzőre, a könnyebb kezdet érdekében. Ezeket érdemes elolvasni, mert a plan9 gui kezelése annyira szokatlan, hogy rendszeresen olyan érzés, mintha hibásan működne, pedig csak nagyon különleges. A gui használatát nem mutatom be, ezért is érdemes legalább a grafikus konzol használatát elolvasni.
+
A rendszer indításkor megkérdezi, melyik médiáról akarunk rendszert betölteni, alapbeállításon megfelel. Lépjünk be glenda felhasználói névvel. Ez a kabalafigurájuk neve, ezért kitüntetett szerepet képvisel: egy előre telepített felhasználó, és bejelentkezés után hasznos programokat és readme-ket tesz a kijelzőre, a könnyebb kezdet érdekében. Ezeket érdemes elolvasni, mert a Plan 9 GUI kezelése annyira szokatlan, hogy rendszeresen olyan érzés, mintha hibásan működne, pedig csak nagyon különleges. A gui használatát nem mutatom be, ezért is érdemes legalább a grafikus konzol használatát elolvasni.
   
 
==== Grafikai beállítások ====
 
==== Grafikai beállítások ====
121. sor: 121. sor:
 
=== Hálózat beállítása ===
 
=== Hálózat beállítása ===
   
Számos hálózati beállítása van, de ezeket most nem fogjuk használni. A plan9 igényli, hogy a dhcp szerver a megfelelő dhcp-domain és domain-search attribútumokat küldjön, tehát hogy tudja a saját fqdn-jét.. Engedélyezzük a /rc/bin/termrc nevű fájlban. Ez a linuxban található rc-nek felel meg, csak a plan9 szellemiségével összangban sokkal egyszerűbben. A termrc akkor fut le, ha terminált indítunk. Ha cpu szervert indítanánk, akkor a cpurc futna le. Ki kell venni a kommenteket a megfelelő sorok elől:
+
Számos hálózati beállítása van, de ezeket most nem fogjuk használni. A Plan 9 igényli, hogy a dhcp szerver a megfelelő dhcp-domain és domain-search attribútumokat küldjön, tehát hogy tudja a saját fqdn-jét.. Engedélyezzük a /rc/bin/termrc nevű fájlban. Ez a Linuxban található rc-nek felel meg, csak a Plan 9 szellemiségével összangban sokkal egyszerűbben. A termrc akkor fut le, ha terminált indítunk. Ha cpu szervert indítanánk, akkor a cpurc futna le. Ki kell venni a kommenteket a megfelelő sorok elől:
   
 
if(! test -e /net/ipifc/0/ctl)
 
if(! test -e /net/ipifc/0/ctl)
131. sor: 131. sor:
 
==== Rendszer frissítése ====
 
==== Rendszer frissítése ====
   
Nagyon egyszerűen zajlik, a következő parancs kiadására a plan9 az aktuális legfrissebb rendszert tartalmazó szerverrel szinkronizál.
+
Nagyon egyszerűen zajlik, a következő parancs kiadására a Plan 9 az aktuális legfrissebb rendszert tartalmazó szerverrel szinkronizál.
   
 
replica/pull -v /dist/replica/network
 
replica/pull -v /dist/replica/network
149. sor: 149. sor:
 
3. Amikor a felhasználó bejelentkezik először, futtatnia kell ezt: /sys/lib/newuser, mert kezdetben gui-t sem kap, amíg ezt nem futtatja.
 
3. Amikor a felhasználó bejelentkezik először, futtatnia kell ezt: /sys/lib/newuser, mert kezdetben gui-t sem kap, amíg ezt nem futtatja.
   
Lépjünk be a fossil konzoljára
+
Lépjünk be a Fossil konzoljára
   
 
con -l /srv/fscons
 
con -l /srv/fscons

A lap 2012. december 10., 08:35-kori változata

A Plan 9 from Bell Labs - röviden Plan 9 - kezdetben egy kísérleti operációs rendszer volt, melyet a UNIX folytatásának szántak. A Unix alapvető filozófiáját viszi tovább utópisztikus szintekre. Nevét Ed Wood Plan 9 from Outer Space című sci-fi filmjéről kapta. A Plan 9 kabalafigurája, Glenda is egy Ed Wood filmből származik. A rendszert kutatók és önkéntesek máig fejlesztik, rendszeresen jönnek ki új verziók. Naprakészségét mi sem támasztja alá jobban annál, hogy már a népszerű Raspberry PI platformot is támogatja. Unix és Linux kompatibilitási modulokat írnak hozzá, fejlesztik a hardvertámogatását, illetve folyamatosan kerülnek át belőle ötletek népszerűbb operációs rendszerekbe.

Tartalomjegyzék

1 Története

Ugyanaz a Computing Science Research Center at Bell Labs nevű csoport fejlesztette eredetileg, akik a Unixot és a C-t kifejlesztették, többek között Ken Thompson, Dennis Ritchie, Brian Kernighan és Bjarne Stroustrup. A fejlesztés a 80-as évek közepén kezdődött, és 92-re készült el az első kiadás egyetemek számára. Később megélt egy kereskedelmi kiadást, a további verziókat pedig nyílt forrással adták ki. Az utolsó verziót 2002-ben adták ki, de azóta is fejlesztik, és jönnek hozzá frissítések.

2 Alapvető irányelvek

A Plan 9-et úgy tervezték, hogy legyen “unixabb a Unixnál”, tehát a Unix elveit fejlesztették tovább. A visszafelé kompatibilitást nem tartották szem előtt, sem a korábbi konvenciókat, csak az elveik alapján folyt a tervezés. A következőben az Eric S Raymond - The Art of Unix Programming című könyvében található alapvető Unix filozófiai szabályai közül hozok néhány példát.

2.1 Minden objektum fájl vagy fáljrendszer

  • Rule of Separation: Separate policy from mechanism; separate interfaces from engines.
  • Rule of Simplicity: Design for simplicity; add complexity only where you must.
  • Rule of Transparency: Design for visibility to make inspection and debugging easier.

Plan 9-ben fájlokon keresztül lehet elérni a rendszer összes funkcióját, jelenthetnek ablakokat, hálózati kapcsolatokat, processzeket és bármi mást, amit a rendszerben el lehet érni. A fájlokat névtereken keresztül lehet elérni. Egy névtérbe több helyről lehet fájlokat gyűjteni, létre lehet hozni mappák unióját(union directory). A processzeknek saját névtereik vannak, melyekben átlátszóan történik a távoli és helyi erőforrások elérése. A kernel processzenként külön mount táblát is tarthat fenn, így minden processz saját névtérrel/fájlrendszerrel dolgozhat. A felhasználó így egyszerre dolgozhat olyan programokkal, melyek más fájlrendszert látnak, így akár chroot szerű sandboxokat is létre lehet hozni a processzeknek.

2.2 9P (9P2000)

  • Rule of Modularity: Write simple parts connected by clean interfaces.
  • Rule of Clarity: Clarity is better than cleverness.
  • Rule of Composition: Design programs to be connected to other programs.
  • Rule of Least Surprise: In interface design, always do the least surprising thing.
  • Rule of Representation: Fold knowledge into data so program logic can be stupid and robust.[4]

A 9P - és az újabb verziója a 9P2000 - hálózati protokoll, melyet a Plan 9 komponenseinek összekapcsolására hoztak létre. Ezzel csökkentették a Plan 9-ben az API-k számát, mivel a Plan 9 összes lehetséges interfészt 9P-ben implementálták. A protokoll szerver-kliens alapon működik, processzeket, programokat és adatot köt össze, illetve a így kötődnek a programok a felhasználói felülethez is. Mivel hálózati protokoll, transzparensen lehet a szerver és a kliens más gépen, így téve a Plan 9-t grid operációs rendszerré. A programok nem használhatnak socketeket és ioctl hívásokat. Az eszközmeghajtóknak is fájlként van implementálva az interfészük, így a 9P protokollon keresztül elérhetők, és megoszthatók, akár a hálózatban is. Ezen irányelvek következményeként a rendszerben szinte mindent el lehet végezni ls, cat, grep, cp, rm és a shell műveleteivel, anélkül, hogy tudnánk az adott erőforrásról, hogy melyik gépen van.

2.3 /proc

A proc fájlrendszeren a korábban említett elvek érvényesülnek. A processzek mappaként jelennek meg, ezekben vezérlő és információt hordozó fájlok vannak, melyeket egyszerű fájlműveletekkel lehet vezérelni. Ezzel a módszerrel nagyon megkönnyíti a processzek menedzselését, és még egy API-t megspórol. A módszer annyira bevált, hogy innen vette át később a módszert a BSD, a Solaris és a Linux is, bár nem ilyen mélységben. Jó példa a fájl szintű hozzáférésre, hogy a Plan 9 rendszerben a kill parancs nem öli meg a processzt, mivel szignált fájlműveletekkel kell küldeni. A kill parancs régi Unix felhasználók segítségére van, és csak kiírja, hogy mit kell beírni a parancssorba, hogy az általunk kijelölt szogláltatások megkapják a szignált.

2.4 /net

Rendszerhívások és ioctls-ek nélkül a hálózati réteg is fájlrendszer alapon működik, a /net fájlrendszer használatával. Vezérlő fájlokba lehet írni és olvasni, így valósul meg a hálózati kommunikáció. Külön tcp és udp mappák vannak a kapcsolatok protokoll szerinti szétválasztására. A rendszer hálózati információit az ndb nevű fájl alapú adatbázisban tárolja.

2.5 Unicode

Hogy tovább csökkentsék a rendszer komplikáltságát, a teljes rendszerben bevezették az Unicode karakterkódolást. Ken Thompson dolgozta ki az UTF-8-at, és ez lett a natív karakterkódolást a teljes rendszerben. Innen terjedt el az UTF-8 a többi operációs rendszerre is.

“Plan 9 failed simply because it fell short of being a compelling enough improvement on Unix to displace its ancestor. Compared to Plan 9, Unix creaks and clanks and has obvious rust spots, but it gets the job done well enough to hold its position. There is a lesson here for ambitious system architects: the most dangerous enemy of a better solution is an existing codebase that is just good enough.” —Eric S. Raymond

2.6 Az alapelvek felhasználása

Az említett alapelvek betartása nem feltétlenül jelent korlátozást, hiszen egyszerűbb, atomibb elemekből sokkal könnyebben építhetünk bonyolultabb dolgokat, illetve bonyolultabb dolgok valósíthatók meg így egyszerűbben. Ha például egy Plan 9-et futtató gépnek van internet elérése, más gépekkel pedig egy hálózatban van, akkor azokon a gépeken 9P protokoll segítségével union directory-t csinálunk a /net fájlrendszereikből, így lehetőség nyilik új kapcsolatokat nyitni arról a gépről az internet felé. Ezzel a megoldással NAT-tal ekvivalens működést valósítunk meg. Nagyon különleges, hogy a hálózati rétegek kapcsolata itt is fájl szintű, és transzparansen működik, így olyan a NAT-oló gépen kapcsolatot nyitni, mintha lokális gépen lenne. Ha például az interneten keresztül több gépet kapcsolunk össze a biztonságossá tett 9P protokollal, és a /net fájlrendszereket Union fájlrendszerként összevonjuk, akkor VPN szerű működést valósítunk meg. A /proc fájlrendszer közösítésével elosztott számítási felhőt lehet létrehozni. A lehetőségek száma korlátlan.

3 Felhasználói felület

A Unix-al ellentétben a Plan 9 grafikus felületre van tervezve. Rendelkezik csak szöveges terminállal is, de a funkcionalitása lényegesen gyengébb. A grafikus felület a rio nevű ablakkezelőt használja. Az ablakok kezdetben az rc nevű shell-t futtatják, a később itt futtatott grafikus programok átveszik az ablakot.

rc
A Plan 9 parancssora, a UNIX 10-es verziójából származik. Hasonlít a bourne shellre, de egyszerűbb szintaxissal.
rio
A Plan 9 ablakkezelője. Jellegzetessége, az alkalmazások számára teljesen átlátszó. Minden ablak saját namespace-ben fut, és a rio és csak egy namespace-t kap az operációs rendszertől, így nincs akadálya, hogy rio-kat ágyazzunk egymásba. Mivel a 9P protokollt használja, hálózaton keresztül is teljesen átlátszóan működtethető. Az ablakok is szövegesek, és minden sorukba lehet írni.
plumb és plumber
A plumbing mechanizmus a Plan 9 rendszerben a processzek közti kommunikációban az üzenetek kezelését és továbbítását jelenti. Természetesen az üzenetek 9P formátumúak, így a plumber egy 9P fájlszerver. A szoftverek a plumb program segítségével üzennek a plumbernek, aki továbbítja az üzeneteket.

3.1 Felhasználói programok

Számos olyan programmal és parancssori elemmel rendelkezik, amikkel a UNIX is, grafikus felületén azonban egészen másképp működnek a dolgok. A rio sajátosságai miatt nagyon érdekes felhasználói szoftverek alakultak ki. A programok a 9P protokollon kommunikálnak, gombok nem léteznek, a menük csak szövegesek lehetnek, az ablakok minden részébe lehet írni. Ezek miatt egészen másképp működik egy ilyen rendszer, mint azt megszokhattuk.

sam
Egy többfájlos strukturális reguláris kifejezés alapú szövegszerkesztő program. Használata megköveteli az aktív háromgombos egérhasználatot. Rendelkezik egy egyszerű ám erőteljes, részben az ed nevű szövegszerkesztőtől örökölt parancsnyelvvel, ami nagyban épít a reguláris kifejezésekre.
acme
Egy szövegszerkesztő, egy fájlkezelő és egy ablakkezelő program együttvéve. A program ablakán belül egy belső ablakkezelő működik, és fájlrendszer és fájltartalom böngésző ablakokat lehet nyitni, és menedzselni őket. Ahogy a többi Plan 9 alkalmazás, ez is igényli a 3 gombos egér aktív használatát. Például a menügombok itt a középső gombbal működnek. Mivel azonban nincsenek felületi elemek, úgy van megoldva, hogy bármilyen futtatható kifejezésre lehet a középső gombbal kattintani, az le fog futni, akkor is ha egy fájl tartalma. A jobb gombbal pedig meg lehet nyitni egy fájlt, akkor is ha egy fájlban szerepelt a fájlnév, vagy akár bárhová leírtuk, hiszen bárhova lehet írni az ablakokban.

4 Tárolás

Fossil
A Plan 9 fájlrendszere. Természetesen 9P protokollon keresztül lehet elérni a fájlrendszer tartalmát, és így a gépek számára átlátszó, hogy helyi vagy távoli tárat érnek el éppen. Emiatt a Fossil hálózati fájlrendszer(NAS). A Fossil daemonként fut a userspace-ben. A fájlrendszerben lehetséges pillanatképeket készíteni, és saját fájljaikról a felhasználók is készíthetnek snapshotot, és vissza is tölthetik azt.
Venti
A Venti blokk alapú tárolórendszer a Plan 9 operációs rendszerhez. 160 bites SHA-1 hasheli a tartalmat blokkonként, és ez alapján helyezi el a táron. Ezzel csökkenti a töredezettséget, és a duplikációt is. Ha a Fossil fájlszintű rendszert a Venti blockszintű megoldása felett használjuk, akkor lehetőség nyílik permanens snapshotok készítésére. A Venti nem 9P protokollon működik, hiszen az fájl alapú. Egy TCP alapú RPC megoldást használ, így a Venti egy hálózati tárolórendszer(SAN).
replica
Egy 9P alapú adatreplikációs rendszer. A Fossil fájlrendszer logjai alapján képes szinkronba hozni a fájlrendszereket.

5 A Plan 9 kipróbálása

A projekt weboldaláról letölthető cd indítható live cd és install üzemmódban is. A tesztet az nyílt forrású kvm virtualizációs szoftverrel végeztem, de ennek használatára nem térek ki, mert nem állítottam be semmi specifikusat rajta. Más virtualizációs szoftverrel is jól működik.

5.1 Installálás

A Plan 9 legfrissebb iso-ja letölthető a projekt weboldaláról: http://plan9.bell-labs.com/plan9/download.html

A projekt weboldalán található leírás alapján nagyon egyszerűen fel lehet installálni a rendszert. A telepítő közöl minden lényeges információt, és csak néhány olyan opció van, ahol nem felel meg az alapbeállítás a céljainknak.

5.1.1 A telepítő elindítása

A telepítés kiválasztása után megkérdezi a telepítő futtatásához szükséges beállításokat. Nekem problémáim akadtak a grafikus vezérlő beállításával kvm alatt, ezért az egyszerűbb vesa vezérlőt állítottam be xga helyett.

Ha bejött a grafikus felület, 3 ablakot látunk. A felső nagy konzolban fogunk dolgozni. A fel le nyilakkal egyszerű görgetni az ablakban. Az ablakban bárhova lehet írni, ami elsőre nagyon szokatlan érzés. Mindig az aktív sorra kell állítani a kurzort, ami többnyire az utolsó sor, így a lefelé nyíllal elérhetjük.

Egy enter megnyomása elkezdhetjük a telepítés első fázisát. Az első ahol nincs alapbeállítás, az installálás célját kérdezi. Csak be kell írni az eszköz nevét a leírása alapján a listából, nálam sdC0. A második kérdés, hogy mbr-t is kérek rá.

Ezután a particionálás következik, mivel üres virtuális lemezt használok, megfelelnek az alapbeállítások, ez a telepítő szövege alapján w, majd q parancsokkal tehető meg. A Plan 9 x86-on úgy oldotta meg a particionálást, hogy egy hagyományos DOS particióba kerül telepítésre, és itt létrehozza a saját particiós tábláját( a solarishoz hasonlóan). Mindkét particionálásnál az alapbeállításokat használom. A lokális médiáról telepítem. Később lesz szó a rendszer frissítéséről. Kiválasztom a cdromot, mint adatforrást. Kapunk egy shell-t, hogy megtaláljuk a telepítés forrását. Ha az install cd-ről telepítjük, akkor elég kilépni egy exit-tel. A rendszerbetöltő típusának a plan9-t érdemes használni.

5.1.2 Az első indítás

A rendszer indításkor megkérdezi, melyik médiáról akarunk rendszert betölteni, alapbeállításon megfelel. Lépjünk be glenda felhasználói névvel. Ez a kabalafigurájuk neve, ezért kitüntetett szerepet képvisel: egy előre telepített felhasználó, és bejelentkezés után hasznos programokat és readme-ket tesz a kijelzőre, a könnyebb kezdet érdekében. Ezeket érdemes elolvasni, mert a Plan 9 GUI kezelése annyira szokatlan, hogy rendszeresen olyan érzés, mintha hibásan működne, pedig csak nagyon különleges. A gui használatát nem mutatom be, ezért is érdemes legalább a grafikus konzol használatát elolvasni.

5.1.3 Grafikai beállítások

Ezen a ponton beállítjuk a rendszer felbontását. A vesa drivernél maradok, de szeretném tudni hogy miylen felbontások állnak rendelkezésemre. Az aux/vga parancs lesz szegítségemre:

http://man.cat-v.org/plan_9/8/vga

aux/vga -m vesa -p
aux/vga -l 1280x1024x16

Ha ez így megfelel, be is állíthatjuk, hogy a gép így bootoljon a továbbiakban. Ezt a plan9.ini-ben tehetjük. Indítsunk egy parancssort, például úgy, hogy az asztalon jobb egérgombot lenyomva tartjuk, rávisszük a “new” -ra, felengedtjük. Ezután a jobb egérgombbal húzunk egy területet az asztalon. Ott fog megjelenni a parancssor. A következő kód futtatásával tudjuk szerkeszteni a fájlt. Ez a fat fájlrendszeren van, mert bootáshoz kell. Emiatt át is kell váltanunk arra a particióra.

9fat:
sam /n/9fat/plan9.ini

Megjelenik a szövegszerkesztő ami két részből áll. jobb egérgomb nyomvatartásával megjelenik egy menü, a gombot felengedjük a fájl nevén, ezzek kijelöljük a szerkesztendő fájlt, és jobb egérgombbal belekattintjuk az alső ablakba. Így fent a szövegszerkesztő parancssora lesz, lent pedig a szöveg amit szerkesztünk.

A w parancs írja ki a fájl-t, a q kilép. Ha nem akarjuk menteni a változásokat, akkor kétszer kell q parancsot kiadni. Ne felejtsük el, hogy a konzol(itt a felső ablak) utolsó sorában fogad el csak parancsokat.

5.2 Hálózat beállítása

Számos hálózati beállítása van, de ezeket most nem fogjuk használni. A Plan 9 igényli, hogy a dhcp szerver a megfelelő dhcp-domain és domain-search attribútumokat küldjön, tehát hogy tudja a saját fqdn-jét.. Engedélyezzük a /rc/bin/termrc nevű fájlban. Ez a Linuxban található rc-nek felel meg, csak a Plan 9 szellemiségével összangban sokkal egyszerűbben. A termrc akkor fut le, ha terminált indítunk. Ha cpu szervert indítanánk, akkor a cpurc futna le. Ki kell venni a kommenteket a megfelelő sorok elől:

if(! test -e /net/ipifc/0/ctl)
ip/ipconfig

A dhcp resolver elindítását magától elvégzi majd a termrc, ez látszik a későbbi soraiban. Indítsuk újra a rendszert és ellenőrízzük le a ip/ping parancs használatával. Az újraindításhoz az fshalt parancs segítségével állítsuk le a fájlrendszert majd a virtuális gépet indítsuk újra.

5.2.1 Rendszer frissítése

Nagyon egyszerűen zajlik, a következő parancs kiadására a Plan 9 az aktuális legfrissebb rendszert tartalmazó szerverrel szinkronizál.

replica/pull -v /dist/replica/network

5.2.2 Webböngészés

A webböngészést is természetesen a 9p alapon oldották meg, ezért létezik egy webcookies nevű cookie kezelő szolgáltatás, egy webfs nevű szolgáltatás, ami fájlokként böngészhetővé teszi a webet, elrejtve a http protokollt. Ezt 9p-n érik el a böngészők, és emiatt nagyon kevés kódból lehet böngészőket írni. Természetesen nem lehet találni firefox szintű böngészőket, de az általam használt is meglepően használható. Szerencsére részét képezi az alapvető telepítésnek. A következőképpen indítottam el az abaco nevű böngészőt:

webcookies
webfs
abaco

5.3 Felhasználó hozzáadása

1. Hozzáadjuk a felhasználót a fájlszerveren 2. Hozzáadjuk a felhasználót az autentikációs szerveren(egy gépnél nem kell) 3. Amikor a felhasználó bejelentkezik először, futtatnia kell ezt: /sys/lib/newuser, mert kezdetben gui-t sem kap, amíg ezt nem futtatja.

Lépjünk be a Fossil konzoljára

con -l /srv/fscons

adjuk hozzá, és adjuk hozzá a felhasználót a sys csoporthoz:


uname <user> <user>
uname sys +<user>


A konzolbol kilépni a ctl-\ + q kombóval lehet. (Mivel nincs magyar keymap, ezért angol keymapon magyar keyboardal ctl+shift+ű)

--Zilahi Dávid 2012. december 10., 05:47 (UTC)

Személyes eszközök