1
0
Fork 0
mirror of https://github.com/iNavFlight/inav.git synced 2025-07-14 03:49:58 +03:00
inav/docs/development/Building in Windows 10 with Linux Subsystem.md
Darren Lines 78cf9d580f
Update Building in Windows 10 with Linux Subsystem.md
Added fix for WSL v2 and the wsl.conf option for the fix.
2020-11-02 11:46:27 +00:00

4.2 KiB

Building in Windows 10 with Linux subsystem [Recommended]

Linux subsystem for Windows 10 is probably the simplest way of building INAV under Windows 10.

Setting up the environment

Enable WSL: run windows features enable windows subsytem for linux reboot

Install Ubuntu:

  1. Go to Microsoft store https://www.microsoft.com/en-gb/store/b/home
  2. Search and install most recent Ubuntu LTS version
  3. When download completed, select Launch Ubuntu
  4. When prompted enter a user name and password which you will need to remember
  5. When complete, the linux command prompt will be displayed

NOTE: from this point all commands are entered into the Ubunto shell command window

Update the repo packages:

  1. sudo apt update

Install Git, Make, gcc and Ruby

  1. sudo apt-get install git
  2. sudo apt-get install make
  3. sudo apt-get install cmake
  4. sudo apt-get install ruby

CMAKE and Ubuntu 18_04

To run cmake in the latest version you will need to update from Ubuntu 18_04 to 20_04. The fastest way to do it is to uninstall current version and install 20_04 for Microsoft Store https://www.microsoft.com/store/productId/9N6SVWS3RX71

Downloading the iNav repository (example):

Mount MS windows C drive and clone iNav

  1. cd /mnt/c
  2. git clone https://github.com/iNavFlight/inav.git

You are ready! You now have a folder called inav in the root of C drive that you can edit in windows

If you get a cloning error

On some installations, you may see the following error:

Cloning into 'inav'...
error: chmod on /mnt/c/inav/.git/config.lock failed: Operation not permitted
fatal: could not set 'core.filemode' to 'false'

You can fix this with by remounting the drive using the following commands

  1. sudo umount /mnt/c
  2. sudo mount -t drvfs C: /mnt/c -o metadata

Building (example):

For detailed build instrusctions see Building in Linux

Launch Ubuntu: Click Windows Start button then scroll and lauch "Ubuntu"

Building from Ubuntu command line

cd /mnt/c/inav

Do it onece to prepare build environment

mkdir build
cd build
cmake ..

Then to build

cd build
make MATEKF722

Flashing:

Launch windows configurator GUI and from within the firmware flasher select Load firmware[Local] Hex files can be found in the folder c:\inav\build

Troubleshooting

Syntax error: "(" unexpected

dzikuvx@BerlinAtHome:/mnt/c/Users/pspyc/Documents/Projects/inav/build$ make MATEKF722SE
Generating MATEKF722SE/settings_generated.h, MATEKF722SE/settings_generated.c
/bin/sh: 1: Syntax error: "(" unexpected
make[3]: *** [src/main/target/MATEKF722SE/CMakeFiles/MATEKF722SE.elf.dir/build.make:63: src/main/target/MATEKF722SE/MATEKF722SE/settings_generated.h] Error 2
make[2]: *** [CMakeFiles/Makefile2:33607: src/main/target/MATEKF722SE/CMakeFiles/MATEKF722SE.elf.dir/all] Error 2
make[1]: *** [CMakeFiles/Makefile2:33290: src/main/target/MATEKF722SE/CMakeFiles/MATEKF722SE.dir/rule] Error 2
make: *** [Makefile:13703: MATEKF722SE] Error 2

This error can be triggered by a Windows PATHs included in the Linux Subsystem. The solution is:

For WSL V1 - Flags set as 7 by default

  1. Open Windows RegEdit tool
  2. Find HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Lxss\{GUID}\Flags
  3. Change Flags from 7 to 5
  4. Restart WSL and Windows preferably
  5. cd build
  6. cmake ..
  7. make {TARGET} should be working again

For WSL V2 - Flags set as 0x0000000f (15) by default

  1. Open Windows RegEdit tool
  2. Find HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Lxss\{GUID}\Flags
  3. Change Flags from f to d, it is stored as Base Hexadecimal
  4. Restart WSL and Windows preferably
  5. cd build
  6. cmake ..
  7. make {TARGET} should be working again

Or, for either version

  1. In the Linux Subsystem, cd /etc/
  2. Create a new file with sudo nano wsl.conf
  3. Enter the following in to the new file:
[Interop]
appendWindowsPath=false
  1. Save the file by holding Ctrl and pressing o
  2. Press Enter to confirm the wsl.conf filename.
  3. Hit Ctrl+x to exit nano
  4. Restart WSL and Windows preferably
  5. cd build
  6. cmake ..
  7. make {TARGET} should be working again