openwrt裏面給kernel生成patch的例子

版權聲明:本文爲博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/u011007991/article/details/55509632

openwrt裏面給kernel生成patch的例子。

1.給Makefile生成patch Makefile裏面添加了以下行:
proc-y += flashid.o
進入linux-3.18.21/fs/proc目錄,備份修改之前的Makefile爲Makefile.bak
然後在linux根目錄下面使用以下命令生成patch

diff -uprN ./fs/proc/Makefile.bak ./fs/proc/Makefile > flashid.makefile.patch

生成的flashid.makefile.patch內容如下:

    --- ./fs/proc/Makefile.bak 2017-01-21 08:47:02.049371555 +0800 
    +++ ./fs/proc/Makefile 2017-01-21 07:50:26.677285655 +0800  @@ -24,6 +24,7 @@ proc-y += softirqs.o  proc-y += namespaces.o  proc-y += self.o  proc-y += thread_self.o 
    +proc-y += flashid.o  proc-$(CONFIG_PROC_SYSCTL) += proc_sysctl.o  proc-$(CONFIG_NET) += proc_net.o  proc-$(CONFIG_PROC_KCORE) +=
    kcore.o

2.給flashid.c生成patch flashid.c爲全新的文件,沒有對比的文件,在linux根目錄下面使用以下命令生成patch
diff -uprN ./fs/proc/flashid.c.bak ./fs/proc/flashid.c >flashid.flashid.c.patch

生成的flashid.flashid.c.patch內容如下:

    --- ./fs/proc/flashid.c.bak 1970-01-01 08:00:00.000000000 +0800 
    +++ ./fs/proc/flashid.c 2017-01-21 07:49:39.617284465 +0800  @@ -0,0 +1,35 @@ 
    +#include 
    +#include 
    +#include 
    +#include 
    + 
    +#define FLASH_ID_LEN 0x8 
    +static int flashid_proc_show(struct seq_file *m, void *v) 
    +{ 
    + seq_printf(m, "%02x%02x%02x%02x%02x%02x%02x%02x ",

    + saved_flash_id[0], saved_flash_id[1],

    + saved_flash_id[2], saved_flash_id[3],
    + return 0; 
    +} 
    +static int _init proc_flashid_init(void) 
    +{ 
    + return 0; 
    +} 
    +module_init(proc_flashid_init);

3.. 給m25p80.c生成patch
進入linux-3.18.21/drivers/mtd/devices目錄,備份修改之前的m25p80.c爲m25p80.c.bak
然後在linux根目錄下面使用以下命令生成
patch diff -uprN ./drivers/mtd/devices/m25p80.c.bak ./drivers/mtd/devices/m25p80.c > flashid.m25p80.c.patch
生成的flashid.m25p80.c.patch內容如下:

    --- ./drivers/mtd/devices/m25p80.c.bak 2017-01-21 09:23:44.389427272 +0800
    +++ ./drivers/mtd/devices/m25p80.c 2017-01-21 08:23:58.981336564 +0800  @@ -246,6 +246,9 @@ static int m25p80_erase(struct spi_nor *

    * matches what the READ command supports, at least until this driver

    * understands FAST_READ (for clocks over 25 MHz). 
    {

    struct mtd_part_parser_data ppdata;  @@ -302,6 +305,18 @@ static int
    m25p_probe(struct spi_device

    if (ret)

    return ret;

    //get flash unique id

4.把以上3個patch合成到一個文件中 cat flashid.*.patch > 0100-flashid.patch

5.修改生成的0100-flashid.patch裏面的路徑

./fs/proc/flashid.c.bak ==> a/fs/proc/flashid.c
./fs/proc/flashid.c ==> b/fs/proc/flashid.c

./drivers/mtd/devices/m25p80.c.bak ==> a/drivers/mtd/devices/m25p80.c
./drivers/mtd/devices/m25p80.c ==> b/drivers/mtd/devices/m25p80.c

./fs/proc/Makefile.bak ==> a/fs/proc/Makefile
./fs/proc/Makefile ==> b/fs/proc/Makefile

最終的0100-flashid.patch內容如下:

--- a/fs/proc/flashid.c 1970-01-01 08:00:00.000000000 +0800 
+++ b/fs/proc/flashid.c 2017-01-21 07:49:39.617284465 +0800 
@@ -0,0 +1,35 @@ 
+#include 
er 25 MHz). 
*/ 
+#define FLASH_ID_LEN 0x8 
+u8 saved_flash_id[FLASH_ID_LEN] = {0}; 
+ static int m25p_probe(struct spi_device *spi)

{
if (ret) 
proc-$(CONFIG_NET) += proc_net.o 
proc-$(CONFIG_PROC_KCORE) += kcore

6.複製生成的patch到kernel patch目錄下面
複製patch文件到目錄chaos_calmer/target/linux/ramips/patches-3.18下面
7. 使用生成的patch 直接make kernel的話不會打patch,patch只會在第一次編譯時生效,所以需要先clean
kernel.
make ./target/linux/clean V=s
make ./target/linux/install

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章