Quelle est la meilleure ressource pour vraiment comprendre Linux en profondeur


10

Je suis un utilisateur Linux depuis plusieurs années. Récemment, je l'utilise quotidiennement. Je recherche des suggestions pour les médias; livres commerciaux, informations gratuites, vidéos en ligne, etc. qui m'aideront à comprendre le système d'exploitation à un niveau beaucoup plus profond. Vos suggestions s'il vous plaît.

Réponses:


6

Vous trouverez plusieurs guides gratuits sur The Linux Documentation Project, page des guides . Voici une courte liste que je choisis à partir de là, mais vous devriez faire défiler la page pour trouver ce dont vous avez besoin.

  • Introduction à Linux - Un guide pratique; Juin 2008
  • Linux sur la route; Nov. 2005
  • Guide des administrateurs système Linux; Juillet 2005
  • Guide avancé de Bash-Scripting; Mars 2009 (oui, c'est bien aussi pour comprendre linux)

Vous devriez chercher spécifiques HOWTOs pour les sujets qui vous intéressent. Une autre date liste triée HOWTO .

Il y a quelques entrées sur la page des débutants de Linux reviews .

Enfin, il s'agit d'un petit livre disponible en ligne - Linux Kernel in a Nutshell . C'est au format PDF de l'édition 2007.

Vous ne devez utiliser ces références qu'à titre indicatif pour commencer votre propre recherche de choses dont vous avez besoin.


Merci à tous pour les bonnes réponses. Le noyau en bref est un vrai bijou. C'est le genre de livre que je cherchais.
Stuart Woodward

16

La meilleure façon de comprendre Linux est de le casser et de le réparer.


Tee-hee ... J'aime ça. J'adore casser des choses.
Evan Anderson

1
-1 C'est un bon conseil, mais ce n'est pas une ressource.
nom d'utilisateur

1
très bonne réponse. J'ai tellement appris sur Linux juste en le débloquant et en essayant des trucs. Après l'avoir gâché, vous cherchez sur Internet des moyens de le réparer. Étant donné que "Linux" est un terme si large que dans ce cas, il se réfère probablement plus à l'ensemble du système d'exploitation et des applications qui s'exécutent dessus, plutôt qu'au seul noyau Linux, il n'y a pas vraiment une seule bonne ressource que vous pourriez recommander.
Kibbee

2
Mais il existe des lignes directrices pour chaque type de personne que nous pourrions énumérer. Mon préféré est de commencer par la distribution la plus difficile possible, puis d'installer une distribution automagique. Casser des choses est excellent pour apprendre, mais savoir quoi casser en premier lieu pour acquérir des connaissances spécifiques, est beaucoup plus délicat. La plupart du temps, en cassant des choses, nous apprenons des choses que nous ne savions même pas que nous devions apprendre.
voyager le

1
Linux étant gratuit et facilement réparable dans la plupart des cas est certainement une ressource. L'expérience de commencer avec un système cassé et d'être capable de voir dans toutes ses parties (contrairement à un système d'exploitation commercial) est une énorme force, et la seule façon d'apprendre à rechercher un problème et de s'y retrouver est de le faire.
Karl Katzke

10

Je ne suis pas sûr, quand vous dites un "niveau plus profond", si vous parlez de vous lancer davantage dans la ligne de commande (certaines personnes ne quittent jamais l'interface graphique fournie avec leur distribution, si vous pouvez l'imaginer), ou avec vraiment des trucs de bas niveau comme l'écriture de pilotes du noyau. Je vais supposer plus de la première que de la seconde.

Je vous conseille de fixer des objectifs raisonnables pour les choses que vous aimeriez faire en utilisant Linux et les applications exécutées sur Linux (exécuter un serveur Web, servir des fichiers aux hôtes Windows, servir DHCP, exécuter un bureau graphique, etc.). C'est ma ferme conviction que vous n'apprenez que lorsque vous "faites". Une fois que vous avez un objectif en tête, poursuivez-le. Cela signifie lire des pages de manuel (beaucoup et beaucoup de pages de manuel), de la documentation "HOWTO", des archives de listes de diffusion, des articles de blog aléatoires et, bien sûr, la documentation fournie avec les divers programmes que vous installez ou compilez pour fonctionner sur votre des boites.

Ayant enseigné des cours de certification informatique en classe pendant plusieurs années, je pense pouvoir dire avec une certaine autorité que les étudiants que j'ai vus faire le plus de progrès étaient ceux qui faisaient des projets fous de leur propre conception et apprenaient par les sièges de leur pantalon.

Comme je l'ai déjà dit, les pages de manuel, la documentation "HOWTO" ( http://tldp.org/docs.html et dans de nombreux autres endroits sur le net) et les archives des listes de diffusion sont vos amis. Je m'abstiendrais de tous les livres qui parlent des internes du noyau, au moins à ce stade. Vous n'avez pas besoin de ce type de connaissances approfondies pour commencer.

Parlez à d'autres personnes. Server Fault semble être un excellent endroit pour obtenir de bons conseils. Posez des questions ici, et ne pensez pas que vous allez avoir l'air stupide de le faire. Si vous pouvez avoir du "temps face à face" avec des gens qui connaissent Linux, allez-y. (Bien que je vous recommande d'essayer de séparer l'opinion des faits. Il y a autant de "guerres saintes" dans la communauté Linux sur des opinions différentes sur la façon de faire les choses que dans n'importe quelle autre communauté - peut-être plus, étant donné la nature de la communauté .)

Pour obtenir une connaissance vraiment "profonde" de l'héritage Unix de Linux, vous pouvez opter pour des manuels d'administration ou de référence spécifiques à Unix plus anciens. J'éviterais ces informations très tôt (au moins jusqu'à ce que vous puissiez apprécier la nature historique des "chemins non empruntés" avec Linux par rapport à certains des systèmes d'exploitation dérivés d'Unix).

Ne sachant pas quel est votre niveau de compétence global, je vais lancer un cri à un livre qui peut ou ne peut pas être utile. Je recommande fortement "TCP / IP Illustrated" ( http://www.amazon.com/Illustrated-Volumes-Addison-Wesley-Professional-Computing/dp/0201776316 ). Ce n'est pas du tout spécifique à Linux, mais vous ferez tellement de choses qui traitent de TCP / IP que le savoir "froid" est une évidence.

Je suppose, en bref, je dis qu'il n'y a pas de livre ou de livres magiques, pas de vidéos super secrètes dont les "maîtres" ont appris, mais absolument aucune limite à ce que vous pouvez apprendre si vous vous y tenez et n'avez pas peur pour se salir les mains.


10

Seules des années d'expérience à jouer avec des composants individuels vous donneront une compréhension approfondie. Cela dit, la grande majorité des livres Oreilly Press sont vraiment bien écrits et parfaits si vous n'êtes pas un mannequin et avez plus de 24 heures. :)

Il existe un projet appelé Linux From Scratch , qui vous montre comment construire une distribution linux à partir de rien. Vous pouvez trouver cela instructif à faire une fois. Cela prendra du temps car vous devez tout compiler à partir de la source et tout sera jeté à la fin.

Je trouve la page du noyau de LWN.net inestimable pour suivre la façon dont les choses fonctionnent dans le noyau à un niveau élevé.


+1 a voté pour LFS FTW
bandi

7

En plus de l'utiliser tous les jours (ce qui, je pense, est une bonne chose!), Je vous recommande de commencer à penser aux services qui pourraient être mis en œuvre pour votre réseau sur une box Linux. Commencez à le concevoir sur la base des services Linux, recherchez et implémentez une fois que vous êtes prêt. Espérons qu'il y aura des erreurs dans le processus, et cette expérience vous aidera à comprendre le système d'exploitation à un niveau plus profond.


3
Même la construction de Linux à partir de zéro fait sens. Essayez ceci: linuxfromscratch.org
Caterpillar

Hou la la! Certainement +1 là-dessus!
l0c0b0x

+1 pour la construction de Linux à partir de Scrach. J'ai appris une cargaison sur le processus de démarrage Linux, les chaînes d'outils et le développement quasi intégré à l'aide des installations Linux basées sur disquette de construction uclibc à la fin des années 90. L'amorçage de n'importe quelle machine Linux à partir du noyau "à partir de zéro" vous donnera certainement beaucoup d'expérience.
Evan Anderson

5

Pour la philosophie générale Unix et une excellente introduction à la ligne de commande, il y a le classique environnement de programmation Unix de Brian Kernighan et Rob Pike .

De plus, le site Web DeveloperWorks d'IBM contient plus de 900 articles dans sa section Linux. Vous pouvez parcourir la liste d'articles pour les sujets que vous trouvez intéressants.

Enfin, une fois que vous êtes prêt à entrer dans le vif du sujet, allez à la source. Récupérez le code source de la version du noyau que vous utilisez sur kernel.org (votre distribution aura également des packages source du noyau que vous pouvez installer) et consultez le répertoire Documentation. Vous trouverez de nombreux documents de référence sur les paramètres internes du noyau et les paramètres de configuration.


4

École. Pour vraiment comprendre le système Linux, vous avez besoin d'un large éventail de connaissances en systèmes informatiques. Compilateurs, architecture informatique et systèmes d'exploitation. Et vous avez besoin d'un guide qui peut vous montrer ce qui est important et corriger les malentendus que vous avez ou que vous formez.

Une fois que vous comprenez comment fonctionnent les processeurs modernes et comment les compilateurs C les exploitent, vous pouvez plonger dans des livres comme Minix 3:

Minix3

Il s'agit de la dernière version du livre sur laquelle Torvalds, auteur du noyau Linux, a (vaguement) basé son travail. Vous en apprendrez plus sur les composants fondamentaux et les algorithmes d'un système d'exploitation, et sur la façon exacte de les implémenter: le texte est accompagné d'une impression presque complète du code source sur Minix à des fins de référence et pédagogiques. Consultez le gestionnaire d'interruptions pour obtenir une compréhension complète du fonctionnement du système et des flux de contrôle.

Et avant de vous moquer de l'école et de l'informatique, il est important de noter que les tâches demandées aux systèmes d'exploitation sont généralement NP-complètes. Par conséquent, la compréhension d'une grande variété d'algorithmes disponibles est essentielle à l'optimisation des performances, car il n'y aura pas d'algorithme prouvablement optimal.

En plus du noyau, il existe un certain nombre d'autres domaines. Parce que Linux est open source, c'est une mine d'or académique. Des systèmes comme Debian et Ubuntu mettent leur source à disposition, et c'est très simple:

apt-get source package-name

De nombreux amonts hébergent également leur code dans le contrôle des révisions, vous pouvez donc lire la version la plus récente de la source d'un programme, ou même voir comment il a été construit il y a des années.


+1 bosse pour avoir mentionné "Et vous avez besoin d'un guide qui peut vous montrer ce qui est important et corriger les malentendus que vous avez ou que vous formez." C'est vraiment un OS qui est mieux compris par la tradition orale (malheureusement).
Avery Payne

3

La source .

Bien sûr, si vous parlez du noyau .

Si vous essayez d'apprendre le système au-dessus du noyau et de l'API, je commencerais par apprendre la vieille école Unix. Essayez peut-être quelques FreeBSD / OpenBSD / NetBSD / DragonflyBSD . Un petit Minix pourrait aussi aider. Passez ensuite à Slackware , Arch , Debian et Gentoo . Ils sont tous différents ( et viennent avec une excellente documentation ), et dans ces différences, votre curiosité vous fera chercher pourquoi il en est ainsi, vous gagnerez beaucoup de connaissances techniques, commerciales, politiques et historiques.

Une autre façon serait d'aller creuser dans les /etcanciens manuels Unix et bien sûr, Google .

Linux à partir de zéro est un excellent moyen de learningGNU / Linux.


3

Commencez simplement à créer votre propre distribution. Je l'ai fait pour toi et tu sais quoi? Après 4 mois, j'ai passé plus de temps à connaître les composants internes de Linux que les gars autour de moi qui utilisent Linux depuis plus de 10 ans.


3

L'apprentissage dans l'un des environnements * nix est une approche holistique . Elle implique une série d'épiphanies et d'expériences . Ce n'est pas par accident. C'est le sous-produit délibéré de sa conception, car l'environnement d'origine a été conçu autour et pour les programmeurs informatiques. C'est également sa plus grande lacune, car l'accent est mis sur les aspects techniques et non sur l'expérience utilisateur. C'est "une maison avec un cadre robuste qui durera 100 ans sans service, mais son revêtement est aléatoire et la peinture clairement négligée".

Comparez cela à Windows, qui est l'image miroir de cette philosophie - faites quelque chose qui donne à l'utilisateur une expérience tangible, mais protégez-le du fonctionnement interne des choses. C'est "une maison avec de belles garnitures et de la peinture, mais la fondation qui a été reconstruite plusieurs fois avec plusieurs solutions".

Pour vraiment commencer à apprendre, je suggère de créer des images de noyau personnalisées qui ont des options spécifiques à votre matériel et de les installer avec les options que vous souhaitez. Vous devez vous attendre à ce que quelque chose, quelque part, se casse, et vous pouvez ou non être en mesure de revenir à la «normale». C'est une partie normale de ce processus d'apprentissage et vous devriez l'aborder comme si les choses allaient se casser (c'est-à-dire ne pas en faire une installation principale, utiliser un lecteur ou une machine virtuelle séparé ou quelque chose comme ça ...)

J'ai fait une réponse à une question similaire , donc pour réduire la frappe, je vais le réticuler ici . Vous voudrez également lire les premiers paragraphes de cette page , ce qui vous donnera une meilleure idée de ce que vous recherchez.


2

Commencez à lire / chatter les fichiers /procet /etc- vous ne ferez aucun dommage en lisant simplement les fichiers (sauf peut-être en vissant votre connexion terminal / ssh si vous cat un fichier qui produit des informations binaires), et une grande partie est humaine lisible. ' sysctl -a' La production est également une mine d'or. Lorsque vous trouvez quelque chose d'intéressant, google ou manpour plus d'informations à ce sujet.

Vous pouvez trouver de véritables joyaux sur la façon dont le noyau et le système d'exploitation fonctionnent de cette façon.

Quelques conseils rapides:

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

Conseil rapide - certaines sorties dans / proc sont séparées par NUL et sont donc difficiles à lire. Utilisez 'tr' pour convertir les NUL en nouvelles lignes, par exemple:

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

2

Il y a beaucoup à apprendre sur Linux ou tout autre système d'exploitation. Un type d'apprentissage est ce que j'appelle un apprentissage "en profondeur", qui consiste à découvrir comment le noyau fonctionne, quelles hypothèses il fait, comment les différents bits se parlent et comment il traite le matériel. Ce sont des trucs du noyau. Des trucs comme ça sont très utiles pour comprendre pourquoi le système d'exploitation s'est cassé de cette façon. En fait, je l'ai appris de la même manière que Karl Katzke . J'ai cassé des trucs et je les ai améliorés.

Pour ce type de connaissances, Linux est assez simple. Tout est documenté dans de nombreux endroits. La même chose ne peut pas être tout à fait dite pour Windows, bien qu'il y ait encore beaucoup de documentation pour cela.

Ensuite, il y a l'apprentissage «se déplacer dans le système d'exploitation», où la connaissance de bash / sed / awk / regex et de toutes ces autres choses est utile. Parce que le fait est qu'un système d'exploitation est bien plus que son noyau de nos jours. Vous disposez de blobs de pilotes fournis par le fournisseur. Vous avez comment cette distribution particulière conditionne ses scripts de démarrage. Vous disposez de différents mécanismes de patch / mise à jour. Vous avez des démons système dont tout le monde a besoin, mais vous n'êtes pas noyau.

Il s'agit d'un spectre de connaissances beaucoup plus large que le simple noyau-fu. Cela varie selon le distributeur, donc le fonctionnement de Red Hat peut ne pas fonctionner de la même manière sur Slackware. L'endroit où les fichiers sont conservés peut varier. Tout comme ce qu'ils ont choisi pour remplacer «vi».

"Apprendre Linux", c'est plus apprendre un écosystème entier qu'un simple système d'exploitation.


1

J'avais un livre intitulé "Linux Programming" qui m'a appris plus sur le système d'exploitation que n'importe quel livre "Learn Linux". J'aimerais avoir le numéro ISBN, mais c'était incroyable ... en partie parce qu'il est entré dans la programmation du "pourquoi", pas seulement du "comment".

Dans l'ensemble, la plupart de mes apprentissages se sont déroulés honnêtement en les cassant et en les réparant. Cela s'est produit lentement et j'apprends toujours de nouvelles choses après 12 ans.

C'est définitivement un processus. La clé est d'être très, très curieux. Lorsque vous rencontrez quelque chose que vous ne connaissez pas, familiarisez-vous avec lui. Cherchez à savoir comment et pourquoi cela fonctionne et apprenez également les technologies sous-jacentes.


1

J'ai trouvé que dériver à travers Linux, FreeBSD, OpenBSD, Solaris, puis même diverses autres distributions Linux était un bon moyen d'en apprendre beaucoup sur Linux. À propos de la façon dont il a fait les choses différemment. Vous en apprenez autant sur votre ville natale en visitant d'autres endroits que vous apprenez où vous êtes.


1

En ce qui concerne les livres, j'aime les O'Reilly, donc "Essential System Administration Pocket Reference" et "Linux System Administration" sont des points de départ possibles.

Ma copie de l'administration réseau TCP / IP est plus ancienne et je ne l'ai pas utilisée depuis longtemps, mais je l'ai trouvée très utile pour avoir une compréhension plus approfondie de ce qui se passe.


1

Vous faites déjà la première étape en utilisant Linux comme bureau standard.

Si vous voulez comprendre comment toutes les pièces s'accrochent et sont configurées, je vous suggère d'exécuter Gentoo . À partir d'une installation régulière de stage3, vous devez compiler votre propre noyau, installer tous vos services (sauf SSH qui est là prêt à l'emploi), construire et configurer X vous-même, etc. Lorsque vous faites cela, vous vous retrouvez avec un beaucoup plus de compréhension de tous les bits qui entrent dans une installation Linux binaire. Cela ne fait pas de mal non plus que Gentoo possède la meilleure documentation de toutes les distro que j'ai trouvées, ou que portage soit un gestionnaire de paquets incroyablement puissant et flexible.



