66 lines
2.0 KiB
Bash
66 lines
2.0 KiB
Bash
#!/bin/bash
|
||
|
||
# 函数:检查网络连接
|
||
# 尝试ping Google DNS,-c 1 只发送一个包,-W 2 超时2秒
|
||
has_internet() {
|
||
ping -c 1 -W 2 8.8.8.8 > /dev/null 2>&1
|
||
return $? # 返回ping的退出状态码 (0表示成功)
|
||
}
|
||
|
||
echo "正在检查网络连接..."
|
||
|
||
NETWORK_STATUS="offline" # 初始状态为离线
|
||
|
||
if has_internet; then
|
||
NETWORK_STATUS="online"
|
||
echo "网络已连接。"
|
||
else
|
||
echo "未检测到网络连接,将尝试等待最多30秒..."
|
||
for i in $(seq 1 30); do
|
||
echo "等待网络... ($i/30秒)"
|
||
if has_internet; then
|
||
NETWORK_STATUS="online"
|
||
echo "网络已连接。"
|
||
break # 成功连接,跳出循环
|
||
fi
|
||
sleep 1
|
||
done
|
||
|
||
if [ "$NETWORK_STATUS" == "offline" ]; then
|
||
echo "在30秒内未能检测到网络连接。"
|
||
fi
|
||
fi
|
||
|
||
# 如果网络在线,尝试更新 Calamares
|
||
if [ "$NETWORK_STATUS" == "online" ]; then
|
||
echo "网络在线,尝试更新 Calamares..."
|
||
# 检查 pacman 是否存在,虽然在 Arch 系系统中通常都有
|
||
if command -v pacman &> /dev/null; then
|
||
if sudo pacman -Sy --noconfirm tms-calamares-config; then
|
||
echo "Calamares 更新成功或已是最新版本。"
|
||
else
|
||
echo "Calamares 更新失败。可能会使用旧版本启动。"
|
||
fi
|
||
else
|
||
echo "未找到 pacman 包管理器,无法更新 Calamares。"
|
||
fi
|
||
else
|
||
echo "网络离线,跳过 Calamares 更新。"
|
||
fi
|
||
|
||
# 启动 Calamares
|
||
echo "启动 Calamares 安装程序..."
|
||
|
||
# 原始的 Calamares 启动逻辑
|
||
if [ $(which pkexec) ]; then
|
||
# 如果 pkexec 存在,通过 sudo 运行 calamares
|
||
# 注意:这里沿用您原脚本的写法,即检查 pkexec 但仍使用 sudo。
|
||
# 如果您希望通过 pkexec 提升权限,应改为 pkexec "/usr/bin/calamares" "$@" "-d"
|
||
sudo "/usr/bin/calamares" "$@" "-d"
|
||
else
|
||
# 否则,直接运行 calamares
|
||
/usr/bin/calamares "$@" "-d"
|
||
fi
|
||
|
||
echo "Calamares 启动命令已执行。"
|