Установка линукс из под windows 10

Установка Linux в Windows 10В Windows 10 появилась новая возможность для разработчиков — оболочка Ubuntu Bash, позволяющая запускать, устанавливать приложения Linux, использовать скрипты bash прямо в Windows 10, все это называется «Подсистема Windows для Linux». В версии Windows 10 1709 Fall Creators Update доступны уже три дистрибутива Linux для установки. Во всех случаях требуется 64-разрядная система для установки.

В этой инструкции — о том, как установить Ubuntu, OpenSUSE или SUSE Linux Enterprise Server в Windows 10 и некоторые примеры использования в конце статьи. Следует также учитывать, что есть некоторые ограничения при использовании bash в Windows: например, нельзя запускать GUI приложения (правда, сообщают об обходных путях с помощью X server). Кроме этого, командами bash нельзя запустить Windows-программы, несмотря на наличие полного доступа к файловой системе ОС.

Установка Ubuntu, OpenSUSE или SUSE Linux Enterprise Server в Windows 10

Начиная с версии Windows 10 Fall Creators Update (версия 1709) установка подсистемы Linux для Windows несколько изменилась по сравнению с тем, что было в предыдущих версиях (для предыдущих версий, начиная с 1607, когда функция была представлена в бета-версии, инструкция — во второй части этой статьи). Также обратите внимание, что в Windows 10 2004 можно установить Kali Linux с графическим интерфейсом.

Теперь необходимые шаги выглядят следующим образом:

  1. Прежде всего, необходимо включить компонент «Подсистема Windows для Linux» в «Панель управления» — «Программы и компоненты» — «Включение и отключение компонентов Windows». Включение компонентов Linux для Windows 10
  2. После установки компонентов и перезагрузки компьютера, зайдите в Магазин приложений Windows 10 и загрузите оттуда Ubuntu, OpenSUSE или SUSE Linux ES (да, теперь доступно три дистрибутива). При загрузке возможны некоторые нюансы, о которых далее в примечаниях. Дистрибутивы Linux в магазине Windows 10
  3. Запустите загруженный дистрибутив как обычное приложение Windows 10 и выполните первоначальную настройку (имя пользователя и пароль). Настройка Ubuntu Linux в Windows 10 1709

Для включения компонента «Подсистема Windows для Linux» (первый шаг) можно использовать команду PowerShell:

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

Теперь несколько примечаний, которые могут быть полезны при установке:

  • Вы можете установить сразу несколько дистрибутивов Linux.
  • При загрузке дистрибутивов Ubuntu, OpenSUSE и SUSE Linux Enterprise Server в русскоязычном магазине Windows 10 заметил следующий нюанс: если просто ввести название и нажать Enter, то нужных результатов в поиске не оказывается, но если начать вводить и затем нажать по появляющейся подсказке, автоматически попадаешь на нужную страницу. На всякий случай прямые ссылки на дистрибутивы в магазине: Ubuntu, OpenSUSE, SUSE LES.
  • Запускать Linux можно и из командной строки (не только с плитки в меню Пуск): ubuntu, opensuse-42 или sles-12

Установка Bash в Windows 10 1607 и 1703

Для того, чтобы установить оболочку bash, выполните следующие простые действия.

  1. Зайдите в параметры Windows 10 — Обновление и безопасность — Для разработчиков. Включите режим разработчика (должен быть подключен Интернет для загрузки необходимых компонентов). Включение режима разработчика в Windows 10
  2. Зайдите в панель управления — Программы и компоненты — Включение или отключение компонентов Windows, отметьте пункт «Подсистема Windows для Linux». Установка подсистемы Linux в Windows 10
  3. После установки компонентов, введите в поиске Windows 10 «bash», запустите предлагаемый вариант приложения и выполните установку. Вы можете задать свое имя пользователя и пароль для bash, либо использовать пользователя root без пароля. Установка Ubuntu bash

По завершении установки вы можете запускать Ubuntu Bash на Windows 10 через поиск, или создав ярлык для оболочки там, где вам требуется.

Запуск Ubuntu Bash в Windows 10

Примеры использования Ubuntu Shell в Windows

Для начала отмечу, что автор не является специалистом по bash, Linux и разработке, а примеры ниже — просто демонстрация того, что в Windows 10 bash работает с ожидаемыми результатами для тех, кто разбирается в этом.

Приложения Linux

Приложения в Windows 10 Bash можно устанавливать, удалять и обновлять с помощью apt-get (sudo apt-get) из репозитория Ubuntu.

apt-get install в Windows 10

Использование приложений с текстовым интерфейсом ничем не отличается от такового на Ubuntu, например, вы можете установить Git в Bash и использовать его привычным образом.

Использование bash git в Windows 10

Скрипты bash

Вы можете запускать скрипты bash в Windows 10, создать их можно в имеющемся в оболочке текстовом редакторе Nano.

Скрипты bash в Windows 10

Скрипты bash не могут вызвать программы и команды Windows, но возможен запуск скриптов и команд bash из bat файлов и сценариев PowerShell:

bash -c "команда"

Также вы можете попробовать запускать приложения с графическим интерфейсом в Ubuntu Shell в Windows 10, на этот счет в Интернете уже имеется не одна инструкция и суть способа сводится к использованию Xming X Server для вывода GUI приложения. Хотя официально возможность работы с такими приложениями Майкрософт не заявлена.

