https://github.com/s-matyukevich/raspberry-pi-os
Matyukevich page on GitHub has lessons with accompanying code to develop a Linux OS for raspberry Pi. The author goes into kernel, processor initialization, interrupt handling, scheduler, implementing syscall, and virtual memory.
I like his approach for these reasons 1. Minimal workable code, 2. Points you to entry function in linux repo 3. Line commentary of those entry function
Note that it's also a somewhat short read as he focuses on the practical implementations instead of the theory.
I myself was hoping that the author continue developing the chapters on file system, drivers, and networking but seemed to have been on hiatus.