¿Cuál es el mejor recurso para comprender realmente Linux profundamente?

10

He sido un usuario de Linux por intervalos durante muchos años. Recientemente, lo he estado usando a diario. Estoy buscando sugerencias para los medios de comunicación; libros comerciales, información gratuita, videos en línea, etc. que me ayudarán a comprender el sistema operativo a un nivel mucho más profundo. Tus sugerencias por favor.

Stuart Woodward
fuente

Respuestas:

6

Encontrará varias guías gratuitas en The Linux Documentation Project, página de guías . Esta es una lista corta que elijo de allí, pero debe desplazarse por la página para encontrar lo que necesita.

  • Introducción a Linux: una guía práctica; Jun 2008
  • Linux en el camino; Nov 2005
  • La Guía del administrador del sistema Linux; Julio de 2005
  • Guía avanzada de secuencias de comandos Bash; Mar 2009 (sí, esto también es bueno para entender Linux)

Debe buscar específicos instructivos para los temas que les interesan. Otra fecha ordenadas lista HOWTO .

Hay algunos principiantes en la página de principiantes de revisiones de Linux .

Finalmente, este es un pequeño libro disponible en línea: Linux Kernel in a Nutshell . Está en formato PDF de la edición 2007.

Debe usar estas referencias solo como un sensor para comenzar su propia búsqueda de las cosas que necesita.

nik
fuente
Gracias a todos por las excelentes respuestas. El Kernel in a Nutshell es una verdadera joya. Este es el tipo de libro que estaba buscando.
Stuart Woodward
16

La mejor manera de entender Linux es romperlo mal y luego arreglarlo.

Karl Katzke
fuente
Tee-hee ... me gusta eso. Me encanta romper cosas.
Evan Anderson
1
-1 Ese es un buen consejo, pero no es un recurso.
nombre de usuario
1
gran respuesta. Aprendí mucho sobre Linux solo por jugar y probar cosas. Después de estropearlo, buscas en Internet formas de solucionarlo. Dado que "Linux" es un término tan amplio que en este caso probablemente se refiere más al sistema operativo completo y a las aplicaciones que se ejecutan en él, en lugar de solo el kernel de Linux, no hay realmente un buen recurso que pueda recomendar.
Kibbee
2
Pero hay algunas pautas para cada tipo de persona que podríamos enumerar. Mi favorito personal es comenzar con la distribución más difícil posible, y luego instalar una distribución automática. Romper cosas es genial para aprender, pero saber qué romper en primer lugar para obtener conocimientos específicos es mucho más complicado. La mayoría de las veces, rompiendo cosas, aprendemos cosas que ni siquiera sabíamos que teníamos que aprender.
Voyager
1
Linux, que es gratuito y fácilmente reparable en la mayoría de los casos, es definitivamente un recurso. La experiencia de comenzar con un sistema roto y poder ver todas sus partes (a diferencia de un sistema operativo comercial) es una gran fortaleza, y la única forma de aprender a investigar un problema y resolverlo es hacerlo.
Karl Katzke
10

No estoy seguro, cuando dices un "nivel más profundo", si estás hablando de entrar más en la línea de comando (algunas personas nunca abandonan la GUI que viene con su distribución, si te lo puedes imaginar), o realmente cosas arenosas de bajo nivel como escribir controladores de kernel. Voy a asumir más de lo primero que de lo segundo.

Le aconsejaría que establezca objetivos razonables para las cosas que le gustaría hacer usando Linux y las aplicaciones que se ejecutan en Linux (ejecute un servidor web, sirva archivos a hosts de Windows, sirva DHCP, ejecute un escritorio gráfico, etc.). Creo firmemente que solo aprendes cuando estás "haciendo". Una vez que tengas un objetivo en mente, persíguelo. Eso significa leer páginas de manual (muchísimas páginas de manual), documentación de "CÓMO", archivos de listas de correo, publicaciones de blog aleatorias y, por supuesto, la documentación que viene con los diversos programas que está instalando o compilando para ejecutar en su cajas