Как было написано выше, я не тот человек, который может в полной степени оценить ценность и функциональность нововведения, но вижу как минимум одно применение для себя: различные курсы Udacity, edX и другие, связанные с разработкой проходить будет куда проще, работая с необходимыми инструментами прямо в bash (а в этих курсах обычно демонстрируется работа именно в терминале MacOS и Linux bash).

1. Overview

Windows Subsystem for Linux (WSL) allows you to install a complete Ubuntu terminal environment in minutes on your Windows machine, allowing you to develop cross-platform applications without leaving Windows.

In this tutorial, we’ll show you how to get up and running with Ubuntu on WSL. These instructions will work on both Windows 10 or Windows 11.

Whilst WSL is a powerful tool for all users, some features, such as the ability to run graphical Linux applications, are only available on Windows 11. Please check out our Windows 11 tutorial for more information.


2. Install WSL

Installing WSL is now easier than ever. Search for Windows PowerShell in your Windows search bar, then select Run as administrator.

At the command prompt type:

wsl --install

And wait for the process to complete.

For WSL to be properly activated, you will now need to restart your computer.


3. Download Ubuntu

WSL supports a variety of Linux distributions, including the latest Ubuntu release, Ubuntu 20.04 LTS and Ubuntu 18.04 LTS. You can find them by opening the Microsoft store app and searching for Ubuntu.

Choose the distribution you prefer and then click on Get as shown in the following screenshot:

Ubuntu will then install on your machine.

The one line install!

There is a single command that will install both WSL and Ubuntu at the same time.
When opening PowerShell for the first time, simply modify the initial instruction to:

wsl --install -d ubuntu

This will install both WSL and Ubuntu! Don’t forget to restart your machine before continuing.

Once installed, you can either launch the application directly from the store or search for Ubuntu in your Windows search bar.


4. Configure Ubuntu

Congratulations, you now have an Ubuntu terminal running on your Windows machine!

If Ubuntu returns an error during this initial installation, then the most common issue is that virtualisation is disabled in your device’s BIOS menu. You will need to turn this on during your device’s boot sequence. The location of this option varies by manufacturer, so you will need to refer to their documentation to find it.

Once Ubuntu has finished its initial setup you will need to create a username and password (this does not need to match your Windows user credentials).

Finally, it’s always good practice to install the latest updates with the following commands, entering your password when prompted.

sudo apt update

Then

sudo apt upgrade

Press Y when prompted.


5. Install your first package

Installing packages on Ubuntu is as easy as using a single command. Below, you will see how to install bpython, a simple python interpreter for trying out ideas, featuring some nice usability features like expected parameters and autocompletion.

To check that you have the latest package lists, type:

sudo apt update

Then install bpython:

sudo apt install bpython

To run the application type:

bpython

And you’re ready to go!


6. Customising your Terminal with Windows Terminal Preview

Since you’re likely to be using your Ubuntu terminal a fair bit, it’s always nice to do some customisation. We recommend installing Windows Terminal Preview to get the most user-friendly setup. You can find it in the Microsoft Store.

Windows Terminal allows you to open multiple Terminal instances as tabs, so you can have PowerShell running alongside Ubuntu. It also includes a number of customisation options. In the below screenshot, we’ve changed the tab name and colour, and configured the terminal appearance to use the Tango Dark theme and the Ubuntu font!

These customisations can be applied universally using the Appearance menu in Settings or to individual profiles which each have their own Appearance menu. Try it yourself to find something you feel comfortable with!


7. Enjoy Ubuntu on WSL!

That’s it! In this tutorial, you’ve seen how to install WSL and Ubuntu, set up your profile, and install your first package. You also got some tips on how to customise your experience.

We hope you enjoy working with Ubuntu inside WSL. Don’t forget to check out our blog for the latest news on all things Ubuntu.

Further Reading

  • Install Ubuntu on WSL2 on Windows 11 with GUI Support
  • Working with Visual Studio Code on Ubuntu on WSL2
  • Enabling GPU acceleration on Ubuntu on WSL2 with the NVIDIA CUDA Platform
  • Setting up WSL for Data Science
  • WSL on Ubuntu Wiki
  • Ask Ubuntu

Was this tutorial useful?

Thank you for your feedback.


Either you love or hate it, but you won’t’ be able to ignore it. Yes, that’s the power of Open source and Linux. In this tutorial, I will show you “How to install Linux on Windows 10 using WSL1“. and explain “How to update WSL1 to WSL2 kernel in Windows 10“, in case you already have WSL1 installed.

  • Checkout new Windows 11 features
  • Install WSL on Windows 10 in single command

Have you ever imagined, Microsoft “The market dominator” will handshake with Open source and will support its development?

Whatever you never thought is now possible on Windows, In earlier days, if I need to run Rsync or any other Linux utility, Cygwin was the answer to most of the problems.

Nowadays there are options like VMware Workstation Player, Virtual box and many other Virtualization Software to install Linux as guest OS but Microsoft is thinking differently.

Microsoft has introduced WSL2 (Windows Subsystem for Linux) recently to make developer’s life easy. Now administrators and developers can run Linux commands or can do programming from windows 10 itself.

let’s understand a bit on WSL1 and WSL2

What are WSL1 and WSL2

WSL (Windows subsystem for Linux) was aimed to enable bash shell and core Linux commands/utilities for Developer and users. WSL2 (Windows subsystem for Linux version2) is an upgraded version of WSL1.

