¿Dónde puedo aprender cómo funciona todo en Linux?

“Todo” en Linux es una gran cantidad de cosas que aprender y algunas de ellas serán difíciles. Supongo que no está buscando el tipo de cosas que un administrador de sistemas debe saber, pero que realmente quiere saber qué está pasando dentro de la máquina y el sistema operativo.

Afortunadamente, todo el código fuente está disponible para que lo examine. Hay tantas líneas de código que es fácil perderse. Mantener notas. Mira a tu alrededor para la documentación existente. Siéntase libre de escribir nueva documentación para capturar lo que aprende a medida que lo aprende. Es dudoso que, al final, todo se ajuste dentro de su cabeza.

Algunas partes de Linux interactúan con el hardware, por lo que además de aprender qué hay en el software de Linux, también debe esperar pasar un tiempo investigando la documentación del hardware de la computadora (interrupciones, gestión de memoria [asignación de direcciones], interfaces de E / S, BIOS, … ) y de protocolos (TCP / IP, DNS, SMTP, NFS,…).

Otro aspecto de Linux, un poco distinto de los problemas de hardware y software, es el aspecto “social” de la comunidad. Hay muchas personas, en todo el mundo, involucradas con la continua evolución del proyecto. Tienen intereses particulares, especialidades, experiencia variada, y cada uno tiene su propia personalidad. Te sugiero que hagas un hábito de leer Bienvenido a LWN.net regularmente para tener una idea de lo que está pasando en el mundo de Linux. ¿En qué problemas se está trabajando? ¿Bichos recurrentes? ¿Mejoras deseadas que no se están trabajando (mucho)?

Creo que descubrirás que mantener el entusiasmo por saber cómo funciona todo es muy difícil. Cuando comience a ver las piezas y sus interfaces, es posible que algunas le resulten más interesantes que otras. Está bien aceptar que hay un código “allí” que maneja los detalles y proporciona esta abstracción útil en esta interfaz. No necesariamente necesitas saber todo lo esencial de cómo exactamente ese código “por allá” hace su trabajo. Puede ser suficiente para que entiendas la abstracción que proporciona y cómo la interfaz que presenta es útil para el resto del sistema. Si, en algún momento, ve cómo un cambio en la interfaz podría mejorar el sistema, entonces podría pensar en cómo podría cambiar el código “allí” para presentar su nueva y mejor interfaz, y cómo cambiaría el resto. Del sistema para aprovechar el cambio.

El código fuente está disponible para usted y usted es libre de hacer cambios experimentales y ver cómo van. Si lo intentas, perfeccionarás tus habilidades para probar y depurar. Practicar en la medición del rendimiento puede ser importante para evaluar ciertos cambios que puede intentar.

El libro “Armadillo” de Aileen Frish de O’Reilly es un buen comienzo. Administración esencial del sistema

Eso, más (digamos) la versión del servidor ubuntu instalada en una PC de escritorio antigua, y luego hace un gran uso del comando “man” (comienza con man man). Experimente la alegría de apt-get y luego eche un vistazo a los repositorios y descubra cómo funciona. Y Git Hub. Y CPAN (para perl). Descubrir Ansible o Puppet y pulir tu Python y Ruby generalmente no serán un desperdicio.

Parece un poco tonto, pero en realidad Linux está bastante bien documentado si solo miras, y cualquier otra cosa que necesites, el tío Google es tu amigo (el Desbordamiento de pila es útil)

Configure un servidor web para comenzar, y un servidor samba al que se pueda conectar su computadora portátil Wintel. Aprenda a automatizar tareas comunes de cron. ¿Cómo puede hacer una copia de seguridad de su sitio web en una segunda computadora de forma segura a través de Internet, por ejemplo? Si algo se rompe, ¿tiene una copia de seguridad decente del disco raíz y sabe cómo restaurarlo, y puede obtener las partes en eBay?

Si puede hacer que sendmail trabaje desde la línea de comandos para desencadenar mensajes (como si el disco raíz se está llenando), entonces realmente está llegando a alguna parte. Ahora tienes un CV como administrador de Unix (aunque solo sea para una computadora) pero has demostrado que estás interesado.

