This is the way the Linux kernel was introduced to us in Uni, and I really think it is the best way. Set a goal like "write a simple device driver", or (my choice) "implement a new concurrency primitive", and work towards that. Trying to do something like adding P/V system calls will teach you a lot about how the kernel operates; enough to give you a good starting place to find something new about it to learn.