尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

Ubuntu虚拟机从安装到优化:VMware配置与开发环境搭建全攻略

Ubuntu虚拟机从安装到优化:VMware配置与开发环境搭建全攻略 1. 项目概述为什么需要精心配置Ubuntu虚拟机如果你是一名开发者、运维工程师或者正在学习Linux那么一台配置得当的Ubuntu虚拟机就是你最可靠的“数字沙盒”。它隔离了你的物理主机环境让你可以大胆地安装软件、修改配置、测试服务而不用担心搞崩了日常使用的系统。无论是为了搭建一个本地的Web开发环境学习Docker和Kubernetes还是运行一个数据库服务一个基础安装后未经优化的Ubuntu虚拟机往往用起来会磕磕绊绊——网络不通、共享文件麻烦、性能低下、输入法缺失每一个小问题都可能消耗你大量的时间。我见过太多新手在安装完Ubuntu虚拟机后就卡在了“下一步”。他们以为安装完成就万事大吉结果发现复制粘贴不好用屏幕分辨率别扭甚至没法从主机拖个文件进去。这就像你买了一套精装房但水电没通家具也没进场根本没法住。我们今天要做的就是把这套“房子”彻底装修好让它变成一个高效、舒适、功能齐全的工作站。这个过程不仅仅是点击“下一步”更涉及到对虚拟机底层机制的理解和一系列提升体验的优化技巧。从VMware Tools的安装到系统基础配置从开发环境的搭建到常用工具的部署我会带你走一遍我重复过上百次的流程并分享那些官方文档里不会写的“坑”和技巧。2. 虚拟化平台选型与初始安装2.1 主流虚拟化软件对比在开始之前选对工具很重要。目前主流的桌面虚拟化软件主要有VMware Workstation Pro或免费的Player版、Oracle VirtualBox以及Windows 10/11自带的Hyper-V。对于Ubuntu配置我强烈推荐VMware Workstation Pro其次是VirtualBox。为什么是VMware首先它的性能和图形化支持通常更好特别是对于3D加速这在你想在虚拟机里运行一些GUI应用或进行轻度桌面操作时体验更佳。其次它的“VMware Tools”套件与Ubuntu的集成度非常高能完美解决显示分辨率自适应、主机-客户机间无缝复制粘贴、共享文件夹等功能。最后它的快照功能极其强大和稳定你可以随时保存虚拟机的完整状态进行任何危险操作前拍个快照出了问题一秒回滚这是学习和实验的“后悔药”。VirtualBox是开源免费的选择功能也很全面兼容性不错。但在一些细节上比如共享文件夹的配置、对某些Linux发行版新内核的支持上偶尔会遇到一些小问题需要多花点时间排查。Hyper-V是Type-1裸机虚拟化性能好但它是Windows专属且其网络配置和与主机系统的交互方式与VMware/VirtualBox不同对新手来说学习曲线稍陡。注意如果你的宿主机是Apple Silicon Mac以上都不适用。你需要使用Parallels Desktop或UTM等支持ARM架构的虚拟化软件并安装Ubuntu for ARM版本。2.2 Ubuntu镜像选择与虚拟机创建要点去Ubuntu官网下载镜像时你会看到多个版本。对于大多数开发和学习用途我推荐选择最新的LTS长期支持版本比如Ubuntu 22.04 LTS。LTS版本提供5年的安全更新和维护非常稳定社区支持资源也最丰富。避免使用非LTS的临时版本它们生命周期短可能包含未稳定的新特性。创建虚拟机时有几个参数需要仔细设置内存至少分配4GB。如果宿主机有16GB内存分配给虚拟机8GB会获得更流畅的体验特别是当你需要在虚拟机内运行IDE、多个Docker容器或数据库时。处理器核心数建议分配宿主机物理核心数的一半。例如你的CPU是8核16线程可以分配2个处理器每个处理器4个核心共8个逻辑核心。不要分配超过宿主机物理核心数的线程否则会导致调度器负担加重整体性能下降。磁盘选择“将虚拟磁盘拆分成多个文件”这样更方便迁移和备份。磁盘大小建议40GB以上并选择“立即分配所有磁盘空间”以获得更好的磁盘性能但这会立刻占用宿主机相应大小的硬盘空间。如果你硬盘空间紧张可以不勾选此项虚拟磁盘文件会随着使用动态增长。网络适配器默认的NAT模式对大多数场景都适用。它让虚拟机共享主机的IP地址上网主机和虚拟机可以互相访问但外部网络无法直接访问虚拟机。如果你需要从局域网其他设备访问虚拟机比如部署一个Web服务则需要使用“桥接模式”这样虚拟机会获得一个与主机同网段的独立IP。安装过程本身很直观但有一个关键选择安装类型。对于纯净的学习和开发环境请选择“最小化安装”它只安装最基本的系统不包含办公套件、游戏等多余软件。这能让你的系统更轻量、启动更快、安全补丁更少。我们需要的所有开发工具都可以后续通过apt命令精准安装。3. 安装后的首要优化VMware Tools与基础配置安装完系统第一次进入桌面后先别急着装软件。有几项基础优化必须做它们决定了你后续使用的“基线体验”。3.1 安装Open VM ToolsVMware Tools的开源实现过去我们需要手动安装VMware提供的闭源Tools现在Ubuntu官方仓库已经包含了功能等效的开源替代品——Open VM Tools。这是提升体验最关键的一步。打开终端CtrlAltT依次执行以下命令# 首先更新软件包列表 sudo apt update # 安装Open VM Tools及其桌面组件如果你使用图形界面 sudo apt install open-vm-tools open-vm-tools-desktop -y # 如果你安装的是服务器版无GUI则安装 # sudo apt install open-vm-tools -y安装完成后必须重启虚拟机(sudo reboot)所有功能才会生效。重启后你应该能立即感受到变化显示分辨率现在可以自由调整虚拟机窗口大小Ubuntu桌面会自动适应新的分辨率。剪贴板共享可以在主机和虚拟机之间自由复制粘贴文本。鼠标集成鼠标可以无缝进出虚拟机窗口无需再按CtrlAlt释放。如果重启后分辨率仍然不能自适应可以检查显示设置或者尝试手动设置一个支持的分辨率。偶尔需要手动启用3D加速在VMware的虚拟机设置 - 显示器 - 加速3D图形可能需要先安装VMware主机上的显卡驱动。3.2 配置APT软件源与系统更新系统默认的软件源服务器可能在国外下载速度慢。更换为国内镜像源可以极大提升软件安装和更新的速度。阿里云、腾讯云、华为云、清华TUNA都提供了优质的镜像。备份原有源列表然后编辑源文件sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak sudo nano /etc/apt/sources.list将文件内容全部替换为阿里云镜像源以Ubuntu 22.04为例deb https://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse deb https://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse deb https://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse deb https://mirrors.aliyun.com/ubuntu/ jammy-proposed main restricted universe multiverse deb https://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse保存退出在nano中CtrlX然后按Y确认回车。接着更新软件列表并升级所有已安装的包sudo apt update sudo apt upgrade -y sudo apt dist-upgrade -ydist-upgrade会智能处理依赖关系的变更比如需要安装新包或删除旧包来完成升级。执行完这些你的系统就处于最新状态了。3.3 配置共享文件夹主机与虚拟机文件互通这是开发中最常用的功能之一。你可以在主机上用熟悉的编辑器写代码然后在虚拟机里编译和运行。VMware的共享文件夹功能需要宿主机和客户机Ubuntu配合。第一步在VMware中设置共享关闭虚拟机电源。在VMware中右键虚拟机 - 设置 - 选项 - 共享文件夹。选择“总是启用”然后点击“添加”按照向导选择一个主机上的目录例如D:\VM_Share并给它起一个在虚拟机内看到的名称例如host_share。重新启动虚拟机。第二步在Ubuntu中挂载共享文件夹 共享文件夹默认会被挂载到/mnt/hgfs/目录下。但有时需要手动操作。# 查看可用的共享文件夹 vmware-hgfsclient # 如果上一步列出了你的共享名如host_share但/mnt/hgfs是空的则需要手动挂载 sudo vmhgfs-fuse .host:/host_share /mnt/hgfs -o subtypevmhgfs-fuse,allow_other为了让每次启动自动挂载可以编辑/etc/fstab文件在末尾添加一行.host:/host_share /mnt/hgfs fuse.vmhgfs-fuse allow_other,defaults 0 0实操心得共享文件夹的权限问题很常见。如果虚拟机内的用户无法写入共享文件夹可以在挂载时加上uid和gid参数指定为你当前用户的ID用id -u和id -g命令查看。例如-o subtypevmhgfs-fuse,allow_other,uid1000,gid1000。4. 开发环境核心组件安装与配置基础打牢后我们就可以搭建生产力环境了。以下组件是绝大多数开发栈的基石。4.1 安装与配置Git版本控制是开发的必备技能。安装Git很简单sudo apt install git -y安装后需要配置全局用户信息这在你提交代码时至关重要。git config --global user.name 你的名字 git config --global user.email 你的邮箱 git config --global core.editor nano # 或 vim, vscode等设置默认文本编辑器为了提高操作效率我强烈建议配置SSH密钥连接到GitHub或GitLab避免每次推送都输入密码。# 生成SSH密钥对如果已有可跳过 ssh-keygen -t ed25519 -C your_emailexample.com # 一路回车使用默认路径和空密码 # 将公钥内容添加到你的Git托管平台 cat ~/.ssh/id_ed25519.pub复制输出的公钥内容粘贴到GitHubSettings - SSH and GPG keys或GitLab等平台的SSH密钥设置中。4.2 安装与配置Node.js和npm对于前端或Node.js后端开发需要安装Node.js。不建议直接安装Ubuntu仓库里版本较旧的Node.js。使用NodeSource维护的仓库可以安装最新LTS版本。# 以安装Node.js 18.x LTS为例 curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash - sudo apt install -y nodejs # 验证安装 node --version npm --versionnpm的默认全局包安装目录需要权限这可能导致安装某些全局命令行工具时出现权限错误。有两种解决方案更改npm全局目录到用户目录推荐mkdir ~/.npm-global npm config set prefix ~/.npm-global然后编辑~/.bashrc或~/.zshrc在末尾添加export PATH~/.npm-global/bin:$PATH执行source ~/.bashrc使配置生效。使用sudo安装全局包不推荐可能导致依赖混乱。4.3 安装与配置Python3及pipUbuntu 22.04默认已经安装了Python3。你需要确保pipPython包管理器也已安装并可能需要进行一些优化。# 安装pip和虚拟环境工具 sudo apt install python3-pip python3-venv -y # 升级pip到最新版 pip3 install --upgrade pipPython开发的最佳实践是使用虚拟环境venv来隔离不同项目的依赖。永远不要在系统全局环境下用sudo pip install安装项目依赖这可能会破坏系统自带的Python包。# 为项目创建虚拟环境 cd my_project python3 -m venv venv # 激活虚拟环境 source venv/bin/activate # 激活后命令行提示符前会出现 (venv) # 在虚拟环境中安装包 pip install requests numpy pandas # 退出虚拟环境 deactivate4.4 安装与配置DockerDocker是现代应用开发和部署的标配。在Ubuntu上安装Docker官方推荐使用其提供的仓库而不是Ubuntu自带的旧版本。# 1. 卸载旧版本如有 sudo apt remove docker docker-engine docker.io containerd runc # 2. 安装依赖允许apt通过HTTPS使用仓库 sudo apt update sudo apt install ca-certificates curl gnupg lsb-release -y # 3. 添加Docker官方GPG密钥 sudo mkdir -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg # 4. 设置仓库 echo \ deb [arch$(dpkg --print-architecture) signed-by/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable | sudo tee /etc/apt/sources.list.d/docker.list /dev/null # 5. 安装Docker引擎 sudo apt update sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin -y # 6. 验证安装 sudo docker run hello-world默认情况下运行Docker命令需要sudo权限。为了方便可以将当前用户加入docker组这样就不用每次都加sudo了。sudo usermod -aG docker $USER重要执行此命令后你需要完全注销当前会话并重新登录或者重启虚拟机用户组变更才会生效。之后你就可以直接运行docker ps了。5. 桌面环境与输入法优化5.1 安装搜狗输入法解决中文输入难题对于中文用户系统自带的输入法可能不够好用。搜狗输入法Linux版是一个很好的选择但它的安装过程稍显复杂因为依赖了较旧的库。步骤一安装fcitx输入法框架Ubuntu默认使用IBus框架但搜狗输入法基于fcitx。所以我们需要先安装并切换框架。sudo apt install fcitx fcitx-config-gtk fcitx-googlepinyin -y # 安装一些基础的中文支持包 sudo apt install language-pack-zh-hans -y步骤二下载并安装搜狗输入法DEB包去搜狗输入法官网下载Linux版本的DEB安装包。由于版本和依赖问题直接安装可能会失败。我们需要手动处理依赖。# 假设下载的包是 sogoupinyin_4.0.1.2800_x86_64.deb # 1. 创建一个临时目录并进入 mkdir -p ~/sogou cd ~/sogou # 2. 下载包请替换为实际下载链接或先将包复制到虚拟机内 # wget [搜狗输入法deb包的下载链接] # 3. 解压deb包 ar vx sogoupinyin_4.0.1.2800_x86_64.deb # 4. 解压数据包 tar -xvf data.tar.xz # 5. 将文件复制到系统目录 sudo cp -r usr/* /usr/ sudo cp -r etc/* /etc/ # 6. 安装缺失的依赖一个常见缺失的库 sudo apt install libopencc2 libopencc2-data -y # 如果还有其他依赖错误根据提示用apt安装即可步骤三配置输入法打开“设置” - “区域与语言” - “管理已安装的语言”。在“语言支持”窗口中将“键盘输入法系统”从“IBus”更改为“fcitx”。注销并重新登录。登录后你应该能在屏幕右上角或任务栏看到一个键盘图标。右键点击它 - “配置”。在配置窗口中点击左下角的“”号取消勾选“只显示当前语言”然后搜索“sogou”添加“搜狗拼音”。你可以通过CtrlSpace切换中英文输入。踩坑记录搜狗输入法依赖的libopencc等库版本可能与Ubuntu 22.04默认提供的不完全匹配。如果上述方法不行可以尝试从Ubuntu 20.04的仓库下载旧版本的libopencc等依赖包手动安装或者寻找社区维护的PPA。另一个更稳定的选择是使用fcitx-googlepinyin或fcitx-sunpinyin它们安装简单但词库和智能性不如搜狗。5.2 安装Visual Studio CodeVS Code是轻量级但功能强大的代码编辑器。通过官方仓库安装能确保自动更新。# 导入微软GPG密钥 wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor packages.microsoft.gpg sudo install -o root -g root -m 644 packages.microsoft.gpg /etc/apt/trusted.gpg.d/ sudo sh -c echo deb [archamd64 signed-by/etc/apt/trusted.gpg.d/packages.microsoft.gpg] https://packages.microsoft.com/repos/vscode stable main /etc/apt/sources.list.d/vscode.list # 安装VS Code sudo apt update sudo apt install code -y安装后你可以通过命令行code .在当前目录打开VS Code。接下来安装一些必备插件如Python扩展、Docker扩展、GitLens等直接在VS Code的扩展市场搜索安装即可。6. 性能调优与系统清理虚拟机用久了可能会感觉变慢。定期进行一些维护和优化很有必要。6.1 清理APT缓存与无用包APT在安装软件时会下载大量的.deb包缓存这些文件通常可以安全清理。# 清理已下载的软件包缓存/var/cache/apt/archives/ sudo apt clean # 清理不再需要的依赖包自动移除 sudo apt autoremove -y # 清理旧的配置文件交互式询问 sudo apt autoclean6.2 调整Swappiness值Swappiness是内核参数控制系统有多倾向于使用交换分区swap。对于拥有充足内存的虚拟机过度使用swap会导致性能下降因为磁盘速度远慢于内存。默认值通常是60。# 查看当前值 cat /proc/sys/vm/swappiness # 临时设置为10更倾向于使用物理内存 sudo sysctl vm.swappiness10 # 永久生效编辑 /etc/sysctl.conf在末尾添加 vm.swappiness10对于开发机设置为10-20是一个合理的范围。如果你的虚拟机内存非常充足比如16GB以上甚至可以设置为0但极端情况下可能导致内存耗尽时系统无响应。6.3 使用ZRAM内存压缩交换对于内存不那么宽裕的虚拟机比如只分配了4GB启用ZRAM可以有效提升多任务处理能力。ZRAM在内存中创建一个压缩块设备作为交换空间速度比磁盘swap快得多。# 安装zram配置工具 sudo apt install zram-config -y安装后重启即可。它会自动根据你的内存大小配置ZRAM。你可以通过swapon --show命令查看类型为zram的交换分区是否已启用。7. 网络与安全增强配置7.1 配置静态IP桥接模式下如果你使用桥接网络并且希望虚拟机的IP地址固定不变例如作为服务器被访问可以配置静态IP。Ubuntu 22.04使用Netplan进行网络配置。# 查看网络接口名称 ip a # 通常有线网卡是ens33或enp0s3 # 编辑Netplan配置文件文件名可能不同通常是01-netcfg.yaml或00-installer-config.yaml sudo nano /etc/netplan/00-installer-config.yaml将内容修改为类似如下请根据你的网络环境调整network: version: 2 ethernets: ens33: # 你的网卡名称 dhcp4: no addresses: [192.168.1.100/24] # 静态IP和子网掩码 routes: - to: default via: 192.168.1.1 # 你的网关地址 nameservers: addresses: [8.8.8.8, 1.1.1.1] # DNS服务器应用配置sudo netplan apply如果配置有误导致网络断开可以使用sudo netplan --debug apply来调试或者回滚到DHCP。7.2 基础安全设置更新所有软件定期运行sudo apt update sudo apt upgrade。配置防火墙Ubuntu默认带有ufw简单防火墙。sudo ufw enable # 启用防火墙 sudo ufw allow ssh # 允许SSH连接如果你通过SSH管理 sudo ufw allow 80/tcp # 允许HTTP如果运行Web服务 sudo ufw status verbose # 查看规则禁用root SSH登录如果你开启了SSH服务编辑/etc/ssh/sshd_config找到PermitRootLogin并将其设置为no然后重启SSH服务sudo systemctl restart sshd。使用强密码和SSH密钥避免使用弱密码对于服务器禁用密码登录仅使用SSH密钥认证更安全。8. 常见问题与排查技巧实录即使按照步骤操作也难免会遇到问题。这里记录了几个最常见的问题和解决方法。8.1 共享文件夹无法访问或只读症状在/mnt/hgfs下看不到共享文件夹或者能看到但无法写入。检查VMware设置确保虚拟机设置中共享文件夹已启用并且路径正确。检查Open VM Tools确保open-vm-tools-desktop已安装并重启。手动挂载使用sudo vmhgfs-fuse .host:/ /mnt/hgfs -o subtypevmhgfs-fuse,allow_other尝试。权限问题这是最常见的原因。在挂载命令或/etc/fstab中添加uid和gid参数指向你的用户ID通常是1000。例如.host:/host_share /mnt/hgfs fuse.vmhgfs-fuse allow_other,uid1000,gid1000 0 0文件夹不存在确保主机上的共享目录真实存在。8.2 虚拟机屏幕分辨率锁定且无法调整症状虚拟机桌面分辨率固定为低分辨率如800x600无法在显示设置中更改。确认Open VM Tools首先确保open-vm-tools-desktop已安装并重启。检查VMware设置在虚拟机设置 - 显示器中确认“加速3D图形”已勾选这需要宿主机安装VMware显卡驱动。安装推荐驱动在Ubuntu的“软件和更新” - “附加驱动”中查看是否有可用的VMware显示驱动。手动添加分辨率如果以上都不行可以尝试手动添加分辨率模式。# 使用cvt生成指定分辨率如1920x108060Hz的模式行 cvt 1920 1080 60 # 输出类似Modeline 1920x1080_60.00 173.00 1920 ... # 使用xrandr创建新模式 xrandr --newmode 1920x1080_60.00 173.00 1920 ... # 获取当前显示输出名称通常是Virtual1 xrandr # 将新模式添加到当前输出 xrandr --addmode Virtual1 1920x1080_60.00 # 应用新分辨率 xrandr --output Virtual1 --mode 1920x1080_60.00可以将这些命令写入~/.profile或创建一个启动脚本以便每次登录自动设置。8.3 APT更新或安装软件时出现“Hash Sum mismatch”或“Failed to fetch”错误症状运行sudo apt update时某些仓库哈希校验失败或无法获取。更换软件源这是最可能的原因。你使用的镜像源可能暂时不同步或有问题。换一个镜像源比如从阿里云换到清华源重新执行更新。清理缓存运行sudo apt clean和sudo rm -rf /var/lib/apt/lists/*然后sudo apt update。检查网络确保虚拟机可以正常访问互联网ping 8.8.8.8。禁用IPv6有时IPv6连接会导致问题。可以尝试临时禁用或修改/etc/gai.conf文件优先使用IPv4。8.4 Docker命令需要sudo权限即使已将用户加入docker组症状执行docker ps仍然报错“permission denied”。确认组变更生效执行groups命令查看输出中是否包含docker组。如果没有说明组变更未生效。重新登录确保执行usermod命令后你已经完全注销并重新登录了当前用户会话或者重启了虚拟机。仅仅新开一个终端标签页是不够的。检查Docker套接字权限极少数情况下Docker套接字文件/var/run/docker.sock的权限可能有问题。可以检查其所属组是否为docker(ls -l /var/run/docker.sock)。如果不是可以尝试sudo chgrp docker /var/run/docker.sock。8.5 系统启动缓慢或卡住症状开机时在某个服务如网络、磁盘处停留很久。检查服务状态使用systemd-analyze blame命令可以列出所有系统服务的启动耗时找到拖慢启动的元凶。禁用不必要的服务例如如果你不用蓝牙可以sudo systemctl disable bluetooth.service。如果你不用打印服务可以sudo systemctl disable cups.service。检查磁盘使用sudo dmesg | grep -i error查看内核日志中的错误信息。也可能是虚拟磁盘文件碎片化如果使用的是动态分配磁盘在宿主机上进行磁盘整理可能有帮助。配置一台顺手的Ubuntu虚拟机就像打磨一件称手的工具。最初的几个小时投入会在未来数百小时的使用中带来持续的效率回报。我的习惯是在完成所有基础配置和开发环境搭建后立即通过VMware创建一个“黄金镜像”快照。这个快照包含了干净的系统、所有基础工具和优化设置。以后无论是创建新的开发环境还是当前环境被意外破坏都可以从这个干净的状态快速恢复或克隆省去了重复配置的麻烦。记住虚拟机的强大之处不仅在于隔离更在于其可复制和可回溯的特性善用快照能让你的学习和实验更加大胆和高效。
返回列表