Skip to content

Instantly share code, notes, and snippets.

@irdkwmnsb
Last active November 21, 2023 13:33
Show Gist options
  • Save irdkwmnsb/1e62c97837edb81558233e0dabba70f2 to your computer and use it in GitHub Desktop.
Save irdkwmnsb/1e62c97837edb81558233e0dabba70f2 to your computer and use it in GitHub Desktop.
Как установить X11 на винду

Как подготовить свою шинду к плюсам

TOC:

Если ты собираешься устанавливать VCXsrv (а скорее всего это так), то поставь его скачиваться сейчас. (общажным лучше качать по зеркало 2 - точно работает)
[тык] [зеркало 1 (моё)] [зеркало 2 (тоже моё)]

Установка WSL

WSL1 (Windows subsystem for Linux (как то неправильно имхо они её назвали, по идее должно быть наоборот)) - прослойка между ядром линукса и виндой чтобы можно было запускать linux-овские программы.
WSL2 - то же самое, только теперь линукс работает полностью виртуально. (см. виртуальные машины)

  1. Поставить качать это
  2. Проверить что ваш компьютер совместим. А совместим он если
    1. У вас установлена windows версии 2004 (проверить можно в окне "Система"). (А лучше просто обновить винду, если вы давно этого не делали. Возможно микромягкие запатчили какой нить зиродей, но об этом не сказали.)
    2. Компьютер поддерживает Hyper-V (виртуализация какой её видит microsoft). Проверить это можно в диспетчере задач ( Производительность -> ЦП -> Снизу справа строка "Виртуализация") См Заметка о Hyper-V
  3. Включаем WSL - прописать в PowerShell (просто найти в поиске винды) с правами администратора следующее:
    dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
    Не закрывайте консоль - она вам ещё понадобится.
  4. Туда-же пишем
    dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
  5. Теперь пишем
    shutdown /r /f /t 0
  6. Доброе утро.
    Помнишь ту штуку из 0 шага? Запускай её.
  7. Пишем wsl --set-default-version 2 в PowerShell от имени администратора
  8. тык
    Регаемся в microsoft store или вводим учётку - ждём пока установится
  9. Открываем и ждём. WSL распаковывается и устанавливается, так будет только один раз. Дальше она будет запускаться моментально.
  10. Linux спросит нас - как назвать пользователя. Можно писать что угодно. Например, можно использовать никнейм с гитхаба.
    Дальше нужно придумать пароль. Это важный шаг, потому что то что вы сейчас придумаете, останется с вами на долгое время, поэтому лучше позаботиться о том чтобы ваш пароль был хорошим и запоминаемым.
    Если вы не уверены в вашем текущем пароле (например используете его в больше чем 5 местах или не считаете его достаточно важным), то лучше сгенерить новый.
    Я рекомендую вот этот генератор, его можно настроить под свой вкус. (по мотивам одного комикса)
    Когда вы будете вводить пароль линукс не покажет то что вы печатаете - это нормально. Это делается, чтобы пароль не светился на экране.
  11. Если всё прошло хорошо, то вас поприветствует следующая строка (или что-то похожее на это)
