血的教训

新电脑和当前电脑具有不同的平台和操作系统
  • 导出 environment_name.yml 文件:conda env export > environment.yml
  • 在新电脑上,利用生成的 environment_name.yml 文件复现环境:conda env create -f environment.yml
折腾虚拟机(一定要养成创建系统还原点和定期备份注册表的好习惯 T…T)

主播的软硬件环境

我一直用的是 VirtualBox-7.1.6-167084-Win 版本的 VirtualBox。但是在其上安装了 ubuntu-24.04.2-desktop-amd64

运行完:

sudo apt install build-essential dkms linux-headers-$(uname -r)

准备好了安装增强包前的编译环境后,安装了 VirtualBox 的增强包,可还是无法使用双向文件拖拽、无缝模式、共享文件夹这三大功能。

image-20250625181024804

一开始该问题怀疑可能与 Ubuntu 的版本有关,于是又下载了 ubuntu-22.04.5-desktop-amd64 结果该版本安装好后竟然连 Terminal 都打不开,更别提安装增强包了。经过多次反复重装 ubuntu 后还是没解决问题。

于是我怀疑或许是 VBoxGuestAdditions.iso 增强包与 VirtualBox 版本不一致?(可能性极小)于是我抱着试一试的态度便升级了 VirtualBox 到其最新版 VirtualBox-7.1.10-169112-Win 这时还能正常安装 VirtualBox,我将它安装到了上一个版本 VirtualBox 的安装目录下(安装前未卸载上个版本)。结果用新版 VirtualBox 启动虚拟机时出现了以下错误:

image-20250625181111641

我无奈,想着是不是我的 Windows11(我前一天刚从 Windows10 更新到 Windows11)和 VirtualBox 不兼容?而且我用不惯 Windows11,在文件夹中右键居然没有刷新按钮!于是我又利用官方的系统恢复回到了 Windows10。

恢复完运行虚拟机还是报以上的那个相同错误:

image-20250625181111641

我只能怀疑是旧版本的 VB 的残留影响了新的 VB,我于是准备全部卸载掉重装,结果一卸载发现,卸载也报错,卸载不了 VB 了:

image-20250625181637551

根据 Gemini,我怀疑是两个版本的.msi 文件互相干扰,我便尝试了解压旧版本 VB 的安装包,尝试找到.msi 文件替代不知道出了什么问题的.msi 文件,结果一解压完旧 VB 的安装程序在里面根本没找到.msi 文件。我又尝试不卸载了,直接换个安装目录,再装一遍新版,结果安装也是报和卸载同样的错误。

事情到这个地步,我顿感大事不妙,心态开始变化。

我又折腾了一通各种卸载和清理注册表的软件,那些破软件全是广告,要不就是收费太贵。下次还是用 winget 吧。

这时我心态已经爆炸了,抱着明天就去创建完系统还原点后暴力修改注册表的最糟打算,就上床睡觉了,此时已深夜了。

