S3C2440移植linux3.4.2內核之內核裁剪

上一節S3C2440移植linux3.4.2內核之支持YAFFS文件系統我們修改了內核支持了yaffs2文件系統,這節我們裁剪內核。

爲什麼要裁剪內核?

  因爲mtd的kernel分區只有2M大,而實際內核有2.37MB,所以需要裁剪到小於2M(或者修改mtd分區值)

首先裁剪內核裏無關的CPU/單板文件

  通過vi .config,然後搜索2440,如下圖所示:
在這裏插入圖片描述
  然後參考上圖,make menuconfig

  進入System Type —> SAMSUNG S3C24XX SoCs Support:
在這裏插入圖片描述
  如上圖所示,CPU下只選擇2440,單板文件下只選擇SMDK2440以及MINI2440相關

裁剪無關的文件系統ext2、ext3、ext4

  重新make menuconfig,進入File systems,去掉:

< > Second extended fs support               //ext2
< > Ext3 journalling file system support 
< > The Extended 4 (ext4) filesystem

裁剪光盤文件系統CD-ROM

進入File systems—> CD-ROM/DVD Filesystems,去掉:

< > ISO 9660 CDROM file system support    

裁剪不常用的雜項文件系統

進入File systems—> Miscellaneous filesystems,去掉:

< >   Compressed ROM file system support (cramfs)    // cramfs壓縮文件系統
[ ]     Include support for ZLIB compressed file systems //zlib壓縮文件系統
< >   ROM file system support                            // Romfs

通過內核啓動信息來裁剪

  如下圖所示,內核啓動時,看到初始化了PS2鼠標驅動
在這裏插入圖片描述
  由於,我們2440板子只有USB接口,所以需要裁剪掉PS2鼠標驅動:

重新make menuconfig,進入Device Drivers-> Input device support,去掉:

[ ]     Provide legacy /dev/psaux device    //PS2鼠標鼠標指向的鼠標設備文件
[ ]   Mice  --->                   //其它各種鼠標驅動,包括PS2鼠標、I2C鼠標、觸摸板等
			        [ ]   PS/2mouse

通過.config文件的內容來裁剪

  通過vi .config,找到如下圖所示,由於CONFIG_TOUCHSCREEN_USB(USB觸摸板)很少見到,所以去掉
在這裏插入圖片描述
  USB-based Watchdog Cards(基於usb的看門狗卡)

  如下圖所示,這個看門狗卡很少用到,所以去掉CONFIG_SSB_POSSIBLE
在這裏插入圖片描述
  USB-based Watchdog Cards(基於usb的看門狗卡)
  Sonics Silicon Backplane (Sonics公司下的Silicon底板)
  如下圖所示,這個公司的產品沒有用到,所以去掉CONFIG_BCMA_POSSIBLE
在這裏插入圖片描述
  找到如下圖所示,由於CONFIG_SND_USB (USB聲卡)沒用到,所以去掉
在這裏插入圖片描述
  去掉CONFIG_USB_LIBUSUAL,沒用到
在這裏插入圖片描述

最後通過上節查找的裁剪內容,來make menuconfig

  去掉CONFIG_TOUCHSCREEN_USB

-> Device Drivers                                                                    

  -> Input device support

    -> Generic input layer

    -> Touchscreens

<*>   Samsung S3C2410/generic touchscreen input driver   //加上自帶的觸摸屏驅動

< >   USB Touchscreen Driver                                              //去掉USB觸摸屏驅動 

  去掉CONFIG_SSB_POSSIBLE
搜索如下圖所示,該宏是被別的選項設置,所以去掉不了:
在這裏插入圖片描述

  去掉CONFIG_BCMA_POSSIBLE。該宏也沒找到,所以去掉不了
  去掉CONFIG_SND_USB

-> Device Drivers

-> Sound card support

  -> Advanced Linux Sound Architecture

[ ]   USB sound devices              //去掉USB聲卡驅動

5)去掉CONFIG_USB_LIBUSUAL

-> Device Drivers 

-> USB support

[ ]   The shared table of common (or usual) storage devices       

裁剪後大小如下所示
在這裏插入圖片描述

給內核製作補丁

  製作補丁之前,首先需要make distclean清除所有的配置文件,也包括了menuconfig菜單。而menuconfig菜單是通過讀取.config文件來生成的.
所以我們需要保存.config文件
步驟如下:

cp .config  config_ok            //保存到config_ok文件
make distclean                  
cd ../

mv linux-3.4.2  linux-3.4.2_new  //更改文件名
tar -xjf linux-3.4.2.tar.bz2             //解壓需要比較的源文件

diff -urN linux-3.4.2 linux-3.4.2_new > linux-3.4.2_new.patch    //生成補丁文件linux-3.4.2_new.patch
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章