Linux怎么使用virt-install命令行极速无人值守部署全新虚拟机

阿芳酱_5377

阿芳酱_5377

2026-11-09

419人浏览

原创

virt-install 默认不自动完成安装,因其仅启动虚拟机并挂载ISO,不接管安装程序内部逻辑;Ubuntu需autoinstall+cloud-init,CentOS/AlmaLinux需Kickstart,且须配合正确内核参数、安装源及系统初始化配置,否则易卡在GRUB或交互界面。

linux怎么使用virt-install命令行极速无人值守部署全新虚拟机

能,但“极速无人值守”不是加个 --noautoconsole 就完事——关键在安装源、引导参数和系统初始化三者的协同,否则卡在 grub 菜单或 installer 交互界面是常态。

为什么 virt-install 默认不自动完成安装?

因为绝大多数 ISO(如 Ubuntu Server、CentOS Stream)默认启动时进入交互式安装菜单,等待用户按 Enter 或选择语言/键盘等。virt-install 只负责启动虚拟机并挂载 ISO,不接管安装程序内部逻辑。

  • 常见错误现象:virt-install 命令返回成功,virsh list 显示虚拟机运行中,但 virsh console 进去后卡在 grub 菜单或 “Install Ubuntu” 提示符不动
  • 根本原因:缺少内核启动参数(kernel args),没告诉安装器跳过交互、走自动化流程
  • ISO 类型决定方案:ubuntu-22.04-live-server-amd64.iso 支持 autoinstall;CentOS-7-x86_64-DVD.iso 需要 ks=(Kickstart);AlmaLinux-9.4-x86_64-dvd.iso 同样依赖 inst.ks=

Ubuntu Server 22.04+ 的 autoinstall 方案

Live Server ISO 内置 cloud-init 支持,用 autoinstall 实现真无人值守——不用额外 HTTP 服务,把配置打包进 ISO 或通过 kernel 参数传入。

Linuxdo Application
Linuxdo Application

为 Linux.do 注册撰写高通过率、去 AI 化的中文小作文。进行自适应调查以了解申请人的真实背景,...

下载
  • 最简可行方式:用 --initrd-inject 注入 user-data 和 meta-data,再通过 --extra-args 指定启动参数
  • 必须加的参数:ds=nocloud-net;s=http://192.168.122.1/autoinstall/(若走 HTTP)或更稳妥的 ds=nocloud;s=/cdrom/nocloud/(从 ISO 根目录读取)
  • 示例命令片段:
    sudo virt-install \
      --name ubuntu-auto \
      --ram 2048 \
      --vcpus 2 \
      --disk size=30,bus=virtio \
      --cdrom /var/lib/libvirt/images/ubuntu-22.04-live-server-amd64.iso \
      --os-variant ubuntu22.04 \
      --network network=default \
      --graphics none \
      --console pty,target_type=serial \
      --initrd-inject ./user-data \
      --initrd-inject ./meta-data \
      --extra-args "console=tty1 ds=nocloud-net;s=http://192.168.122.1/autoinstall/ autoinstall"
  • 注意:user-data 必须是有效的 YAML,且首行必须为 #cloud-config;meta-data 至少含 instance-id: citrain-01,否则 cloud-init 不触发

CentOS/RHEL/AlmaLinux 的 Kickstart 方案

Kickstart 不依赖 cloud-init,但要求安装器能访问 ks 文件——可放本地 HTTP、NFS,或直接塞进 ISO(推荐),避免网络依赖。

  • 关键参数组合:--location 替代 --cdrom(用于网络源),或仍用 --cdrom + --extra-args "inst.ks=file:/run/install/repo/ks.cfg"(从 ISO 内读)
  • 若 ks.cfg 在 ISO 根目录,需先用 isoinfo -l -i CentOS-7-x86_64-DVD.iso | grep ks.cfg 确认路径;常见位置是 /isolinux/ 或 /
  • 必须关闭图形安装:--extra-args "inst.ks=file:/run/install/repo/ks.cfg inst.text inst.headless inst.sshd",否则仍可能弹出 GUI 安装器
  • 性能影响:使用 --location(如 http://mirror.almalinux.org/9.4/BaseOS/x86_64/os/)会拉取大量包,比挂 ISO 慢 3–5 分钟;但 ISO 方式需提前把 ks.cfg 打包进去,步骤略重

容易被忽略的三个硬性前提

即使参数全对,以下任一缺失都会导致“卡住”或“报错退出”,且错误信息极其隐晦(比如只显示 libvirtError: internal error: process exited while connecting to monitor)。

  • libvirtd 必须运行且当前用户在 libvirt 组里:sudo usermod -aG libvirt $(whoami),改完要重新登录(不是 newgrp)
  • 宿主机 BIOS 中 VT-x/AMD-V 必须启用,且内核没禁用 KVM:lsmod | grep kvm 应输出 kvm_intel 或 kvm_amd;若为空,检查 cat /proc/cpuinfo | grep vmx 是否有结果
  • --disk 路径所在文件系统要有足够空间,且 SELinux 不拦截(尤其在 CentOS/RHEL 上):sudo setsebool -P virt_use_nfs on 或临时 sudo setenforce 0 排查

相关专题

更多
磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

2023.06.21

4470

4

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

2023.06.29

3753

10

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

2023.06.30

3053

5

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

2023.07.05

7550

7

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

2023.07.06

7182

7

linux查看文件夹大小
linux查看文件夹大小

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.20

4093

8

linux查看ip命令
linux查看ip命令

本专题为大家提供linux查看ip命令相关文章内容,感兴趣的朋友可以免费下载体验试试。

2023.07.20

3565

4

linux查看cpu使用率
linux查看cpu使用率

在linux的系统维护中,可能需要经常查看cpu使用率,分析系统整体的运行情况。本专题为大家带来了linux查看cpu使用率的相关文章,感兴趣的朋友千万不要错过了。

2023.07.25

3819

6

linux查找文件命令
linux查找文件命令

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.31

297

3

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Python uv官方安装与入门文档
Python uv官方安装与入门文档

共0课时 | 0人学习

Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习