1

Quelqu'un d'autre l'a mentionné, et je pense que c'est la chose qui m'a le plus aidé à utiliser diverses saveurs Linux. Si vous sentez que vous avez une poignée raisonnable sur Linux, commencez à utiliser open / net / freebsd.
Quant à savoir pourquoi, la plupart des gens Linux avec qui j'ai travaillé peuvent utiliser une ou deux distributions Linux qui ne sont pas si différentes les unes des autres. Bien sûr, la plupart d'entre eux connaissaient ces distributions comme le dos de leur main, mais ils pouvaient toujours être surpris de manière alarmante avec certaines choses. Je pense (pour ne pas déclencher une guerre des flammes) que la façon dont les BSD sont assemblés est un peu plus facile de découvrir le "pourquoi" de la façon dont les choses sont faites (en plus, tapi sur les listes de diffusion bsd, ils expliquent ce "pourquoi" à mort ). Cela revient à changer votre point de vue, il ne vous viendra peut-être jamais à l'esprit de demander pourquoi certaines choses sont telles qu'elles sont jusqu'à ce que quelqu'un le fasse d'une manière complètement différente.


1

Cette publication sur Stackoverflow contient une grande liste de ressources Unix / Linux, y compris la plupart des ouvrages canoniques sur le sujet.

Une autre façon d'apprendre ce qui fait tourner Linux dans les coulisses est de travailler avec Linux From Scratch ( http://www.linuxfromscratch.org/ ). Il s'agit essentiellement d'un ensemble d'exercices d'installation et de configuration manuelles des différents composants d'un système Linux et constitue une très bonne introduction pour apprendre les écrous et les boulons.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.