Join GitHub today
GitHub is home to over 50 million developers working together to host and review code, manage projects, and build software together.Sign up
================================================================== 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.