重构脚本:重命名 root-setup 为 wsl-init 并修复关键问题
- 重命名 root-setup.sh 为 wsl-init.sh,明确 WSL 专属 - 添加 WSL 环境检查,防止在非 WSL 环境误执行 - 添加 sudoers 配置,修复 install.sh 无法使用 sudo 的问题 - 去掉 wsl-init 中的 -Syu,避免重复升级 - 备份已有 /etc/wsl.conf 再覆盖 - install.sh 克隆逻辑改为安全检测,避免误删已有仓库 - README 区分 WSL 首次启动和普通 Arch 两条路径
This commit is contained in:
Executable
+54
@@ -0,0 +1,54 @@
|
||||
#!/bin/bash
|
||||
set -euo pipefail
|
||||
|
||||
if [ "$(id -u)" -ne 0 ]; then
|
||||
echo "请以 root 身份运行此脚本"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if ! grep -qiE '(microsoft|wsl)' /proc/sys/kernel/osrelease 2>/dev/null; then
|
||||
echo "此脚本仅用于 Arch Linux on WSL 的首次初始化"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
USERNAME="${1:-}"
|
||||
if [ -z "$USERNAME" ]; then
|
||||
echo "用法: wsl-init.sh <用户名>"
|
||||
echo "示例: wsl-init.sh imbytecat"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "==> 安装 sudo..."
|
||||
pacman -S --needed --noconfirm sudo
|
||||
|
||||
echo "==> 配置 sudo 权限..."
|
||||
cat > /etc/sudoers.d/10-wheel << 'EOF'
|
||||
%wheel ALL=(ALL:ALL) ALL
|
||||
EOF
|
||||
chmod 440 /etc/sudoers.d/10-wheel
|
||||
|
||||
echo "==> 创建用户 $USERNAME..."
|
||||
if id "$USERNAME" &> /dev/null; then
|
||||
echo "用户 $USERNAME 已存在,跳过创建"
|
||||
else
|
||||
useradd -m -G wheel -s /bin/bash "$USERNAME"
|
||||
echo "请设置 $USERNAME 的密码:"
|
||||
passwd "$USERNAME" < /dev/tty
|
||||
fi
|
||||
|
||||
echo "==> 配置 WSL 默认用户..."
|
||||
if [ -f /etc/wsl.conf ]; then
|
||||
cp /etc/wsl.conf "/etc/wsl.conf.bak.$(date +%s)"
|
||||
fi
|
||||
cat > /etc/wsl.conf << EOF
|
||||
[user]
|
||||
default = $USERNAME
|
||||
EOF
|
||||
|
||||
echo ""
|
||||
echo "✓ WSL 初始化完成!"
|
||||
echo ""
|
||||
echo "下一步:"
|
||||
echo " 1. 在 PowerShell 中执行: wsl --terminate archlinux"
|
||||
echo " 2. 重新打开 Arch WSL(将以 $USERNAME 身份登录)"
|
||||
echo " 3. 运行: curl -fsSL https://git.furtherverse.com/imbytecat/archlinux-config/raw/branch/main/scripts/install.sh | bash"
|
||||
Reference in New Issue
Block a user