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了,而現在統信入局了,持觀望態度
或許我還不是一個資深的Linux Developer,只能在論壇里看看有啥能回答的,哪里有bug需要提交反饋issue,能解決OS重大問題的暫時沒發現。。解決一些平時使用中的問題并發帖交流。
現在的樣子
下載內核
選擇內核
下載內核及相關工具
出于簡單好找考慮,選一個開山鼻祖大神的原裝內核吧,不要直接點擊后面的tarball下載。。慢的想死
所以必須要找鏡像站點下載,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下載或者清華鏡像
解壓內核
說實話,看了不少帖子,很少有人說自己在哪個文件夾/路徑下編譯,那這里推測出這個在哪里并不重要。
tar xvzf linux-5.10.16.tar.gz
# 進入解壓目錄
cd linux-5.10.16
配置內核
內核的配置文件都在/boot目錄下
可以向下面一樣復制一份當前內核的配置文件作為參考,
cp /boot/config-$(uname -r) .config
但是我當前5.10.5內核并不靠譜,藍牙沒了,5.7.7的內核支持硬件都正常,因此我選擇拷貝5.7內核配置
也可以通過git來對比兩個文件發生了那些變化,最后沒看出來啥,還是直接復制5.7內核配置吧。。
# 直接復制5.7內核配置
cp /boot/config-5.7.7-amd64-desktop .config
# 開始配置
make menuconfig
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的配置能正常,我這里為什么還要修改呢。。。阿哲。。
說實話沒啥需要配置的,比較5.7的配置清單可以工作。。然后Save保存,然后exit退出
編譯內核
-j后面的參數是線程數,我的cpu六核心12線程,6~12挑一個,比較系統也要占用cpu
# 多線程編譯內核
make -j12
10:12-11:17
安裝模塊和內核
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
然后我發現我刪除了5.10.5的???我現在用的就是這個啊。。。我去。。我要刪的應該是5.10.16啊。。裂開
可是dpkg出來的結果壓根就沒有5.10.16讓我選???可是更新grub里面就有??這就離譜
參考
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
總結
以上是生活随笔為你收集整理的deepin编译Linux内核,为Deepin编译Linux 5.10内核的悲伤故事经历:从入门到卸载的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 远程管理服务器的具体操作方法
- 下一篇: 提升应用程序弹性:保障工作负载正常运行