archlinux编译内核

做完后整理一下,可能有疏漏

首先安装abs

$ sudo pacman -S abs

同步abs
$ sudo abs

报download failed 的时候试一下改网络配置里的dns,或者试一下

$ sudo abs core
看能不能下载,能的话就
$ sudo abs

把/var/abs/core/linux下的文件复制到编译目录,我的是~/linux-custom

$ sudo cp /var/abs/core/linux/* ~/linux-custom
$ cd ~/linux-custom

 

编辑PKGBUILD

#pkgbase=linux              
pkgbase=linux-custom
.
.
.
.
# load configuration
# Configure the kernel. Replace the line below with one of your choice.
 make menuconfig # CLI menu for configuration
 #make nconfig # new CLI menu for configuration
 #make xconfig # X-based configuration
 #make oldconfig # using old config from previous kernel version
 # ... or manually edit .config

这里我选的是 make menuconfig

做到这里时最好先搞好gpg 的配置和 /etc/makepkg.conf的配置

如果保存后直接makepkg -s的话会出现两个问题

1 . Verifying source file signatures with gpg 不通过直接退出makepkg

2 . 当在PKGBUILD使用make menuconfig这个字段时,就算解决问题1编译完成后,用pacman -U 来安装生成的3个pkg.tar.xz后缀的包会报错如:

    /lib/modules/4.7.0-1-ARCH/ 下 文件已存在

 

解决问题1

查看wiki上的makepkg页和gnupg页

https://wiki.archlinux.org/index.php/Makepkg#Signature_checking

https://wiki.archlinux.org/index.php/GnuPG#Reload_the_agent

添加gpg keyserver

~/.gnupg/gpg.conf
keyserver-options auto-key-retrieve
auto-key-locate hkp://pool.sks-keyservers.net

~/.gnupg/dirmngr.conf
keyserver hkp://pool.sks-keyservers.net

然后重启gpg-agent,我当时没细看wiki,是直接重启电脑的,下面的命令不行的话就重启试一下

$ gpg-connect-agent reloadagent /bye

再执行makepkg -s的话应该能通过signature verifying了

 

解决问题2

把PKGBUILD里面的

pkgrel=1 #1改成其它数字时,makepkg 可以通过编译,生成的包也可能成功安装,内核也能启动,但是uname -a的输出跟官方内核的输出是一样的,并没有custom的字样

正确的解决方法是进入menuconfig的界面并load了一个config文件后,把

General setup     ---> 里面的

(-ARCH) Local version - append to kernel release       里的-ARCH改成其它如-CUSTOM

 [ ] Automatically append version information to the version string           前面不要有星号

相当于修改了config文件里面的LOCALVERSION 和 LOCALVERSION_AUTO 的值

 

配置/etc/makepkg.conf

MAKEFLAGS="-j5"  #数字可以改成CPU核心数+1,例如我的CPU是E3 4核8线程, -j5 编译时CPU平均70%左右的占用,如果是 -j2的话就10%-20%左右

BUILDDIR=/tmp/makepkg # 改在tmpfs里面可以加快一点编译速度 

 

总结一下步骤,就是当PKGBUILD修改保存后

添加 gpg keyserver

~/.gnupg/gpg.conf
keyserver-options auto-key-retrieve
auto-key-locate hkp://pool.sks-keyservers.net

~/.gnupg/dirmngr.conf
keyserver hkp://pool.sks-keyservers.net

重启gpg-agent

$ gpg-connect-agent reloadagent /bye

配置/etc/makepkg.conf

MAKEFLAGS="-j5"  
BUILDDIR=/tmp/makepkg 

 开始编译

$ makepkg -s

进入到menuconfig的界面后,用正在运行的内核的参数

$ zcat /proc/config.gz > /tmp/makepkg/linux-custom/src/linux-4.7/config.running
$ zcat /proc/config.gz > ~/linux-custom/src/linux-4.7/config.running #如果makepkg没有配置使用/tmp作为BUILDDIR的话

然后 load 这个config.running文件

menuconfig 里面的

General setup     --->

   (-CUSTOM) Local version - append to kernel release     

   [ ] Automatically append version information to the version string

其它内核参数要修改的话可以参考一下金步国的Linux-4.4-x86_64 内核配置选项简介

配置好内核参数之后save 为 .config 再exit就会开始编译 ,最后生成了3个文件

linux-custom-docs-4.7-1-x86_64.pkg.tar.xz
linux-custom-headers-4.7-1-x86_64.pkg.tar.xz

linux-custom-4.7-1-x86_64.pkg.tar.xz

安装

pacman -U linux-custom-docs-4.7-1-x86_64.pkg.tar.xz linux-custom-headers-4.7-1-x86_64.pkg.tar.xz linux-custom-4.7-1-x86_64.pkg.tar.xz

grub要更新一下

$ sudo grub-mkconfig -o /boot/grub/grub.cfg

看有没有检测到新的内核

 

 

 

 

 

 

 

 

 

 

转载于:https://my.oschina.net/wzkiron/blog/734782

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值