alexander_ro hat geschrieben:wanne hat geschrieben:Da reicht getopt und execve.
Stimmt aber um Abhängigkeiten zur Übersetzungszeit aufzulösen braucht man C++. Du hast ganz offensichtlich noch nie den Bootprozess eines leidlich komplexen Systems in augenschein genommen.
Da gibts im extremfall Mutexe. Die traditionelle Variante ist einfach Dateien anzulegen und dann zu warten bis die da sind. Alles kein Hexenwerk.
Aber mal ganz ehrlich. Geht alles bei weitem über das raus was meine heutigen init-Scripte machen. Die begnügen sich mehr oder weniger alle damit, beim argument start das richtige Programm mit den richtigen Parametern auszuführen, und das dann beim argument stop wieder zu beenden. und dann gibt's noch restart da werden die beiden Funktionen nacheinander aufgerufen....
... und Bash und Busybox braucht keine Libs und externe Programme? Wird nix werden mit den 4MB
Code: Alles auswählen
/dev/root 2.0M 2.0M 0 100% /rom
/dev/mtdblock3 5.1M 1.6M 3.4M 32% /overlay
3.6M Und auf dem router läuft garantiert eher viel. (Wobei da noch ein paar zusätzliche Programme unter opt liegen.) Aber natürlich ligt da in den 2M eine Bash eine Busybox ein dhcp server, ein kastrierter hostapd ein Webserver, diverse kompressionstools, die paketverwaltng, vi, sshd, ein lua interpreter und was man halt sonst noch so an standardtools hat (ln, sed, mv, chown, ifconfig...). Das ist allerdings auch komprimiert.
Das Init Binary braucht sehr viel weniger Platz und wird auch ganz erheblich die Rechnleistung Deines Routers schonen. Router sind recht statische Gebilde also nicht wirklich ein Problem wenn dort kein Compiler vorhanden ist. Es ist im Embedded Bereich gängige Praxis Programme auf dem PC per Cross-Compiler zu übersetzen warum also nicht auch den Init-Prozess. Oder schmeißt Du den Router jedesmal weg wenn im Kernel oder einem sonstigen Programm ein Bug gefunden wird.
Ne, aber zum beispiel ist mein wlan etwas komplizierter aufgebaut und deswegen habe ich da etwas rumpfuschen müssen, dass zuerst die Verbindung ins internet da ist bevor hostaped startet und erst danach der dhcpd kommt. Hinzu kommt das ich zuerst mit iw die devices für hostapd vorbereite. Weger sowas will ich mir nicht erstmal nen crosscompiler auf meinem Rechner einrichten müssen. Und rechenleistung? Das ding startet alle paar jahre mal. Da ist mir sowas von egal ob das jetzt 10 oder 40 Sekunden geht.
Im übrigen steigt die Rechenleistung und der Speicherplatz bei Embedded System recht rasch das es auch bei neueren Geräten einen Compiler verträgt und Du keinen Cross Compiler benötigst.
Duie rechenleistung schon der Speicherplatz nicht. Die werden dafür alle paar Monate wieder um nen € billiger.
Man sollte nicht immer nur die Steinzeit im Auge behalten. Ich bin zwar auch der Meinung das man wenn mögllich alte Hardware unterstützt aber nicht um jeden Preis. Der Linux Kernel unterstützt ja auch keine Steinzeit Intel CPUs mehr obwohl die Unterstützung noch sehr weit zurück reicht.
Es geht hier nicht um Steinalt hardware wie irgend welche x86-CPUs sondern um nagelneue Hardware, die halt so leicht sein soll, dass sie auch ein Quadkopter noch tragen kann. Oder ohne Probleme in den stecker von meiner Weihnachtskette passt. – Und dabei nicht mehr als ein paar € kosten soll.
16Bit u.ä. ist noch lange nicht tot. Man spart dann halt an Größe Gewicht und preis. Und 90% der Hardware sind eben kein 50kG 4m³ PCs sondern Handys Router oder Taschenrechner.
Nur rechenleistung ist mittlerweile eigentlich überall genug da. RAM, ROM, IO ist überall immer gut, wenn man sich was sparen kann.