# Wie klein kriegt man ein gentoo?

## treibholz

moin,

ich hab hier nen etwas älteren Laptop rumliegen, 486sx16 mit netten 4MB RAM. Bisher hab ich DeLi darauf laufen, aber das ist in mir zu fett und ausserdem ist Slackware scheiße.  :Smile: 

Das Hauptproblem ist die begrenzte Festplatte mit ihren gigantischen 131 MB (davon mach ich 24MiB zu swap und übrig bleiben noch 99MiB für den Rest)

Ich hab nun ein basis-syste, kompiliert, /usr/portage und /var/cache/edb rausgemoved, /var/tmp/portage geleert und es ist immernoch 284MB groß.

Was kann ich noch entfernen? Also python, gcc, perl und so brauch ich auf dem end-system nichtmehr, aber wie unmerge ich das am geschicktesten?

Wo sind die header der ganzen libs?

Gruß

Treibholz.

Und bevor einen fragt: Nein, ich will kein KDE darauf laufen lassen und auch kein X!

----------

## dakjo

Mach es dir doch ganz einfach, bau dir nen statischen kernel.

Installier dir busybox.

Alles was du sonst noch brauchst emerged du als statisches packet und packst das auch suf dem Teil aus. ferig

.oO(Was brauch man ausser busybox noch auf sonem teil ?)

----------

## treibholz

 *Quote:*   

> 
> 
> Mach es dir doch ganz einfach, bau dir nen statischen kernel.
> 
> 

 

das is klar.

 *Quote:*   

> 
> 
> Installier dir busybox.
> 
> Alles was du sonst noch brauchst emerged du als statisches packet und packst das auch suf dem Teil aus. ferig
> ...

 

Ich mag Busybox nicht, ich will ne richtige, komplette, fette bash und ich will ein richtiges find usw.. Bei busybox fehlen mir dauernd irgendwelche Optionen. (z.b. kann busybox nicht case-insensitive suchen)

 *Quote:*   

> 
> 
> .oO(Was brauch man ausser busybox noch auf sonem teil ?)
> 
> 

 

mutt, vim, bc, minicom, irssi, lynx/w3m, ssh, telnet...

Gruß

Treibholz

----------

## mrsteven

Du brauchst nicht wirklich 24MB Swap auf dem Teil: Spätestens wenn er 8MB Swap belegt hat, ist die Kiste sowieso unerträglich lahm. Ich spreche aus Erfahrung, hatte selbst mal Linux auf so einer Gurke (hab mir mein eigenes Linux irgendwie aus einem SuSE-System zusammengebastelt). Hatte 8MB Swap und das war völlig ausreichend. Dass alles, was über bash, jed/vi und Midnight Commander hinausgeht, aus Geschwindigkeitsgründen praktisch nicht benutzbar ist, brauche ich dir wohl nicht zu sagen.

----------

## Genone

Kannst ja mal eins der uclibc Profile ausprobieren, mit glibc wirst du auf so einem System wohl nicht wirklich glücklich:

```
$ equery size glibc

[ Searching for packages matching glibc... ]

* size of sys-libs/glibc-2.3.4.20041102 ]

           Total files : 7606

    Inaccessible files : 1

           Total size  : 217260.87 KiB

```

Ok, das ist jetzt auf nem AMD64 System mit multilib, nptl, linuxthreads und allen locales, man kann das also wohl recht problemlos auf die Hälfte oder sogar noch weniger reduzieren, du wirst aber immer noch einen ziemlich grossen Speicherbedarf haben.

----------

## jannis

