Skip to content

joaocarvalhoopen/How_to_learn_modern_Linux

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

36 Commits
 
 

Repository files navigation

How to learn modern Linux

A simple but long path to the intrepid adventurer.

Description

Unix as a family of systems, is one of the greatest bodies of intellectual work ever achieved by the human mind! It was the brainchild of Ken Thompson in 1969, because he wanted to play a simple game called Space Travel that he had developed for Multics, and he wanted to be able to run the program in a small computer of its own! With the help of Dennis Ritchie and many others it was born at the Bell Labs and quickly became, in several ways, a creature of all mankind! A free bird to fly by its own means and to be used as a tool for whoever wishes to learn deeper its ways of working. It's a coherent agglomerate of different technologies that never gets old and like a Fenix, re-borns from the ashes.

The objective of this How to

The objective of this How to is to be a small guide, to give anyone a path to becoming a Linux in depth knowledge person.

The general path that we will follow ... explore and discover

First, you will need to have a Linux installed. You should start with Ubuntu Linux, preferably in a secondary machine (or virtual machine [Virtual Box]). Install it and play normally with it, as if it would be your main machine. Play with it for 3 months all days, explore and discover. By then, you will find that you are really comfortable with your Linux Ubuntu system, then, think if you are ready to make it your main system for everyday use. If you are, then install it on your main system and use it all day long, continue to explore and to discover. Then in your secondary machine, install the Debian distribution (rock solid distro) with gnome once, and then with KDE, and use it for 3 months to get a real feeling for it, learn it inside out. Then install an Arch system with rolling release for 3 months. Do all the process of installation and get into all the details that make Linux work and how it works. Go in depth into Linux. Learn to fix it when it breaks. Then choose what you want to install on your main system: a Debian, a Arch Linux or if you would like to try another distro out there. By this time you will be a more knowledgeable person and you could decide your next move.

You should, from the start, embark on a reading and studying journey, the path is listed below and some of the reading material is listed below.

The major steps are:

  1. Learn and appreciate the history of Unix, Linux, GNU, X, FreeBSD and C
  2. Learn by reading the documentation of the 3 major distros Ubuntu, Debian and Arch linux
  3. Learn to use the shell, and more specific the bash
  4. Learn how to navigate with the most common editors, vi and Emacs, learn what they represent in context, and learn other editors
  5. Learn system administration
  6. Learn how Linux internals works
  7. Learn about open source and the major software and hardware licenses
  8. Learn how to program on Linux
  9. Craftsmanship and software design
  10. Learn how systems programming works
  11. Linux kernel development
  12. Hardware knowledge
  13. Artificial Intelligence and Machine Learning
  14. Learn Raspberry Pi and embedded Linux
  15. FreeBSD knowledge
  16. Do the NAND To Tetris challenge in Rust, C, C++, GO or Python
  17. Become an enlightened person in terms of Linux and use it to accomplish your goals in a better way

1. Learn and appreciate the history of Unix, Linux, GNU, X, FreeBSD and C

2. Learn by reading the documentation of the 3 major distros Ubuntu, Debian and Arch linux

3. Learn to use the shell, and more specific bash

4. Learn how to navigate with the most common editors, vi and Emacs, learn what they represent in context, and learn other editors

5. Learn system administration

6. Learn how Linux internals works

  • How Computers Really Work A Hands-On Guide to the Inner Workings of the Machine
    by Matthew Justice

  • How Linux Works What Every Superuser Should Know, 3th Edition
    by Brian Ward

7. Learn about open source and the major software and hardware licenses

8. Learn how to program on Linux

C, C++ and Rust can use the following tools.

9. Craftsmanship and software design

10. Learn how systems programming works

11. Linux kernel development

  • Understanding the Linux Kernel, Third Edition 3rd Edition
    by Daniel P. Bovet, Marco Cesati

  • Linux Kernel Development 3rd Edition
    by Robert Love

  • Linux Kernel Programming: A comprehensive guide to kernel internals, writing kernel modules, and kernel synchronization
    by Kaiwan N Billimoria

12. Hardware knowledge

13. Artificial Intelligence and Machine Learning

14. Learn Raspberry Pi and embedded Linux

  • Raspberry Pi User Guide 4th Edition
    by Eben Upton, Gareth Halfacree

  • Programming the Raspberry Pi, Second Edition: Getting Started with Python 2nd Edition
    by Simon Monk

  • Raspberry Pi Cookbook: Software and Hardware Problems and Solutions 3rd Edition
    by Simon Monk

  • Practical Python Programming for IoT
    Build advanced IoT projects using a Raspberry Pi 4, MQTT, RESTful APIs, WebSockets, and Python 3 by Gary Smart

  • Operating Systems Foundations with Linux on the Raspberry Pi
    by Wim Vanderbauwhede, Jeremy Singer

  • Learning Computer Architecture with Raspberry Pi
    by Eben Upton, Jeffrey Duntemann, Ralph Roberts, Tim Mamtora, Ben Everard

  • Exploring Raspberry Pi: Interfacing to the Real World with Embedded Linux
    by Derek Molloy

  • Programming with 64-Bit ARM Assembly Language: Single Board Computer Development for Raspberry Pi and Mobile Devices
    by Stephen Smith

  • Exploring BeagleBone: Tools and Techniques for Building with Embedded Linux 2nd Edition
    by Derek Molloy

  • Linux Driver Development for Embedded Processors - Second Edition: Learn to develop Linux embedded drivers with kernel 4.9 LTS
    by Alberto Liberal de los Ríos

  • Embedded Linux Systems with the Yocto Project
    by Rudolf Streif

  • Mastering Embedded Linux Programming: Unleash the full potential of Embedded Linux with Linux 4.9 and Yocto Project 2.2 (Morty) Updates, 2nd Edition
    by Chris Simmonds

15. FreeBSD knowledge

  • Absolute FreeBSD, 3rd Edition: The Complete Guide to FreeBSD
    by Michael W. Lucas

  • The Design and Implementation of the FreeBSD Operating System
    by Marshall McKusick, George Neville-Neil, et al

  • FreeBSD Device Drivers: A Guide for the Intrepid
    by Joseph Kong

16. Do the NAND To Tetris challenge in Rust, C, C++, GO or Python

  • Building a Modern Computer From First Principles
  1. From Nand to Tetris
    https://www.nand2tetris.org/

  2. Video - Shimon Schocken: The self-organizing computer course
    https://www.youtube.com/watch?v=iE7YRHxwoDs

  3. Video - From Nand to Tetris Part I Course Promo
    https://www.youtube.com/watch?v=wTl5wRDT0CU

  4. Free Course - Build a Modern Computer from First Principles
    From Nand to Tetris (Project-Centered Course)
    https://www.coursera.org/learn/build-a-computer

  5. Free Course - Build a Modern Computer from First Principles
    Nand to Tetris Part II (project-centered course)
    https://www.coursera.org/learn/nand2tetris2

17. Become an enlightened person in terms of Linux and use it to accomplish your goals in a better way

  • You will never achieve the complete nirvana, because there will always be something new to learn, and that is something good, but you will become more close to it and to enlightenment.

All my other guides

Have fun

Best regards,
João Nuno Carvalho

About

A simple but long path to the intrepid adventurer.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors