WSL (подсистема Windows для Linux): подсказки, инструкции, решения проблем


Оглавление

I. Управление дистрибутивами Linux

1. Как включить WSL2 (подсистему Windows для Linux второй версии) и установить последнюю версию ядра

2. Характеристика дистрибутивов Linux в WSL

3. Как установить дистрибутив Linux в WSL

4. Как просмотреть список установленных дистрибутивов Linux в WSL

5. Как пользоваться Linux в WSL

6. Как в WSL сбросить Linux до начального состояния

7. Как удалить дистрибутив Linux в WSL

8. Как узнать, какие дистрибутивы запущены

9. Как выключить все дистрибутивы

10. Как перезагрузить или выключить отдельный дистрибутив

11. Как в Linux открыть файл Windows

12. Как смонтировать съёмные диски в подсистеме Windows для Linux

13. Как смонтировать сетевые папки

14. Лёгкий доступ к файлам в подсистеме Windows для Linux (WSL)

15. Подсказки по использованию дистрибутивов на основе Debian

16. Подсказки по использованию дистрибутивов на основе openSUSE

17. Подсказки по использованию дистрибутивов на основе Fedora

18. Как сбросить пароль в WSL

II. Установка и использование программ, свойства и настройка системы


1. Double Commander (бесплатный аналог Total Commander) в Linux (WSL)

2. Как запустить веб-сервер в Linux на WSL

3. Как получить доступ к службам Linux в WSL (какой IP у Linux)

4. Как получить доступ к службам Windows из Linux на WSL

5. Как установить аналог Диспетчера задач в Linux на WSL

6. Как посмотреть открытые порты в Linux на WSL

7. Как запустить СУБД MySQL в Linux на WSL

8. Поддерживает ли Linux в WSL графический пользовательский интерфейс

III. Решение проблем в WSL

1. Ошибка «WslRegisterDistribution failed with error: 0x80370102»

2. Ошибка «Address already in use … make_sock: could not bind to address»

3. Почему Linux в WSL не видит Wi-Fi адаптеры

4. Может ли Linux в WSL использовать видеокарты для выполнения вычислений

5. Ошибка в WSL (Kali Linux, Ubuntu) «sleep: cannot read realtime clock: Invalid argument»

6. Ошибка «unable to connect to socket: Подключение не установлено, т.к. конечный компьютер отверг запрос на подключение. (10061)»


7. Ошибка «E: Release file for http://http.kali.org/kali/dists/kali-rolling/InRelease is not valid yet (invalid for another 2h 43min 57s). Updates for this repository will not be applied»


На HackWare.ru готовится серия статей по использованию Kali Linux в подсистеме Windows для Linux (WSL). На мой взгляд, эти инструкции очень интересные для начинающих пользователей WSL и начинающих пользователей Kali Linux. В этих инструкциях не просто освоение терминала и базовых команд, а примеры использования лучших инструментов прямо в Windows без необходимости установки ещё одной операционной системы или Python, Ruby, Perl и прочего.

Технология WSL позволяет получить быстрый доступ к большому количеству инструментов Linux потратив минимальное количество времени на настройку рабочего окружения.

Тем не менее, чтобы эффективно использовать инструменты Linux и Kali Linux, нужно быть с ними знакомым и знать синтаксис их запуска (об этом в следующей части). Но не менее важно уверенно себя чувствовать с Linux в WSL — именно этому и посвящён данный раздел. Здесь приведены пошаговые инструкции использования WSL, даны советы и подсказки по выполнению базовых действий, описаны решения некоторых проблем.

Данные список подсказок будет пополняться. Если у вас есть вопрос по WSL, то спрашивайте его в комментариях.


I. Управление дистрибутивами Linux

Как включить WSL2 (подсистему Windows для Linux второй версии) и установить последнюю версию ядра

Microsoft работала с Canonical, чтобы предложить полную среду оболочки Bash на основе Ubuntu, которая работает поверх этой подсистемы, а в настоящее время теперь можно запускать полноценные дистрибутивы Linux. Технически это вообще не Linux. Linux — это базовое ядро операционной системы, которое здесь недоступно. Вместо этого она позволяет запускать оболочку Bash и те же двоичные файлы, которые вы обычно запускаете в Ubuntu Linux. Сторонники свободного программного обеспечения часто утверждают, что среднюю операционную систему Linux следует называть «GNU/Linux», потому что на самом деле на ядре Linux работает множество программ GNU. Оболочка Bash, которую вы получите, на самом деле представляет собой все эти утилиты GNU и другое программное обеспечение.

Эта функция изначально называлась «Bash в Ubuntu в Windows», но она также позволяла запускать Zsh и другие оболочки командной строки. Теперь же она поддерживает и другие дистрибутивы Linux. Вы можете выбрать openSUSE Leap или SUSE Enterprise Server, Fedora или Kali Linux вместо Ubuntu.

Здесь есть некоторые ограничения. Она пока не поддерживает фоновое серверное программное обеспечение и официально не работает с графическими настольными приложениями Linux. Не все приложения командной строки также работают, поскольку функция не идеальна.

