Es gibt ja mittlerweile eine ganze Reihe von vorkompilierten Linux-Kernel-Paketen für den Eee PC (z.B. hier für Ubuntu). Meistens beschränken sich die Änderungen jedoch auf Anpassungen an die Hardware mit neuen oder veränderten Treibern. Manchmal wird zusätzlich noch für den Celeron M-Prozessor optimiert. Aber sonst wird meistens weiterhin die Standard-Konfiguration der Ziel-Distribution verwandt.
Dies finde ich aus zwei Gründen nicht sinnvoll:
- Kernel für Distributionen sind meist sehr generisch. Sie beinhalten alle möglichen Treiber und verzichten auf mögliche Optimierungen.
- Die Standard-Konfigurationen sind über Jahre gewachsen und werden selten auf ihren Sinn überprüft.
So auch die Standard-Konfiguration von Ubuntu. Dort werden zum Teil Optionen genutzt, die schon bei der vorletzten Kernel- und GCC-Generation ihren Sinn verloren hatten. Hier einige Beispiele:
- CONFIG_EMBEDDED: Diese Option wird verwendet um durch den Ausschluss vermeintlich überflüssiger Kernel-Funktionen den Kernel zu verkleinern. Die dafür eigentlich vorgesehene Option CONFIG_SIZE, wird nicht genutzt, da die vorletzte GCC-Version damit mal Probleme hatte.
- CONFIG_BLK_DEV_XD: Es dürften wohl nicht mehr viele Festplatten mit XT-Interface im Umlauf sein. Überflüssig. Ist zwar ein ladbares Modul, müsste aber wirklich nicht mehr übersetzt werden. (Und meiner Meinung nach könnte man heute auch gut auf den Floppy-Treiber verzichten!)
- BLK_DEV_RAM: Seit es das tmpfs gibt und der Kernel beim Booten statt initrd das initramfs benutzt, braucht das auch so gut wie keiner mehr.
Oftmals werden auch Optionen aktiviert die für 99% der potentiellen Nutzer niemals Sinn machen:
- PARTITION_ADVANCED: Damit wird einem die Möglichkeit gegeben Partitionen von u.a. esoterischen Acorn-Formaten aus dem letzten Jahrtausend zu lesen. Außer für Forensiker und Archäologen wohl eher uninteressant.
- CONFIG_IP_ADVANCED_ROUTER: Diese Option ist für dedizierte Router gedacht und nicht für den Rechner von Otto Normalbenutzer, auch wenn er vielleicht den ADSL-Zugang mit anderen Rechnern teilt.
- CONFIG_TCP_MD5SIG: Diese Option macht wirklich nur Sinn für sog. „Border-Router“ zwischen Autonomen Systemen, die ihre Routing-Informationen mittels BGP austauschen. Also für faktisch niemanden auf diesem Planeten, außer Backbone-Betreibern oder großen Internetkunden (z.B. Firmen oder Universitäten). So diese Linux einsetzen, wird mit Sicherheit eine Spezial-Distribution verwendet.
- CONFIG_INFINIBAND: Das sollten ebenfalls die wenigsten haben. Und wer einen Cluster mit Infiniband besitzt, betreibt den mit Sicherheit nicht mit einem Standard-Ubuntu-Image.
Langer Rede kurzer Sinn: Oftmals ist weniger einfach mehr. Und beim Eee PC kann man zusätzlich noch auf Vieles verzichten, was auf kommerziellen Mehrbenutzersystemen Standard ist, aber auf einem „Netbook“ nicht wirklich benötigt wird:
- Auditing
- Acounting
- Multiprozessor- und Multithreading-Support
- Virtualisierung
In einer ersten Iteration ist es mir damit gelungen die Kernel-Binärdatei von 1756984 Byte auf 1329216 Byte zu reduzieren. Ganz zu schweigen von den ganzen ladbaren Modulen, die nicht erzeugt wurden.
Fortsetzung folgt…
1 Antwort bis hierher ↓
seufz // 2008-07-30 um 19:03 |
Ich glaube damit hast du dein damaliges dasein als Debian Entwickler bestätigt…
Bin sehr beeindruckt.