# Linux von Grund auf verstehen lernen...

## CrazyDave

Hallo, 

ich bin eigentlicht gar nicht mehr so neu in der Linux-Welt, aber ich bin weit davon entfernt, das zu sein, was man einen erfahrenen Linuxer nennen könnte...  :Wink: 

Und aus eben diesem Grund wende ich mich jetzt Gentoo zu, da Gentoo eine Quellcode-Basierte Distribution ist... (dachte ich, aber ich seh gar nichts davon... ^^)

Ich hab die Live-CD eingelegt, und konnte ohne weiteres Gentoo installieren...  :Wink:  Ich dachte, da müsste ich jetzt Makefile um Makefile kompilieren lassen und mir dann mein System zusammentüfteln...  :Wink: 

Also für mich steht hier mal der "akademische" Aspekt im Vordergund - ich möchte einfach mal Linux, was drin steckt und das ganze drum herum verstehen lernen. Leider scheint's da ja auch was das angeht keine hilfreichen Bücher zu geben. Da hätte ich mir halt was vorgestellt, das wie ein klassisches Mathematik-Buch aufgebaut ist. Man hat was (Gruppe, Körper, etc... hier dann eher Bootloader oder so...) und arbeitet sich dann davon ausgehend weiter.

Also was mir jetz die größte Freude bereiten würde wäre:

