linux - Learning kernel hacking and embedded development at home? -


i attracted world of kernel hacking , embedded systems.
has got tutorials (+easily available hardware) on starting mess such stuff?
kits writing drivers etc, come documentation , affordable?

thanks!

if new kernel development, suggest not starting hardware development , going "software-only" kernel modules proc file / sysfs or more complex examples filesystem / network development , developing on uml/vmware/virtualbox/... machine crashing machine won't hurt :) embedded development go small arm development kit or small via c3/c4 machine, or old pc can burn homebrew usb / pci / whatever device.

a place start kernelnewbies.org - has lots of links , useful information kernel developers, , features list of easy implement tasks tackle beginners.

some books read:

understanding linux kernel - reference detailing design of kernel subsystems

linux device drivers - written more tutorial lot of example code, focusing on getting going , explaining key aspects of linux kernel. introduces build process , basics of kernel modules.

linux kernel module programming guide - more introductory material

as suggested earlier, looking @ linux code idea, linux kernel api's tend change quite ... lxr helps lot nice browsing interface - lxr.linux.no

to understand kernel build process, link might helpful:

linux kernel makefiles (kbuild)

last not least, browse documentation directory of kernel source distribution!

here interesting exercises insolently stolen kernel development class:

  • write kernel module creates file /proc/jiffies reporting current time in jiffies on every read access.
  • write kernel module providing proc file /proc/sleep. when application writes number of seconds ascii text file ("echo 3 > /proc/sleep"), should block specified amount of seconds. write accesses should have no side effect on contents of file, i.e., on read accesses, file should appear empty (see ldd3, ch. 6/7)
  • write proc file can store text temporarily (using echo "blah" > /proc/pipe) , out again (cat /proc/pipe), clearing file. watch out synchronisation issues.
  • modify pipe example module register character device /dev/pipe, add dynamic memory allocation write requests.
  • write simple file system.

Comments

Popular posts from this blog

c++ - How do I get a multi line tooltip in MFC -

asp.net - In javascript how to find the height and width -

c# - DataTable to EnumerableRowCollection -