A method for automating the build process of the embedded Linux operating system binary images in a high-performance computing cluster based on continuous integration and continuous deployment technology is discussed. The method proposed can significantly reduce software design time, free up computing resources at local workstations and organize joint work on a team project. A practical example of setting up the software tools necessary to compile the boot-loader, embedded Linux kernel and root file system for BeagleBone Black device with an ARM Cortex A8 processor is provided. Basic requirements for the server and workstation software are formulated. The materials of the article can be used to organize system software design for Internet of Things devices effectively, as well as for educational purposes. Tools used to develop embedded operating systems based on Linux Yocto as well as GitLab source code management system and configuring of CI/CD feature are described. The build system environment proposed includes GitLab service installed on a high-performance virtual machine in a computing cluster and set of workstations connected to the local network. The project repository is physically located on the server and managed by GitLab service. Docker virtualization is used to isolate build process from the server operating system. Building of operating system image is started automatically using CI/CD runner script, every time changes to the source code of the project are made. Git protocol is used to modify project repository remotely. Intermediate compilation data is stored outside of the Docker sandbox to prevent data integrity between compilation events. This data includes a significant amount of third-party library source code downloaded from external Linux repositories on the Internet. Thus, rebuilding the project after making changes does not require a complete rebuild and reloading of library sources, and takes much less time. Requirements for the workplace of a development engineer are minimized because the main computing load is transferred to a remote server. The proposed method of building an image of the Linux Yocto operating system allows manage team to work on a project and significantly increases the speed of the project rebuild procedure, therefore, reduces the time spent on designing and debugging system software for embedded systems. The effectiveness of the proposed method was confirmed practically with sample project Linux Yocto for the BeagleBone Black minicomputer based on the ARM Cortex A8 processor. The article contains examples of settings taken from this project. The proposed method can be used to study design of system software for embedded systems. Handson training sessions are a good example of team-based software development in a time-constrained environment.
Read full abstract