Edison Yocto配置内核、添加驱动

Edison自带的linux系统,并没有编译加入kernel header,而kernel header是编译安装各种驱动程序必须依赖的。一般来说,我们可以到网上找到这个版本的linux源代码,并将它解压到/usr/src目录下,来保证大部分功能的正常使用,edison这样做当然也可以,不过还有另一个比较简单的做法。yocto单独将这部分编译成了一个ipk包,使用opkg install命令安装之后,就可以得到kernel header,这里可以下载http://repo.opkg.net/edison/repo/edison/,包名为kernel-dev_3.10.17-r0_edison.ipk,同时,还可以看到这里发布了许多其他的包,比opkg list看到的更丰富。但是我在安装这个包时总是提示/boot分区剩余空间不足,所以希望大家把使用这个包的情况反映一下。感激不尽。

下面开始基于yocto系统定制内核。首先参考论坛里其他帖子,配置好yocto,参考这里 http://www.arduino.cn/thread-10595-1-1.html 。这个帖子里介绍了怎样定制离线包,在完成yocto环境配置后,我们继续来定制内核。从而将一些驱动包含进来,而不用自己去安装一次。

1 source poky/oe-init-build-env

是进入yocto环境的第一步,执行完它之后,输入

1 bitbake -c menuconfig virtual/kernel

就可以打开内核配置界面,menuconfig是一个基于图形界面的内核配置工具。我们可以看到很多选项。

选项后面带有--->符号,表示还有下级菜单,可以按回车键进入。我们以添加一款“rtl8188cus”芯片的usb无线网卡为例,这里进入“设备驱动”菜单

因为usb 无线网卡属于网络设备,因此继续进入“网络设备支持”菜单

同样,进入“USB网络适配器”菜单

进入“无线局域网”

这里就能够找到这块网卡的支持了。一般来说新发布的linux内核会将当前支持的绝大部分通用设备加入支持列表,也就是说,会出现在这个配置表项里。edison使用的内核很新,因此可以找到非常多的设备支持,甚至包括WiDi这种非常新的功能。在选项前面,空括号表示未配置,也就是没有开启这个功能,*表示开启,M表示模块化加载,一般非常核心的功能都直接开启,而外部设备驱动一般当作模块加载,这样有助于保持内核精简。选定一个选项后,按 Y 键就可以将其开启,按 M 键则将其作为模块加载。选择完成之后,按左右方向键移动最下面的功能选项到 save 保存配置,默认名字就可以了。

然后输入命令

1
2 cp build/tmp/work/edison-poky-linux/linux-yocto//linux-edison-standard-
build/.config device-software/meta-edison/recipes-kernel/linux/files/defconfig

将刚才配置的内核配置文件启用,其中视个人的目录而定,我这个是3.10.17+gitAUTOINC+6ad20f049a_c03195ed6e-r0,这是你本地工程的版本号码。
使用

1 bitbake -c compile_kernelmodules virtual/kernel

命令就可以开始编译新的内核

然后,再按照前文提到的帖子,运行 device-software/utils/flash/postBuild.sh 就可以得到刷机用的文件了,最后刷机,享受你的新内核吧!

文章来源:Arduino中文社区