I started by learning deep into raids and lvm and filesystems, even before I really understood bash. But coming from a DOS background, bash kind of made sense. However as I studied this, coming from an educational background, I thought to myself how would others learn this best. Here is the best track in my opinion.

The mega basics

My recommendation is to learn the following:

1. Get your hands on LPIC1 and LPIC2 study those (do you need to get the certs? no way, just understand the material), if you get the CBT Nuggets thats good enough, but if you go in with the books and cover everything thats even better.

NOTE: Make sure you get a good understanding of vi/vim to edit files. Also understand how to use nano/pico (which are the most basic editors)

2. Then study Bash Scripting (also nice videos by CBT Nuggets)

Tip: Use scripting as often as possible, you can make scripts, or single line multiple commands to keep going and going.

3. Then after that practice everything on here until your fluent with using it: http://tldp.org/LDP/abs/html/special-chars.html Also understand http://tldp.org/LDP/abs/html/internalvariables.html I think its important to understand bash, as its the main used program you will interact with when using linux or unix (exceptions to sh, busybox, zsh, fish, and etc, but everyone should start with bash)

Look into each character using the links provided, also of course use Google.

Post step 1,2,3

After all of this you should have enough footing to get around using BASH, now the mission is to understand in depth

MORE COMPLEX PROGRAMS: study ps, top, sed (you can edit strings on the go, and config and any text on the go), awk ( a miniprogramming language which will be really easy to pick up if you have basic C knowledge, and by basic, I mean very basic). Studying awk and sed is very important, its used very often to extract data and get meaningful information out of data.

UNIX vs LINUX: its all based on what kernel is used. I would recommend starting to study the linux side of things. You will learn the solaris kernel (unix kernel) is slightly different and the filesystem layout is different.

KERNEL: monolithic, vs modular kernel. How the current kernel is modular and you can dynamically load and unload modules (modules are like drivers)

RAM: study the way the kernel work, start with beginner tutorials and guides and build up. Understand slab allocation, page cache etc. Understand cgroups (Which is new in new versions of kernels). Good links: http://www.atoptool.nl/download/case_leakage.pdf

CPU: understand process scheduling, cgroups (which is new in new versions of kernels)

STORAGE: google and study with examples, and build your own (using files that pretend to be disks on virtual machines, if you dont have extra harddrives/usb drives to practive). For the files emulation of drives/block devices look into loop devices and losetup. Look into partitioning with sfdisk (MBR) and sgdisk (GPT). Study MBR and GPT, understand that you should just basically always use GPT now adays. Understand that you can put a filesystem (and mount it for use) onto a file, a partition, a disk/full drive, a raid/mdadm device – hardware or software, lvm. Understand the new filesystems zfs and btrfs. zfs is more solaris based but its coming to linux as well. Understand Swap filesystem, understand VFS (its the filesystem you interact with that is mostly virtual and doesnt really exist but in ram like /proc and /dev and /sys folders, yet the also hold the locations where actual block devices are mounted)

X11: try different window managers. X11 is only a display server. Your monitor is assigned to look @ 1 display server and the display server is running 1 window manager. By Window managers, im also meaning Desktops.

PROGRAMMING: Make some basic C programs, linux is very largely based and programmed off of C and C++, also the idea of libraries (like dll files in linux), shared libraries and static libraries and dynamically loaded libraries

BUILD YOUR OWN LINUX: try out linux from scratch after getting a good grip of the above (although in my opinion its too advanced for people that just start -you will just be aimlessly copy pasting commands). Try building an Arch installation.

BOOTLOADERS: BIOS and UEFI are the 2 methods we have that computers use to detect hardware and tell the computer where to boot the OS from. After the hardware is detected that holds the OS, drives or network or what have you, you are left with a choice of what OS to boot into & what mode. If you have multiple OSes your BOOTLOADER gives you the option to pick which OS to load. Your OS might have several different modes that it can be launched in that same BOOTLOADER gives you the toption to pick which mode to load. The BOOTLOADER provides a simple menu right when the computer starts to select what OS and what mode to boot into. (that usually just autoselects the top option for you – the top option usually being your primary OS booted into its normal mode). BIOS is the common method, you can use GRUB with it. Try making your own Arch install with Bios grub. Then go into your settings and change your bios to be UEFI compatible and thne try to make Arch install with UEFI grub.

Understand initramfs and initrd: Before the complex environment which is linux can be loaded, a small OS is loaded that get everything ready for the mothership (your main Linux OS). This initrd/initramfs loads within a blink of an eye and it happens after you go thru your BOOTLOADER and select what OS and what MODE, the system automically gets initrd/initramfs ready which prepares your environment for the big main OS and then automatically sets you into that OS. Note: Windows doesnt use initramfs and initrd.

There is alot more to this, but those are good things to start with and conquer. Never forget about Google and Youtube for good tutorials/lessons. Buying books and going to actual lessons are great too.

Leave a Reply

Your email address will not be published. Required fields are marked *