我正在尝试测试一个建议的内核Launchpad 问题 1556562:VIA C7-D 机器 skcipher_recvmsg_async 中的“内核 NULL 指针取消引用”. 建议的内核作为DEB 文件集合。
根据测试 Ubuntu 提出的内核的经验,我相信我需要 Linux 映像和附加功能(linux-image-4.2.0-35-generic_4.2.0-35.40+lp1556562_i386.deb
和linux-image-extra-4.2.0-35-generic_4.2.0-35.40+lp1556562_i386.deb
)。
所以我很清楚,为了避免重新安装基本系统(现在是两次),如何使用 DEB 安装内核和附加组件?是不是就像从命令行安装任何其他 DEB?
我认为update-grub2
需要将其放入 GRUB 菜单。手动安装内核时是否需要执行其他步骤?
或者,有没有更好的方法?
答案1
这是我用来做这件事的小脚本。事后看来,这个脚本可能有点过头了,但它为我提供了可重现结果的基础。
DEB 文件的顺序不太正确。第一次运行时,我收到有关未满足依赖项的错误。第二次运行清除了未满足依赖项的问题。(我没有复制确切的错误消息,但我应该提供更完整的答案)。
update-grub2
无需手动运行。显然,在一个或多个 DEB 中有一个触发器可以执行此操作。
#!/usr/bin/env bash
wget http://kernel.ubuntu.com/~kamal/lp1556562.0/linux-image-4.2.0-35-generic_4.2.0-35.40+lp1556562_i386.deb
wget http://kernel.ubuntu.com/~kamal/lp1556562.0/linux-image-extra-4.2.0-35-generic_4.2.0-35.40+lp1556562_i386.deb
wget http://kernel.ubuntu.com/~kamal/lp1556562.0/linux-headers-4.2.0-35-generic_4.2.0-35.40+lp1556562_i386.deb
wget http://kernel.ubuntu.com/~kamal/lp1556562.0/linux-tools-4.2.0-35-generic_4.2.0-35.40+lp1556562_i386.deb
dpkg -i linux-image-4.2.0-35-generic_4.2.0-35.40+lp1556562_i386.deb
dpkg -i linux-image-extra-4.2.0-35-generic_4.2.0-35.40+lp1556562_i386.deb
dpkg -i linux-headers-4.2.0-35-generic_4.2.0-35.40+lp1556562_i386.deb
dpkg -i linux-tools-4.2.0-35-generic_4.2.0-35.40+lp1556562_i386.deb
测试后删除内核有点有趣,因为你必须使用软件包名称,而不是 DEB 文件。你还必须遵守依赖关系。
首先,找到包名称:
$ dpkg --info linux-headers-4.2.0-35-generic_4.2.0-35.40+lp1556562_i386.deb | grep 'Package:'
Package: linux-headers-4.2.0-35-generic
然后,使用dpkg -r
:
$ dpkg --info linux-image-extra-4.2.0-35-generic_4.2.0-35.40+lp1556562_i386.deb | grep 'Package:'
Package: linux-image-extra-4.2.0-35-generic
$ sudo dpkg -r linux-image-extra-4.2.0-35-generic
(Reading database ... 126639 files and directories currently installed.)
Removing linux-image-extra-4.2.0-35-generic (4.2.0-35.40+lp1556562) ...
...
删除所有 DEB 后,执行清理,重新生成 grub 菜单并重新启动。
$ sudo apt-get autoclean
...
$ sudo apt-get autoremove
...
$ sudo update-grub2
...
$ sudo shutdown -r now