site  news  contact

How and why EasyOS is different

November 27, 2023 — BarryK

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 fast
While using Easy, everything happens in RAM. App startup appears to be almost instantaneous, even very large apps such as LibreOffice 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 human-user runs as administrator (root), apps may optionally run as a non-root user or in containers as "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.
Easy runs each non-root app as its own user. For example, by default Firefox runs as user 'firefox', and SeaMonkey as user 'seamonkey'. Installed AppImages and Flatpaks also default to run as their own user.
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 a symbolic-link to the same-named folder in the working-partition, and is a permanent place for all your personal files. The above-mentioned apps running non-root, all have save permission under /files. In fact, almost all apps default to open and save under /files. Explanation here.
Furthermore, each app has its own private folder under /files. For example, Kdenlive video editor AppImage or Flatpak has /files/apps/kdenlive, that no other app can see into.
No ISO!
ISO for optical media is a legacy format. Very few desktop PCs are sold these days, it is mostly laptops, and none of those 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.
Installation is so simple: Just copy three files 'vmlinuz', 'initrd' and 'easy.sfs' into a folder in any ext4 partition, and that's it, Easy is installed. All that remains is to create an entry in the boot manager.
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 (listed above). Thus, successful upgrade is "guaranteed". This is analogous to "atomic transactions" in finance. Read more here.
Four package managers
Easy has four package managers: PKGget, SFSget, Appi and Flappi, to readily make available just about any package that you might want to use. The underlying concepts are explained here. Any one of these may be run via the "pkg" icon on the desktop. Brief points about each one follows:
SFS mega-packages
Easy supports Squashfs mega-packages via SFSget, 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!
Package manager audit trail
PKGget is the traditional package manager, hailing from the Puppy Linux days. However, it does have some steroids pumped in, for example:
PKGget 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. Read more here.
AppImages and Flatpaks
Appi and Flapi are package managers for AppImages and Flatpaks, but offer more than you might expect. An app will install such that it runs as its own user, isolated from other apps. Menu entry and desktop icon are created, updating is supported. See a snapshot of Flapi here. -- Appi has a similar UI.
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 dependencies, 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.
sudo-sh replaces sudo
The 'sudo' binary is replaced by 'sudo-sh', a much simpler mechanism for non-root apps to run a program as the root user. See here and here.
What is not in Easy
No systemd, and it is also worth noting what else Easy does not have: policykit, pam, avahi. The Kirkstone-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, EasyShare., MSCW (Multiple Sound Card Wizard), EasyApps, EasySetup and EasyJWM.
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.
Note: you can flip via "MoveIcons tray or desktop" in the "Desktop" category of the menu.
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-XTS, and requires that a password must be entered at bootup.
Note: the /files folder, where you would keep all your projects, for example Kdenlive video editor projects, is also encrypted (/files is a symlink to same-named folder in the working-partition).
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 keyboard nvidia   
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 and github project 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). It is currently almost 2,000 packages.
Note: PKGget, the traditional package manager, can install from this repository.
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 800MB. Example built-in package-list here.
Support
for old computers

Easy runs on modern UEFI-firmware computers, but is also dedicated to supporting old BIOS computers.
The minimum requirement is that it must have a x86 64-bit CPU, going right back to the "nocona" CPU which is the earliest released by Intel and also compatible with early AMD 64-bit CPUs. The computer must have at least 2GB RAM (and drive with swap-partition when only 2GB RAM) and a PCI or PCIe bus (not ISA or EISA), and the monitor at least 800x600 (1024x768 is the preferred minimum).


As stated, EasyOS is an experimental distribution, and is continually evolving. To follow progress, monitor Barry's blog:

https://bkhome.org/news/tag_easy.html

It is hoped that these highlights will give a positive appreciation of what EasyOS is all about!  

Tags: about