Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Elektra Project Markus Raab Markus Raab Turning Linux into a Trully Integrated Operating Environment.

Ähnliche Präsentationen


Präsentation zum Thema: "Elektra Project Markus Raab Markus Raab Turning Linux into a Trully Integrated Operating Environment."—  Präsentation transkript:

1 Elektra Project Markus Raab Markus Raab Turning Linux into a Trully Integrated Operating Environment

2 Zukunft, Vergangenheit und Gegenw art In welche Richtung entwickelt sich der Desktop? In welche Richtung entwickelt sich das darunterliegende System? Kann der sich der Deskop entfalten, ohne dass das darunterliegende System verändert wird?

3 Rundblick auf derzeitige Konfiguration Java, UNIX Commercial ✗ Kein einheitlicher Namensraum ✗ Keine einheitliche API um auf Konfigurationen zuzugreifen ✗ Schlechte Integration: Konfiguration ist die Seele der Software Linux ist heute ein = 2 Betriebsystem

4 Elektrified Panorama Java, UNIX Commercial ✔ Ein systemweiter Namensraum ✔ Eine Infrastruktur (API) ✔ Integration durch die Seele der Software Wir suchen einen 1 x 1 = 1 Status!

5 Konfigurations System Utopie Cross and Non-Cross Platform Software Apache, Samba, KDE, /sbin/init, inittools FileSystem SingleFile WRegistry FileSystem SingleFile FileSystem SingleFile OpenDir FileSystem SingleFile Backends Elektra API & Namespace :: Abstraction Layer

6 Warum Linux/UNIX eine Key DB braucht Es ist schwierig Softwarepakete zu bauen, die mit anderer vorhandener Software integrieren. Egoistische Formate für Konfigurationen Verschiedene Positionen je nach Distribution Section "InputDevice" Identifier "Mouse0" Driver "mouse" Option "Protocol" "IMPS/2" Option "Device" "/dev/input/mice" Option "ZAxisMapping" "4 5" Option "Emulate3Buttons" "yes" EndSection In Fedora 2: /etc/X11/xorg.conf Debian Sarge: /etc/X11/XF86Config-4 Other Distros: Gott weiß wo...

7 Wie wäre es so? Section "InputDevice" Identifier "Mouse0" Driver "mouse" Option "Protocol" "IMPS/2" Option "Device" "/dev/input/mice" Option "ZAxisMapping" "4 5" Option "Emulate3Buttons" "yes" EndSection ✗ Benötigt menschliche Augen und Gehirn ✗ Benötigt manual-pages ✗... und vi ✔ Jedes Bit Information ist leicht zugänglich. ✔ Leicht verständliche und editierbare Konfiguration für jedes Programm. (ohne ein Configparser implementieren zu müssen) ✔ Bereit für Admin- und User GUIs

8 Elektra's 7 Design Grundsätze 1.Unix look'n'feel und Standards in den Namensräumen 2.Immer und überall vorhanden (Sogar bei /sbin/init). Keine gezwungenen Abhängigkeiten in komplexe Librarys, Netzwerkdienste oder Sprachkodierungen. 3.ISO/ANSI C mit POSIX, portabel zu Linux, BSD, Unix, Windows, Mac, etc. 4.Keine Kenntnis über key/value Semantik gefordert. 5.Filesystem-like verlässliche Sicherheit. 6.Keine Daemons unbedingt benötigt. 7.Offene Aufbewahrung (Text basierend).

