Start from scratch while building an operating system. a self-learning book
You can learn the fundamental skills necessary to create an operating system from scratch by reading this book.
The book aims to educate you just enough to help you learn on your own, rather than trying to teach you everything. The book teaches you fundamental ideas like x86 Assembly, ELF, linking, and bare-metal debugging, among others, but more significantly, it explains where such ideas come from.
It talks about trade-offs in design and how real-world choices affect design, performance, and security. Through the use of case studies in Linux and UNIX, the book clarifies, strengthens, and connects design concepts to actual design decisions.