Was ist die beste Ressource, um Linux wirklich tief zu verstehen?


10

Ich bin seit vielen Jahren ein Linux-Benutzer. Vor kurzem habe ich es täglich benutzt. Ich suche Vorschläge für Medien; kommerzielle Bücher, kostenlose Informationen, Online-Videos usw., die mir helfen, das Betriebssystem auf einer viel tieferen Ebene zu verstehen. Ihre Vorschläge bitte.

Antworten:


6

Sie finden mehrere kostenlose Anleitungen auf der Seite Anleitungen für The Linux Documentation Project . Dies ist eine kurze Liste, die ich von dort aus auswähle, aber Sie sollten durch die Seite scrollen, um zu finden, was Sie brauchen.

  • Einführung in Linux - Eine praktische Anleitung; Jun 2008
  • Linux unterwegs; November 2005
  • Das Linux-Systemadministratorhandbuch; Juli 2005
  • Advanced Bash-Scripting Guide; März 2009 (ja, das ist auch gut, um Linux zu verstehen)

Sie sollten nach bestimmten HOWTOs für Themen suchen, an denen Sie interessiert sind. Eine andere nach Datum sortierte HOWTO-Liste .

Es gibt einige Starter auf der Linux-Reviews-Anfängerseite .

Schließlich ist dies ein kleines Buch, das online verfügbar ist - Linux Kernel auf den Punkt gebracht . Es ist in PDF-Form der Ausgabe 2007.

Sie sollten diese Referenzen nur als Fühler verwenden, um Ihre eigene Suche nach Dingen zu starten, die Sie benötigen.


Vielen Dank an alle für die tollen Antworten. Der Kernel auf den Punkt gebracht ist ein echtes Juwel. Dies ist die Art von Buch, nach der ich gesucht habe.
Stuart Woodward

16

Der beste Weg, um Linux zu verstehen, besteht darin, es schlecht zu machen und es dann zu reparieren.


Tee-hee ... das gefällt mir. Ich liebe es Dinge zu zerbrechen.
Evan Anderson

1
-1 Das ist ein guter Rat, aber keine Ressource.
Benutzername

1
gute Antwort. Ich habe so viel über Linux gelernt, nur weil ich damit rumgespielt und Sachen ausprobiert habe. Nachdem Sie es vermasselt haben, suchen Sie im Internet nach Möglichkeiten, es zu beheben. Da "Linux" ein so weit gefasster Begriff ist, dass sich in diesem Fall wahrscheinlich mehr auf das gesamte Betriebssystem und die darauf ausgeführten Anwendungen als nur auf den Linux-Kernel bezieht, gibt es nicht wirklich eine einzige gute Ressource, die Sie empfehlen könnten.
Kibbee

2
Es gibt jedoch einige Richtlinien für jede Art von Person, die wir auflisten könnten. Mein persönlicher Favorit ist es, mit der härtesten Distribution zu beginnen und dann eine automagische Distribution zu installieren. Das Brechen von Dingen ist großartig zum Lernen, aber zu wissen, was man zuerst brechen muss, um spezifisches Wissen zu erlangen, ist viel schwieriger. Die meiste Zeit, wenn wir Dinge brechen, lernen wir Dinge, von denen wir nicht einmal wussten, dass wir sie lernen mussten.
Reisende

1
Linux frei und leicht reparierbar in den meisten Fällen sein ist definitiv eine Ressource. Die Erfahrung, mit einem kaputten System zu beginnen und in alle Teile zu sehen (im Gegensatz zu einem kommerziellen Betriebssystem), ist eine enorme Stärke. Die einzige Möglichkeit, ein Problem zu untersuchen und sich darin zurechtzufinden, besteht darin, es zu tun.
Karl Katzke

10

Ich bin mir nicht sicher, ob Sie, wenn Sie eine "tiefere Ebene" sagen, davon sprechen, mehr in die Befehlszeile zu bringen (manche Leute verlassen nie die GUI, die mit ihrer Distribution geliefert wird, wenn Sie sich das vorstellen können) oder wirklich grobkörniges Low-Level-Zeug wie das Schreiben von Kernel-Treibern. Ich werde mehr von ersteren als von letzteren annehmen.

