GNOME OS is a testing-only operating system built as part of GNOME's CI/CD pipeline, developed by the GNOME community.
A small team of Codethink interns aspired to port GNOME OS to mobile platforms. The team had two primary goals:
- Demonstrating GNOME OS on a mobile device
- Showing Atomic Upgrades working in a Linux phone OS
Atomic Upgrades is a term used to describe a method for upgrading an operating system. Atomic Upgrades enable rollback, a feature that ensures systems cannot be left in a broken or intermediate state if an error occurs during the upgrade. The interns demonstrated Atomic Upgrades with GNOME OS on a mobile device and virtual machine images using official and locally hosted GNOME OS images. The team designed the upgrades to be performed using the GNOME Software application and directly from the command line interface. An extensive wiki section on Atomic Upgrades was designed to support other developers looking to explore mobile Linux-based operating systems.
The intern team were able to boot GNOME OS on the PinePhone and PinePhone Pro, including options for both the internal storage and SD card. During this period, the team gained significant experience in several technologies over two months, including BuildStream, Freedesktop SDK, QEMU, and OSTree.
Running GNOME OS on mobile
The initial step was to select the hardware to target. The team decided to go for the PinePhone because hardware availability and maturity of the software ecosystem for that phone. Generating images for the PinePhone Pro was set as a stretch goal.
Software wise the initial work was to create build instructions to be able to create images for the PinePhone. For that, the team created a fork of the upstream GNOME OS integration repository and added corresponding changes. This also had the benefit of being able to test the changes in a CI/CD pipeline. After the initial image was created, the initial booting of GNOME OS proved to be relatively painless; understandably, some of the hardware was not working: the camera, cellular/modem, Wi-Fi, GPS, speakers, and microphones were non-functional.
The interns tweaked kernel configurations and worked to upgrade the the 5.17 branch of the megous kernel to correct the WiFi and modem problems. Combined this with an updated ModemManager they were able to solve the calling and GPS issues.
PinePhone running GNOME OS
PinePhone running GNOME OS with a working modem
PinePhone running GNOME OS and making calls
Furthermore, the interns figured that the system behaviour, applications, and user interface were not resembling a mobile-like experience. The widgets and applications did not scale correctly on the phone, the keyboard was partially functioning, and the swiping gestures were ineffective. These are known issues and there is indeed plans to make GNOME more mobile friendly by default, but in the meantime the interns experimented with some GNOME Shell Extensions to improve the usability of the UI. You can see those experiments in the initial MR but as said before they were only to experiment, and not to get them merged.
Atomic updates
The interns verified atomic updates worked as expected; after flashing the phone you will automatically get a notification if a new version is available and the system will atomically upgrade to the new version, all thanks to the underlying ostree infrastructure.
This not only has benefits as a user, but as a developer as people will be able to create their own customization and switch atomically to them without reflashing the phone.
Instructions on how to use ostree are documented in the wiki as well
PinePhone running GNOME OS and performing Atomic Upgrades using a local server and hosting a custom image
The results
The team has successfully managed to create GNOME OS images for the PinePhone; and make them available through the upstream GNOME CI pipelines.
The booting and flashing processes are documented in the wiki, with options to boot from internal storage or an SD card for the PinePhone. You can find detailed instructions here
The work produced by the interns has been upstreamed to the official GNOME repo; the merge request for master (future GNOME 44) are being reviewed and can be found here:
Future work
Hardware support still needs work: The PinePhone image lacks Bluetooth, functioning speakers, and camera support. Furthermore, the PinePhone Pro has similar issues including the lack of Wi-Fi, calling, and modem.
We hope this project will help to develop and test future GNOME mobile developments, like the work in progress GNOME Shell and Mutter work.
If you discover something new or how to fix the previous issues, we would love to hear how you did it. Let us know through the official GNOME OS matrix channel or comment on the original issue.
The GNOME name and logo are trademarks of the GNOME Foundation
Other Content
- Open Source Summit Europe (OSSEU) 2024
- Watch: Real-time Scheduling Fault Simulation
- Improving systemd’s integration testing infrastructure (part 2)
- Meet the Team: Laurence Urhegyi
- A new way to develop on Linux - Part II
- GUADEC 2024
- Developing a cryptographically secure bootloader for RISC-V in Rust
- Meet the Team: Philip Martin
- Improving systemd’s integration testing infrastructure (part 1)
- A new way to develop on Linux
- RISC-V Summit Europe 2024
- Safety Frontier: A Retrospective on ELISA
- Codethink sponsors Outreachy
- The Linux kernel is a CNA - so what?
- GNOME OS + systemd-sysupdate
- Codethink has achieved ISO 9001:2015 accreditation
- Outreachy internship: Improving end-to-end testing for GNOME
- Lessons learnt from building a distributed system in Rust
- FOSDEM 2024
- Introducing Web UI QAnvas and new features of Quality Assurance Daemon
- Outreachy: Supporting the open source community through mentorship programmes
- Using Git LFS and fast-import together
- Testing in a Box: Streamlining Embedded Systems Testing
- SDV Europe: What Codethink has planned
- How do Hardware Security Modules impact the automotive sector? The final blog in a three part discussion
- How do Hardware Security Modules impact the automotive sector? Part two of a three part discussion
- How do Hardware Security Modules impact the automotive sector? Part one of a three part discussion
- Automated Kernel Testing on RISC-V Hardware
- Automated end-to-end testing for Android Automotive on Hardware
- GUADEC 2023
- Embedded Open Source Summit 2023
- RISC-V: Exploring a Bug in Stack Unwinding
- Adding RISC-V Vector Cryptography Extension support to QEMU
- Introducing Our New Open-Source Tool: Quality Assurance Daemon
- Long Term Maintainability
- FOSDEM 2023
- Think before you Pip
- BuildStream 2.0 is here, just in time for the holidays!
- A Valuable & Comprehensive Firmware Code Review by Codethink
- Flathub-Codethink Collaboration
- Codethink proudly sponsors GUADEC 2022
- Tracking Down an Obscure Reproducibility Bug in glibc
- Web app test automation with `cdt`
- FOSDEM Testing and Automation talk
- Protecting your project from dependency access problems
- Porting GNOME OS to Microchip's PolarFire Icicle Kit
- YAML Schemas: Validating Data without Writing Code
- Deterministic Construction Service
- Codethink becomes a Microchip Design Partner
- Hamsa: Using an NVIDIA Jetson Development Kit to create a fully open-source Robot Nano Hand
- Using STPA with software-intensive systems
- Codethink achieves ISO 26262 ASIL D Tool Certification
- Full archive