docs(run-on-alpine.md): update for Alpine's kernel changes (#712)

Co-authored-by: Markson Hon <markson@localhost.local>
This commit is contained in:
Markson Hon 2024-12-09 20:28:35 +08:00 committed by GitHub
parent 1404f1a03b
commit 8bfbce7fb4
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 101 additions and 34 deletions

View File

@ -1,37 +1,28 @@
# Run on Alpine Linux
**Note**: Alpine Linux 3.18 or newer verison has full eBPF support out-of-box, older version of Alpine Linux need to build kernel by yourself.
**Note:**
1. Alpine Linux 3.18 or newer verison has full eBPF support out-of-box, older version of Alpine Linux need to build kernel by yourself.
2. From version 3.20, Alpine Linux has officially disabled some features dae needed beacuse of Alpine Linux's cross CPU architectures compatibility, so only `linux-virt` can be used to run dae defaultly. For `linux-lts` or `linux-edge`, you should build the kernel by yourself.
3. This tutorial is for Alpine Linux 3.20 and newer.
## Enable Community Repo
Edit apk's repositories config:
Run `setup-apkrepos` command, then you'll get a menu list like this:
```sh
vi /etc/apk/repositories
```
(f) Find and use fastest mirror
(s) Show mirrorlist
(r) Use random mirror
(e) Edit /etc/apk/repositories with text editor
(c) Community repo enable
(skip) Skip setting up apk repositories
```
Then enable community repo, for example:
Then input `c` to enable community repo.
```ini
https://dl-cdn.alpinelinux.org/alpine/edge/main
https://dl-cdn.alpinelinux.org/alpine/edge/community
```
## Enable CGroups
## Enable CGroup2
Edit OpenRC's config file:
```sh
vi /etc/rc.conf
```
Then edit `rc_cgroup_mode`, defaultly it would be `#rc_cgroup_mode="hybrid"`, we should switch to `unified` to make sure CGroup2 in default.
```ini
rc_cgroup_mode="unified"
```
Then enable `cgroups` service:
Enable `cgroups` service:
```sh
rc-update add cgroups boot
@ -48,17 +39,17 @@ vi /etc/init.d/sysfs
Add the following to the `mount_misc` section:
```sh
# Setup Kernel Support for bpf file system
if [ -d /sys/fs/bpf ] && ! mountinfo -q /sys/fs/bpf; then
if grep -qs bpf /proc/filesystems; then
ebegin "Mounting eBPF filesystem"
mount -n -t bpf -o ${sysfs_opts} bpffs /sys/fs/bpf
eend $?
# Setup Kernel Support for bpf file system
if [ -d /sys/fs/bpf ] && ! mountinfo -q /sys/fs/bpf; then
if grep -qs bpf /proc/filesystems; then
ebegin "Mounting eBPF filesystem"
mount -n -t bpf -o ${sysfs_opts} bpffs /sys/fs/bpf
eend $?
fi
fi
fi
```
Be careful that the format of the script `/etc/init.d/sysfs` must be fine, or `sysfs` service will be failed.
Be careful that the format of the script `/etc/init.d/sysfs` must be correct, or `sysfs` service will be failed.
## Install dae
@ -70,13 +61,13 @@ This installer offered an OpenRC service script of dae, after installation, you
chmod 640 /usr/local/etc/dae/config.dae
```
If your config file is OK, then you can start dae service:
If your config file is ready to work, then you can start dae service:
```sh
rc-service dae start
```
## Start at boot
## Start dae at boot
Use `rc-update` to enable dae service:

View File

@ -0,0 +1,76 @@
# 在 Alpine Linux 上运行
**注意:**
1. Alpine Linux 3.18 或更新版本已完全支持开箱即用的 eBPF旧版本的 Alpine Linux 需要自己构建内核。
2. 从 3.20 版开始,由于 Alpine Linux 的跨 CPU 架构兼容性问题,官方禁用了 dae 所需的一些功能,因此默认情况下只能使用 `linux-virt` 运行 dae。对于 `linux-lts``linux-edge`,你应该自己构建内核。
3. 本教程适用于 Alpine Linux 3.20 及更新版本。
## 启用 Community Repo
运行 `setup-apkrepos` 命令,然后你会看到这样的菜单列表:
```
(f) Find and use fastest mirror
(s) Show mirrorlist
(r) Use random mirror
(e) Edit /etc/apk/repositories with text editor
(c) Community repo enable
(skip) Skip setting up apk repositories
```
然后输入 ``c` 启用社区仓库。
## 启用 CGgroups
启用 `cgroups` 服务:
```sh
rc-update add cgroups boot
```
## 挂载 bpf
编辑 `/etc/init.d/sysfs`
```sh
vi /etc/init.d/sysfs
```
`mount_misc` 部分添加以下内容:
```sh
# Setup Kernel Support for bpf file system
if [ -d /sys/fs/bpf ] && ! mountinfo -q /sys/fs/bpf; then
if grep -qs bpf /proc/filesystems; then
ebegin "Mounting eBPF filesystem"
mount -n -t bpf -o ${sysfs_opts} bpffs /sys/fs/bpf
eend $?
fi
fi
```
请注意,脚本 `/etc/init.d/sysfs` 的格式必须正确,否则 `/etc/init.d/sysfs` 将被删除。
## 安装 dae
安装程序: <https://github.com/daeuniverse/dae-installer/>
此安装程序提供了一个 dae 的 OpenRC 服务脚本,安装后,您需要在 `/usr/local/etc/dae/config.dae` 中添加一个配置文件,然后将其权限设置为 600 或 640
```sh
chmod 640 /usr/local/etc/dae/config.dae
```
如果配置文件已准备就绪,那就可以启动 dae 服务了:
```sh
rc-service dae start
```
## 随系统启动
使用 `rc-update` 启用 dae 服务:
```sh
rc-update add dae
```