建立Gadget USB模块
1、主要注释
该指南目前适用于基于Debian的发行版。随时为他人添加说明。你很可能需要内核版本2.6.20或更高版本。
2、Debian GNU / Linux Lenny和UbuntuFeisty Fawn 7.04 / Hardy 8.04
要准备您的环境,请运行以下命令:
sudo apt-get install linux-source linux-headers-`uname-r`
创建并输入工作目录(例如〜/ gadgetfs)
mkdir $WD
cd $WD
解压缩内核源代码(选择一个并调整次版本号):
tar xfz /usr/src/linux-source-2.6.##.tar.gz
tar xfj /usr/src/linux-source-2.6.##.tar.bz2
注意:这将把源放在当前工作目录中。
然后运行一下命令:
mkdir usb_module_dir
cd usb_module_dir
cp -r ../linux-source-2.6.##/drivers/usb/* .
cd gadget
echo "KDIR := /lib/modules/`uname -r`/build" >> Makefile
echo "PWD := `pwd`" >> Makefile
echo "obj-m := dummy_hcd.o gadgetfs.o" >> Makefile
echo "default: " >> Makefile
echo -e "\t\$(MAKE) -C \$(KDIR) SUBDIRS=\$(PWD) modules" >> Makefile
make
如果一切顺利,你会发现dummy_hcd.ko和gadgetfs.o以及当前目录中的其他文件。通过发出,在需要时加载模块;
sudo insmod ./dummy_hcd.ko
sudo insmod ./gadgetfs.ko default_uid=`id -u`
如果你得到以下错误(例如在Ubuntu8.04 - 2.6.24-19通用):
insmod: error inserting './dummy_hcd.ko': -1 Invalid module format
尝试卸载net2280模块,因为它可能会阻塞dummy_hcd.ko模块:
sudo rmmod net2280
之后再试一次。
sudo insmod ./dummy_hcd.ko
sudo insmod ./gadgetfs.ko default_uid=`id -u`
3、Debian/Ubuntu -full kernel recompilation using make-kpkg
获取root权限:
sudo su -
通过安装一些软件包来准备您的环境:
apt-get install kernel-package linux-source libncurses5-dev
或者,编辑/etc/kernel-pkg.conf并填写电子邮件和维护人字段。
解开内核源,并输入它们
tar -C /usr/src -xjf /usr/src/linux-source-2.6.##.tar.bz2
cd /usr/src/linux-source.2.6.##
准备内核树:复制当前内核配置并启动内核配置
cp /boot/config-`uname -r` .config
make menuconfig
按照这些说明找到并启用所有必需的模块。
现在是编译你的内核的时候了。 类型:
make-kpkg -us -uc --initrd kernel_image kernel_headers
如果一切顺利,安装您刚创建的内核:
dpkg -i /usr/src/linux-{image,headers}-VERSION_XXXXX_ARCH.deb
如果需要,更新引导加载程序配置,并使用创建的内核重新启动。
注意:在安装内核之前,还应通过创建指向当前内核固件目录的链接来准备固件目录:
ln -s /lib/firmware/`uname -r` /lib/firmware/VERSION
其中VERSION是创建的内核的完整版本(例如2.6.20.3-ubuntu1)
这是一个黑客,但为我工作。
原文地址:http://wiki.openmoko.org/wiki/Building_Gadget_USB_Module