675 karma · joined October 5, 2017
Only reason to go lower in stack is if you really ~like~ love hardware and exploring nitty gritty of how things work. In that case, pick any OS book and get ready to go down the rabbit hole :)
* Design and implementation of the FreeBSD operating system: Good and thorough deep dive in FreeBSD OS. Must have.
* FreeBSD Device Drivers: A Guide for the Intrepid: Didn't quite read it all but looks fine for FreeBSD.
* Mac OSX internals - a systems approach by Amit Singh: It was good back in days but now outdated.
* Linux Device Drivers, 3ed : Very dated but still good to grasp Linux device drivers in general. The code examples are bit silly but good enough. There are some GitHub repos which have updated code for latest kernels.
* Essential Linux Device Drivers by S Venkateswaran: It complements LDD3 book quite nicely. Has some real device examples and very exhaustive. Must have.
* Linux kernel development by Robert Love: Very good for short/quick intro. Best for preparing before interviews ;)
* Professional Linux kernel architecture by Wolfgang Mauerer: As other book, its dated but some of the explanations about interrupts, PCI, etc are good. His callgraph approach was very handy in understanding things.
* The Linux programming interface by Michael Kerrisk: Not really about OS but next thing close to it - system programming (the real system programming). Must have.
* Understanding Linux virtual memory manager by Mel Gorman: As other books, it's dated but still one of the best available to get a handle on memory management under Linux. Must have.
* Understanding the Linux kernel: Dated but still my go to book to refresh certain subsystems. Must have.
* Linux Kernel Programming by Michael Beck: Mentioned for historical reasons, else most out dated book here (2.4 based). Horrible editing and English but heck! I loved it back in the days :)
* Linux kernel networking by Rami Rosen: Never read it but quite dated.
* Understanding Linux network internals by Christian Benvenuti: A real bible of Linux networking. If nothing else, your jaw drops at the effort author made to write this book. Dated but unlike more generic Linux kernel things, network stack is still same in its core. Must have.
* The Linux kernel primer: A top-down approach for x86 and PowerPC Architecture: Very dated book but good to read from PPC perspective. Lot of things have changed since its publication.
* See MIPS Run by Dominic Sweetman: dated but gives good idea about MIPS internals and how Linux uses it.
* IA-64 Linux Kernel: Design and Implementation: Its dated not just w.r.t code but also w.r.t. hardware. Nonetheless, it gives a good insight into IA-64 architecture and Linux from non-x86 perspective.
* Definitive guide to Xen hypervisor: this is the only book on virtual machine which is not just from user perspective. While best way to learn VM is through reading architecture spec and code, this book still satisfied me w.r.t. virtual machine internals.
Every other book on amazon about Linux kernel is more or less useless. For more academic book, "Operating systems - three easy pieces" is good.
With respect to "ops integration service", do you have some examples?
a. could not build a good team,
b. co-founder was not 100% committed,
c. picked target market in the geography which I was new to. Although it was my home country, the way to do business and lack of professional network became hindrance.
While I still dislike citizen's database, I can also see why some kind of person authenticator is needed for country like India. I sat through UIDAI architects presentations, and from what I could tell that substantial thought was given to design. So while I maintain skepticism for such database, I also believe India needs some way authenticate various transactions (monetary or otherwise). SSN is a joke, at least Aadhaar was given substantial thought.
There is no comparison whatsoever. China has iron clench on its citizens, particularly over net. India has next to zero surveillance.
>> Muslims persecuted by Hindus. Women persecuted by misogynists.
This is patently BS! Please stop regurgitating this narrative! India has second largest Muslim population in the world, Hindus population has been steadily dropping while Muslims population has been increasing. There have been multiple muslim Presidents, Vice-Presidents, Chief Ministers. Infact, India's most of political parties have been accused of favoring Muslim population. India's most famous movie actors are Muslims, many cricketers (India's real religion) are muslims. Wipro and many other successful software companies are owned by Muslim. Had there been persecutions of any sort, there would have been hardly any such examples. So, please stop this BS! Most of such news are blown out of proportion by vested interests, particularly those who look for help from outside India. If you talk to an average Muslim, they would be much happier to live in India than in any of its neighboring states.
Great!! now this is the spirit of startup.
Also, while reading RFCs, following is handy -
MUST (absolutely required)
MUST NOT (absolutely prohibited)
SHOULD (highly recommended)
SHOULD NOT (highly not recommended)
MAY (meh)
1. You must have good systems understanding, and I assume you already know basic computer organization/architecture. Read Robert Love's Linux Kernel Development to begin with.
2. Start dabbling with small device drivers. Use Linux Driver Development, or other such books.
3. Pick a small subsystem within Linux (say, a specific driver, or filesystem, or PCI, etc) and start reading it's mailing list like a religion. Initially, it wont make sense but keep pushing - whatever you don't understand, read about it, find it's code, ask questions (usually on IRC, avoid mailing list for asking introductory questions).
There are many resources these days about kernel in general and not necessarily Linux kernel. You can read/use those. Best way, as with any other field, is to get involved - either by getting into a kernel dev team or taking up a small project.
Be aware that unlike other domains, in kernel development, significant time is spent in learning/understanding underlying system (hardware, system architecture, etc) and amount of code written in comparison to learning, is very less. Also, a decade ago, kernel team was considered as elite team in company. These days they are just sustenance team in most companies (exception may be Intel, AMD, 1 or 2 teams in Google/FB/Apple and few other companies). Also, I feel being kernel domain reduces your scope in corporate world (it's a separate topic). However, kernel devs are still quite paid well due to shortage of expertise in this domain.
For Security analyst, just like kernel dev, one needs to understand system very well. Having good grasp of system, underlying architecture in hardware or in memory, does help significantly but I dont think kernel development background is necessary.
It was not by choice :)