The main motto of introducing WSL2 was to increase the performance and to support full system call compatibility with a lighter VM. Installation of Docker, Editors, Core Linux utilities and Developer tools is now possible in WSL2.

A complete Linux kernel has been introduced by Microsoft and future upgrades will be in pipeline, the only major limitation of WSL is no GUI (although debatable), you have to deal with the command line.

Prerequisite to install WSL1 or WSL2

  • WSL1/WSL2 both are supported on Windows 10 and Windows server 2019 64 bit version only. WSL1 requires Windows 10 Build 16215 or later and WSL2 is only available for Windows10 Builds 19041 or higher.
  • Computer with Hyper-V or Virtualization support and enabled from Bios.
  • 64-bit Processor with Second Level Address Translation (SLAT) for WSL2. For WSL1, SLAT is not mandatory and it works fine without it.
  1. Check your windows version
  2. Enable Linux subsystem for Windows 10 feature and restart.
  3. Download, Extract and install Linux distribution
  4. Provide username and password for user
  5. Launch your Distribution.

I will show you all steps on Windows 10 latest update 2004 with Ubuntu 20.04 on the Command line and Ubuntu 18.04 on GUI

Step1 – Check your windows version

Check your windows version using “Windows key + R” and type “Winver” in the run dialogue box.

check-build-to-install-linux-windows10

then open “system information” by typing “msinfo” in the search bar for hardware information (32 or 64bit). Look for the information “System type”, it must be 64 bit.

check-hardware-architecture-x64

Step2 – Enable Linux subsystem to deploy Linux on Windows 10

–> Enable windows subsystem for Linux (WSL) using PowerShell

Open Powershell window “Run as administrator” from the search bar and type this command to enable Linux subsystem for Windows 10 feature.

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

once the command is successful, restart your machine.

–> Enable windows subsystem for Linux using Graphical user interface (GUI)

  • Search for “Turn Windows Features on or off” in the windows search bar.
  • Open and scroll down – Select the “Windows subsystem for Linux” box and click OK. Restart your system.

enable-wsl-gui-to-install-linux-on-windows10

Step3 – Download your favourite Linux Distro

Download your favourite Linux distro from the command line or Microsoft store, I will download Ubuntu 20.04 from the Power Shell command line. Replace “wslubuntu2004” with your “distro name” in the command.

Check out the Microsoft site to download manually.

  • Ubuntu 16.04 LTS
  • Ubuntu 18.04 LTS 
  • openSUSE Leap 42 
  • Ubuntu 20.04 LTS 
  • SUSE Linux Enterprise Server 12 SP5 
  • SUSE Linux Enterprise Server 15 SP1
  • Kali Linux 
  • Debian GNU/Linux 
  • Fedora Remix for WSL
  • Pengwin
  • Pengwin Enterprise
  • Alpine WSL
Invoke-WebRequest -Uri https://aka.ms/wslubuntu2004 -OutFile Ubuntu.appx -UseBasicParsing

Go to your Downloads directory using the cd command, Rename your distro file in Powershell console.

For example

Ubuntu_2004.2020.424.0_x64.appx renamed to ubuntu.zip

Rename-Item .\Ubuntu_2004.2020.424.0_x64.appx .\Ubuntu.zip

Extract zip file from Powershell (PS) window.

Expand-Archive .\Ubuntu.zip .\Ubuntu

Now change to the Ubuntu or distro directory using “cd” command and launch your “distro-name.exe“, “Ubuntu2004.exe” in my case.

Linux-on-windows10-launch

Step4 – Provide your credentials

Once the installation will finish successfully, it will ask for a username and password for your Linux distro, so provide as per your preference.

enter-Username-password-wsl-windows10

Step5 – Validate your favourite Linux on windows 10

Search your “Distro name” in the Windows search bar and click “open“. and you will be in your favourite Linux prompt.

ubuntu-20-04-launch-linux-windows10


Steps to update WSL1 to WSL2 kernel in Windows 10

  1. Check your windows version
  2. Check for Second Level Address Translation (SLAT) using systeminfo command.
  3. Enable Linux subsystem for Windows 10 feature and restart your machine
  4. Enable the “VM (Virtual machine) platform” component and restart your machine
  5. Install wsl2 Kernel
  6. Set WSL2 as your default version
  7. Install your favourite distro from the Microsoft Store app and Launch

Step6 – Check your windows version and architecture

Follow the instructions of “Step1” to check the windows version and 64bit architecture.

Step7 -Check for Second Level Address Translation (SLAT) for WSL2

The 64-bit processor with SLAT is the key requirement for WSL2. Run the systeminfo command and verify. If you don’t have SLAT support, then WSL2 will not work in your system.

Step8 – Enable Linux subsystem to install Linux on Windows 10

Enable Linux subsystem for Windows 10 feature and restart your machine as per Step2. 

Step9 – Enable virtualization

–> Enable virtual machine platform  feature using PowerShell

Enable the “VM (Virtual machine) platform” component in the PowerShell console and restart your machine.

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

Output

Deployment Image Servicing and Management tool
Version: 10.0.19041.329

Image Version: 10.0.19041.388

Enabling feature(s)
[==========================100.0%==========================]
The operation completed successfully.

–> Enable virtual machine platform (Virtualization) feature using GUI

  • Search for “Turn Windows Features on or off” in the windows search bar.
  • Open and scroll down – Select the “Virtual machine platform” box and click OK. Now restart your machine.

