收起左侧

解决fnos升级后持续占用系统盘空间的脚本

2
回复
33
查看
[ 复制链接 ]

1

主题

0

回帖

0

牛值

江湖小虾

FNOS 升级后释放系统盘空间

  • 由于我的 fnos 装在 16GB 傲腾 m10 上面,导致对系统盘空间比较敏感,初次安装后发现系统占用不到 7G,但两次升级后直逼 9GB,发现不太对劲,就去查文件占用。
  • 发现存在多个版本 trim 内核文件同时存在,故猜测 fnos 升级后并未清理旧内核导致磁盘空间被持续占用。写了清理旧内核的脚本运行后,占用从 9GB 掉回了 7GB,脚本分享出来供大家参考,各位可以酌情使用。
#!/bin/bash

set -e

echo "=========================================="
echo " 飞牛 NAS 旧内核安全清理脚本"
echo "=========================================="
echo ""

# ========== 自动检测当前内核 ==========
CUR=$(uname -r)
echo "当前运行内核: ${CUR}"
echo ""

# ========== 检测所有已安装的内核包 ==========
OLD_IMAGES=$(dpkg -l 'linux-image-*' 2>/dev/null | awk '/^[ih][ih]/ {print $2}' | grep -v "${CUR}" || true)

if [ -z "$OLD_IMAGES" ]; then
    echo "✅ 没有旧内核需要清理,退出。"
    exit 0
fi

echo "发现以下旧内核包:"
echo "${OLD_IMAGES}" | sed 's/^/  - /'
echo ""

# ========== 收集所有关联旧包 ==========
OLD_PKGS=""
for img in ${OLD_IMAGES}; do
    VER=$(echo "${img}" | sed 's/^linux-image-//')
    PKGS=$(dpkg -l "linux-*${VER}*" 2>/dev/null | awk '/^[ih][ih]/ {print $2}' || true)
    OLD_PKGS="${OLD_PKGS} ${PKGS}"
done
OLD_PKGS=$(echo "${OLD_PKGS}" | tr ' ' '\n' | sort -u | tr '\n' ' ')

echo "将删除以下所有关联包:"
for p in ${OLD_PKGS}; do
    echo "  - ${p}"
done
echo ""

# ========== 用户确认 ==========
read -r -p ">>> 确认删除以上包?[y/N] " CONFIRM
echo ""

case "${CONFIRM}" in
    [yY]|[yY][eE][sS])
        echo "开始清理..."
        ;;
    *)
        echo "已取消,退出。"
        exit 0
        ;;
esac

# ========== 1. 修复根目录符号链接 ==========
echo ""
echo ">>> [1/4] 修复根目录符号链接 → ${CUR}"
rm -f /vmlinuz /initrd.img
ln -s boot/vmlinuz-${CUR} /vmlinuz
ln -s boot/initrd.img-${CUR} /initrd.img
echo "    完成:"
ls -l /vmlinuz /initrd.img
echo ""

# ========== 2. 解除 hold 锁定 ==========
echo ">>> [2/4] 解除旧内核 hold 锁定"
for img in ${OLD_IMAGES}; do
    apt-mark unhold "${img}" 2>/dev/null && echo "    已解锁: ${img}" || echo "    ${img} 未锁定,跳过"
done
echo ""

# ========== 3. purge ==========
echo ">>> [3/4] 执行 apt purge ..."
# shellcheck disable=SC2086
apt purge -y ${OLD_PKGS}
echo ""

echo ">>> 清理孤立依赖"
apt autoremove --purge -y
echo ""

# ========== 4. 验证 ==========
echo ">>> [4/4] 验证清理结果"
echo ""
echo "--- /boot 目录 ---"
ls -lh /boot/
echo ""
echo "--- /usr/lib/modules ---"
ls /usr/lib/modules/
echo ""
echo "--- 根目录链接 ---"
ls -l /vmlinuz /initrd.img
echo ""

REMAIN=$(dpkg -l 'linux-image-*' 2>/dev/null | awk '/^[ih][ih]/ {print $2}' | grep -v "${CUR}" || true)
if [ -z "$REMAIN" ]; then
    echo "✅ 旧内核已全部清除"
else
    echo "⚠️  仍有残留: ${REMAIN}"
fi

echo ""
echo "--- 磁盘空间 ---"
df -h /
echo ""
echo "=========================================="
echo " 清理完毕,建议重启: sudo reboot"
echo "=========================================="
收藏
送赞
分享

1

主题

16

回帖

0

牛值

江湖小虾

你好,我是小白, 这个脚本怎么使用啊?

win+r打开运行,输入cmd,在cmd里面输入ssh 飞牛账号@飞牛ip,然后输入飞牛密码,进入CLI命令行界面后,输入nano 1.sh,然后把楼主的脚本粘贴进去,然后ctrl+x保存,然后sudo su root,输入飞牛密码,然后sh 1.sh完  详情 回复
1 小时前

20

主题

55

回帖

0

牛值

初出茅庐

飞牛百度网盘玩家fnOS1.0上线纪念勋章

牛牛OS 发表于 2026-7-24 23:16
你好,我是小白, 这个脚本怎么使用啊?

win+r打开运行,输入cmd,在cmd里面输入ssh 飞牛账号@飞牛ip,然后输入飞牛密码,进入CLI命令行界面后,输入nano 1.sh,然后把楼主的脚本粘贴进去,然后ctrl+x保存,然后sudo su root,输入飞牛密码,然后sh 1.sh完事
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则