Điểm:1

cách di chuyển ubuntu trong WSL

lá cờ kr

Khi tôi bắt đầu phát triển trong WSL Tôi không biết tại sao, nhưng tôi đã cài đặt Ubuntu-20.04 ứng dụng từ cửa hàng Microsoft thay vì chỉ Ubuntu. Tôi biết rằng sự khác biệt duy nhất là Ubuntu-20.04 sẽ không được cập nhật tự động khi mới Ubuntu phiên bản sẽ được phát hành. Tất cả những gì tôi muốn làm là làm cho Ubuntu giống như Ubuntu-20.04 mà không cấu hình lại nó. Tôi đã nghĩ đến việc di chuyển tất cả các tệp từ Ubuntu-20.04 đến Ubuntu, nhưng tôi không biết nếu làm điều đó là an toàn. Có ai biết làm thế nào để làm những gì tôi đang cố gắng làm? Tôi cũng nên làm điều đó?

chỉnh sửa: cả hai phiên bản Ubuntu đang chạy trên WSL-2 Tôi đã kiểm tra nó bằng cách sử dụng wsl -l -v như @NotTheDr01ds đã nói.

chỉnh sửa 2: Tôi muốn tất cả cấu hình của mình từ Ubuntu-20.04 đến Ubuntu bao gồm tất cả các tệp và gói đã cài đặt

Ilia Manjavidze avatar
lá cờ kr
@ user68186 tất nhiên là tôi có
NotTheDr01ds avatar
lá cờ vn
@ user68186 Điều đó được nêu rõ ràng trong câu hỏi, vì vậy tôi bối rối không biết tại sao bạn lại hỏi điều đó? Chỉnh sửa - Ồ, bạn đang hỏi liệu họ đã cài đặt bản phân phối "Ubuntu" "đơn giản" từ Cửa hàng chưa? Bạn nói đúng, điều đó không rõ ràng trong câu hỏi, nhưng tôi đã tự cho rằng điều đó.
NotTheDr01ds avatar
lá cờ vn
Chào mừng bạn đến với Hỏi Ubuntu. Điều này sẽ khá dễ dàng, tôi tin rằng nếu bạn đang chạy WSL2, nhưng tôi sẽ cần suy nghĩ thêm nếu bạn đang sử dụng WSL1. Bạn có thể thực hiện `wsl -l -v` và xác nhận rằng cả hai bản cài đặt Ubuntu của bạn từ Cửa hàng đều đang chạy WSL2 không? Vui lòng chỉnh sửa câu hỏi của bạn với kết quả của `wsl -l -v` nếu bạn muốn. Cảm ơn!
Ilia Manjavidze avatar
lá cờ kr
@ user68186 bạn có chắc là nó an toàn không?
NotTheDr01ds avatar
lá cờ vn
@ user68186 Tôi khuyên bạn không nên làm điều đó trừ khi OP thực sự biết họ đang làm gì. Quyền/quyền sở hữu/vv sẽ cần phải được xử lý cẩn thận và chắc chắn không nên thực hiện việc này với những thứ như Windows Explorer. Theo WSL2, ít nhất, có một cách dễ dàng/an toàn hơn nhiều.
NotTheDr01ds avatar
lá cờ vn
@IliaManjavidze Ok, gõ câu trả lời dựa trên WSL2, nhưng sẽ hơi lâu. Tôi khá chi tiết :-)
NotTheDr01ds avatar
lá cờ vn
@ user68186 Chắc chắn rồi, nhưng điều đó chỉ nhận được cấu hình *người dùng* từ `$HOME`. Đối với tôi, có vẻ như OP muốn tất cả cấu hình (gói đã cài đặt, cấu hình `/etc/`, v.v.)
NotTheDr01ds avatar
lá cờ vn
@IliaManjavidze Vui lòng xác nhận xem bạn muốn cấu hình *tất cả* hay chỉ cấu hình *người dùng*. Tất nhiên, điểm của user68186 đơn giản hơn nhiều nếu bạn chỉ cần tệp người dùng. Chúng tôi chỉ có thể cung cấp hướng dẫn để nhận các tệp của bạn từ `$HOME` của phiên bản này sang phiên bản khác.
Ilia Manjavidze avatar
lá cờ kr
@NotTheDr01ds Tôi đã chỉnh sửa câu hỏi. Tôi muốn tất cả cấu hình của mình
Điểm:1
lá cờ vn

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:

  1. 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.
  2. 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 (UbuntuUbuntu-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.

Ilia Manjavidze avatar
lá cờ kr
Cảm ơn vì điều này. sau này Nếu lợi thế duy nhất tôi thực sự nhận được là tên ngắn hơn và tên sạch hơn, tôi chỉ có thể thay đổi tên của nó trong thiết bị đầu cuối windows. Nếu bạn không phiền, tôi vẫn quan tâm đến cách nó được thực hiện. Tôi là người mới bắt đầu và tôi không hiểu thực sự nhiều vì vậy cảm ơn bạn :)
NotTheDr01ds avatar
lá cờ vn
@IliaManjavidze Chắc chắn rồi. Tôi đã thêm nó vào câu trả lời. Nó thực sự thú vị và là một điều hữu ích cần biết, IMHO.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.