- Ich habe den SourceCode für alles was ein minimales funktionierendes System (ich bin schon glücklich, wenn das System gar nix kann, es läuft halt und ich hab 'ne shell auf der ich z.B. mit "cd /" in das Wurzelverzeichnis wechseln kann und dort "ls -lah" eingeben kann ) ausmacht in einem Verzeichnis auf meinem PC...  --> Frage: Wie komm ich zu den Quelltexten? Auf meiner CD gibt es kein Verzeichnis "src" oder so... verlangt nicht die GPL sowieso schon, dass alle Quelltexte mitgeliefert werden? 

- Ich kompilier mir mir "make menuconfig; make" meinen Kernel und kompilier mir noch alles andere was ich sonst so gerne hätte (echo, cat, kill, touch, rm, su, chmod, cp, dd, df, ln, dpkg, dmesg, grub, mount/umount....), dann kopier ich die ganzen Sachen in mein Ziel-Filesystem und installiere Grub...

- Dann starte ich ich mein gerade von Hand erstelltes Linux und freu mich wenn's geklappt hat... ansonsten versuch ich das nochmal von vorne...  :Wink: 

- Wenn's geklappt hat schreibe ich ein shell-skript, das das was ich eben noch selber gemacht hab automatisch durchzieht. Und wenn das auch geklappt hat, dann freu ich mich wieder... xD 

Also ich denke bei den geringen Anforderungen die ich da gerade hab sollte mein USB-Stick locker zum Testen ausreichen... Kernel + Shell + die paar Standardwerkzeuge brauchen ja sicher nicht mehr als 20 MB Speicher ^^ 

Gibt's vielleicht ein gutes Buch, das sich auf dieser ganz niedrigen Ebene bewegt, den Bootvorgang beschreibt und das was dann im Kernel passiert bis schließlich der erste Prozess gestartet wird... wie gesagt, mir geht's dabei darum was zu lernen und nicht irgendwas fertiges, vorgekochtes zu genießen... ^^

Würde mich freuen, wenn mich da jemand in die richtige Richtung schubsen könnte...  :Wink: 

Viele Grüße

David  :Smile: 

----------

## py-ro

Linux from Scratch

Py

----------

## SvenFischer

Ich habe keine Erfahrungen mit LFS gemacht, nur hört sich das so an, das der Wartungsaufwand enorm ist. Ich habe es so in Erinnerung, das es mehr zu Studienzwecken geeignet ist.

Gentoo nimmt einem scheinbar deutlich mehr Arbeit ab und ist ein Mittelding zwischen LFS und RPM/DEB Distros.

----------

## CrazyDave

Ja, so 'n ähnlichen Gedanken hatt ich auch schon... 

aber meine erste Frage wär ja scho, woher ich meinen Packen an Quellcodes bekomm...  :Wink: 

----------

## doedel

Lies doch mal ein bisschen durch die Doku.

Portage (emerge) nimmt dir den wiederlichen Teil ab. Es lädt die Quellpakete runter (landen in /usr/portage/distfiles), lässt configure-scripte rennen und compiliert dann (make, make install).

Auch andere "Kombinationen" von configure/make/... sind möglich, es kann auch ein Shell-Script ausgeführt werden. Dazu sind die ebuilds da.

----------

## Necoro

Wie doedel schon schrieb: Portage legt den Quellcode in /usr/portage/distfiles ab (sofern nicht geändert) ...

wenn du ein Paket entpacken willst, kannst du das mit "ebuild /pfad/zum/ebuild unpack" machen  :Smile:  - ich hab mir dafür mal folgende Shellfunktion gebaut:

```
unpack () {

   ebuild $(equery w -m $1) clean unpack

}
```

Mit unpack some_package entpackt es die höchste Version des Paketes  :Smile: 

----------

## think4urs11

Verschoben von Deutsches Forum (German) ins Diskussionsforum, paßt hier besser rein.

----------

## Knieper

Willst Du lernen, wie Linux funktioniert oder wie man Abhängigkeiten auflöst, Quelltexte übersetzt und Dateien an die richtigen Orte kopiert? Klingt eher nach letzterem. Ansonsten würde ich Dir empfehlen, bau Dir ein kleines funktionierendes System zusammen und arbeite Dich Schritt für Schritt nach "oben" vor. Bootloader (hier eher Infos aus dem Netz + evtl. Quelltext lesen, recht unspektakulär), Initsysteme (Varianten vergleichen, mal ein anderes installieren (Lerneffekt bei minit ist nett) und aus den vorhandenen Skripten Deines Systems konfigurieren), dann die Kommandozeilenprogramme (+ Shell - Pipes, FIFOS...) und dann erst zurück zum Kernel (Aufbau, Dateisysteme, Scheduling...).

----------

## fangorn

Bei deinem gewünschten Pensum ist Linux from Scratch sicher momentan die bessere Wahl. Die "Distribution" besteht eigentlich nur aus einer Anleitung wo drinsteht

1. was brauche ich

2. wo bekomme ich es her

3. was für optionen hat es

Was du daraus machst ist dann dir überlassen. 

Gentoo und Portage nehmen dir schon viel zuviel vom Spaß ab.   :Twisted Evil: 

Wenn du dann beim dritten oder vierten Update genug von LFS hast kommst du wieder zu Gentoo und freust dich, dass du nicht mehr alles von Hand machen musst.   :Wink: 

----------

## doedel

 *Quote:*   

> Wenn du dann beim dritten oder vierten Update genug von LFS hast kommst du wieder zu Gentoo und freust dich, dass du nicht mehr alles von Hand machen musst. 

 

Eben, da ist gentoo meiner Meinung nach genau der richtige Mittelweg von Handarbeit und abgenommener Arbeit. Denn was bringt es dir wenn du zum 728ten mal ./configure && make && make install tippst? Zumal du dann noch nichtmal einen Paketmanager hast, der abhängigkeiten ordentlich auflöst oder das Paket wieder aus dem System fischt.

Das wirklich interessante, nämlich das Einrichten der Software die du gerade compiliert hast, machst natürlich noch du.

----------

## CrazyDave

Ja, Knieper trifft das schon sehr gut...  :Smile: 

Also wenn ich die coreutils von Hand kompliere und in das Dateisystem kopiere, dann ist das ja gut und recht... aber bei anderen Programmen möcht ich mich eigentlich nicht mehr darum kümmern müssen Abhängigkeiten selbst auflösen zu müssen. Da auf einen Paketmanager zu verzichten fände ich nicht sehr schlau. Ich hab hab mir LFS angeschaut, aber so wirklich glücklich macht mich das nicht - ach wenn LFS eigentlich gar nicht sooo daneben ist.

Mich interessieren in erster Linie eher Sachen wie...

 - der Bootloader

 - was für Alternativen man zu init hat 

 - ob es sinnvoll wäre die Standard-Shell sh durch Z-Shell zsh oder so zu ersetzen

 - ... 

Naja, eigentlich möcht ich beides lernen was Knieper gesagt hat  :Wink:  Das ist ja beides wichtig   :Exclamation: 

Ich denke, dass Gentoo für mich schon der richtige Ansatz ist.

Ein Freund meinte, ich sollte doch mal versuchen Gentoo selbst von Stage1 an von Hand aufzubauen - sprich:

Ich fang mit einer LiveCD auf der ein Compiler enthalten ist, und kompiliere mir dann stück für Stück was ich so brauch...  aber leider hab ich dazu noch keine Informationen finden können.

Also ist für mich im Moment der ineressanteste Weg, der, vom Sourcen komplilieren bist zum Paketmanager. Das heißt ein System von Hand aufzubauen bis zu dem Punkt an dem ich meinen Paketmanager einsatzbereit habe. Dann bin ich happy.

Wird das überhaupt noch gemacht, dass man sein Gentoo Stage um Stage selber hochzieht. Ich hab davon gar nichts mitbekommen, als ich's installiert hab.

Der Installer ist so komfortabel, dass er alles automatisch gemacht hat... also nicht, dass das jetz schlecht wär, nur wär mir in diesem Fall eben wohl ein bisschen weniger "Komfort" lieber gewesen.  :Wink: 

[ Das hier nur am Rande - gehört eigentlich nicht ganz in dieses Thema rein...

---->

Mein erstes Problem fängt eigentlich schon beim Bootloader an...  :Wink: 

da ich ein MacBook habe und im MacBook (zum Glück) ein EFI statt 'nem BIOS drin steckt, das EFI aber nunmal nach ner GPT und nicht nach dem MBR ausschau hält... bisher hab ich das nur in einem zweistufigen Startvorgang geschafft, ein lauffähiges Linux (in diesem Fall Debian) starten zu können... Ich hatte refit installiert, dass in einen BIOS-Kompatibilitätsmodus wechselt und konnte von refit aus Debian starten, mit dem ich der GPT einen MBR "untergemogelt" habe. Naja als nächstes werd ich dann ausprobieren ob ich es schaffe elilo zu installieren und mit elilo ein lauffähiges system starten zu können... ihr seht... es sind schon "Kleinigkeiten" die mir hin und wieder Schwierigkeiten bereiten.  :Wink: 

<---- 

]

----------

## Knieper

 *CrazyDave wrote:*   

> Ja, Knieper trifft das schon sehr gut... 

 

Prima, so habe ich auch angefangen.

 *Quote:*   

> Naja, eigentlich möcht ich beides lernen was Knieper gesagt hat  Das ist ja beides wichtig  
> 
> Ich denke, dass Gentoo für mich schon der richtige Ansatz ist.
> 
> Ein Freund meinte, ich sollte doch mal versuchen Gentoo selbst von Stage1 an von Hand aufzubauen

 

Falls Du meine Meinung dazu hören willst: bau ein kleines LFS für den Systemkern auf, lösche es und installiere Gentoo (oder T2, Arch zB. ist Müll) und beschäftige Dich mit anderen Subsystemen und Anwendungen. Stage 1 bringt Dir gar nichts an Verständnis, auch wenn es einige Leute behaupten.

 *Quote:*   

> Das hier nur am Rande - gehört eigentlich nicht ganz in dieses Thema rein...

 

Da hast Du doch schon Deine erste Motivation. Wichtig ist bei jedem Thema das Du angehst:

1.) verstehen, was es macht