По умолчанию WSL2 отключена в Windows. Чтобы её включить можно воспользоваться графическим интерфейсом или командной строкой. Чтобы включить WSL2 в командной строке, нажмите Win+x и в открывшемся меню выберите «Windows PowerShell (администратор)»:

Важно открыть PowerShell с повышенными правами.

Выполните в нём:

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

Дождитесь окончания загрузки и выполнения.


Перезагрузите компьютер, для этого нажмите Enter.

Теперь опять откройте PowerShell от администратора и выполните:

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

Вновь перезагрузите компьютер.

Скачайте и установите последнее ядро WSL2 Linux Kernel отсюда: https://aka.ms/wsl2kernel (прямая ссылка).

Опять откройте PowerShell как администратор и выполните:

wsl --set-default-version 2

Если у вас уже установлен дистрибутив (например, Kali Linux) в WSL1, то для обновления выполните команду:

wsl --set-version kali-linux 2

Характеристика дистрибутивов Linux в WSL

Debian

Debian — популярен как дистрибутив, например, для серверов, так и как основа для других дистрибутивов. Например, на Debian основываются Ubuntu, Kali Linux, Linux Mint (есть версия LMDE, которая основывается непосредственно на Debian, а также "классическая" версия, которая основывается на Ubuntu, которая, в свою очередь, также основывается на Debian).

То есть Debian и производные очень популярна.

Вы сможете использовать полную среду командной строки Debian, содержащую среду полной текущей стабильной версии.

Kali Linux

