The Linux kernel is written in C, so you should have at least a basic understanding of C before diving into kernel work. You don't need expert level C knowledge, since you can always pick some things up underway, but it certainly helps to know the language and to have written some userspace C programs already.
It will also help to be a Linux user. If you have never used Linux before, it's probably a good idea to download a distro and get comfortable with it before you start doing kernel work.
Lastly, knowing git is not actually required, but can really help you (since you can dig through changelogs and search for information you'll need). At a minimum you should probably be able to clone the git repository to a local directory.
Google Cloud link (compress as 7zip): https://drive.google.com/open?id=0B22DpOv0xg6ER3ZKbGFfMUdnMU0
Oreilly link: https://resources.oreilly.com/examples/9781593271442/raw/master/hacking-live-1.0.iso
I liked the way Grokking the coding interview organized problems into learnable patterns. However, the course is expensive and the majority of the time the problems are copy-pasted from leetcode. As the explanations on leetcode are usually just as good, the course really boils down to being a glorified curated list of leetcode problems.
So below I made a list of leetcode problems that are as close to grokking problems as possible.
A quick guide on how to setup a GPU-Passthorugh. Below are some of my Resources
- https://wiki.archlinux.org/index.php/PCI_passthrough_via_OVMF
- https://www.evonide.com/non-root-gpu-passthrough-setup/
- https://dominicm.com/gpu-passthrough-qemu-arch-linux/
The Arch Wiki is the goto place for additional information and performance tweaks like CPU-Pinning.
- IGPU or second dedicated GPU for Host system (unless you want to go the hard way and use one GPU for HOST and GUEST)
| We are going to use buildroot to download, configure and compile the kernel. | |
| First, download and uncompress buildroot: https://buildroot.org/download.html | |
| Go to the directory and: | |
| make qemu_x86_defconfig | |
| make menuconfig |
| GDB commands by function - simple guide | |
| --------------------------------------- | |
| More important commands have a (*) by them. | |
| Startup | |
| % gdb -help print startup help, show switches | |
| *% gdb object normal debug | |
| *% gdb object core core debug (must specify core file) | |
| %% gdb object pid attach to running process | |
| % gdb use file command to load object |