Good kernel book
I am looking for a good kernel book. I have looked at "Understanding Linux kernel" and "Linux Device Drivers", but they are too programming oriented.
I have looked at various tutorials on how to compile the kernel, and I find that they are too brief, simply state the steps and don't explain much.
I want a book that goes beyond the basic steps, but I don't need it to get into programming and intense detail.
Ideally, I would like it to explain the folloiwing:
- compile process
- modules (how they are used)
- .config file
- what is going on during the compile process
- how to apply patches to the kernel
- drivers (when the kernel does NOT already have the driver for your device, how these are used)
I also have some specific questions which I was hoping to get from the book, but if anybody can answer these, it would be greatly appreciated.
1. Once compile, is it possible to copy the kernel and use on several computers (assuming hardware is identical or at least close to)?
2. If yes to question 1, what files would need to be copied? I specifically am not sure about where the modules are?
3. Can a driver be installed for a new device without recompiling the kernel? For example, simply put the module in some directory and tell the kernel about it somehow?
4. When you configure your kernel (enable/disable features in make menuconfig), are all your settings stored in the .config file?
5. After I compiled a kernel, if I want to compile the same kernel version, but I want to restart the configuration, do I only need to remove the .config file? Or should I delete the entire kernel source and re-extract it from the tarball?
6. What are the System.map files all about? Are they required?
7. Are .config files reusable? So lets say I saved a .config file, and on another computer, I wanted to compile the same kernel with the same configuration, could I simply put my .config file in the directory?
So if anyone know of a book that deals with my specific "topics", or any other good kernel book, would you please refer me to it?
Could you also answer any or all my questions?
I have no book... but I think to answer to you questions:
3. Yes, but you must have kernel headers (essentially .h files)
5. You should remove your .config file, yes. But 2.6 kernels if configured on a 2.6 system with /proc/config.gz support will setup it automatically from the current system.
6. Uhm... I don't know exacly! :-/
7. Yes, if the kernel version it's the same. If not, not still present features will be ignored, and new features are disabled.
Note: this behavior can change during developement of Linux.
6.) The "system.map" files are mostly for developers involved in debugging kernel oops! messages ... but can be useful to a user for reporting kernel problems (seeking help)
System.map is not a needed file.