用命令行创建虚拟机,核心就三步:准备镜像、定义硬件参数、发起启动命令。 刚开始接触虚拟化时,你是不是也以为要装个VirtualBox,然后对着屏幕点半天?其实在Linux服务器上,命令行才是最高效的方式,下面直接演示完整过程,顺手踩平几个新手必撞的坑。
命令行创建虚拟机步骤详解:从零开始的基本流程
新手如何用命令行创建虚拟机?先选对虚拟化工具
命令行创建虚拟机的第一步不是敲命令,而是选工具,主流的虚拟化软件里,QEMU/KVM在Linux服务器上是行业共识的选择,VirtualBox则跨平台表现更好,如果你在Windows或macOS上,安装VirtualBox后可以用VBoxManage命令达到类似效果,本文以Linux Server为例,因为这里的命令行体验最完整,也是大多数线上项目的真实环境。
选好工具后,安装步骤绕不开,以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参数,如果你在远程服务器上跑,没有显示器,就需要加上
-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,
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,直接把镜像放在内存盘上,
-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