2.) verstehen, wieso es das genauso macht wie es das tut (gibt's Standards, gab's Monopolsoftware und damit Quasistandard-APIs)

3.) gucken, wie Alternativsysteme oder -programme das Problem lösen

4.) drüber nachdenken und Häßlichkeiten finden  :Smile: 

Irgendwann entwickelst Du dann einen Blick für gute und schlechte Lösungen. Kann allerdings auch ziemlich deprimierend sein, wenn man weiß mit welchem Rotz man in der IT abgespeist wird. Das Linuxuserland ist so ein Beispiel, die Kommandozeilenprogramme haben noch nie etwas von einheitlichen Parametern gehört, die grafischen Anwendungen noch nie etwas von Usability und die meisten Bibliotheken und Programme sind softwaretechnisch irgendwo in den 80ern hängengeblieben inkl. aller damaligen Fehler. Die BSDs sind da auch nicht besser - wegwerfen und neu schreiben.

----------

## doedel

 *Quote:*   

> Falls Du meine Meinung dazu hören willst: bau ein kleines LFS für den Systemkern auf, lösche es und installiere Gentoo (oder T2, Arch zB. ist Müll) und beschäftige Dich mit anderen Subsystemen und Anwendungen. Stage 1 bringt Dir gar nichts an Verständnis, auch wenn es einige Leute behaupten. 

 

