Kernel (简体中文)/Arch Build System (简体中文) - ArchWiki

Jump to content

# Kernel (简体中文)/Arch Build System (简体中文)

From ArchWiki
< Kernel (简体中文)
翻译状态：本文是 Kernel/Arch Build System 的翻译。上次翻译日期：2018-11-27。如果英文版本有所更改，则您可以帮助同步翻译。

参阅 Kernels (简体中文). 利用 Arch 编译系统，可以基于官方的 linux 包编译自定义内核。这种编译方法可以自动化整个过程，并且是基于一个已经经过详细测试过的内核包。你可以编辑 PKGBUILD 来使用一个自定义内核配置或者添加附加的补丁。

## 获取所需内容

因为要使用到 makepkg, 请先了解 makepkg 的使用方法和最佳实践建议。例如不要用 root/sudo 运行 makepkg.

首先建立一个编译目录 `build`：

     $ cd ~/
     $ mkdir build
     $ cd build/

安装 软件包 asp 和 base-devel.

首先需要一个原始内核作为自定义的基础，从 ABS 获取内核包文件，并放到编译目录：

    $ asp update linux
    $ asp checkout linux

然后从相应的来源获取其他需要的文件 (例如自定义配置文件、补丁等)。

## 修改 PKGBUILD

编辑 `PKGBUILD`，找到 `pkgbase` 修改为自定义软件包的名称:

     pkgbase=linux-custom

根据 PKGBUILD，还需要修改 `linux.install` 的内容，与 `pkgbase` 相匹配。

### 修改 prepare()

可以在这里打上需要的补丁，并修改内核配置文件。

或用 GUI 调整编译选项。从 PKGBUILD 的 prepare() 函数中选择一种方式，取消前面的注释：

    PKGBUILD

    ...
      # 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
    ...

### 生成新校验和

安装 软件包 pacman-contrib。

如果修改了 config 文件，需要生成新的校验和：

    $ updpkgsums

## 编译

现在可以用`makepkg`命令编译内核了，如果配置时选择了交互编译(例如 menuconfig)，编译时需要进行配置。

     $ makepkg -s

选项 `-s` 会在编译是下载需要的依赖关系，比如 xml 和 docs.

内核代码是 PGP 签名, makepkg 会尝试进行校验，详情请参考 Makepkg#Signature checking.

注意： 同时运行多个编译任务可以在多核系统上显著减少编译时间。

## 安装

在 makepkg 后可以查看 linux.install 文件，你会看到一些变量已经改变。现在，你只需要通过 pacman(或其他程序)正常安装软件包了。最好先安装内核头文件，因为有些驱动例如 nvidia 在更新时需要这些头文件。

    # pacman -U <kernel-headers_package>
    # pacman -U <kernel_package>

## 启动加载器

现在已经创建了定制的内核和目录，例如 `/boot/vmlinuz-linux-test`。要测试内核，请更新启动加载器配置，为定制内核添加新入口('default' 和 'fallback')。这样，就可以并行使用系统内核和定制内核。

Category:

- Kernel (简体中文)