I have previously written my own basic kernel in my class project. Now I am figuring out how to write a boot loader.
I seen examples where boot loaders are written to load the OS from floppies, but floppies are past, and I want to learn how to access USB , and try loading my kernel from USB. I know that Usb architecture is one of the most complex, But I would appreciate if anyone could direct me to a good source/sample code (other than the 600 page of USB 2.0/3.0 specification manual). Also if possible, it would be great to know how Microsoft boots its kernel (Using ntdlr??).