Benutzer:Cyrus/Feldversuch:Vorinstallierte Pakete

Aus Freifunk Halle
Zur Navigation springen Zur Suche springen

Wie groß ist eigentlich der Unterschied zwischen der Komprimierung von SquashFS und JFFS2? Oder anders formuliert: Bringt es etwas, Pakete bereits in die Firmware-Images vor dem Flashen zu integrieren oder fährt man besser mit einem minimalen Firmware-Image und nachinstallierten Paketen?

Die Freifunk-Firmware ist - wie OpenWRT Whiterussian - nach dem Flashen in 2 Partitionen auf dem Gerät aufgeteilt. Eine dieser Partitionen verwendet das Dateisystem SquashFS, auf diese Partition kann nur lesend zugegriffen werden. Die andere Partition verwendet das Dateisystem JFFS2, auf diese kann sowohl lesend als auch schreibend zugegriffen werden.

Alle Dateien, die vor dem Flashen in die Firmware integriert werden (vorinstallierte Dateien) landen auf der Nur-Lesbaren SquashFS Partition, alle Dateien die nach dem Flashen hinzukommen, werden auf die JFFS2-Partition geschrieben.

Laut OpenWRT-FAQ hat SquashFS eine "slightly better compression ratio" als JFFS2-Partitionen.
Um die Frage nach diesem "slightly" möglichst anschaulich zu klären eignet sich wohl am besten ein Feldversuch anhand eines praktischen, freifunk-alltagstauglichen Beispiels.


Allgemeiner Vergleich - Vorinstallierte Pakete

pro:

  • Höhere Kompression = geringerer Platzverbrauch der installierten Pakete

contra:

  • Pakete können nach dem Flashen nicht wieder gelöscht werden
    d.h.: vorinstallierte Pakete die nach dem Flashen aktualisiert werden, verbrauchen den "doppelten Speicherplatz"
  • Es muss eine eigenes Firmware-Image gebaut werden, um die Pakete vorzuintegrieren


Ausgangssituation


Versuch 1: Nachinstallierte Pakete

  • Firmwareimage: 1,4 MiB
  • Hinweis: Um vergleichbare Werte für den freien Speicher zu erhalten, wurden nach dem Nachinstallieren der Pakete die heruntergeladenen Paketlisten gelöscht, bevor der freie Speicher ermittelt wurde. (+84kiB freier Speicher)

Paketauswahl (vorinstalliert)

freifunk-botinfo-le_0.1.3_all.ipk     freifunk-theme-blue-le_1.0.0_mipsel.ipk   libpthread_0.9.27-1_mipsel.ipk
freifunk-shlibs-le_0.0.10_mipsel.ipk  freifunk-updateagent-le_0.0.1_mipsel.ipk

Paketauswahl (nachträglich über ipkg installiert)

bmxd-0.3-le_alpha-rv972_mipsel.ipk           freifunk-secureadmin-de_1.6.25_mipsel.ipk      packages-standard-le_0.0.1_mipsel.ipk
busybox-awk_1.0.1_mipsel.ipk                 freifunk-statistics-ng-de-le_0.1.8_mipsel.ipk  pmacct_0.11.2_mipsel.ipk
busybox-crontab_1.0.1_mipsel.ipk             iptables-mod-nat_1.3.3-3_mipsel.ipk            rrdcgi1_1.0.50_mipsel.ipk
freifunk-accounting-de_1.6.15-2_mipsel.ipk   kmod-ipip_2.4.30-brcm_mipsel.ipk               rrdcollect_0.2.3-noticks_mipsel.ipk
freifunk-bmx-0.3-le_0.0.11_mipsel.ipk        kmod-ipt-nat_2.4.30-brcm-5_mipsel.ipk          rrdtool1_1.0.50_mipsel.ipk
freifunk-dhcpsplash-de-le_1.6.16_mipsel.ipk  kmod-tun_2.4.30-brcm_mipsel.ipk                xrelayd_0.2-2_mipsel.ipk
freifunk-gwtun_0.0.15_mipsel.ipk             libpcap_0.9.4-1_mipsel.ipk                     xyssl_0.8-4_mipsel.ipk
freifunk-iptables-missing_1.6.25_mipsel.ipk  librrd1_1.0.50_mipsel.ipk                      zlib_1.2.2-2_mipsel.ipk
freifunk-nvbackup-de_0.9.0_mipsel.ipk        libssl_0.9.7f_mipsel.ipk
freifunk-openwrt-compat_1.6.25_mipsel.ipk    openvpn-ssl-nolzo_2.0.5_mipsel.ipk

