Code Monkey home page Code Monkey logo

hobbit19 / minimal Goto Github PK

View Code? Open in Web Editor NEW

This project forked from ivandavidov/minimal

0.0 2.0 0.0 3.16 MB

Minimal Linux Live is a tiny educational Linux distribution, which is designed to be built from scratch by using a collection of automated shell scripts. Minimal Linux Live offers a core environment with just the Linux kernel, GNU C library and BusyBox userland utilities.

Home Page: http://minimal.idzona.com

License: GNU General Public License v3.0

Shell 90.59% Makefile 2.98% NSIS 0.06% C 6.13% HTML 0.23%

minimal's Introduction

Minimal Linux Live

The hosting space for Minimal Linux Live is provided by the cool guys at Microweber - check them out. :)

Website mirrors are available here:

The README document and the main .config file provide extensive documentation regarding the Minimal Linux Live features.

The DAO of Minimal Linux Live - this tutorial explains step by step what you need to do in order to create your own minimalistic live Linux OS. The tutorial is based on the first published version of Minimal Linux Live.

Component Architecture of Minimal Linux Live - this publication describes the high level components included in the '03-Apr-2016' version of Minimal Linux Live.

You can experiment with Minimal Linux Live directly in your browser by using JavaScript PC Emulator. Here is a screenshot:

Minimal Linux Live JavaScript Emulator

Did I mention the YouTube channel where you can watch some of the cool Minimal Linux Live features? No? Well, now you know about it! :)

This is a screenshot of the current development version of Minimal Linux Live:

Minimal Linux Live

Current development state (07-Jan-2018)

  • Linux kernel 4.14.12 (longterm)
  • GNU C Library 2.26 (stable)
  • BusyBox 1.27.2 (stable)
  • Stable on default Ubuntu 16.04 installation with applied system updates.

Future improvements

Take a look at the issues page where all future MLL improvements are tracked.

How to build

The section below is for Ubuntu and other Debian based distros.

# Resove build dependencies
sudo apt install wget make gawk gcc bc libelf-dev xorriso

# Build everything and produce ISO image.
./build_minimal_linux_live.sh

