使用精简alpine开机,然后重装debian13
镜像
个人网盘 alpine-virt-3.23.2-x86_64 密码:yiwan123
初始化
sh << 'EOF'
#!/bin/sh
# Alpine VNC Auto Install
P="yiwan123"
D="/dev/vda"
R="http://mirrors.aliyun.com/alpine/v3.23"
setup-interfaces -a -r
sleep 2
cat>/tmp/a<<E
KEYMAPOPTS="us us"
HOSTNAMEOPTS="-n alpine"
INTERFACESOPTS="auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp"
DNSOPTS="-d 223.5.5.5 8.8.8.8"
TIMEZONEOPTS="-z PRC"
PROXYOPTS="none"
APKREPOSOPTS="$R/main"
SSHDOPTS="-c openssh"
NTPOPTS="-c chrony"
USEROPTS="-a -k none"
DISKOPTS="-m sys -s 0 $D"
E
export ERASE_DISKS="$D"
echo|setup-alpine -f /tmp/a -e
mkdir -p /mnt
mount ${D}2 /mnt
mount ${D}1 /mnt/boot
echo "root:$P"|chroot /mnt chpasswd
sed -i 's/#PermitRootLogin.*/PermitRootLogin yes/' /mnt/etc/ssh/sshd_config
printf "$R/main\n$R/community\n">/mnt/etc/apk/repositories
mount --bind /dev /mnt/dev
mount --bind /proc /mnt/proc
mount --bind /sys /mnt/sys
chroot /mnt apk update
chroot /mnt apk add util-linux grub grub-bios curl vim bash parted e2fsprogs
umount /mnt/boot
swapoff -a 2>/dev/null
dd if=/dev/zero of=$D bs=1K seek=32 count=992 conv=notrunc
dd if=/dev/zero of=$D bs=512 seek=1 count=33 conv=notrunc
B=$(basename $D)
S=$(cat /sys/block/$B/size)
dd if=/dev/zero of=$D bs=512 seek=$((S-33)) count=33 conv=notrunc
sync
mount ${D}1 /mnt/boot
chroot /mnt grub-install --recheck $D
chroot /mnt grub-mkconfig -o /boot/grub/grub.cfg
chroot /mnt apk del syslinux 2>/dev/null
sync
umount /mnt/boot /mnt/dev /mnt/proc /mnt/sys /mnt 2>/dev/null
reboot
EOF重装debian13
wget -qO- https://raw.githubusercontent.com/10000ge10000/aliyun_monitor/main/install2.sh | sh#使用阿里云杭州代理 使用阿里云镜像
cat >/tmp/alpine-to-debian.sh <<'EOF'
#!/bin/sh
# 取消当前会话中的代理
unset http_proxy https_proxy HTTP_PROXY HTTPS_PROXY
unset all_proxy ALL_PROXY no_proxy NO_PROXY
if [ ! -f /bin/bash ]; then
echo "Installing dependencies..."
apk update
apk add bash iproute2 grep gawk ipcalc curl wget
fi
set -e
if [ "$(id -u)" != "0" ]; then
echo "Error: Must run as root."
exit 1
fi
clear
echo "=== Alpine to Debian 13 Auto Install Script ==="
echo "WARNING: This will erase the current Alpine system."
echo ""
read_with_default() {
var_name="$1"
prompt="$2"
default_val="$3"
input_val=""
printf "%s" "$prompt" >/dev/tty
IFS= read -r input_val </dev/tty || input_val=""
[ -z "$input_val" ] && input_val="$default_val"
eval "$var_name=\"\$input_val\""
}
if [ -z "$PORT" ]; then
read_with_default PORT "SSH Port [default 22]: " "22"
fi
if [ -z "$PASSWORD" ]; then
read_with_default PASSWORD "Root Password (NO special chars) [default yiwan123]: " "yiwan123"
fi
echo ""
echo "Config confirmed: Port $PORT / Password $PASSWORD"
echo "Starting auto install in 5 seconds..."
sleep 5
echo "[1/3] Extracting network config..."
MAIN_IFace=$(ip route show default | awk 'NR==1 {print $5}' | tr -d '[:space:]')
MAIN_IP=$(ip -4 addr show "$MAIN_IFace" | awk '/inet / {print $2}' | cut -d/ -f1 | head -n1 | tr -d '[:space:]')
MAIN_GATE=$(ip route show default | awk 'NR==1 {print $3}' | tr -d '[:space:]')
CIDR_NUM=$(ip -4 addr show "$MAIN_IFace" | awk '/inet / {print $2}' | cut -d/ -f2 | head -n1 | tr -d '[:space:]')
echo "IP: [$MAIN_IP]"
echo "Gateway: [$MAIN_GATE]"
echo "CIDR: [/$CIDR_NUM]"
if [ -z "$MAIN_IP" ] || [ -z "$MAIN_GATE" ] || [ -z "$CIDR_NUM" ]; then
echo "Error: Failed to extract valid network config!"
exit 1
fi
echo "[2/3] Downloading InstallNET.sh..."
wget --no-check-certificate -O InstallNET.sh \
"https://raw.githubusercontent.com/leitbogioro/Tools/master/Linux_reinstall/InstallNET.sh"
chmod +x InstallNET.sh
echo "[3/3] Starting Debian 13 installer..."
echo "The system will reboot automatically."
bash InstallNET.sh \
-debian 13 \
-port "$PORT" \
-pwd "$PASSWORD" \
-mirror "https://mirrors.aliyun.com/debian/" \
--ip-addr "$MAIN_IP" \
--ip-gate "$MAIN_GATE" \
--ip-mask "$CIDR_NUM" \
-swap 512 \
--cloudkernel 0 \
--bbr \
--motd
EOF
chmod +x /tmp/alpine-to-debian.sh
sh /tmp/alpine-to-debian.sh参考
直装精简debian
镜像
个人网盘 debian13.qcow2 密码:装系统时设置
评论