Ich würde Ihnen raten, vernünftige Ziele für Dinge festzulegen, die Sie unter Linux und unter Linux ausgeführten Anwendungen ausführen möchten (einen Webserver ausführen, Dateien für Windows-Hosts bereitstellen, DHCP bereitstellen, einen grafischen Desktop ausführen usw.). Ich bin fest davon überzeugt, dass Sie nur lernen, wenn Sie "tun". Wenn Sie ein Ziel vor Augen haben, verfolgen Sie es. Das bedeutet, dass Sie Manpages (viele, viele Manpages), "HOWTO" -Dokumentation, Mailinglisten-Archive, zufällige Blog-Beiträge und natürlich die Dokumentation lesen, die mit den verschiedenen Programmen geliefert wird, die Sie installieren oder kompilieren, um sie auf Ihrem Computer auszuführen Boxen.

Nachdem ich mehrere Jahre lang IT-Zertifizierungskurse im Klassenzimmer unterrichtet habe, kann ich mit einiger Autorität sagen, dass die Studenten, die ich am meisten Fortschritte gesehen habe, verrückte Projekte ihres eigenen Designs durchgeführt und an den Sitzen gelernt haben ihrer Hosen.

Wie ich bereits sagte, sind Manpages, "HOWTO" -Dokumentation ( http://tldp.org/docs.html und an vielen anderen Stellen im Internet ) und Mailinglistenarchive Ihre Freunde. Zumindest in dieser Phase würde ich mich von Büchern fernhalten, die über Kernel-Interna sprechen. Sie brauchen diese Art von tiefem Wissen nicht, um loszulegen.

Sprich mit anderen Leuten. Server Fault scheint ein großartiger Ort zu sein, um gute Ratschläge zu erhalten. Stellen Sie hier Fragen und denken Sie nicht, dass Sie dabei dumm aussehen werden. Wenn Sie mit Leuten, die mit Linux vertraut sind, etwas Zeit haben, sollten Sie es versuchen. (Obwohl ich empfehlen würde, dass Sie versuchen, die Meinung von der Tatsache zu trennen. In der Linux-Community gibt es ebenso viele "heilige Kriege" über unterschiedliche Meinungen darüber, wie man Dinge macht, wie in jeder anderen Community - vielleicht mehr, angesichts der Art der Community .)

Um wirklich "tiefes" Wissen über das Unix-Erbe von Linux zu erlangen, sollten Sie ältere Unix-spezifische Administrations- oder Referenzhandbücher verwenden. Ich würde mich frühzeitig von diesen fernhalten (zumindest bis Sie die historische Natur der "nicht eingeschlagenen" Pfade unter Linux im Vergleich zu einigen von Unix abgeleiteten Betriebssystemen erkennen können).

Da ich nicht weiß, wie gut Sie insgesamt sind, werde ich einen Gruß an ein Buch richten, das für mich hilfreich ist oder nicht. Ich empfehle "TCP / IP Illustrated" ( http://www.amazon.com/Illustrated-Volumes-Addison-Wesley-Professional-Computing/dp/0201776316 ). Es ist überhaupt nicht Linux-spezifisch, aber Sie werden so viele Dinge tun, die sich mit TCP / IP befassen, dass es ein Kinderspiel ist, zu wissen, dass es "kalt" ist.

Kurz gesagt, ich sage, dass es kein Zauberbuch oder Bücher gibt, keine supergeheimen Videos, aus denen die "Meister" gelernt haben, aber absolut keine Grenze für das, was Sie lernen können, wenn Sie sich daran halten und keine Angst haben um sich die Hände schmutzig zu machen.


10

Nur jahrelange Erfahrung im Umgang mit einzelnen Komponenten gibt Ihnen ein tiefes Verständnis. Trotzdem ist die überwiegende Mehrheit der Bücher von Oreilly Press wirklich gut geschrieben und perfekt, wenn Sie kein Dummy sind und mehr als 24 Stunden Zeit haben. :) :)

