Linux内核裁剪实例
- 格式:pdf
- 大小:229.30 KB
- 文档页数:10
Linux内核裁剪实例
从零开始配置内核是不明智的,建议在某一个默认配置的基础上进行修改,以达到自己产品的实际需求。
裁剪和配置内核的基本原则:
⏹基于某一个最接近的主板配置来修改;
⏹必须的、能确定的选项选中;
⏹不能确定的则不要改变原来配置;
⏹可选可不选的,建议根据help信息决定或者不选;
⏹一次改动不要太多,渐进式修改和验证;
⏹注意及时备份配置文件,出现意外可以回退恢复。
下面给出一些常见功能的配置裁剪实例,很多功能与所采用的主板硬件相关,与其它不同主板的内核配置上不一定完全相同,但还是有一些参考意义。
1.1.1 GPIO子系统配置
Linux 2.6以上内核引入了子系统,GPIO子系统将全部GPIO的操作接口都通过
“/sys/class/gpio/”目录导出,非常方便用户使用。
输入下列命令,进入内核配置菜单:
$ make ARCH=arm menuconfig
在主菜单界面中选择“Device Drivers”:
[*] Networking support --->
Device Drivers --->
File systems --->
Kernel hacking --->
进入“Device Drivers”界面,选择并进入“GPIO Support”:
[*] SPI support --->
PPS support --->
PTP clock support
-*- GPIO Support --->
<*> PWM Support --->
在“GPIO Support”中选中“/sys/cla ss/gpio…”:
--- GPIO Support
[*] /sys/class/gpio/... (sysfs interface)
*** Memory mapped GPIO drivers: ***
…
配置后重新编译内核,使用新内核的系统即可通过“/sys/class/gpio/”访问系统的GPIO 了。
1.1.2 LED子系统配置
Linux LED子系统提供了“/sys/class/leds/”的访问接口,启用LED子系统能很方便地操作系统的LED资源。
在“Device Drivers”配置界面,选中“LED Support”支持:
<*> MMC/SD/SDIO card support --->
<> Sony MemoryStick card support (EXPERIMENTAL) --->
[*] LED Support --->
[ ] Accessibility support --->
进入“LED Support”子菜单,选中LED类支持和LED触发器支持,并根据需要设置触发器:
--- LED Support
[*] LED Class Support
*** LED drivers ***
...
[*] LED Trigger support
*** LED Triggers ***
<*> LED Timer Trigger
<*> LED Heartbeat Trigger
<> LED backlight Trigger
<*> LED GPIO Trigger
<*> LED Default ON Trigger
只要将系统的LED设备驱动添加到LED子系统中,即可通过“/sys/class/leds/”接口来进行访问。
1.1.3 串口配置
串口是嵌入式Linux必不可少的外设,默认控制台通常就是串口,所以必须在内核中使能串口以及串口控制台支持。
在“Device Drivers”配置界面,选择“Character devices”:
Input device support --->
Character devices--->
-*- I2C support --->
进入“Character devices”配置菜单,选择“Serial drivers”:
[*] /dev/kmem virtual device support
Serial drivers--->
[ ] ARM JTAG DCC console
进入“Serial drivers”,在配置界面进行串口控制器配置。嵌入式Linux默认控制台是串口,所以还需使能串口控制台支持。串口控制器与具体处理器相关,需要根据硬件进行选择,很多处理器移植代码会默认选中自身的串口驱动支持,例如EPC-28x,已经默认选中了“i.MXS Application serial port support”:
*** Non-8250 serial port support ***
<*> i.MXS debug serial port support
<*> i.MXS Application serial port support
...
1.1.4 USB Host驱动配置
USB可以外接多种设备,不同设备的驱动配置也是不同的。下面以常用的U盘、USB 鼠标键盘配置为例进行介绍。
1.使用U盘
U盘在Linux系统下被认为是SCSI设备,所以必须在内核中选择支持SCSI。在主菜单界面选择“Device Drivers”,进入设备驱动配置界面,选择“SCSI device support”:
[*] Block devices --->
[*] Misc devices --->
SCSI device support --->
<> Serial ATA and Parallel A TA drivers --->
进入“SCSI device support”配置界面,进行如下配置:
<> RAID Transport Class
<*> SCSI device support
<> SCSI target support
[*] legacy /proc/scsi/ support
*** SCSI support type (disk, tape, CD-ROM) ***
<*> SCSI disk support
<> SCSI tape support
<> SCSI OnStream SC-x0 tape support
然后在驱动中配置USB控制器。进入“Device Drivers”,选中“USB support”:
<> Sound card support --->
[ ] HID Devices --->
[*] USB support--->
<*> MMC/SD/SDIO card support --->
进入“USB support”菜单,选中“Support for Host-side USB”,并根据处理器的控制器情况配置USB控制器。下面是EPC-28x处理器USB控制器的配置:
--- USB support
<*> Support for Host-side USB
[*] USB device filesystem (DEPRECA TED)
[*] USB device class-devices (DEPRECA TED)
[*] USB runtime power management (suspend/resume and wakeup)
<*> EHCI HCD (USB 2.0) support
[*] Support for Freescale controller
[*] Support for Host1 port on Freescale controller
[*] Support for DR host port on Freescale controller
[*] Root Hub Transaction Translators
使用U盘,必须使能USB大容量类支持,选中“USB Mass Storage support”: