Я успешно установил Ubuntu WSL на Windows 11 с помощьюэто руководствобез каких-либо проблем. Однако, когда я пытаюсь установить 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 (и, следовательно, не поддерживает Snaps). Это, возможно, одна из самых больших проблем, с которой сталкиваются люди, пытающиеся использовать его в качестве полной замены «настоящей» системы Linux.
Systemd — это «стандартная» система инициализации для большинства дистрибутивов Linux, но WSL использует свою собственную /init
систему запуска, и на то есть веские причины, в которые я не буду здесь вдаваться.
Но это означает, что некоторое программное обеспечение, которое ожидает Systemd, просто не будет работать на WSL без дополнительных усилий. Снимкиэто способ установки программного обеспечения в Linux, использующий Systemd.
КакРуководство по установке Anboxупоминает:
Для установки Anbox ваша система должна поддерживать snaps. На данный момент мы официально не поддерживаем другие методы распространения Anbox, но существуют пакеты, созданные сообществом для различных дистрибутивов (например, Arch Linux), но ...
Существуют обходные пути для поддержки Systemd/Snap в WSL, и Genie, который был вашей второй попыткой, является одним из них. Тем не менее, ядуматьвы используете устаревшие инструкции по установке Genie. ПроверьтеДжинн githubдля получения последних новостей по этому вопросу.
На основании комментариев к моему первоначальному ответу здесь:
@moyadin *Эта ссылка, которую я разместил windowscentral.com, предназначена для замены Amazon's Store на Google's Store. В этом отношении мне это удалось.
Ого -- я весьма впечатлен, так как это чертовски технично ;-). Сначала я думал, что вы имеете в виду просто использование этого руководства для установки WSL2. Я просмотрел его сейчас, чтобы понять, что вы сделали.
Если он у вас запущен, то вы используете раннюю (но модифицированную) версию WSA (подсистема Windows для Android), которая, насколько я могу судить,долженбыть изолированным, поскольку он работает в виртуальной машине, такой как WSL2. Я, вероятно, не буду следовать этому конкретному руководству сам, поскольку оно включает в себя некоторую довольно "бета"-технологию, которая пока не предназначена для работы на "обычной" версии Windows 11. НО я очень консервативен, когда дело касается моей системы.
С другой стороны, я мог бы попробовать это на имеющейся у меня виртуальной машине Windows 11.
Вчера я потратил некоторое время на попытки установить Anbox на WSL2, но у меня ничего не получилось. По крайней мере, вам нужно иметь:
Systemd работает лучше, чем я
Насколько я могу судить, вам нужно собрать собственное ядро с поддержкойAnbox
binder
иashmem
модули ядра. Насколько я могу судить, мне это удалось, но потребовалось две попытки, чтобы сделать все правильно.Настройте WSL2 на использование вашего собственного ядра (опять же, я успешно это сделал и проверил, что модули Anbox загрузились правильно).
Установите Anbox — Пока ябылсмог установить Snap на WSL2, но мне не удалось его запустить, и я на 95% уверен, что это все еще из-за проблем Systemd.
Если бы я потратил на это больше времени, то, возможно, я бы добился успеха, но тогда мне все равно пришлось бы сделать следующий шаг, чтобы попасть в Play Store...
Запустите очень сложнуюсценарий. Забавно, что я нашел это в статье.Anbox: как установить Google Play Store и включить поддержку ARM (libhoudini), простой способ. И после того, как они сказали, что это легкий путь, они говорят вам (и это правильно):
Предупреждение: никогда не запускайте скрипт, который вы не написали, не зная, что он делает. Перед запуском этого скрипта проверьте его код. К сожалению, понимание того, что делает этот скрипт, требуетвысокийстепень знания Linux.
Но если для Anbox потребуется проделать такую большую работу, то я просто проигнорирую всю эту затею.
Я скажу, что это правильный выбор. Я бы рекомендовал (a) придерживаться того, что у вас запущено (b) оно, вероятно, так же хорошо или лучше (и так же безопасно, как) решение Anbox.
Моя конечная цель — загружать приложения Android в изолированной среде, где приложения не могут получить доступ ко всему (например, к приложениям, загруженным из Microsoft Store), и Android x86 на VMware — это вариант, который я сейчас использую.
Ну, если у вас есть работающая опция WSA, как задокументировано в Windows Central, то это, скорее всего, так же безопасно. Я уверен, что Microsoft выпустит больше информации об архитектуре WSA по мере приближения к запуску, но они сказали, что она работает в виртуальной машине. Я предполагаю, что она очень похожа на WSL2 по своей архитектуре.
Что мыДействительнождем, когда WSA будетвыпущенныйот Microsoft. Тогда, надеюсь, у нас появятся лучшие варианты (хотя пока еще неподдерживаемые) для использования Google Play Store.