全程无人值守完成ubuntu22.04到xubuntu 24.04.5的升级

说明

文心助手出品

安装脚本

复制代码
#!/bin/bash
set -euo pipefail

# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m'

# -------------------------- 请先修改以下配置 --------------------------
NEW_USERNAME="z87p"          # 新系统登录用户名
NEW_PASSWORD="z87p@2026"     # 新系统登录密码,请务必修改为强密码
# Xubuntu 24.04 ISO镜像路径,请提前下载到对应位置
XUBUNTU_ISO_PATH="/home/${SUDO_USER:-$USER}/xubuntu-24.04.5-desktop-amd64.iso"
# -------------------------------------------------------------------

echo -e "${RED}
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!                           【高危操作警告】                             !!
!!  本脚本将彻底清空当前机器硬盘上的所有数据(包括原有系统、所有文件)   !!
!!  操作完全不可逆,请确认无任何需要保留的数据后再继续                    !!
!!  安装全程无需显示器、无需U盘,全自动完成,过程中请勿断电              !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
${NC}"

read -p "确认要继续执行全自动远程安装吗?输入 YES 继续: " confirm
if [ "$confirm" != "YES" ]; then
    echo "已取消操作"
    exit 0
fi

# 检查是否为root权限
if [ "$EUID" -ne 0 ]; then
    echo -e "${RED}错误:请使用 sudo 运行本脚本${NC}"
    exit 1
fi

# 检查ISO文件是否存在
if [ ! -f "$XUBUNTU_ISO_PATH" ]; then
    echo -e "${RED}错误:未找到Xubuntu ISO镜像,请先下载到指定路径:$XUBUNTU_ISO_PATH${NC}"
    echo "国内镜像下载地址:https://mirrors.tuna.tsinghua.edu.cn/xubuntu-releases/24.04/release/xubuntu-24.04.1-desktop-amd64.iso"
    exit 1
fi

echo -e "${GREEN}[1/6] 安装依赖工具...${NC}"
apt update -y
apt install -y grub2-common openssl

echo -e "${GREEN}[2/6] 生成无人值守安装配置...${NC}"
# 生成密码哈希
NEW_PASS_HASH=$(openssl passwd -6 "$NEW_PASSWORD")
# 获取ISO所在分区的挂载点
ISO_DIR=$(dirname "$XUBUNTU_ISO_PATH")
ISO_MOUNT=$(df -P "$ISO_DIR" | awk 'NR==2 {print $6}')

# 写入cloud-init自动安装配置到ISO所在分区根目录(本地读取,无需HTTP服务)
cat > "${ISO_MOUNT}/user-data" << EOF
#cloud-config
autoinstall:
  version: 1
  locale: zh_CN.UTF-8
  keyboard:
    layout: cn
    variant: ""
  refresh-installer:
    update: false
  apt:
    primary:
      - arches: [amd64, i386]
        uri: file:///cdrom
    disable_components: []
  network:
    network:
      version: 2
      ethernets:
        id0:
          match:
            name: en*
          dhcp4: true
  storage:
    layout:
      name: lvm
      match:
        size: largest
  identity:
    hostname: xubuntu-2404
    username: ${NEW_USERNAME}
    password: ${NEW_PASS_HASH}
  ssh:
    install-server: true
    allow-pw: true
  packages:
    - xubuntu-desktop
    - openssh-server
    - xrdp
  user-data:
    disable_root: false
  late-commands:
    - curtin in-target -- systemctl set-default graphical.target
    - curtin in-target -- systemctl enable ssh xrdp
    - rm -f /target/user-data /target/meta-data
EOF
# 必须的空元数据文件
touch "${ISO_MOUNT}/meta-data"

echo -e "${GREEN}[3/6] 配置GRUB自动引导安装项...${NC}"
# 备份原有GRUB自定义配置
cp /etc/grub.d/40_custom /etc/grub.d/40_custom.bak
# 写入安装引导项
cat >> /etc/grub.d/40_custom << EOF

