重新编译包含固件的内核

重新编译包含固件的内核

如何重新编译内核?我正在尝试这个指南https://wiki.ubuntu.com/Kernel/BuildYourOwnKernel

我在平板电脑上使用 lubuntu 18.04,我想要一个自定义内核来启用触摸屏。

以下部分摘自https://github.com/onitake/gsl-firmware#silead_tsi做了一个自定义silead_dmi.c(位于drivers/platform/x86/silead_dmi.c)并且引用了silead_ts.fw我在这里找到的固件https://github.com/onitake/gsl-firmware/tree/master/firmware/trekstor/surftab7new(仅供参考 Mediacom W700 相当于 SurfTab wintron 7.0 ST70416-6)。

我使用apt-get source linux-headers-$(uname -r)并获得了linux-4.15800 MB 的文件夹。那有drivers/platform/x86/silead_dmi.c我制作文件的路径drivers/platform/x86/silead_dmi.c

按照我使用的指南apt-get source linux-image-$(uname -r),得到了linux-signed-4.15.0118 kB 的文件夹。
现在使用fakeroot debian/rules editconfigs我得到一个错误:

dh editconfigs
dh: Unknown sequence editconfigs (choose from: binary binary-arch binary-indep build build-arch build-indep clean install install-arch install-indep)
debian/rules:35: recipe for target 'editconfigs' failed
make: *** [editconfigs] Error 2

我该如何修复这个错误并重新编译内核?
从中获得的文件夹apt-get source linux-headers-$(uname -r)有路径吗drivers/platform/x86/silead_dmi.c
还有固件?

https://askubuntu.com/questions/1067640/enable-the-touchscreen-of-a-mediacom-winpad-w700
如果有人想要更多信息可以在那里查看。

答案1

用于silead_ts.fw这个已弃用的项目https://github.com/onitake/gslx680-acpi
您应该至少使用https://github.com/onitake/gsl-firmware/blob/master/firmware/trekstor/surftab7new/firmware.fw,固件仅提取,未针对旧项目进行修改。

但你必须使用这个https://github.com/onitake/gsl-firmware/blob/master/firmware/linux/silead/gsl1686-surftab-wintron70-st70416-6.fw,将文件放入/lib/firmware/silead(创建文件夹silead)。还制作了一份名称为mssl1680.fw(备份固件)的副本。

现在按照本指南重新编译内核https://debian-handbook.info/browse/squeeze/sect.kernel-compilation.html
用于apt-cache search ^linux-source查找内核的源代码(如指南所述)。

silead_dmi.c文件中添加:

static const struct property_entry mediacom_w700_props[] = {
    PROPERTY_ENTRY_U32("touchscreen-size-x", 884),
    PROPERTY_ENTRY_U32("touchscreen-size-y", 632),
    PROPERTY_ENTRY_STRING("firmware-name",
                  "gsl1686-surftab-wintron70-st70416-6.fw"),
    PROPERTY_ENTRY_U32("silead,max-fingers", 10),
    PROPERTY_ENTRY_BOOL("silead,home-button"),
    { }
};

最重要的是在 DMI_MATCH 添加:

 {
        /* Mediacom WinPad 7.0 W700 */
        .driver_data = (void *)&surftab_wintron70_st70416_6_data,
        .matches = {
            DMI_MATCH(DMI_SYS_VENDOR, "MEDIACOM"),
                DMI_MATCH(DMI_PRODUCT_NAME, "WinPad 7 W10 - WPW700"),
        },
    },

相关内容