También tienes (si tu disco duro es lo suficientemente grande) la oportunidad de descargar el código fuente para casi todo, y por supuesto que recibes el compilador GNU c ++.

Cuando encuentres todo esto divertido, sabrás que lo has hecho:

xkcd: Sandwich – sudo explicado

Hoja de trucos de soporte técnico – Hoja de trucos de soporte técnico

Devoción al deber – administrador del sistema

xkcd: incidente – sudo lista traviesa

xkcd: nanobots – nanobots

xkcd: Manuales – Manuales

xkcd: Automatización – automatización

xkcd: yo futuro – yo futuro

Fuerza de la contraseña – contraseñas

Tu curso de informática puede enseñarte nada de lo mencionado anteriormente. Eso no es una ciencia informática “adecuada”, es solo ser un administrador de sistemas viejo y tonto (como yo)

Tal vez eso no es lo que quisiste decir con “cómo funciona una computadora”, pero si has hecho todo lo anterior, ¡probablemente ahora puedas responder tu propia pregunta!

Recomiendo abordar su pregunta desde una perspectiva de programación (no de administración de sistemas).

En caso de que no lo haya leído, le recomiendo que lea el SICP, una excelente introducción a la programación disponible de forma gratuita.

Lea también Enseñe a usted mismo la programación en diez años, lo que le da algunas ideas muy útiles.

Luego lea primero la Programación avanzada de Linux y también mire las páginas man, en particular intro (2) – Página de manual de Linux & intro (3) – Página de manual de Linux

Con respecto a los sistemas operativos en general, recomiendo sistemas operativos: tres piezas fáciles (libro de texto disponible gratuitamente)

Ha aprendido los lenguajes de programación básicos C / C ++ cerca del procesador y la memoria. El ensamblaje es el más cercano a la máquina antes de ingresar a las señales eléctricas en los circuitos. Necesitas estudiar arquitectura informática y sistemas operativos. Puede leer libros de texto escritos por profesores en universidades y tomar los cursos en su programa de pregrado. Necesita investigar su propio plan y cómo desarrollar el conocimiento del trabajo. Luego puede aplicar una nueva máquina y sistema operativo. También debe tener en cuenta los compiladores, las redes de computadoras y las aplicaciones de software en su trabajo.

Aprender cómo funciona todo en Linux (o cualquier tema) es una tarea cuesta arriba. Es simplemente demasiada información para que una persona la absorba. Ni siquiera los experimentados desarrolladores de Linux lo saben todo. En su lugar, saben un poco sobre muchas cosas y mucho sobre su área particular de interés.

La educación funciona de manera similar. Los títulos universitarios generalmente están diseñados para ofrecerle una introducción general al área, de modo que sepa lo suficiente como para decidir sobre cuál de estas áreas le gustaría obtener más información.

Te sugiero que sigas el mismo modelo. Exponerse a la mayor cantidad de información posible, pero no se preocupe por entenderlo demasiado bien. Recoja los bits, vea cómo encajan varias cosas, y cuando sienta que hay algo que le parece más interesante que otros, hágalo con más detalle.

Un recurso estructurado, como un libro o un curso, generalmente facilita el aprendizaje de las cosas en detalle. Se aseguran de que aprendas de manera incremental, enseñándote los conceptos del capítulo actual que se requieren para el siguiente capítulo. Mira qué libros sugieren los cursos universitarios. Cursos online – Coursera | Cursos online de las mejores universidades. Únase gratis, edX y el tipo debe tener algunos cursos de informática que también puede tomar gratis.

Las comunidades de código abierto también ofrecen una gran experiencia de aprendizaje; vea si le gustaría ser voluntario en una. Conocerás a personas que usan Linux a diario, y según mi experiencia, la mayoría de nosotros estamos más que felices de ayudar a las nuevas personas a aprender y desarrollar sus habilidades.

En / usr / src / linux / documentation si instala los paquetes de código fuente.