commandline创建虚拟机步骤详解,新手必看指南?

用命令行创建虚拟机,核心就三步:准备镜像、定义硬件参数、发起启动命令。 刚开始接触虚拟化时,你是不是也以为要装个VirtualBox,然后对着屏幕点半天?其实在Linux服务器上,命令行才是最高效的方式,下面直接演示完整过程,顺手踩平几个新手必撞的坑。

命令行创建虚拟机步骤详解:从零开始的基本流程

新手如何用命令行创建虚拟机?先选对虚拟化工具

命令行创建虚拟机的第一步不是敲命令,而是选工具,主流的虚拟化软件里,QEMU/KVM在Linux服务器上是行业共识的选择,VirtualBox则跨平台表现更好,如果你在Windows或macOS上,安装VirtualBox后可以用VBoxManage命令达到类似效果,本文以Linux Server为例,因为这里的命令行体验最完整,也是大多数线上项目的真实环境。

【保姆级教程】如何使用VirtualBox创建虚拟机并设置共享文件夹
加载中
【保姆级教程】如何使用VirtualBox创建虚拟机并设置共享文件夹

选好工具后,安装步骤绕不开,以Ubuntu 22.04 LTS为例,执行sudo apt install qemu-system-x86,如果还想管理图形化,也可以装virt-manager,但我们的目标是纯命令行,所以只需要qemu-system这个包,安装完成后,用qemu-system-x86_64 --version确认一下,能输出版本号就说明环境就绪。

命令行创建虚拟机教程:一条命令建好一台Linux机器

经典的QEMU创建流程分三步走:

  • 创建磁盘镜像:qemu-img create -f qcow2 disk.img 10G,这个命令生成一个10GB的动态占用文件,实际使用多少就占用多少空间,qcow2格式支持快照和压缩,比裸的raw格式更灵活。
  • 挂载安装镜像并启动:qemu-system-x86_64 -hda disk.img -cdrom ubuntu.iso -m 2048 -smp 2 -boot d,参数分别表示硬盘、光驱、内存大小(MB)、CPU核数、从光盘启动,第一次装系统,这个命令就够了。
  • 安装完成后正常启动:把-boot d换成-boot c,让系统从硬盘引导,如果你还需要USB直通,加-usb -device usb-host,hostbus=1,hostaddr=1,但新手阶段可以忽略。

新手最容易忽略的是-display none和-nographic参数,如果你在远程服务器上跑,没有显示器,就需要加上

commandline创建虚拟机步骤详解,新手必看指南?

-nographic,让输出走串口终端,否则卡在图形界面无法安装,另一个小技巧是加-name myvm给虚拟机起名,方便管理。

常用参数逐个看,每个都别瞎填

参数 作用 常见值
-m 内存大小,单位MB -m 2048 表示2GB
-smp CPU核心数 -smp 2 表示2核
-boot 启动顺序 d光驱,c硬盘,n网络
-netdev 网络设备定义 user用户模式,bridge桥接
-vnc 开启VNC远程桌面 -vnc :1 监听5901端口
-daemonize 后台运行虚拟机 不加则前台运行,CTRL+C退出

-m和-smp是性能和资源上限,不要给得超过物理机的一半,否则会拖垮宿主机。

新手如何用命令行创建虚拟机并解决网络纠结

为什么命令总报错?多半是权限和路径问题

新手写命令时总遇到Permission denied,那是没加sudo,但加了sudo后,QEMU默认会拒绝远程访问,需要-vnc :1参数来开放端口,另一个坑是路径带中文或空格,导致镜像文件找不到,建议统一用英文路径,比如/home/user/vms,我曾经临时放在~/桌面,结果镜像一直读不出来,最后排查了半天才发现是路径里的中文引的祸。

还有一次,磁盘空间明明有50GB,却一直报“No space left on device”,检查后才知道,qcow2镜像动态增长,加上快照累积,实际占用远超想象,用du -h查看真实大小,清理掉旧快照就行。

网络配置:让虚拟机和你处于同一局域网

默认的QEMU用户模式网络是NAT,虚拟机可以上网,但外部设备访问不到它,想要达成桥接效果,需要创建tap设备并修改网桥,这一步比较复杂,但如果你用的是VirtualBox,

commandline创建虚拟机步骤详解,新手必看指南?

VBoxManage modifyvm可以一键设置桥接,命令比如VBoxManage modifyvm "myvm" --bridgeadapter1 eth0 --hostonlyadapter1 vboxnet0,网络问题占了虚拟机故障的大半,多查日志准没错,端口转发是另一个常用招,-netdev user,id=net0,hostfwd=tcp::2222-:22就能把宿主机的2222端口映射到虚拟机的22端口,SSH登录很方便。

