Recent Releases of yocto-geniux
yocto-geniux - yocto-geniux v3.1
The purpose of this repository is to automate the generation in a virtualized environment of Geniux images and their corresponding Software Development Kit (SDK) for the cross-compilation and usage of GNSS-SDR on embedded devices.
The Docker images generated by the Dockerfile file of this repository can run the building process defined by the meta-gnss-sdr Yocto layer.
More info at Cross-compiling GNSS-SDR and the README.md file.
The name Geniux comes from GNSS-SDR for Embedded GNU/Linux.
Changelog
- Added Nanbield version and release 24.02 to the documentation.
- Updated compatibility table in the README.md file.
- Fixed problem with Docker's hard
ulimitin some environments. - Added Python 3.11 for executing latest
repo.
Copyright and Licence
Copyright: © 2020-2024 Carles Fernández-Prades, CTTC. All rights reserved.
The content of this repository is released under the MIT licence.
Acknowledgements
This work was partially supported by Grant PID2021-128373OB-I00 funded by MCIN/AEI/10.13039/501100011033.
- Shell
Published by carlesfernandez about 2 years ago
yocto-geniux - yocto-geniux v3.0
The purpose of this repository is to automate the generation in a virtualized environment of Geniux images and their corresponding Software Development Kit (SDK) for the cross-compilation and usage of GNSS-SDR on embedded devices.
The Docker images generated by the Dockerfile file of this repository can run the building process defined by the meta-gnss-sdr Yocto layer.
More info at Cross-compiling GNSS-SDR and the README.md file.
The name Geniux comes from GNSS-SDR for Embedded GNU/Linux.
Changelog
- Added Langdale and Mickledore versions.
- Updated base image to ubuntu 20.04 for Mickledore and later. For older versions than Mickledore (that is, from Rocko to Langdale), the Ubuntu 18.04 image is used instead.
- Updated compatibility table in the README.md file.
- Improved consistency of geniux-builder.sh script (avoid globbing and word splitting)
- Avoid deprecated versions of repo by adding it in the main Dockerfile instead of in the base image.
Copyright and Licence
Copyright: © 2020-2023 Carles Fernández-Prades, CTTC. All rights reserved.
The content of this repository is released under the MIT licence.
Acknowledgements
This work was partially supported by Grant PID2021-128373OB-I00 funded by MCIN/AEI/10.13039/501100011033.
- Shell
Published by carlesfernandez almost 3 years ago
yocto-geniux - yocto-geniux v2.5
The purpose of this repository is to automate the generation in a virtualized environment of Geniux images and their corresponding Software Development Kit (SDK) for the cross-compilation and usage of GNSS-SDR on embedded devices.
The Docker images generated by the Dockerfile file of this repository can run the building process defined by the meta-gnss-sdr Yocto layer.
More info at Cross-compiling GNSS-SDR and the README.md file.
The name Geniux comes from GNSS-SDR for Embedded GNU/Linux.
Changelog
- Fixed defects in geniux-builder.sh script detected by ShellCheck.
- Added new shellcheck CI job to ensure future compliance.
Copyright and Licence
Copyright: © 2020-2022 Carles Fernández-Prades, CTTC. All rights reserved.
The content of this repository is released under the MIT licence.
Acknowledgements
This work was partially supported by the Spanish Ministry of Science, Innovation, and Universities through the Statistical Learning and Inference for Large Dimensional Communication Systems (ARISTIDES, RTI2018-099722-B-I00) project.
- Shell
Published by carlesfernandez over 3 years ago
yocto-geniux - yocto-geniux v2.4
The purpose of this repository is to automate the generation in a virtualized environment of Geniux images and their corresponding Software Development Kit (SDK) for the cross-compilation and usage of GNSS-SDR on embedded devices.
The Docker images generated by the Dockerfile file of this repository can run the building process defined by the meta-gnss-sdr Yocto layer.
More info at Cross-compiling GNSS-SDR and the README.md file.
The name Geniux comes from GNSS-SDR for Embedded GNU/Linux.
Changelog
- Added new Kirkstone version.
Copyright and Licence
Copyright: © 2020-2022 Carles Fernández-Prades, CTTC. All rights reserved.
The content of this repository is released under the MIT licence.
Acknowledgements
This work was partially supported by the Spanish Ministry of Science, Innovation, and Universities through the Statistical Learning and Inference for Large Dimensional Communication Systems (ARISTIDES, RTI2018-099722-B-I00) project.
- Shell
Published by carlesfernandez over 3 years ago
yocto-geniux - yocto-geniux v2.3
The purpose of this repository is to automate the generation in a virtualized environment of Geniux images and their corresponding Software Development Kit (SDK) for the cross-compilation and usage of GNSS-SDR on embedded devices.
The Docker images generated by the Dockerfile file of this repository can run the building process defined by the meta-gnss-sdr Yocto layer.
More info at Cross-compiling GNSS-SDR and the README.md file.
The name Geniux comes from GNSS-SDR for Embedded GNU/Linux.
Changelog
- Fix that GitHub is no longer supporting the unauthenticated git protocol on port 9418.
Copyright and License
Copyright: © 2020-2022 Carles Fernández-Prades, CTTC. All rights reserved.
The content of this repository is released under the MIT license.
Acknowledgements
This work was partially supported by the Spanish Ministry of Science, Innovation, and Universities through the Statistical Learning and Inference for Large Dimensional Communication Systems (ARISTIDES, RTI2018-099722-B-I00) project.
- Shell
Published by carlesfernandez almost 4 years ago
yocto-geniux - yocto-geniux v2.2
The purpose of this repository is to automate the generation in a virtualized environment of Geniux images and their corresponding Software Development Kit (SDK) for the cross-compilation and usage of GNSS-SDR on embedded devices.
The Docker images generated by the Dockerfile file of this repository can run the building process defined by the meta-gnss-sdr Yocto layer.
More info at Cross-compiling GNSS-SDR and the README.md file.
The name Geniux comes from GNSS-SDR for Embedded GNU/Linux.
Changelog
- Document 22.02 version of existing Yocto Geniux releases and new honister release.
Copyright and License
Copyright: © 2020-2022 Carles Fernández-Prades, CTTC. All rights reserved.
The content of this repository is released under the MIT license.
Acknowledgements
This work was partially supported by the Spanish Ministry of Science, Innovation, and Universities through the Statistical Learning and Inference for Large Dimensional Communication Systems (ARISTIDES, RTI2018-099722-B-I00) project.
- Shell
Published by carlesfernandez about 4 years ago
yocto-geniux - yocto-geniux v2.1
The purpose of this repository is to automate the generation in a virtualized environment of Geniux images and their corresponding Software Development Kit (SDK) for the cross-compilation and usage of GNSS-SDR on embedded devices.
The Docker images generated by the Dockerfile file of this repository can run the building process defined by the meta-gnss-sdr Yocto layer.
More info at Cross-compiling GNSS-SDR and the README.md file.
The name Geniux comes from GNSS-SDR for Embedded GNU/Linux.
Changelog
- Added tools for generating encrypted passwords in thr base image.
- Fixed usage of default values if no machine was specified.
- Added
CITATION.cfffile and validator CI job. - Fixed errors if the base image was too outdated.
- Added Geniux logo.
- Updated
README.mdfile.
Copyright and License
Copyright: © 2020-2022 Carles Fernández-Prades, CTTC. All rights reserved.
The content of this repository is released under the MIT license.
Acknowledgements
This work was partially supported by the Spanish Ministry of Science, Innovation, and Universities through the Statistical Learning and Inference for Large Dimensional Communication Systems (ARISTIDES, RTI2018-099722-B-I00) project.
- Shell
Published by carlesfernandez about 4 years ago
yocto-geniux - yocto-geniux v2.0
The purpose of this repository is to automate the generation in a virtualized environment of Geniux images and their corresponding Software Development Kit (SDK) for the cross-compilation and usage of GNSS-SDR on embedded devices.
The Docker images generated by the Dockerfile file of this repository can run the building process defined by the meta-gnss-sdr Yocto layer.
More info at Cross-compiling GNSS-SDR and Introducing Geniux v21.08
The name Geniux comes from GNSS-SDR for Embedded GNU/Linux.
Changelog
- Create a yocto-geniux-base image so building different versions is faster.
- Add liblz4-tool and zstd packages to the base image, required by master/honister.
- Add a new option which allows to build the image but do not run the container. Useful for the interactive mode.
- Order packages alphabetically, so they are easier to spot by humans.
- Fix repo autoupdate.
- Use https:// instead of git:// in the manifest URL.
- Make it work for macOS.
- Skip manifest 21.06 in zeus, dunfell, gatesgarth and hardknott, since it was known to fail. If requested, bumped to 21.08.
- Improved/updated help and instructions in the README.md file.
Copyright and License
Copyright: © 2020-2021 Carles Fernández-Prades, CTTC. All rights reserved.
The content of this repository is released under the MIT license.
Acknowledgements
This work was partially supported by the Spanish Ministry of Science, Innovation, and Universities through the Statistical Learning and Inference for Large Dimensional Communication Systems (ARISTIDES, RTI2018-099722-B-I00) project.
- Shell
Published by carlesfernandez over 4 years ago
yocto-geniux - yocto-geniux v1.0
The purpose of this repository is to automate the generation in a virtualized environment of Geniux images and their corresponding Software Development Kit (SDK) for the cross-compilation and usage of GNSS-SDR on embedded devices.
The Docker images generated by the Dockerfile file of this repository can run the building process defined by the meta-gnss-sdr Yocto layer.
More info at Cross-compiling GNSS-SDR.
The name Geniux comes from GNSS-SDR for Embedded GNU/Linux.
Building Geniux releases in a virtualized environment
Get a powerful machine (as much RAM, storage capacity, and CPU cores as you can) and install the Docker engine on it. Make sure that it is up and running.
Note: the
geniux-builder.shscript makes use of thezipandunziptools. On Debian/Ubuntu machines, you can install them by doing:
$ sudo apt-get install zip unzip
Then, get the source code of this repository and go to its base path:
$ git clone https://github.com/carlesfernandez/yocto-geniux
$ cd yocto-geniux
Now you are ready to build Geniux images for the release you want with a single command, by using the geniux-builder.sh script. Taking a look at its help message:
``` $ ./geniux-builder.sh --help This script builds and stores Geniux images.
Usage: ./geniux-builder.sh [version] [manifest] [machine]
Options: version Geniux version: rocko, sumo, thud, warrior, zeus, dunfell, gatesgarth, hardknott. Default: dunfell Check available branches at https://github.com/carlesfernandez/meta-gnss-sdr manifest Geniux version manifest: 20.11, 21.02, ..., latest. Default: latest Dated manifests available at https://github.com/carlesfernandez/oe-gnss-sdr-manifest/tags machine Specify your (list of) MACHINE here. By default, zedboard-zynq7 and raspberrypi3 are built.
Environment variables that affect behavior: GENIUXMIRRORPATH Base path to local mirror. Only used if set. e.g.: 'export GENIUXMIRRORPATH=/home/user/mirror' The mirror is expected to be at '$GENIUXMIRRORPATH/sources/$version' GENIUXSTOREPATH Path in which products will be stored. Only used if set. e.g.: 'export GENIUXSTOREPATH=/home/user/geniux-releases' GENIUXSTOREREQUIRESSUDO If set, the script will ask for super-user privileges to write in the store. You will be asked only once at the beginning. The password will not be revealed. e.g.: 'export GENIUXSTOREREQUIRESSUDO=1' ```
Before calling the script, you might want to set some (optional) environment variables on your host machine:
$ export GENIUX_MIRROR_PATH=/home/user/mirror
$ export GENIUX_STORE_PATH=/home/user/geniux-releases
$ export GENIUX_STORE_REQUIRES_SUDO=1
Examples of usage:
NOTE: if you are operating on a remote host through
ssh, you might want to runscreenat this point, so the work won't be lost in case of a session drop.
- Build Geniux release
dunfell, with manifest datelatest, for machineszedboard-zynq7andraspberrypi3:
$ ./geniux-builder.sh
- Build Geniux release
thud, with manifest datelatest, for machineszedboard-zynq7andraspberrypi3:
$ ./geniux-builder.sh thud
- Build Geniux release
thud, with manifest date20.09, for machineszedboard-zynq7andraspberrypi3:
$ ./geniux-builder.sh thud 20.09
- Build Geniux release
warrior, with manifest datelatest, only for machinezedboard-zynq7:
$ ./geniux-builder.sh warrior latest zedboard-zynq7
- Build Geniux release
warrior, with manifest date20.09, only for machineraspberrypi3:
$ ./geniux-builder.sh warrior 20.09 raspberrypi3
- Build Geniux release
rocko, with manifest datelatest, for machineszedboard-zynq7andzcu102-zynqmp:
$ ./geniux-builder.sh rocko latest "zedboard-zynq7 zcu102-zynqmp"
- Build Geniux release
hardknott, with manifest datelatest, for machinesraspberrypi4andintel-corei7-64:
$ ./geniux-builder.sh hardknott latest "raspberrypi4 intel-corei7-64"
If you want to have more detailed control of the whole process, or you are interested in further development (making changes to the Yocto layers, adding new features or recipes, fixing bugs, etc.), then you can skip the usage of the geniux-builder.sh script and follow the instructions below.
Getting ready for building Geniux with manual steps
Get a powerful machine (as much RAM, storage capacity, and CPU cores as you can), install the Docker engine, and make sure it is up and running. Then, get the source code of this repository and go to its base path:
$ git clone https://github.com/carlesfernandez/yocto-geniux
$ cd yocto-geniux
You are now ready to generate the Docker container, and then running it in order to obtain the image files and the SDK installer.
Building the container
The container can be built by doing (parameters --build-arg "whatever" are optional, the last dot . is not):
$ docker build --no-cache \
--build-arg "version=warrior" \
--build-arg "manifest_date=21.02" \
--build-arg "MACHINE=raspberrypi3" \
--build-arg "host_uid=$(id -u)" --build-arg "host_gid=$(id -g)" \
--tag "geniux-image:latest" .
If the --build-arg parameters are not specified, the default values are version=thud, manifest_date=latest, MACHINE=zedboard-zynq7, host_uid=1001 and host_gid=1001.
The possible options for
versionnames are those of the Yocto Project Releases, starting from Rocko (Yocto version 2.4):rocko,sumo,thud,warrior,zeus,dunfell,gatesgarth,hardknott.
The possible options for
manifest_dateare those of the tags found at the https://github.com/carlesfernandez/oe-gnss-sdr-manifest repository. If not set, or set tolatest, it will pick up the current version of the manifest in the branch specified byversion. In order to get a tagged manifest (for instance,warrior-21.02), you can setversion=warriorandmanifest_date=21.02.The possible options for
MACHINEnames are those defined by the Yocto Project, plus those defined by the layers included in the manifest for the corresponding version. Examples:- List of machines supported by the Yocto Project:
qemuarm,qemuarm64,qemumips,qemumips64,qemuppc,qemux86,qemux86-64. - List of machines defined by the
meta-xilinx-bsplayer (please check your specific branch for a list of options available). - List of machines defined by the [
meta-raspberrypilayer](http://git.yoctoproject.org/cgit/cgit.cgi/meta-raspberrypi/tree/conf/machinev(please check your specific branch for a list of options available).
- List of machines supported by the Yocto Project:
Check the branch of the manifest corresponding to your version to check the available layers.
- If you have user permission restrictions, you can use
--build-arg "host_uid=$(id -u)"and--build-arg "host_gid=$(id -g)"to provide specific user and group id to the internal container user that will be able to write outside the container. By default, bothhost_uidandhost_gidare set to1001. If you do not use these arguments, you might needsudoaccess in order to copy files outside the container.
Getting the development image and the SDK installer
Non-interactive method
NOTE: if you are operating on a remote host through
ssh, you might want to runscreenat this point, so the work won't be lost in case of a session drop.
Create an output folder and run the container:
$ mkdir -p output
$ docker run -it --rm \
-v $PWD/output:/home/geniux/yocto/output \
--privileged=true \
geniux-image:latest
If you have a local mirror available, you can provide access from within the container as:
$ mkdir -p output
$ docker run -it --rm \
-v $PWD/output:/home/geniux/yocto/output \
-v $my_mirror:/source_mirror/sources/$version \
--privileged=true \
geniux-image:latest
replacing $my_mirror by the actual path of your mirror and $version by the actual version name you used when building the container. If you do not have any local mirror, just omit the -v $my_mirror:... line.
The build process will take several hours. At its ending, the image files will be under your ./output folder, so outside the container. The ./outputfolder must be empty before starting the run. The container itself will be erased after completion.
Interactive method
NOTE: if you are operating on a remote host through
ssh, you might want to runscreenat this point, so the work won't be lost in case of a session drop.
$ mkdir -p output
$ docker run -it --rm \
-v $PWD/output:/home/geniux/yocto/output \
-v $my_mirror:/source_mirror/sources/$version \
--privileged=true \
geniux-image:latest bash
Notice the final bash, that will take you to the bash console without executing the predefined commands.
Now, inside the container, prepare the building environment:
$ source ./oe-core/oe-init-build-env ./build ./bitbake
At this point, you can modify the conf/local.conf file, add new recipes, and experiment as you want. The nano editor is available for that. When you are ready to build the image:
$ bitbake gnss-sdr-dev-image
and the corresponding SDK script installer:
$ bitbake -c populate_sdk gnss-sdr-dev-image
If you want to build the Docker images, you need to run the container with the flag --privileged=true and to start the Docker daemon inside the container:
$ sudo service docker start
$ bitbake gnss-sdr-dev-docker
The build process will take several hours. At its ending, the image files will be under ./build/tmp-glibc/deploy folder. Move them to the
/home/geniux/yocto/output folder:
$ mv ./tmp-glibc/deploy/images /home/geniux/yocto/output/
$ mv ./tmp-glibc/deploy/sdk /home/geniux/yocto/output/
Now, when doing exit from the container, the build artifacts will be at the ./output folder you created in your machine, so outside the container. The container itself will be erased at exit.
Copyright and License
Copyright: © 2020-2021 Carles Fernández-Prades, CTTC. All rights reserved.
The content of this repository is released under the MIT license.
Acknowledgements
This work was partially supported by the Spanish Ministry of Science, Innovation, and Universities through the Statistical Learning and Inference for Large Dimensional Communication Systems (ARISTIDES, RTI2018-099722-B-I00) project.
- Shell
Published by carlesfernandez almost 5 years ago