使用 Intel 显示驱动程序的补丁重新编译 Ubuntu 18.04 的 Linux 内核

Wol*_*ekt 2 kernel intel-graphics hdmi video-driver 18.04

我正在运行最新的 Ubuntu 18.04 和股票 Linux 内核 4.15.0-23-generic 并且有问题(HDMI 偶尔不工作)。

已经有一个相关的问题:https : //bugs.freedesktop.org/show_bug.cgi?id=105887

这是英特尔显示驱动程序的补丁作为解决问题的差异:https : //patchwork.freedesktop.org/patch/229363/

我想用那个补丁重新编译我的内核/显示驱动程序,但有一些问题,因为我还没有重新编译任何与内核相关的东西:

我如何获得确切的 Ubuntu 内核源代码,包括英特尔显示驱动程序,以便我可以应用上面的补丁?重新编译并将修改后的内核/内核驱动程序安装到我的系统中的步骤是什么(尽可能少的配置)?


设法获取与 Ubuntu 18.04 相关的内核源代码:

git clone git://kernel.ubuntu.com/ubuntu/ubuntu-bionic.git
Run Code Online (Sandbox Code Playgroud)

无法应用https://patchwork.freedesktop.org/patch/229363/ 中的补丁- 似乎它基于不同的内核:

$ git apply --stat V2-drm-i915-glk-Add-Quirk-for-GLK-NUC-HDMI-port-issues..patch
 drivers/gpu/drm/i915/i915_drv.h      |    1 +
 drivers/gpu/drm/i915/intel_ddi.c     |    8 ++++++++
 drivers/gpu/drm/i915/intel_display.c |   19 +++++++++++++++++++
 3 files changed, 28 insertions(+)
gustavo /home/ifischer/src/ubuntu-bionic master [~]
$ git apply --check V2-drm-i915-glk-Add-Quirk-for-GLK-NUC-HDMI-port-issues..patch
error: patch failed: drivers/gpu/drm/i915/intel_ddi.c:1800
error: drivers/gpu/drm/i915/intel_ddi.c: patch does not applygit clone git://kernel.ubuntu.com/ubuntu/ubuntu-bionic.git
Run Code Online (Sandbox Code Playgroud)

Wol*_*ekt 5

我从相关的错误报告中得到的解决方案:https : //bugs.freedesktop.org/show_bug.cgi?id=105887

安装内核编译所需的软件包并下载 Ubuntu 内核补丁:

sudo apt install git flex bison bc libssl-dev gawk libudev-dev ocl-icd-opencl-dev libpci-dev libelf-dev python2.7 libncurses-dev fakeroot kernel-wedge binfmt-support ksh lsscsi binfmt-support libpcre16-3 libpcre3-dev libpcre32-3 libpcrecpp0v5 libsepol1-dev libattr1-dev libblkid-dev libpcre16-3 libpcre3-dev libpcre32-3 libpcrecpp0v5 libselinux1-dev libsepol1-dev uuid-dev debugedit libarchive13 libdw1 liblua5.2-0 liblzo2-2 libnspr4 libnss3 librpm8 librpmbuild8 librpmio8 librpmsign8 rpm rpm-common rpm2cpio spl-dkms

git clone --depth 1 --single-branch --branch v4.17.2 git://git.launchpad.net/~ubuntu-kernel-test/ubuntu/+source/linux/+git/mainline-crack v4.17.2

cd v4.17.2
wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.17.2/0001-base-packaging.patch
wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.17.2/0002-UBUNTU-SAUCE-add-vmlinux.strip-to-BOOT_TARGETS1-on-p.patch
wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.17.2/0003-UBUNTU-SAUCE-tools-hv-lsvmbus-add-manual-page.patch
wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.17.2/0004-UBUNTU-SAUCE-no-up-disable-pie-when-gcc-has-it-enabl.patch
wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.17.2/0005-debian-changelog.patch
wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.17.2/0006-configs-based-on-Ubuntu-4.17.0-3.4.patch
Run Code Online (Sandbox Code Playgroud)

https://patchwork.freedesktop.org/patch/229363/下载补丁并在 i915.patch 中重命名。应用所有补丁:

patch -p1 < 0001-base-packaging.patch
patch -p1 < 0002-UBUNTU-SAUCE-add-vmlinux.strip-to-BOOT_TARGETS1-on-p.patch
patch -p1 < 0003-UBUNTU-SAUCE-tools-hv-lsvmbus-add-manual-page.patch
patch -p1 < 0004-UBUNTU-SAUCE-no-up-disable-pie-when-gcc-has-it-enabl.patch
patch -p1 < 0005-debian-changelog.patch
patch -p1 < 0006-configs-based-on-Ubuntu-4.17.0-3.4.patch
patch -p1 < i915.patch
Run Code Online (Sandbox Code Playgroud)

从当前内核配置制作内核配置:

yes "" | make oldconfig
Run Code Online (Sandbox Code Playgroud)

如果不需要,请禁用 ZFS:

在 debian.master/rules.d/amd64.mk 中设置 do_zfs = false

构建内核:

make deb-pkg
# find the debian package files first
dpkg -i $KERNEL_DEB_FILES
Run Code Online (Sandbox Code Playgroud)

驱动程序似乎是 kernel-HEADER 包的一部分,所以安装这些就足够了。

安装内核 Debian 软件包后,更新 Grub:

sudo update-grub
Run Code Online (Sandbox Code Playgroud)

在 Grub 设置中设置新的默认内核并再次更新 grub:

sudo vim /etc/default/grub
Run Code Online (Sandbox Code Playgroud)

我的 HDMI 问题现在消失了。