deepin编译Linux内核,为Deepin编译Linux 5.10内核的悲伤故事经历:从入门到卸载

简介

目的

解决Linux Deepin在更新内核到5.10后无法使用蓝牙的问题。

硬件:联想小新13 Pro 2020 AMD R5 4600U

OS: win 10 + deepin 20

原因

尝试过的方法:

为什么打算用编译来解决这个问题?

其它方法我都尝试过了均无法解决。。。目前还剩下的希望来自 Deepin 升级1005后没有蓝牙或没有声音问题解决方案 kirin2020:重新编译内核解决。。

其实也可以更换OS,windwos目前十分稳定,fedora的kde和gnome版本都体验过live版,gnome丑的一批。。kde安装过程出错了。。

为什么讨厌它却又整体搞它?

讨厌是因为deepin-wine5自己打自己脸,一边挂着GPL3一边不开源deepin-wine5;一边是被论坛的人怼了有点不开心,吃一顿忘掉这件事,不要和三观不一样的人持久战,你说的都对。商店也是让人头大。喜欢是因为在很早深度就开始做linux OS了,而现在统信入局了,持观望态度

3141b659850c879b46da5fdaef3563e9.png或许我还不是一个资深的Linux Developer,只能在论坛里看看有啥能回答的,哪里有bug需要提交反馈issue,能解决OS重大问题的暂时没发现。。解决一些平时使用中的问题并发帖交流。

现在的样子

?i=20210215104224827.png?,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzAzMTA5Mg==,size_16,color_FFFFFF,t_70

?i=20210215104244669.png?,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzAzMTA5Mg==,size_16,color_FFFFFF,t_70

3436f121debdd29886544c3576f30f63.png

下载内核

选择内核

下载内核及相关工具

出于简单好找考虑,选一个开山鼻祖大神的原装内核吧,不要直接点击后面的tarball下载。。慢的想死

a08865d81793be77f7d584d67ab1addf.png

所以必须要找镜像站点下载,cdn已经考虑过这个问题了。当然也可以直奔清华镜像的linux kernel去下载,速度飞起

wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.10.16.tar.xz

安装内核编译工具

sudo apt-get install git fakeroot build-essential ncurses-dev xz-utils libssl-dev bc flex libelf-dev bison

下图是我分别从清华镜像和官方网站下的内核,官方下的tarball虽然体积小一点,但是下载速度不行。。。强烈建议cdn下载或者清华镜像

8b0c7143666f2f12021af45cda8e9692.png

解压内核

说实话,看了不少帖子,很少有人说自己在哪个文件夹/路径下编译,那这里推测出这个在哪里并不重要。

tar xvzf linux-5.10.16.tar.gz

# 进入解压目录

cd linux-5.10.16

配置内核

内核的配置文件都在/boot目录下

042ac926c00748c949c3386ad4f67015.png

可以向下面一样复制一份当前内核的配置文件作为参考,

cp /boot/config-$(uname -r) .config

但是我当前5.10.5内核并不靠谱,蓝牙没了,5.7.7的内核支持硬件都正常,因此我选择拷贝5.7内核配置

也可以通过git来对比两个文件发生了那些变化,最后没看出来啥,还是直接复制5.7内核配置吧。。

c712458d374ac6804916378c47fe584a.png

# 直接复制5.7内核配置

cp /boot/config-5.7.7-amd64-desktop .config

# 开始配置

make menuconfig

5ba44127434f259ff96773b83b56587e.png

menuconfig的操作方法简单直观,在界面上部就已经列出了,改变选项值除了按“Y/N/M”三个键之外,还可用空格。可以键入问号(即Shift+问号键)来查看帮助,键入斜杠(/)来检索设置项。

值得注意的是,一些组件在编译时可以选择将其编译到内核中(显示为[]和<>)或是编译为模块(显示为[M]和)。编译到内核中就成为了内核的一部分;而编译成为模块则会被安装到指定的目录中,使用modprobe等工具加载。

https://www.jianshu.com/p/9fbdfd919fc0