Kali Linux — это популярнейший дистрибутив для специалистов в информационной безопасности, цифровой криминалистике, хакеров и продвинутых пользователей. Вы можете установить и использовать в родной среде Linux множество специализированных инструментов. Для Kali Linux разработано ПО для упрощённого запуска графического интерфейса (смотрите статью «Как установить Kali Linux с Win-KeX (графический интерфейс) в WSL2 (подсистему Windows для Linux)», а также для инструкций на HackWare.ru взят именно этот дистрибутив, поэтому для него вы найдёте много детаьлных инструкций. По этой причине рекомендуется Kali Linux.

SUSE Linux Enterprise Server

SUSE Linux Enterprise Server — это мультимодальная операционная система, которая открывает путь к трансформации ИТ в эпоху программного обеспечения. Современная модульная ОС помогает упростить мультимодальные ИТ, делает традиционную ИТ-инфраструктуру эффективной и обеспечивает привлекательную платформу для разработчиков. В результате вы можете легко развертывать и переносить критически важные для бизнеса рабочие нагрузки в локальную и общедоступную облачные среды. SUSE Linux Enterprise Server 15 SP1 с его мультимодальным дизайном помогает организациям трансформировать свой ИТ-ландшафт за счет объединения традиционной и программно определяемой инфраструктуры.

Ubuntu

В WSL у дистрибутива Ubuntu также отсутствует графический интерфейс (как по умолчанию у всех других дистрибутивов), поэтому её нельзя назвать более «дружественной» к пользователю. Основана на Debian.

Fedora

Обещают добавить, но пока отсутствует.

Как установить дистрибутив Linux в WSL

После того, как вы включили WSL2, как это показано в предыдущем разделе, откройте Microsoft Store из меню «Пуск».

И выполните поиск «Linux» в магазине. Выберите Debian или другой дистрибутив Linux из приложения Store.

Вы увидите список всех дистрибутивов Linux, доступных в настоящее время в Магазине Windows. Сюда входят Debian, Kali Linux, Ubuntu, openSUSE Leap и openSUSE Enterprise с обещанием скорого появления Fedora.

Чтобы установить дистрибутив Linux, щёлкните его, а затем нажмите кнопку «Получить» или «Установить», чтобы установить его, как любое другое приложение Store.

Если вы не знаете, какую среду Linux установить, мы рекомендуем Debian. Этот популярный дистрибутив Linux, которые может применяться для самых разных целей. Или выберите другую систему Linux если у вас более специфические потребности.

Вы также можете установить несколько дистрибутивов Linux, каждый из которых получит свои уникальные ярлыки. Вы даже можете запускать несколько разных дистрибутивов Linux одновременно в разных окнах.

Как просмотреть список установленных дистрибутивов Linux в WSL

Чтобы вывести список всех дистрибутивов, используйте следующую команду:

wsl --list --all

Опция --all нужна для того, чтобы в список попали все дистрибутивы, в том числе те, которые сейчас устанавливаются или удаляются.

Точно такой же список можно получить с помощью команды:

wslconfig /l

Вы можете увидеть пометку «по умолчанию» она указывает на дистрибутив, который будет запущен, если в командной строке Windows вы выполните команду:

bash

Если вам не нужно, чтобы выводилась информация о том, какая из систем является выбранной по умолчанию (то есть запускается при выполнении в командной строке bash), то используйте следующую команду:

wsl --list --quiet

Есть два способа вывести список дистрибутивов Linux, которые в данный момент работают.

Первый способ выводит все Linux в WSL и помечает запущенные в настоящий момент:

wsl --list -v

Значение «Running» в поле «STATE» означает, что данный дистрибутив запущен.

А вторая команда показывает только запущенные, не выводя неактивные вовсе:

wsl --list --running

Как пользоваться Linux в WSL

Чтобы открыть установленную вами среду Linux, просто откройте меню «Пуск» и найдите установленный вами дистрибутив. Например, если вы установили Kali Linux, запустите ярлык Kali Linux.

Вы можете закрепить этот ярлык приложения в меню «Пуск», на панели задач или на рабочем столе для облегчения доступа.

При первом запуске среды Linux вам будет предложено ввести имя пользователя и пароль UNIX. Они необязательно должны совпадать с вашим именем пользователя и паролем Windows, но будут использоваться в среде Linux.

Например, если вы введёте «alex» и «hackware» в качестве учётных данных, ваше имя пользователя в среде Linux будет «alex», а пароль, который вы используете в среде Linux, будет «hackware» - независимо от вашего имени пользователя Windows и его пароля.

Вы можете запустить установленную среду Linux, выполнив команду wsl. Если у вас установлено несколько дистрибутивов Linux, вы можете выбрать среду Linux по умолчанию, запускаемую этой командой.

Если у вас установлена Kali Linux, вы также можете запустить команду kali, чтобы установить её. Для openSUSE Leap 15 SP1 используйте opensuse-15-sp1. Для SUSE Linux Enterprise Server 15 SP1 используйте SLES-15-SP1. Эти команды перечислены на странице каждого дистрибутива Linux в Магазине Windows.

Вы по-прежнему можете запустить среду Linux по умолчанию, выполнив команду bash, но Microsoft утверждает, что это устарело. Это означает, что команда bash может перестать работать в будущем.

Если у вас есть опыт использования оболочки Bash в Linux, Mac OS X или других платформах, вы будете как дома.

В Kali Linux и Ubuntu вам нужно добавить к команде префикс sudo, чтобы запустить её с правами root. Пользователь «root» на платформах UNIX имеет полный доступ к системе, как пользователь «Администратор» в Windows. Ваша файловая система Windows в среде оболочки Bash находится в /mnt/c.

Ещё одна важная особенность дистрибутивов Linux, запущенных этим образом, в том, что прямо в консоли Linux вы можете выполнять команды Windows.

Связанная статья: Что такое sudo

Используйте те же команды терминала Linux, которые вы используете в этой операционной системе. Если вы привыкли к стандартной командной строке Windows с её командами DOS, вот несколько основных команд, общих для Bash и Windows:

  • Изменить каталог: cd в Bash, cd или chdir в DOS
  • Список содержимого каталога: ls в Bash, dir в DOS
  • Перемещение или переименование файла: mv в Bash, move и rename в DOS
  • Скопировать файл: cp в Bash, copy в DOS
  • Удалить файл: rm в Bash, del или erase в DOS
  • Создайте каталог: mkdir в Bash, mkdir в DOS
  • Используйте текстовый редактор: vi или nano в Bash, edit в DOS

Связанная статья: Азы работы в командной строке Linux (часть 1), а также последующе части

Важно помнить, что, в отличие от Windows, оболочка Bash и её среда, имитирующая Linux, чувствительны к регистру. Другими словами, «File.txt» с большой буквы отличается от «file.txt» без заглавной буквы.

Дополнительные инструкции смотрите в серии наших руководств Азы работы в командной строке Linux для начинающих.

Вам нужно будет использовать команду apt для установки и обновления программного обеспечения среды Debian, Kali Linux, Ubuntu. Не забудьте указать перед этими командами префикс sudo, чтобы они запускались от имени пользователя root — Linux-эквивалента Администратора. Вот команды apt, которые вам нужно знать:

Загрузить обновлённую информацию о доступных пакетах:

sudo apt update

Установить пакет приложения (замените «ИМЯ-ПАКЕТА» на имя пакета):

sudo apt install ИМЯ-ПАКЕТА

Удаление пакета приложения (замените «ИМЯ-ПАКЕТА» на имя пакета):

sudo apt remove ИМЯ-ПАКЕТА

Поиск доступных пакетов (замените СЛОВО словом, по которому нужно искать пакеты в именах и описаниях):

sudo apt search СЛОВО

Загрузите и установите последние версии установленных пакетов:

sudo apt full-upgrade

Если вы установили дистрибутив SUSE Linux, вместо этого вы можете использовать команду zypper для установки программного обеспечения.

После того, как вы загрузили и установили приложение, вы можете ввести его имя в запросе, а затем нажать Enter, чтобы запустить его. Дополнительную информацию смотрите в документации к конкретному приложению.

Программное обеспечение, устанавливаемое в оболочке Bash, ограничено оболочкой Bash. Вы можете получить доступ к этим программам из командной строки, PowerShell или где-либо ещё в Windows, но только если вы запустите команду вида

bash -c КОМАНДА

Как в WSL сбросить Linux до начального состояния

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

Чтобы посмотреть название дистрибутива для использования в команде, выполните:

wsl --list --all

Для сброса дистрибутива до исходного состояния (будут удалены все настройки и все сохранённые файлы), выполните команду вида:

wslconfig /u ДИСТРИБУТИВ

Например:

wslconfig /u SLES-15-SP1

Как удалить дистрибутив Linux в WSL

Чтобы удалить дистрибутив Linux, нужно знать его название — это название не всегда соответствует команде, которой он запускается.

Чтобы посмотреть название дистрибутива для использования в команде, выполните:

wsl --list --all

Для полного удаления дистрибутива и освобождения места на диске выполните команду вида:

wslconfig /t ДИСТРИБУТИВ

Например:

wslconfig /t Debian

Как узнать, какие дистрибутивы запущены

Посмотреть запущенные дистрибутивы можно двумя командами.

Первый способ выводит все Linux в WSL и помечает запущенные в настоящий момент:

wsl --list -v

Значение «Running» в поле «STATE» означает, что данный дистрибутив запущен.

А вторая команда показывает только запущенные, не выводя неактивные вовсе:

wsl --list --running

Как выключить все дистрибутивы

Раньше для выхода из Linux, запущенного с помощью WSL (подсистема Windows для Linux), достаточно было закрыть терминал. В последних версиях при выходе из консоли Linux (например, если нажать Ctrl+d или закрыть терминал), то дистрибутив Linux продолжит работу в фоне.

Чтобы выключить сразу все запущенные Linux выполните команду:

wsl --shutdown

Как перезагрузить или выключить отдельный дистрибутив

Вы можете остановить не все системы, а определённые, для этого используйте команду вида:

wsl -t ДИСТРИБУТИВ

Например, я хочу выключить Kali Linux – имя этого дистрибутива для управления kali-linux, тогда команда следующая:

wsl -t kali-linux

Обратите внимание, что имя дистрибутива не совпадает с командой запуска. Например, для Kali Linux команда запуска kali, а имя дистрибутива — kali-linux. Приведённые выше команды (wsl --list -v) показывают имя дистрибутива, которое вы можете использовать для его выключения.

Как в Linux открыть файл Windows

Все диски компьютера смонтированы в папке /mnt/. Например, диск C:/ смонтирован по пути /mnt/c

Чтобы посмотреть содержимое диска C:/ выполните команду:

ls -l /mnt/c

Отсюда вы можете получить доступ к любому файлу пользователей или системы.

К примеру, я хочу просмотреть содержимое файла с именем 123.reg, который расположен в папке C:\Users\MiAl\Documents\, то есть в Windows путь до этого файла C:\Users\MiAl\Documents\123.reg. Тогда в Linux этот файл будет доступен по пути /mnt/c/Users/MiAl/Documents/123.reg:

cat /mnt/c/Users/MiAl/Documents/123.reg

Обратите внимание, что в Linux:

  • используются слэши, а не обратные слэши, как в Windows
  • регистр букв имеет значение. То есть file.txt и File.txt это совершенно разные вещи.

Если вы используете графический интерфейс в Linux (как его установить и запустить в Kali Linux рассказано в этой статье), то вы можете установить Double Commander (о нём рассказано ниже) и с удобством перемещать и копировать файлы между двумя системами:

Как смонтировать съёмные диски в подсистеме Windows для Linux

Подсистема Windows для Linux автоматически монтирует постоянные диски с файловой системой NTFS в дистрибутив Linux. То есть, если у вас есть внутренний диск C: и диск D:, то в среде Linux вы увидите их в /mnt/c и /mnt/d.

DrvFs теперь позволяет монтировать внешние диски, такие как USB-накопители, компакт-диски и DVD-диски. Эти устройства должны использовать файловую систему Windows, такую как NTFS, ReFS или FAT. Вы по-прежнему не можете подключать устройства, отформатированные в файловой системе Linux, например ext3 или ext4.

Как и внутренние диски, эти внешние диски останутся доступными в Windows после их подключения в среде Linux. А после их монтирования, как показано в этой статье, они станут одновременно доступными в Windows и Linux.

Допустим, у вас есть внешний носитель M: это либо USB-накопитель, либо оптический дисковод. Чтобы смонтировать его, вы должны выполнить следующие команды:

sudo mkdir /mnt/m
sudo mount -t drvfs M: /mnt/m

Конечно, вам необязательно монтировать диск в /mnt/m. Вы можете смонтировать его куда угодно. Просто замените оба экземпляра строки /mnt/m в приведённых командах на желаемый путь.

Посмотрим из Linux содержимое USB диска, который мы только что смонтировали:

ls -l /mnt/m

Чтобы позже отключить диск и безопасно удалить его, выполните стандартную команду umount:

sudo umount /mnt/m/

При работе с внешним устройством, отформатированным в файловой системе FAT или любой сетевой файловой системе, существуют некоторые ограничения. В файловой системе не учитывается регистр, и вы не можете создавать на ней символьные или жёсткие ссылки.

Как смонтировать сетевые папки

Вы также можете монтировать сетевые местоположения (папки, шары). Любое сетевое расположение, доступное из Windows, можно смонтировать из оболочки Linux.

Дополнительный материал: Руководство по SMB и Samba

Сетевые локации можно смонтировать одним из двух способов. Если вы сопоставите сетевой диск с буквой диска, вы можете подключить его, используя те же параметры, что и выше. Это даст вам возможность легко войти в общий сетевой ресурс и ввести свои учётные данные в проводнике. Например, если ваш сетевой диск подключён с буквой F:, вы можете запустить следующие команды, чтобы подключить его:

sudo mkdir /mnt/f
sudo mount -t drvfs F: /mnt/f

Вы также можете указать диск, используя его путь UNC (Universal Naming Convention). Например, если путь к общему сетевому ресурсу - \\СЕРВЕР\ПАПКА, вы должны выполнить следующую команду. Опять же, используйте любую точку монтирования вместо /mnt/ПАПКА.


sudo mkdir /mnt/ПАПКА
sudo mount -t '\\СЕРВЕР\ПАПКА' /mnt/ПАПКА

Связанная статья: Как сетевому диску назначить или удалить букву в командной строке в Windows

Подсистема Windows для среды Linux не предоставляет никакого способа указать учётные данные, которые вы хотите использовать. Вы можете указать учётные данные, перейдя к папке в проводнике Windows, введя их через диспетчер учётных данных или используя команду net use.

Команду net use можно запустить из среды Linux, поскольку подсистема Windows для Linux позволяет запускать программное обеспечение Windows из командной строки Linux. Просто запустите команду так:

net.exe use

Например, следующая команда подключится к \\СЕРВЕР\ПАПКА с именем пользователя Bob и паролем LetMeIn и назначит ему букву диска F:. Вот команда, которую вы должны выполнить:

net.exe use f: \\СЕРВЕР\ПАПКА /user:Bob LetMeIn

После того, как вы подключитесь один раз, Windows запомнит это имя пользователя и пароль и автоматически использует их, даже если вы используете команду mount в среде Linux.

Чтобы отключить сетевое расположение, вы можете снова использовать стандартную команду umount:

sudo umount /mnt/ПАПКА

DrvFs неточно устанавливает разрешения Linux при подключении сетевого хранилища. Вместо этого все файлы в сетевой файловой системе имеют разрешение на полный доступ (0777), и вы можете увидеть, есть ли у вас доступ к файлу, только попытавшись его открыть. В файловой системе также не будет учитываться регистр, и вы не сможете создавать на них символические ссылки.

Лёгкий доступ к файлам в подсистеме Windows для Linux (WSL)

Вы можете открыть окно проводника прямо в текущем каталоге из среды оболочки Linux. Просто введите следующую команду в оболочку Bash:

explorer.exe .

Отсюда вы можете нормально работать с файлами. Используйте перетаскивание, копируйте и вставляйте их или даже открывайте их непосредственно в приложениях Windows, чтобы изменить их.

Microsoft может изменить то, как это работает в будущем. Но пока вы также можете ввести следующий путь в окно проводника для доступа к файлам дистрибутива Linux:

\\wsl$\<имя-запущенного-дистрибутива>\

Другими словами, если вы используете Kali Linux, вы должны ввести:

\\wsl$\Kali-Linux\

Это, конечно, также работает из командной строки. В PowerShell или командной строке

cd \\wsl$\Kali-Linux\

Подсказки по использованию дистрибутивов на основе Debian

Регулярное обновление системы

Обновления исправляют баги в работе системы и несут новые функции. Для выполнения полного обновления выполните команду:

sudo apt update && sudo apt full-upgrade -y

Регулярная очистка системы

Время от времени рекомендуется выполнять команды по удалению пакетов, которые были установлены автоматически (так как были зависимостями других программ), но теперь больше не нужны.

Для этого применяется команда:

sudo apt autoremove -y

Её использование безопасно и не должно приводить к проблемам.

При каждом обновлении программ файлы пакетов скачиваются в кэш. После обновления скаченные файлы (можно назвать их установочными) не удаляются, и постепенно кэш разрастается до больших размеров. Это сделано намерено с той идеей, что если после очередного обновления вы обнаружите, что новый пакет имеет проблемы, а старая версия уже недоступна в онлайн репозитории, то вы сможете окатиться до старой версии установив её из файла, сохранённого в кэше.

Для роллинг дистрибутивов кэш разрастается очень быстро, и если вы недостаточно квалифицированы, чтобы откатиться до старой версии, установочный пакет которой сохранён в кэше, то для вас эти сотни мегабайт или даже несколько гигабайт – это зря потраченное место на жестком диске. Поэтому время от времени можно выполнять команды

sudo apt autoclean -y

и

sudo apt clean -y

clean - удалить скачанные файлы архивов

clean вычищает локальный репозиторий от полученных файлов пакетов. Она удаляет все, кроме lock файла из /var/cache/apt/archives/ и /var/cache/apt/archives/partial/.

autoclean - удалить старые скачанные файлы архивов

Как и clean, autoclean вычищает из локального репозитория скаченные файлы пакетов. Разница только в том, что она удаляет только файлы пакетов, которые не могут быть больше загружены и в значительной степени бесполезны.

Это позволяет поддерживать кэш в течение долгого периода без его слишком большого разрастания. Опция настройки APT::Clean-Installed не даст быть удалёнными установочным файлам тех пакетов, которые установлены в данный момент.

Исправление ошибок установки пакетов и зависимостей

Следующая команда не связана непосредственно с очисткой, но помогает поддержать здоровье системы.

sudo apt install -f -y

Опция -f, --fix-broken исправляет, пытается привести в норму систему с нарушенными зависимостями. Эта опция, когда используется с install/remove, может пропустить какие-либо пакеты, чтобы позволить APT найти вероятное решение. Если пакеты указаны, это должно полностью исправить проблему. Эта опция иногда необходима при запуске APT в первый раз; APT сама по себе не позволяет существовать в системе пакетам со сломанными зависимостями. Вполне возможно, что структура зависимостей системы может быть настолько нарушена, что потребуется ручное вмешательство (что обычно означает использование dpkg --remove для устранения некоторых пакетов-нарушителей). Использование этой опции совместно с -m в некоторых ситуациях может вызвать ошибку. Пункт в файле настройки: APT::Get::Fix-Broken.

Поиск пакетов программ

Поиск доступных пакетов (замените СЛОВО словом, по которому нужно искать пакеты в именах и описаниях):

sudo apt search СЛОВО

Установка и удаление пакетов

Установить пакет приложения (замените «ИМЯ-ПАКЕТА» на имя пакета):

sudo apt install ИМЯ-ПАКЕТА

Удаление пакета приложения (замените «ИМЯ-ПАКЕТА» на имя пакета):

sudo apt remove ИМЯ-ПАКЕТА

Подсказки по использованию дистрибутивов на основе openSUSE

TBD

Подсказки по использованию дистрибутивов на основе Fedora

TBD

Как сбросить пароль в WSL

Нам нужно узнать имя исполнимого файла, для этого выполните следующие команды:

cmd
cd c:\users\%USERNAME%\AppData\Local\Microsoft\WindowsApps
dir

На данном скриншоте это kali.exe.

А на этой тестовой машине мы установили Ubuntu 20.04, и, очевидно, нам нужен файл ubuntu2004.exe.

Мы запустим сеанс Ubuntu, но попросим его войти в систему как пользователь root вместо учётной записи пользователя, созданной вами при установке дистрибутива Linux.

ubuntu2004 config --default-user root

Сеанс Ubuntu запущен, и мы видим командную строку в окне терминала. Приглашение представлено белым текстом, а последний символ – решётка «#», а не знак доллара «$». Это говорит нам, что пользователь является пользователем root, а не обычным пользователем. В приглашении командной строки также есть слово «root».

Если потребуются дополнительные доказательства, мы можем использовать команду whoami.

whoami

Итак, мы определённо вошли в систему как root. Мы можем изменить пароль пользователя по умолчанию. Команда passwd запросит у вас новый пароль, а затем попросит ввести его второй раз. Ни один из них не будет эхом отражаться на экране. Пароль, который мы меняем, принадлежит пользователю dave.

passwd dave

Убедитесь, что вы запомнили новый пароль. Мы выйдем из сеанса Ubuntu и вернёмся в командную строку Windows.

exit

Чтобы проверить наш новый пароль, нам нужно запустить новый сеанс Ubuntu с учётной записью обычного пользователя.

ubuntu2004 config --default-user dave

Сеанс начинается, и мы вошли в систему как обычный пользователь с нашей обычной цветной командной строкой.

Чтобы доказать, что наш пароль был изменён, мы запустим команду с sudo. Команда, которую мы используем, не имеет значения, важно то, что мы используем sudo. Мы воспользуемся командой ps, чтобы перечислить некоторые процессы.

sudo ps -e

Смотрите также: Как использовать команду ps для мониторинга процессов Linux

Вам будет предложено ввести пароль, который вы создали, когда использовали команду passwd от имени пользователя root. Пароль должен быть принят, и команда должна быть запущена за вас.

Более подробно смотрите в: Как сбросить забытый пароль Linux в WSL


II. Установка и использование программ, свойства и настройка системы

В этом разделе будут затронуты только обычные программы, специализированные инструменты будут рассмотрены в отдельных инструкциях.

Установка программ показана на примере дистрибутива Debian и производных. В других дистрибутивах пакеты должны называться также.

Double Commander (бесплатный аналог Total Commander) в Linux (WSL)

Чтобы установить двух оконный файловый менеджер Double Commander, который поддерживает функции и плагины Total Commander, выполните следующую команду:

sudo apt install doublecmd-gtk

Double Commander является кроссплатформенным, то есть работает на Windows и Linux. Рекомендуется установить его вместо пиратского Total Commander.

Как запустить веб-сервер в Linux на WSL

Хотя официально не поддерживаются серверные фоновые службы, мне удалось успешно запустить веб-сервер Apache на Kali Linux (должно работать на всех производных Debian).

Для запуска веб-сервера, установите пакеты apache2 и php:

sudo apt update
sudo apt install apache2 php

Для запуска службы веб-сервера выполните команду:

sudo /usr/sbin/apache2ctl start

Веб-сервер работает, это можно проверить посмотрев открытые порты:

ss -tulpn

В Kali Linux и других производных Debian файлы веб-сервера расположены в папке /var/www/html/.

Как получить доступ к службам Linux в WSL (какой IP у Linux)

Для дистрибутивов Linux создаётся виртуальная сеть Ethernet. Благодаря этой сети можно получить доступ из Windows в Linux, а также в обратном направлении.

Чтобы узнать IP адрес Linux выполните команду:

ip a

На скриншоте видно, что IP адресом Linux является 172.26.173.37. На предыдущем шаге мы запустили веб-сервер — попробуем в веб-браузере из Windows открыть страницу с веб-сервера в Linux:

Мы видим «Apache2 Debian Default Page», то есть страницу по умолчанию веб-сервера Apache2 на Debian.

Это означает, что

  1. Веб-сервер действительно работает
  2. Мы можем получить доступ к сетевым службам Linux из Windows

Что мне осталось непонятным — все запущенные дистрибутивы имеют один и тот же IP адрес. Более того, если запустить службу (открыть порт) на одном из дистрибутивов, то этот же порт окажется открытым и на всех остальных. Следовательно, например, не получится запустить веб-сервер одновременно на двух или более дистрибутивах… У всех дистрибутивах в WSL один сетевой интерфейс на всех.

Как получить доступ к службам Windows из Linux на WSL

Рассмотрим другой вариант — на Windows запущен сервер (веб, FTP и пр.) или сетевая служба, можно ли к ней подключиться из Linux на WSL? Можно! Нам нужно знать IP адрес Windows в виртуальной сети, созданной для WSL.

Из Linux этот IP адрес можно посмотреть командой:

ip route show default

IP адрес Windows это 172.26.160.1.

В самой Windows также можно посмотреть этот IP, причём как минимум двумя способами.

В терминале с помощью команды:

ipconfig

В графическом интерфейсе, в Диспетчере задач на вкладке «Производительность»:

Теперь используйте этот IP адрес для подключения к веб-серверу, FTP или любой другой службе Windows из Linux на WSL.

Как установить аналог Диспетчера задач в Linux на WSL

Если вы пользуетесь только интерфейсом командной строки, то запустите команду top, которая обычно уже предустановлена:

top

Изучите инструкцию «Как пользоваться командой top для наблюдения за процессами в Linux» чтобы полностью раскрыть потенциал этой программы.

Некоторые пользователи предпочитают аналог этой утилиты под названием htop. Обычно она отсутствует по умолчанию, поэтому начните с установки:

sudo apt install htop

Для запуска выполните:

htop

Опять же, чтобы извлечь максимум из этого инструмента, изучите «Инструкцию по использованию команды htop для интерактивного просмотра процессов в Linux».

Если вы используете графическое окружение рабочего стола, то вы можете установить очень похожую на Диспетчер задач программу под названием System Monitor, для этого выполните команду:

sudo apt install gnome-system-monitor

Затем запустите System Monitor из меню или в консоли:

gnome-system-monitor

Как посмотреть открытые порты в Linux на WSL

Открытые порты вы можете увидеть с помощью команды:

ss -tulpn

Подробности об этой и аналогичных командах, а также об опциях, смотрите в статье «4 способа узнать, какие порты прослушиваются в Linux».

Как запустить СУБД MySQL в Linux на WSL

Для полноценного использования веб-сервера необходима СУБД, например, MySQL или MariaDB.

По идее, они должны запускаться командой вида:

sudo /usr/sbin/mysqld

Но в настоящее время MySQL/MariaDB ещё не работают в WSL.

Поддерживает ли Linux в WSL графический пользовательский интерфейс

Официально не поддерживается, но варианты его установки и подключения к нему имеются. Пример и больше подробностей вы найдёте в статье «Как установить Kali Linux с Win-KeX (графический интерфейс) в WSL2 (подсистему Windows для Linux)».


III. Решение проблем в WSL

Ошибка «WslRegisterDistribution failed with error: 0x80370102»

Если при попытке запуска дистрибутива вы получили ошибку:

WslRegisterDistribution failed with error: 0x80370102
Error: 0x80370102

то её причина в том, что центральный процессор не поддерживает виртуализацию. Причины могут быть разными:

  • вы отключили виртуализацию в БИОСе
  • процессор вообще не поддерживает виртуализацию
  • вы запускаете Windows уже в виртуальной машине (независимо от модели, там процессоры не поддерживают виртуализацию).

Ошибка «Address already in use … make_sock: could not bind to address»

При запуске сетевой службы, которая открывает порт для прослушивания, например, веб-сервер Apache:

sudo /usr/sbin/apache2ctl start

Может возникнуть примерно следующая ошибка:

(98)Address already in use: AH00072: make_sock: could not bind to address [::]:80
(98)Address already in use: AH00072: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
AH00015: Unable to open logs
Action 'start' failed.
The Apache error log may have more information.

Суть её в том, что указанный порт (80 в данном случае) уже используется другим процессом.

Ошибка может возникнуть даже в дистрибутиве, в котором не запущены сетевые службы. Дело в том, что на данный момент все дистрибутивы Linux имеют одну общую сетевую (виртуальную) карту. Поэтому если вы запустили веб-сервер или другую службу в одном дистрибутиве, вы не можете её запустить на другом, пока не остановите первый экземпляр.

Почему Linux в WSL не видит Wi-Fi адаптеры

У Linux в WSL нет прямого доступа к железу компьютера. По этой причине невозможно использовать Wi-Fi адаптеры, даже USB Wi-Fi адаптеры, в WSL.

Может ли Linux в WSL использовать видеокарты для выполнения вычислений

На данный момент Linux в WSL не может использовать графические процессоры, но эту функцию обещают добавить позже.

Ошибка в WSL (Kali Linux, Ubuntu) «sleep: cannot read realtime clock: Invalid argument»

Ошибка может возникнуть при попытке установить программу:

sudo apt install ПАКЕТ

Либо при обновлении пакетов и системы:

sudo apt update && sudo apt full-upgrade -y

Эти команды выводят что-то вроде следующего:

E: Unmet dependencies. Try 'apt --fix-broken install' with no packages (or specify a solution).

Запуск

sudo apt --fix-broken install

приведёт к другим ошибкам:

sleep: cannot read realtime clock: Invalid argument
dpkg: error processing package libc6:amd64 (--configure):
installed libc6:amd64 package post-installation script subprocess returned error exit status 1
Errors were encountered while processing:
libc6:amd64
E: Sub-process /usr/bin/dpkg returned an error code (1)

И так до бесконечности.

Для исправления выполните следующие команды:

sudo -i
sudo mv /bin/sleep /bin/sleep~;
touch /bin/sleep;
chmod +x /bin/sleep

Затем опять попробуйте

sudo apt --fix-broken install

И затем как обычно установите нужный пакет или обновите систему.

Ошибка «unable to connect to socket: Подключение не установлено, т.к. конечный компьютер отверг запрос на подключение. (10061)»

При использовании команды kex в Kali Linux (Win-KeX) может возникнуть ошибка:

unable to connect to socket: Подключение не установлено, т.к. конечный компьютер отверг запрос на подключение. (10061)

В командной строке выводится:

TigerVNC Viewer 32-bit v1.10.80
Built on: 2020-06-15 22:33
Copyright (C) 1999-2020 TigerVNC Team and many others (see README.rst)
See https://www.tigervnc.org for information on TigerVNC.

Fri Sep 11 06:41:39 2020
 DecodeManager: Detected 12 CPU core(s)
 DecodeManager: Creating 4 decoder thread(s)

Fri Sep 11 06:41:41 2020
 CConn:       unable to connect to socket: Подключение не
              установлено, т.к. конечный
              компьютер отверг запрос на
              подключение. (10061)

Для исправления этой ошибки нажмите Ctrl+c.

Затем введите команду

kex stop

Эта команда может вывести что-то вроде следующего:

Killing Win-KeX process ID 1618... which was already dead
Cleaning stale pidfile '/home/mial/.vnc/HackWare-MiAl.localdomain:1.pid'!
Cleaning stale x11 lock '/tmp/.X1-lock'!
Cleaning stale x11 lock '/tmp/.X11-unix/X1'!

Вновь попробуйте открыть графический интерфейс:

kex

На этот раз всё должно заработать:

Причина ошибки до конца не ясна — возможно, дело в неудачном старте VNC сервера или процесса Win-KeX, на это указывает строка «Win-KeX process ID 1618… which was already dead», то есть процесс уже мёртвый.

Командой kex stop мы принудительно останавливаем Win-KeX, который при следующем запуске работает нормально.

Ошибка «E: Release file for http://http.kali.org/kali/dists/kali-rolling/InRelease is not valid yet (invalid for another 2h 43min 57s). Updates for this repository will not be applied»

При попытке обновления Kali Linux я столкнулся с ошибкой:

Суть её в том, что релизный файл для репозитория ещё не является действительным и, следовательно, обновление из этого репозитория невозможно.

Такое может произойти из-за неправильной цифровой подписи репозитория или неправильного времени.

Я столкнулся с этой ошибкой в WSL2 (подсистеме Windows для Linux), но, теоретически, она может возникнуть и в обычном дистрибутиве Kali Linux, а также в Docker.

При запуске команды:

sudo apt update && sudo apt full-upgrade -y

Я получил:

Get:1 http://kali.download/kali kali-rolling InRelease [30.5 kB]
Reading package lists... Done
E: Release file for http://http.kali.org/kali/dists/kali-rolling/InRelease is not valid yet (invalid for another 2h 43min 57s). Updates for this repository will not be applied.

Эта проблема вызвана тем, что неверно установлена временная зона (timezone) в Windows в следствии чего дистрибутив Linux в WSL также получает неверное время.

Время дистрибутив в WSL получает при своём запуске, то есть даже если вы впоследствии исправили время в Windows, в запущенных ранее дистрибутивах WSL по-прежнему время будет неправильным и ошибка сохранится.

Для исправления, как уже было сказано, начать нужно с установки правильного времени и правильной временной зоны в хостовом компьютере Windows.

Затем вам нужно использовать один из следующих способов:

1. Можно выключить и заново запустить все дистрибутивы Linux, для этого выполните команду:

wsl --shutdown

2. Другой способ, внутри дистрибутива Linux выполните команду:

sudo hwclock --hctosys

Эта команда получает последнее время от RTC вашей машины Windows и использует его для установки системного времени в Linux.

Вновь попробуйте сделать обновление:

sudo apt update && sudo apt full-upgrade -y

Как можно убедиться по скриншоту, в этот раз обновление началось без ошибок:


Рекомендуется Вам:

2 комментария to WSL (подсистема Windows для Linux): подсказки, инструкции, решения проблем

  1. Alex Mon:

    Низкий поклон за материал!

  2. Дмитрий:

    Огромное спасибо, весьма полезную инфу собрали в одном месте!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *