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.
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 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:
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
- 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
- RISC-V: running GNOME OS on SiFive hardware for the first time
- Automated Linux kernel testing
- Native compilation on Arm servers is so much faster now
- Higher quality of FOSS: How we are helping GNOME to improve their test pipeline
- RISC-V: A Small Hardware Project
- Why aligning with open source mainline is the way to go
- Build Meetup 2021: The BuildTeam Community Event
- A new approach to software safety
- Does the "Hypocrite Commits" incident prove that Linux is unsafe?
- ABI Stability in freedesktop-sdk
- Why your organisation needs to embrace working in the open-source ecosystem
- RISC-V User space access Oops
- Tracking Players at the Edge: An Overview
- What is Remote Asset API?
- Running a devroom at FOSDEM: Safety and Open Source
- Meet the codethings: Understanding BuildGrid and BuildBox with Beth White
- Streamlining Terraform configuration with Jsonnet
- Bloodlight: Designing a Heart Rate Sensor with STM32, LEDs and Photodiode
- Making the tech industry more inclusive for women
- Bloodlight Case Design: Lessons Learned
- Safety is a system property, not a software property
- RISC-V: Codethink's first research about the open instruction set
- Meet the Codethings: Safety-critical systems and the benefits of STPA with Shaun Mooney
- Why Project Managers are essential in an effective software consultancy
- FOSDEM 2021: Devroom for Safety and Open Source
- Meet the Codethings: Ben Dooks talks about Linux kernel and RISC-V
- Here we go 2021: 4 open source events for software engineers and project leaders
- Xmas Greetings from Codethink
- Call for Papers: FOSDEM 2021 Dev Room Safety and Open Source Software
- Building the abseil-hello Bazel project for a different architecture using a dynamically generated toolchain
- Advent of Code: programming puzzle challenges
- Full archive