Es gibt ein Projekt namens Linux From Scratch , das Ihnen zeigt, wie Sie eine Linux-Distribution aus dem Nichts erstellen. Möglicherweise ist es lehrreich, dies einmal zu tun. Es wird zeitaufwändig sein, da Sie alles aus dem Quellcode kompilieren müssen und am Ende alles wegwerfen werden.

Ich finde die Kernel-Seite von LWN.net von unschätzbarem Wert, um auf hohem Niveau mit der Funktionsweise des Kernels Schritt zu halten.


+1 stimmte LFS FTW
Bandi

7

Abgesehen davon, dass Sie es jeden Tag verwenden (was ich für eine großartige Sache halte!), Empfehlen Sie Ihnen, über Dienste nachzudenken, die für Ihr Netzwerk auf einer Linux-Box implementiert werden könnten. Entwerfen und implementieren Sie es basierend auf Linux-Diensten, recherchieren und implementieren Sie es, sobald Sie bereit sind. Es wird hoffentlich Fehler in diesem Prozess geben, und diese Erfahrung wird Ihnen helfen, das Betriebssystem auf einer tieferen Ebene zu verstehen.


3
Sogar das Erstellen von Linux von Grund auf macht Sinn. Versuchen Sie dies: linuxfromscratch.org
Caterpillar

Beeindruckend! Auf jeden Fall +1!
l0c0b0x

+1 für das Erstellen von Linux aus Scrach. Ich habe in den späten 90ern eine Bootsladung über den Linux-Boot-Prozess, Toolchains und die quasi-eingebettete Entwicklung mit Linux-Installationen auf Basis von uclibc-Floppy-Disketten gelernt. Wenn Sie einen Linux-Computer vom Kernel "von Grund auf neu" booten, erhalten Sie auf jeden Fall eine Menge großartiger Erfahrungen.
Evan Anderson

5

Für die allgemeine Unix-Philosophie und eine hervorragende Einführung in die Befehlszeile gibt es Brian Kernighans und Rob Pikes Klassiker The Unix Programming Environment .

Die IBM DeveloperWorks -Website enthält über 900 Artikel im Linux-Bereich. Sie können die Artikelliste nach Themen durchsuchen, die Sie interessant finden.

Wenn Sie bereit sind, sich auf das Wesentliche einzulassen, gehen Sie schließlich zur Quelle. Holen Sie sich den Quellcode für die Kernel-Version, die Sie auf kernel.org verwenden (Ihre Distribution enthält auch Kernel-Quellpakete, die Sie installieren können), und überprüfen Sie das Dokumentationsverzeichnis. Sie finden viel Referenzmaterial zu Kernel-Interna und Konfigurationseinstellungen.


4

Schule. Um das Linux-System wirklich zu verstehen, benötigen Sie eine Vielzahl von Hintergründen für Informatiksysteme. Compiler, Computerarchitektur und Betriebssysteme. Und Sie brauchen einen Leitfaden, der Ihnen zeigt, was wichtig ist, und eventuelle Missverständnisse korrigiert.

Sobald Sie verstanden haben, wie moderne Prozessoren funktionieren und wie C-Compiler sie nutzen, können Sie in Bücher wie Minix 3 eintauchen :

Minix3

Dies ist die neueste Version des Buches, auf das Torvalds, Autor des Linux-Kernels, seine Arbeit (lose) gestützt hat. Sie lernen die grundlegenden Komponenten und Algorithmen eines Betriebssystems kennen und wie man sie genau implementiert: Der Text enthält einen nahezu vollständigen Druck des Quellcodes an Minix zu Referenz- und Anleitungszwecken. Schauen Sie sich den Interrupt-Handler an, um ein umfassendes Verständnis der Funktionsweise des Systems und des Ablaufs der Steuerung zu erhalten.

