EAimTY的博客
一个没什么技术的开源爱好者,一个苦逼的学生狗。

2018年2月2日注:其实升级Debian内核的最好方法是直接把apt源切换到unstable后dist-upgrade,也就是换用Debian sid,省去了很多麻烦。

最近用了几天win10,结果被恶心到了。首先,Win10竟然自带手机助手!巨硬你这是要抢国内毒瘤们的饭碗啊!还有,Win10的默认隐私设置是想把用户卖了吧。另外Win10有个称号叫做“硬盘毁灭者”,我认为叫这个名字取得完全没错,它已经快把我的硬盘搞坏了。再加上最近听说的一些微软强迫用户升级Win10的事件,只有一句话可以表达我的看法:

Fuck You Microsoft!!!

什么也不说了,赶快格盘把win删掉吧。

重新回到熟悉的Debian+Gnome环境,突发奇想准备升级一下内核。于是折腾了半天,把内核升级到了4.6.2。
或许是Debian8的默认内核太古老(3.x)(CentOS6表示不服),也可能是心理作用,感觉4.x运行起来的确比3.x快了不少,于是手贱直接把旧内核remove掉了,而且还加了purge。。。(+_+)
但没过多长时间,就发现了问题:VirtualBox无法启动虚拟机。。。查了一下log,发现原来是VirtualBox Kernel Modules出了问题:VirtualBox Kernel Modules需要通过DKMS使用linux-headers编译,而我已经把旧版本的linux-image和linux-headers都purge掉了。然而通过apt,无论用testing源还是sid(unstable)源都无法直接安装对应新版本(也就是我装的4.6.2版)的linux-headers包。
蛋碎一地。。Σ(゚Д゚)。
通过Google到的方法,也就是使用make headers_install,DKMS仍然报错。。。
没办法了,重装Debian。。。

(顺便普及一个制作Debian安装U盘的方法,只需两条命令即可:
$ sudo cat debian.iso > /dev/sdb
$ sudo sync
把这里的debian.iso换成安装镜像的名称,保证/dev/sdb是你的U盘)

新系统装好后没多长时间,手贱又发作了,又把Kernel升级到了4.6.2(我真是没救了)。不过这次吸取了上次的教训,折腾了半天,找到一种直接把Kernel源码编译成linux-image和linux-headers的DEB包的方法,使DKMS可以正常编译VirtualBox Kernel Modules。这回能好好玩了

首先安装所需的工具:

$ sudo apt-get install git fakeroot build-essential ncurses-dev xz-utils libssl-dev bc kernel-package

需要下载1GB左右的文件,耐心等吧。安装期间会弹出一些设置界面,直接回车即可。
下一步当然是去kernel.org下载内核源码,推荐下载最新的stable版,下载.tar.xz格式的包即可。
当然,国内连接kernel.org的速度不敢恭维,可以到中科大的源下载。
然后解压:

$ xz -d ***.tar.xz
$ tar -xvf ***.tar

通过上面的xz命令可以把.tar.xz解包成常见的.tar,然后按常规方式解压即可。
之后cd进解压后的目录,转到root用户
可以按照你的需求改动内核文件。
清理一下之前编译的文件:

# make mrproper

生成.config文件:

# make menuconfig

设置好选项,最后选save。

清理,这是个好习惯:

# make-kpkg clean

下面开始编译deb:

# fakeroot make-kpkg --initrd --revision=4.6.2-EAimTY kernel_image kernel_headers -j2

在这句命令中:--initrd表示创建initrd,这个参数是必需的;--revision=4.6.2-EAimTY中的4.6.2-EAimTY是创建的deb包的版本号,可以自行修改;kernel_image表示编译linux-image;kernel_headers表示编译linux-headers,如果不需要可以去掉;-j2表示使用两个CPU核心,具体视CPU参数而定,举个栗子:假如你用的CPU是最新的Intel Xeon E5 2699 v4,也就是说有22个核心,就把这个参数换成-j22(不过貌似这个参数最多支持到-j9。。。),想知道你的CPU有几个核心,可以使用$ cat /proc/cpuinfo | grep "cpu cores"查看。

经过漫长的等待(我双核i5,4G内存的笔记本花了一个多小时),linux-image和linux-header的deb包就会出现在上层目录中了。用dpkg -i安装。
重启后,通过GRUB高级选项中就会出现新的内核,进入后,如果有强迫症,可以卸装掉旧的内核:

$ sudo dpkg -l "linux-image*"
$ sudo dpkg -l "linux-headers*"

两条命令会分别列出已安装的linux-image和linux-headers,用apt-get remove --purge可以删掉。

通过以上方法安装linux-image和linux-headers后,VirtualBox仍然可以完美运行,只需要用DKMS重新生成一下VirtualBox Kernel Modules即可。

已有 3 条评论
    nrechn
    2016-07-15 08:32

    内核配置怎么可以默认的就行?#(滑稽),难怪泥会编译一个多小时呢。而且默认的居然能用起来??反正我默认的话根本启动不了系统。

    表示从来都是自己修改内核配置,刚开始要搞4个小时配置内核,熟悉之后直接沿用原先的config,重新选的时候凭记忆大概10来分钟能几乎把所有选项过一遍。然后双核i5十分钟编译好内核#(滑稽)

    另外实际上没必要这么麻烦啦,只要把linux-headers包打开来看看 header files 丢哪儿了,然后把编译内核的临时目录link过去即可,打包什么的多麻烦 #(滑稽)

      EAimTY
      2016-07-15 23:35

      的确能用,但还是问题多多?不过现在觉得实在是不想再折腾系统环境了(手动滑稽),而且觉得Debian有些太重,所以换Arch了?另外,我的i5可是睾贵的第一代i5-560M,流畅运行扫雷?

    四斋破乙poi
    四斋破乙poi
    2017-03-18 15:20

    我只是从基佬云音乐过来逛逛的

添加新评论