Программирование ARM Запуск Linux на Windows помощью WSL Fri, December 13 2024  

Поделиться

Нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.


Запуск Linux на Windows помощью WSL Печать
Добавил(а) microsin   

Установленная платформа виртуальной машины WSL это по сути система утилит Linux поверх Windows 10, которая в некоторых случаях может быть очень полезным инструментом. Например, для кросс-компиляции исходного кода микроконтроллеров. Ниже на примере это будет показано для компиляции примера кода из репозитория Bouffalo SDK [2].

Процесс установки WSL по шагам:

1. Откройте PowerShell или командную строку с правами администратора. Для этого в Windows 10 нажмите комбинацию клавиш Win+X, и в появившемся меню выберите Windows PowerShell (администратор).

WSL install fig01

2. Введите команду wsl --install и нажмите Enter. Начнется процесс установки,

WSL install fig02
WSL install fig03

После окончания установки появится соответствующее сообщение. После этого нужно перезагрузить Windows 10.

WSL install fig04

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

4. Команда wsl --list --online покажет список доступных дистрибутивов для установки:

PS C:\WINDOWS\system32> wsl --list --online
Ниже приведен список допустимых распределений, которые можно установить.
Установите с помощью команды wsl --install -d < Distro>.
 
NAME            FRIENDLY NAME
Ubuntu          Ubuntu
Debian          Debian GNU/Linux
kali-linux      Kali Linux Rolling
openSUSE-42     openSUSE Leap 42
SLES-12         SUSE Linux Enterprise Server v12
Ubuntu-16.04    Ubuntu 16.04 LTS
Ubuntu-18.04    Ubuntu 18.04 LTS
Ubuntu-20.04    Ubuntu 20.04 LTS
PS C:\WINDOWS\system32>

Вот так, например, можно установить Ubuntu 20.04:

PS C:\WINDOWS\system32> wsl --install -d Ubuntu-20.04

Приятно то, что после установки виртуальной машины вы можете легко и непринужденно переходить в командной строке из одной системы в другую:

C:\Users\andrey>bash
microsin@DESKTOP-D8E867R:/mnt/c/Users/andrey$ pwd
/mnt/c/Users/andrey
microsin@DESKTOP-D8E867R:/mnt/c/Users/andrey$ exit
logout
 
C:\Users\andrey>

Если в системе не включена поддержка Hyper-V, то при попытке запуска Linux на виртуальной машине WSL возникнет ошибка:

Installing, this may take a few minutes...
WslRegisterDistribution failed with error: 0x80370102
Error: 0x80370102 ?? ??????? ????????? ??????????? ??????, ????????? ??????????? ??????? ?? ???????????.
 
Press any key to continue...

Для исправления этой ситуации выполните следующие шаги (процедура описана в [3]):

1. Войдите в BIOS, в меню Advanced найдите опцию "Intel Virtualization Technology", и переведите её в состояние "Enabled" (разрешено).

BIOS Asus Hyper V support enable

Перезапустите систему, и снова попробуйте запустить выбранный дистрибутив командой в PowerShell с правами администратора:

PS C:\WINDOWS\system32> wsl --install -d Ubuntu-20.04

Если и на этот раз система не запустится, выполните следующий шаг.

2. Нажмите Win+R, в появившейся строке введите optionalfeatures и нажмите Enter. Найдите раздел настроек Hyper-V, и поставьте там все галочки.

[Монтирование дисков Windows в среду Linux WSL]

Доступ к дискам Windows возможен через каталог /mnt, там находятся имена локальных дисков. Вывод команды ls /mnt покажет буквы локальных дисков. Например, следующий вывод соответствует дискам C:, M: и P:

$ ls /mnt
c  m  p  wsl

Монтировать и демонтировать диски можно командами mount и umount [5]. Вот так, к примеру, можно смонтировать папку C:\Bouffalo в папку ~/Bouffalo:

$ sudo mount -t drvfs M:/Bouffalo/ Bouffalo

Демонтирование этой папки:

$ sudo umount ~/Bouffalo

[Как перезапустить WSL]

Запустите командную строку Powershell с правами администратора. Для этого нажмите Win+X и выберите в меню Windows PowerShell (администратор). Введите в Power Shell команду wsl --shutdown и нажмите Enter, WSL завершится.

> wsl --shutdown

Для повторного запуска WSL введите команду:

> wsl

[Как определить, где находится файловая система WSL Linux?]

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

• Ранние версии WSL сохраняли файловую систему Linux в каталоге %LOCALAPPDATA%\Lxss\rootfs.

• Дистрибутивы WSL, установленные из Windows Store, начиная с Windows Build 16215 (середина 2017 года), используют папку наподобие %LOCALAPPDATA%\Packages\{имяпакета}\LocalState\rootfs. Здесь имяпакета может меняться, в зависимости от установленного дистрибутива виртуальной машины (т. е. выбранной версии Ubuntu или Debian). Для Ubuntu это может быть имя наподобие CanonicalGroupLimited.UbuntuonWindows_{случайнаястрока}, например полный путь до моей установленной машины Ubuntu-20.04 получился такой:

%LOCALAPPDATA%\Packages\CanonicalGroupLimited.Ubuntu20.04onWindows_79rhkp1fndgsc\LocalState\rootfs

• Дистрибутивы Linux, установленные другими утилитами, такими как lxRunOffline или WSL-DistroLauncher, могут сохранять файловую систему Linux в любое место. В этом случае попробуйте найти путь с помощью этих утилит [6].

[Компиляция примера кода из Bouffalo SDK]

Все последующие шаги мы будем делать в запущенной WSL виртуальной машине Ubuntu-20.04.

1. Закачайте SDK следующей командой:

$ git clone https://github.com/bouffalolab/bl_iot_sdk.git

Репозиторий большой, порядка 2 гигабайт, и на закачку понадобится некоторое время. После завершения закачки в домашнем каталоге появится папка bl_iot_sdk, где содержится SDK [2].

2. Установите make командой:

$ sudo apt install make

3. Перейдите в каталог проекта bl602_demo_wifi, и запустите скрипт genromap:

$ cd bl_iot_sdk/customer_app/bl602_demo_wifi/
$ ./genromap

Проект скомпилируется, и в каталоге ./build_out появится файл программы bl602_demo_wifi.bin. Его прошить можно через UART микроконтроллера BL602 утилитой bflb_iot_tool. Как это делается, см. [4].

[Ссылки]

1. Установка Linux на Windows с помощью WSL site:microsoft.com.
2. bouffalolab / bl_iot_sdk.
3. Исправить ошибку 0x80370102 при установке WSL site:mywebpc.ru.
4. Bouffalolab Iot Command Tool.
5. How to mount and unmount on WSL site:codeyarns.com.
6. What is the home directory on Windows Subsystem for Linux? site:superuser.com.
7WSL: программирование AVR в виртуальной машине Linux.

 

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


Защитный код
Обновить

Top of Page