1. ホーム
  2. windows

[解決済み] WSL (Bash on Windows) のルートファイルシステムを別のハードディスクに移動する?

2023-01-07 06:27:21

質問

私のノートパソコンの Windows 10 を Redstone 1 にアップグレードしました。そこで、Linux サブシステム (別名 WSL、LXSS、または Windows 上の Bash) のテストを行いました。基本的にはすべてうまくいっているのですが、WSL の RootFS が %LocalAppData% のパス(例えば C:\Users\xyz\AppData\Local ) で、これは私のWindows OSが置かれている場所でもあります。これは、私のラップトップの SSD ハード ドライブ スペースの多くを消費しているので、外付けハード ドライブに移動できることを望んでいます。

もうひとつの問題があります。他のハード ドライブ パーティションは DriveFS としてマウントされているため、次のような Linux ファイルシステムの機能をサポートしていません。 chmod にしかない VoIFS でしか動作しないため、私の Linux プロジェクト ビルド スクリプトのいくつかは //home .

そこで、WSL RootFS全体を別のハードディスクに移動してみました。まず、NTFSのJunction(ハードリンク)で C:\Users\xyz\AppData\Local\lxss . WSLを完全にアンインストールしてから mklink を別のハードディスクにRootFSして、再度WSLを再インストールすると 新しいユーザを作成できず、コード0x80070003でエラーが報告されます。

その後、いろいろ検索してみたら、こんなのが出てきました。 Linux ファイルシステムの移動 - issue #449 . WSL RootFS の移動とハードリンクの作成は Windows 10 Build 14388 より前のバージョンでのみ動作するようで、Windows 10 Build 14393 RTM では動作しないようです。 唯一の方法は、全体の %LocalAppData% を外付けハードディスクに移すしかないのですが、ノートPCユーザーなので、どこにでも外付けハードディスクを持っていけるわけではないので、それはできません

そこでお聞きしたいのですが、WSL をシステム パーティションから移動させる他の方法はありますか。もしそれができないなら。 私はいくつかの他の場所で余分なVoIFS作業ディレクトリを作成し、私のものをコンパイルすることはできますか?

ありがとうございます、よろしくお願いします。 ジャクソン

どのように解決するのですか?

Windows 10 バージョン 1903 (April 2019 Update) 以降を使用している場合は、WSL コマンドラインツールを使用して、次のように試してみてください。 exportimport オプション . 古いバージョンの Windows 10 を使用している場合は、次の方法で配布物を別のドライブに移動することができます。 lxRunOffline .


WSLコマンドラインツールの使用

Windows 10 バージョン 1903 (April 2019 Update) 以降では、コマンドラインツールとして wsl.exe のコマンドラインツールを使用します。

1. ディストリビューションをエクスポートします。 を作成します。 .tar ファイルを作成し、移動するディストリビューションを 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 を新しい UbuntuCustom ディストリビューションを作成するには

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

注意 これらのコマンドを使う WSL ディストロを移動するためのスクリプトを、以下のサイトで確認することができます。 https://github.com/pxlrbt/move-wsl


LxRunOfflineの使用方法

Windows 10 のどのバージョンでも、配布物を別のドライブに移動するには、次のようにします。 lxRunOffline .

1. 対象フォルダのパーミッションを設定します。 まず、配布物の移動先のフォルダにパーミッションを設定する必要があると思います。そのためには icacls <dir> /grant "<user>:(OI)(CI)(F)" を使用して適切なパーミッションを設定します。

C:\> whoami
test\jaime

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

注:上記のパーミッションに加え、私は Windows で長いパス名 .

2. ディストリビューションを移動します。 使用方法 lxrunoffline move .

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