Das mit der Stage 1 ist so, du bekommst ein noch minininimaleres "Grundgerüst" als die anderen Stages und es compiliert einfach alles nochmal von Grund auf, was ich aber für Quarks erachte. Vom Compilieren bekommst du wirklich nur mit, wie lange es braucht, mehr aber auch nicht.

Das ist so ähnlich, als würdest du ein "emerge -e system" machen. Da wird das "system" einfach nochmal neu compiliert OHNE bisherige Abhängigkeiten zu berücksichtigen, sprich er denkt die Kiste ist leer.

Was du auch machen kannst, ist mit der ROOT Umgebungsvariable zu spielen. Damit veränderst du ein Root-Verzeichnis.

Am einfachsten wäre du hast noch eine Partition (2-3GB reichen völlig zum spielen) und installierst dir da rein, was du brauchst.

Dann gibst du im Grub einfach nochmal den selben eintrag an, nur die Partition, auf der du gerade rumbastelst.

Ein sinnvoller Anfang wäre (noch lange nicht komplett! aber damit solltest du zumindest schon einmal eine Shell bekommen):

```

ROOT="/mnt/basteln" emerge -av coreutil bash ncurses (vim und/oder) nano sysvinit

```

Pakete wie gcc würde ich erst reinpacken, wenn du das Teil mal gebootet bekommst. Da gibts (gab's? weiss nich genau, wiki ging ja mal drauf) einen Wiki-Artikel für ein USB-Mini-Gentoo, da sieht man das recht deutlich, wurde auf die selbe Weise gemacht.

So weisst du "aha coreutils brauch ich" und die Abhängigkeiten sucht Portage dir Automatisch zusammen. Ausserdem ist "chroot /mnt/basteln" dann noch recht praktisch  :Wink: 

----------

## AmonAmarth

 *CrazyDave wrote:*   

> Wird das überhaupt noch gemacht, dass man sein Gentoo Stage um Stage selber hochzieht. Ich hab davon gar nichts mitbekommen, als ich's installiert hab.
> 
> Der Installer ist so komfortabel, dass er alles automatisch gemacht hat... also nicht, dass das jetz schlecht wär, nur wär mir in diesem Fall eben wohl ein bisschen weniger "Komfort" lieber gewesen. 

 

also das hört sich jetzt nach dem graphischen installer an, der funktioniert inzwischen?   :Shocked: 

wenn du was lernen willst mach doch einfach die installation nach der offiziellen variante im handbuch. da gibst du genau jeden befehl selber ein und ich glaube das ist doch das was du möchtest!

mfg

----------

## Max Steel

Das Handbuch ist mehr als nur ein einfaches How-to-do.

Es erklärt auch die Hintergründe, warum die Befehle so und so sind, und warum amn das und das so und so machen sollte.

(Nicht das du was falsches denkst)

Allerdings würde ich trotzdem ein emerge -1 glibc gcc libtool binutils && emerge -e @system nach dem /etc/make.conf anpassen anwerfen, so hatte ich bisher am wenigsten Probleme mit dem ganzen ^^

----------

## musv

 *CrazyDave wrote:*   

> - ob es sinnvoll wäre die Standard-Shell sh durch Z-Shell zsh oder so zu ersetzen

 

Auf dem Chemnitzer Linuxtag war mal so ein ZSH-Jünger, der das Ding in den Himmel gelobt hat. Bei der sysrescue-cd ist die Z-Shell Standard. Naja, ich komm mit der Bash besser zurecht, wobei die zsh schon ein paar nette Features hat (z.B. Verbesserung bei Falscheingabe von Befehlen.). Die Parameterkompletierung per Tab kriegt die Bash mittlerweile auch hin. Ist wohl Geschmacks- und Gewohnheitsfrage. 

(Inoffizielle) Stage1-Anleitung gibt's hier:

https://forums.gentoo.org/viewtopic-t-570632.html

Darin wird ein Script vorgeschlagen. Das hab ich allerdings auch alles manuell gemacht. 

 *CrazyDave wrote:*   

> Also ist für mich im Moment der ineressanteste Weg, der, vom Sourcen komplilieren bist zum Paketmanager. Das heißt ein System von Hand aufzubauen bis zu dem Punkt an dem ich meinen Paketmanager einsatzbereit habe. 

 

Für die stage1 brauchst du den entsprechenden Tarball. Und schon da ist der Paketmanager enthalten.

 *CrazyDave wrote:*   

> Wird das überhaupt noch gemacht, dass man sein Gentoo Stage um Stage selber hochzieht. Ich hab davon gar nichts mitbekommen, als ich's installiert hab. Der Installer ist so komfortabel, dass er alles automatisch gemacht hat... also nicht, dass das jetz schlecht wär, nur wär mir in diesem Fall eben wohl ein bisschen weniger "Komfort" lieber gewesen. 

 

Es zwingt Dich niemand, den Installer zu verwenden. Soweit ich mal irgendwo gelesen hab, soll das Ding wohl auch wieder eingestampft werden.

Der Link für das LFS-Handbuch wurde schon weiter oben mal genannt.  Unter Gentoo kannst du das LFS-Handbuch sogar in mehreren Varianten bekommen:

```

* app-doc/linuxfromscratch

     Available versions:  (~)6.3 {htmlsingle pdf}

     Homepage:            http://www.linuxfromscratch.org/lfs

     Description:         LFS documents building a Linux system entirely from source.

* app-doc/linuxfromscratch-html

     Available versions:  [M]6.2 [M](~)6.3

     Homepage:            http://www.linuxfromscratch.org/

     Description:         The Linux From Scratch Book. HTML Format

* app-doc/linuxfromscratch-pdf

     Available versions:  [M]6.2 [M](~)6.3!b!s

     Homepage:            http://www.linuxfromscratch.org/

     Description:         The Linux From Scratch Book

* app-doc/linuxfromscratch-text

     Available versions:  [M]6.2

     Homepage:            http://www.linuxfromscratch.org/

     Description:         The Linux From Scratch Book

Found 4 matches.

```

----------

## Evildad

 *AmonAmarth wrote:*   

> also das hört sich jetzt nach dem graphischen installer an, der funktioniert inzwischen?  
> 
> mfg

 

Ich dachte, dass im Zuge der neuen Release Stategie der graphische Installer tot ist.

Glaube gelesen zu haben, dass er nicht mehr weiterentwickelt wird.

Schade um die "verschwendeten" Ressourcen...

----------

## Knieper

 *musv wrote:*   

>  *CrazyDave wrote:*   - ob es sinnvoll wäre die Standard-Shell sh durch Z-Shell zsh oder so zu ersetzen 
> 
> Auf dem Chemnitzer Linuxtag war mal so ein ZSH-Jünger, der das Ding in den Himmel gelobt hat. Bei der sysrescue-cd ist die Z-Shell Standard. Naja, ich komm mit der Bash besser zurecht, wobei die zsh schon ein paar nette Features hat (z.B. Verbesserung bei Falscheingabe von Befehlen.). Die Parameterkompletierung per Tab kriegt die Bash mittlerweile auch hin. Ist wohl Geschmacks- und Gewohnheitsfrage.

 

Das war bestimmt Sven Guckes, der rennt überall rum und preist das Ding an. Ich selbst nehme auch die zsh, weil es mir viel Tipparbeit erspart und Bash sich dagegen anfühlt wie Klebstoff zwischen den Fingern - ich habe das Ding immer sofort ersetzt. Früher durch tcsh, später durch zsh. Genau genommen benutze ich aber nur die Completions, globale Aliase, zmv und  [up|down]-line-or-beginning-search-backward auf den Pfeiltasten und selten mal die erweiterten Skriptfähigkeiten. Ftp und was sie noch alles kann, ist mir relativ egal. Ich hab auch keine extensiven Prompts links und rechts, wie in den Beispielen gerne angeführt.

----------

## think4urs11

 *Evildad wrote:*   

> Ich dachte, dass im Zuge der neuen Release Stategie der graphische Installer tot ist.
> 
> Glaube gelesen zu haben, dass er nicht mehr weiterentwickelt wird.

 

Stimmt

 *http://www.gentoo.org/proj/en/releng/installer/ wrote:*   

> 2009-01-13: GLI Officially Deprecated
> 
> A few months ago the Gentoo Release Engineering team changed the way that releases are done to simplfy, automate, and provide more current release media on a more regular basis. One of the consequences of this is that the livecds are no-longer being released. This leaves the installer with no place or function any longer. The installer developers have all moved on to other projects, leaving GLI in an unmaintained state. We can no-longer offer support for the 2008.0-r1 LiveCDs for x86 and amd64, though we expect it to work for those that use it. During this project's five year existence, it has been both a pride for Gentoo and a source of controversy. The Gentoo Handbook is still the official installation method for Gentoo. For those still seeking to do automated gentoo installs, please see the Quickstart project. -Codeman

 

----------

## fangorn

 *Knieper wrote:*   

> ... Stage 1 bringt Dir gar nichts an Verständnis, auch wenn es einige Leute behaupten.
> 
> 

 

 *Quote:*   

> Watching shit scrolling by for hours makes you a linux expert in an instant!

 

Möchtest du dieser Theorie etwa widersprechen?    :Shocked:   :Cool: 

Aber Spaß beiseite. Wie hier schon des öfteren Diskutiert wurde kann man ein Stage 1 System auch ohne den später überflüssigen Overhead eines "Hilfssystems" hinbekommen indem man in einem Stage3 "emerge -e world" laufen lässt. Lerneffekt, da Portage dir alles abnimmt: Null komma Null. 

Wenn man wirklich tief ins System blicken will ist sogar Gentoo zu automatisiert. Hat man einmal ein LFS Grundsystem aufgesetzt hat man es fast zwangsläufig verstanden (was man bei Gentoo nicht wirklich sagen kann  :Wink:  ). Wenn man dann allerdings versucht ein LFS auf dem Laufenden zu halten kommt einem ein Gentoo mit USE="-*" in /etc/make.conf wie Weihnachten, Geburtstag und Ostern am selben Tag vor.   :Twisted Evil: 

----------

## CrazyDave

Hab jetz doch mal einen gründlicheren Blick auf LFS gewagt... hatte ja zuvor Angst, dass mich das überfordern könnte und mich deshalb ein wenig gescheut. Ich bin mir natürlich immer noch nicht sicher ob mich das nicht vielleicht überfordert, aber wenn ich's nicht auspobier, find ich's nie raus  :Wink:  Wird scho schief gehn....  :Wink: 

Der Ansatz scheint mir doch sehr interessant und für das worum's mir eigentlich geht doch der geeignetste zu sein...

Wen's interessiert: Hier gibt's ein Buch im PDF-Format. An diesem Buch werde ich mich jetzt auch orientieren.

 *Quote:*   

> Das Linuxuserland ist so ein Beispiel, die Kommandozeilenprogramme haben noch nie etwas von einheitlichen Parametern gehört, die grafischen Anwendungen noch nie etwas von Usability und die meisten Bibliotheken und Programme sind softwaretechnisch irgendwo in den 80ern hängengeblieben inkl. aller damaligen Fehler. Die BSDs sind da auch nicht besser - wegwerfen und neu schreiben.

 

Du hast großes vor, und das mehr als nur berechtigt! Du denkst häufiger ähnlich wie ich..?  :Wink: 

----------

