ArmKVM分区调整与 Tailscale 部署文档

一、操作概述

本文档详细描述buildroot系统中调整tf卡分区、挂载指定目录,并部署 Tailscale 守护进程的完整流程

二、分区调整操作

2.1 分区创建说明

通过fdisk工具对/dev/mmcblk1(tf卡)进行分区调整:

  • mmcblk1p3:大小 1GB,用于挂载/opt目录,存放tailscale使用
  • mmcblk1p4:用于挂载/userdata/jetkvm/images目录,存放iso使用

操作步骤:

使用ssh工具连接ArmKVM,账号root,密码root

fdisk /dev/mmcblk1 <<EOF 
d
3
p
n
p
3
180224
+1g
p
n
p 
2277376

p
w
EOF
# 查看分区情况
fdisk -l

# 重启系统使分区表生效
reboot

2.2 分区格式化

将新建的 p3、p4 分区格式化为 ext4 文件系统:
请分开执行以下两条命令

mkfs.ext4 /dev/mmcblk1p3
mkfs.ext4 /dev/mmcblk1p4

2.3 配置开机自动挂载

修改/etc/fstab文件,添加分区挂载规则,确保系统启动时自动挂载:

cp /etc/fstab /etc/fstab.bak
cat <<EOF >> /etc/fstab
/dev/mmcblk1p3  /opt  ext4  defaults  0  2
/dev/mmcblk1p4  /userdata/jetkvm/images  ext4  defaults  0  2
EOF

mount -a
cat /etc/fstab

2.4 注释原有挂载项

编辑/etc/init.d/S11partition文件,注释掉/userdata/jetkvm/images的原有挂载逻辑(避免冲突):

nano /etc/init.d/S11partition

# 找到对应挂载行,在行首添加 #注释
# 示例:# mount /dev/mmcblk1p3/userdata/jetkvm/images

三、Tailscale 部署

3.1 准备文件

  1. 将 Tailscale 程序包上传至/opt目录(需提前下载对应架构的 Tailscale 二进制包,也可以使用下面命令直接下载)
curl -L -o tailscale http://files.runyf.cn/headscale/arm/tailscale
curl -L -o tailscaled http://files.runyf.cn/headscale/arm/tailscaled
  1. 赋予程序执行权限:
chmod u+x /opt/tailscale*
  1. 上传 SSL 证书(pem 格式)至/opt目录,并创建证书目录:(如您自建tailscale控制器才需要此操作)
mkdir -p /etc/ssl/certs
# 可将pem证书复制到/etc/ssl/certs目录(若需要)
# cp /opt/*.pem /etc/ssl/certs/

3.2 创建 Tailscale 守护进程启动脚本

创建/etc/init.d/S99tailscaled脚本,实现 Tailscale 服务的开机自启、启停管理(使用默认数据目录和端口):

cat <<EOF >> /etc/init.d/S99tailscaled

#!/bin/sh

### BEGIN INIT INFO
# Provides:          tailscaled
# Required-Start:    $network $local_fs
# Required-Stop:     $network $local_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start/stop tailscaled daemon
### END INIT INFO

DAEMON="/opt/tailscaled"
DAEMON_NAME="tailscaled"
PIDFILE="/var/run/$DAEMON_NAME.pid"

# 构建完整的启动命令(使用默认数据目录和端口)
DAEMON_OPTS=""

start() {
    printf "Starting %s: " "$DAEMON_NAME"
    start-stop-daemon -S -q -b -m -p "$PIDFILE" -x "$DAEMON" -- $DAEMON_OPTS
    status=$?
    if [ "$status" -eq 0 ]; then
        echo "OK"
    else
        echo "FAIL"
    fi
    return "$status"
}

stop() {
    printf "Stopping %s: " "$DAEMON_NAME"
    start-stop-daemon -K -q -p "$PIDFILE"
    status=$?
    if [ "$status" -eq 0 ]; then
        echo "OK"
    else
        echo "FAIL"
    fi
    return "$status"
}

case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    restart|reload)
        stop
        start
        ;;
    *)
        echo "Usage: $0 {start|stop|restart}"
        exit 1
        ;;
esac

exit $?

EOF
  • 赋予脚本执行权限:
chmod +x /etc/init.d/S99tailscaled
ln -s /opt/tailscale /usr/bin/tailscale

3.3 启动 Tailscale 服务

# 启动服务
/etc/init.d/S99tailscaled start

# 重启服务(如需)
/etc/init.d/S99tailscaled restart

# 停止服务(如需)
/etc/init.d/S99tailscaled stop

四、验证操作

  1. 验证分区挂载:

    df -h # 查看/opt和/userdata/jetkvm/images是否正常挂载
  2. 验证 Tailscale 进程:

    ps -ef | grep tailscaled # 查看进程是否运行
  3. 验证开机自启:重启系统后,再次执行上述命令,确认分区挂载和 Tailscale 进程正常。
  4. 执行tailscale up登录到控制器
最后修改:2026 年 01 月 11 日
如果觉得我的文章对你有用,请随意赞赏