从源代码编译内核模块

您将需要 gcc ≥4.7 和内核头文件在正确的位置进行编译。

步骤 1:安装工具链

Ubuntu 和Debian

$ sudo apt-get install libelf-dev linux-headers-$(uname -r) build-essential pkg-config

Fedora

$ sudo dnf install elfutils-libelf-devel kernel-devel pkg-config @development-tools

红帽企业 Linux/CentOS

$ sudo yum install elfutils-libelf-devel kernel-devel pkgconfig "@Development Tools"

# pacman -S linux-headers base-devel pkg-config

OpenSUSE

$ sudo zypper install kernel-default-devel pkg-config

高山

# apk add build-base linux-hardened-dev  # or linux-vanilla-dev on a vanilla kernel

第 2 步:获取代码

$ git clone https://git.zx2c4.com/wireguard-linux-compat
$ git clone https://git.zx2c4.com/wireguard-tools

步骤3:编译并安装模块

$ make -C wireguard-linux-compat/src -j$(nproc)
$ sudo make -C wireguard-linux-compat/src install

make debug(如果您想要了解有关您所在地区发生的情况的更多信息,您可以运行dmesg(1)。)

步骤4:编译并安装wg(8)工具

$ make -C wireguard-tools/src -j$(nproc)
$ sudo make -C wireguard-tools/src install

*** 继续快速入门指南。***

内核要求

WireGuard 需要 Linux ≥3.10,具有以下配置选项,这些选项可能已经在您的内核中配置,特别是如果您通过分发包安装。

这些选项中有些(但不是全部)直接与menuconfig条目相对应。不直接对应的选项则与暗示它们的选项相对应。要启用上述选项,请在 中选择以下项目menuconfig

[*] Networking support (NET) -->
    Networking options -->
        [*] TCP/IP networking (INET)
        [*]   IP: Foo (IP protocols) over UDP (NET_FOU)
[*] Cryptographic API (CRYPTO) -->
    [*] Cryptographic algorithm manager (CRYPTO_MANAGER)

当作为树外模块构建时,很可能CONFIG_UNUSED_SYMBOLS也需要进行设置。

直接在树中构建

如果您不想将其构建为外部模块,而是希望将 WireGuard 构建为模块或内置模块,则可以直接在内核树中构建,您可以使用create-patch.sh创建补丁的脚本将 WireGuard 直接添加到树中,或者jury-rig.sh使用将 WireGuard 源目录链接到内核树的脚本:

$ cd /usr/src/linux
$ ~/wireguard-linux-compat/kernel-tree-scripts/create-patch.sh | patch -p1

    or

$ ~/wireguard-linux-compat/kernel-tree-scripts/jury-rig.sh /usr/src/linux

然后您将能够直接配置这些选项:

可以通过 轻松选择这些menuconfig,如果CONFIG_NETCONFIG_INET也被选中:

[*] Networking support -->
    Networking options -->
        [*] TCP/IP networking
        [*]   IP: WireGuard secure network tunnel
        [ ]     Debugging checks and verbose messages