views:

517

answers:

2

I'm trying follow a tutorial to create a custom USB driver in Linux and I hope to develop this thing on my Eee PC with Ubuntu Eee using g++. Unfortunately to follow the tutorial I need the linux/module.h header file. From what I understand I will need to compile the kernel to get this to work. I never compiled a kernel before and all of the instructions I find are for the desktop Ubuntu.

I am doing this on my Eee since I will get extra credit in a class if I can do this and use it in a class project.

The tutorials that I am following is here: http://www.linuxjournal.com/article/7353 and here: http://www.linuxjournal.com/article/4786

+5  A: 

Most (All?) of the major Linux distros not only distribute the linux kernel, but also apply numerous patches to it. Thereby improving stability and adding lots of features. So you'll want to use Ubuntu's package system to grab down Ubuntu's patched kernel source!

You probably do NOT need to rebuild the kernel! Most likely, you just need the kernel-headers package for your current kernel to compile your USB driver. Assuming you are building it as a kernel module, you can then load it with modprobe or insmod. (lsmod & rmmod are also useful.)

If you do need to rebuild the kernel, well, it's easy. (So easy, I use kernel builds to test my hardware.) There's lots of Kernel Building HOWTO's on the web. You're in for a lot of fun trying to figure out what options you want as modules, what you want compiled in, and what you want to leave out. You can make the kernel smaller, but you might miss some of that stuff.



Amended to add:

I remember doing "sudo apt-get install linux-headers-eeepc," do I need more than that? If not then where are those headers because my test code that includes "linux/module.h" doesn't compile

There should be a way to list all the files in that linux-headers-eeepc package. I'm coming from the RedHat/RPM world. But I would guess something like dpkg --contents linux-headers-eeepc or dpkg --listfiles linux-headers-eeepc. You may have to play around with that a bit.

Alternatively, judging by http://packages.ubuntu.com/, packages like linux-headers-2.6.27-7 contain the file /usr/src/linux-headers-2.6.27-7/include/linux/module.h. So you might just want to look around in /usr/src/*/include/linux/module.h.

Alternatively, try:

% locate linux/module.h | grep 'linux/module.h$'

Or

% find / -path '*/linux/module.h'

(That find might take a while to complete...)

Mr.Ree
I remember doing "sudo apt-get install linux-headers-eeepc," do I need more than that? If not then where are those headers because my test code that includes "kernel/module.h" doesn't compile.
Bernard
I meant "linux/module.h"
Bernard
Response amended to post. (Needed more than 300 chars to respond.)
Mr.Ree
I found the header files, I need to do more work to get it to compile but this at least means that I don't have to compile the kernel. Thanks for your help.
Bernard
+2  A: 

From Here:Ubuntu Kernel/Compile To start: sudo apt-get install linux-kernel-devel fakeroot build-essential makedumpfile

Probably just read that link.

More in depth details here

Cadoo