Havic Kernel and Userspace Migration Plan
Plan to transition the Havic and Gen operating
environment
-
Move to Debian 10 or 11 distribution kernel and userspace (64-bit)
-
Move off of Gentoo based 32-bit
environment. The Gentoo distribution is a non-release paradigm
distribution, and therefore requires too much local historical
knowledge to maintain a stable but non-stale platform without
chaining someone to the task of maintenance and updating.
-
Removes the requirement of
creating and maintaining a custom-configured kernel for the purpose
of extraordinary longevity since a relatively fresh kernel will be
afforded at rational time intervals (every two years +/- 6 months).
-
Utilize standard Debian cross-build packages for ARM for
cross-building (will require some work to make the necessary changes
to the build procedure), dropping the current “golden tarball”
cross build environment kept in the git repository. This means the
cross build environment no longer need be created and built
utilizing significant engineering resources.
-
Utilize VBox and BTRFS file system as a fallback strategy for pieces
that can't be changed to work with the new userspace
Userspace and Kernel periodic upgrade/update plan
-
Develop a suite of tools to
automate building, upgrading and updating
the software operating environment userspace and kernel, and for
installing those upgrades and updates on the Havic and Gen boxes.
Motivation: to prevent the software environment of the tester boxes
from aging out.
-
Upgrade to the next major
Debian release every two years (approximately). Upgrade will be
approached after the first few point updates have occurred for that
release to insure that any initial stability problems with that
release have been found and addressed.
-
This upgrade is the result of
work to be done by a software engineer. In other words, preparing
the upgrade is a hands-on task.
-
Performed on a specific
“primary” build machine/environment and sent out to the Havic
and Gen tester boxes. The system will include a “roll-back”
feature whereby if the upgrade proves to be too disruptive on an
immediate basis per individual box, the environment can be rolled
back to the previous version. The roll back operation will require
just a few seconds followed by a reboot. The new upgrade
environment will still be on the system, allowing for a roll
forward at a later time once issues have been resolved. If a box
is in a roll-back state, then it will not receive any upgrades or
updates until it is on the newest release. The new upgrade
environment can be discarded and a new upgrade release installed
if that turns out to be necessary.
-
Custom kernel drivers may
have build issues at this time, and software engineering
resource(s) applied to address those issues.
-
Host side custom applications
may need software engineering attention at this juncture.
-
Cross build issues may arise
at this time, and hands on software engineering needed to resolve.
-
Update
out-of-distribution-software, like
buildroot
-
Install security and bug fix
updates every six months or sooner as needed. Bug
fixes include only the most dire lack of functionality
type bugs. Custom host side kernel drivers will be
automatically rebuilt and installed with each update of
the kernel. These updates are considered minor and should
not bring about any issues. Kernel updates should not
include changes to the kernel APIs used by the custom
host side drivers unless those changes are considered
critical for proper operation of the system or to prevent
data loss.
-
Performed by user on
individual tester boxes. If desired, the build machine tools can
include a protocol to contact the individual tester boxes and
signal them to perform this update, however this may not always be
possible as those machines may not be able to communicate with the
primary build machine. Such would not be an automated function. It
would be triggered by a user on the primary build machine.
-
These updates will not be
part of the roll-back/roll-forward functionality.
-
Thoroughly document the
design and methodology of the environment, and synopsis of the
tools.