Linux-Kernel

重新編譯包含韌體的核心

  • September 12, 2018

如何重新編譯核心?我正在嘗試這個指南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

如果有人想了解更多資訊,可以在那裡查看。

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"),
       },
   },

引用自:https://unix.stackexchange.com/questions/466571