Speicherplatz Partitionen (df -h)

Filesystem                Size      Used Available Use% Mounted on
/dev/root               960.0k    960.0k         0 100% /rom
/dev/mtdblock/4           2.3M      2.0M    300.0k  87% /rom/jffs
none                    960.0k    960.0k         0 100% /


Versuch 2: Vorinstallierte Pakete

  • Firmwareimage: 2,58 MiB

Paketauswahl (vorinstalliert)

bmxd-0.3-le_alpha-rv972_mipsel.ipk           freifunk-secureadmin-de_1.6.25_mipsel.ipk      librrd1_1.0.50_mipsel.ipk
busybox-awk_1.0.1_mipsel.ipk                 freifunk-shlibs-le_0.0.10_mipsel.ipk           libssl_0.9.7f_mipsel.ipk
busybox-crontab_1.0.1_mipsel.ipk             freifunk-statistics-ng-de-le_0.1.8_mipsel.ipk  openvpn-ssl-nolzo_2.0.5_mipsel.ipk
freifunk-accounting-de_1.6.15-2_mipsel.ipk   freifunk-theme-blue-le_1.0.0_mipsel.ipk        packages-standard-le_0.0.1_mipsel.ipk
freifunk-bmx-0.3-le_0.0.11_mipsel.ipk        freifunk-updateagent-le_0.0.1_mipsel.ipk       pmacct_0.11.2_mipsel.ipk
freifunk-botinfo-le_0.1.3_all.ipk            iptables-mod-nat_1.3.3-3_mipsel.ipk            rrdcgi1_1.0.50_mipsel.ipk
freifunk-dhcpsplash-de-le_1.6.16_mipsel.ipk  kmod-ipip_2.4.30-brcm_mipsel.ipk               rrdcollect_0.2.3-noticks_mipsel.ipk
freifunk-gwtun_0.0.15_mipsel.ipk             kmod-ipt-nat_2.4.30-brcm-5_mipsel.ipk          rrdtool1_1.0.50_mipsel.ipk
freifunk-iptables-missing_1.6.25_mipsel.ipk  kmod-tun_2.4.30-brcm_mipsel.ipk                xrelayd_0.2-2_mipsel.ipk
freifunk-nvbackup-de_0.9.0_mipsel.ipk        libpcap_0.9.4-1_mipsel.ipk                     xyssl_0.8-4_mipsel.ipk
freifunk-openwrt-compat_1.6.25_mipsel.ipk    libpthread_0.9.27-1_mipsel.ipk                 zlib_1.2.2-2_mipsel.ipk

Paketauswahl (nachträglich über ipkg installiert)

-

Speicherplatz Partitionen (df -h)

Filesystem                Size      Used Available Use% Mounted on
/dev/root                 2.1M      2.1M         0 100% /rom
/dev/mtdblock/4           1.1M    196.0k    956.0k  17% /rom/jffs
none                      2.1M      2.1M         0 100% /


Fazit

Eine Ersparnis von ~650kiB bei dieser Paketauswahl ergibt relativ gesehen einen Speichergewinn von knapp 20% (~650 / ~3200) für den für Programme nutzbaren Speicher. Obwohl diese Paketauswahl eine recht aussagekräftige sein sollte kann die Differenz bei anderen Installationen entsprechend abweichen.

Wenn man davon ausgeht, dass nur einen gewissen Teil der Pakete nachträglich aktualisiert werden wird, so sollte sich die Nutzung von vorinstallierten Paketen generell auszahlen, besonders in den knapp bemessenen Dimensionen von 4MiB Flashspeicher, die ein Großteil der im Freifunknetz eingesetzten Router bietet.


tl; dr

  • Vorinstallierte Pakete: packages-standard-le + openvpn-ssl-nolzo + freifunk-accounting-de = 956kiB freier Speicher
  • Nachinstallierte Pakete: packages-standard-le + openvpn-ssl-nolzo + freifunk-accounting-de = 300kiB freier Speicher
  • Differenz: ~650kiB = 20% mehr Speicher für Programme