enable-virtual-machine-platform-windows10

Step10 – Run Kernel installer

Install WSL2 Kernel as WSL2 requires an update to its kernel component. Download kernel by visiting “https://aka.ms/wsl2kernel” or click here.

Once the download completes, run the “.msi” installer and complete the wizard.

wsl-kernel-setup-to-install-linux-windows10

Step11 – Change WSL version

Set WSL2 as your default version and check your version. Update from WSL1 to WSL2 may take some time to complete.

wsl --set-default-version 2

Note

If wsl –set-default-version ends up as an invalid command, just enter wsl –help and provide command as listed in help. If the –set-default-version is not listed, means it’s not supported by your windows10 build and try updating it to version 2004, Build 19041 or higher.

Step12 – Install Linux on Windows 10 using GUI

If you are working on the GUI (Graphical user interface), look for your favourite Linux distro from Microsoft Store, open “Microsoft store” from the search console

Microsoft-store-ubuntu

Click on Get to download and install your distro, mine is Ubuntu 18.04 in case of GUI

install-linux-windows10

Download your Ubuntu

Click on Launch after download completes, it will ask for username and password for your Linux distro, so provide as per your preference.

Username-password

Search your “Distro name” in the windows search bar and click “open“. I can see both Ubuntu 18.04 and Ubuntu 20.04 as installed using GUI and Command-line respectively.

launch-linux-windows10

Enjoy Linux on Windows 10.

install-linux-windows10-wsl

let’s check the WSL version for Ubuntu 20.04 and Ubuntu 18.04. It must be WSL1 for ubuntu 20.04 and WSL2 for ubuntu 18.04 after the upgrade.

wsl --list --verbose

chek-wsl-version

How to Uninstall Linux Distro (WSL) from windows 10

Step13 – Open PowerShell and remove Distro package

Open PowerShell “Run as administrator” and run the below-mentioned command with your distro to list package name.

Get-AppxPackage *distro-name*

For Example Ubuntu in my case

Get-AppxPackage *ubuntu*

search ubuntu package wsl

Make a note of “your distro package name” as highlighted in screenshot and Remove package with “Remove-AppxPackage” command.

Example

Get-AppxPackage "CanonicalGroupLimited.Ubuntu18.04onWindows" | Remove-AppxPackage

How to Disable WSL (Windows Subsystem for Linux) feature

Step14 – Disable Windows subsystem from PowerShell

Open Powershell,Run as administrator” and execute the below-mentioned command, once you have completed distro package removal in step12.

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

Press “Y” to disable it.

Disable wsl feature windows10

It will restart your computer and you are done.

Step15 – Disable Windows subsystem for Linux from GUI.

  • Search for “Turn Windows Features on or off” in the windows search bar.
  • Open and scroll down – Remove the checkmark from the “Windows subsystem for Linux” box and click OK. Restart your system.

disable-wsl-windows10

Note*

All the above-mentioned steps are applicable to “Install Linux on Windows 2019 using WSL” also.

Common errors and solution regarding WSL

1# Fix for Error: 0x80040306

This error may occur during installation because Microsoft doesn’t support legacy console. So, to resolve this issue, you have to disable the legacy console.

Open Command prompt by typing “cmd.exe” -> Open properties by right-clicking title bar -> Uncheck use legacy console in cmd properties – then click ok.

2# Fix for Error: 0x80040154

This error may occur after a windows update, which sometimes results in disabling the windows subsystem for the Linux feature. So, to fix this issue, you just need to follow step 2 of this tutorial.

3# Fix for “The referenced assembly could not be found”

You may face this error while enabling WSL optional features. This may occur due to the bad installation. So to resolve this, you may try updating Windows to fix it or you may need to reinstall windows 10.

4# Fix for “Error: 0x1bc while setting WSL default version 2”

This error may occur while executing step 10 of this tutorial.  Follow step 9 of this tutorial (install kernel) to get this fix. If your CPU doesn’t support SLAT (second-level address translation). Then also, you won’t be able to upgrade to WSL2.

Video

Install Linux on Windows 10 using (wsl1 or wsl2) update 2020

Summary Note

I have shown you, “How to install Linux on Windows 10 with WSL1″, and How to upgrade your WSL1 to WSL2 with the kernel upgrade and set up WSL2 as your default version.

If you liked this article, please share it on your social media and comment, if you are facing any issue during installation.

Enjoy your favourite Linux on Windows, who knows in future, Windows will be provided as a subsystem to Linux.

Signing off with this thought 💡

Время на прочтение
9 мин

Количество просмотров 242K

К написанию данной статьи меня побудил вопрос на Тостере, связанный с WSL. Я, после нескольких лет использования систем на ядре Linux, около полугода назад перешел к использованию Windows 10 на домашнем ПК. Зависимость от терминала и Linux окружения в моей работе практически сразу привели меня к вопросу: или ставить виртуалку или попробовать WSL. Я выбрал второе, и остался вполне доволен.

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

Никогда не думал, что однажды вернусь на Windows, но повод попробовать мне дали стечения обстоятельств: жена, далекая от IT, дергала почти каждый раз, когда у нее возникала необходимость воспользоваться компом; проснулась ностальгия по одной игре, но она никак не хотела адекватно работать под wine; а тут еще мне подарили коробочную Windows 10 Pro. WSL я поставил чуть ли не сразу после установки системы, поигрался несколько вечеров, понял, что продукт для моих задач годный, но хочется более привычный терминал и вообще некоторых удобств.

