README

==================================================================
SlimLinux - A Micro-Linux for building IoT & Embedded Applications
==================================================================
SlimLinux is a Linux server development kit for the purpose of
developing small lightweight, secure Linux based network-aware
embedded applications – both physical & virtual. The base
installation takes 23.3Mb of disk space and uses 18.5Mb of RAM to run.
Apart from being very small, SlimLinux's other interesting feature is
that is uses no shell-script whatsoever. The control scripts are
entirely written in Python. Although it carries a full implementation
of the Python binary itself, it does not carry a full installation of all
Python modules. Using Python adds about 6.5Mb, compared to using
shell-script control.
An “embedded application” means any Linux system that is intended
to run “headless” (no standard UI) with almost exclusively
unattended operation. So this includes, but is not limited to, IoT,
network applications (Routers, Firewalls etc), Internet servers
(real or VM), industrial applications, automotive applications,
intelligent devices, home & industrial automation, basically
anywhere you want to be able to put in a relatively sophisticated
network capable computer that will run continuously without the
need for human intervention.
SlimLinux is not a distribution, in itself, but is an operating
system design that uses other Linux distributions as its base. This
means you can copy binaries and libraries directly from the base
distribution and they will run on your SlimLinux.
Because SlimLinux is a very cut-down operating system, if you do
copy binaries from other distributions, you may also need to copy
libraries and static configuration files that are required to
support the binary you have copied over.
Our design philosophy has been to copy over as little as possible.
All you need for a minimal Linux system is a kernel, some basic
libs, and busybox – so that's about all you get in our base O/S.
Current binary base distributions supported are
Slackware x64 v14.2
Redhat Enterprise Linux x64 v7.5
SUSE Enterprise Linux x64 v12 SP3
Debian x64 v9.4.0 (Stretch)
When you look at SlimLinux you will not see an operating system
that looks like the one it is based on. The base gives the SlimLinux
full binary compatibility with the base, but the structure of the
system and what utilities are available will be different.
We have been running public facing internet server applications,
based on Slackware SlimLinux, on both physical & virtual servers
for over 15 years, and would expect an “uptime” of between 3 &
4 years – i.e. running 3 to 4 years between reboots.
Because SlimLinux is so small, it enables you to run each of your
server applications on a different physical or virtual machine –
a technique called “network appliance” – this improves
security without being as wasteful of resources as using a full
standard install.
Some pre-made ISO images can be found at
http://www.slimlinux.net/
But we strongly recommend you make your own.
Getting Started
===============
$ git clone https://github.com/james-stevens/SlimLinux.git
$ cd SlimLinux
$ ./configure
$ make
This will create a bootable ISO that, when booted in a target machine,
will install the SlimLinux, with the options you have chosen.
If you are not sure what to do with an ISO image, I recommend you
google "boot iso image".
The ISO image is "hybrid", which means it should boot from either
a CD/DVD (real or virtual) or a USB stick.
Next Move
=========
Once you have created the operating system and ISO image, you can
do one of five different things next ...
make dvd ... burn ISO installer to a CD/DVD disk
make usb ... copy the ISO installer to a USB stick
make livedvd ... make a bootable liveCD and burn to disk
make liveusb ... make a live USB stick (O/S is fixed)
(config is fixed at create time)
(user data is stored in RAM)
make bootusb ... install SlimLinux on a USB stick to boot & run
(config can be modified)
(user data is stored on USB)
"dvd" & "usb" both copy the installation ISO to a disk/usb stick so
you can boot it in your target machine to install SlimLinux onto
an internal hard disk of the target machine.
"livedvd" and "liveusb" will create a "liveCD" version of the SlimLinux
you have chosen. A "liveCD" boots & runs SlimLinux itself including
any config data you have added. All "user data" is stored in a RAM-Disk
which is lost if you reboot. This can be OK if you are running a Router,
Firewall, NTPd server, DNS Resolver, Secondary DNS etc.
"bootusb" will install SlimLinux to a USB stick, as if the stick was a hard
disk. You can then plug that stick into a target machine and it will boot &
run just like it was running from a hard disk. There is no further installation
required. All config & user data will stored on the stick. Its more likely to
boot and run correctly, if the target machine has no hard disks attached.
With the "liveusb" the operating system and config are fixed at create time.
With the "bootusb" the O/S & config are partitions on the USB stick, so can
be updated.
if you do not have "make" on your system, then
$ ./burn <option>
will pretty much do the same thing.
If you change the "mkiso.cfg" file, or run "./configure" again, you
then need to run :-
$ make clean all
The "configure" utility checks you have the programs "mkisofs" and
"isohybrid" that are needed for creating the ISO. If you do not have
these you will have to refer to your documentation to add them.
Or google "add mkisofo <name>" - where "<name>" is the name of the
operating system you are using.
Other Make Options
==================
clean - remove all files, other than those brought in by "git"
all - make all files needed by the ISO and the ISO itself
rootfs - remove and recreate the operating install file & ISO
initrd - remove and recreate the installation O/S & ISO
config - remove "mkiso.cfg", and rerun "configure" & "make all"
if you do not have "make" on your system, then
$ ./mkiso <option>
will pretty much do the same thing.