LeoOS
LeoOS copied to clipboard
OS distribution for Raspberry Pi computer running inside Leo Rover.
LeoOS
LeoOS is a Debian-based Operating System distribution for the single-board computer running inside Leo Rover (currently Raspberry Pi 4B). It uses Ubuntu and Fictionlab package archives, comes with a ROS distribution, preconfigured network, a desktop environment, a service for starting base functionalities at boot, and many more.
This repository contains an image-builder configuration for building LeoOS images (OS images for Raspberry Pi computer running inside Leo Rover).
For the built, compressed images, visit the Releases page.
Versions
The major version (the first part in the three-part version number) is tied to the Ubuntu and ROS distributions the OS is based on. For now, the version semantics look as follows:
- 1.0.0 and up - Ubuntu 20.04 Focal Fossa and ROS Noetic
- Before 1.0.0 - Ubuntu 18.04 Bionic Beaver and ROS Melodic
Build stages
The configuration consists of 5 stages, each one creates a valid root filesystem for Raspberry Pi 3/4. The last two stages are exported to bootable SD card images.
Here's a short description and list of changes for each stage:
- stage0 - A minimal bootable Ubuntu 20.04 64-bit system for Raspberry Pi.
- Use multistrap to bootstrap a root filesystem from Ubuntu and Fictionlab Package Archives.
- Set regional configuration (locales, timezone, etc.).
- Copy
config.txtandcmdline.txtboot configuration files for RPi.
- stage1 - A lightweight working system that is a base for LeoOS but does not contain anything specific to Leo Rover.
- Add
init_firstbootscript that is called upon first boot of the system and runs scripts from the/etc/firstboot.ddirectory. - Add a script to
firtbootconfig, which extends the filesystem to fill the SD card space. - Install
network-managerand configurenetplanto use it as a default renderer. - Add a script to
firtbootconfig, which generates SSH host keys. - Set the hostname to
leo. - Perform some minor system tweaks: enable bash color prompt, install some polkit and udev rules.
- Create a default user and add him to different groups.
- Install
rng-toolspackage to use RPi Hardware TRNG to feed kernel entropy pool. - Install
pi-bluetoothpackage to enable the onboard bluetooth module. - Install
zram-configpackage to dedicate a portion of the RAM memory for swapping. - Install drivers for Realtek 88XXau WiFi network USB cards.
- Add
- stage2 - A "ROS-ready" minimal system.
- Add ROS apt repository.
- Install some base ROS packages.
- Install
rosdepandcatkin-toolspython packages. - Initialize
rosdep.
- stage3 (
liteimage) - The headless (without a graphical interface) version of LeoOS.- Install
hostapdanddnsmasqpackages. - Configure the network to use the USB WiFi as an Access Point.
- Add a script to
firstbootconfig, which sets a unique Access Point SSID based on last 4 characters of RPi serial number. - Add
ap-disableandap-disablescripts that can be used to Enable/Disable Access Point at runtime. - Install ROS packages for Leo Rover.
- Add robot configuration files under
/etc/rosdirectory. - Add scripts for starting and stopping Leo Rover ROS functionality
- Add the
leosystemd service which start Leo Rover ROS functionality upon boot. - Install leo_ui and configure a HTTP server to host the Web interface.
- Configure update-motd.
- Install
- stage4 (
fullimage) - The full version of LeoOS.