Установка WSL и дистрибутива

Сразу оговорюсь, в интернете можно найти описание установки с помощью выполнения команды lxrun /install в командной строке или консоли PowerShell. Данный способ больше не работает (после выхода WSL в стабильный релиз). Насколько мне известно, сейчас WSL можно установить только из Microsoft Store вместе с предпочитаемым дистрибутивом.

Так же отмечу, что когда установку производил я, на выбор были доступны дистрибутивы OpenSUSE, SUSE Linux Enterprise и Ubuntu 16.04 — последний я и установил. Сейчас также доступны Ubuntu 18.04, Debian 9 и Kali Linux, возможно появятся и другие дистрибутивы. Действия по установке могут отличаться. Так же, часть проблем описанных в статье может быть уже исправлена.

Находим в магазине желаемый дистрибутив и устанавливаем. Установка пройдет быстро, так как скачает только эмулятор ядра Linux и утилиту для запуска подсистемы, которая окажется в системной папке в трех экземплярах: wsl.exe, bash.exe и ubuntu.exe (вместо ubuntu будет имя Вашего дистрибутива). Все они равнозначны и делают одно и то же — запускают собственный эмулятор терминала, в нем linux’овый bash работающий под эмулятором ядра. При первом же запуске нас попросят придумать логин и пароль для пользователя по умолчанию, а после произойдет непосредственно установка дистрибутива. В качестве пользователя по умолчанию указываем root без пароля — это потребуется для дальнейших шагов. Безопасность не пострадает, кроме того при подготовке материалов к статье, в англоязычном туториале, я наткнулся на информацию, что новые версии WSL теперь делают пользователем по умолчанию root без пароля без лишних вопросов.

Дожидаемся установки. Далее первым делом стоит обновить зеркала apt на ближайшие. Для этого понадобится CLI текстовый редактор. В комплекте только vi, я же больше предпочитаю nano, поэтому ставлю его:

apt install nano

sudo вводить не требуется, так как мы уже под root’ом. Отредактируем файл /etc/apt/sources.list:

nano /etc/apt/sources.list

У меня лучше всего работают зеркала Яндекса, поэтому мой файл выглядит так:

deb http://mirror.yandex.ru/ubuntu/ xenial main universe restricted
deb-src http://mirror.yandex.ru/ubuntu/ xenial main universe  restricted

deb http://mirror.yandex.ru/ubuntu/ xenial-security main universe restricted
deb-src http://mirror.yandex.ru/ubuntu/ xenial-security main universe restricted

deb http://mirror.yandex.ru/ubuntu/ xenial-updates main universe restricted
deb-src http://mirror.yandex.ru/ubuntu/ xenial-updates main universe restricted

Нажимаем Ctrl+O для сохранения и Ctrl+X для выхода. Теперь можно обновить систему до актуального состояния:

apt update && apt upgrade

После обновления можно создать нашего основного пользователя. В данной статье я назову его user1, Вы же можете задать привычное имя:

addgroup --gid 1000 user1
adduser --home /home/user1 --shell /bin/bash --uid 1000 -G user1,sudo user1

Далее переходим в папку юзера, зайдем под ним, установим пароль и отредактируем файл ~/.bashrc:

cd /home/user1
su user1
passwd
nano .bashrc

Мой базовый .bashrc выглядит так

# If not running interactively, don't do anything
case $- in
    *i*) ;;
      *) return;;
esac

# don't put duplicate lines or lines starting with space in the history.
# See bash(1) for more options
HISTCONTROL=ignoreboth

# append to the history file, don't overwrite it
shopt -s histappend

# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
HISTSIZE=1000
HISTFILESIZE=2000

# check the window size after each command and, if necessary,
# update the values of LINES and COLUMNS.
shopt -s checkwinsize

# If set, the pattern "**" used in a pathname expansion context will
# match all files and zero or more directories and subdirectories.
#shopt -s globstar

# make less more friendly for non-text input files, see lesspipe(1)
[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)"

# set variable identifying the chroot you work in (used in the prompt below)
if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then
    debian_chroot=$(cat /etc/debian_chroot)
fi

# set a fancy prompt (non-color, unless we know we "want" color)
case "$TERM" in
    xterm|xterm-color|*-256color) color_prompt=yes;;
esac

# uncomment for a colored prompt, if the terminal has the capability; turned
# off by default to not distract the user: the focus in a terminal window
# should be on the output of commands, not on the prompt
#force_color_prompt=yes

if [ -n "$force_color_prompt" ]; then
    if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
    # We have color support; assume it's compliant with Ecma-48
    # (ISO/IEC-6429). (Lack of such support is extremely rare, and such
    # a case would tend to support setf rather than setaf.)
    color_prompt=yes
    else
    color_prompt=
    fi
fi

if [ "$color_prompt" = yes ]; then
    if [[ ${EUID} == 0 ]] ; then
        PS1='${debian_chroot:+($debian_chroot)}\[\033[01;31m\]\h\[\033[01;34m\] \W \$\[\033[00m\] '
    else
        PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\] \[\033[01;34m\]\w \$\[\033[00m\] '
    fi
else
    PS1='${debian_chroot:+($debian_chroot)}\u@\h \w \$ '
fi
unset color_prompt force_color_prompt

# If this is an xterm set the title to user@host:dir
case "$TERM" in
xterm*|rxvt*)
    PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h \w\a\]$PS1"
    ;;