Du kannst auf deinem System ein Gentoo zusammenbasteln, alles weghauen, was du nemmer brauchst, alles in eine tar.bz2 und ab auf den laptop (im notfall auf disketten :///).

----------

## Jinidog

Jetzt frag ich mich aber doch wirklich, was du mit so einem Notebook willst.

Außer die Herausforderung, darauf sowas zum Laufen zu bringen, kann ich mir keinen Einsatzbereich vorstellen.

Da wäre noch das Kernelproblem.

Ein 2.6er Kernel ist wahrscheinlich zu groß und würde den halben RAM-Speicher belegen.

----------

## jannis

Zu deiner Frage nach dem Sinn:

Ja, geb' ich dir Recht. aber: Kennt jemand "ELKS"? Das sind Kernel, die auf CPUs ab 8086 laufen. Ich hab' eine Kiste hier mit wahnsinnigen 1024 KByte (1 MB) RAM (286er-CPU) und da läuft Linux drauf.

----------

## blueSceaDa

Das einzigste was mir dazu einfällt, was aber wohl nur minimal etwas bringt ist anstatts -O3 oder -O2 die flag -Os zu nutzen, die kleinere binaries erzeugt (ist dasselbe wie -O2 nur dass es die Optimierungen rauslässt, die die binary vergrößern)

----------

## treibholz

Also ich hab nun ein System mit der uclibc gebaut und war sehr erstaut wie einfach das ging! Einfach nen Symlink ändern und los! Ein paar sachen haben bei "emerge system" nicht gebaut, aber wer brauch sash und module-init-tools?  :Smile: 

Das System war danach um ganze 100MB kleiner als das mit der glibc!

Hab dann gcc, perl und python mit quickpkg binär gepackt und dananch unmerged (um es bei bedarf einfach wieder einbauen zu können). Das System ist nun mit vim und minicom und grub 98MB groß. (Kernel 2.2.26 mit 402kb)

Aus absolut beschissenen Gründen kann ich auf dem Teil leider den PCMCIA-Controller nicht benutzen, da er von keinem Betriebssystem unterstützt wird. Selbst unter DOS (womit das Teil verkauft wurde) laufen nur von HP zertifizierte Karten, wozu meine Orinoco, die ca. 7 Jahre jünger ist, natürlich nicht gehört. HP hat den PCMCIA modifiziert, um davon booten zu können - die Festplatte ist ne 131MB große PCMCIA-Festplatte, darum ist die Unterstützung ein Problem, das hab ich aus ner uralten Mailingliste vom 1996 rausgelesen. Plan war daraus ein kleines wlan-ssh-terminal zu machen.

Aber hier hab ich ein Bild von dem kleinen, süßen Ding für Euch gemacht (so ne Kamera im Handy hat doch ihre Daseinsberechtigung!): 

http://www.sozial-inkompetent.de/pix/Omnibook.jpg

Irgendie isser halt doch sexy!

Im Moment setze ich das Ding als serielles Terminal mit minicom ein, was Sinnvolleres ist mir nicht eingefallen. Habt Ihr bessere Vorschläge?

Gruß

Treibholz

----------

## blueSceaDa

übrigens solltest du auch dinge wie die bash usw. mit der neuen uclibc bauen, dadurch wird diese auch kleiner.

auf meinem laptop hab ich auch eine bash draufgemacht, die mit irgendeiner lightweight version von glibc gebaut wurde, und brauch dadurch auch weniger ram

----------

## treibholz

Das komplette System wurde auf Basis der uclibc gebaut, glibc gibt es auf dem Rechner garnicht.

Treibholz

----------

## blueSceaDa

ah das is intressant .. ok...

muss ich auch ma gugge ob ich sowas mal teste

----------

## treibholz

Ist ganz einfach, Du musst nur den Symlink /etc/make.profile auf ../usr/portage/profiles/uclibc/x86 setzen und ganz normal bootstrappen.

Treibholz

----------

## blueSceaDa

ah ok thx, naja wird wohl dauern bis ich das mal ausprobier ...

----------

## slick

Hat die uclibc eigentlich bekannte Nachteile? Sonst würde die ja jeder nehmen oder?

----------

## _hephaistos_

hi slick,

http://www.uclibc.org/FAQ.html#why

jojo, die MMU is a hund  :Smile: 

hth,

ciao

----------

## treibholz

Schaff erstmal Linux ohne MMU zum laufen zu kriegen... (Linux, nicht ELKS!)

Naja, es baut auch nicht alles mit der uclibc und langsamer ist sie teilweise auch. Ausserdem läuft sie halt nicht mit allen Betriebssystemen.

----------

## moe

 *treibholz wrote:*   

> Schaff erstmal Linux ohne MMU zum laufen zu kriegen... (Linux, nicht ELKS!)

 

```
*  sys-kernel/uclinux-sources [ Masked ]

      Latest version available: 2.6.7_p0-r12

      Latest version installed: [ Not Installed ]

      Size of downloaded files: 34,688 kB

      Homepage:    http://www.uclinux.org/

      Description: uCLinux kernel patches for CPUs without MMUs

      License:     GPL-2

```

Das ist bekannt, oder?

Ich hatte mal für Gentoos als VServer mit user-mode-linux die uclibc ausprobiert, und beim absoluten Basissystem wars nur ne recht kleine Ersparniss. Wenn ich mich recht entsinne waren es 180 statt 220MB (ohne /usr/portage) Und irgendwie wollte er ei mir dann nichts mehr kompilieren, und ich hatte zuwenig Lust mich damit näher auseinander zu setzen..

Was ist eigentlich mit Sachen wie LTSP, also das Ding übers Netz booten, kommt das nicht in Frage?

Gruss Maurice

----------

## blueSceaDa

hmh also wenn uclibc teilweise langsamer ist würde ich eine andere verwenden...

es gibt da noch andere "lightweight"-glibc's; die bash die ich auf meinen laptop irgendwann mal installiert habe, ist mit so einer compiled worden; hab ich mir als package mal irgendwo gesaugt, weil meine bash ziemlich an arbeitsspeicher fraß

//edit: hab gerade den link gefunden, es war "dietlibc"

link: http://www.fefe.de/dietlibc/

----------

## slick

emerge system mit uclibc schlägt fehl weil er bei der sash abbricht... why?

brauch ich die überhaupt? wenn nein, wie werde ich die bei emerge system los?

```

# emerge system

...

gcc --disable-shared -static -s -o sash sash.o cmds.o cmd_dd.o cmd_ed.o cmd_grep.o cmd_ls.o cmd_tar.o cmd_gzip.o cmd_find.o cmd_file.o cmd_chattr.o cmd_ar.o utils.o -lz -lreadline -lncurses

/usr/lib/gcc-lib/i486-pc-linux-gnu/3.3.4/../../../../i486-pc-linux-gnu/bin/ld: cannot find -lc

collect2: ld returned 1 exit status

make: *** [sash] Error 1

!!! ERROR: app-shells/sash-3.7 failed.

!!! Function src_compile, Line 36, Exitcode 2

!!! (no error message)

!!! If you need support, post the topmost build error, NOT this status message.
```

----------

## treibholz

ging mir auch so,  auch module-init-tools haben nicht gebaut (aber die brauch ich ja eh nicht).

Ich hab dann alle Pakete von Hand geemerged und die, die nicht gingen einfach weggelassen.  :Smile: 

dietlibc fällt weg, da sie nicht dynamisch gelinkt werden kann.

Und wenn die uclibc langsamer ist, dann wohl nur auf Rechnern mit genug RAM, aber nicht auf denen mit nur 4MB!  :Smile: 

Übers Netz booten kommt nicht in Frage, da der PCMCIA-Controller nicht unterstützt wird und es dann äusserst kompliziert wird vom Netz zu booten, da das Ding als "Netzwerkdevice" damals nur die serielle Schnittstelle vorsah. Ich weiß weder, ob ich darüber überhaupt booten könnte, noch ob ich das bei den gigantischen Datentransferraten wirklich wollte.  :Smile:  Ausserdem isses immernoch ein mobiles Gerät und sollte auch zumindest in Ansätzen noch tragbar sein.

----------