Und bevor Sie sich über Schule und Informatik lustig machen, ist es wichtig zu beachten, dass die Aufgaben, die Betriebssysteme ausführen müssen, im Allgemeinen NP-vollständig sind. Das Verständnis einer Vielzahl verfügbarer Algorithmen ist daher für die Leistungsoptimierung von entscheidender Bedeutung, da es keinen nachweislich optimalen Algorithmus gibt.

Neben dem Kernel gibt es eine Reihe weiterer Bereiche. Da Linux Open Source ist, ist dies eine akademische Goldmine. Systeme wie Debian und Ubuntu stellen ihre Quelle zur Verfügung, und das ist ganz einfach:

apt-get source package-name

Viele Upstreams hosten ihren Code auch in der Revisionskontrolle, sodass Sie die aktuellste Version der Quelle eines Programms lesen oder sogar sehen können, wie sie vor Jahren erstellt wurde.


+1 Beule für die Erwähnung "Und Sie brauchen einen Leitfaden, der Ihnen zeigt, was wichtig ist, und eventuelle Missverständnisse korrigiert." Es ist wirklich ein Betriebssystem, das (leider) am besten unter mündlicher Überlieferung verstanden wird.
Avery Payne

3

Die Quelle .

Das natürlich, wenn Sie den Kernel meinen .

Wenn Sie versuchen, das System über dem Kernel und der API zu lernen, würde ich anfangen, alte Schule zu lernen Unix. Vielleicht versuchen Sie es mit FreeBSD / OpenBSD / NetBSD / DragonflyBSD . Ein kleiner Minix könnte auch helfen. Wechseln Sie dann zu Slackware , Arch , Debian und Gentoo . Sie sind alle unterschiedlich ( und kommen mit großer Dokumentation ), und in diesen diferencies, wird Ihre curiousity machen Sie suchen , warum es so ist, können Sie eine Menge technischen gewinnen, Kommerzielles, politischen und historischen Wissens.

Ein anderer Weg wäre /etc, alte Unix-Handbücher und natürlich Google zu lesen .

Linux von Grund auf ist eine großartige Möglichkeit für learningGNU / Linux.


3

Beginnen Sie einfach mit dem Aufbau Ihrer eigenen Distribution. Ich habe es für dich getan und weißt du was? Nach 4 Monaten habe ich mehr Zeit mit Linux-Interna verbracht als mit Leuten um mich herum, die Linux seit mehr als 10 Jahren verwenden.


3

Das Lernen in einer der * nix-Umgebungen ist ein ganzheitlicher Ansatz. Es beinhaltet eine Reihe von Offenbarungen und Erfahrungen . Dies ist kein Zufall. Es ist das absichtliche Nebenprodukt seines Designs, da die ursprüngliche Umgebung um und für Computerprogrammierer entworfen wurde. Es ist auch das größte Manko, da der Schwerpunkt auf technischen Aspekten und nicht auf der Benutzererfahrung liegt. Es ist "ein Haus mit einem stabilen Rahmen, der 100 Jahre ohne Service hält, aber sein Abstellgleis ist willkürlich und die Farbe wird eindeutig vernachlässigt".

Vergleichen Sie dies mit Windows, dem Spiegelbild dieser Philosophie - tun Sie etwas, das dem Benutzer eine greifbare Erfahrung bietet, aber schützen Sie ihn vor dem Innenleben der Dinge. Es ist "ein Haus mit schönen Verzierungen und Farben, aber das Fundament, das mehrmals mit mehreren Umgehungen überbaut wurde".

Um wirklich zu lernen, würde ich vorschlagen, benutzerdefinierte Kernel-Images mit spezifischen Optionen für Ihre Hardware zu erstellen und diese mit den gewünschten Optionen zu installieren. Sie sollten voll und ganz damit rechnen, dass irgendwo etwas kaputt geht und Sie möglicherweise in der Lage sind, die Dinge auf "normal" zurückzusetzen. Dies ist ein normaler Teil dieses Lernprozesses, und Sie sollten sich dem so nähern, als würden die Dinge kaputt gehen (dh machen Sie dies nicht zu einer primären Installation, verwenden Sie ein separates Laufwerk oder eine virtuelle Maschine oder so etwas ...).

