Writing Linux Device Drivers: a guide with exercises
Jerry Cooperstein has been working with computers since 1969.  He has a PhD in theoretical nuclear astrophysics, and has been using Linux since 1994.  He has done many Linux engineering projects both at the application and kernel level and since 1998 has been developing and teaching courses on Linux Device Drivers, Kernel Internals and Systems Programming.