Después de haber impartido cursos de certificación de TI en el aula durante varios años, creo que puedo decir con cierto grado de autoridad que los estudiantes que vi que progresaron más fueron los que estaban haciendo proyectos locos de su propio diseño y aprendiendo en los asientos. de sus pantalones.

Como dije antes, las páginas de manual, la documentación del "CÓMO" ( http://tldp.org/docs.html y en muchos, muchos otros lugares en la red) y los archivos de la lista de correo son sus amigos. Me mantendría alejado de cualquier libro que hable sobre elementos internos del núcleo, al menos en esta etapa. No necesita ese tipo de conocimiento profundo para comenzar.

Habla con otras personas. Parece que Server Fault está resultando ser un excelente lugar para obtener buenos consejos. Haga preguntas aquí, y no piense que se verá estúpido al hacerlo. Si puede obtener "tiempo cara a cara" con personas que están familiarizadas con Linux, hágalo. (Aunque le recomiendo que intente separar la opinión de los hechos. Hay tantas "guerras santas" en la comunidad de Linux sobre las diferentes opiniones sobre cómo hacer las cosas como en cualquier otra comunidad, quizás más, dada la naturaleza de la comunidad .)

Para obtener un conocimiento realmente "profundo" de la herencia de Linux de Unix, puede optar por algunos manuales de administración o de referencia específicos de Unix más antiguos. Me mantendría alejado de estos desde el principio (al menos hasta que pueda apreciar la naturaleza histórica de los "caminos no tomados" con Linux en comparación con algunos de los sistemas operativos derivados de Unix).

Sin saber cuál es su nivel de habilidad general, lanzaré un agradecimiento a un libro que puede o no ser útil. Recomiendo altamente "TCP / IP ilustrado" ( http://www.amazon.com/Illustrated-Volumes-Addison-Wesley-Professional-Computing/dp/0201776316 ). No es específico de Linux en absoluto, pero hará tantas cosas relacionadas con TCP / IP que saberlo "en frío" es obvio.

Supongo que, en resumen, digo que no hay libros mágicos o libros, ni videos súper secretos de los que los "maestros" aprendieron, pero absolutamente ningún límite a lo que puedes aprender si te apegas a él y no tienes miedo para ensuciarse las manos.

Evan Anderson
fuente
10

Solo años de experiencia jugando con componentes individuales le brindarán una comprensión profunda. Dicho esto, la gran mayoría de los libros de Oreilly Press están realmente bien escritos y son perfectos si no eres un tonto y tienes más de 24 horas. :)

Hay un proyecto llamado Linux From Scratch , que le muestra cómo construir una distribución de Linux desde la nada. Puede que le resulte educativo hacerlo una vez. Llevará mucho tiempo ya que necesita compilar todo desde la fuente y lo tirará todo al final.

Encuentro LWN.net 's página de un valor incalculable núcleo para mantener el ritmo de cómo funcionan las cosas en el núcleo a un alto nivel.

David Pashley
fuente
+1 votó por LFS FTW
bandi
7

Además de usarlo todos los días (¡lo cual creo que es una gran cosa!), Le recomiendo que comience a pensar en los servicios que podrían implementarse para su red en una caja de Linux. Comience a diseñarlo en función de los servicios de Linux, investigue e implemente una vez que esté listo. Esperemos que haya errores en el proceso, y esa experiencia lo ayudará a comprender el sistema operativo a un nivel más profundo.

l0c0b0x
fuente
3
Incluso construir Linux desde cero tiene sentido. Pruebe esto: linuxfromscratch.org
Caterpillar
¡Guauu! Definitivamente +1 en eso!
l0c0b0x
+1 para construir Linux desde cero. Aprendí mucho sobre el proceso de arranque de Linux, las cadenas de herramientas y el desarrollo casi incrustado utilizando uclibc que construye instalaciones de Linux basadas en disquete desde finales de los años 90. El arranque de cualquier máquina Linux desde el núcleo "desde cero" definitivamente le brindará una gran experiencia.
Evan Anderson
5

Para la filosofía general de Unix y una excelente introducción a la línea de comandos, está el clásico entorno de programación The Unix de Brian Kernighan y Rob Pike .

Además, el sitio web DeveloperWorks de IBM tiene más de 900 artículos en su sección de Linux. Puede buscar en la lista de artículos los temas que le parezcan interesantes.

Finalmente, una vez que esté listo para entrar en el meollo de la cuestión, vaya a la fuente. Tome el código fuente de la versión del kernel que está utilizando en kernel.org (su distribución también tendrá paquetes fuente del kernel que puede instalar) y consulte el directorio de Documentación. Encontrará un montón de material de referencia sobre el núcleo interno y los ajustes de configuración.

Ben Williams
fuente
4

Colegio. Para comprender realmente el sistema Linux, necesita una amplia gama de fondos de sistemas informáticos. Compiladores, Arquitectura de Computadores y Sistemas Operativos. Y necesita una guía que pueda mostrarle lo que es importante y corregir cualquier malentendido que tenga o formule.

Una vez que comprenda cómo funcionan los procesadores modernos y cómo los compiladores de C los exploten, puede sumergirse en libros como Minix 3:

Minix3

Esta es la última versión del libro en la que Torvalds, autor del kernel de Linux, (libremente) basó su trabajo. Aprenderá sobre los componentes y algoritmos fundamentales de un sistema operativo, y cómo implementar exactamente uno: el texto viene con una impresión casi completa del código fuente en Minix para fines de referencia e instrucción. Consulte el controlador de interrupciones para obtener una comprensión completa de cómo funciona el sistema y dónde fluye el control.

Y antes de burlarse de la escuela y la informática, es importante tener en cuenta que los trabajos que se les pide a los sistemas operativos generalmente son NP-complete. Por lo tanto, comprender una amplia variedad de algoritmos disponibles es fundamental para el ajuste del rendimiento, ya que no habrá un algoritmo demostrablemente óptimo.

Además del núcleo, hay varias otras áreas. Debido a que Linux es de código abierto, esta es una mina de oro académica. Sistemas como Debian y Ubuntu hacen que su fuente esté disponible, y es muy simple:

apt-get source package-name

Muchas cadenas ascendentes también alojan su código en el control de revisiones, por lo que puede leer la versión más actualizada de la fuente de un programa, o incluso ver cómo se creó hace años.

jldugger
fuente
Golpe +1 por mencionar "Y necesitas una guía que pueda mostrarte lo que es importante y corregir cualquier malentendido que tengas o formules". Realmente es un sistema operativo que la tradición oral comprende mejor (desafortunadamente).
Avery Payne
3

La fuente .

Eso, por supuesto, si te refieres al núcleo .

Si está tratando de aprender el sistema por encima del núcleo y la API, comenzaría aprendiendo la vieja escuela Unix. Quizás pruebe algunos FreeBSD / OpenBSD / NetBSD / DragonflyBSD . Un pequeño Minix también podría ayudar. Luego muévase a Slackware , Arch , Debian y Gentoo . Todos son diferentes ( y vienen con una gran documentación ), y en esas diferencias, su curiosidad lo hará buscar por qué es así, obtendrá muchos conocimientos técnicos, comerciales, políticos e históricos.

Otra forma sería cavar en /etcviejos manuales de Unix y, por supuesto, en Google .

Linux desde cero es una excelente forma de learningGNU / Linux.

viajero
fuente
3

Simplemente comienza a construir tu propia distribución. Lo he hecho por ti mismo y ¿sabes qué? Después de 4 meses en los que he gastado, sé más sobre los aspectos internos de Linux que los muchachos a mi alrededor que usan Linux desde hace más de 10 años.

Alexander Gromnitsky
fuente
3

Aprender en cualquiera de los entornos * nix es un enfoque holístico . Implica una serie de epifanías y experiencias . Esto no es por accidente. Es el subproducto deliberado de su diseño, ya que el entorno original fue diseñado alrededor y para programadores de computadoras. También es su mayor deficiencia, ya que se centra en los aspectos técnicos y no en la experiencia del usuario. Es "una casa con un marco resistente que durará 100 años sin servicio, pero su revestimiento es irregular y la pintura está claramente descuidada".

Compare esto con Windows, que es la imagen especular de esta filosofía: haga algo que le brinde al usuario una experiencia tangible, pero protéjalo del funcionamiento interno de las cosas. Es "una casa con hermosos acabados y pintura, pero la base que se ha construido varias veces con múltiples soluciones".

Para comenzar realmente a aprender, sugeriría crear imágenes de kernel personalizadas que tengan opciones específicas para su hardware e instalarlas con las opciones que desee. Debería esperar entrar en esto como algo, en algún lugar se romperá, y puede o no ser capaz de hacer retroceder las cosas a "normal". Esta es una parte normal de ese proceso de aprendizaje y debe abordarlo como si las cosas se rompieran (es decir, no haga que esta sea una instalación primaria, use una unidad separada o una máquina virtual o algo así ...)

He respondido una pregunta similar , así que para reducir la escritura, la reticularé aquí . También querrás leer los primeros párrafos de esta página , que te darán una mejor idea de lo que te espera .

Avery Payne
fuente
2

Comience a leer / capturar archivos /procy /etc, no hará ningún daño simplemente leyendo los archivos (guarde quizás arruinando su terminal / conexión ssh si captura un archivo que produce información binaria), y gran parte es humano legible. ' sysctl -a' La producción también es una mina de oro. Cuando encuentre algo interesante, busque en Google o manpara obtener más información al respecto.

Puede encontrar algunas gemas reales sobre cómo funcionan el núcleo y el sistema operativo de esta manera.

Algunos consejos rápidos:

/ etc / inittab
/etc/rcS.d
/etc/rc2.d
/ etc / crontab
/ proc / 1 / ambient
/ proc / filesystems
/ proc / meminfo
/ proc / cpuinfo
sysctl -a | grep vm.swappiness
/ etc / default # basado en debian
/ etc / sysconfig # basado en redhat

Consejo rápido: parte de la salida en / proc está separada por NUL y, por lo tanto, es difícil de leer. Use 'tr' para convertir las NUL a nuevas líneas, por ejemplo:

sudo cat / proc / 1 / environmental | tr '\ 0', '\ n'
Mike Pountney
fuente
2

Hay mucho que aprender sobre Linux o cualquier sistema operativo. Un tipo de aprendizaje es lo que yo llamo aprendizaje "en profundidad", que es descubrir cómo funciona el núcleo, qué suposiciones hace, cómo se comunican los diversos bits y cómo se ocupa del hardware. Eso es materia del núcleo. Cosas así son muy útiles para descubrir por qué el sistema operativo se rompió de esa manera. De hecho, lo aprendí de la misma manera que Karl Katzke . Rompí cosas y lo hice mejor.

Para este tipo de conocimiento, Linux es bastante fácil. Todo está documentado en muchos lugares. Lo mismo no puede ser bastante dicho para Windows, aunque todavía hay una gran cantidad de doc que hay para ello.

Luego está el aprendizaje 'moverse en el sistema operativo', que es donde el conocimiento de bash / sed / awk / regex y todas esas otras cosas son útiles. Porque el hecho es que un sistema operativo es mucho más que su núcleo en estos días. Tiene blobs de controlador suministrados por el proveedor. Tiene cómo esta distribución particular empaqueta sus scripts de inicio. Tiene varios mecanismos de parche / actualización. Tienes demonios del sistema que todos necesitan, pero no son kernel.

Este es un espectro de conocimiento mucho más amplio que el simple kernel-fu. Varía según el distribuidor, por lo que el funcionamiento de Red Hat puede no funcionar igual en Slackware. El lugar donde se guardan los archivos puede variar. Como puede, lo que eligieron para reemplazar 'vi'.

"Aprender Linux" se trata más de aprender un ecosistema completo que de un simple sistema operativo.

sysadmin1138
fuente
1

Tenía un libro llamado "Programación Linux" que me enseñó más sobre el sistema operativo que cualquier libro "Aprenda Linux". Desearía tener el número ISBN, pero fue increíble ... en parte porque entró en la programación "por qué", no solo por el "cómo".

En general, la mayor parte de mi aprendizaje fue honestamente al romperlo y arreglarlo. Sucedió lentamente, y todavía estoy aprendiendo cosas nuevas después de 12 años.

Definitivamente es un proceso. La clave es ser muy, muy curioso. Cuando encuentre algo con lo que no esté familiarizado, familiarícese con él. Busque conocimiento sobre cómo y por qué funciona, y también aprenda las tecnologías subyacentes.

Matt Simmons
fuente
1

Encontré a la deriva a través de Linux, FreeBSD, OpenBSD, Solaris e incluso varias otras distribuciones de Linux una buena manera de aprender mucho sobre Linux. Sobre cómo hizo las cosas de manera diferente. Aprendes tanto sobre tu ciudad natal mientras visitas otros lugares que sobre dónde estás.

Kyle Hodgson
fuente
1

Cuando se trata de libros, me gustan los O'Reilly, por lo que "Referencia de bolsillo de la administración del sistema esencial" y "Administración del sistema Linux" son posibles puntos de partida.

Mi copia de la Administración de red TCP / IP es anterior y no la he usado en mucho tiempo, pero me pareció muy útil para obtener una comprensión más profunda de lo que está sucediendo.

Ward - Restablece a Monica
fuente
1

Ya está dando el primer paso al usar Linux como su escritorio habitual.

Si desea comprender cómo se unen y configuran todas las partes, sugeriría ejecutar Gentoo . Desde una instalación regular de stage3, debe compilar su propio kernel, instalar todos sus servicios (excepto SSH que está listo para usar), construir y configurar X usted mismo, etc. Cuando lo hace, termina con un Una comprensión mucho mayor de todos los bits que intervienen en una instalación binaria de Linux. Tampoco hace daño que Gentoo tenga la mejor documentación de cualquier distribución que haya encontrado, o que portage sea un administrador de paquetes increíblemente potente y flexible.

Ofidia
fuente
1

Alguien más mencionó esto, y creo que es lo que más me ayudó con el uso de varios sabores de Linux. Si cree que tiene un manejo razonable en Linux, comience a usar open / net / freebsd.
En cuanto a por qué, la mayoría de las personas de Linux con las que he trabajado pueden usar una o dos distribuciones de Linux que no son tan diferentes de la otra. Claro, la mayoría de ellos conocían esas distribuciones como el dorso de su mano, pero aún podían sorprenderse de manera alarmante con ciertas cosas. Creo (para no comenzar una guerra de llamas) que la forma en que se ensamblan los BSD es un poco más fácil descubrir el "por qué" de la forma en que se hacen las cosas (además, al acecho en las listas de correo de bsd explican que "por qué" hasta la muerte ) Todo se reduce a cambiar su punto de vista, es posible que nunca se le ocurra preguntar por qué ciertas cosas son como son hasta que alguien lo haga de una manera completamente diferente.

DF
fuente
1

Esta publicación en Stackoverflow tiene una gran lista de recursos de Unix / Linux que incluye la mayoría de los trabajos canónicos sobre el tema.

Otra forma de aprender qué hace que Linux funcione detrás de escena es trabajar a través de Linux From Scratch ( http://www.linuxfromscratch.org/ ). Es esencialmente un conjunto de ejercicios para instalar y configurar manualmente los diversos componentes de un sistema Linux y es una muy buena introducción para aprender los elementos básicos.

Preocupado por TunbridgeWells
fuente