How and why EasyOS is different
EasyOS was born in January 2017, and since then there have been
bits and pieces written here and there about how and why it is
different from other Linux distributions. This includes some
rather technical descriptions. What is needed is a simple
plain-English list, so that anyone can get a quick idea of what
EasyOS is all about.
So, here goes. Do note, though, that Easy is an experimental
distribution, and the features may change, and some features are a
work-in-progress. These items are not listed in any particular
order...
Container-friendly |
EasyOS is designed from scratch to support
containers. Any app can run in a container, in fact an
entire desktop can run in a container. Container management
is by a simple GUI, no messing around on the commandline.
The container mechanism is named Easy
Containers, and is designed from scratch
(Docker, LXC, etc are not used). Easy Containers are
extremely efficient, with almost no overhead -- the base
size of each container is only several KB. |
Very very fast |
While using Easy, everything happens in RAM.
App startup appears to be almost instantaneous, even very
large apps such as LibreOfffice startup in the blink of an
eye. Ditto when starting a container, blink of an eye.
Depends on your PC of course! |
Flash drive will last
"forever" |
The default mode is to have a "save" icon on
the desktop, to flush RAM to drive whenever you want, or not
at all, or at shutdown. Thus, writes to the drive are
severely constrained. See here
and here. |
Totally isolated from drives |
The boot menu has an option "Copy session to
RAM & disable drives", which boots to a desktop with
power of administrator (root) in all respects except totally
isolated from the drives of the PC. This is an alternative
to using containers, and is intended to be even more secure
than containers. An introduction is here. |
Run as root |
This is controversial, however, it is just a
different philosophy. The user runs as administrator (root),
apps may optionally run as a non-root user or in containers
as a "crippled root". The practical outcome is that you
never have to type "sudo" or "su" to run anything, nor get
hung up with file permissions. Note, current releases of Easy default to running Firefox as user 'firefox', and SeaMonkey as user 'seamonkey'. It is easy to do the same for any app, that is, run it as its own user, isolated from other users. |
Top-level /files folder |
/files is bind-mounted from same-named folder
in the working-partition, and is a permanent place for all
your personal files. The abovementioned apps running
non-root, all have save permission under /files. In fact,
almost all apps default to open and save under /files.
Explanation here. |
No ISO! |
ISO for optical media is a legacy format.
Very few desktop PCs are sold these days, it is mostly
laptops, and most of those do not have optical drives. Easy
is provided as an image file that can be written to any
Flash-stick of 4GB or greater (and will auto-grow to fill
the drive). Or, the file can be opened up and directly
installed to internal hard drive. Rationale here. |
No full install |
In a traditional "full" installation, the
filesystem occupies an entire partition, with the usual
/etc, /bin, /usr, /proc, /sys, /tmp, etc. Easy does not
install like this. Easy installs to hard drive in what we call frugal mode, which occupies just one folder in a partition, allowing to co-exist with whatever else the partition is used for. |
Roll-back, roll-forward |
With Easy, you can take a snapshot, and later
on roll-back to it. Then, you can roll-forward. This can
work across version changes, kernel changes. This mechanism
applies to the main filesystem as well as the containers.
The link below has more information. |
Atomic version upgrade |
Unlike distributions that perform version
upgrade on an error-prone per-package basis, Easy is
upgraded by replacing three files. Thus, successful upgrade
is "guaranteed". This is analogous to "atomic transactions"
in finance. Read more here. |
SFS mega-packages |
Easy supports Squashfs mega-packages, which
are lots of packages bundled into one file, which is named
with ".sfs" extension. These never get extracted, when in
use they are mounted in the aufs or overlayfs layered
filesystem, and can be uninstalled just by removing. For
example, there is devx_<version>_amd64.sfs,
which has everything required for compiling and debugging.
There is also kernel source SFS, and so on. SFSs make life
very simple! To use, click the "sfs" icon on the desktop. |
Package manager audit trail |
PKGget, the traditional package manager,
maintains an audit-trail. One outcome, if install a package
that overwrites an existing file, the "deposed" files are
kept (see /audit/deposed) and restored if the package is
uninstalled. To use, click the "pkg" icon on the desktop.
Read more here.
|
Run anything in containers |
SFS files and containers, combined, are very
powerful. You can choose any app to run in a container. You
can even run other Linux distributions (currently restricted
to only Puppy-derivative distros). Container startup is
typically around 1 second. For example, Puppy Linux Xenialpup
7.5. |
pup_event service manager |
Easy uses the Busybox 'init' system, no
systemd! To provide management of services with dependences,
there is pup_event,
a simple extension to the init-system. For example, a daemon
could be brought up only when network is active. pup_event
also provides an extremely flexible and simple IPC
mechanism, pup_event_ipc. |
What is not in Easy |
No systemd, and it is also worth noting what
else Easy does not have: policykit, pam, avahi. The
Dunfell-series does have pulseaudio, and "putting
the toe in the water" experimenting with pipewire. |
GUIs for everything |
The objective is that everything in Easy be
configured by simple GUIs, without having to fiddle about on
the commandline. This includes management of SFS files,
BootManager, VersionControl, EasyContainers,
pup_event, BluePup
and EasyShare. |
Non-standard hierarchies |
When someone boots up Easy, they will see
that the menu (bottom-left of screen) is different from what
they are accustomed to. Ditto the folder hierarchy. The
thing is, keep an open mind -- it is very easy to adjust,
and there are solid reasons for the differences. |
JWM-ROX desktop |
Everyone knows about Gnome, KDE, Mate, XFCE
and LXDE desktops, very few are aware of JWM-ROX. This has
been used by Puppy Linux since around 2004, and is an
extremely lightweight (fast) yet powerful desktop. JWM is a
window manager (and provides the system-tray and menus), and
ROX is the ROX-Filer file-manager and desktop handler. They
work extremely well together, and are the choice for Easy. |
Icon-free desktop |
Easy is able to flip between a traditional
desktop with icons, and an icon-free desktop with all icons
in the system-tray. Information here
and here. |
Encryption |
The "working-partition" has folders that may
optionally be encrypted. These folders are everything, all
your work, downloads, history. etc. Encryption is by fscrypt,
uses AES-256, and requires that a password must be entered
at bootup. |
x86_64 and aarch64 |
In theory, as Easy is built from woofQ,
it can use any binary packages, i686 for example. However,
each architecture requires time and effort to support, so
Easy releases are only x86_64 and aarch64 builds. In the
latter case, have targeted RPi3&4 boards. |
Network interfaces not
renamed |
Easy keeps the kernel-assigned interface
names, eth0, wlan0, etc., does not rename them to something
weird such as "enp2s0", as do most distributions. Easy
network management has no problem with keeping track of the
correct interface, even if the kernel-assigned names change. |
Drive names not renamed |
Ditto. The kernel-assigned names for drives
and partitions are retained. For example drive sda and
partition sda1. Also, unlike other distributions, all partitions are mounted under /mnt, with folder-name the same as the partition, for example, /mnt/sda1 |
Hardware profiling |
Boot EasyOS from a USB-stick on different
computers, and automatically remembers the setup for that
hardware. A work-in-progress, but coming along very nicely.
modules
temperature
video
alsa
pulseaudio
clock
|
Compiled from source |
Easy is built with woofQ,
which takes as input binary packages. These packages can
come from any distribution, such as Ubuntu DEBs; however, to
reduce bloat and undesired architectural features, the
current release of EasyOS uses binary packages created by a
fork of OpenEmbedded with "meta-quirky" layer (overview here).
That is, all packages in Easy are compiled from source,
there is no reliance on any other distro. This does mean a
much smaller repository, however, they are optimized for
Easy (small and fast). Note that there is an earlier release
of EasyOS built with Debian Buster packages. |
Puppy heritage |
Barry Kauler created Puppy Linux in 2003,
turned it over to the "Puppy community" in 2013. It is only
natural that a lot of "puppyisms" can be found in Easy,
though, it must be stated that Easy is also very different,
and should not be thought of as a fork of Puppy. Inherited
features include the JWM-ROX desktop, menu-hierarchy,
run-as-root (with optional non-root apps), SFS layered
filesystem, PET packages, and dozens of apps developed for
Puppy. |
"Everything but the kitchen
sink" |
Easy continues the Puppy tradition of
including a large suite of applications, to cater for the
needs of most users, yet keeping the download small. Easy
takes it to the next level, aiming to have "everything"
built-in, to satisfy "99%" of users, yet keep the download
size around 600MB. Example built-in package-list here. One factor that keeps the download size under control is to have separate language builds, currently English, French and German. |
The future. Currently experimenting with "Easy Bookworm", EasyOS
built with Debian Bookworm (testing branch) DEB pckages. There are
more things that may happen, monitor Barry's blog:
It is hoped that these highlights will give a positive
appreciation of what EasyOS is all about!
Tags: about