Глава 2. Выгрузка, установка и настройка
Содержание
Подсистема Windows для Linux это функциональная возможность совместимости, которая действует как некий уровень трансляции, однако является свойством Windows, которое надлежит включить перед его применением. Затем нам требуется установить некий дистрибутив Linux из Microsoft Store и в конце концов настроить его перед первым использованием. Давайте начнём все эти шаги один за другим.
Подсистему Windows для Linux требуется разрешить на уровне операционной системы её хоста и имеется два способа достижения этого: первый применяет графический интерфейс пользователя (GUI), а второй использует PowerShell. Пока вы не включите подсистему Windows для Linux, вы не сможете запускать WSL в своей системе и вы будете получать показанную на приводимом ниже Рисунке 2-1. Этот снимок я сделал с экрана своей системы при установке дистрибутива Linux с отключённой функциональностью WSL, что и повлекло данную ошибку.
Давайте приступим к своему первому подходу.
Для включения WSL из GUI следуйте таким шагам:
-
Нажмите Windows + R для запуска диалога Run
-
Теперь наберите
appwiz.cpl
и нажмите кнопку Enter или кликните OK, как на Рисунке 2-2.
-
Это приведёт к всплыванию окна “Program and Features”, в котором вам придётся выбрать в верхнем левом углу “Turn Windows features on or off”, как это выделено на Рисунке 2-3.
-
На вашем экране всплывёт новое окно “Windows Features”. Отмотайте его, пожалуйста, вниз и кликните левой кнопкой по лаговой кнопке для “Windows Subsystem for Linux” (Рисунке 2-4).
-
Это включит необходимую функциональную возможность Windows, но всё же вам ещё потребуется перезапуск своей системы чтобы обнаружить эту настройку и изменение принятой. После перезагрузки вашей системы вы теперь сможете запускать WSL без отображения ошибок, подобных приводимым на Рисунке 2-1.
Теперь давайте взглянем на второй подход с применением PowerShell.
Включение подсистемы Windows для Linux при помощи PowerShell это простой процесс:
-
Выполнение приводимого ниже cmdlet, скорее всего, самый простой способ:
PS C:\> Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
-
как только вы запустите это, вы получите приглашение на перезапуск своей системы, как это отображено на Рисунке 2-5. Нажмите “Y” и кликните Enter для подтверждения включения необходимой функциональности Windows.
После включения функциональности Windows поддержки подсистемы Windows для Linux вам придётся затем установить некий пакет дистрибутива Linux из одного из шаблонов Microsoft, таких как Ubuntu, Debian, Kali Linux и тому подобных для их запуска в качестве экземпляра WSL. Имеется множество способов выгрузки пакетов распространения (distros), некоторые из которых перечисляются далее с точными шагами, которые вам требуется выполнить.
Дистрибутивы Linux могут быть напрямую выгружены из Microsoft Store при помощи таких инструкций:
-
Кликните по меню Start и отыщите “Microsoft Store”. Затем кликните по нему для запуска Microsoft Store.
-
В правом верхнем углу имеется строка поиска (шаг 1); введите: “Linux” и нажмите Enter. Вы обнаружите некоторые пакеты распространения Linux в отображаемых результатах поиска.
-
Просто в качестве примера, мы выгрузим из Microsoft Store Ubuntu 18.04 LTS (distro), кликнув по нему (шаг 2), что демонстрирует Рисунок 2-6.
-
Это откроет страницу выбранного дистрибутива, в которой вы в правом верхнем углу найдёте кнопку “Install”, что отображает Рисунок 2-7 и кликнув по этой кнопке вы приступите к установке данного дистрибутива в своей системе, который станет доступным в качестве приложения в Windows.
Microsoft создал прямые ссылки для выгрузки большого числа популярных дистрибутивов Linux через https://aka.ms/, снабжённые короткими URL, перечисляемыми в Таблице 2-1 Это подразумевает, что вы можете пройти по этим ссылкам и выгрузить некий дистрибутив Linux и такой подхд будет очень полезен, когда Microsoft Store был отключён/ блокирован в вашей системе через некую Групповую политику.
Название дистрибутива | URL выгрузки |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
По окончанию выгрузки будьте любезны кликнуть дважды по соответствующему файлу пакета приложения
(*.appx
) для установки выбранного дистрибутива inux, как это показано на
Рисунок 2-8.
Пакеты дистрибутивов Linux можно запросто выгрузить с помощью PowerShell, воспользовавшись cmdlet
Invoke-WebRequest
и передав ему напрямую URL выгрузки в качестве некого
аргумента в параметре “-URI
”. Код PowerShell из
Листинга 2-1
показывает как выгрузить пакет приложения Ubuntu 18.04. Аналогично можно воспользоваться и прочими упомянутыми
ранее URL для выгрузки разнообразных дистрибутивов для WSL. Устанавливая значение переменной предпочтительного
отображения хода выполнения $ProgressPreference ='SilentlyContinue'
можно
скрыть строку хода скачивания: это выгрузит ваш пакет быстрее без какой бы то ни было строки отображения состояния
в вашей консоли и в PowerShell v5.1 и более низких версиях это улучшает скорость выгрузки.
Запустите консоль PowerShell с полномочиями администратора и скопируйте туда приводимый ниже фрагмент кода, а затем нажмите Enter для его исполнения.
Листинг 2-1. Выгрузка дистрибутива Linux (Ubuntu 18.04) при помощи PowerShell
$URL = 'https://aka.ms/wsl-ubuntu-1804'
$Filename = "$(Split-Path $URL -Leaf).appx"
$ProgressPreference = 'SilentlyContinue'
# starts download from the URL
$Params = @{
URI = $URL
OutFile = $Filename
UseBasicParsing = $true
}
Invoke-WebRequest @Params
# invoking the application package
# to start the installation
Invoke-Item $FileName
Выполнение данного кода выгрузит приложение Ubuntu 18.04 LTS в виде файла
wsl-ubuntu-1804.appx
. По завершению выгрузки вы сможете применить Cmdlet
Invoke-Item
к соответствующему файлу
.appx
в текущем рабочем каталоге для запуска GUI установки приложения и
далее кликнуть по кнопке install, как это показано на
Рисунке 2-9.
В качестве альтернативы можно итеративно пройтись по всем URL и выгрузить их один за другим при помощи cmdlet
PowerShell Add-AppxPackage
и добавить все пакеты приложений
(*.appx)
в соответствующую учётную запись пользователя
(Листинг 2-2).
Листинг 2-2. Добавление всех пакетов дистрибутивов Linux в учётную запись пользователя
$URLs = @(
"https://aka.ms/wsl-ubuntu-1804",
"https://aka.ms/wsl-ubuntu-1804-arm",
"https://aka.ms/wsl-ubuntu-1604",
"https://aka.ms/wsl-debian-gnulinux",
"https://aka.ms/wsl-kali-linux",
"https://aka.ms/wsl-opensuse-42",
"https://aka.ms/wsl-sles-12"
)
$ProgressPreference = 'SilentlyContinue'
$ErrorActionPreference = 'Stop'
Foreach($URL in $URLs){
$Filename = "$(Split-Path $URL -Leaf).appx"
Write-Host "Downloading: $Filename" -Foreground Yellow -NoNewline
try{
$params = @{
Uri = $URL
Outfile = $Filename
UseBasicParsing = $true
}
Invoke-WebRequest @params
Add-AppxPackage -Path $Filename
if($?){
Write-Host " Done" -Foreground Green
}
}
catch{
Write-Host " Failed" -Foreground Red
}
}
Когда будет выполнен этот код PowerShell, он установит все перечисленные дистрибутивы Linux один за другим, как это показано на Рисунке 2-10 и вы сможете убедиться в этом пройдя в меню Start и проверив только что добавленные приложения.
curl.exe
, произносимая как "курл" является очень популярной
утилитой командной строки, которая применяется для выполнения веб запросов и обмена данными из вашей командной
строки. curl.exe
можно применить с неким URL для выгрузки соответствующего
пакета распространения WSL в вашей локальной машине:
> curl.exe -L -o wsl-kali-linux.appx https://aka.ms/wsl-kali-linux
Рисунок 2-11
отображает после того как мы запустим curl.exe
с непосредственным URL к некому пакету дистрибутива Linux, он будет выгружен и сохранён в указанном локальном пути,
который передаётся через некий аргумент “-o
”, подобно
wsl-kali-linux.appx
из нашего образца; это название файла при необходимости можно
изменить и ваш вывод будет записан в неком новом файле. Использование curl.exe
предпочтительнее когда вы применяете выгрузку и установку WSL в неком сценарии bash, когда не работают применявшиеся
нами в предыдущих cmdlet PowerShell.
Замечание | |
---|---|
Мы запускаем |
В своём предыдущем разделе мы изучили различные подходы для выгрузки и установки подсистемы Windows для Linux в вашей системе. Следующий подлежащий изучению момент состоит в том как подготовить и настроить WSL для самого первого применения, но перед этим давайте взглянем на различные способы запуска дистрибутива Linux, исполняемого в подсистеме Windows для Linux.
Дистрибутив Linux можно запускать в виде некого установленного приложения или запуская соответствующий
исполняемый файл специфичный для дистрибутива, или даже при помощи wsl.exe
.
Давайте взглянем на каждый из этих подходов один за другим.
В качестве приложения
Итак, чтобы начать, пройдите в меню Start и наберите искомое название своего дистрибутива, например, “Ubuntu”, как это показано на Рисунке 2-12.
Теперь дважды кликните по соответствующему приложению Ubuntu как это выделено на Рисунке 2-12 для запуска подсистемы Windows для Linux в первый раз. Вам будет предложено подождать несколько минут пока она подготовит и проинициализирует указанный дистрибутив в первый раз.
При помощи wsl.exe
Дистрибутивы WSL также можно запускать через wsl.exe
; если вы запустите
этот исполняемый файл без каких бы то ни было параметров, он тогла запустит установленный по умолчанию пакет
дистрибутива, как это отображено на
Рисунке 2-13.
Чтобы перечислить все установленные в вашей системе пакеты дистрибутивов и указать дистрибутив по умолчанию
запустите исполняемый файл wsl
с
--list
или -l
:
> wsl.exe -–list
> wsl.exe –l
Часто будет требоваться запускать некий конкретный пакет дистрибутива; в таком случае мы можем воспользоваться
параметрами --distribution
или -d
,
как это показано на
Рисунке 2-14
с соответствующим wsl.exe
и передать ему в качестве аргумента необходимое название
дистрибутива, что отражено в
Листинге 2-3.
Листинг 2-3. Запуск определённого дистрибутива Linux
C:\>wsl.exe –l
Windows Subsystem for Linux Distributions:
Ubuntu-18.04 (Default)
openSUSE-42
SLES-12
kali-linux
C:\>wsl.exe --distribution kali-linux
C:\>wsl.exe -d sles-12
Позднее в этой книге мы более подробно рассмотрим прочие возможности и аргументы командной строки, которые
принимает wsl.exe
; на данный момент давайте просто осознаем несколько важных
моментов относительно запуска дистрибутива при помощи wsl.exe
, а именно:
-
WSL запускает дистрибутив в текущем рабочем каталоге из соответствующего приглашения на ввод CMD или PowerShell.
-
Вызываемый через
wsl.exe
дистрибутив Linux будет запускаться от имени пользователя по умолчанию этого дистрибутива, но вы можете изменять такое поведение применяя параметр--user
или-u
и передавая через него имя конкретного пользователя в качестве аргумента:> wsl.exe --distribution Ubuntu-18.04 --user prateek
-
Вызываемый через
wsl.exe
дистрибутив Linux будет обладать теми же самыми административными правами что и вызывающий процесс и терминал.
С применением исполняемого файла
Все дистрибутивы Linux также можно запросто запускать напрямую при помощи их соответствующих исполняемых
файлов, как это показано на
Рисунке 2-15,
который весь располагается в каталоге
“C:\Users\{username}\AppData\Local\Microsoft\WindowsApps\
”
и здесь в
Листинге 2-4
несколько примеров, которые вы можете попробовать самостоятельно.
Листинг 2-4. Запуск дистрибутива Linux через его исполняемый файл
# launching ubuntu 18.04
ubuntu1804.exe
# launching kali linux
kali.exe
# launching openSUSE 42
openSUSE-42.exe
В этом подразделе мы изучили различные подходы к запуску дистрибутива Linux в WSL, однако когда некий дистрибутив Linux вызывается впервые, самая первая настройка выдаёт для своего пользователя приглашение для создания некой учётной записи пользователя; давайте рассмотрим это и изучим как управлять учётными записями пользователей в WSL.
Создание некого пользователя это самый первый шаг в настройке некого нового дистрибутива Linux в WSL, а потому,
как только вся инициализация завершена, как это можно наблюдать на
Рисунке 2-16,
у вас будет запрошено создание некой новой учётной записи пользователя с каким- то паролем. Эта учётная запись
пользователя автоматически конфигурируется в качестве пользователя данного дистрибутива по умолчанию и она
добавляется в группу “sudo
” в качестве администратора Linux.
Конфигурация такого пользователя требуется всякий раз когда вы устанавливаете, переустанавливаете или сбрасываете
дистрибутив.
Замечание | |
---|---|
При вводе пароля он не отображается эхом в консоли по причинам безопасности и это не означает что ваша система не получила соответствующие нажатия клавиш. |
По умолчанию ввод пароля не требуется при запуске вами дистрибутива, однако он потребуется когда вы повышаете
значения полномочий любого процесса при помощи команды sudo
.
Для изменения своего текущего пароля пользователя в Linux откройте свой дистрибутив Linux (например, Ubuntu)
и введите команду passwd
и, как это отображено на
Рисунке 2-17,
у вас будет запрошен на ввод ваш текущий пароль и, когда вы предоставите его, он снова будет запрошен для
подтверждения.
В случае если вы забыли свой пароль для какого- то из конкретных дистрибутивов Linux, откройте PowerShell или приглашение на ввод команд из меню Start и запустите их от имени root в своём целевом дистрибутиве WSL воспользовавшись следующей командой:
> wsl -u root -d <name of distribution>
После того как ваш дистрибутив запустился со своим пользователем root, следуйте далее и воспользуйтесь
командой passwd
с именем того пользователя, для которого вы желаете
сбросить значение пароля, как это сделано в приводимом ниже примере:
> passwd prateek
Если вы не применяете пользователя root, у вас не будет достаточно прав для сброса пароля для любого иного пользователя без ввода значения его текущего пароля, который мы изначально позабыли.
Пользователи Unix в подсистеме Windows для Linux являются не Windows учётными записями пользователя, которые не зависят от модели полномочий Windows, что потребует повышения полномочий в вашем дистрибутиве Linux. Существуют две отдельные модели полномочий в WSL для Linux и Windows, причём они не зависят друг от друга. Это означает, что некий пользователь администратор Linux повысит полномочия только в своей среде Linux и полномочия Linux не работают в Windows.
Уловка состоит в том, что поскольку WSL запускается и инициализируется некой учётной записью пользователя Windows, любые ресурсы Windows, к которым имеет доступ эта учётная запись, также будут доступны изнутри подсистемы Windows для Linux.
Как это показано на
Рисунке 2-18,
мы запросто можем получать доступ к таким точкам монтирования в среде Linux, которые ничто иное как устройства
Windows, смонтированные в подсистеме Windows для Linux. Когда текущий пользователь Windows запускает
команду ls
в неком каталоге, который доступен ему, а затем направляет
конвейером полученный результат в команду wc -l
для получения общего
числа возвращаемых строк, мы видим, что это значение счётчика больше нуля, однако если текущий пользователь
попытается получить доступ к любому иному каталогу, к которому не имеет надлежащих полномочий, тогда будет
возвращён нулевой результат. Это доказывает наш предыдущий момент, что даже хотя вы и работаете в подсистеме
Linux, ваши полномочия Windows применяются к тем ресурсам Windows, к которым вы осуществляете доступ.
Но когда я попытаюсь получить доступ к некому каталогу Windows, для которого у меня нет полномочий, всё
завершится ошибкой “Permission denied”. Это происходит по той причине, что пользователь Windows
“Prateek
”, через которого запускается WSL, имеет дотуп к папке
профиля своего пользователя C:\Users\Prateek.THINKPAD
, но
не имеет привилегий для папки профиля пользователя “Administrator
”.
Теперь нам известно как устанавливать WSL и инициализировать его для самого первого применения, но даже когда вы выполняете свежую установку, скорее всего, что некоторые устанавливаемые по умолчанию пакеты и инструменты, которые поставляются вместе с вашим дистрибутивом Linux слегка отстают по дате и имеются их новые версии. Поэтому, нам требуется некий механизм их обновления до самых последних версий, потому как они более стабильны и поступают с исправлениями ошибок и улучшениями безопасности.
Замечание | |
---|---|
Для упрощения чтения мы работаем в предположении, что вы применяете дистрибутивы Ubuntu или Debian, которые являются двумя наиболее популярными дистрибутивами, если вы используете какой- либо иной дистрибутив, тогда последующие команды обновления и модернизации могут оказаться неприменимыми для вас. |
Перво- наперво, прежде чем переходить к тому как это сделать, давайте сначала поймём общее различие между обновлением (update) и модернизацией (upgrade). Обновление - это процесс замены текущего продукта более новой и более совершенной версией продукта, тогда как модернизация изменяет ваш текущий продукт. С точки зрения Linux, а точнее для Ubuntu и Debian, "обновление" означает освежение всего списка установленных пакетов, например, повышение их версий и т.п., без изменения чего либо ещё, а "модернизация" означает установку и обновления в сам список установленных пакетов.
Почти все дистрибутивы являются легковесными минимальными пакетами программного обеспечения, которые могут быстро выгружаться и инициализироваться; они имеют лишь необходимые инструменты и библиотеки, поставляемые с ними. Хорошей мыслью является обновление и модернизация вашего дистрибутива с применением команд из Листинге 2-5; обратите, пожалуйста, внимание что этот шаг может потребовать некого времени до своего завершения, и вы обнаружите выгрузку пакетов, как это отображено на Рисунке 2-19.
Листинг 2-4. Обновление и модернизация подсистемы Windows для Linux
sudo apt update && sudo apt upgrade
На Рисунке 2-19
apt
это сокращение для “Advanced Package Tool”, и
apt
это инструмент командной строки, который способствует в обработке пакетов
Ubuntu и Debian и связанных с ними дистрибутивах Linux. apt
взаимодействует
с системами пакетов Ubuntu и Debin для поиска и установки более новых пакетов и для модернизации или удаления
пакетов. Однако существует распространённое заблуждение, что apt update
устанавливает новые версии обновлений программных пакетов в Linux, что не так. Вместо этого данная команда
обновляет базу данных, носящую название индексом пакетов apt
, которая
удерживает список доступных из репозитория пакетов программного обеспечения своего дистрибутива в файле
‘/etc/apt/sources.list
’.
Например, когда у вас имеется установленным Python v3.5, тогда после apt
update
наша вышеупомянутая база данных будет осведомлена об имеющейся и доступной более новой
версии Python, версии 3.6. Теперь, когда вы запустите apt upgrade
он
модернизирует Python v3.5 до более новой версии.
Однако наша история на этом не завершается и, в качестве разработчика, по различным причинам, вам всё ещё требуются прочие инструменты и пакеты в вашем дистрибутиве Linux; поэтому теперь мы рассмотрим установку дополнительного программного обеспечения в вашей подсистеме Windows для Linux в своём следующем подразделе.
Реальная цель обладания подсистемой Windows для Linux состоит в том чтобы позволить разработчикам применять свои
любимые инструменты в Windows для расширения их общей практики разработки. Как и в любом ином варианте операционной
системы Linux, в подсистеме Windows для Linux, большинство таких утилит, инструментов и пакетов Linux можно запросто
установить при помощи такого диспетчера пакетов как apt
, который является
коллекцией инструментов для управления пакетоами. В своём следующем примере мы устанавливаем с помощью команды
apt install
в своём дистрибутиве Linux nodejs
,
git
и nmap
:
> sudo apt install nodejs git nmap
APT это коллекция таких инструментов, как apt
,
apt-get
и apt-cache
, которые
приносят в общую таблицу чуть больше , например, возможность поиска пакетов при помощи
apt-cache search
, определяя через
search
ключевое слово и он может проверить даже подробные сведения
такого пакета, например, Архитектуру, Размер, Контрольную сумму MD5 и тому подобное при помощи команды
apt-cache show
, что показано на
Рисунке 2-20:
> apt-cache search aws-cli
> apt-cache show python3-botocore
В этой главе мы изучили как разрешать подсистему Windows для Linux системах Windows 10 и различные методы выгрузки и установки дистрибутивов Linux. После того как это сделано, мы запустили свою подсистему Windows для Linux под самое первое применение, проследовали установку, настройку и управление пользователями. Проходя далее к своей следующей главе мы собираемся изучать сборку смешанной практики между средами Windows и Linux наводя мосты в промежутке между этими двумя операционными системами и предоставляя всё наилучшее из этих жвух миров для разработчиков и системных администраторов.