首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将WSL (Bash )根文件系统移到另一个硬盘上?

将WSL (Bash )根文件系统移到另一个硬盘上?
EN

Stack Overflow用户
提问于 2016-08-05 01:34:12
回答 5查看 106.4K关注 0票数 117

我刚刚把笔记本电脑里的Windows 10升级到Redstone 1,所以我对Linux子系统进行了测试。(Windows上的WSL、LXSS或Bash )。基本上,一切都很好,但存在一个问题,即WSL的RootFS位于%LocalAppData%路径(例如C:\Users\xyz\AppData\Local)中,这也是我的Windows所在的位置。它消耗了大量的SSD硬盘空间在我的笔记本电脑,我希望我可以把它移到我的外部硬盘驱动器。

还有另一个问题。因为其他硬盘分区是以DriveFS的形式挂载的,所以它不支持chmod这样的Linux文件系统特性,而且我的一些Linux项目构建脚本只在VoIFS中工作,而VoIFS只位于//home中。

所以我试着把整个WSL RootFS移动到另一个硬盘上。首先,我尝试为C:\Users\xyz\AppData\Local\lxss建立一个NTFS连接(硬链接)。我已经将WSL完全卸载,并将mklink为RootFS运行到另一个硬盘驱动器,当我再次重新安装WSL时,无法创建新用户,它用代码0x80070003.报告错误。

然后我四处搜索,我得到了这个:移动Linux文件系统-问题#449似乎只有在Windows10Build 14388之前才能移动和制作RootFS的硬链接,而在Windows10Build 14393 RTM中则不能工作。唯一的方法是将整个%LocalAppData%移动到外部硬盘驱动器上,但是我不能这样做,因为我是笔记本用户,而且我不能到处带一个外部硬盘驱动器!

所以我想问一下,有没有其他方法将WSL从我的系统分区中移出?如果我不能这样做,可以在其他地方创建一个额外的VoIFS工作目录并编译我的资料吗?

谢谢和问候,杰克逊

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2018-08-09 13:02:06

如果您使用的是Windows10Version1903(2019年4月更新)或更高版本,则可以使用选项尝试WSL命令行工具。如果您使用的是旧版本的Windows 10,则可以使用lxRunOffline将发行版移动到另一个驱动器。

使用WSL命令行工具

在Windows10Version1903(2019年4月更新)或更高版本中,您可以使用wsl.exe命令行工具。

1.导出发行版.创建一个要使用wsl.exe --export移动的.tar文件

代码语言:javascript
运行
复制
wsl.exe --export <DistributionName> <Tar-FileName>

例如,要导出Ubuntu发行版,可以使用

代码语言:javascript
运行
复制
C:\> wsl.exe --export Ubuntu c:\data\ubuntu.tar

2.将发行版导入目标文件夹。然后,可以将导出的发行版导入到另一个文件夹中。

代码语言:javascript
运行
复制
wsl.exe --import <DistributionName> <Folder-To-Install> <Tar-FileName>

例如,要将导出的Ubuntu导入新的UbuntuCustom发行版,可以使用

代码语言:javascript
运行
复制
C:\> wsl.exe --import UbuntuCustom d:\wsl\UbuntuCustom c:\data\ubuntu.tar

注意:您可以在https://github.com/pxlrbt/move-wsl上检查用于移动使用这些命令的WSL发行版的脚本

使用LxRunOffline

在任何Windows 10版本中,您都可以使用lxRunOffline将发行版移动到另一个驱动器。

1.设置对目标文件夹的权限。首先,,我认为您必须对要移动发行版的文件夹设置一些权限。您可以使用icacls <dir> /grant "<user>:(OI)(CI)(F)"设置适当的权限。

代码语言:javascript
运行
复制
C:\> whoami
test\jaime

C:\> icacls D:\wsl /grant "jaime:(OI)(CI)(F)"

注意:除了上述权限外,我还激活了Windows中的长路径名称

2.使用lxrunoffline move移动发行版.。

代码语言:javascript
运行
复制
C:\wsl> lxrunoffline move -n Ubuntu-18.04 -d d:\wsl\installed\Ubuntu-18.04

您可以使用

代码语言:javascript
运行
复制
C:\wsl> lxrunoffline get-dir -n Ubuntu-18.04
d:\wsl\installed\Ubuntu-18.04

3.运行发行版。移动发行版后,可以使用wsl或相同的lxrunoffline运行发行版。

代码语言:javascript
运行
复制
C:\wsl> lxrunoffline run -n Ubuntu-18.04 -w
user@test:~$ exit
logout

C:\wsl> wsl
user@test:/mnt/c/wsl$ exit
logout
票数 217
EN

Stack Overflow用户

发布于 2017-10-24 20:31:15

WSL不支持将发行版移动或安装到非系统驱动器。然而,这是我们正在探索的未来Windows版本的场景。

注意,从秋季创建者更新(FCU)开始,发行版现在通过Windows存储安装,下载到不同的文件夹中,并扩展到不同的文件夹(即不在%localappdata%\lxss下面)。

NOte:虽然我们正在努力在未来的版本中改进这一场景,但请不要将插入到Windows或Windows应用程序的发行文件夹中:https://blogs.msdn.microsoft.com/commandline/2016/11/17/do-not-change-linux-files-using-windows-apps-and-tools/

票数 9
EN

Stack Overflow用户

发布于 2018-07-13 20:57:19

看看https://github.com/DDoSolitary/LxRunOffline

代码语言:javascript
运行
复制
scoop install lxrunoffline
choco install lxrunoffline
  • 安装时不需要上网。
  • 将任何Linux发行版安装到磁盘上的任何位置。
  • 将现有安装移到其他位置.
  • 复制现有安装的。(创建备份)
  • 注册现有的安装目录。(供便携式使用。)
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38779801

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档