9 Key Hierachie Root for system wide keys Current user's key tree Avi's personal keys Luciana's personal keys Valeria's personal keys Die system/* Hierachie ist gespeichert unter /etc/kdb/ Die user:$USER/* Hierachie ist gespeichert unter ~$USER/.kdb/ Die user/* Hierachie ist eine Abkürzung für aktuellen Benutzer. Die /* Hierachie verschmelzt system und user.

10 Key Hierarchy :: system/... Root for system wide keys Equivalent to /etc/fstab Equivalent to /etc/group Keys with detected HW Equivalent to /etc/inittab Network info, interface IPs, etc Root for application global keys Application 1 Application 2 Equivalent to /etc/passwd

11 Key Hierarchy :: user/... Root for user-wide keys User's environment (instead of ~/.bashrc) User's aliases First env var set Second env var set (that depends on the first) Example of $PATH being set Third environment set Application keys for this user Temporary keys

12 Key Names Der Punkt macht die “MSN/*” Hierachie inaktiv.

13 Key Properties ➢ Name ➢ Value ➢ Value type ➢ User domain or owner ➢ Description/Comment ➢ System UID & GID ➢ Access Permissions ➢ Active or inactive key ➢ Last change time ➢ Last access time system/users/root/shadowPassword = $1$yM93nU user:valeria/env/env2/PATH = $PATH:/usr/sbin

14 Why GConf is Fat and Dependent... bash$ ldd /usr/bin/gconfd-1 libgconf-1.so.1 => /usr/lib/libgconf-1.so.1 liboaf.so.0 => /usr/lib/liboaf.so.0 libORBitCosNaming.so.0 => /usr/lib/libORBitCosNaming.so.0 libORBit.so.0 => /usr/lib/libORBit.so.0 libIIOP.so.0 => /usr/lib/libIIOP.so.0 libORBitutil.so.0 => /usr/lib/libORBitutil.so.0 libm.so.6 => /lib/tls/libm.so.6 libgmodule-1.2.so.0 => /usr/lib/libgmodule-1.2.so.0 libglib-1.2.so.0 => /usr/lib/libglib-1.2.so.0 libdl.so.2 => /lib/libdl.so.2 libc.so.6 => /lib/tls/libc.so.6 libpopt.so.0 => /usr/lib/libpopt.so.0 libwrap.so.0 => /usr/lib/libwrap.so.0 /lib/ld-linux.so.2 => /lib/ld-linux.so.2 libnsl.so.1 => /lib/libnsl.so.1

15 Elektra is Light... bash$ ldd /lib/libkdb.so libc.so.6 => /lib/tls/libc.so.6 /lib/ld-linux.so.2 => /lib/ld-linux.so.2 ✔ Verwendbar in einem eingeschränkten Umgebung, sogar bei /sbin/init ✔ Nicht unbedingt ein Daemon, also Kein “single point of failure” Ein Prozess kann die anderen in der Key-DB nicht gefärden. Kein Kommunikationsprotokoll, also kein zusätzlicher Speck hier. Keine Sicherheitslöcher, weil die Sicherheit vom OS gehandelt wird. Sauber, elegant und einfach.

16 Key Database Administration

17 kdb Kommand: Perfekt für Skripte bash$ kdb get system/filesystems/boot/mpoint bash# kdb set system/sw/XFree/Screen/Display/Modes 1280x1024 bash$ kdb export system/sw/myapp > myapp.conf.xml bash# kdb import < myapp.conf.xml bash$ kdb edit -R user/sw/myapp bash$ kdb ls -Rv system/sw/myapp bash$ kdb monitor system/init/id/runlevel bash$ kdb rm user/env/alias/vnc bash$ kdb ln system/sw/myapp/key1 user/sw/myapp/key1 Vollständige man-pages verfügbar!

18 XML Import and Export bash$ kdb export user/env/alias > file.xml bash$ kdb import < file.xml

19 Using kdb to Edit in Batch Verwende beliebigen Editor um XML zu editieren. Keys können auch hinzugefügt werden. Keys können geändert werden. Keys können auch gelöscht werden. (vielen Dank an die ksCompare() API Funktion)

20 Regedit: The Elektra GUI Edit Tool Mehr freundlich als der kdb Befehl. Hierachische Ansicht Unterstützt UNDOs und REDOs Aber: Wenn alles andere versagt, kann man mit vi immer noch direkt die Konfiguration bearbeiten!

21 The API

22 Kann schon jetzt verwendet werden! ➢ Entwicklung jetzt ✔ C/C++ ✔ Shell ✔ XML ✔ Python ✔ Ruby ✔ Java ✔ Lua ➢ Im kommen... ✔ Perl ✔ PHP ✔ Andere... ✔ (vielleicht steuerst du etwas bei?)

23 Viele Bankends in Entwicklung! ➢ Entwicklung jetzt ✔ filesys ✔ fstab ✔ gconf ✔ berkleydb ✔ template ✔ ini ➢ Im kommen... ✔ XOrg ✔ C-Style... ✔ Daemon ✔ (vielleicht steuerst du etwas bei?)

24 Nur 3 Klassen KeyDB KeyKeySet Classes

25 C API Funktionen ksInit() ksClose() ksInsert() ksAppend() ksInsertKeys() ksAppendKeys() ksToStream() ksCompare() ksNext() ksRewind() keyInit() keyClose() keyIsInitialized() keyNeedsSync() keyIsSystem() keyIsUser() keyGetNameSpace() keyIsDir() keyIsLink() keyToStream() keyDup() keyGetType() keySetType() keyGetNameSize() keyGetFullNameSize() keyGetName() keySetName() keyGetFullName() keyGetFullRootName() keyGetFullRootNameSize() keyGetBaseName() keyGetBaseNameSize() keyGetRootName() keyGetRootNameSize() keyCompare() keyGetUID() keySetUID() keyGetGID() keySetGID() keyGetCommentSize() keyGetComment() keySetComment() keyGetAccess() keySetAccess() keyGetOwner() keySetOwner() keyGetDataSize() keyGetString() keySetString() keyGetBinary() keySetBinary() keyGetLink() keySetLink() keyGetMTime() keyGetATime() keyGetCTime() keyGetParentName() keySetFlag() keyGetFlag() kdbOpen() kdbClose() kdbGetValue() kdbGetKeyByParent() kdbGetKeyByParentKey() kdbGetValueByParent() kdbSetValue() kdbSetValueByParent() kdbRemove() kdbLink() kdbGetKeyByParent() kdbGetKeyByParentKey() kdbGetValueByParent() kdbGetComment() kdbSetComment() kdbStatKey() kdbGetKey() kdbSetKey() kdbGetChildKeys() kdbGetRootKeys() kdbSetKeys() kdbMonitorKey() kdbMonitorKeys()

26 API vollständig dokumentiert! ✔ API doc in Browser betrachtbar ✔ API man pages ✔ Viele, viele Beispiele

27 Jetziges Ökosystem ➢ Regedit GUI, um Key database zu editieren ➢ /sbin/init patch, statt /etc/inittab ➢ X.org patch, statt /etc/X11/xorg.conf ➢ KConfig and GConf backends ➢ NSSwitch module User Database und authentifizierung von Elektra ➢ GLibC patches fstab, resolver, etc ➢ Die ganzen Language-Bindings ➢ Backends

28 The Elektra Project needs YOU ! Talk about it Package, port It to other platforms Write patches that Elektrifies old software Use it in your own software It's free. It's for you.

29 Danke für ➢ IBM Support für Open Source Projekte um Linux zu verbessern. ➢ Elektra Project community Subversion repository, Wiki space, etc... Start der Doxygen Dokumentation Und natürlich Patches, gute software, language bindings, etc...

30 Elektra Project Markus Raab Markus Raab Turning Linux into a Trully Integrated Operating Environment


Herunterladen ppt "Elektra Project Markus Raab Markus Raab Turning Linux into a Trully Integrated Operating Environment."

Ähnliche Präsentationen


Google-Anzeigen