Hallo Flugis,
bekomme mit meinem System ein bisschen Platzprobleme (nur ca 6MB verfügbar). Ich baue mein Linux mit Yocto (core-image-minimal) womit ich bei (komprimert uramdisk.image.gz) bei ca 3MB bin. Dazu brauche ich noch zwei drei Pakete, u.a. ssh und gnupg. Die hauen eine ganze Menge Zeug (bins, libs) raus. -> 9MB Vieles davon benötige ich nicht, wenn man keys z.B. importiert kann man auf den key-generator verzichten ... Ich frage mich, wie kann ich mein System systematisch verschlanken? Schaut man auf den Platzbedarf: den meisten benötigen libs und Programme
Mir bleibt nichts anderes übrig, als alle ausführbaren Programme durchzugehen und nicht benutzte löschen. Dann muss man hoffen, dass nicht ein binary das andere aufruft oder es in einem besonderen Anwendugsfall nicht doch noch gebraucht wird.
Für die libs habe ich folgendes geniales script gefunden:
find / -type f -perm /a+x -exec ldd {} ; | grep so | sed -e '/^[^\t]/ d' | sed -e 's/\t//' | sed -e 's/.*=..//' | sed -e 's/ (0.*)//' | sort | uniq -c | sort -n
Damit kann man alle libs auflisten und wie oft sie verwendet werden. Nicht verwendete libs kann man entfernen. Oder muss man damit rechnen, das es eine lib eine andere verwendet?
Andererseits wäre es ggf interessant, die binaries zu bestimmten großen libs zu finden, ob man nicht auf diese verzichten kann. Wie kann man das machen?
Fällt euch noch was anderes ein?
In einem zweiten Schritt: Hat jemand mit Yocto so viel Erfahrung, dass er weiß wie man Rezepte anpasst um z.B. aus dem ssh-Paket beim Installieren nicht benötigten Kram zu entfernen?
Gruß Arno
Zusatzfrage: Kann Yocto so eine uramdisk.image.gz aus einem image auch automatisch erstellen? Ist immer ein paar Handgriffe bis man das manuell gebaut hat. Ich hab dazu bisher nichts gefunden.
Am Mittwoch, 08. Februar 2017 13:05 CET, "Arno Steffens" epsi@gmx.de schrieb:
Hallo Flugis,
bekomme mit meinem System ein bisschen Platzprobleme (nur ca 6MB verfügbar). Ich baue mein Linux mit Yocto (core-image-minimal) womit ich bei (komprimert uramdisk.image.gz) bei ca 3MB bin.
Das klingt nach embedded system ... chaut man auf den Platzbedarf: den meisten benötigen libs und Programme
Mir bleibt nichts anderes übrig, als alle ausführbaren Programme durchzugehen und nicht benutzte löschen. Dann muss man hoffen, dass nicht ein binary das andere aufruft oder es in einem besonderen Anwendugsfall nicht doch noch gebraucht wird.
Tricky
Für die libs habe ich folgendes geniales script gefunden:
find / -type f -perm /a+x -exec ldd {} ; | grep so | sed -e '/^[^\t]/ d' | sed -e 's/\t//' | sed -e 's/.*=..//' | sed -e 's/ (0.*)//' | sort | uniq -c | sort -n
Damit kann man alle libs auflisten und wie oft sie verwendet werden. Nicht verwendete libs kann man entfernen. Oder muss man damit rechnen, das es eine lib eine andere verwendet?
Hmm, ganz so trivial ist das nicht - Dein grep-pattern findet u.U. zu viel. Ausserdem musst Du das rekursiv machen, d.h. für jede gefundene Library musst Du auh wieder sehen welche Libs sie lädt. Zyklen sollte es eig. nicht geben, es schadet aber nicht im Script darauf zu testen. Ab jetzt wird's schwierig: erstens kann ein Programm ein anderes aufrufen (das könntest Du gegebenenfall mit 'strings prog | grep /bin' herausfinden), ausserdem gibt's noch Programme die Libraries zur Laufzeit nachladen (mit dlopen), gerne Module oder Plugins genannt.
Bei Debian gibt's dh_shlibdeps mit dem man rausfinden kann welche Pakete benötigt werden um die Software in einem Pakte laufen zu lassen. Das ist ein Perlscipt das im Prinzip genau das mach (alle benötigten Libs finden), dann allerdings noch nachsieht welches Deb-Paket diese Libs liefert.
Gruss RalfD
Am 08.02.2017 13:05, schrieb Arno Steffens:
Hallo Flugis,
bekomme mit meinem System ein bisschen Platzprobleme (nur ca 6MB verfügbar). Ich baue mein Linux mit Yocto (core-image-minimal) womit ich bei (komprimert uramdisk.image.gz) bei ca 3MB bin. Dazu brauche ich noch zwei drei Pakete, u.a. ssh und gnupg. Die hauen eine ganze Menge Zeug (bins, libs) raus. -> 9MB Vieles davon benötige ich nicht, wenn man keys z.B. importiert kann man auf den key-generator verzichten ... Ich frage mich, wie kann ich mein System systematisch verschlanken? Schaut man auf den Platzbedarf: den meisten benötigen libs und Programme
Ich würde mal probieren: tinycore-linux (oder selbstgestrickt) nur mit libc und busybox.
Die anderen Programme ssh (dropbear ?) und gnupg einzeln nachinstallieren ggfs. mit ldd nachsehen was gebraucht wird (und wenn moeglich in configure abschalten).
Beim compilieren darauf achten das -Os (s=schlank) gesetzt ist und dass auch keine -g dabei. kontakariert den Effekt sonst.
re, wh
Mir bleibt nichts anderes übrig, als alle ausführbaren Programme durchzugehen und nicht benutzte löschen. Dann muss man hoffen, dass nicht ein binary das andere aufruft oder es in einem besonderen Anwendugsfall nicht doch noch gebraucht wird.
Für die libs habe ich folgendes geniales script gefunden:
find / -type f -perm /a+x -exec ldd {} ; | grep so | sed -e '/^[^\t]/ d' | sed -e 's/\t//' | sed -e 's/.*=..//' | sed -e 's/ (0.*)//' | sort | uniq -c | sort -n
Damit kann man alle libs auflisten und wie oft sie verwendet werden. Nicht verwendete libs kann man entfernen. Oder muss man damit rechnen, das es eine lib eine andere verwendet?
Andererseits wäre es ggf interessant, die binaries zu bestimmten großen libs zu finden, ob man nicht auf diese verzichten kann. Wie kann man das machen?
Fällt euch noch was anderes ein?
In einem zweiten Schritt: Hat jemand mit Yocto so viel Erfahrung, dass er weiß wie man Rezepte anpasst um z.B. aus dem ssh-Paket beim Installieren nicht benötigten Kram zu entfernen?
Gruß Arno
Zusatzfrage: Kann Yocto so eine uramdisk.image.gz aus einem image auch automatisch erstellen? Ist immer ein paar Handgriffe bis man das manuell gebaut hat. Ich hab dazu bisher nichts gefunden. _______________________________________________ Freiburger Linux User Group Mail an die Liste: flug@lug-freiburg.de Mailingliste verwalten (u.a. abbestellen): https://lug-freiburg.de/mailman/listinfo/flug
Am Mittwoch, 08. Februar 2017 17:52 CET, walter harms wharms@bfs.de schrieb:
Ich würde mal probieren: tinycore-linux (oder selbstgestrickt) nur mit libc und busybox.
Die anderen Programme ssh (dropbear ?) und gnupg einzeln nachinstallieren ggfs. mit ldd nachsehen was gebraucht wird (und wenn moeglich in configure abschalten).
Beim compilieren darauf achten das -Os (s=schlank) gesetzt ist und dass auch keine -g dabei. kontakariert den Effekt sonst.
Hmm, s=schlank ist nett, ich dachte ja immer das steht für 'size' ;-) Wenn wir schon so ausführlich werden - unbedingt nach dem Kompilieren noch ein strip
Gruss RalfD
re, wh
Mir bleibt nichts anderes übrig, als alle ausführbaren Programme durchzugehen und nicht benutzte löschen. Dann muss man hoffen, dass nicht ein binary das andere aufruft oder es in einem besonderen Anwendugsfall nicht doch noch gebraucht wird.
Für die libs habe ich folgendes geniales script gefunden:
find / -type f -perm /a+x -exec ldd {} ; | grep so | sed -e '/^[^\t]/ d' | sed -e 's/\t//' | sed -e 's/.*=..//' | sed -e 's/ (0.*)//' | sort | uniq -c | sort -n
Damit kann man alle libs auflisten und wie oft sie verwendet werden. Nicht verwendete libs kann man entfernen. Oder muss man damit rechnen, das es eine lib eine andere verwendet?
Andererseits wäre es ggf interessant, die binaries zu bestimmten großen libs zu finden, ob man nicht auf diese verzichten kann. Wie kann man das machen?
Fällt euch noch was anderes ein?
In einem zweiten Schritt: Hat jemand mit Yocto so viel Erfahrung, dass er weiß wie man Rezepte anpasst um z.B. aus dem ssh-Paket beim Installieren nicht benötigten Kram zu entfernen?
Gruß Arno
Zusatzfrage: Kann Yocto so eine uramdisk.image.gz aus einem image auch automatisch erstellen? Ist immer ein paar Handgriffe bis man das manuell gebaut hat. Ich hab dazu bisher nichts gefunden. _______________________________________________ Freiburger Linux User Group Mail an die Liste: flug@lug-freiburg.de Mailingliste verwalten (u.a. abbestellen): https://lug-freiburg.de/mailman/listinfo/flug
Freiburger Linux User Group Mail an die Liste: flug@lug-freiburg.de Mailingliste verwalten (u.a. abbestellen): https://lug-freiburg.de/mailman/listinfo/flug
Am 08.02.2017 um 17:52 schrieb walter harms:
Am 08.02.2017 13:05, schrieb Arno Steffens:
Hallo Flugis,
bekomme mit meinem System ein bisschen Platzprobleme (nur ca 6MB verfügbar). Ich baue mein Linux mit Yocto (core-image-minimal) womit ich bei (komprimert uramdisk.image.gz) bei ca 3MB bin. Dazu brauche ich noch zwei drei Pakete, u.a. ssh und gnupg. Die hauen eine ganze Menge Zeug (bins, libs) raus. -> 9MB Vieles davon benötige ich nicht, wenn man keys z.B. importiert kann man auf den key-generator verzichten ... Ich frage mich, wie kann ich mein System systematisch verschlanken? Schaut man auf den Platzbedarf: den meisten benötigen libs und Programme
Ich würde mal probieren: tinycore-linux (oder selbstgestrickt) nur mit libc und busybox.
Eine neue Distri werde ich nicht mehr anfangen. Das Grundsystem ist ja schon klein und mit busybox.
Die anderen Programme ssh (dropbear ?) und gnupg einzeln nachinstallieren ggfs. mit ldd nachsehen was gebraucht wird (und wenn moeglich in configure abschalten).
Ja, so habe ich es auch angefangen. Wie das so ist mit Paketen kommt dann manchmal eben nicht nur das eine File. Aber ich werde mich rantasten.
Beim compilieren darauf achten das -Os (s=schlank) gesetzt ist und dass auch keine -g dabei. kontakariert den Effekt sonst.
Das kannte ich nicht. Weiß aber noch nicht, wie ich das Yocto beibringen kann. Danke, Arno
re, wh
Mir bleibt nichts anderes übrig, als alle ausführbaren Programme durchzugehen und nicht benutzte löschen. Dann muss man hoffen, dass nicht ein binary das andere aufruft oder es in einem besonderen Anwendugsfall nicht doch noch gebraucht wird.
Für die libs habe ich folgendes geniales script gefunden:
find / -type f -perm /a+x -exec ldd {} ; | grep so | sed -e '/^[^\t]/ d' | sed -e 's/\t//' | sed -e 's/.*=..//' | sed -e 's/ (0.*)//' | sort | uniq -c | sort -n
Damit kann man alle libs auflisten und wie oft sie verwendet werden. Nicht verwendete libs kann man entfernen. Oder muss man damit rechnen, das es eine lib eine andere verwendet?
Andererseits wäre es ggf interessant, die binaries zu bestimmten großen libs zu finden, ob man nicht auf diese verzichten kann. Wie kann man das machen?
Fällt euch noch was anderes ein?
In einem zweiten Schritt: Hat jemand mit Yocto so viel Erfahrung, dass er weiß wie man Rezepte anpasst um z.B. aus dem ssh-Paket beim Installieren nicht benötigten Kram zu entfernen?
Gruß Arno
Zusatzfrage: Kann Yocto so eine uramdisk.image.gz aus einem image auch automatisch erstellen? Ist immer ein paar Handgriffe bis man das manuell gebaut hat. Ich hab dazu bisher nichts gefunden. _______________________________________________ Freiburger Linux User Group Mail an die Liste: flug@lug-freiburg.de Mailingliste verwalten (u.a. abbestellen): https://lug-freiburg.de/mailman/listinfo/flug
Freiburger Linux User Group Mail an die Liste: flug@lug-freiburg.de Mailingliste verwalten (u.a. abbestellen): https://lug-freiburg.de/mailman/listinfo/flug
Am 08.02.2017 22:13, schrieb Arno:
Am 08.02.2017 um 17:52 schrieb walter harms:
Am 08.02.2017 13:05, schrieb Arno Steffens:
Hallo Flugis,
bekomme mit meinem System ein bisschen Platzprobleme (nur ca 6MB verfügbar). Ich baue mein Linux mit Yocto (core-image-minimal) womit ich bei (komprimert uramdisk.image.gz) bei ca 3MB bin. Dazu brauche ich noch zwei drei Pakete, u.a. ssh und gnupg. Die hauen eine ganze Menge Zeug (bins, libs) raus. -> 9MB Vieles davon benötige ich nicht, wenn man keys z.B. importiert kann man auf den key-generator verzichten ... Ich frage mich, wie kann ich mein System systematisch verschlanken? Schaut man auf den Platzbedarf: den meisten benötigen libs und Programme
Ich würde mal probieren: tinycore-linux (oder selbstgestrickt) nur mit libc und busybox.
Eine neue Distri werde ich nicht mehr anfangen. Das Grundsystem ist ja schon klein und mit busybox.
Die anderen Programme ssh (dropbear ?) und gnupg einzeln nachinstallieren ggfs. mit ldd nachsehen was gebraucht wird (und wenn moeglich in configure abschalten).
Ja, so habe ich es auch angefangen. Wie das so ist mit Paketen kommt dann manchmal eben nicht nur das eine File. Aber ich werde mich rantasten.
Beim compilieren darauf achten das -Os (s=schlank) gesetzt ist und dass auch keine -g dabei. konterkariert den Effekt sonst.
Das kannte ich nicht. Weiß aber noch nicht, wie ich das Yocto beibringen kann. Danke, Arno
Wenn du nur 2-3 Programme nachinstallierst, kannst du die besser per Dreikampf (configure & make & make install) nach installieren. Auf jeden Fall sollte man mal die Abhängigkeiten und die Größe des Binary vergleichen. Wenn du nur 5 Bytes sparen kannst - trotz abschalten etc - dann brauchst du wenigstens in dieser Richtung nichts weiter versuchen.
re, wh
re, wh
Mir bleibt nichts anderes übrig, als alle ausführbaren Programme durchzugehen und nicht benutzte löschen. Dann muss man hoffen, dass nicht ein binary das andere aufruft oder es in einem besonderen Anwendugsfall nicht doch noch gebraucht wird.
Für die libs habe ich folgendes geniales script gefunden:
find / -type f -perm /a+x -exec ldd {} ; | grep so | sed -e '/^[^\t]/ d' | sed -e 's/\t//' | sed -e 's/.*=..//' | sed -e 's/ (0.*)//' | sort | uniq -c | sort -n
Damit kann man alle libs auflisten und wie oft sie verwendet werden. Nicht verwendete libs kann man entfernen. Oder muss man damit rechnen, das es eine lib eine andere verwendet?
Andererseits wäre es ggf interessant, die binaries zu bestimmten großen libs zu finden, ob man nicht auf diese verzichten kann. Wie kann man das machen?
Fällt euch noch was anderes ein?
In einem zweiten Schritt: Hat jemand mit Yocto so viel Erfahrung, dass er weiß wie man Rezepte anpasst um z.B. aus dem ssh-Paket beim Installieren nicht benötigten Kram zu entfernen?
Gruß Arno
Zusatzfrage: Kann Yocto so eine uramdisk.image.gz aus einem image auch automatisch erstellen? Ist immer ein paar Handgriffe bis man das manuell gebaut hat. Ich hab dazu bisher nichts gefunden. _______________________________________________ Freiburger Linux User Group Mail an die Liste: flug@lug-freiburg.de Mailingliste verwalten (u.a. abbestellen): https://lug-freiburg.de/mailman/listinfo/flug
Freiburger Linux User Group Mail an die Liste: flug@lug-freiburg.de Mailingliste verwalten (u.a. abbestellen): https://lug-freiburg.de/mailman/listinfo/flug
Freiburger Linux User Group Mail an die Liste: flug@lug-freiburg.de Mailingliste verwalten (u.a. abbestellen): https://lug-freiburg.de/mailman/listinfo/flug
Hi,
ein Kumpel von mir arbeitet auch mit Yocto und hat mir zu deinem Problem folgende Infos gegeben, die ich einfach hier mal poste.... Ich selber habe keine Ahnung und bin Übringer der Nachricht.. Eugen
Los geht......
------------------------------------------- -Os (s=schlank)
s steht für size und ist eine Kompiler option -------------------------------------------
Was kann er machen: Einerseits noch den Inhalt strippen, den core-image-minimal zieht sich einiges rein - ist nicht unbedingt minimal.
-------------------------------------------
Braucht er graphik ?
-------------------------------------------
Braucht er packagemanagement ?
-------------------------------------------
Desweiteren würde ich bei die Ramdisk Kompression umstellen. Anstatt Gzip kann man auch BZip oder LZMA nutzen.
Ist beim Systemstart / Entpacken langsamer spart aber Platz.
-------------------------------------------
Zusatzfrage: Kann Yocto so eine uramdisk.image.gz aus einem image auch automatisch erstellen? Ist immer ein paar Handgriffe bis man das manuell gebaut hat. Ich hab dazu bisher nichts gefunden.
Klar. Man kann ein Ramdisk Image einfach erstellen und definieren welchen Inhalt sie bekommen soll und wie komprimiert. Wie oben erwähnt....
Desweiteren kann man die fertige Ramdisk entweder parallel zum Kernel installieren oder in den Kernel rein nehmen.
-------------------------------------------
Ist die Frage was er machen will.
nur ca 6MB verfügbar
Ist da der Platz für den Kernel schon weg. Welche Kernel Version und wie groß ist er. Ansonsten kann man den Kernel noch kleiner bauen. Support für verschiedene Filesysteme raus, etc.
-------------------------------------------
Ansonsten kann man noch bei der LibC von glibc auf uclibc (wird offiziell nicht mehr maintend, funktioniert aber gut) umstellen.
-------------------------------------------
Klar dropbear bekommt man klein. Habe ich erst im Dezember gemacht.
-------------------------------------------
Noch was: Hat er einen freien USB Port ? Falls ja, dann Kernel ins Flash/Speicher und Rootfs auf USB Stick.
-------------------------------------------
Um welche Platform geht es ? ARM oder X86 Architektur ?
-------------------------------------------
Welche Yocto / poky Version ? Fido (1.9), Jethro (2.0)
-------------------------------------------