命令行创建虚拟机需要什么配置?性能与成本参考

命令行创建虚拟机与图形界面对比:哪种方式更适合你

在性能参数上,命令行和图形界面没有本质差别,差别在于使用场景,图形界面适合需要频繁交互的桌面用户,命令行适合批量创建和自动化部署,比如我手头有10台机器要换配置,写个循环脚本用命令行跑,效率远高于点十次鼠标,这一优势在运维圈永不过时。

维度 命令行方式 图形界面方式
学习成本 前期高,后劲足 上手快,上限低
批量处理 脚本一跑搞定 逐台点击,累
远程管理 天然支持SSH 依赖VNC或RDP
资源消耗 极小 额外占用图形栈

资源分配方面,行业共识认为,普通开发测试机用2048MB内存和2核CPU足够,如果你的目标是运行Windows 11,那需要UEFI启动和TPM支持,QEMU命令会复杂不少,但依然可行,参考官方文档,你可以加上-machine q35,accel=kvm来启用硬件加速。

命令行创建虚拟机价格:本地免费,云端按量计费

本地命令行虚拟机免费,只耗电费,如果需要云上的虚拟机,据工信部数据,公有云厂商的按量计费实例普遍在每小时几角钱到几块钱之间,具体价格随地域和规格浮动,无论你是在北京机房还是上海节点,命令行方式完全一致。“命令行创建虚拟机价格”的高低,其实取决于你选的是物理机还是云主机,对于短期测试,本地免费方案完全够用。

存储方面,qcow2格式胜在灵活,raw格式胜在性能,如果追求极致I/O,直接把镜像放在内存盘上,

commandline创建虚拟机步骤详解,新手必看指南?

-drive file=/dev/shm/disk.img,速度能提升一个量级,但重启后数据就没了,具体取舍,看你的业务对延迟过敏程度。

命令行创建虚拟机的自动化脚本思路

用shell脚本批量创建虚拟机?其实很顺手

维护虚拟机是高频操作,写一个简单的脚本能省半小时,比如把以下内容存为createvm.sh:

#!/bin/bash
qemu-img create -f qcow2 /data/vms/$1.img 10G
qemu-system-x86_64 -hda /data/vms/$1.img -cdrom /iso/ubuntu.iso -m 2048 -smp 2 -boot d

然后执行sh createvm.sh web01就能创建一台名为web01的虚拟机,这就是命令行方式最有魅力的地方:可复制、可脚本化、可版本控制,作为新手,你会慢慢体会到这种“敲字即建机”的爽感。

结合云平台,你还可以把同样的命令集成到CI/CD流水线里,实现自动化测试环境的秒级拉起,这在图形界面时代是想都不敢想的事。

命令行创建虚拟机没有想象中困难,关键在于动手写一次命令并理解参数含义。 从创建镜像到启动系统,全程不超过十条命令,你只需要按部就班,遇到错误时,先查dmesg和/var/log/libvirt/qemu日志,八成问题都在那里。

命令行创建虚拟机步骤详解:常见问题解答

  • Q: 命令行创建虚拟机需要图形界面吗?
    A: 不需要,使用-nographic或-display none即可让虚拟机在无头模式下运行,配合SSH登录管理。

  • Q: 如何给命令行虚拟机分配更多CPU和内存?
    A: 在启动命令中修改-m和-smp参数,例如-m 4096 -smp 4表示4GB内存4核CPU,运行时也可以通过virsh动态调整,但QEMU原生命令不支持热插拔。

  • Q: 命令行创建虚拟机镜像能转成云镜像吗?
    A: 可以,使用qemu-img convert把qcow2格式转为raw,然后用virt-sparsify瘦身,最后上传到云厂商,但注意,转换过程中需保证磁盘分区类型兼容,否则会启动失败。

首发原创文章,作者:王坚‌,如若转载,请注明出处:https://idctop.com/article/632027.html

赞 (0)
旧域名换新域名如何平稳过渡不丢权重,有哪些注意事项?
上一篇 2026年9月8日 00:12
虚拟机pq分区怎么创建?分区后数据迁移安全吗?
下一篇 2026年9月8日 00:19

