Tại sao bạn có thể không cần phải làm điều này cả
Ok, điều đầu tiên đầu tiên. Điều này có lẽ là khá không cần thiết.
Việc "Ubuntu" (không có số phiên bản) trong Store tự động cập nhật là... đúng, nhưng thực tế hơi sai lệch.
Điều này hơi khó giải thích, nhưng khi bạn cài đặt "Ubuntu" (không có phiên bản) từ Cửa hàng, bạn thực sự kết thúc với hai nhiều thứ:
Một gói rootfs (cài đặt.tar.gz
) Trong C:\Tệp chương trình\WindowsApps\CanonicalGroup...
. Bạn có thể thấy điều này bằng cách khởi động một PowerShell quản trị và chạy Get-ChildItem -Recurse 'C:\Program Files\WindowsApps\Canonical*' | Đối tượng ở đâu {$_.Name -eq 'install.tar.gz' } | % { $_.DirectoryName }
.
Khi chạy lần đầu tiên (thông qua ubuntu.exe
), trình cài đặt sẽ tạo phiên bản WSL thực tế của bạn trong %UserProfile%\AppData\Local\Packages\CanonicalGroup...
.
Khi có bản phát hành mới trên Cửa hàng, thứ duy nhất được cập nhật là gói rootfs. nó làm không phải thay đổi cài đặt của bạn ví dụ. (Tín dụng và cảm ơn u/zoredache trên Reddit đã giữ nhắc nhở tôi về điều này.)
Điều này khá vô dụng đối với hầu hết người dùng trừ khi bạn:
- Hủy đăng ký phiên bản (xóa tất cả cấu hình) và định cấu hình lại bằng cách chạy lại
ubuntu.exe
chỉ huy.
- Muốn sử dụng cái đó
cài đặt.tar.gz
để tạo phiên bản WSL/Ubuntu thứ hai (sử dụng wsl --nhập khẩu
). Sau đó, phiên bản mới được tạo sẽ sử dụng các rootf được cập nhật trong Cửa hàng.
Cả hai kịch bản này đều rất phổ biến. Ngay cả khi Cửa hàng không phiên bản Ubuntu
được cập nhật lên (có lẽ là) 22.04, nó sẽ không thay đổi Cài đặt phiên bản 20.04, chỉ rootfs bưu kiện.
Bạn vẫn sẽ cần phải chạy một Sudo do-phát hành-nâng cấp -d
khi cuối cùng bạn muốn nâng cấp lên 22.04 (hoặc bản phát hành tạm thời).
Vì vậy, cho rằng ... Vì bạn đã có Ubuntu-20.04
được định cấu hình theo cách bạn muốn, bạn sẽ không có lợi ích gì khi thay đổi nó, ngoài việc nhận được một phiên bản ngắn hơn, gọn gàng hơn Ubuntu
được đặt tên cho phiên bản WSL.
Làm thế nào để làm điều đó dù sao
Điều đó nói rằng, theo cách mà WSL2 lưu trữ dữ liệu của bạn, việc di chuyển các cấu hình xung quanh không khó lắm. Toàn bộ hệ thống tệp cho phiên bản WSL2 được lưu trữ trong ổ cứng ảo có tên ext4.vhdx
.
Vì bạn có hai bản cài đặt Ubuntu (Ubuntu
và Ubuntu-20.04
), bạn sẽ tìm thấy hai trong số này ext4.vhdx
tập tin dưới %userprofile%\AppData\Local\Packages\
. Để có được các vị trí chính xác, hãy chạy phần sau từ PowerShell:
Get-ChildItem "$env:USERPROFILE\AppData\Local\Packages\CanonicalGroupLimited*\LocalState\*"
Đối với cài đặt của tôi, đó là:
...\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\ext4.vhdx
...\CanonicalGroupLimited.Ubuntu20.04onWindows_79rhkp1fndgsc\LocalState\ext4.vhdx
Giải pháp có thể khá rõ ràng vào thời điểm này, nhưng tất nhiên, hãy thận trọng:
Thoát khỏi tất cả các phiên bản WSL đang chạy của bạn.
sau đó wsl --shutdown
để đảm bảo không có gì hiện đang chạy.
Sao lưu cấu hình hiện tại của bạn sẽ không phải là một ý tưởng tồi với wsl --export Ubuntu-20.04 2021-09-26_Ubuntu-20.04_backup.tar
(hoặc bất cứ thứ gì bạn muốn gọi là tệp sao lưu). Về cơ bản, điều này tạo ra một tarball của rootfs hiện tại, bao gồm tất cả các tệp, quyền sở hữu và quyền.
Tại thời điểm đó, chỉ cần sao chép mong muốn của bạn (Ubuntu-20.04) ext4.vhdx
trên cái mới được cài đặt (Ubuntu). Bí quyết thực sự chỉ đơn giản là đảm bảo rằng bạn sao chép đúng. Bạn có thể muốn chạy của bạn Ubuntu-20.04
phân phối và thực hiện thay đổi nhanh để bạn có thể dễ dàng nhìn thấy dấu thời gian sau trên bản sao "đúng".
Yêu cầu thực sự duy nhất là người dùng mặc định cho cả hai trường hợp phải giống nhau.
Một khả năng khác - Vì bạn đã sao lưu cấu hình mong muốn của mình bằng wsl --export
, bạn luôn có thể chỉ wsl --nhập khẩu
đó vào một thể hiện mới có tên Ubuntu
.
- Trước tiên, bạn cần gỡ cài đặt Cửa hàng
Ubuntu
.
- Sau đó, chọn một thư mục cho phiên bản mới của bạn. Nó có thể ở bất cứ đâu và không còn phải sống dưới quyền của bạn.
Dữ liệu chương trình
danh mục.
wsl --nhập đường dẫn <thư mục> Ubuntu\đến\2021-09-26_Ubuntu-20.04_backup.tar --version 2
tôi giữ của tôi trong %userprofile%\Documents\WSL\instance
và của tôi hắc ín
sao lưu trong %userprofile%\Documents\WSL\hình ảnh
. Điều đó cho phép tôi nhanh chóng tạo ra các phiên bản mới thông qua wsl --nhập khẩu
. Thật tuyệt khi có thể thử nghiệm thứ gì đó mà không ảnh hưởng đến môi trường hàng ngày của tôi.
Lưu ý cho bất kỳ người dùng WSL1 nào đọc phần này. Rootfs cho WSL1 không được lưu trữ trong tệp ổ cứng ảo mà dưới dạng các tệp và thư mục thực trong ...\LocalState\rootfs\
. Vui lòng không truy cập trực tiếp các tệp này vì nó có thể dễ dàng gây ra lỗi hệ thống tệp WSL (xem blog nhà phát triển của Microsoft).
Nếu bạn chỉ cần truy cập các tệp từ Windows, hãy sử dụng \wsl$\<bản phân phối>
đường dẫn trong Windows như đã lưu ý trong blog của Microsoft đó. Nhưng nếu bạn cần sao chép toàn bộ nội dung, như trong câu hỏi này, cách tốt nhất là chuyển đổi phiên bản sang WSL2 trước, thông qua wsl --set-phiên bản <distro> 2
(làm một wsl --export
sao lưu trước). Sau khi chuyển đổi, hệ thống tệp sẽ ở dạng WSL2 ext4.vhdx
định dạng.