如何构建主线内核源包?

Ubuntu内核PPA只提供linux-headers * .deb和linux-image * .deb包。 如何构建相应的linux-source * .deb包?

语境:

我目前正在使用主线内核(现在是3.2 rc6 )运行Ubuntu 11.10,以便更好地支持我的sandbridge IGP(带有intel i5-2520M CPU的Dell E6420笔记本电脑)。

出现,我想安装这个触摸板驱动程序 ,ALPS触摸板受到严重支持(请参阅前面的链接错误报告),同时等待内核版本3.3中的上游支持 。

问题是,DKMS一直在抱怨没有找到完整的内核源代码:

Module build for the currently running kernel was skipped since the kernel source for this kernel does not seem to be installed. 

出现我可能不需要完整的来源,但我仍然想尝试安装它,看看它是否解决了我的问题。

我尝试了什么:

  1. 解压缩/usr/src/的kernel.org源存档。 DKMS仍在抱怨。
  2. 使用uupdate和主线源包手动更新内核源包,如此处所述。 没成功。
  3. 按照@roadmr和@elmicha指令手动构建linux-source包。 我最终成功地建立了它,但DKMS仍然抱怨缺少的来源。
  4. 最后我注意到在重新安装内核头文件时我没有抓到的错误。 出现.deb我得到的可能已经损坏了,再次下载它就诀窍:)唉,虽然DKMS同意编译模块我遇到了以下错误 ,似乎已经报告过了 。 这个问题还没有解决,但由于以下原因,我不会尝试:最后我决定通过xorg-edgers ppa测试精确的内核版本3.2-rc6,它看起来是正确修补的 :它可以工作。

然而,知道如何构建主线linux-source包可能仍然有一些兴趣,因为Ubuntu内核团队没有提供它。 更不用说我在这个过程中学到了很多东西^^

看起来你很勇敢:)你可以尝试按照这些说明从主线内核创建自己的.deb包。

请先阅读本通用文档:

https://help.ubuntu.com/community/Kernel/Compile

以下是有关如何为11.10编译内核的具体说明(尽管您将从3.2源代码树中执行此操作,因此有些事情可能会变得不同)。

http://blog.avirtualhome.com/2011/10/28/how-to-compile-a-new-ubuntu-11-10-oneiric-kernel/

现在,这些指令的问题是他们假设一个带有debian /目录的源代码树,这是允许你构建一个包的控制文件驻留的地方。 这不是一个大问题; 获取可打包的源代码树很容易:

  1. 获取主线内核树

     git clone https://github.com/torvalds/linux.git 
  2. 查看最新的主线内核(截至今日http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.2-rc6-precise/ )。 有三个补丁文件(0001-base-packaging.patch,0002-debian-changelog.patch,0003-default-configs.patch)。 下载这三个文件。

  3. 转到新的全新Linux源目录并按顺序应用所有3个补丁:

     patch -p1 <0001-base-packaging.patch patch -p1 <0002-debian-changelog.patch patch -p1 <0003-default-configs.patch 

你现在有一个很好的debian /目录包含打包信息。 然后,您可以应用我在上面提到的两个URL中的说明来配置和构建内核中的包。 希望这也将创建一个内核源包。

应该可以构建上游内核源代码。 如果你已经将它解压缩到/ usr / src / linux-XY:

 cd /usr/src/linux-XY # copy the configuration of the running kernel: cp /boot/config-$(uname -r) .config make oldconfig fakeroot make-kpkg --initrd --append-to-version=-custom kernel-image kernel-headers cd .. ls -lrt *-custom*deb # only install the latest *-custom*deb here: sudo dpkg -i *-custom*deb 

我一直都在使用它,虽然我安装了一些DKMS包,但他们并没有抱怨。

您可以从kernel.org下载源代码

ppa中的主线内核未修补

根据定义,主线内核构建是由未经处理的未更改的主线内核源构成的,因此不会,也不应该包含任何Ubuntu补丁或驱动程序。

Ubuntu wiki MainlineBuilds

当你说主线我明白你想要未修改/官方内核。

所以,首先,你不会在deb存储库中找到它,因为它会被修改(通过debian或ubuntu)。

以下是如何执行此操作的链接: http : //blog.avirtualhome.com/compile-mainline-kernel-ubuntu/这是一个链接,显示如何编译3.6内核: http : //blog.avirtualhome.com / Linux内核-3-6-上的Ubuntu /

要为Ubuntu编译主线内核,您可以按照我在以下博客上发布的说明操作:

编译Ubuntu的主线Linux内核 :关于如何为Ubuntu(Precise)编译和安装自己的主线内核版本(v3.3)的详细的一步一步的文章。

Ubuntu上的Linux Kernel 3.6 :关于如何为Ubuntu编译和安装自己的mainline 3.6内核版本的详细的一步一步的文章。 这取决于上述文章所执行的步骤。

我通过运行解决了这个:

 sudo apt-get install linux-headers-3.5.0-17-generic 

当然,您必须使用virtualbox安装程序正在查找的版本替换内核版本。