This is the projected schedule of the course:
- Before class tasks are mandatory. Please come to the lectures and labs prepared.
- After class tasks are optional but recommended to get the most out of this course.
- The schedule will be updated to reflect reality.
- The schedule may change.
Week 1 (30.9.2024) — refreshing the basics
- Before class (mandatory):
- Nothing.
- Lecture:
- Course motivation and outline.
- Rules and credit requirements.
- Tips for efficient work.
- Refreshing the basics from Introduction to Linux
- Labs:
- Refreshing the basics from Introduction to Linux
- Cheatsheet
- After class:
- Please take time to get to know your environment (and tweak it as necessary):
- You are going to need it.
- Learn how to edit commands as you type them:
- Jump to the beginning/end of line
- Move between words
- Delete words
- Asciinema example
- Learn how to use shell history recall:
- Reverse search by part of command text
- Quickly re-execute the last command
- Move between matching entries
- Edit commands from history
- Asciinema example
- Learn how to use terminal scroll-back buffer:
- Scroll up your terminal
- Search up and down the terminal
- Copy/paste from the terminal, ideally without the mouse
- Asciinema example
- Learn how to use your window manager:
- It doesn’t matter what kind of window manager you use as long as you know how to use it.
- Your window manager will eventually become the bottleneck in your workflow. It may then be a good time to switch to a tiling window manager such as dwm, herbstluftwm, i3 or awesome.
- Please use this course as an opportunity to learn to type properly on the keyboard.
- You are going to need it.
- It is not necessary to aim for a particular typing discipline as long as you can type fast enough without too many errors.
- Learning to type is a process, start now!
- Rest your hands on the keyboard body
- Put your fingers onto the home row
- Type without looking at your hands
- Try to minimize hand movement, especially:
- Don’t lift your hands from the keyboard
- Don’t attempt to use hard to reach keys (such as the arrow keys), you’d have to lift your hands
- Don’t attempt to use the mouse, you’d have to lift your hands
- Whatever you type this semester, type it this way, including things which are not related to this class.
- It hurts! But if you stick to this routing for the semester, you’ll type just fine at the end (I promise).
- Please use this course as an opportunity to learn to use an actual editor.
- You are going to need it.
- It is recommended to learn to use Vim, because it’s easy to combine learning Vim with learning to type.
- Learning Vim is a process, start now!
- Walk through this user-friendly Vim tutorial at openvim.org
- export EDITOR=vim in your ~/.bashrc or ~/.zshrc
- Whatever you edit this semester, edit it in Vim, including things which are not related to this class.
- Please take time to get to know your environment (and tweak it as necessary):
Week 2 (7.10.2024) — GPG, SSH and shell scripting
- Before class (mandatory):
- Lecture:
- Efficiency continued (additional shell tricks, especially for Zsh)
- Quick overview of Vim
- Writing some shell scripts together
- Labs:
- Exchanging GPG keys.
- GPG key signing party.
- You will get access to your instance of the homework submission system.
- During the week, we’ll send out first-time log-in credentials for the hypervisors.
- After class:
- Configure your MUA (e-mail client) to use GPG:
- You are going to need it to communicate with your teachers.
- Make sure outgoing mail is automatically encrypted when you know the recipient’s key.
- Make sure incoming mail is automatically decrypted.
- Tutorials: mutt, neomutt, alot, Thunderbird, Outlook.com
- Configure your MUA (e-mail client) to use GPG:
Week 3 (14.10.2024) — QEMU, KVM and systemd
- Before class (mandatory):
- Please read QEMU+KVM and the material it links to.
- Take a look at qemu(1). Don’t read the whole thing, try to get a rough idea of what options are available. Then, read QEMU on ArchWiki.
- Please read the following man pages:
- daemon(7) describes how UNIX services (called daemons) are started and supervised by systemd. It contrasts two approaches: the original SysV approach, and the correct approach. It is important that you understand the difference.
- systemd(1) provides an overview of what systemd is. Pay attention to the various unit types systemd supports.
- systemd.service(5) details Service units. These will be very important.
- Lecture:
- Overview of our virtualization infrastructure
- Overview of the homework submission system
- QEMU basics
- BIOS vs UEFI booting
- Booting a VM from a given disk image
- Labs:
- Individual work on the homework exercises or your project. We are here to help if you get stuck and to answer any questions you might have.
- After class:
- Although systemd was a move in the right direction, it sparked significant
controversy. UNIX pundits criticized it for being overly complex,
monolithic and not at all in the UNIX spirit. Here is a selection of posts
criticizing systemd. There’s a lot of technical merit in those posts, as
well as historical and cultural background:
- Broken by design: systemd by Rich Felker, author of musl-libc
- A word about systemd by Laurent Bercot aka skarnet, author of s6, an alternative init scheme
- Switch to a tiling window manager such as dwm, herbstluftwm, i3 or awesome and learn to use it. It will make your life a whole lot easier.
- Meet suckless.org, a minimalist software movement and the home of dwm. Their entire website is worth skimming through.
- Although systemd was a move in the right direction, it sparked significant
controversy. UNIX pundits criticized it for being overly complex,
monolithic and not at all in the UNIX spirit. Here is a selection of posts
criticizing systemd. There’s a lot of technical merit in those posts, as
well as historical and cultural background:
Week 4 (21.10.2024) — Arch Linux installation
- Before class (mandatory):
- Please read the Arch Linux installation guide and follow through with relevant outbound links; at a minimum;
- During the lecture, we’ll install Arch Linux together. I expect you to guide me through the installation process.
- Lecture:
- Arch Linux installation:
- Legacy setup: MBR, BIOS, completely unencrypted, ext4.
- Modern setup: GPT, UEFI, encrypted /, Btrfs.
- Arch Linux installation:
- Labs:
- Individual work on the homework exercises or your project. We are here to help if you get stuck and to answer any questions you might have.
- After class:
- Configure ssh-agent(1) to keep your SSH keys unlocked. This is going to help you a ton.
Week 5 (28.10.2024) — Public holiday
- Before class (mandatory):
- Lecture:
- Public holiday
- Labs:
- Public holiday
- After class:
- Feel free to continue working on your homework assignments/projects at your own pace.
- If you have any questions or need assistance, please reach out to your teachers.
Week 6 (4.11.2024) — Networking basics
- Before class (mandatory):
- Please read Networking I.
- Read ip(1), ip-address(1), ip-route(1).
- Lecture:
- Hands-on networking examples.
- Wireshark.
- Labs:
- Individual work on the homework exercises or your project. We are here to help if you get stuck and to answer any questions you might have.
- After class:
- Nothing.
Week 7 (11.11.2024) — File systems
- Before class (mandatory):
- Please read Design and Implementation of the Second Extended Filesystem. This is an HTML version of the original 1994 paper describing ext2, a major milestone in the development of traditional Linux file systems. Inode on Wikipedia may be a useful complementary reading.
- Please read The Design and Implementation of a Log-Structured File System (chapters 1 through 4). This 1991 paper describes a file systems structured in a radically different way: as a garbage-collected append-only log. Modern Linux file systems are built on similar principles.
- Lecture:
- Quick Vim tips:
- Scrolling without moving cursor: zt, zb, zz; C-E, C-Y.
- Next/previous ocurrence:
*
,#
.
- The big picture of the storage stack.
- Block devices, inodes, directory entries, block mapping and extents.
- File length vs. storage allocation, files with holes, filefrag.
- Block layer:
- Loop devices (losetup)
- Basic seutp of dm-crypt
- File systems:
- Btrfs
- Subvolumes
- Snapshots, Snapper
- Send/recv, snapshot-based backups, Btrbk
- Online resize
- Multiple devices
- Check vs. scrub
- Quick Vim tips:
- Labs:
- Individual work on the homework exercises or your project. We are here to help if you get stuck and to answer any questions you might have.
- After class:
- Is your laptop’s root partition encrypted? No? Perhaps it’s time to take a look at 031-luks in Evalweb to learn how to migrate a system to an encrypted partition.
- Is your laptop’s drive backed up? No? Perhaps it’s time to take a look at 051-backup in Evalweb to explore some backup options.
- We cannot stress enough how incredibly important it is to have your data encrypted at rest (especially in portable devices such as laptops and phones) and to back it up regularly (obviously, you should also encrypt the backup).
Week 8 (18.11.2024) — Internetworking
- Before class (mandatory):
- Nothing.
- Lecture:
- There is no lecture. Instead, please read Networking II.
- The reading material should help you get the 06* task series in Evalweb done.
- Labs:
- If you want to study the material in a larger group, come to SU2 at 10:40.
- Vojta Káně will talk about Netfilter, the Linux subsystem upon which firewall is built.
- After class:
- Nothing.
Week 9 (25.11.2024) — DNS
- Before class (mandatory):
- Please read the DNS chapter.
- Lecture:
- Practical examples: setting up NSD and Unbound (including DNSSEC).
- Labs:
- Individual work on the homework exercises or your project. We are here to help if you get stuck and to answer any questions you might have.
- After class:
- DNS#DNS privacy: DoT/DoH describes how you can set up a locally running Unbound to prevent your network from spying on your DNS traffic. This adds quite a bit of value, so we recommend that you do it!
Week 10 (2.12.2024) — Linux namespaces
Detailed schedule will be added later.
Week 11 (9.12.2024) — HTTP
Detailed schedule will be added later.
Week 12 (16.12.2024) — Internet mail
Detailed schedule will be added later.
Week 13 (6.1.2025) — IPv6
Detailed schedule will be added later.