给你的WSL2瘦瘦身

本文介绍了如何备份并迁移WSL2的home目录以解决C盘空间不足的问题。首先,通过备份VHD文件实现数据安全,然后通过导入VHD文件到非C盘位置或者直接挂载新的VHD作为home目录,实现磁盘空间优化。此外,文章还提供了修改默认用户和设置开机自动挂载的步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

WSL2 home目录迁移

参考:https://learn.microsoft.com/zh-cn/windows/wsl/basic-commands
参考:https://learn.microsoft.com/zh-cn/windows/wsl/wsl2-mount-disk

有了WSL2加持的windows,说其是最好的Linux桌面发行版一点也不过分。但是,WSL2虽好,奈何C盘不够大。怎么办呢?作为一名优秀的工程师(ban zhuan gong),当然是有问题解决问题了。

动手第一步第一步,永远都是备份啦!!!

1. 备份当前WSL

WSL2使用虚拟硬盘文件 (VHD)文件来存储所有数据,所以备份很简单,只需要找到这个文件,备份它就可以了。

每个 WSL 2 发行版都通过名为 ext4.vhdx 的虚拟硬盘文件进行存储。 默认情况下,WSL 2 发行版的 VHD 存储在以下路径中:C:\Users\[user]\AppData\Local\Packages\[distro]\LocalState\[distroPackageName],请谨慎访问这些系统文件,这是一个高级用户工作流。 确保在与该磁盘交互之前运行 wsl --shutdown 以确保该磁盘未被使用。

Tips:如果找不到怎么办,别忘了好用的搜索工具:Everything

wsl -l -v
# wsl --shutdown -d <Distribution Name>
wsl --shutdown -d Ubuntu-18.04
# cp 原ext4.vhdx文件 新ext4.vhdx文件
cp C:\Users\landa\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu18.04LTS_79rhkp1fndgsc\LocalState\ext4.vhdx H:\bak\ext4.vhdx

2. 不太推荐的懒方法

其实玩过虚拟机的都知道,直接导入刚才拷贝出来的ext4.vhdx应该也是可以的,因为这个文件现在不在C盘,就不会占用C盘的空间了,但是呢,这样导入的用起来还是又诸多不方便,比如退出后整个WSL2就退出了,下次又得重新来过。不过,这里还是简单的写下方法:

  • 切记,不要再刚才的备份文件上直接干!!!

2.1 从vhdx文件导入WSL

mkdir H:\wsl\Ubuntu18.04
cp H:\bak\ext4.vhdx H:\wsl\Ubuntu18.04
wsl --update
# wsl --import-in-place <Distribution Name> <FileName>
wsl --import-in-place Ubuntu .\ext4.vhdx

参考:https://learn.microsoft.com/zh-cn/windows/wsl/basic-commands#import-a-distribution-in-place

2.2 启动测试

# wsl -d <Distribution Name>
wsl -d Ubuntu

你会发现默认是用root用户启动的,所以我们可能还想改回原来的默认用户

2.3 改默认用户

参考:https://learn.microsoft.com/zh-cn/windows/wsl/use-custom-distro#add-wsl-specific-components-like-a-default-user

# myUsername=caloewen
# adduser -G wheel $myUsername
# echo -e "[user]\ndefault=$myUsername" >> /etc/wsl.conf
# passwd $myUsername

echo -e "[user]\ndefault=limu" >> /etc/wsl.conf
wsl --terminate Ubuntu
wsl -d Ubuntu

3. 优雅的迁移方法

我们采用给原WSL瘦身,然后mount非C盘的vhdx文件来作为WSL2的home目录,这样既能保留原有方便的操作,还能解决磁盘不够用的问题。

3.1 原WSL瘦身

3.1.1 删除原WSL2的home目录下的大文件
# rm -rf /home/limu/*
3.1.2 WSL 关机
wsl -l -v
wsl --shutdown -d Ubuntu-18.04
3.1.3. 压缩

参考:https://learn.microsoft.com/zh-cn/windows/wsl/disk-space#how-to-expand-the-size-of-your-wsl-2-virtual-hard-disk

在 PowerShell 中执行

diskpart

在diskpart程序中,选择要压缩的ext4.vhdx文件

# 选择虚拟磁盘文件
select vdisk file="C:\Users\landa\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu18.04LTS_79rhkp1fndgsc\LocalState\ext4.vhdx"
# 压缩文件
compact vdisk
# 压缩完毕后卸载磁盘
detach v

3.2 挂载新的vhdx文件来作为WSL2的home目录

wsl --mount --vhd H:\wsl\Ubuntu18.04\ext4.vhdx

powershell中执行上面的命令后,就可以将文件挂载到WSL的/mnt/wsl/路径下,但是每次开机都手动执行太麻烦,所以建议加入开机自动挂载。

3.2.1加入开机自动挂载

win+E 打开资源管理器,在地址栏输入 shell:startup
创建一个bat文件,将上面的命令写入。

3.2.2创建软连接,替换原home目录
wsl -d Ubuntu
cd /home
sudo mv limu limu_bak
sudo ln -s /mnt/wsl/HwslUbuntu1804ext4vhdx/home/limu/ limu

至此,替换完成,可以愉快的继续coding了。

### 解决 Docker 使用 Slim 镜像构建失败的方法 当使用 `docker-slim` 工具来优化和减小 Docker 镜像时,可能会遇到一些特定的问题。以下是针对这些问题的解决方案: #### 1. 确认环境配置正确 确保安装了最新版本的 `docker-slim` 并且其命令可以在终端中正常运行。如果是在 Windows 或 macOS 上操作,则需确认已设置好 WSL2 或者通过 Homebrew 安装。 ```bash docker-slim version ``` #### 2. 检查基础镜像兼容性 并非所有的官方或自定义的基础镜像都支持被 `docker-slim` 进行瘦身处理。对于某些特殊的应用程序和服务端口映射情况,可能需要调整参数或者寻找替代方案[^2]。 #### 3. 调整构建选项 有时默认的构建选项不适合项目需求,在这种情况下可以尝试修改相关标志位以适应具体情况。例如关闭 HTTP 探针功能(`--http-probe=false`) 可能会帮助绕过网络连接错误。 ```bash docker-slim build --target myapp:v1 \ --tag myapp:v1-slim \ --http-probe=false ``` #### 4. 查看详细的日志输出 增加 verbosity 参数可以让工具提供更详尽的日志记录以便于排查问题所在。这有助于识别潜在的原因并采取相应措施加以修正。 ```bash docker-slim build --verbose=true ... ``` #### 5. 更新至最新版软件包 保持使用的 Docker 和其他依赖组件处于最新的稳定状态非常重要,因为开发者经常会修复旧版本中存在的 bug 来提升稳定性与安全性。 #### 6. 测试最小化案例 创建一个尽可能简单的测试场景来进行验证可以帮助定位具体哪个部分出现了状况。这样也可以更容易地向社区寻求帮助和支持。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值