用qemu在终端直接启动Linux虚拟机系统
经常用UTM在MacOS创建虚拟机Linux系统做一些相关测试,最近才发现UTM本身其实就是个QEMU的简单包装。所以,我直接把UTM创建好后的虚拟机命令(用ps命令拿到的)让Codex给我简化了一番,我现在可以非常简单快速的用命令创建、启动虚拟机了。

创建硬盘
创建的硬盘用于安装系统。使用如下命令:
1 2 |
|
参数“alpine.qcow2”表示硬盘在当前文件系统的文件名,1G表示总大小1。
可以把这个文件看作是一个类似Linux上的稀疏文件。刚创建好后可能非常小,后期写入后才会慢慢变大。
用ls/du可以看到真实大小,file命令可以分析文件结构并显示最终大小。
1 2 3 4 |
|
安装系统
安装系统的过程可以简单分成以下两个过程:
- 就是运行一个指定需求的虚拟机、挂载上硬盘、挂载上光碟💿️(系统ISO镜像)
- 把光碟上的系统安装到硬盘
我使用了如下的命令行(由Codex从UTM命令行精简得来):
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
我简单描述一下上面各参数的含义:
- 使用ARM的Virt虚拟机方案,HyperVisor.framework框架,主机CPU;
- 1个CPU核心、512MB内存;
- 不进入图形系统(进入终端);
- 把串口和qemu管理命令/终端绑定到一起(默认是进入终端,按Ctrl-A + H可以查看qemu帮助);
- 挂载UEFI固件(就是上面那个edk2文件),路径可能与你自己安装的Homebrew相关,按需修改;
- 挂载指定路径的硬盘;
- 创建一张网卡;
- 创建一张网桥,并绑定前面的网卡和宿主机的桥接网卡(MacOS的Wi-Fi叫en0);
- 插入CD光碟,用于提供系统安装来源;
我使用的是Alpine的Virt版精简系统,ISO文件不足100MB,以下是系统安装过程:
-
运行上面的命令后,就会进入登录提示符,输入
root(无密码)进入到Live系统(运行在RAM内); -
运行
setup-alpine就可以安装系统了。 -
主机名随意写,默认就好;
-
网络接口唯一可能用的就是上面创建的
eth0; -
由于刚刚创建了网桥把虚拟机的eth0和宿主机的en0桥接起来,所以DHCP可以分配到和宿主同网段的IP地址;
1 2 3 4 5 6 7 8 9 10 11
Interface ----------- Available interfaces are: eth0. Enter '?' for help on bridges, bonding and vlans. Which one do you want to initialize? (or '?' or 'done') [eth0] Ip address for eth0? (or 'dhcp', 'none', '?') [dhcp] Do you want to do any manual network configuration? (y/n) [n] udhcpc: started, v1.37.0 udhcpc: broadcasting discover udhcpc: broadcasting select for 192.168.10.231, server 192.168.10.1 udhcpc: lease of 192.168.10.231 obtained from 192.168.10.1, lease time 43200 -
然后是设置root的密码;
-
时区设置。我在中国,先写Asia,再填Shanghai;
-
按需填写代理配置;
-
时间同步协议客户端(NTP)默认就好;
-
镜像源在国内填
14(即“mirrors.ustc.edu.cn”)比较快; -
无需设置独立用户;
-
使用OpenSSH作为SSH服务器;
-
是否允许root登录?填“yes”吧,可以允许密码登录,虚拟机无所谓安全了;
-
要使用哪块磁盘?直接填唯一的一块“vda”即可;
-
如何使用选中的磁盘?填“sys”即可。
-
擦除磁盘并继续?“y”。
-
然后就是安装过程,很快完成。
提示安装完成后,不要按提示执行“reboot”,而是“poweroff”。因为这时候光碟还在,重启后可能再次进入系统安装过程。
启动系统
“poweroff”后,去掉命令行的最后一个选项(及其参数)————光碟,即“-cdrom alpine-virt-3.23.4-aarch64.iso”。再次执行命令,这下进入的就是刚安装好的、最终的系统了。
以后也仅需重复执行上述命令即可开启系统。
退出系统
在终端里面按“Ctrl-c”只能取消运行命令,无法退出虚拟机。这时候需要先按qemu的前缀键“Ctrl-a”,再按“x”即可退出(按“h”可以看到全部的帮助)。
但是不建议这样“暴力”退出,建议执行“poweroff”安全关机,否则下次开机时会提示文件系统损坏(但是会修复成功)。
-
建议多分配一些,就我测试用的Alpine Linux精简版而言,100+分给了UEFI、200+分给了Swap,根文件系统只剩下了600+(但是对我来说够用了)。 ^