Ich habe eine Antwort auf eine ähnliche Frage gegeben . Um die Eingabe zu reduzieren, werde ich sie hier vernetzen . Sie sollten auch die ersten Absätze auf dieser Seite lesen , um ein besseres Gefühl für das zu bekommen, worauf Sie Lust haben .


2

Beginnen Sie mit dem Lesen / Cat'ing von Dateien in /procund /etc- Sie werden keinen Schaden anrichten, indem Sie einfach die Dateien lesen (außer vielleicht Ihre Terminal- / SSH-Verbindung zu vermasseln, wenn Sie eine Datei katzen, die binäre Informationen erzeugt), und vieles davon ist menschlich lesbar. ' sysctl -a' Produktion ist auch eine Goldmine. Wenn Sie etwas Interessantes finden, googeln Sie oder erhalten Sie manweitere Informationen dazu.

Sie können einige echte Juwelen darüber finden, wie der Kernel und das Betriebssystem auf diese Weise funktionieren.

Ein paar kurze Hinweise:

/ etc / inittab
/etc/rcS.d
/etc/rc2.d
/ etc / crontab
/ proc / 1 / environ
/ proc / Dateisysteme
/ proc / meminfo
/ proc / cpuinfo
sysctl -a | grep vm.swappiness
/ etc / default # debian-basiert
/ etc / sysconfig # redhat-basiert

Schneller Tipp - Einige Ausgaben in / proc sind NUL-getrennt und daher schwer zu lesen. Verwenden Sie 'tr', um die NULs in Zeilenumbrüche umzuwandeln, z.

sudo cat / proc / 1 / environ | tr '\ 0', '\ n'

2

Es gibt viel über Linux oder ein anderes Betriebssystem zu lernen. Eine Art des Lernens ist das, was ich als "vertiefendes" Lernen bezeichne. Dabei geht es darum herauszufinden, wie der Kernel funktioniert, welche Annahmen er trifft, wie die verschiedenen Bits miteinander kommunizieren und wie er mit Hardware umgeht. Das ist Kernel-Zeug. Solche Dinge sind sehr nützlich, um herauszufinden, warum das Betriebssystem genau so kaputt gegangen ist. Tatsächlich habe ich es genauso gelernt wie Karl Katzke . Ich habe Sachen kaputt gemacht und es besser gemacht.

Für diese Art von Wissen ist Linux ziemlich einfach. Es ist alles an vielen Stellen dokumentiert. Das gleiche kann nicht sein ganz für Windows sagt, obwohl es immer noch eine Menge doc da draußen für sie ist.

Dann gibt es das Lernen, sich im Betriebssystem zurechtzufinden, bei dem das Wissen über Bash / Sed / Awk / Regex und all diese anderen Dinge nützlich ist. Tatsache ist, dass ein Betriebssystem heutzutage viel mehr als sein Kernel ist. Sie haben vom Hersteller bereitgestellte Treiber-Blobs. Sie haben, wie diese bestimmte Distribution ihre Startskripte verpackt. Sie haben verschiedene Patch- / Update-Mechanismen. Sie haben Systemdämonen, die jeder braucht, aber keinen Kernel.

Dies ist ein viel breiteres Wissensspektrum als einfaches Kernel-Fu. Es variiert je nach Distributor, sodass die Funktionsweise von Red Hat unter Slackware möglicherweise nicht gleich funktioniert. Wo Dateien aufbewahrt werden, kann variieren. Wie kann das, was sie ausgewählt haben, um 'vi' zu ersetzen.

Beim "Lernen von Linux" geht es mehr um das Erlernen eines gesamten Ökosystems als um ein einfaches Betriebssystem.


1

Ich hatte ein Buch namens "Linux Programming", das mir mehr über das Betriebssystem beibrachte als jedes andere "Learn Linux" -Buch. Ich wünschte, ich hätte die ISBN-Nummer, aber es war erstaunlich ... zum Teil, weil es in die Programmierung "Warum" ging, nicht nur in das "Wie".

