在 Windows 11 (Ubuntu WSL) 安裝 Anbox

在 Windows 11 (Ubuntu WSL) 安裝 Anbox

我使用以下命令在 Windows 11 上成功安裝了 Ubuntu WSL本指南沒有任何問題。但是,當我嘗試按照以下步驟安裝 Anbox 時官方網站,我不斷收到這樣的錯誤:

error: cannot communicate with server: Post http://localhost/v2/snaps/anbox: dial unix /run/snapd.socket: connect: no such file or directory

System has not been booted with systemd as init system (PID 1). Can't operate. Failed to connect to bus: Host is down

然後我嘗試了這個解決方案:

# This part adds the Microsoft repository to install dotnet-runtime, which you need for `systemd-genie`
wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
rm packages-microsoft-prod.deb
# This part installs the .NET runtime
sudo apt-get update; \
  sudo apt-get install -y apt-transport-https && \
  sudo apt-get update && \
  sudo apt-get install -y aspnetcore-runtime-6.0
# This part adds the transdebian repository, which contains systemd-genie
wget -O /etc/apt/trusted.gpg.d/wsl-transdebian.gpg https://arkane-systems.github.io/wsl-transdebian/apt/wsl-transdebian.gpg

chmod a+r /etc/apt/trusted.gpg.d/wsl-transdebian.gpg

cat << EOF > /etc/apt/sources.list.d/wsl-transdebian.list
deb https://arkane-systems.github.io/wsl-transdebian/apt/ $(lsb_release -cs) main
deb-src https://arkane-systems.github.io/wsl-transdebian/apt/ $(lsb_release -cs) main
EOF
#This part installs systemd-genie
sudo apt update
sudo apt install -y systemd-genie
# This part adds a script to `~/.profile` to automatically start genie every time you start up bash.
echo "# Are we in the bottle?
if [[ ! -v INSIDE_GENIE ]]; then
  read -t 3 -p 'yn? * Preparing to enter genie bottle (in 3s); abort? ' yn
  echo

  if [[ $yn != y ]]; then
    echo 'Starting genie:'
    exec /usr/bin/genie -s
  fi
fi
" >> ~/.profile
# Restart bash
exec bash

下次我啟動 Ubuntu WSL 時,在運行任何命令之前我得到了這個:

-bash: /root/.profile: line 15: conditional binary operator expected
-bash: /root/.profile: line 15: syntax error near `y'
-bash: /root/.profile: line 15: `  if [[  != y ]]; then'

當我嘗試按照以下步驟操作時安盒我得到這些:

/dev/binder$: command not found
-bash: /dev/ashmem: No such file or directory
$: command not found

我究竟做錯了什麼?

PS:這個問題最初發佈於堆疊溢位但被強制關閉。

PS:我的技術背景極為有限。謝謝

答案1

我的技術背景極為有限

不用擔心,這實際上是有用的信息。至少對我有幫助嘗試提供與您的經驗水平相符的答案。也就是說,背後的原因相當技術性,但到目前為止,您已經在嘗試解決其中一些問題方面做得很好。

我認為您已經發現,您看到的前兩個錯誤都是因為 WSL 不支援 Systemd(因此不支援 Snap)。這也許是人們在嘗試將其用作「真正的」Linux 系統的一對一替代品時遇到的最大挑戰之一。

Systemd 是大多數 Linux 發行版的「標準」初始化系統,但 WSL 使用自己的系統/init作為啟動,出於充分的原因,我不會在這裡詳細介紹。

但這確實意味著一些需要 Systemd 的軟體如果不做額外的努力就無法在 WSL 上運作。 快照是一種利用 Systemd 將軟體安裝到 Linux 中的方法。

作為Anbox安裝指南提到:

要安裝 Anbox,您的系統需要支援 snap。目前我們不正式支援 Anbox 的任何其他發行版方法,但有社群為各種發行版製作的軟體包(例如 Arch Linux),但...

WSL 上有一些針對 Systemd/Snap 支援的解決方法,Genie(您的第二次嘗試)就是其中之一。這就是說,我思考您正在使用一些過時的說明來安裝 Genie。查看精靈 github了解最新情況。

基於對我原來答案的評論:

@moyadin *我在 windowscentral.com 上發布的這個連結是為了用 Google 商店取代亞馬遜商店。我在這方面取得了成功。

哇——我印像很深刻,因為那是非常技術性的;-)。我最初以為您指的是僅使用該指南來安裝 WSL2。我現在瀏覽了一下以了解您所做的事情。

如果您正在運行該程序,那麼您正在使用 WSA(Android 的 Windows 子系統)的早期(但經過修改)版本,據我所知應該被隔離,因為它運行在像 WSL2 這樣的虛擬機器中。我自己可能不會遵循該特定指南,因為它涉及一些相當「測試版」的技術,而這些技術尚未設計為在 Windows 11 的「正常」版本上運行。但是,對於我的系統,我非常保守。

另一方面,我可能會在我擁有的 Windows 11 虛擬機器中嘗試一下。

我昨天花了一些時間嘗試在 WSL2 上安裝 Anbox,但沒有成功。至少,你必須擁有:

  • Systemd 的運作程度比我好

  • 據我所知,您需要構建自己的內核並支持Anboxbinderashmem核心模組。據我所知,我在這方面是成功的,但確實需要兩次嘗試才能正確完成。

  • 將 WSL2 設定為使用您的自訂核心(我再次成功完成此操作並驗證了 Anbox 模組是否正確載入)。

  • 安裝 Anbox——當我曾是雖然我能夠在 WSL2 上安裝 Snap,但實際運行它時並不成功,而且我 95% 確定這仍然是由於 Systemd 問題造成的。

    如果我花更多的時間,我可能會成功,但我仍然需要執行下一步才能進入 Play 商店...

  • 運行一個非常複雜的腳本。我在文章中發現了這一點,這很諷刺有趣Anbox:如何安裝 Google Play 商店並啟用 ARM (libhoudini) 支持,簡單的方法。在說這是最簡單的方法之後,他們(正確地)告訴你:

    警告:在不知道腳本用途的情況下,切勿執行不是您編寫的腳本。在運行此腳本之前,請檢查其程式碼。不幸的是,理解該腳本正在做什麼需要高的Linux 知識程度。

但如果 Anbox 需要那麼多大量的工作,那麼我會忽略整件事。

我想說這是正確的選擇。我的建議是(a)堅持您正在運行的內容(b)它可能與 Anbox 解決方案一樣好或更好(並且同樣安全)。

我的最終目標是在隔離環境中下載 Android 應用程序,在該環境中應用程式無法存取所有內容(例如從 Microsoft Store 下載的應用程式),而 VMware 上的 Android x86 是我目前使用的選項。

好吧,如果您確實擁有 Windows Central 記錄的 WSA 選項,那麼這很可能同樣安全。我相信微軟會在接近發佈時發布更多有關 WSA 的架構信息,但他們表示它在虛擬機器中運行。我猜它的架構與 WSL2 非常相似。

我們什麼真的正在等待WSA釋放由微軟。然後,希望我們能有一些更好的選擇(儘管仍然不受支援)來使用 Google Play 商店。

相關內容