找回磁盘中的WSL内容

发布时间:2026/6/27 12:16:31
找回磁盘中的WSL内容 找回磁盘中的WSL内容可能全网找不到第二个人了新买了个固态将原来的固态改成存储盘了但是wsl没有备份出来幸好旧固态的数据还没有格式化那就还有的救1.找到wsl的虚拟磁盘首先找到之前固态中的wsl的虚拟磁盘一般名字就是ext4.vhdxWSL 系统包括 Ubuntu 系统、写的所有 Python 代码、还有 Anaconda 环境其实都打包在一个名为ext4.vhdx的虚拟硬盘文件里。它就像一个保险箱只要找到它就能打开取回所有东西。这个文件通常藏在旧系统盘的这里X:\Users\你的用户名\AppData\Local\Packages\发行版文件夹\LocalState\直接everything搜索2.在新系统中安装wsl具体步骤见上一个帖子W11中装WSL2-CSDN博客3.导入旧系统还是管理员身份在powershell命令行窗口中输入wsl --import-in-place Ubuntu xxx(你的ext4.vhdx路径)执行后检查一下wsl-l-v可以看到非常完美的一个结果进入检查一下以root管理员身份成功计入4.检查一下旧Ubuntu中原先的程序和环境大概率不是在root环境下进行的是创建了自己的账号那么就要去home中找cd/homels我的环境也不是在root账号下创建的所以直接执行which conda和conda env list都找不到我的环境是在普通用户下用anaconda安装的所以直接去文件夹/home/dami9w_u20/anaconda3下面找再测试一下/home/dami9w_u20/anaconda3/bin/conda env list一切正常的不过我不准备把这个环境配置出来让root也可以用我只需要保证环境和程序在就行了5.导出旧Ubuntu中的环境转换成我的账号然后备份一下su- xxx(我的账号名字)进入要备份的虚拟环境中conda activate xxx(虚拟环境名字)环境导出condaenvexport--no-builds~/xxx.yml(虚拟环境名字.yml)# 这样是完整版导出安装包列表不知道有没有用conda list--explicitpointcept.txt再导出pippip freezepointcept_pip.txt上面是完整版下面是精简版conda env export --from-history ~/pointcept_history.yml#这样只导出手动安装的conda包不导出平台相关依赖 conda run -n pointcept pip freeze ~/pointcept_pip.txt#导出通过pip安装的依赖6.新Ubuntu中安装miniconda到新的wsl中新的Ubuntu中首先安装miniconda原本我使用的是anaconda但是好像现在更推荐miniconda更新系统sudoaptupdatesudoaptinstallwgetbzip2-y下载安装包wgethttps://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh下载的时候遇到了熟悉的403 Forbidden解决方案1镜像网站下载wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-latest-Linux-x86_64.sh解决方案2直接用代理见最后配置网络章节安装bashMiniconda3-latest-Linux-x86_64.sh安装过程中直接依次yes,回车安装到默认地址/home/你的用户名/miniconda3,yes检查安装是否成功~/miniconda3/bin/conda --version初始化conda~/miniconda3/bin/conda --versionsource~/.bashrc检查conda--version一切正常7.复制旧Ubuntu环境配置直接利用windows文件系统中转复制旧Ubuntu-windowscp~/conda_backup/*.yml /mnt/d/WSL_Backup/windows-新Ubuntucp/mnt/d/WSL_Backup/*.yml ~/8.创建环境直接在备份的基础上创建condaenvcreate-fxxx.yml(虚拟环境名字.yml)检查condaenvlist这个active和forzen好像是新出的。如果某个环境被管理员锁定不能安装、升级、删除软件包它前面就会显示forzen前面的符号当前所在环境会显示activate前面显示的符号然后就可以激活正常使用激活命令conda activate xxx(虚拟环境名字)然后就是常规验证先验证python版本python --version然后验证pytorch是否成功安装python -c import torch; print(torch.__version__)验证GPU是否可用python -c import torch; print(torch.cuda.is_available())验证cuda版本python -c import torch; print(torch.version.cuda)9.最后有关pip安装的依赖部分首先筛掉grep -v ~/pointcept_pip.txt ~/pip_clean.txt再进一步过滤 conda 已装的基础包grep -vE numpy|scipy|torch|yaml|tqdm|tensorboard|h5py ~/pip_clean.txt ~/pip_clean2.txt检查一下筛选后的内容pip install -r ~/pip_clean2.txt这里注意有关旧旧环境路径的部分也是要删掉的不然可能会报错比如我需要删掉的旧路径是/home/point|pointgroup_opsgrep -vE ^#|^-e |/home/point|pointgroup_ops ~/pip_clean2.txt ~/pip_final.txt检查grep -E ^-e|/home/point|pointgroup_ops ~/pip_final.txt正常情况下这里不会有任何输出没有问题后进入虚拟环境中conda activate xxx(虚拟环境名)安装pip基础工具python -m pip install --upgrade pip安装清理后的pip包pip install -r ~/pip_clean2.txt10.个人特例情况torch_scatter单独安装首先我的torch_scatter是删除了备份中的内容重新安装的因为怕出现备份中版本不是我需要的问题删除的命令sed -i /^- pytorch-scatter/d ~/pointcept_history.yml单独安装的命令pip install pyg_lib torch_scatter torch_sparse torch_cluster \ -f https://data.pyg.org/whl/torch-2.1.0cu118.html安装pip命令下载的依赖在pip中为了保险起见首先安装了比较重要的部分pip install spconv-cu1182.3.6 cumm-cu1180.4.11 open3d0.19.0 pointops1.0然后再安装其他部分pip install -r ~/pip_final.txt如果这一步出现版本冲突可以改用pip install -r ~/pip_final.txt --no-deps出现spconv没有成功安装的情况先试一下强制重装pip install --no-cache-dir spconv-cu1182.3.6 cumm-cu1180.4.11验证python -c import cumm; import spconv; print(spconv ok)最终检查一下python -c import torch; print(torch.__version__, torch.version.cuda, torch.cuda.is_available()) python -c import spconv, open3d, torch_scatter, torch_sparse, torch_cluster; print(core deps ok)单独安装pointgroup_ops依赖另外我需要用wsl跑PTV3其中有一个依赖pointgroup_ops是需要单独处理的需要在我的项目中进行安装cd ~/Projects/PointTransformerV3-main/Pointcept/libs/pointgroup_ops python setup.py install出现问题更新一下安装编译工具链sudo apt update sudo apt install -y build-essential但是执行第二步的时候WSL 里的 apt 网络被卡住了又检查了一下网络没问题ping 8.8.8.8 -c 3ping的通所以我们换一个方法直接走 conda 编译工具链conda install -c conda-forge compilers cmake ninja make -y然后检查which g g --version一切正常但是g版本太高降版本conda install -c conda-forge gcc11 gxx11 -y强制切换export CC/home/dami9w/miniconda3/envs/pointcept/bin/x86_64-conda-linux-gnu-gcc export CXX/home/dami9w/miniconda3/envs/pointcept/bin/x86_64-conda-linux-gnu-g再次检查gcc --version g --version但是还是报错继续修版本问题conda install -c nvidia cuda-toolkit11.8 cuda-cudart-dev11.8 -y然后设置环境变量export CUDA_HOME$CONDA_PREFIX export PATH$CUDA_HOME/bin:$PATH export LD_LIBRARY_PATH$CUDA_HOME/lib64:$LD_LIBRARY_PATH export CC$CONDA_PREFIX/bin/x86_64-conda-linux-gnu-gcc export CXX$CONDA_PREFIX/bin/x86_64-conda-linux-gnu-g验证头文件是否存在find $CONDA_PREFIX -name cuda_runtime.h find $CONDA_PREFIX -name cuda_runtime_api.h如果能找到再重新编译cd ~/program/PointTransformerV3/Pointcept/libs/pointgroup_ops rm -rf build python setup.py build_ext --inplace出现报错fatal error: google/dense_hash_map: No such file or directory这说明pointgroup_ops依赖google sparsehash缺少头文件google/dense_hash_map直接用 conda 安装 sparsehashconda install -c conda-forge sparsehash -y然后确认头文件存在find $CONDA_PREFIX -path *google/dense_hash_map正常应该能看到类似然后重新编译pointgroup_opscd ~/program/PointTransformerV3/Pointcept/libs/pointgroup_ops rm -rf build python setup.py build_ext --inplace验证python -c import pointgroup_ops_cuda; print(pointgroup_ops_cuda OK)如果安装成功但是验证失败可能是动态库路径的问题执行下面的命令然后再次验证export LD_LIBRARY_PATH$CONDA_PREFIX/lib/python3.8/site-packages/torch/lib:$CONDA_PREFIX/lib:$LD_LIBRARY_PATH如果 OK把它写入~/.bashrcecho export LD_LIBRARY_PATH$CONDA_PREFIX/lib/python3.8/site-packages/torch/lib:$CONDA_PREFIX/lib:$LD_LIBRARY_PATH ~/.bashrc再补包装层cat ~/program/PointTransformerV3/Pointcept/libs/pointgroup_ops/pointgroup_ops.py PY from pointgroup_ops_cuda import ballquery_batch_p, bfs_cluster __all__ [ballquery_batch_p, bfs_cluster] PY再验证export PYTHONPATH$HOME/program/PointTransformerV3/Pointcept/libs/pointgroup_ops:$PYTHONPATH python -c import pointgroup_ops; print(pointgroup_ops OK)最后安装python setup.py install一切正常了让人泪目检查一下python -c import pointgroup_ops, pointgroup_ops_cuda; print(pointgroup OK) python -c import pointops; print(pointops OK)配置网络1.进入window的用户目录C:\Users\Administrator创建一个配置文件.wslconfig[wsl2] networkingModemirrored dnsTunnelingtrue autoProxytrue firewalltrue会自动安装一个WSL Setting应用然后在power sell中更新一下wsl --shutdown代理中的信息如下重新打开Ubuntu检查env | grep -i proxy如果看到类似于http_proxyhttp://127.0.0.1:7897 https_proxyhttp://127.0.0.1:7897这里的地址就是上面代理显示的地址说明autoProxy 已经生效。如果没有那么继续手动设置即使 autoProxy 生效也可以export http_proxyhttp://127.0.0.1:7897 export https_proxyhttp://127.0.0.1:7897 export HTTP_PROXY$http_proxy export HTTPS_PROXY$https_proxy最终测试curl https://www.google.com记得在最终测试之前打开代理工具中的虚拟网卡设置不然上面配好了也用不了代理哇