menuentry "Xubuntu 24.04 全自动远程安装" {
    set isofile="${XUBUNTU_ISO_PATH#$ISO_MOUNT}"
    search --no-floppy --set=root --file "\$isofile"
    loopback loop (\$root)\$isofile
    linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=\$isofile toram noeject noprompt autoinstall ds=nocloud quiet splash ---
    initrd (loop)/casper/initrd
}
EOF

echo -e "${GREEN}[4/6] 设置GRUB默认启动安装项,无需手动选择...${NC}"
# 备份原有grub默认配置
cp /etc/default/grub /etc/default/grub.bak
# 设置默认启动项为我们的安装引导项,超时1秒自动启动
sed -i 's/^GRUB_DEFAULT=.*/GRUB_DEFAULT="Xubuntu 24.04 全自动远程安装"/' /etc/default/grub
sed -i 's/^GRUB_TIMEOUT_STYLE=.*/GRUB_TIMEOUT_STYLE=menu/' /etc/default/grub
sed -i 's/^GRUB_TIMEOUT=.*/GRUB_TIMEOUT=1/' /etc/default/grub
sed -i 's/^GRUB_HIDDEN_TIMEOUT=/#GRUB_HIDDEN_TIMEOUT=/' /etc/default/grub

echo -e "${GREEN}[5/6] 更新GRUB引导配置...${NC}"
update-grub

echo -e "${GREEN}[6/6] 所有配置已完成!${NC}"
echo -e "
=====================================================================
                        安装前确认信息
  新系统用户名:${NEW_USERNAME}
  新系统密码:${NEW_PASSWORD}
  SSH服务:默认开启,安装完成后即可远程连接
  XRDP远程桌面:默认开启,可直接用Windows远程桌面连接
=====================================================================
"
echo -e "${YELLOW}重启后机器将自动开始格式化磁盘并安装Xubuntu 24.04,全程无需干预${NC}"
echo -e "${YELLOW}安装过程约15-30分钟,请勿断电,安装完成后机器会自动重启进入新系统${NC}"

read -p "是否现在重启开始安装?(y/n): " reboot_confirm
if [ "$reboot_confirm" == "y" ] || [ "$reboot_confirm" == "Y" ]; then
    echo -e "${GREEN}正在重启,开始全自动安装...${NC}"
    reboot
else
    echo -e "配置已保存,你可以稍后手动执行 sudo reboot 开始安装"
    exit 0
fi

sudo bash 远程无盘安装Xubuntu24.04一键脚本.sh
按照提示输入YES确认高危操作,最后选择y立即重启,之后就可以断开SSH等待自动安装完成
等待15-30分钟,机器安装完成后会自动重启,你直接用原来的IP地址通过SSH连接,使用你设置的用户名密码登录即可;也可以直接用Windows自带的「远程桌面连接」访问完整的Xubuntu图形桌面。

相关推荐
缘友一世18 小时前
银河护卫队在steam(linux Proton GE-Proton10-34)上启动无窗口问题修复
linux·ubuntu·steam·proton
刘胡子大叔19 小时前
repo 与 index:站点目录该怎么切
ubuntu·php
zhangrelay2 天前
用ROS2Lyrical实验报告册思路重做蓝桥云课ROS1实验并改进
linux·笔记·学习·ubuntu·机器人
小小龙学IT2 天前
ROS2 安装完全指南(Ubuntu 版):从零开始到跑通第一个节点本文
linux·运维·ubuntu
MicrosoftCloud2 天前
用户权限 04|/etc/sudoers 安全配置:从最小授权到「别把 ALL 随便给人」
运维·安全·ubuntu·sudo·sudoers
水饺编程3 天前
第1章:下载 Linux 0.12 内核
linux·c语言·汇编·ubuntu
水饺编程3 天前
第1章:开发环境搭建,在 Windows 中安装 Git
linux·c语言·汇编·git·ubuntu
сокол3 天前
【Python-基础-环境搭建】Ubuntu Python 开发环境搭建:编译、pipenv、pyenv、远程连接
开发语言·python·ubuntu
刘胡子大叔4 天前
1Panel 部署 ThinkPHP8 踩坑实录
linux·ubuntu
刘胡子大叔4 天前
grep -n 行号辨换行
ubuntu