当前位置: 首页 > 知识库问答 >
问题:

将 WSL(在视窗上为 Bash)根文件系统移动到另一个硬盘驱动器?[已关闭]

包德业
2023-03-14

这个问题似乎不是关于特定的编程问题,软件算法或主要由程序员使用的软件工具。如果您认为该问题将与其他 Stack Exchange 站点的主题相关,则可以发表评论以解释问题可能在哪里可以得到解答。

我刚刚将笔记本电脑中的Windows 10升级到红石1。所以我对Linux子系统进行了测试(又名。WSL、LXSS 或 Windows 上的抨击)。基本上,一切都很好,但是存在一个问题,即WSL的根FS位于%本地应用程序数据%路径(例如C:\用户\xyz\应用程序数据\本地),这也是我的Windows操作系统所在的位置。它消耗了我笔记本电脑中的大量SSD硬盘驱动器空间,我希望我可以将其移动到我的外部硬盘驱动器。

还有另一个问题。由于其他硬盘驱动器分区作为DriveFS挂载,因此它不支持某些Linux文件系统功能,例如chmod,并且我的一些Linux项目构建脚本仅适用于VoIFS,它仅位于//home中。

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

然后我四处搜索,我得到了这个:移动Linux文件系统 - 问题#449。似乎移动和制作 WSL 根目录的硬链接仅在 Windows 10 内部版本 14388 之前有效,在 Windows 10 内部版本 14393 RTM 中不起作用。唯一的方法是将整个%LocalAppData%移动到外部硬盘驱动器,但我不能这样做,因为我是笔记本电脑用户,我不能随身携带外部硬盘驱动器!

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

感谢和问候,杰克逊

共有3个答案

寇景明
2023-03-14

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

scoop install lxrunoffline
choco install lxrunoffline
  • 安装时不需要Internet访问
  • 将任何Linux发行版安装到磁盘上的任何位置
  • 将现有安装移动到其他位置
  • 复制现有安装。(创建备份。)
  • 注册现有安装目录。(用于便携式使用。)
潘文乐
2023-03-14

WSL(当前)不支持将发行版移动或安装到非系统驱动器。但是,这是我们在将来的 Windows 版本中探索的方案。

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

诺特:虽然我们正在努力在将来的 Windows 版本中改进此方案,但请不要从 Windows 或 Windows 应用程序潜入发行版文件夹,否则将保留:https://blogs.msdn.microsoft.com/commandline/2016/11/17/do-not-change-linux-files-using-windows-apps-and-tools/

谯和煦
2023-03-14

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

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

1.导出发行版。创建一个<代码>。tar文件,其中包含要使用< code>wsl.exe - export移动的分发

wsl.exe --export <DistributionName> <Tar-FileName>

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

C:\> wsl.exe --export Ubuntu c:\data\ubuntu.tar

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

wsl.exe --import <DistributionName> <Folder-To-Install> <Tar-FileName>

例如,要将导出的 Ubuntu 导入到新的 Ubuntu自定义发行版中,您可以使用

C:\> wsl.exe --import UbuntuCustom d:\wsl\UbuntuCustom c:\data\ubuntu.tar

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

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

1.设置目标文件夹的权限。首先,我认为您必须为将移动分发的文件夹设置一些权限。您可以使用icacls

C:\> whoami
test\jaime

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

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

2.移动分配。使用lxrunoffline移动

C:\wsl> lxrunoffline move -n Ubuntu-18.04 -d d:\wsl\installed\Ubuntu-18.04

您可以使用检查安装文件夹

C:\wsl> lxrunoffline get-dir -n Ubuntu-18.04
d:\wsl\installed\Ubuntu-18.04

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

C:\wsl> lxrunoffline run -n Ubuntu-18.04 -w
user@test:~$ exit
logout

C:\wsl> wsl
user@test:/mnt/c/wsl$ exit
logout

 类似资料:
  • 我刚刚将笔记本电脑中的Windows 10升级到Redstone 1。因此,我对Linux子系统(aka.WSL、LXSS或Windows上的Bash)进行了测试。基本上,一切正常,但存在一个问题,WSL的RootFS位于路径中(例如),这也是我的Windows操作系统所在的位置。它在我的笔记本电脑上消耗了大量的SSD硬盘空间,我希望我能把它移到外置硬盘上。 还有一个问题。由于其他硬盘分区都挂载为

  • 问题内容: 我正在为当前应用程序开发软件安装程序。需要将其安装到系统硬盘上。我应该如何检测系统驱动器并返回来自Python的字母? win32扩展会有用吗?预装Python的os模块怎么样? 问题答案: 这是如何在Win32平台上返回系统驱动器的盘符: 上面的代码段返回系统驱动器号。就我而言(大多数情况下是在Windows上)C:

  • 我试图将"/var/lib/docker"文件夹从一个磁盘移动到另一个磁盘,因为这占用了太多的空间。我一直遇到一些与权限相关的错误! 根据这些问题: 如何将docker容器的映像移动到永久磁盘 如何在另一个分区上运行docker LXC容器 我的磁盘安装在"/data"上,我将"/var/lib/docker"文件夹复制到"/data/docker" 这就是我所尝试的: 使用“/data/DOCK

  • 我需要过去7天的存储日志来移动一个新文件夹。但是,我不能移动它们,并得到了这个错误。 重命名(/var/www/html/eMarketing/storage/logs/old-log-2020-02-27,/var/www/html/eMarketing/storage/logs/laravel-2020-02-27.log):不是目录 我的密码在这里

  • 本文向大家介绍linux系统下如何挂载NTFS移动硬盘,包括了linux系统下如何挂载NTFS移动硬盘的使用技巧和注意事项,需要的朋友参考一下 前言 数据迁移是我们经常会遇到的,有时候做大数据量迁移时,为了快速迁移大数据,有可能在Linux服务器上临时挂载NTFS格式的移动硬盘, 一般情况下,Linux是识别不了NTFS格式移动硬盘的(需要重编译Linux核心才能,加挂NTFS分区), 这时候为了

  • 我得到以下错误: 线程“main”java.lang.IllegalArgumentException:错误的fs:hdfs:/user/o/datasets/data.txt,应为:file:/// 也是如此,因为它们用于在文件系统之间传输文件,而不是在文件系统内传输文件。我还尝试了,但根本没有任何作用(没有错误或任何东西)。