*)
    ;;
esac

# enable color support of ls and also add handy aliases
if [ -x /usr/bin/dircolors ]; then
    test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
    alias ls='ls --color=auto'
    #alias dir='dir --color=auto'
    #alias vdir='vdir --color=auto'

    alias grep='grep --color=auto'
    alias fgrep='fgrep --color=auto'
    alias egrep='egrep --color=auto'
fi

# colored GCC warnings and errors
#export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01'

# some more ls aliases
alias ll='ls -alF'
alias la='ls -A'
alias l='ls -CF'

# Add an "alert" alias for long running commands.  Use like so:
#   sleep 10; alert
alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'

# Alias definitions.
# You may want to put all your additions into a separate file like
# ~/.bash_aliases, instead of adding them here directly.
# See /usr/share/doc/bash-doc/examples in the bash-doc package.

if [ -f ~/.bash_aliases ]; then
    . ~/.bash_aliases
fi

# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
if ! shopt -oq posix; then
  if [ -f /usr/share/bash-completion/bash_completion ]; then
    . /usr/share/bash-completion/bash_completion
  elif [ -f /etc/bash_completion ]; then
    . /etc/bash_completion
  fi
fi

Все, подсистема готова к использованию… почти…

Установка X-сервера, Xfce и прочих GUI’шных приложений

Первая же проблема, на которую я натолкнулся — bash-completion в предлагаемом эмуляторе терминала работал, мягко говоря, некорректно. Кроме того, данный эмулятор не умеет вкладки, а каждый его экземпляр запускает все в новом пространстве процессов, с отдельным init’ом (который кстати не заменить). Мне захотелось нормальный эмулятор терминала, некоторых других GUI приложений, а так же панельку, чтоб это все быстро запускать.

Когда я гуглил этот вопрос, я наткнулся на множество проблем, вроде необходимости перевода dbus на tcp протокол. На данный момент всех этих проблем нет. В подсистеме нормально работают unix-domain-socket’ы и все спокойно общается через них.

Первым делом нам понадобится X-сервер, притом установленный в основную систему (в Windows). Лично я использую для этих целей VcXsrv — порт X11 на Windows. Официальный сайт указанный в about самой утилиты его сейчас не предоставляет, поэтому гуглим установщик и устанавливаем все по умолчанию.

Пока идет установка возвращаемся в терминал WSL, командой exit выходим обратно в root’а. Первым делом настроим русские локали:

locale-gen ru_RU
locale-gen ru_RU.UTF-8
update-locale

Далее установим некоторые компоненты Xfce. Можно конечно установить его целиком из мета-пакета, но большинство компонентов нам не понадобится, а модульная архитектура Xfce позволяет нам поставить только необходимое:

apt install -y xfce4-session xfce4-notifyd xfce4-appfinder xfce4-panel xfce4-quicklauncher-plugin xfce4-whiskermenu-plugin xfce4-xkb-plugin xfce4-settings xfce4-terminal xfce4-taskmanager mousepad

Запускать каждый раз окружение руками не очень удобно, поэтому я автоматизировал данный процесс. Для этого в основной системе создадим в удобном для нас месте папку, а в ней 3 файла для запуска:

  1. config.xlaunch — файл настроек для VcXsrv
    <?xml version="1.0" encoding="UTF-8"?>
    <XLaunch
    WindowMode="MultiWindow"
    ClientMode="NoClient"
    LocalClient="False"
    Display="0"
    LocalProgram="xcalc"
    RemoteProgram="xterm"
    RemotePassword=""
    PrivateKey=""
    RemoteHost=""
    RemoteUser=""
    XDMCPHost=""
    XDMCPBroadcast="False"
    XDMCPIndirect="False"
    Clipboard="True"
    ClipboardPrimary="True"
    ExtraParams=""
    Wgl="True"
    DisableAC="False"
    XDMCPTerminate="False"
    />
  2. x-run.vbs — WSL всегда запускается со своим эмулятором терминала, если его закрыть — завершатся все его дочерние процессы. Чтоб данное окно не мозолило глаза, неплохо его запускать скрытым. К счастью в Windows встроен интерпретатор VBScript, который позволяет это сделать в одну строчку:

    WScript.CreateObject("Shell.Application").ShellExecute "wsl", "cd /home/user1; DISPLAY=:0 LANG=ru_RU.UTF-8 su user1 -c xfce4-session", "", "open", 0

    Поясню, что здесь происходит. Мы говорим VBscript выполнить приложение wsl с параметром cd /home/user1; DISPLAY=:0 LANG=ru_RU.UTF-8 su user1 -c xfce4-session, папка запуска нам не важна, поэтому пустая строка, действие open — запуск, 0 — скрытый режим. Самому wsl мы отдаем команду на выполнение: переход в папку пользователя, затем с установкой переменных окружения DISPLAY (дисплей X-сервера) и LANG (используемая локаль) мы запускаем xfce4-session от имени нашего пользователя user1 (благодаря команде su)

  3. start.bat — batch файл для запуска, по желанию его можно засунуть в автозагрузку
    start config.xlaunch
    wscript x-run.vbs

Далее можем запустить наш start.bat и настроить панель Xfce под себя. Замечу, что здесь я наткнулся на еще одну проблему — панель прекрасно отображается поверх всех окон, но вот выделить себе место, как панель на рабочем столе Windows она не может. Если кто знает решение данной проблемы, поделитесь в комментариях.

