前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用ABS编译ArchLinux内核

使用ABS编译ArchLinux内核

作者头像
雨落凋殇
发布2021-02-23 11:03:44
2K0
发布2021-02-23 11:03:44
举报
文章被收录于专栏:雨落凋殇

前言

Arch Linux 2020年12月更新Kernel到5.10版本以后,我的AR5B22网卡的蓝牙无法正常工作,于是我尝试降级内核到5.9以后蓝牙又可以正常工作了,于是可以判定问题是存在于内核上。为了解决这个问题我重新编译了内核。这篇文章将记录如何使用ABS(Arch Build System)编译ArchLinux的内核(Kernel)。蓝牙问题将在记录在下一篇文章。Arch的wiki已经非常完善了,大多数问题都可以在archwiki中找到相关的解决方案,遇到问题建议多查wiki。

## 过程

  • 创建用于存放编译文件的专用文件夹。
代码语言:javascript
复制
mkdir ~/kernelbuild && cd ~/kernelbuild
  • 安装编译内核需要的包
代码语言:javascript
复制
sudo pacman -S  asp base-devel
  • 获取内核代码(一般获取到的是ArchLinux最新的内核代码)。
代码语言:javascript
复制
asp update linux
asp export linux
  • 此时当前文件夹下会出现一个linxu文件夹结构如下,我们需要关注的是PKGBUILD文件,可以根据我们的需求修改的部分。
代码语言:javascript
复制
$ ls -l ./linux   
总用量 236
-rw-r--r-- 1 rainerosion rainerosion 232952  2月  5 03:32 config
-rw-r--r-- 1 rainerosion rainerosion   6181  2月  5 03:32 PKGBUILD
  • 由于默认是单线程编译,编译的时间过于漫长,我们需要修改PKGBUID文件。

找到如下的代码

代码语言:javascript
复制
build() {
  cd $_srcname
  make all
  make htmldocs
}

修改为

代码语言:javascript
复制
build() {
  cd $_srcname
  make all -j$(nproc)
  make htmldocs
}
  • 若需要对内核打补丁,可在prepare()函数中执行补丁程序和修改配置文件信息。若需要获取当前内核的config文件可以执行下面的命令获取。
代码语言:javascript
复制
zcat /proc/config.gz > .config
#当然也可以在Kernel源代码所在路径下执行
make oldconfig
  • 如果需要使用图形化配置请切换到源代码所在路径,然后使用下列的命令。完成后记得复制.config文件替换和PKGBUILD同级目录下的config文件。
代码语言:javascript
复制
make nconfig
  • 若修改过config文件,需要重新生成校验和。
代码语言:javascript
复制
# 要使用updpkgsums工具需要先安装一下包
sudo pacman -S pacman-contrib
updpkgsums
  • 一切配置完成以后执行下列命令开始编译内核。
代码语言:javascript
复制
# 加上参数i,在内核编译完成后会执行安装操作
# 当然你也可以使用pacman -U <package>来安装
# 如果你不想要清除构建过程中的文件,包括源代码,请去除c参数
makepkg -sci

参核考文档

https://wiki.archlinux.org/index.php/Kernel/Arch_Build_System

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021年02月06日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 参核考文档
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档