NOTE: You
only need to do these steps if your kernel doesn't have USB support!
This information is only valid for the official 2.2 and 2.4 kernels
from kernel.org. This information is NOT valid for 2.5/2.6 kernels.
Installing the kernel source:
NOTE: If you need help with any of these steps, refer to the Linux
Kernel HOWTO at
http://www.redhat.com/mirrors/LDP/HOWTO/Kernel-HOWTO.html
. If you don't know how to use the command line, refer to section 10
of
http://www.redhat.com/support/manuals/RHL-7.1-Manual/getting-started-guide/
If you don't have kernel source installed on your system:
- Use the links on the download page to get the 2.2 or 2.4
kernel that is compatible with your system.
- Follow the steps at
http://www.redhat.com/mirrors/LDP/HOWTO/Kernel-HOWTO-4.html
to unpack your kernel. Stop when you get to the section on kernel configuration.
- Unless you know what configuration options to choose, I recommend
you do the following:
- Get a kernel from your distributor (RedHat, SuSe, etc...) and
install it (make sure to move the kernel source you unpacked in the previous
step to a safe location so it doesn't get overwritten. It doesn't matter
if it is older than the kernel you are installing, as long as both are 2.2
or both are 2.4)
- These kernels usually come with some default configurations.
RedHat puts them in the /usr/src/linux/configs/ directory.
Copy the one that is most appropriate for your system to
/usr/src/<name of new kernel>/.config (notice the '.' -- that
means that it is a "hidden" file).
- Get rid of the kernel source from your distributor and rename
your new kernel back to /usr/src/linux .
- Some distributions have the kernel header files in /usr/include
set up wrong. Make sure that /usr/include/linux is a symbolic
link pointing to /usr/src/linux/include/linux and
/usr/include/linux is a symbolic link pointing to
/usr/src/linux/include/asm. If these are directories instead of symbolic
links, delete them and use the " ln -s" command to create the symbolic
links. For example, " ln -s /usr/src/linux/include/linux /usr/include/linux
".
- cd to /usr/src/linux, and run "make oldconfig
" . This will update the config file to match your current kernel
version, prompting you for new options.
Configuring and building the kernel:
NOTE: For more information on the following steps, read the Linux-USB
Guide, at
http://www.linux-usb.org/USB-guide/book1.html
- From /usr/src/linux, run either "make menuconfig
" for a text-mode configuration program, or "make xconfig
" for a graphical configuration program.
- Enable Video4Linux support. In 2.2 kernels, it is "Character
Devices->Video For Linux->Video For Linux", and in 2.4/2.5 kernels
it is "Multimedia Devices->Video For Linux ". You can set this
to "M" (module) or "Y" (built into kernel).
- If you have a 2.4/2.5 kernel, enable "Multimedia Devices->Video
For Linux->Video For Linux->V4L information in proc filesystem
"
- USB Configuration:
- Enter the "USB support" menu and enable "Support For
USB " (Y or M)
- Enable "Preliminary USB device filesystem"
- DISABLE "Enforce USB bandwidth allocation".
NOTE: This option will be disabled by default and will not be visible
if you have CONFIG_EXPERIMENTAL disabled (it's the very first option in
the kernel configuration).
- Enable a USB controller driver (UHCI, UHCI Alternate, or OHCI).
" lspci -vv" should tell you whether you have UHCI or OHCI (hint:
Intel controllers are UHCI). Either UHCI driver should work, but I recommend
that you use UHCI instead of UHCI Alternate. If you don't know which to choose,
set all three to "M".
- Set "USB OV511 Camera support" to "M".
- Rebuild the kernel (this will be slightly different for non-Intel
systems):
- make dep
- make clean
- make bzImage
- make modules
- make modules_install
- Copy arch/i386/boot/bzImage to your /boot directory. Give
it a unique name like "vmlinux-2.4.4-usb", and be sure you don't
overwrite your existing kernel!!
- If you boot from anything other than IDE, you will probably have
to create a new initial ramdisk (initrd) image:
mkinitrd /boot/initrd-2.4.4.img 2.4.4
- Set up your bootloader:
If you use LILO as your bootloader:
Edit your /etc/lilo.conf file. This contains
sections that start with an "image = " line. Do not change them unless
you know what you are doing. Instead, copy one of those sections to the
bottom of the file, and change the filename in the "image" line to that
of your kernel file. Change the "label" line to whatever you want (e.g.
"linux-2.4-usb"). This is the name that you will type at the LILO prompt
to boot your kernel. The "root" line tells where your root filesystem is
stored. Make sure it is the same as with your other kernels. Here is an
example from my /etc/lilo.conf :
image=/boot/vmlinuz-2.4
label=linux-2.4
read-only
root=/dev/sda5
Save the file, and run the "lilo" command. You can
safely ignore most warnings.
If you use GRUB as your bootloader (this is the RedHat
7.2 default):
Edit /etc/grub.conf, and copy your current boot
selection (the section beginning with "title" and all of the indented lines
afterward). Edit the new selection so that the "kernel" and "initrd" (if
necessary) lines refer to your new kernel files. You do not need to run
any commands afterward.
- Add the following line to your /etc/fstab
file: none /proc/bus/usb usbdevfs defaults 0 0
- Reboot with the new kernel. If it works, you can
set it to be the default in lilo.conf (don't forget to run lilo again afterward!),
or in grub.conf.