1. 为什么我推荐用虚拟机跑Linux
1.1 一台电脑切系统太痛苦,虚拟机才是刚需
先说个最现实的场景:你手头就一台Windows电脑,但想学Linux、跑Linux服务、甚至做嵌入式开发。以前人的做法是物理装双系统,开机时选择进Windows还是进Linux,听起来挺酷,实际用起来全是泪。双系统切换要重启,Linux分区一旦没规划好,Grub引导出问题,Windows也跟着进不去。我就见过不少人因为手滑搞坏了引导,最后重装整个电脑。
虚拟机解决的就是这个痛点。它本质上是物理机上跑的一个软件层,模拟出一台“虚拟电脑”,有自己的CPU、内存、硬盘、网卡。你在虚拟机里装Linux,跟在一台独立服务器上装Linux流程几乎一样,唯一的差别是性能会有一定损耗,但对学习、测试、跑开发环境来说完全够用。物理机一点都不用担心,虚拟机坏了删掉重建,十分钟又是一条好汉。
我这些年用VMware Workstation跑Linux的次数,大概能绕地球半圈了。从早期的版本一路用到现在的Workstation Pro,踩过的坑比吃过的盐还多。所以想写一篇真正实用的入门文章,把虚拟机软件里的核心功能讲透,再把Linux安装配置整个流程完整过一遍。这篇文章适合谁?零基础想学Linux的人、刚入职需要搭开发环境的工程师、还有那些不想折腾双系统但需要Linux环境干活的朋友。
1.2 VMware Workstation怎么选,装的时候注意什么
虚拟机软件市面上常见的有VMware Workstation、VirtualBox、Hyper-V。VirtualBox免费开源,功能也不差,但我个人觉得虚拟化性能、3D加速、快照体验上VMware略胜一筹。Hyper-V是Windows自带的,功能也不弱,但虚拟机管理界面风格比较“企业级”,小白看着容易懵。所以日常学习我推荐VMware Workstation Pro,顺便提一句,VMware Workstation最新几代版本里,如果名字里带了Pro,说明功能完整版,快照、克隆、网络配置这些高级功能都有。
安装VMware本身不复杂,官网下载对应Windows版本,一路Next就完了。但有两个容易忽略的细节:第一,安装路径不要带中文,否则某些虚拟网络驱动可能加载失败;第二,装完如果系统提示重启,一定要重启完再开虚拟机。这一步很关键,因为VMware的NAT和桥接网络服务是跟着系统服务启动的,重启前开虚拟机,网络适配器可能没准备好,虚拟机里装上系统后怎么配IP都不通。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 虚拟机的核心功能,搞懂这仨就够用
2.1 快照:虚拟机界的“后悔药”
快照是虚拟机最有魅力的功能之一,没有快照的虚拟机用起来跟物理机没区别,有了快照简直就是开了外挂。
快照的原理,简单说是把虚拟机在某个时刻的状态完整保存下来,包括磁盘内容、内存状态、虚拟硬件状态等。操作很简单:关机的状态下,右键点虚拟机,选快照-拍摄快照,给快照起个名字,比如“刚装完系统”“装完JDK”。之后无论你在系统里搞了什么破坏、删了哪个配置文件、中了什么毒,还原到快照的那一刻,虚拟机就恢复到当时的状态,整个过程一两分钟搞定。
我有个真实案例分享,有一次要调试一个网络相关的内核模块,把网络配置改坏了,网关不通,SSH也断开,宿主机和虚拟机之间的联系断了。如果是物理机,得挂载救援系统慢慢修;虚拟机里我直接还原到“配置网络之前”的快照,起来就是一个干净环境,重新配一遍网络就好了。
这里提醒几点:做快照前最好把虚拟机关机,保证磁盘状态一致。快照是挺好用但别滥用,比如别一下存二十几个快照,每个快照都会占用真实磁盘空间,时间长了虚拟磁盘文件膨胀得很厉害。我个人的习惯是只保留“系统刚装好”和“基础环境配置完毕”这两个关键节点,其他临时快照用完就删。
2.2 克隆:批量部署虚拟机最快的方式
克隆就是复制一份当前虚拟机,在克隆过程中可以选择链接克隆和完整克隆。
链接克隆速度快,秒级完成,但它依赖母机磁盘数据,实际保存的只是差异数据。好处省空间,坏处是母机一旦删了或损坏,链接克隆的虚拟机也玩完。适合做临时测试环境。完整克隆则是生成一个完全独立的副本,跟母机毫不相关,更稳定,适合给团队分发开发环境。我的习惯是:给同事或团队搭环境时,做完整克隆分发;自己临时测试内核或软件兼容性时,用链接克隆省点时间。
这里藏着一个大坑:克隆出来的虚拟机,网卡的MAC地址和原来是一模一样的,主机名、IP配置也完全相同。如果两台一模一样的机器同时开着,网络一定会冲突。解决办法是图像化操作:虚拟机设置-网络适配器-高级,点“生成”按钮重新生成MAC地址;进系统后修改主机名,重新配置IP。这个步骤很多人会忘,导致连不上网又找不到原因。
2.3 网络模式:NAT、桥接、仅主机怎么选
VMware里网络模式是新手最容易绕晕的部分,其实就是三个选项,理解了本质就很好选。
NAT模式:虚拟机通过宿主机共享一个IP去访问外网,虚拟机本身有一个内网地址,宿主机可以访问虚拟机,虚拟机也能访问外网,但局域网里的其他电脑访问不到这台虚拟机。翻译一下,就是给虚拟机“找了个保姆”,保姆带着虚拟机上网。好处是配好就能上网,几乎不用管网络设置,适合开发、学习、往虚拟机里随便折腾。
桥接模式:虚拟机直接“插”到你局域网里的交换机上,相当于局域网里多了台真实电脑,拥有和宿主机同一网段的IP地址。局域网里的其他人可以直接访问这台虚拟机,适合对外提供服务,比如团队内部测试环境、数据库连接等。缺点是如果公司网络有严格的安全策略、MAC地址绑定、DHCP限制,桥接模式可能会直接连不上网。
仅主机模式:虚拟机只能和宿主机互相通信,完全不能访问外网。应用场景通常是搭建隔离测试环境、安全分析,学习阶段用的很少。
我给的默认建议是:刚开始就用NAT,简单稳定省心;想跑服务被局域网访问就切桥接;等真正理解了网络原理再去折腾仅主机和自定义网络。
3. 安装Linux前的准备,比安装本身还重要
3.1 镜像从哪下载,怎么防止镜像文件损坏
装Linux系统绕不开镜像文件,也就是ISO。很多新手会直接百度搜Linux下载,结果下了一堆奇怪版本和捆绑软件。正路只有一个:去发行版官网。Ubuntu去ubuntu.com/download/server,Debian去debian.org,Rocky Linux去rockylinux.org,挑你需要的版本下载ISO。
国内下载官网镜像有时候速度一般,解决办法是使用高校的镜像站,最出名的就是清华TUNA、中科大USTC、阿里云镜像。我常用的清华源、阿里源,下载速度快,稳定性也有保证。
另外一个很多人忽略的细节:校验镜像完整性。官网都会提供对应ISO的SHA256校验值,Windows下用PowerShell执行Get-FileHash,Linux/macOS下用sha256sum命令算一下,对比结果一致才算下载成功。镜像不完整是安装过程中出现莫名其妙报错的常见原因,我之前有一次下载CentOS镜像时中途断网续传,结果装到一半提示某些软件包解压失败,整个安装流程报废,后来一查就是镜像校验值不对。所以这一步千万别省。
3.2 虚拟机的CPU、内存、硬盘怎么给
有人觉得给虚拟机配置越高越好,其实这是个误解。虚拟机分配4核8G还是8核16G,要考虑物理机器实际资源。如果物理机一共就16G内存,你给虚拟机分12G,开个虚拟机宿主机直接卡成动画片,体验极差。
我建议跑Ubuntu Server的话:内存2GB足够跑命令行,如果还要跑桌面图形环境,至少4GB。CPU给2-4核,普通学习完全够用。硬盘给40GB到60GB虚拟磁盘容量,这个数值是上限,实际用多少占多少,给大点反而好,免得到时候扩容麻烦。
磁盘类型选择上,新版本VMware支持NVMe和SATA等虚拟磁盘类型,Linux系统建议选NVMe,性能和兼容性更好,部分新版内核下NVMe虚拟磁盘甚至能提升启动速度。虚拟磁盘的存储方式,尽量选“拆分成多个文件”,文件碎片化反而在拷贝和备份时更灵活;单个大文件在跨越文件系统或在网络盘上拷贝时容易出问题。
3.3 内存、键盘布局这些小细节也别忽略
安装Linux时有一堆小设置,看起来不起眼,实际很搞心态。
第一是虚拟机固件类型:BIOS还是UEFI。现在新版本的Linux发行版都支持UEFI引导,我一般直接选UEFI。如果遇到老版本镜像或某些国产定制系统对BIOS兼容性更好,就退一步选BIOS。你可以在首次安装时报错时回头改这个设置。
第二是键盘布局。安装时有个键盘布局选项必须注意,默认英文键盘其实是对的,千万别手滑选了其他语言键盘,比如德语键盘。列一个例子:在美式键盘上按Y输入的是y,在德式键盘上按Y输入的是z,同时斜杠和双引号的位置也完全不同。你辛辛苦苦打命令,却发现符号位置对不上,每次都要像侦探一样找出特殊字符在哪,心情直接炸裂。
第三是时区和主机名。时区选Shanghai或Asia/Shanghai,主机名不要用默认的ubuntu,改成有意义的名字,比如web-server、dev-01,后面维护的时候一眼能认出哪台是做啥的。
4. 手把手教你新建虚拟机并安装Linux系统
4.1 新建虚拟机的关键选项,一次搞清楚
下面我们开始实际动手。假设你已经安装好VMware Workstation并下载好了Ubuntu Server的ISO镜像。
打开VMware,点击“创建新的虚拟机”。这里有两种模式:典型(推荐)和自定义(高级)。我的建议是选自定义,虽然多几步,但能控制的关键点更多,避免默认值生成不符合需求的机器。
自定义模式下第一步是选择虚拟机硬件兼容性,选“Workstation 17.x”,这样新特性都支持。客户机操作系统选Linux,版本选对应的64位版本,比如Ubuntu 64位。处理器配置按之前说的给,内存给2GB。网络类型这一步,我建议选NAT,等会儿装完系统就能上网,省去网络适配器的麻烦。然后是I/O控制器和磁盘类型,I/O控制器保持默认,磁盘类型选NVMe。磁盘创建选择“创建新虚拟磁盘”,容量输入40GB,选择“拆分成多个文件”。点完成之后,虚拟机就建好了。
还没完,回到虚拟机设置界面,在“CD/DVD (SATA)”里选择“使用ISO映像文件”,指向你下载的Linux ISO。这样一个虚拟机基础设施就算完工,点“开启此虚拟机”就能开始装系统了。
4.2 安装过程中的核心环节:分区与软件包选择
虚拟机开机后会从ISO引导,进入安装引导界面。这里以Ubuntu Server安装为例子,选择语言(推荐English)、键盘布局(选English US)、配置网络、设置代理(不用填)、Ubuntu镜像源地址(默认官方源也行,国内用户可以直接改成清华源或阿里云源,加快下载速度)。然后是磁盘分区设置。
分区界面新手最容易慌。推荐的做法是选择“使用整个磁盘”,并开启LVM(Logical Volume Manager,逻辑卷管理)。LVM能让你在系统运行过程中动态调整分区大小,不用推倒重来。举个例子,你最初分配根目录20GB,运行一段时间发现/var目录占满了,LVM下可以直接扩大,不需要重新分区,对虚拟机和生产环境都友好。
如果选择Manual手动分区,一定要至少创建两个分区:一个是EFI System Partition(UEFI引导必需),一个是根分区/。将swap分区可以单独分一个,也可以交给LVM,具体看你发行版安装器。记住:分区的时候,选择挂载点为/的数据分区最有价值,其他目录比如/home、/var可以视情况单独分区,但对一般使用没必要分太细。
软件包选择环节,我建议Server版不要安装图形桌面,保持纯净命令行。务必勾选OpenSSH server,安装完就能远程SSH登录,以后不用总在VMware窗口里复制粘贴命令,舒服多了。
4.3 我的真实安装经历:从引导到登录一整条链路
有一次我帮同事装虚拟机,他给了一台老旧的Dell机器,UEFI开启后虚拟机怎么也引导不起来,一查发现是该机器UEFI设置里的Secure Boot和VMware冲突。后来我新建虚拟机时把固件类型改成BIOS,引导成功。这个故事告诉我们,新虚拟机引导不了不一定是镜像问题,先检查虚拟机固件类型。
正常引导成功后,系统会自动执行安装。等待进度条走完,提示重启。重启后虚拟机提示移除安装介质,实际上VMware会自动切断ISO连接,直接回车进入登录界面,输入用户名和密码就登录到了Linux命令行。
我常用的做法是先执行sudo apt update和sudo apt upgrade把系统软件更新到最新,然后sudo apt install vim git curl ufw,装一批基础软件,省得后面缺工具时抓耳挠腮。此时虚拟机里的Linux已经能用了,但距离“好用的开发环境”还差几步。
5. 装完系统必做的三件事:网络、SSH和软件源
5.1 固定IP还是DHCP?生产环境别靠运气
虚拟机刚装完网络默认使用的是DHCP分配,也就是IP是动态的。你今天查出来的IP可能是192.168.100.10,明天重启变成192.168.100.23,一切随机。这对SSH连接、跑服务影响很大,因为你没办法稳定地在一个固定地址上连接虚拟机。
Ubuntu Server的网络配置用netplan管理。配置文件在/etc/netplan/目录下,后缀一般是.yaml。用sudo vim /etc/netplan/00-installer-config.yaml打开,我的配置长这样:
yaml复制network:
version: 2
renderer: networkd
ethernets:
ens33:
dhcp4: no
addresses:
- 192.168.100.110/24
routes:
- to: default
via: 192.168.100.2
nameservers:
addresses:
- 223.5.5.5
- 119.29.29.29
执行sudo netplan apply让配置生效。参数解释一下:网卡名ens33在虚拟机上很常见,具体名字用ip addr确认;网关是192.168.100.2,这是VMware NAT模式下默认的网关地址,用ip route查看;DNS换成国内公用DNS,比默认的更快更稳。
配置好后用ping baidu.com验证外网,ping 宿主机IP验证内网互通,都通了说明网络状态完美。
5.2 SSH配置:远程操作比虚拟机窗口香太多
虚拟机窗口里复制粘贴东西是真的别扭,有时从宿主机复制了一段命令,在VMware的Linux终端里粘贴半天没反应。装了OpenSSH server之后情况就不同了,直接在宿主机用终端连过去,复制粘贴顺滑,文件传输还能scp或rsync一键搞定。
配置SSH的步骤非常简单。安装阶段没勾选OpenSSH server的话,现在补装:
bash复制sudo apt update
sudo apt install openssh-server
启动并设置为开机自启:
bash复制sudo systemctl enable --now ssh
检查状态:
bash复制sudo systemctl status ssh
然后旧冲突问题来了。你可能会发现SSH连不上,第一步先排查防火墙。Ubuntu默认不装ufw防火墙或默认允许全部,但有些场景开了ufw却没放行22端口,会直接卡住连接。执行:
bash复制sudo ufw allow ssh
搞定。还有个细节,基于安全考虑,生产环境不要使用root直接SSH登录,建一个普通用户,加上sudo权限,再用ssh登录。如果要配置密钥登录,执行ssh-keygen生成密钥,用ssh-copy-id 用户名@虚拟机IP把公钥传过去,以后连密码都不用输。
5.3 换软件源:安装软件速度翻倍的关键
默认的apt软件源指向Ubuntu官方服务器,网络状况好的地区还行,弱网环境就让人抓狂,一个apt update能卡十分钟,装个nginx下载依赖包再次等待半天。
解决办法就是更换为国内镜像源。以清华源为例,先备份原配置:
bash复制sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
然后编辑sources.list。新版Ubuntu(22.04及更高版本)配置写法:
text复制deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu/ jammy-security main restricted universe multiverse
对应你用的系统版本,把jammy换成对应的版本代号,比如24.04是noble。替换完执行sudo apt update,速度和飞一样。
这里有一个很重要的点:很多人换源后遇到签名错误,提示NO_PUBKEY。其实就是源页面提供的公钥和当前系统不匹配,最简单的办法是执行错误提示中给出的sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys ...命令,或者用sudo apt install --reinstall ubuntu-keyring修复。国内网络环境也可以直接用阿里云源,mirrors.aliyun.com,稳定性一样好。
6. 安装配置中常见的坑:蓝屏、连接失败、网络不通
6.1 虚拟机启动直接就蓝屏,怎么排查
虚拟机安装Linux蓝屏是很多人刚入坑的第一道拦路虎。物理机能跑,虚拟机里一启动就蓝屏,这种情况99%和VMware的虚拟化能力被占用有关。
最常见的原因是宿主机Windows开启了Hyper-V或内核隔离功能。Hyper-V是微软自家的虚拟化平台,它和VMware同时抢占CPU虚拟化资源,结果VMware的虚拟机启动就蓝屏。解决方法是控制面板-程序-启用或关闭Windows功能,将Hyper-V关闭,同时关闭内核隔离里的“内存完整性”。重启后,VMware就能正常工作了。
还有一个容易忽略的:BIOS/UEFI设置中CPU虚拟化是否开启。Intel的CPU对应Intel VT-x,AMD对应AMD-V,进入BIOS设置里确认相关选项是Enable状态。很多电脑出厂默认关闭,虚拟化性能会大打折扣,甚至完全无法工作。
6.2 “无法连接到虚拟机。请确保您有权运行该程序”怎么解
这个报错是VMware用户的上古玄学,出现的原因多种多样。最常见的有两类:一是VMware服务没有启动,二是权限不足。
在Windows服务管理界面(运行services.msc)里找到与VMware相关的服务,比如VMware Authorization Service、VMware Host Agent等,确认其状态是正在运行,如果停了手动启动,并设置成自动。权限不足的话,退出虚拟机应用,右键VMware图标选择“以管理员身份运行”,基本能解决大部分连接问题。
如果这两个都排除了,我就直接重装VMware,但注意卸载时把VMware相关目录删除干净,比如C:\Program Files (x86)\VMware、C:\ProgramData\VMware,然后重新安装最新版本。这一点跟玄学一样,重装能解决70%的VMware疑难杂症。
6.3 装完Linux网卡不识别、IP获取不到
新装完Linux系统,执行ip addr发现只有一个lo,eth0或ens33根本看不到,这时候解决思路有两个层面。
第一是虚拟网络配置是不是被宿主机杀毒软件或安全策略禁用了。有些电脑装了国产安全软件,会切断虚拟网络适配器的通信,VMware网络适配器变得不可用。解决方法是关闭第三方防火墙自启,或在虚拟网络编辑器恢复默认设置。
第二是Linux系统内缺少网卡驱动。一般新内核的问题少,老内核配新网卡就麻烦。如果是这种情况,在虚拟机里勾选“连接网卡”之外,可以用sudo lspci | grep -i ethernet检查识别到的网卡型号,如果显示Unknown device,需要找发行版的内核模块。还有一个土办法:虚拟机硬件兼容性降低一个版本,比如从Workstation 17降到16,某些兼容性会导致虚拟网卡未被识别,这么一改反而能识别。
6.4 快照与克隆后网络冲突的修复技巧
前面提过克隆之后网络冲突,这里给一个完整修复步骤。
假设克隆出来的虚拟机跟母机IP一样都是192.168.100.110,直接把新虚拟机关机,在VMware界面虚拟机设置-网络适配器-高级,点“生成”重新生成MAC地址。开机进入Linux,修改主机名:
bash复制sudo hostnamectl set-hostname node-02
再改Netplan配置,换一个不冲突的IP,比如192.168.100.120。执行sudo netplan apply。这样两台机器就可以同时在线而互不干扰。
一个容易踩的坑是有的发行版网卡绑定和MAC地址关联,比如CentOS的/etc/sysconfig/network-scripts/ifcfg-ens33里写了HWADDR字段,如果克隆后该字段还指向旧MAC会报错,直接注释掉就好。Ubuntu的netplan不会这么粗暴,修改MAC后自动生效,更友好。
7. 最后再分享两个小习惯
文章写到这里,核心的虚拟机功能和Linux安装配置流程基本都覆盖了。最后聊两个自己总结的使用习惯。
第一个习惯,每逢大动必打快照。装Docker前打一个,改系统配置前打一个,升级内核前打一个。出了问题还原就行,基本能省下一天的时间。快照打得勤,系统随便折腾。
第二个习惯,把常用部署命令写成一个脚本。比如装系统后要更新源、装软件、配SSH、设固定IP,把这些操作写成setup.sh,放到虚拟机的/root目录下。后续新虚拟机直接用脚本跑一遍,三分钟一个标准开发环境。这个方法尤其适合帮同事搭环境,省时省力。
虚拟机跑Linux这件事,核心价值就是给了你无限试错的空间。真机你不敢乱动系统配置,虚拟机里点一下快照,再来一遍就行。我建议刚开始就大胆折腾,该删删、该装装、该崩崩,把每个问题都记录下来,技术就是这样一步步踩出来的。看到这篇文章的你如果也有被虚拟机坑过的经历,欢迎在评论区聊聊你踩得最痛的那个坑,我保证你们的故事比我的精彩。
