多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

VMware 虚拟机安装 Linux 入门教程:快照回滚与实验环境

VMware 虚拟机安装 Linux 入门教程:快照回滚与实验环境 要说这几年被问得最多的问题“Linux怎么入门”绝对排前三。而我给所有人的第一个动作都是同一个先在现有电脑上装一个 VMware 虚拟机再在虚拟机里装一套 Linux。这套 VMware 与 Linux 安装教程看着平平无奇但它解决的是一个非常现实的问题——让你在不弄坏主力电脑的前提下随时把系统搞崩、随时重装、随时回滚。入门 Linux 最大的心理障碍不是命令难记而是怕搞坏东西虚拟机恰好把这层顾虑彻底抹掉了。这篇内容适合三类人完全没碰过 Linux 的纯新手、装过但装一半失败过的半新手、以及想给自己搭一套干净实验环境的开发者。我会从方案选型讲到虚拟机参数怎么分、系统怎么装、装完必须做哪几件事最后把我在各种机器上踩过的坑整理成一份速查表。全程不跳步参数给出理由命令给出来源你照着做基本能一次通过。1. 为什么我建议用虚拟机入门 Linux方案选型与整体思路1.1 三种常见方案的横向对比入门 Linux 的路子无非三条单独一台物理机、双系统、虚拟机。三条路我都走过说说实际感受。物理机方案最“正”一台旧笔记本装个 Linux 服务器版插上电就跑性能无损硬件坑也能踩到比如无线网卡驱动。问题在于成本和学习节奏——你需要多一台机器而且搞崩了要重装重装又要找 U 盘、进 BIOS、分区一来一回半天没了。对新手来说这种“破坏成本”会严重抑制你探索的欲望。双系统是很多教程推的方案我早期也这么干过。它的优点是性能接近原生缺点是分区风险高、切换麻烦、时间不同步、Windows 的快速启动和 BitLocker 经常把引导搞乱。我见过太多人分区时手一抖把数据盘格了。对刚入门的人来说把学习环境的建立和“动磁盘分区表”这种高危操作绑在一起性价比很低。虚拟机是三条路里最适合入门的。它把 Linux 当成宿主机上的一个进程在跑所有磁盘操作都落在几个虚拟磁盘文件里搞崩了直接删文件重建宿主机毫发无损。性能上现代 CPU 的硬件虚拟化已经很成熟日常敲命令、跑服务、编译小型项目完全够用。方案性能破坏成本搭建难度适合人群物理机原生高需重装中有闲置设备、要测硬件驱动双系统接近原生高有分区风险高长期固定使用单系统虚拟机约 80% 到 95%极低删文件即可低新手入门、多环境实验1.2 虚拟机方案真正的价值在哪里除了“安全”虚拟机还有一个被低估的好处环境隔离和可复制。你可以同时开三台虚拟机一台 Ubuntu 桌面版练日常操作一台最小化安装的服务器版练服务部署一台专门用来做危险实验比如练磁盘分区、练 iptables 规则、练把一个系统的启动项删掉看看会发生什么。这些操作在物理机上要掂量半天在虚拟机里就是拍拍快照的事。快照是我最想强调的功能。它相当于给整个虚拟机状态拍一张照片包括磁盘、内存、配置。你在装完系统、配好网络、装完常用工具之后立刻拍一张之后无论怎么折腾三十秒就能回到这个干净状态。这个机制让“试错”变成零成本而试错密度恰恰是学 Linux 快慢的决定性因素。代价当然也有。虚拟机的 CPU 和内存是从宿主机里切出来的宿主机本身要留出足够资源图形界面在虚拟机里会有点迟滞某些依赖特定硬件的能力比如直接操作 GPU 做深度学习训练虚拟机会比较别扭。但这些对入门阶段都不是瓶颈。1.3 宿主机资源怎么分配才不卡这是新手最容易翻车的地方。很多人给虚拟机分了 8G 内存宿主机本身只有 8G结果两边一起卡死。我的经验公式是虚拟机内存不超过宿主机物理内存的一半如果你要同时开两台那两台加起来不超过宿主机的一半。CPU 同理虚拟机核心数不要超过宿主机的物理核心数减一因为宿主机自己也要干活。磁盘反而是最不用吝啬的虚拟磁盘采用“按需分配”的方式你写 100G 实际只占用真正写入的数据量所以给 Ubuntu 桌面版 40G 到 60G 都合理。提示如果宿主机是机械硬盘虚拟机体验会明显下降因为虚拟磁盘是随机读写密集型的。有条件尽量放在固态硬盘上这比多加两个 CPU 核心的提升更直观。2. 安装前的准备工作镜像、版本与磁盘规划2.1 VMware 产品的版本差异与获取方式VMware 桌面虚拟化产品线里你会遇到两个名字Workstation Pro 和 Workstation Player。Player 是精简版只能运行现成的虚拟机创建虚拟机的能力受限Pro 是完整版支持快照、克隆、虚拟网络编辑器、多虚拟机并行管理这些都是学习过程中会用到的功能。所以选 Pro。获取途径上官方对个人使用提供了免费授权的政策注册账号后按官网指引下载安装包即可具体条款以官网当前说明为准。这里必须提醒一句网上流传的各种“密钥”“激活码”来源不明其中不少捆绑了额外程序装上去轻则弹广告重则影响宿主机安全。学习环境本身价值不高没必要为了省这点事给自己埋雷。版本号方面选当前主版本的最新小版本即可新版本对新的 CPU 指令集和新的宿主系统兼容性更好。下载时注意区分安装包架构和宿主系统Windows 宿主机就下 Windows 版不要下成 Linux 版。2.2 Linux 发行版到底怎么选这是新手第二个纠结的点。我把常见选择列一下方便你对号入座。发行版包管理特点建议场景Ubuntu LTSapt资料最多社区活跃开箱即用第一次装通用首选Debianapt稳定、干净软件版本偏保守想理解底层做服务器CentOS 系替代品dnf/yum企业环境常见文档规范面向运维岗位Kali Linuxapt预装大量安全测试工具明确要做安全方向如果你完全没有偏好就选 Ubuntu 的 LTS 版本。LTS 是长期支持版官方维护周期长你不用装完没多久就面临升级。更关键的是你搜索到的绝大多数教程、报错解决方案都是基于 Ubuntu 的遇到问题能快速找到答案这一点对新手极其重要。Kali 我要单独说一句。它是个很好的工具集合但它默认以 root 身份运行、预装大量工具对刚学命令行的人反而容易造成混乱——你会分不清哪些是系统本身的行为哪些是工具带来的。建议先用 Ubuntu 把基础命令和文件系统结构摸熟再上 Kali。2.3 镜像下载与完整性校验镜像一定去发行版官网或官方认可的镜像站下载不要用来源不明的“一键装机包”。下载完成后强烈建议做一次校验因为镜像损坏会导致安装过程中出现各种莫名其妙的错误而这类错误最难排查。在 Windows 上可以用命令行算一下哈希值再和官网公布的值对比certutil -hashfile ubuntu-24.04-desktop-amd64.iso SHA256在 Linux 或 macOS 上sha256sum ubuntu-24.04-desktop-amd64.iso对比一致再往下走。这个动作花你三十秒能省掉后面可能几小时的排查。2.4 宿主机侧的检查清单装之前先确认几件事避免中途卡住。第一宿主机的硬件虚拟化功能要在 BIOS 或 UEFI 里打开Intel 平台一般叫 VT-xAMD 平台叫 SVM不打开的话虚拟机要么起不来要么慢得离谱。第二宿主系统自带的虚拟化组件比如 Hyper-V有时会和 VMware 争抢底层能力如果启动虚拟机报错可以去系统的“启用或关闭功能”里把相关项关掉再试。第三给虚拟机文件预留一个空间充足的目录别放在系统盘根目录下随便一个位置后期备份和迁移会麻烦。注意如果你用的是公司发放的电脑安装虚拟机前先确认一下内部规定部分企业出于安全策略会限制虚拟化软件的使用这不是技术问题别硬来。3. VMware Workstation 安装实操全流程3.1 安装向导逐项说明双击安装包前面的许可协议、安装路径、用户体验设置这几页按默认走基本没问题只有几个选项值得留意。安装路径建议改到非系统盘因为虚拟机文件动辄几十 G和系统盘挤在一起迟早出问题。用户体验设置里的“启动时检查产品更新”可以取消学习环境不需要频繁更新反而可能因为版本变动带来兼容问题。“加入客户体验提升计划”也建议取消纯粹是隐私和资源考虑。安装过程中网络会短暂中断因为虚拟网卡驱动在注册这是正常的不要以为断网了。3.2 虚拟网络编辑器的初始配置装完之后先去“编辑”菜单里打开虚拟网络编辑器看一眼默认的网络配置。正常情况下你会看到 VMnet0、VMnet1、VMnet8 三个条目分别对应桥接模式、仅主机模式、NAT 模式。它们各自绑定了不同的虚拟网卡宿主机上也会多出对应的网络适配器。默认配置一般够用不需要动。真正需要检查的是 NAT 模式下的子网段比如默认可能是 192.168.x.0/24如果这个网段和你的公司内网或家庭网段冲突了就会出现“能 ping 通网关但上不了网”的怪现象。真遇到这种情况把子网改成别的段比如 192.168.100.0/24然后点“应用”让它重配。3.3 安装后必须做的验证动作别急着建虚拟机先做两个验证。第一打开任务管理器看服务列表确认 VMware 相关的几个后台服务处于运行状态尤其是和授权、网络相关的。第二随便新建一个空虚拟机不挂载任何系统开机看看能不能正常进入“找不到操作系统”的引导界面。能进说明虚拟化底层是通的后面装系统就水到渠成进不去先回去查 BIOS 里的虚拟化开关。这一步看着多余但它是把问题分层的关键。很多新手一上来就挂系统镜像报错了不知道是虚拟化没开、镜像坏了、还是安装步骤错了。先验证底层再装系统排查路径会清晰很多。4. 创建虚拟机并安装 Linux 系统4.1 新建虚拟机的参数怎么填点“创建新的虚拟机”选“自定义”而不是“典型”自定义模式能让你看到每一个参数学习价值更高。硬件兼容性保持默认的最新版本即可。客户机操作系统这一页很关键。如果你装 Ubuntu选 Linux版本选 Ubuntu 64 位装 Debian 选 Debian装 Kali 一般也归到 Debian 系。选错版本不会导致装不上但 VMware 给的默认参数会不匹配比如默认磁盘控制器类型或内存建议值可能不合适。命名和位置这一步名字建议带上用途和日期比如 ubuntu-2404-lab位置放在你专门准备的虚拟机目录里。磁盘容量给 40G 到 60G选择“将虚拟磁盘拆分成多个文件”这样便于后续拷贝和迁移。4.2 CPU 内存磁盘的具体取值以宿主机 16G 内存、8 核 CPU 为例给 Ubuntu 桌面版分 4G 内存、2 到 4 个处理器核心、40G 磁盘这是比较舒服的配置。如果宿主机只有 8G 内存那就给 2G 到 3G同时把 Ubuntu 的图形界面理解成“够用就行”不要指望流畅。这里有个常见误区以为 CPU 核心数可以随便给。VMware 里的“处理器数量”指的是虚拟插槽数“每个处理器的核心数”才是真正的并行度两者相乘不能超过宿主机的物理核心数。给多了不会更快反而因为调度争抢变慢。4.3 挂载安装镜像与固件类型选择在“使用 ISO 映像文件”那里浏览到你下载并校验过的镜像。固件类型选 UEFI 还是 BIOS一般保持默认即可Ubuntu 和 Kali 都支持两种。如果你之后要做一些和启动相关的实验比如自己写引导那统一用 UEFI 更贴近现在的真实环境。网络类型先选 NAT装完系统后再根据需要调整。NAT 的好处是即插即用虚拟机通过宿主机上网不需要宿主机所在网络支持额外 IP宿舍网、公司网、公共网络都能用。4.4 Ubuntu 安装过程逐步记录开机后会进入引导菜单选“Try or Install Ubuntu”回车。语言选中文或英文都行但我建议第一次装就选英文原因是中文界面下很多报错信息和日志仍然是英文两边术语对不上反而绕。等你熟悉了再换中文界面。安装类型选“正常安装”会带上办公套件和常用工具“最小安装”体积小但很多基础工具要自己补。磁盘这一步选“清除整个磁盘并安装”注意看清楚了它清除的是虚拟磁盘不是你的物理硬盘这是虚拟机里最需要放心的一点。分区方案上如果你还没打算深入学分区让安装器自动分就行。如果你想练手可以选“其他选项”手动分我常用的方案是EFI 分区 512M、swap 分区按内存大小给内存 4G 以内给同样大小8G 以上给 4G、剩余全部给根分区挂载在 /。这个方案简单能覆盖绝大多数学习场景。时区、用户名、密码这几页按提示填。密码建议设一个你有印象但不需要太复杂的因为学习环境里你会频繁输入 sudo 密码太复杂会烦到自己。同时勾选自动登录虚拟机里省一次输密码的动作。4.5 首次启动后的初始化安装完成重启第一次进系统后会提示你做一些初始化设置比如是否发送系统数据、是否启用在线账户。这些按个人偏好关掉就行。进去之后第一件事是更新软件源并升级系统sudo apt update sudo apt upgrade -y第二条命令会花几分钟耐心等。升级完成后装几个必备工具sudo apt install -y build-essential git curl vim net-toolsbuild-essential是一堆编译工具的合集后面装 VMware Tools 或编译软件时会用到net-tools提供ifconfig这类老命令很多教程还在用装上省得你疑惑为什么命令找不到。更新完之后立刻拍一个快照命名为“clean-install”。这是你的第一个安全点。5. 装完之后必做的收尾工作Tools、快照、网络5.1 VMware Tools 与 open-vm-tools 的选择这一步是新手最容易卡住的地方网上教程让你点“安装 VMware Tools”结果弹出“继续运行脚本未能在虚拟机中成功运行”之类的提示人就懵了。先说结论在 Ubuntu、Debian 这类现代发行版上优先用发行版仓库里的open-vm-tools而不是虚拟机菜单里那个挂载 ISO 的方式。原因是发行版维护的版本与内核匹配安装过程由包管理器接管不容易出兼容问题。命令如下sudo apt install -y open-vm-tools open-vm-tools-desktop sudo rebootopen-vm-tools提供核心功能open-vm-tools-desktop提供剪贴板共享、拖拽、自动调整分辨率这些桌面体验。装完重启分辨率会自动跟随窗口大小变化这就是装成功的直观标志。如果你坚持用菜单里的安装方式而报了脚本错误常见原因是虚拟机里缺少编译环境或者已经装了 open-vm-tools 造成冲突。前者装build-essential和perl后者直接用包管理器方案覆盖。别在这个问题上死磕包管理器方案是更省事的路。5.2 快照策略什么时候拍、怎么命名快照拍得好回滚才有意义。我的习惯是在四个节点各拍一张刚装完系统并更新完clean、配好网络和基础工具base、装完某个大型开发环境dev、准备做危险实验之前pre-xxx。命名要带上时间和内容比如20240610-base-ok别用“快照1”“快照2”这种名字三天后你自己都想不起来哪个是哪个。另外快照不是备份它和虚拟磁盘本身存在一起磁盘文件坏了快照也一起没。重要环境还是要另外导出或复制整个虚拟机目录。5.3 三种网络模式的差异与实战选择网络是新手第二大困惑点我把三种模式的本质讲清楚。模式虚拟机 IP 来源能否上网宿主机能否访问虚拟机典型用途NATVMware 的 DHCP能能单向默认选择日常学习桥接所在物理网络分配能能且同级需要被局域网内其他设备访问仅主机VMware 的 DHCP不能能断网隔离实验、网络攻防练习NAT 模式下虚拟机和宿主机不在同一个网段虚拟机出网是宿主机帮忙转发。桥接模式下虚拟机就像局域网里另一台独立设备会拿到一个真实的内网 IP别人也能访问它。仅主机模式最封闭适合做纯内部网络实验。切模式的时候要注意虚拟机关机状态下改网络类型然后再开机否则可能不生效。切换后如果拿不到 IP可以手动触发一下sudo dhclient -r sudo dhclient5.4 共享文件夹与拖拽复制装完 open-vm-tools-desktop 后宿主机和虚拟机之间的复制粘贴、文件拖拽通常就能用了。如果拖拽失效用共享文件夹更稳。在虚拟机设置里启用共享文件夹指定宿主机的一个目录然后在虚拟机里挂载sudo mkdir -p /mnt/hgfs sudo mount -t fuse.vmhgfs-fuse .host:/ /mnt/hgfs -o allow_other想开机自动挂载把这一行写进/etc/fstab.host:/ /mnt/hgfs fuse.vmhgfs-fuse allow_other,defaults 0 0注意/etc/fstab写错会导致系统进不去紧急模式改之前先确认命令在手动执行时是成功的改完用sudo mount -a验证一次再重启。6. 常见问题与排查技巧实录6.1 安装与启动类问题虚拟机开机报“此主机支持 Intel VT-x但 Intel VT-x 处于禁用状态”这是虚拟化没开去 BIOS 里找对应开关。开完还报多半是宿主系统里的 Hyper-V 或类似功能占用了虚拟化能力去系统功能列表里关掉再重启。安装过程中卡在某个进度条很久不动先别急着断定死机。Ubuntu 安装盘启动时会做硬件探测机械硬盘或低配机器上确实慢。等超过十分钟还没变化再考虑是镜像损坏或磁盘空间不足。这时候回头看看之前做的哈希校验往往就找到原因了。6.2 网络与 DNS 类问题“能 ping 通 IP 但域名解析不了”这是最典型的 DNS 问题。排查顺序是先看/etc/resolv.conf里有没有正常的域名服务器地址再看是不是被网络管理工具覆盖了。Ubuntu 用 systemd-resolved 的情况下/etc/resolv.conf常常是一个指向/run/systemd/resolve/stub-resolv.conf的软链接直接改它重启后会失效。正确做法是改 netplan 配置编辑/etc/netplan/下的 yaml 文件在对应网卡下加域名服务器然后sudo netplan apply改完用resolvectl status确认生效。另外别忽略一个低级错误虚拟机时间不对也会导致域名解析和 TLS 握手失败装完系统后确认一下时区和时间是否同步。6.3 显示、乱码与文件传输类问题Linux 下解压从 Windows 传过来的 zip 包中文文件名经常变成乱码。原因不是文件坏了而是编码不同Windows 压缩时常用 GBKLinux 默认按 UTF-8 解。unzip -O CP936 package.zip -d ./out-O CP936明确告诉 unzip 按中文编码处理。如果系统里的 unzip 版本不支持这个参数可以换用7z7z x package.zip -o./out或者干脆让压缩方统一用 UTF-8 打包从源头上避免问题。tar.gz 包一般没有这个问题因为它默认就是字节流不涉及文件名编码转换。下表是我这几年积累的高频问题速查遇到问题可以先对着扫一遍。现象最可能原因处理方向虚拟机起不来提示虚拟化被禁用BIOS 未开启或宿主冲突开 BIOS 虚拟化关冲突功能能 ping 通 IP域名不通域名服务器配置被覆盖改 netplan 后 apply分辨率不能自适应窗口没装桌面版开源工具集装 open-vm-tools-desktopzip 解压中文乱码编码不一致unzip 加 -O CP936共享文件夹挂载失败挂载点权限或工具未装检查 allow_other 参数系统时间错乱影响联网时区或同步未配置校对时区并同步时间7. 虚拟机里的 Linux 该怎么练从装完到用起来的路线7.1 先把这些命令敲成肌肉记忆系统装好只是开始真正决定你入门速度的是接下来两周的练习密度。我的建议是先把文件与目录操作过一遍这些是每天都要用的。pwd # 当前所在目录 ls -alh # 列出全部文件显示大小和权限 cd /var/log # 切换目录 mkdir -p a/b/c # 递归创建目录 cp -r src dst # 递归复制 mv old new # 移动或重命名 rm -rf dir # 递归强制删除慎用rm -rf这行务必看清路径再回车虚拟机里删掉还能重装养成谨慎习惯更重要。接着把查找、查看、权限三类命令过一遍find、grep、cat、less、tail -f、chmod、chown。尤其是tail -f看日志是你之后排查一切服务的起点。再往下是进程和网络ps aux、top、kill、ss -lntp、ping、curl。这些命令不需要背参数用--help或man现查都行关键是知道“遇到什么问题该用哪个工具”。7.2 后续环境搭建的推荐顺序练完基础命令按这个顺序往上叠每一步都能带来正反馈。先装 Python 环境和虚拟环境工具python3 -m venv是标准做法比全局装包干净得多。然后是 Git配置好用户名和邮箱再配一次免密登录ssh-keygen -t ed25519 -C your-mail cat ~/.ssh/id_ed25519.pub把公钥贴到你使用的代码托管平台上之后推送就不用反复输密码。这一步是每个开发者都会经历的仪式早做早省事。接着是数据库先装一个 MySQL 或 MariaDB把建库、建用户、授权、导数据的完整流程走一遍遇到连接失败就去看服务是否在跑、监听端口是否正确、用户是否允许从当前主机连接。这套排查思路和将来在真实服务器上做的事情一模一样。最后再上容器和开发工具。容器能帮你跳过大量环境配置的琐碎细节但对新手来说先用最原始的方式把服务跑起来一次再理解容器帮你封装了什么学习效果是两回事。我一直觉得虚拟机最大的价值不是省了买机器的钱而是把“搞坏了重来”这件事的成本压到了几乎为零。我自己那台虚拟机硬盘里至今躺着一堆快照有的叫“分区表被我删了之前”有的叫“改 netplan 之前”每一个名字背后都是一次真实的翻车。正是这些可以随时回退的翻车才让那些命令和配置真正长在了手上。
返回列表