Я успешно установил WLS (ubuntu 18
) на окнах 10 машин. Я хочу получить доступ к его использованию функций UI TightVnc
. С настройками по умолчанию .vnc/xstartup
содержит следующие строки
xrdb $HOME/.Xresources
xsetroot -solid grey
#x-terminal-emulator -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
#x-window-manager &
# Fix to make GNOME work
export XKL_XMODMAP_DISABLE=1
/etc/X11/Xsession
и я могу соединиться с ним с помощью Трудного vnc средства просмотра из окон, но UI похож, Но, я хочу использовать рабочий стол по умолчанию, который поставлется с Ubuntu 18. Я установил gnome
и измененный xstartup
файл к следующему (предложенный кем-то в сети)
#!/bin/sh
#Uncommment this line if using Gnome and your keyboard mappings are incorrect.
#export XKL_XMODMAP_DISABLE=1
# Load X resources (if any)
if [ -r "$HOME/.Xresources" ]
then
xrdb "$HOME/.Xresources"
fi
gnome-session --disable-acceleration-check --session=ubuntu &
Но когда я запускаю vncserver
после внесения этих изменений я могу соединиться, но оно показывает серый экран без визуальных средств управления как Обратите внимание на то, что, я имел нет .Xresources
файл на моей машине, таким образом, я создал пустой вручную, но это не имело никакого значения. Ниже вывод ls /usr/share/xsessions
ubuntu-communitheme-snap.desktop ubuntu.desktop xfce.desktop
Я вижу некоторые ошибки в .vnc/CS-63341DT:5.log
файл. Ниже содержание этого файла
05/04/19 12:49:17 Xvnc version TightVNC-1.3.10
05/04/19 12:49:17 Copyright (C) 2000-2009 TightVNC Group
05/04/19 12:49:17 Copyright (C) 1999 AT&T Laboratories Cambridge
05/04/19 12:49:17 All Rights Reserved.
05/04/19 12:49:17 See http://www.tightvnc.com/ for information on TightVNC
05/04/19 12:49:17 Desktop name 'X' (CS-63341DT:5)
05/04/19 12:49:17 Protocol versions supported: 3.3, 3.7, 3.8, 3.7t, 3.8t
05/04/19 12:49:17 Listening for VNC connections on TCP port 5905
Font directory '/usr/share/fonts/X11/75dpi/' not found - ignoring
Font directory '/usr/share/fonts/X11/100dpi/' not found - ignoring
gnome-session-binary[1645]: WARNING: Using null backend for session tracking
_IceTransmkdir: Owner of /tmp/.ICE-unix should be set to root
GNOME_KEYRING_CONTROL=/home/adeel/.cache/keyring-FKBRZZ
GNOME_KEYRING_CONTROL=/home/adeel/.cache/keyring-FKBRZZ
GNOME_KEYRING_CONTROL=/home/adeel/.cache/keyring-FKBRZZ
SSH_AUTH_SOCK=/home/adeel/.cache/keyring-FKBRZZ/ssh
Window manager warning: Unsupported session type
gnome-session-binary[1645]: WARNING: App 'org.gnome.Shell.desktop' exited with code 1
Window manager warning: Unsupported session type
gnome-session-binary[1645]: WARNING: App 'org.gnome.Shell.desktop' exited with code 1
gnome-session-binary[1645]: WARNING: App 'org.gnome.Shell.desktop' respawning too quickly
gnome-session-binary[1645]: CRITICAL: We failed, but the fail whale is dead. Sorry....
Что я могу сделать для создания человечности 18 по умолчанию deskto работой со средством просмотра TightVnc из окон?
Я использую VcXsrv , потому что он бесплатный и часто обновляется. Смотрите мой ответ здесь:
Важно установить его, принимая значения по умолчанию, а затем (для меня) отредактировать /etc/environment
и изменить это:
PATH="/mnt/e/bin:/mnt/e/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:"
на это:
PATH="/mnt/e/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
export LIBGL_ALWAYS_INDIRECT=Yes
export DISPLAY=localhost:0.0
/mnt/e/bin:
в начале пути важно только для общих сценариев, хранящихся в разделе NTFS, который запускается как в Ubuntu, так и в WSL Bash. LIBGGL...
важен для правильной работы графического интерфейса. DISPLAY...
важен для правильной работы X-сервера. Тогда я могу использовать yad
и zenity
для всех моих сценариев GUI. По данным Microsoft WSL разработан только для разработчиков, которые хотят выполнить утилиты терминала Linux. Это обозначается в этом подобном вопросе.
Было сообщено, что можно получить возможно успешные результаты
1) Установка Xserver как Xming или VcXsrv.
2) Установка графического программного обеспечения Вы хотите работать под WSL через apt-get
или apt
3) Экспорт Вашей переменной среды дисплея с export DISPLAY=:0
каждый раз Вы хотите запустить графическое приложение.
4) запустите графическое приложение путем введения имени его исполняемого файла
Примечание: Эта подсистема (WSL) не способна к выполнению всего программного обеспечения Linux, такова как 32-разрядные двоичные файлы или те, которые требуют определенных сервисов ядра Linux, не реализованных в WSL.
Возможно выполнить немного графические (GUI) приложения (такие как Mozilla Firefox) путем установки сервера X11 в рамках Windows (хост) среда (такие как VcXsrv или Xming), как упомянуто выше хотя не без протестов, таких как отсутствие аудио поддержки или аппаратного ускорения (приводящий к плохой производительности при обработке графики). Поддержка OpenCL и CUDA также не реализуется в настоящее время, хотя это может быть реализовано в будущих выпусках.
По моему скромному мнению, это осуществление является большим количеством работы, чем это стоит. Конечный результат страдает от плохой производительности при обработке графики и узких мест ввода-вывода. Это далеко prefereable для простого выполнения Ubuntu на VM или двойной загрузке, чем иметь дело с возможностью, что системные вызовы Linux, которых требует приложение, не могут полностью поддерживаться Windows Subsystem для Linux.
Источники:
Как я устанавливаю Ubuntu вместе с предварительно установленным Windows с UEFI?
https://en.wikipedia.org/wiki/Windows_Subsystem_for_Linux
https://blogs.msdn.microsoft.com/wsl/2016/06/08/wsl-system-calls/
Источник: Как установить Ubuntu Desktop с графическим Пользовательский интерфейс в WSL2
Загрузите VcXsrv: Посетите официальный сайт Нажмите «Загрузить»
Установите VcXsrv: Откройте «vcxsrv-64.1.20.8.1.installer.EXE" Нажмите "Далее" Нажмите «Установить» Нажмите «Закрыть»
Разрешить доступ к VcXsrv: Проверьте «Частные сети» Нажмите «Разрешить доступ»
Откройте PowerShell: Нажмите «⊞ Windows» Введите «PowerShell» в строку поиска Щелкните правой кнопкой мыши «Windows PowerShell». Нажмите «Запуск от имени администратора»
Откройте WSL2: Скопируйте команду ниже этой инструкции Вставьте команду в PowerShell Нажмите «Enter»
wsl
Установите рабочий стол Ubuntu: Скопируйте команду ниже этой инструкции Вставьте команду в PowerShell Нажмите «Enter»
sudo apt --yes install ubuntu-desktop
Установите переменную имени пользователя: Скопируйте команду ниже этой инструкции Вставьте команду в PowerShell Нажмите «Enter»
username=$(wslvar USERNAME)
Создайте каталог Ubuntu: Скопируйте команду ниже этой инструкции Вставьте команду в PowerShell Нажмите «Enter»
mkdir --parents /mnt/c/users/$username/.ubuntu/
Откройте каталог Ubuntu: Скопируйте команду ниже этой инструкции Вставьте команду в PowerShell Нажмите «Enter»
cd /mnt/c/users/$username/.ubuntu
Загрузите репозиторий программного обеспечения Linux для продуктов Microsoft: Скопируйте команду ниже этой инструкции Вставьте команду в PowerShell Нажмите «Ввод»
Ubuntu 20.04:
wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb --output-document packages-microsoft-prod.deb
Ubuntu 18.04:
wget https://packages.microsoft.com/config/ubuntu/18.04/packages-microsoft-prod.deb --output-document packages-microsoft-prod.deb
Установите репозиторий программного обеспечения Linux для продуктов Microsoft: Скопируйте команду ниже этой инструкции Вставьте команду в PowerShell Нажмите «Ввод»
sudo dpkg --install packages-microsoft-prod.deb
Обновите репозитории: Скопируйте команду ниже этой инструкции Вставьте команду в PowerShell Нажмите «Enter»
sudo apt update
Установите транспорт APT для HTTPS: Скопируйте команду ниже этой инструкции Вставьте команду в PowerShell Нажмите «Ввод»
sudo apt install --yes apt-transport-https
Обновите репозитории: Скопируйте команду ниже этой инструкции Вставьте команду в PowerShell Нажмите «Enter»
sudo apt update
Установите .Net: Скопируйте команду ниже этой инструкции Вставьте команду в PowerShell Нажмите «Enter»
sudo apt install --yes dotnet-sdk-5.0
Добавьте Arkane Systems в каталог исходного списка: Скопируйте команду ниже этой инструкции Вставьте команду в PowerShell Нажмите "Enter"
sudo sh -c 'echo "deb [trusted=yes] https://wsl-translinux.arkane-systems.net/apt/ /" > /etc/apt/sources.list.d/ wsl-транслинукс.list'
Обновите репозитории: Скопируйте команду ниже этой инструкции Вставьте команду в PowerShell Нажмите «Enter»
sudo apt update
Установите Genie: Скопируйте команду ниже этой инструкции Вставьте команду в PowerShell Нажмите «Enter»
sudo apt install --yes systemd-genie
Создайте файл Sudoers: Скопируйте команду ниже этой инструкции Вставьте команду в PowerShell Нажмите "Enter"
echo "$USER ALL=(ALL) NOPASSWD:/usr/bin/genie" | sudo EDITOR="tee" visudo --file /etc/sudoers.d/$USER
Создайте сценарий рабочего стола: Скопируйте код ниже этой инструкции Вставьте код в PowerShell Нажмите «Enter»
# CREATE BASH SCRIPT
# Store block of text with here document
create_bash_script=$(cat << end_of_string
# Define necessary environment variables
export DISPLAY="\$(cat /etc/resolv.conf | grep nameserver | awk '{ print \$2 }'):1.0"
export DESKTOP_SESSION="ubuntu"
export GDMSESSION="ubuntu"
export XDG_SESSION_DESKTOP="ubuntu"
export XDG_CURRENT_DESKTOP="ubuntu:GNOME"
export XDG_SESSION_TYPE="x11"
export XDG_BACKEND="x11"
export XDG_SESSION_CLASS="user"
export XDG_DATA_DIRS="/usr/local/share/:/usr/share/:/var/lib/snapd/desktop"
export XDG_CONFIG_DIRS="/etc/xdg"
export XDG_RUNTIME_DIR="\$HOME/xdg"
export XDG_CONFIG_HOME="\$HOME/.config"
export XDG_DATA_HOME="\$HOME/.local/share"
export XDG_CACHE_HOME="\$HOME/.cache"
export XDG_DESKTOP_DIR="\$HOME/Desktop"
export XDG_DOCUMENTS_DIR="\$HOME/Documents"
export XDG_DOWNLOAD_DIR="\$HOME/Downloads"
export XDG_MUSIC_DIR="\$HOME/Music"
export XDG_PICTURES_DIR="\$HOME/Pictures"
export XDG_PUBLICSHARE_DIR="\$HOME/Public"
export XDG_TEMPLATES_DIR="\$HOME/Templates"
export XDG_VIDEOS_DIR="\$HOME/Videos"
# Start desktop environment
gnome-session
end_of_string
)
# Store username environment variable in lowercase
username=$(wslvar USERNAME | awk '{ print tolower($0) }') &&
# Save block of text in bash file
echo "${create_bash_script}" > "/mnt/c/users/$username/.ubuntu/02_start_desktop.sh"
Загрузите изображения ярлыков: Скопируйте команду ниже этой инструкции Вставьте команду в PowerShell Нажмите «Ввод»
wget https://assets.ubuntu.com/v1/9fbc8a44-circle-of-friends-web.zip
Разархивируйте изображения ярлыков:Скопируйте команду ниже этой инструкции Вставьте команду в PowerShell Нажмите «Enter»
unzip -o 9fbc8a44-circle-of-friends-web.zip
Создайте значок ярлыка: Скопируйте команду ниже этой инструкции Вставьте команду в PowerShell Нажмите «Enter»
convert -resize 64x64 ./circle-of-friends-web/png/cof_orange_hex.png ubuntu.ico
Выйдите из WSL2: Скопируйте команду ниже этой инструкции Вставьте команду в PowerShell Нажмите «Enter»
и выйдите
Создайте сценарий VcXsrv: Скопируйте код ниже этой инструкции Вставьте код в PowerShell Нажмите «Enter»
# RELOAD VCXSRV SCRIPT
# Store username environment variable in lowercase
$username = $env:username.tolower()
# Store block of text with here-string
$reload_vcxsrv_script = @"
# Stop vcxsrv proccess that contains "1.0" in the program window title
get-process vcxsrv | where { `$_.mainwindowtitle -like "*1.0*" } | stop-process
# Start vcxsrv process in a large program window on display number one
start-process "c:\program files\vcxsrv\vcxsrv.exe" -argument ":1 -ac -nowgl -multimonitors -dpms"
"@
# Save block of text in powershell file
echo "${reload_vcxsrv_script}" > $env:userprofile/.ubuntu/reload_vcxsrv.ps1
Создайте сценарий Ubuntu: Скопируйте код ниже этой инструкции Вставьте код в PowerShell Нажмите «Enter»
# CREATE VISUAL BASIC SCRIPT
# Store username environment variable in lowercase
$username = $env:username.tolower()
# Store block of text with here-string
$create_vbs_script = @"
' Run PowerShell script in background
set application = createobject("shell.application")
application.shellexecute "powershell", "-file c:\users\admin\.ubuntu\01_reload_vcxsrv.ps1", "", "", 0
' Allow PowerShell script to complete
wscript.sleep 3000
' Run Bash script in background
set shell= createobject("wscript.shell")
shell.run "wsl sudo genie -c bash /mnt/c/users/admin/.ubuntu/02_start_desktop.sh", 0
"@
# Save block of text in bash file
echo "${create_vbs_script}" > $env:userprofile/.ubuntu/03_start_ubuntu.vbs
Создайте сценарий быстрого доступа: Скопируйте код ниже этой инструкции Вставьте код в PowerShell Нажмите «Enter»
# Store block of text with here-string
$create_shortcut_script = @"
# Define location variables
`$shortcut_location = "`$env:userprofile\.ubuntu\Ubuntu.lnk"
`$program_location = "`$env:userprofile\.ubuntu\03_start_ubuntu.vbs"
# Create shortcut
`$object = new-object -comobject wscript.shell
`$shortcut = `$object.createshortcut(`$shortcut_location)
`$shortcut.targetpath = `$program_location
`$shortcut.iconlocation = "`$env:userprofile\.ubuntu\ubuntu.ico"
`$shortcut.save()
"@
# Save block of text in powershell file
echo $create_shortcut_script > $env:userprofile/.ubuntu/04_create_shortcut.ps1
Откройте каталог Ubuntu: Скопируйте команду ниже этой инструкции Вставьте команду в PowerShell Нажмите «Enter»
cd c:\users\admin\.ubuntu
Создайте ярлык: Скопируйте команду ниже этой инструкции Вставьте команду в PowerShell Нажмите «Enter»
powershell.exe -file .\04_create_shortcut.ps1
Откройте каталог в Проводнике: Скопируйте команду ниже этой инструкции Вставьте команду в PowerShell Нажмите "Enter"
Проводник.
Запустите рабочий стол Ubuntu: Дважды щелкните ярлык «Ubuntu»
Откройте терминал: Нажмите «Действия» в верхнем левом углу. Введите «Терминал» в строку поиска Нажмите «Терминал»
Отключите блокировку экрана: Скопируйте команду ниже этой инструкции Вставьте команду в Терминал Нажмите «Enter»
gsettings set org.gnome.desktop.screensaver lock-enabled false
Установите Snap Store: Скопируйте команду ниже этой инструкции Вставьте команду в Терминал Нажмите «Ввод»
sudo snap install snap-store