Ну и под конец данной части, скриншот моего рабочего стола:

Взаимодействие окружения Windows и окружения подсистемы Linux

Запускать Linux приложения напрямую из Windows можно через те же 3 команды — bash, wsl или ubuntu. Не забываем, что по умолчанию запуск идет от root, поэтому стоит понижать привилегии через su, так же нужно не забывать передавать переменную окружения DISPLAY=:0 если приложению требуется X-сервер. Так же нужно менять папку, из которой должно работать приложение, через cd внутри WSL. Пример, посчитаем md5 для file.txt на диске D средствами Linux’овой md5sum:

wsl md5sum < d:\file.txt

Доступ к файловой системе Linux так же имеется, лежит она в %localappdata%\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs. Читать таким образом файлы можно, а вот писать — не желательно, можно поломать файловую систему. Думаю проблема в том, что Windows не умеет работать с правами и владельцами файловой системы Linux.

Из Linux так же можно запускать Windows приложения. Просто запускаем exe-шник и он выполнится в основной системе.

Диски Windows монтируются в /mnt в соответствии со своими буквами в нижнем регистре. Например диск D будет смонтирован в /mnt/d. Из Linux можно свободно читать и писать файлы Windows. Можно делать на них симлинки. Права у таких файлов всегда будут 0777, а владельцем будет root.

Сетевой стек у подсистемы общий с Windows. Сервер поднятый в Linux будет доступен на localhost в Windows и наоборот. Однако unix-domain-socket для Windows будет просто пустым файлом, работать с этим можно только внутри Linux. Выход во внешнюю сеть у Linux так же есть, в том числе можно слушать порты, если этого не запрещает фаервол.
ifconfig в Linux и ipconfig в Windows выдают одинаковую информацию о сетевых интерфейсах.

Из диспетчера задач Windows можно спокойно прибить процесс внутри подсистемы Linux. Однако Linux увидит только свои процессы.

Особенности, ограничения и подводные камни

Ядро Linux в WSL не настоящее. Это всего лишь прослойка-эмулятор, которая часть Linux-специфичных задач выполняет сама, а часть проксирует напрямую в ядро winNT. Большая часть api в нем реализована, но не все. Свое ядро собрать не получится, как и не получится подключить модули ядра (.ko, Kernel Object).

Init процесс у WSL тоже свой и заменить его, например, на system.d не выйдет. У меня давно есть желание написать менеджер демонов на go, который бы работал с файлами юнитов system.d и предоставлял бы схожий интерфейс, да все руки не доходят.

Нет поддержки openFUSE, соответственно примонтировать виртуальную или удаленную файловую систему не получится. Так же нельзя сделать mount из файла, mount вообще ничего кроме bind здесь, похоже, не умеет.

Так же нет никакой возможности разбить файловую систему Linux на несколько разделов/дисков.

Прямой доступ к железу практически отсутствует. Все таки мы находимся в песочнице Windows, а не в полноценном Linux. /dev и /sys заметно пустуют, в них лишь проц да виртуальные устройства. Доступ к GPU — только через X-сервер, напрямую — никак, так что нейросети обучать придется в Windows.

В JS разработке столкнулся с тем, что electron.js отказался запускаться в WSL, пришлось дублировать окружение node.js в Windows.

Итоги

Статья получилась довольно длинной, надеюсь, что она окажется еще и полезной.
WSL для меня лично оказался инструментом вполне юзабельным, решающим мои задачи fullstack backend разработчика. Виртуалка с Linux за полгода так и не понадобилась. По общим ощущениям Windows+WSL намного функциональнее, чем Linux+Wine.

Пока писал статью, обнаружил, что в Microsoft Store появилась сборка WSL с Debian 9.3, данный дистрибутив мне более симпатичен, чем Ubuntu, поэтому буду пробовать ставить.

8 ноября, 2022 12:34 пп
1 715 views
| Комментариев нет

Без категорий

Windows Subsystem for Linux 2, также известная как WSL 2 или просто WSL  — это инструмент Microsoft Windows, который позволяет разработчикам запускать среду Linux прямо в Windows без модификаций, стороннего программного обеспечения или настроек двойной загрузки. WSL интегрируется с большинством приложений на компьютере и создает Linux среду разработки на Windows. Для этого используется встроенное программное обеспечение виртуализации Microsoft – Hyper-V.

В этом мануале мы включим WSL, с помощью него установим Ubuntu и установим новую командную строку Windows Command Line от Microsoft. В результате вы получите среду программирования Linux в Windows.

Требования

Для работы вам понадобится персональный компьютер с установленной системой Windows: Подсистема Windows для Linux 2 требует Windows 10 версии 1903 или выше, со сборкой 18362 или выше. Для систем ARM64 требуется версия 2004 или выше со сборкой 19041. Сборки ниже этой версии не будут поддерживать WSL 2.

Важно! При установке WSL на виртуальную машину, нужно выставить флаги виртуализации ЦП для виртуальной машины. Например, если вы устанавливаете WSL на виртуализированную Windows, запущенную в Hyper-V с именем MyWSL, эту команду нужно выполнить на узле виртуализации, а не на виртуальной машине. Для ее выполнения нужна командная строка PowerShell с повышенными привилегиями. Замените MyWSL на имя вашей виртуальной машины в Hyper-V:

Set-VMProcessor -VMName MyWSL -ExposeVirtualizationExtensions $true