结果第二天又是一顿折腾,都已经创建好系统还原点了,抱着再试试的想法最后还是根据 Gemini 的建议到微软官方下载了 修复无法安装或删除程序的问题 - Microsoft 支持 疑难解答,安装和卸载故障排除程序。结果真的修复成功了,可以正常安装和卸载 VirtualBox 了。如果又天使的话那一定是 安装和卸载故障排除程序 一切又回到了折腾之初,然鹅我的``Ubuntu`还是不能用扩展包的功能…

最后附上和 Gemini 的对话记录:https://g.co/gemini/share/0e98a69490b5(VirtualBox 安装/卸载错误)


2025.11.20 更新


此次参考资料汇总:

VMware下载:https://github.com/yanghao5/VM-download

Ubantu下载:Index of /ubuntu-releases/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror

Kali下载:Get Kali | Kali Linux

VirtualBox共享文件夹设置全面解析和实际操作:https://www.bilibili.com/video/BV1Lt4y1x7M4

VMware虚拟机三种网络模式:VMware虚拟机三种网络模式

VMware入门视频:https://www.bilibili.com/video/BV1bU411U7rp/

linux C socket–raw socket:https://www.bilibili.com/video/BV1b94y1W75N

黑马SSH链接虚拟机教学:https://www.bilibili.com/video/BV15N411T7nT/

之前的二手机械革命蛟龙7(1800购入)用了7个月成功报废…无奈只得含泪换了天选6pro ultra7 + 5060版本。因为是新机并恰巧赶上要在Linux环境下用row socket做计网的课程设计,所以就又开始折腾起了虚拟机…(痛苦的回忆开始攻击我了…)

因为之前的Virtual Box实在莫名其妙的Bug太多,故我吸取教训直接下了VMware Workstation Pro。但是VMware也不是什么好鸟,首先在官网下载需要注册账号、注册要填一堆东西、填完下软件还得填一堆、主要是折腾完还不立马给你下验证个账号pending了整整俩天还没结束…我忍不了——上Github!

我先下的Kali的VMware & VirtualBox pre-built版本。下好了一顿折腾结果不仅连客机增强功能都没debug完、网也连不上…于是又换Ubuntu_24.04.3一顿折腾还是一个鬼样子(我的半下午+一晚上啊啊啊啊啊啊啊)。得,还是换VirtualBox吧。VirtualBox比VMware不稳定很多,经常在启动Ubuntu时卡住。但好在它的NAT模式不用自己设置,安好了系统直接就能联网、甚至在主机软路由时可以科学上网。但是还是之前那个问题:扩展功能不太行…又折腾了一个下午除了拖拽文件的问题还是没解决,其它的问题都边查资料边解决了。

以下为具体步骤:

安装 Guest Additions:

适用版本: Ubuntu 18.04 / 20.04 / 22.04 / 24.04 都可以
功能: 全屏、自适应分辨率、共享剪贴板、拖拽文件、共享文件夹等

在 Ubuntu 终端输入:

sudo apt update
sudo apt upgrade -y
sudo apt install build-essential dkms linux-headers-$(uname -r) -y

Guest Additions 需要编译内核模块,因此必须装这些依赖(这一步是最常见的坑)。

在虚拟机窗口的菜单中:

设备(Devices)
→ Insert Guest Additions CD Image...

或者中文版:

设备
→ 安装增强功能...

📌 如果提示下载 ISO,点“下载”即可。

你会看到桌面出现一个类似 VBox_GAs_7.x.x 的 CD 图标。

安装完后运行 Guest Additions 安装脚本:

方式 A(最简单)

在 CD 图标上右键 → Run Software运行软件


方式 B(终端运行脚本)

打开终端,执行:

cd /media/$USER/VBox_GAs_*/ 
sudo ./VBoxLinuxAdditions.run

运行几分钟后若显示:

Installing the Window System drivers ...
Installing modules ...

然后没有报红色大错误 → 就成功。


重启系统:

sudo reboot

五、验证是否安装成功

1.分辨率是否能自动拉伸?

拖动虚拟机窗口 → 分辨率是否自动变化?

2.查看内核模块是否已加载:

lsmod | grep vboxguest

如果有类似:

vboxguest   xxxx   ...

就是成功。

常见错误与解决

❌ 1. 运行脚本时报错:

Building kernel modules ...failed

原因:没装 build-essential / headers
解决:回到第一步重新安装依赖


❌ 2. 没看到 VBox_GAs 镜像

按:

设备 → Insert Guest Additions CD Image...

若仍没有,说明 ISO 下载失败 → 重新下载。


❌ 3. Wayland 桌面导致拖拽失效(Ubuntu 22.04+ 常见)

改回 Xorg:

登录界面左下角选择:

Ubuntu on Xorg

我之前怎么弄都不能自动随窗口变化调整分辨率大小就是没用Xorg版的Ubuntu

Ubuntu 中的 WaylandXorg 是两套 图形显示系统(Display Server),负责处理键鼠输入、窗口显示、绘图等。

它们的关系可以理解为:

Xorg = 老、但兼容性最好

Wayland = 新、更安全、更流畅,但兼容性不够

可以自动调整分辨率后在VirtualBox的相关设置中开启双向共享文件夹、双向剪贴板共享后双向剪贴板共享应该可以直接用了,而双向共享文件夹需要再配置一下。具体的内容看视频,这里把用到的命令和注意点总结一下:

命令:

sudo su
cd ./mnt
mkdir ./Share_P
mount -t vboxsf -o uid=1000,gid=1000 Share_P /mnt/Share_P/ #挂载共享文件夹
#mount:挂载; -t:指定挂载的文件类型; vboxsf:VirtualBox特定的共享文件类型; -o:option的意思; uid:user id(默认当前用户的uid为1000); gid:group id(默认当前用户的gid为1000)uid和gid这俩个参数为了保证不同Ubuntu版本的兼容性最好加上;Share_P:host物理主机中创建的Share_P文件夹; /mnt/Share_P/:虚拟机中Share_P文件夹标准的全路径
umount /mnt/Share_P #卸载共享文件夹

#没下vim的先下vim
sudo vim /etc/fstab # 修改fstab文件以实现启动虚拟机时的自动挂载,在VirtualBox设置开启共享文件功能的GUI界面中不要勾选自动挂载,因为那个很不稳定,还是推荐以修改该文件的方式实现自动挂载

Share_P(手动注释:这是host机中共享文件夹的名字,这个例子中host机中的共享文件夹和虚拟机中的共享文件夹的名字一样,注意不要搞混): /mnt/Share_P vboxsf uid=1000,gid=1000,auto 0 0

视频中打开fstab文件并修改后的例子:

image-20251120233517594

至此共享文件夹便已大功告成。

注意:1.临时共享文件夹在虚拟机关闭或重启后会消失;2.固定(permanent)共享文件不会消失;3.要用哪个文件夹就挂载哪个文件夹

2025.11.21更新:

今天在VMware中安装了Ubuntu并配置了VScode和row socket开发环境。

bash中输入以安装VMtools:

sudo apt update
sudo apt install open-vm-tools open-vm-tools-desktop -y

安装完成后在虚拟机中设置开启拖放和复制黏贴后便可正常使用,但是和VirtualBox相比拖放只能从主机到虚拟机中反过来却不行(但VMware各方面的稳定性真是比VirtualBox强太多了)。

image-20251121202602426

接着开启共享文件夹,和在VirtualBox中一样开启后需要挂载:

sudo vmhgfs-fuse .host:/ /mnt/hgfs -o allow_other -o uid=$(id -u),gid=$(id -g)
#需要先到/mnt目录下创建hgfs文件夹
ls /mnt/hgfs
#应该可以看到宿主机共享的目录。

若要开机自动挂载,同样要在/etc/fstab,添加一行:.host:/ /mnt/hgfs fuse.vmhgfs-fuse allow_other,uid=1000,gid=1000 0 0

然后执行:

sudo systemctl daemon-reload
sudo mount -a

注意:uid=1000,gid=1000 替换为你当前用户的 UID 和 GID(id 命令可以查看)。 现代 VMware + Ubuntu 22.04+ 时,有时 fstab 挂载会报 hint,这是正常的,只要 vmhgfs-fuse 命令能挂载即可。