Welcome to Ubuntu 20.04.1 LTS (GNU/Linux 4.19.128-microsoft-standard x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

  System information as of Fri Feb 19 00:33:13 MSK 2021

  System load:  0.0                Processes:             32
  Usage of /:   1.0% of 250.98GB   Users logged in:       0
  Memory usage: 49%                
  Swap usage:   8%

irdkwmnsb@irdkwmnsb-laptop:/mnt/c/Users/me$

(для любознательных) Давайте разберёмся в том что мы видем.

Всё кроме последней строки называется MOTD (Message of the day) и так он выглядит на дистрибутивах ubuntu.

Последняя строка состоит из нескольких вещей

irdkwmnsb - имя текущего пользователя linux.
У всего что запускается в линуксе есть пользователь который это запустил. Есть один специальный пользователь которому дозволено делать всё что угодно - root. У него UID (user id) = 0. Чтобы выполнять команды от имени рута, нужно использовать утилиту sudo (если коротко, то эта штука позволяет некоторым пользователям запускать некоторые программы под некоторыми другими пользователями. Настройки у неё в /etc/sudoers (я не буду сейчас углубляться про то как работают пользователи, но отмечу что помимо пользователей есть группы, это немного другое, и если очень интересно почитать про это, то гугл - твой друг)).
Существует так же другя утилита которая называется su. Она позволяет логиниться под другим пользователем (логиниться - открывать shell (оболчку команд для компьютера)). Если запускать su без аргументов, то она откроет оболочку для " владельца" этого процесса.
Соответствено сочитание sudo su говорит ОС - пожалуйста, запусти su как будто это делает root. Что происходит? su даёт нам оболочку под пользователем root. Попробуйте написать sudo su в консоль и убедиться что имя пользователя действительно сменится на root. Так же, пока мы тут, обратите внимание, что $ сменился #. Об этом позже.

@ - знак разделения между именем пользователя и именем хоста.

irdkwmnsb-laptop - имя хоста текущего компьютера (так же известный как hostname)

: - знак разделения между именем хоста и текущем путём

/mnt/c/Users/me - путь до текущей папки.
Если путь начинается с /, то это абсолютный путь.
В линуксе все файлы имеют абсолютный путь. Попробуйте сделать ls / (list (перечислить) / (root directory (корневая директория))).
Если вдруг внезапно напало желание преисполниться в сознании, то можно гуглить 'What does {x} directory do in linux', где вместо {x} одно из того что вам было написано.
Рано или поздно вы наткнётесь на директорию /proc и вам скажут что это особая директория, файлы которой не находятся на диске. На самом деле, эти файлы "виртуальные". Их действительно нет на диске - операционная система делает их на лету. Всё потому что в линуксе - всё это файл. Про это тоже можно погуглить.
Если путь начинается с ., то это относительный путь
В любой директории вам гарантируется две директории - . и .., что соответствует текущей директории и директории родителя. Значит cd .. (change directory (поменять директорию)) поменяет текущую директорию на директорию родителя. Можно попробовать это сделать и увидеть, что теперь мы оказались в родительской директории.
Если путь начинается с ~, то это тоже относительный путь, но относительно домашней папки текущего пользователя.
У каждого пользователя есть домашняя папка. Это всё что можно знать. Несколько моментов:
В отличие от винды в линуксе директории разделяются слешем, а не бэкслешем, но это не так важно. Если файл начинается с точки, то он считается скрытым. Именно поэтому когда мы делаем ls мы не видим директории . и ... Чтобы ls писал все файлы нужно добавить параметр -a (ls -a)
Некоторые программы могут сохранять настройки в своей домашней директории, поэтому если вы внезапно увидите файлы или директории которые начинаются с точки в вашей домашней директории, не удивляйтесь если что то сломается когда вы их удалите (не удаляйте их).

И последняя часть - $ - так называемый prompt - компьютер сообщает нам, что можно вводить команду. Если вместо $ стоит #, то команда будет выполнена от имени суперпользователя (root-а)

Установка X-utils

  1. Пишем sudo su, чтобы войти в суперпользователя (нужно будет ввести пароль).
  2. Пишем
apt-get update
apt-get install x11-utils 

можно я сейчас не буду объяснять что это делает бажожда
но если коротко, то мы просим менеджер пакетов сначала обновиться, а затем установить X11 utils. Это нужно чтобы проверить работоспособность X сервера

Установка VCXserv

  1. Запускаем то что мы скачивали в самом начале. Прожимаем Далее (не установит яндекс браузер, не бойтесь.)
  2. Проверяем что оно работает двумя командами
    1. В меню пуск ищем "выполнить" и запускаем от имени администратора. Пишем
      "C:\Program Files\VcXsrv\vcxsrv.exe" :0 -ac -terminate -lesspointer -multiwindow -clipboard -wgl -dpi auto Файервол попросит разрешение. Даём.
    2. Пишем в терминал WSL DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0 xmessage -center "almost there"
      Если всё установилось окэй, то мы должны увидеть окошко с сообщением "almost there"

Делаем так чтобы это работало всегда

  1. Нажимаем Windows + R (выполнить) и пишем shell:startup
    Создаём ярлык на "C:\Program Files\VcXsrv\vcxsrv.exe" :0 -ac -terminate -lesspointer -multiwindow -clipboard -wgl -dpi auto
  2. В WSl пишем
    echo "export DISPLAY=\$(cat /etc/resolv.conf | grep nameserver | awk '{print \$2}'):0" | sudo tee /etc/profile.d/xsetup.sh
  3. Проверим.
    Закрываем консоль ubuntu и снова открываем.
    Пишем xmessage -center "stil works".
    Если открылось окошко, то всё всё ещё работает и скорее всего будет работать.

Поздравляю! Вы восхитительны

Можно перезапустить компьютер ещё раз и ещё раз всё проверить.

Устанавливаем Windows Terminal

С этим терминалом вы получите наилучший опыт использования WSL и Windows Powershell. Он очень гибко настраивается и вообще крутой парень.

тык

Да собственно всё. Просто установите и пользуйтесь. Работает из коробки очень хорошо.

Чтобы открыть Ubuntu, нажмите на стрелочку вниз которая находится наверху. Там будет Ubuntu 20.04

Можно закрепить его в панели быстрого доступа, чтобы каждый раз не искать его.

Дальше по инструкции от преподавателей

Заметка об Hyper-V

Современные игры очень хотят чтобы в них небыло читеров. Поэтому многие из них помимо самой игры устанавливают античиты, которые въедаются в систему достаточно глубоко. Поэтому, иногда античиты просят выключить Hyper-V (точно знаю, что так делает Face it, а ещё вроде античит от valorant-а), и если вы это сделали, то вот как сохранить возможность гамать и решать домашки.

  1. Качаем EasyBCD (ссылка на моё зеркало)

TODO

@ivnalxv
Copy link

ivnalxv commented Feb 20, 2021

"сочитание" - сочетание

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment