如何在云服务器中手动安装Ubuntu系统(非镜像方式)?

在云服务器中“手动安装 Ubuntu 系统(非镜像方式)”这一需求存在根本性技术矛盾,需要先明确关键前提:

云服务器(如阿里云、腾讯云、AWS、Azure、华为云等)无法像物理服务器那样通过 ISO 启动盘进行传统手动安装。
原因如下:

  • 云平台不提供 BIOS/UEFI 级别启动控制,无 PXE、光驱挂载或 ISO 引导能力;
  • 实例启动依赖云厂商预置的启动镜像(Image)虚拟化固件(如 UEFI 或 BIOS 模拟)
  • 所有系统均通过云平台 API 或控制台基于已有镜像(如 ubuntu-22.04-amd64-server)创建实例,底层是快照/模板部署,非交互式安装过程。

✅ 那么,“非镜像方式”实际可能指什么?常见合理场景及对应可行方案如下:

目标意图 是否可行 推荐方案 说明
① 完全从零构建最小系统(类似 debootstrap) ✅ 可行(需已有基础系统) debootstrap + 自定义配置 在已有 Linux 实例(如临时 CentOS 或最小 Ubuntu)中,用 debootstrap 构建全新 Ubuntu 根文件系统,再替换/重装系统盘
② 不使用云厂商提供的 Ubuntu 镜像(避免预装软件/X_X/云工具) ✅ 可行 使用官方 cloud-init 镜像 + 清理 下载 Ubuntu 官方 Cloud Images(如 jammy-server-cloudimg-amd64.img),上传为自定义镜像,或通过 qemu-img 转换后导入(部分云平台支持)
③ 实现高度定制化安装(指定内核、包、分区、服务) ✅ 可行 自定义 cloud-init 配置 + 用户数据脚本 创建实例时通过 user-data(cloud-init)自动执行 apt 安装、服务配置、用户创建等,实现“无人值守定制化部署”
④ 从裸金属/物理机迁移或离线环境部署 ⚠️ 仅限特定云平台(如 OpenStack 私有云、VMware Cloud on AWS) ISO 引导 + VNC 控制台(需平台支持) 公有云主流平台(阿里云/AWS等)不开放此能力;仅少数私有云或裸金属服务(如阿里云神龙裸金属、AWS EC2 Bare Metal)可能支持 iPXE/PXE,但需厂商白名单和特殊权限

✅ 推荐实践:用 debootstrap 在现有实例中“重建”Ubuntu(最接近“手动安装”)

📌 前提:你已有一台可 SSH 登录的 Linux 云服务器(哪怕是最小 CentOS 或旧 Ubuntu),且有 root 权限和足够磁盘空间(建议 ≥20GB 空闲空间)。

步骤示例(以 Ubuntu 24.04 LTS 为例):

# 1. 安装必要工具
sudo apt update && sudo apt install -y debootstrap qemu-utils

# 2. 创建新根目录(例如挂载到 /mnt/ubuntu-new)
sudo mkdir -p /mnt/ubuntu-new
sudo dd if=/dev/zero of=/tmp/ubuntu-root.img bs=1G count=20  # 创建20GB镜像文件
sudo mkfs.ext4 /tmp/ubuntu-root.img
sudo mount -o loop /tmp/ubuntu-root.img /mnt/ubuntu-new

# 3. 使用 debootstrap 安装最小 Ubuntu 系统
sudo debootstrap --arch amd64 noble /mnt/ubuntu-new https://archive.ubuntu.com/ubuntu/

# 4. 配置基础系统(chroot 环境)
sudo cp /etc/resolv.conf /mnt/ubuntu-new/etc/
sudo mount --bind /dev /mnt/ubuntu-new/dev
sudo mount --bind /proc /mnt/ubuntu-new/proc
sudo mount --bind /sys /mnt/ubuntu-new/sys

sudo chroot /mnt/ubuntu-new /bin/bash << 'EOF'
    # 设置时区、locale
    ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
    dpkg-reconfigure -f noninteractive tzdata
    locale-gen en_US.UTF-8
    update-locale LANG=en_US.UTF-8

    # 安装基础包(kernel、grub、cloud-init、ssh)
    apt update
    apt install -y linux-image-generic grub-pc cloud-init openssh-server sudo

    # 配置网络(cloud-init 会接管,但确保 netplan 存在)
    mkdir -p /etc/netplan
    cat > /etc/netplan/01-netcfg.yaml << 'NETPLAN'
network:
  version: 2
  ethernets:
    eth0:
      dhcp4: true
      dhcp6: false
NETPLAN

    # 创建普通用户(重要!避免仅 root)
    useradd -m -s /bin/bash ubuntu
    echo "ubuntu:ubuntu" | chpasswd
    usermod -aG sudo ubuntu

    # 清理缓存
    apt clean
    rm -rf /var/lib/apt/lists/*
EOF

sudo umount /mnt/ubuntu-new/{dev,proc,sys}
sudo umount /mnt/ubuntu-new

# 5. (可选)将生成的根文件系统打包为云平台可用镜像
# 例如:转换为 qcow2 并上传至阿里云自定义镜像(需按云平台文档操作)
qemu-img convert -f raw -O qcow2 /tmp/ubuntu-root.img ubuntu-24.04-custom.qcow2

⚠️ 注意:该方式生成的是静态根文件系统,要真正用于云服务器,仍需:

  • /tmp/ubuntu-root.img 或其转换格式(qcow2/vhd)上传为自定义镜像
  • 或通过云平台“系统盘更换”功能(如阿里云支持更换系统盘为自定义镜像);
  • 不能直接在运行中的实例上“覆盖安装”而不重启或导致系统崩溃

✅ 更实用推荐:用官方 Cloud Image + cloud-init 完全定制(生产首选)

  1. 下载官方 Ubuntu Cloud Image

    wget https://cloud-images.ubuntu.com/noble/current/noble-server-cloudimg-amd64.img
  2. 上传为自定义镜像(以阿里云为例):

    • 控制台 → 镜像服务 → 自定义镜像 → 上传镜像(支持 qcow2/raw/vhd)
    • 或使用 CLI 工具 aliyun / aws ec2 import-snapshot
  3. 创建实例时指定 user-data(cloud-init 脚本)

    # user-data.yaml
    #cloud-config
    package_update: true
    packages:
      - nginx
      - git
      - htop
    runcmd:
      - systemctl enable nginx
      - echo "Hello from custom Ubuntu!" > /var/www/html/index.html
    users:
      - name: deploy
        sudo: ALL=(ALL) NOPASSWD:ALL
        ssh_authorized_keys:
          - ssh-rsa AAAA... your-public-key

✅ 效果:实例启动后自动完成所有定制,无需登录操作,安全、可复现、符合云原生最佳实践


❌ 明确不可行的操作(避免踩坑):

  • ✖️ 在 AWS EC2 上挂载 Ubuntu Desktop ISO 并点击“Install Ubuntu” —— 无图形界面、无安装程序入口
  • ✖️ 在腾讯云 CVM 中进入“BIOS 设置”选择光驱启动 —— 控制台不提供此选项
  • ✖️ 用 dd if=ubuntu.iso of=/dev/sda —— ISO 是 hybrid ISO,非直接写盘可启动(且破坏云盘结构,实例立即宕机)。

✅ 总结:如何“手动控制”Ubuntu云服务器?

层级 方案 推荐度 说明
系统来源 使用 Ubuntu 官方 Cloud Image(非厂商魔改版) ⭐⭐⭐⭐⭐ 最干净、更新及时、cloud-init 原生支持
初始化定制 user-data(cloud-init)脚本 ⭐⭐⭐⭐⭐ 启动时自动配置用户、软件、服务、密钥
深度定制 debootstrap 构建根文件系统 + 制作自定义镜像 ⭐⭐⭐⭐ 适合合规/安全要求极高场景(如禁用所有云X_X)
内核/驱动定制 编译自定义内核 + 替换 initramfs + 上传镜像 ⭐⭐⭐ 需熟悉 kernel config 和云平台 initrd 要求
传统安装方式 不支持 ⚔️🚫 公有云架构决定其不可行

如你告知具体云平台(如“阿里云 ECS”或“AWS EC2”)和真实目标(例如:“我要禁用所有阿里云助手组件” 或 “我要在启动时自动编译内核”),我可为你提供一步到位的 CLI 操作命令 + 配置模板

是否需要我为你生成一份完整的 cloud-init user-data 示例(含创建用户、安装 Docker、配置防火墙、设置时区)?

未经允许不得转载:云计算导航 » 如何在云服务器中手动安装Ubuntu系统(非镜像方式)?