相关推荐

  • 虚拟机安装iTunes总失败咋办,win10系统怎么配置?

    虚拟机安装iTunes总失败,绝大多数情况下不是安装包坏了,而是虚拟机的硬件虚拟化开关没打开、内存分配太少、显卡加速没启用这三项配置没做对,Windows宿主机和Mac宿主机需要操心的点不一样,下面按场景拆解,虚拟机安装iTunes总失败?先排查这三项环境细节在虚拟机里装iTunes,和装普通软件完全是两码事……

    2026年9月5日
    100
  • PrestaShop如何配置SMTP?PrestaShop SMTP配置教程

    在PrestaShop中配置SMTP服务器的核心路径是进入“高级参数”->“邮件”设置页,填入服务商提供的Host、端口、加密方式及账号密码,并点击“发送测试邮件”验证连通性,邮件发送稳定与否,直接决定了电商网站的转化率与客户信任度,PrestaShop自带的PHP mail函数在服务器负载高时极易被拦截……

    2026年6月23日
    1800
  • HTML5开发难度大吗?HTML5开发需要掌握哪些技术

    HTML5开发难度取决于项目复杂度,对于基础展示类页面门槛极低,但涉及复杂交互、游戏引擎或高性能动画时,难度会呈指数级上升,需具备扎实的JavaScript功底和浏览器底层知识,很多人误以为HTML5只是HTML4的升级版,写几个标签就能搞定,HTML5更像是一个庞大的生态系统,它整合了Canvas、WebGL……

    服务器宽带 2026年6月9日
    3700
  • Docker Compose到底用来做什么?Docker Compose常用命令有哪些

    Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具,它通过 YAML 文件配置服务,让你能用一条命令启动、停止和管理整个应用栈,彻底告别手动逐个启动容器的繁琐操作,在微服务架构日益普及的今天,单体应用逐渐被拆分为多个独立的服务模块,这种架构虽然提升了灵活性和可维护性,但也带来……

    2026年6月23日
    2000
  • 互联网区块链分布式身份服务如何落地?分布式身份认证系统方案

    互联网区块链分布式身份服务通过去中心化架构,解决了传统中心化身份认证的数据泄露风险与隐私保护难题,为企业提供了更安全、合规且低成本的数字身份管理方案,在数字化转型的深水区,身份认证早已不再是简单的“账号密码”验证,过去,用户的数据散落在各大互联网平台的服务器中,一旦遭遇黑客攻击或内部人员违规操作,个人隐私便如裸……

    服务器宽带 2026年6月1日
    4800
  • 企业带宽选多大?企业宽带一般多少兆合适

    企业带宽选多大?直接参考这个核心公式:(峰值在线人数 × 平均单用户带宽需求 × 并发率)÷ 冗余系数 = 企业实际所需带宽,这是经过大量企业级网络部署验证的黄金法则,能够覆盖90%以上的业务场景,避免“带宽闲置浪费”或“高峰期网络拥堵”的两个极端,许多企业在采购网络服务时,往往陷入“凭感觉估算”的误区,要么为……

    2026年3月5日
    22600
  • 老域名跳转新域名会流失权重吗,怎样操作才安全?

    老域名跳转新域名,权重会流失,但通过301永久跳转配合百度搜索资源平台的改版流程,可以把损失降到最低,不少人以为换个域名就像搬个家,旧地址自动把客人引到新家,现实没那么简单,百度需要时间确认你确确实实搬走了,而且搬得彻不彻底,这个过程里排名波动、流量起伏都算正常,不过话说回来,跳转操作本身有章可循,做对了能保住……

    2026年8月31日
    900
  • 为什么网站需要https证书?https证书申请流程是什么

    HTTPS证书是网站安全的“数字身份证”,它能通过SSL/TLS协议加密数据传输,防止信息被窃取,并显著提升百度等搜索引擎的排名权重,为什么你的网站必须拥有HTTPS证书在2026年的互联网环境中,没有HTTPS保护的网站就像是在大庭广众之下裸奔,浏览器地址栏那个醒目的“不安全”红色警告,足以让绝大多数用户转身……

    2026年6月3日
    3600
  • HP服务器内存报错怎么办?服务器内存报错代码及解决方法

    HP服务器内存报错通常由物理故障、配置不匹配或驱动冲突引起,核心解决思路是先通过iLO日志定位具体槽位,再执行内存重插拔与固件升级,若无效则需更换内存条,当服务器面板上的内存故障指示灯亮起,或者操作系统突然蓝屏、重启,运维人员的第一反应往往是焦虑,这种焦虑源于对数据丢失的恐惧和对业务中断的担忧,HP服务器(现H……

    2026年6月10日
    8810
  • HTML向服务器发送数据的方法是什么?前端Ajax请求后台接口

    HTML向服务器发送数据的核心方案是使用Fetch API或XMLHttpRequest对象,配合POST或GET请求方法,将JSON格式的数据异步传输至后端接口,从而实现页面与服务器的高效交互,在现代Web开发中,前端与后端的通信是构建动态网页的基石,过去,我们依赖表单提交和页面刷新来传递数据,这种方式不仅体……

    2026年6月7日
    2910

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注