將 WSL 的檔案移到別顆硬碟

微軟針對 Windows 10、Windows 11 所推出的 WSL(Windows Subsystem for Linux),在 Heresy 來看,是一個很方便的跨平台開發工具;他雖然還是有一些缺點、不完備的地方在,但是如果是想在 Windows 的機器上進行一些 Linux 的測試,也算是當足夠了~

目前微軟預設是會將 WSL 的檔案放在系統磁碟機、也就是 C 槽裡,路徑是「C:\Users\Heresy\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc」這樣的形式;主要的檔案會是這個資料夾下的「LocalState\ext4.vhdx」這個虛擬磁碟機的檔案。

正常狀況下,這樣用不會有什麼問題,但是如果系統磁碟太小的話,可能就會因為空間不足,想要把這個相對大的檔案移到別的磁碟機放了。尤其是當要在 WSL 裡面玩的東西越來越多的時候,這件事就非常可能發生了。

而透過微軟提供的「WSL」這個命令(官方文件),也算是可以手動完成這樣的操作。

要將 WSL 中特定的 Linux distribution 轉移到別的位置,基本上的概念就是先把他匯出成一個 tar 檔,然後再透過指定匯入位置的方式,把它重新匯入。

比如說,如果想要把 WSL 裡的「Ubuntu」這個 distribution 放到「d:\Ubuntu」的話,則可以透過下面的指令來完成:

wsl --export Ubuntu d:\ubuntu.tar
wsl --unregister Ubuntu
mkdir d:\Ubuntu
wsl --import Ubuntu d:\ubuntu d:\ubuntu.tar
del d:\ubuntu.tar

這邊基本上就是:

  1. 將「Ubuntu」這個 distribution 匯出成「d:\ubuntu.tar」這個檔案
  2. 刪除 WSL 中的「Ubuntu」(剛剛匯出的)
  3. 建立「d:\Ubuntu」這個資料夾
  4. 將「d:\ubuntu.tar」匯入 WSL、把資料放在「d:\Ubuntu」這個資料夾,名稱登記成「Ubuntu」
  5. 把「d:\ubuntu.tar」這個檔案刪除(也可以留下來做備份)

基本上,這樣就算是完成了。(話說,匯入完後其實也只有「ext4.vhdx」這個檔案)

不過,如果馬上開啟剛匯入的 WSL 的話,似乎會變成是透過「root」帳號登入。

如果想要設定預設的使用者帳號的話,則是需要透過修改 Windows 的 registry 來完成;機碼的位址是「HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Lxss」。

再進到裡面後,需要先找到要修改的 distribution,然後把「DefaultUid」這個 REG_DWORD 的值改成十進位的 1000(或是十六進位的 3e8)。

如此一來,之後再開啟 WSL 的時候,他就會用本來的預設帳號來登入了。


參考:《Move WSL to Another Drive

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *