4.3 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:
- Go to Microsoft store https://www.microsoft.com/en-gb/store/b/home
- Search and install most recent Ubuntu LTS version
- When download completed, select
Launch Ubuntu
- When prompted enter a user name and password which you will need to remember
- 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:
sudo apt update
Install Git, Make, gcc and Ruby
sudo apt-get install git make cmake ruby
Install python and python-yaml to allow updates to settings.md
sudo apt-get install python python-yaml
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
cd /mnt/c
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
sudo umount /mnt/c
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
Updating the documents
cd /mnt/c/inav
python src/utils/update_cli_docs.py
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
- Open Windows RegEdit tool
- Find
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Lxss\{GUID}\Flags
- Change
Flags
from7
to5
- Restart WSL and Windows preferably
cd build
cmake ..
make {TARGET}
should be working again
For WSL V2 - Flags set as 0x0000000f (15) by default
- Open Windows RegEdit tool
- Find
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Lxss\{GUID}\Flags
- Change
Flags
fromf
tod
, it is stored as Base Hexadecimal - Restart WSL and Windows preferably
cd build
cmake ..
make {TARGET}
should be working again
Or, for either version
- In the Linux Subsystem,
cd /etc/
- Create a new file with
sudo nano wsl.conf
- Enter the following in to the new file:
[Interop]
appendWindowsPath=false
- Save the file by holding
Ctrl
and pressingo
- Press
Enter
to confirm the wsl.conf filename. - Hit
Ctrl
+x
to exit nano - Restart WSL and Windows preferably
cd build
cmake ..
make {TARGET}
should be working again