| Both sides previous revision Previous revision Next revision | Previous revision |
| docs:techref:architecture [2018/03/14 01:25] – [OpenWrt – operating system architecture] 1oh2 | docs:techref:architecture [2021/10/15 09:06] (current) – ↷ Links adapted because of a move operation bobafetthotmail |
|---|
| ====== OpenWrt – operating system architecture ====== | ====== OpenWrt – operating system architecture ====== |
| Whereas desktop distributions use [[wp>GLib|glib]]+[[wp>D-Bus|dbus]]+[[wp>udev|udev(part of systemd)]], OpenWrt uses [[docs/techref/libubox]]+[[docs:techref:ubus]]+[[hotplug|hotplug2]]. | Whereas desktop distributions use [[wp>GLib|glib]]+[[wp>D-Bus|dbus]]+[[wp>udev|udev(part of systemd)]], OpenWrt uses [[docs:techref:libubox]]+[[ubus]]+[[docs:techref:procd]]. |
| This provides some pretty awesome functionality without requiring huge libraries with huge dependencies (*cough* glib). | This provides some pretty awesome functionality without requiring huge libraries with huge dependencies (*cough* glib). |
| |
| | non-volatile storage space | 100 MiB || 8 MiB((yes, 4MiB and 2MiB possible)) || 150MiB for Android 2.1\\ 512MiB for Android 4.0 || ? | | | non-volatile storage space | 100 MiB || 8 MiB((yes, 4MiB and 2MiB possible)) || 150MiB for Android 2.1\\ 512MiB for Android 4.0 || ? | |
| | [[wp>Kernel (computing)|kernel]] | **''[[wp>Linux kernel]]''** ||||||| | | [[wp>Kernel (computing)|kernel]] | **''[[wp>Linux kernel]]''** ||||||| |
| | ::: | FOSS and binary drivers || FOSS drivers: e.g. [[wp>Comparison of open-source wireless drivers|802.11]]; [[docs:hardware:internet.access.technologies|Iaccess]] || Android binary drivers | | | | | ::: | FOSS and binary drivers || FOSS drivers: e.g. [[wp>Comparison of open-source wireless drivers|802.11]]; [[docs:techref:hardware:internet.access.technologies|Iaccess]] || Android binary drivers | | | |
| | [[wp>C standard library]] | [[wp>GNU C Library|glibc]] || [[wp>uClibc]], [[wp>musl]] || [[wp>Bionic (software)|bionic]] | glibc + [[wp>Hybris (software)|libhybris]] | eglibc 2.15 | | | [[wp>C standard library]] | [[wp>GNU C Library|glibc]] || [[wp>uClibc]], [[wp>musl]] || [[wp>Bionic (software)|bionic]] | glibc + [[wp>Hybris (software)|libhybris]] | eglibc 2.15 | |
| | [[wp>init]] | [[wp>init]]\\ [[wp>Upstart]]\\ [[wp>Initng]] | **''[[wp>systemd]]''** | busybox-initd | **''[[docs:techref:procd]]''** | Android init-fork | | ''systemd'' | | | [[wp>init]] | [[wp>init]]\\ [[wp>Upstart]]\\ [[wp>Initng]] | **''[[wp>systemd]]''** | busybox-initd | **''[[docs:techref:procd]]''** | Android init-fork | | ''systemd'' | |
| | | [[wp>rsyslog]] / [[wp>syslog-ng]] | ::: | busybox-klogd, busybox-syslogd | ::: | | | ::: | | | | [[wp>rsyslog]] / [[wp>syslog-ng]] | ::: | busybox-klogd, busybox-syslogd | ::: | | | ::: | |
| | | [[wp>watchdog]] | ::: | busybox-watchdog | ::: | | | ::: | | | | [[wp>watchdog]] | ::: | busybox-watchdog | ::: | | | ::: | |
| | | [[wp>udev]] | ::: | [[docs:techref:hotplug|hotplug2]] | ubox? | | | ::: | | | | [[wp>udev]] | ::: | [[docs:techref:hotplug_legacy|hotplug2]] | ::: | | | ::: | |
| | | [[wp>cron]] | ::: | ''[[docs:guide-user:services:ntp:client-server|busybox-crond]]'' || | | ::: | | | | [[wp>cron]] | ::: | ''[[docs:guide-user:services:ntp:client-server|busybox-crond]]'' || | | ::: | |
| | | [[wp>at (Unix)|atd]] | ::: | //na// || | | ::: | | | | [[wp>at (Unix)|atd]] | ::: | //na// || | | ::: | |
| | [[wp>Package management system]] | [[wp>dpkg]]/[[wp>Advanced Packaging Tool|APT]]\\ [[wp>RPM Package Manager|RPM]]/[[wp>Yellowdog Updater, Modified|yum]]\\ [[wp>Portage (software)|portage]]\\ [[wp>pacman (package manager)|pacman]]\\ ... || ''[[docs:guide-user:additional-software:opkg]]'' || [[wp>APK (file format)|apk]] | ? | [[wp>RPM Package Manager|RPM]] | | | [[wp>Package management system]] | [[wp>dpkg]]/[[wp>Advanced Packaging Tool|APT]]\\ [[wp>RPM Package Manager|RPM]]/[[wp>Yellowdog Updater, Modified|yum]]\\ [[wp>Portage (software)|portage]]\\ [[wp>pacman (package manager)|pacman]]\\ ... || ''[[docs:guide-user:additional-software:opkg]]'' || [[wp>APK (file format)|apk]] | ? | [[wp>RPM Package Manager|RPM]] | |
| |
| ==== Dependencies of LuCI2 ==== | |
| The idea for LuCI2 and its different components started a long time ago: [[http://luci.subsignal.org/trac/browser/luci2]]; Code is being developed [[http://nbd.name/gitweb.cgi|here]]; | |
| |
| * ''[[docs:techref:libubox]]'' (~ 12KiB) is a general purpose library which provides things like an event loop, binary blob message formatting and handling, the Linux linked list implementation, and some JSON helpers. The functions in ''libubox'' are used to write the other software in LuCI2 | ==== What's the difference between ubus vs dbus? ==== |
| * ''[[docs:techref:ubus]]'' (~ 13KiB) is an RPC daemon similar to D-Bus but with a much friendlier C API | |
| | |
| * ''[[docs:techref:ubox]]'' | |
| * ''[[docs:techref:mountd]]'' | |
| * ''[[docs:techref:rpcd]]'' | |
| | |
| | |
| * [[http://www.freedesktop.org/wiki/Software/PulseAudio/FAQ/#index2h3|PulseAudio does not depend on GLib]] and does not seem to depends on D-Bus neither: [[http://www.linuxfromscratch.org/blfs/view/svn/multimedia/pulseaudio.html|LFS]] | |
| * [[https://archive.fosdem.org/2013/schedule/event/dist_network/|FOSDEM2013: Can Linux network configuration suck less?]] | |
| | |
| ==== What's the difference between ubus and dbus? ==== | |
| ''dbus'' is bloated, its C API is very annoying to use and requires writing large amounts of boilerplate code. In fact, the pure C API is so annoying that its own API documentation states: "If you use this low-level API directly, you're signing up for some pain." | ''dbus'' is bloated, its C API is very annoying to use and requires writing large amounts of boilerplate code. In fact, the pure C API is so annoying that its own API documentation states: "If you use this low-level API directly, you're signing up for some pain." |
| |
| |
| ---- | ---- |
| * →[[docs:guide-developer:build-system:start|OpenWrt Buildroot – About]] | * →[[docs:guide-developer:toolchain:start|OpenWrt Buildroot – About]] |
| * →[[docs:guide-developer:build-system:install-buildsystemOpenWrt Buildroot – Installation]] | * →[[docs:guide-developer:toolchain:install-buildsystem| OpenWrt Buildroot – Installation]] |
| * →[[docs:guide-developer:build-system:start|OpenWrt Buildroot – Usage]] | * →[[docs:guide-developer:toolchain:start|OpenWrt Buildroot – Usage]] |
| * →[[docs:guide-developer:patches|OpenWrt Buildroot – Patches]] | * →[[docs:guide-developer:toolchain:use-patches-with-buildsystem|OpenWrt Buildroot – Patches]] |
| |
| ---- | ---- |
| |
| |
| | * [[https://www.freedesktop.org/wiki/Software/PulseAudio/FAQ/#index2h3|PulseAudio does not depend on GLib]] and does not seem to depends on D-Bus neither: [[http://www.linuxfromscratch.org/blfs/view/svn/multimedia/pulseaudio.html|LFS]] |
| | * [[https://archive.fosdem.org/2013/schedule/event/dist_network/|FOSDEM2013: Can Linux network configuration suck less?]] |
| |
| |