Если вы не устанавливаете WSL на виртуальную машину, ничего делать не нужно.

1: Включение служб Windows

Для запуска WSL нужно включить службы Windows. Эти службы идут вместе с Windows, но по умолчанию они выключены. Откройте меню “Пуск” и найдите PowerShell. Теперь нажмите правой кнопкой мыши на PowerShell и выберите “Run as Administrator”.

Откроется окно PowerShell. С помощью инструмента Deployment Image Servicing and Management включим дополнительные функции Windows, которые отключены по умолчанию. Чтобы включить WSL, выполните команду:

PS C:\Windows\system32> dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

Получим такой вывод:

Deployment Image Servicing and Management tool
Version: 10.0.19041.844

Image Version: 10.0.19042.985

Enabling feature(s)
[==========================100.0%==========================]
The operation completed successfully.

Затем, чтобы включить платформу виртуальных машин Windows, выполните следующую команду в PowerShell. Эта команда разрешит использовать второе поколение WSL, что даст возможность Windows установить Linux с помощью Hyper-V.

PS C:\Windows\system32> dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

После выполнения команды получим вывод:

Deployment Image Servicing and Management tool
Version: 10.0.19041.844

Image Version: 10.0.19042.985

Enabling feature(s)
[==========================100.0%==========================]
The operation completed successfully.

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

После перезагрузки войдите в систему.

Далее нужно загрузить и установить последний пакет обновления ядра Linux от Microsoft.

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

Теперь нужно сделать WSL 2 версией по умолчанию. Откройте терминал PowerShell от имени администратора и выполните команду:

PS C:\Windows\system32> wsl --set-default-version 2

Получаем следующий вывод:

For information on key differences with WSL 2 please visit https://aka.ms/wsl2

Сейчас WSL 2 включен и готов к работе. Дальше установим операционную систему на базе Linux с помощью WSL 2.

2: Установка Ubuntu

Теперь нужно установить дистрибутив Linux из Microsoft Store. В этом туториале мы установим версию Ubuntu по умолчанию, на данный момент это Ubuntu 20.04. Есть много версий на выбор, и у всех почти одинаковый подход к установке, про который мы рассказываем в этой статье.

Откройте меню “Пуск”, найдите Microsoft Store и откройте его.

Через строку поиска в правом верхнем углу найдите Linux.

Выберите Ubuntu, чтобы установить последнюю поддерживаемую версию этой системы. Нажмите кнопку “Get”, чтобы добавить приложение в свой аккаунт. После этого кнопка “Get” будет заменена на “Install”. Нажмите на нее, чтобы установить Ubuntu. После завершения установки появится кнопка “Launch”. Нажмите её, чтобы запустить Ubuntu.

При первом запуске Ubuntu появится сообщение, что выполняется начальная настройка, которая может занять несколько минут. Затем будет предложено ввести имя пользователя и пароль системы Linux. Они не обязательно должны совпадать с вашей системой, но они понадобятся, чтобы была возможность использовать sudo для получения прав администратора.

После создания учётной записи начальная настройка будет завершена и Ubuntu будет готова к работе.

Теперь установим терминал для доступа к Ubuntu через Windows.

3: Установка и настройка командной строки

В Ubuntu есть терминал по умолчанию, но Microsoft открыл исходный код и переработал инструмент терминала. Теперь он называется Windows Terminal. Этот терминал поддерживает много параметров настройки и он проще терминала Ubuntu в работе, поэтому мы рекомендуем его установить.

В строке поиска в Microsoft Store найдите Terminal.

Установите терминал Windows так же, как устанавливали Ubuntu, нажав “Get” и “Install”. Для запуска терминала нажмите “Launch” или выберите программу в меню “Пуск”.

По умолчанию Windows Terminal открывает консоль PowerShell.

Можно открыть другую консоль, для просмотра доступных нажмите кнопку со стрелкой вниз. Доступ к PowerShell, Command Promt и Azure Cloud Shell есть по умолчанию. После установки любой WSL Linux появится здесь так же, как это случилось с Ubuntu. Нажмите на Ubuntu, и оболочка откроется в новой вкладке.

Если вы хотите изменить параметры Terminal по умолчанию, нажмите кнопку со стрелкой вниз и выберите “Settings”.

Далее нужно установить Ubuntu в качестве консоли по умолчанию. В разделе “Default Profile” выберите образ Ubuntu WSL и нажмите “Save”.

Теперь при нажатии кнопки + или открытии нового терминала Ubuntu будет оболочкой по умолчанию.

Мы установили инструмент Windows Command Line, который по умолчанию настроен на открытие терминала WSL Ubuntu.

Подводим итоги

Итак, теперь у вас есть полностью рабочая среда Linux в Windows. Мы настроили компьютер на использование преимуществ подсистемы Windows для Linux и установили среду Ubuntu с помощью WSL. Также вы можете установить другой дистрибутив Linux: Debian, SUSE или Kali Linux. Затем вы можете установить инструменты разработчика, чтобы иметь полную среду разработки Linux, работающую на Windows.

Читайте также: Настройка локальной среды разработки для Python 3 в Windows 10

Tags: Linux, WSL, WSL 2

  • Установка нового hdd в windows 10
  • Установка образа windows на usb
  • Установка криптопро на windows сервер
  • Установка несовместимого драйвера видеокарты nvidia geforce на windows 10
  • Установка не лицензионный windows статья