Insgesamt war der größte Teil meines Lernens ehrlich, indem ich es gebrochen und repariert habe. Es passierte langsam und ich lerne nach 12 Jahren immer noch neue Dinge.

Es ist definitiv ein Prozess. Der Schlüssel ist, sehr, sehr neugierig zu sein. Wenn Sie auf etwas stoßen, mit dem Sie nicht vertraut sind, machen Sie sich damit vertraut. Informieren Sie sich darüber, wie und warum es tickt, und lernen Sie auch die zugrunde liegenden Technologien kennen.


1

Ich fand es eine gute Möglichkeit, viel über Linux zu lernen, wenn ich mich durch Linux, FreeBSD, OpenBSD, Solaris und dann sogar durch verschiedene andere Linux-Distributionen bewegte. Wie es die Dinge anders gemacht hat. Sie lernen so viel über Ihre Heimatstadt, während Sie andere Orte besuchen, als Sie wissen, wo Sie sich befinden.


1

Wenn es um Bücher geht, mag ich die O'Reillys, daher sind "Essential System Administration Pocket Reference" und "Linux System Administration" mögliche Ausgangspunkte.

Meine Kopie der TCP / IP-Netzwerkadministration ist älter und ich habe sie eine Weile nicht mehr verwendet, aber ich fand es sehr nützlich, ein tieferes Verständnis der Vorgänge zu erlangen.


1

Sie machen bereits den ersten Schritt, indem Sie Linux als regulären Desktop verwenden.

Wenn Sie verstehen möchten, wie alle Teile miteinander verbunden und konfiguriert sind, würde ich empfehlen, Gentoo auszuführen . Bei einer regulären Stage3-Installation müssen Sie Ihren eigenen Kernel kompilieren, alle Ihre Dienste installieren (mit Ausnahme von SSH, das sofort verfügbar ist), X selbst erstellen und konfigurieren usw. Wenn Sie dies tun, erhalten Sie einen viel besseres Verständnis aller Bits, die in einer binären Linux-Installation enthalten sind. Es schadet auch nicht, dass Gentoo die beste Dokumentation aller von mir gefundenen Distributionen hat oder dass portage ein fantastisch leistungsfähiger und flexibler Paketmanager ist.



1

Jemand anderes hat dies erwähnt, und ich denke, es hat mir am meisten geholfen, verschiedene Linux-Aromen zu verwenden. Wenn Sie der Meinung sind, dass Sie einen vernünftigen Umgang mit Linux haben, verwenden Sie open / net / freebsd.
Die meisten Linux-Leute, mit denen ich gearbeitet habe, verwenden möglicherweise ein oder zwei Linux-Distributionen, die sich nicht allzu sehr von den anderen unterscheiden. Sicher, die meisten von ihnen kannten diese Distributionen wie ihre Westentasche, aber sie konnten mit bestimmten Dingen immer noch alarmierend überrascht werden. Ich denke (um keinen Flammenkrieg zu beginnen), dass die Art und Weise, wie die BSDs zusammengesetzt werden, ein wenig einfacher ist, das "Warum" der Art und Weise herauszufinden, wie Dinge getan werden (und auf den bsd-Mailinglisten zu lauern, erklären sie das "Warum" zu Tode ). Es kommt darauf an, Ihre Sichtweise zu ändern. Es kann Ihnen nie in den Sinn kommen, zu fragen, warum bestimmte Dinge so sind, wie sie sind, bis jemand es auf eine ganz andere Art und Weise tut.


1

Dieser Beitrag auf Stackoverflow enthält eine große Liste von Unix / Linux-Ressourcen, einschließlich der meisten kanonischen Arbeiten zu diesem Thema.

Eine andere Möglichkeit zu lernen, was Linux hinter den Kulissen bewegt, besteht darin, Linux From Scratch ( http://www.linuxfromscratch.org/ ) zu verwenden. Es handelt sich im Wesentlichen um eine Reihe von Übungen zur manuellen Installation und Konfiguration der verschiedenen Komponenten eines Linux-Systems. Es ist eine sehr gute Einführung, um die Schrauben und Muttern daraus zu lernen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.