1、启用蓝牙支持

内核中的蓝牙选项位于【Network Settings】 --> 【Bluetooth subsystem support】,先选中【Bluetooth subsystem support】,然后按”Y“,勾选它:

在Deepin系统中启用蓝牙支持,解决蓝牙指示灯亮但看不到有关的设置

2、启用特定类型蓝牙设备协议支持

【Bluetooth subsystem support】中有子菜单,按回车进入,如下所示:

在Deepin系统中启用蓝牙支持,解决蓝牙指示灯亮但看不到有关的设置

其中有几个选项,控制特定类型蓝牙设备协议的支持,一般全部启用

https://bbs.deepin.org/zh/post/208149

简单的说我把蓝牙下所有能变成yes都变了yes,说实话,如果5.7的配置能正常,我这里为什么还要修改呢。。。阿哲。。

4010a9157118341f1ad83edff299fb4e.png

7fe402d7d5ae6dc0b4b1ad7ad58dc897.png

abc4f5148ab8d6bcb9efe20f238a99d7.png

c4cc43c65ac6107899acf31db37246fa.png说实话没啥需要配置的,比较5.7的配置清单可以工作。。然后Save保存,然后exit退出

编译内核

-j后面的参数是线程数,我的cpu六核心12线程,6~12挑一个,比较系统也要占用cpu

# 多线程编译内核

make -j12

10:12-11:17

489922d9dc2d6e50828ab6f7271a8fb5.png

安装模块和内核

11:17 ~ 11:21

11:21 ~ 11:25

11:25 ~ 11:26

# 安装模块

sudo make modules_install

# 安装内核

sudo make install

# 安装头文件

sudo make headers_install

这个头文件不是很理解。。whatever,程序员嘛,那就安装头文件,虽然其他帖子里也没有这一步呗

Debian、Ubuntu、Linux Mint默认头文件在/usr/src下。

设置启动

# 启用新内核来作为引导

sudo update-initramfs -c -k 5.10.16

# 更新 grub

sudo update-grub

清理文件

编译清理

编译后,如果对内核源码进行了一些修改,或是同一个内核源码用来给多个设备进行编译,一般都需要进行一番清理。

sudo make clean

sudo make distclean

make clean只会清理编译输出的文件,如*.o(目标代码)、*.cmd(编译命令记录)等,而保留当前内核的配置文件,便于重新编译;而make distclean的清理则比较彻底,会将内核配置文件、内核配置程序的可执行文件等(如menuconfig的可执行文件)一并清除。

为Deepin Linux编译内核 - 爱拼安小匠](https://www.jianshu.com/p/9fbdfd919fc0)

清理之后可用空间大小增加了将近20G。。。

重启

重新启动之后应该会进入新内核的OS,但是我emm黑屏了。。裂开好吧

上次用apt安装5.4内核也是黑屏

卸载办法

# 列出当前已经安装的内核

dpkg --get-selections| grep linux-image

# 卸载内核,purge参数会把相关的header也清除

sudo apt remove --purge linux-image-5.10.5-amd64-desktop+

# 刷新引导菜单

sudo update-grub

59b8df46f4517afe7ebfce72a45aecad.png

然后我发现我删除了5.10.5的???我现在用的就是这个啊。。。我去。。我要删的应该是5.10.16啊。。裂开

可是dpkg出来的结果压根就没有5.10.16让我选???可是更新grub里面就有??这就离谱

6ccd251ba2b7997b0ef90d3abbd5d63b.png

参考

make clean:清理大多数编译生成的文件,但会保留config文件等

make install 后再执行,不然 make install 会因为找不到需要安装的东西而重新make

make mrproper: 清理所有编译生成的文件、 config及某些备份文件,几乎只在第一次执行内核编译前才用这条命令

make distclean: mrproper、 patches以及编辑器备份文件

标签:make,蓝牙,Deepin,编译,5.10,内核,Linux

来源: https://blog.csdn.net/weixin_43031092/article/details/113811841

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值