Установленная платформа виртуальной машины WSL это по сути система утилит Linux поверх Windows 10, которая в некоторых случаях может быть очень полезным инструментом. Например, для кросс-компиляции исходного кода микроконтроллеров. Ниже на примере это будет показано для компиляции примера кода из репозитория Bouffalo SDK [2].
Процесс установки WSL по шагам:
1. Откройте PowerShell или командную строку с правами администратора. Для этого в Windows 10 нажмите комбинацию клавиш Win+X, и в появившемся меню выберите Windows PowerShell (администратор).
2. Введите команду wsl --install и нажмите Enter. Начнется процесс установки,
После окончания установки появится соответствующее сообщение. После этого нужно перезагрузить Windows 10.
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>
Если в системе не включена поддержка 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" (разрешено).
Перезапустите систему, и снова попробуйте запустить выбранный дистрибутив командой в PowerShell с правами администратора:
Если и на этот раз система не запустится, выполните следующий шаг.
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 получился такой:
• Дистрибутивы Linux, установленные другими утилитами, такими как lxRunOffline или WSL-DistroLauncher, могут сохранять файловую систему Linux в любое место. В этом случае попробуйте найти путь с помощью этих утилит [6].
[Компиляция примера кода из Bouffalo SDK]
Все последующие шаги мы будем делать в запущенной WSL виртуальной машине Ubuntu-20.04.
Репозиторий большой, порядка 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].