The default build process uses some custom provided CFLAGS. They can be found in the .config file. Some of these additional flags were introduced in order to fix different issues which were reported during the development phase. However, there is no guarantee that the build process will run smoothly on your system with these particular flags. If you get compilation issues (please note that I'm talking about compilation issues, not about general shell script issues), you can try to disable these flags and then start the build process again. It may turn out that on your particular host system you don't need these flags.

Overlay bundles

Important note! Most of the overlay bundles come without support since the build process for almost all of them is host specific and can vary significantly between different machines. Some overlay bundles have no dependencies to the host machine, e.g. the bundles which provide the DHCP functionality and the MLL source code. These bundles are enabled by default.

Minimal Linux Live has the concept of overlay bundles. During the boot process the OverlayFS driver merges the initramfs with the content of these bundles. This is the mechanism which allows you to provide additional software on top of MLL without touching the core build process. In fact the overlay bundle system has been designed to be completely independent from the MLL build process. You can build one or more overlay bundles without building MLL at all. However, some of the overlay bundles have dependencies on the software pieces provided by the MLL build process, so it is recommended to use the overlay build subsystem after you have produced the 'initramfs' area.

The overlay bundle system provides dependency management. If bundle 'b' depends on bundle 'a' you don't need to build bundle 'a' manually in advance. The bundle dependencies are described in special metadata file bundle_deps and all such dependencies are prepared automatically.

# How to build all overlay bundles.

cd minimal_overlay
./overlay_build.sh
# How to build specific overlay bundle. The example is for 'Open JDK'
# which depends on many GNU C libraries and on ZLIB. All dependencies
# are handled automatically by the overlay bundle system.

cd minimal_overlay
./overlay_build.sh openjdk

BIOS and UEFI

Minimal Linux Live can be used on UEFI systems (as of version 28-Jan-2018) thanks to the systemd-boot project. There are three build flavors that you can choose from:

  • bios - MLL will be bootbale only on legacy BIOS based systems. This is the default build flavor.
  • uefi - MLL will be bootable only on UEFI based systems.
  • both - MLL will be bootable on both legacy BIOS and modern UEFI based systems.

The generated MLL iso image is 'hybrid' which means that if it is 'burned' on external hard drive, this external hard drive will be bootable. You can use this behavior to install MLL on your USB flash device (read the next section).

Minimal Linux Live version 20-Jan-2017 provides experimental UEFI support and the MLL ISO image can be used on legacy BIOS based systems and on UEFI based systems with enabled UEFI shell (level support 1 or higher, see section 3.1 - Levels Of Support of the UEFI Shell specification).

Installation

The build process produces ISO image which you can use in virtual machine or you can burn it on real CD/DVD. Installing MLL on USB flash drive currently is not supported but it can be easily achieved by using syslinux or extlinux since MLL requires just two files (one kernel file and another initramfs file). This applies for legacy BIOS based systems.

Another way to install MLL on USB flash drive is by using YUMI or other similar tools. This applies for legacy BIOS based systems.

Yet another way to install MLL on USB flash drive is by using the dd tool:

# Directly write the ISO image to your USB flash device (e.g. /dev/xxx)
dd if=minimal_linux_live.iso of=/dev/xxx

The USB flash device will be recognezed as bootable device and you should be able to boot MLL successfully from it. If you have chosen the 'combined' build flavor (i.e. value both for the corresponding configuration property), then your USB flash device will be bootable on both legacy BIOS and modern UEFI based systems.

The build process also generates image the file mll_image.tgz. This image contains everything from the initramfs area and everything from the overlay area, i.e. all overlay bundles that have been installed during the MLL build process. You can import and use the image in Docker like this:

# Import the MLL image in Docker.
docker import mll_image.tgz minimal-linux-live:latest

# Run MLL shell in Docker:
docker run -it minimal-linux-live /bin/sh

Projects based on Minimal Linux Live:

  • Minimal Linux Script - very simplified and minimalistic version of MLL. This project is recommended as a starting point for beginners.

  • systemd-boot - this project provides the UEFI boot loader images that MLL relies on. It also provides helper shell scripts which generate UEFI compatible MLL ISO images out of the already existing BIOS compatible MLL ISO images.

  • RedoxOS Installer - the original installer for Redox OS is based on simplified version of Minimal Linux Live.

  • Boot2Minc - this fork adds Mincs and as result you can run Linux containers inside MLL. One interesting Mincs feature - it provides tools which allow you to reuse alredy existing Docker containers.

  • K1773R's MLL - PowerPC version of Minimal Linux Live with memtester as additional software. Impressive work!

  • Ladiko's MLL - this fork automatically downloads and uses the latest available Kernel and BusyBox sources. By default there is NTFS and SquashFS support. The fork also provides an installer which can be used to put MLL on USB flash device.

  • AwlsomeLinux - MLL fork which provides additional overlay bundles (ncurses and Nano).

  • StarLinux - the successor of AwlsomeLinux. StarLinux aims at making the build process user friendly.

  • prologic's MLL - this fork adds Python support to the MLL runtime environment.

  • KernelISO - extended version of MLL.

  • diaob's MLL - MLL translation to Simplified Chinese.

  • bdheeman's MLL - MLL KISS fork (Keep It, Simple, Safe/Secure/Stupid).

  • Runlinux - environment to build and test Linux kernels.

Thank you!

Do you like this project? Yes? Well, in that case I would very much appreciate it if you give your honest opinion about MLL in DistroWatch. And don't forget to check the Minimal Linux Live page on Facebook.

You can support the Minimal Linux Live project by donating ETH to this address:

0xe145aAC827a6B7D580c6ae75910fAe8F5D96822A

Thank you!

minimal's People

Contributors

ivandavidov avatar bauen1 avatar technologyclassroom avatar vkynchev avatar gasharova avatar ************ avatar andrenventer avatar awlsomealex avatar gormogon avatar shifengaway avatar cspenceiv avatar timo-42 avatar

Watchers

Mikhail avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.