NeonOS Updates
You can always download the latest NeonOS image from neon.ai. In most cases though, you can perform in-place updates from your device. Updates will generally take about 30 minutes to complete and once started, you will not be able to use your device until updates finish.
Update via Skill Intent
For images as of December 20, 2022, you may check for updates by asking your
device "are there any updates?"
. Neon will tell you the installed Neon Core version
and if there is an update available. If a newer version is available, you will be
given the option to install it.
Manual Update via Terminal
As an alternative to the skill intent, updates can be started manually from a terminal session. Instructions for getting a terminal open are documented here. This method is supported as of October 26, 2023.
/opt/neon/update master
# `master` refers to the stable release branch; for alpha updates use `dev`
Update Process
The update process may vary slightly as systems mature, but a description of the components is included here.
Neon Updates Skill
The Neon Updates Skill handles user requests to check for updates. If an update is requested, the skill will emit a message to start an update which the relevant plugin will handle. This skill is also where settings determine if pre-release versions are included in updates.
Device Updater Plugin
NeonOS Releases since July 20, 2023, use SquashFS to perform a different kind of update. Operating System updates are managed by the Device Updater Plugin which checks configured remote paths for new SquashFS or InitramFS images to be applied. When an update is available, the plugin downloads and applies updates; InitramFS is applied without needing a restart, SquashFS updates require a system reboot to be applied.
SquashFS updates will overwrite much of the root file system to make sure everything
is in a working state after updating. Any custom scripts or user files should be
kept in the /home
directory to avoid being removed as part of the update
process. Note that system packages may be removed during the course of an update,
so any manually installed packages may need to be re-installed after updating.
Advanced Usage
SquashFS updates attempt to migrate relevant information (like /var
, /home
,
SSH keys, NetworkManager config, etc.) between updates, but system packages and
other manual configuration may be removed as part of the update process. For most
users, this is helpful to clean up incidental changes and restore an installation
to a predictable state after updating. For users who want to apply customizations
that persist through updates, here are some guidelines.
- With the exception of
venv
, the user directory is not modified between updates.venv
is replaced with a clean version as part of an update to ensure package compatibility and allow for updating python versions. - Extra skills should be added to the user configuration file. This allows Neon core to manage dependency installation, and makes sure a skill is re-installed after system updates.
- Any extra customizations can be added to
/root/post_update
. This script will be run as root after an update is applied and is intended to handle any desired system package installation, system service configuration, etc. The system service does not specify an interpreter, so this file should start with a#!
, i.e.#!/bin/bash
or#!/usr/bin/python3
. This file will be marked as executable automatically before each execution. - Any changes not explicitly handled during the update will be saved at
/opt/neon/old_overlay
. Apost_update
script may choose to do something to restore specific files from here.
Core Updater Plugin
Python package updates are managed by the Core Updater Plugin
which is configured in Neon OS to run the neon-updater
SystemD service. The
neon-updater
service is responsible for backing up
the current system and installing a newer version of neon-core
.
neon-updater Service
The neon-updater
service comes from
neon-image-recipe
and is responsible for performing Python package updates. The service will stop
all core processes, backup the current Python environment, and then update
Python packages. After installation, the service will check that the core services
load before optionally rolling back failed changes and then restarting Neon.
Legacy Update Process for Installations prior to Neon Core 22.10.2a15
If you have an older version of Neon that does not include the update skill, you may still update your device manually without having to install a new image.
Update via SSH
If you have another computer available on the same network as your Neon device,
you can connect via SSH to start the update.
1. Ask your Neon device "what is your IP address"
and type it somewhere you can copy & paste from.
2. From a terminal on your other computer, enter ssh neon@<device ip address
.
(Windows 10/11 has an app called 'Terminal' that you can find using the 'search' feature in your Start menu. It will open a terminal window for you.)
Your terminal address will differ, but here is an example:
You might see this warning:
That's normal. Type in 'yes' and press enter. After the change is made, you'll be returned to where you started.
-
Type in
ssh neon@<device ip address
again to start the password update process. You'll be prompted to enter the password. The default password for Neon AI OS images is 'neon'. It will not show in the terminal window when you type passwords. Type in neon, and press enter. Follow the prompts to set a new password. -
One more time, type in
ssh neon@<device ip address
and enter your password.
Your terminal prompt should change to show that you are accessing Neon on your Mark II device. For example:
Now Run the one-time update script
Update via on-device terminal
If you have a USB keyboard available, you can open a terminal on your Neon device to start the update.
- Connect a USB keyboard to your Neon device.
- Press
ctrl
+shift
+F1
to open a terminal. - Tap or click on the terminal.
- Run the one-time update script
Run the one-time script
Run the following commands to download and run the one-time update script:
wget https://neon.ai/one-time-update bash one-time-update
Example of running wget:
(The https://neon.ai/one-time-update page is a friendly url which redirects to the longer one used in the example.)
Your Mark II display should change to show the Neon logo, and words showing its status. This may take a couple minutes, or longer depending on your connection speed. When you see the home screen return, you're good to go!