Installatation

Prerequisites

Live-System requires the following utilities (and their dependencies) to operate:

  • dosfstools,
  • gdisk,
  • grub,
  • squashfs-tools,
  • mkinitrd (Slackware) / mkinitcpio (Arch) / mkinitramfs (Debian) - for installation,
  • xorriso - for live-CD/DVD.

Download and install from source

  1. Download Live-System source
  2. Extract the files from the archive.
  3. Run the command: make install
    or: make install PREFIX=/usr DESTDIR=/absolute/path/to/destination.

Quick start

Prepare a system

  • Bootstrap an Arch Linux system:
mkdir system
pacstrap system base linux xorg xfce4 lightdm-gtk-greeter network-manager-applet chromium #...
chroot system pacman -Scc
chroot system systemctl enable lightdm
chroot system systemctl enable NetworkManager
chroot system useradd -m -g users linomad
echo -e "root:root\nlinomad:linomad" | chroot system chpasswd
  • Or, a Slackware one :
mkdir system
mount -o loop path/to/slackware64-current.iso /mnt
installpkg --terse --root system /mnt/slackware64/{a,ap,d,l,n,x,xap,xfce}/*.t?z
umount /mnt
ln -sf xinitrc.xfce system/etc/X11/xinit/xinitrc
sed 's/^id:3:initdefault:$/id:4:initdefault:/' -i system/etc/inittab
chmod +x system/etc/rc.d/rc.networkmanager
chroot system useradd -m -g users linomad
echo -e "root:root\nlinomad:linomad" | chroot system chpasswd
  • Or, an Ubuntu one :
mkdir system
debootstrap --include ubuntu-minimal focal system http://archive.ubuntu.com/ubuntu
cp -a /etc/apt/* system/etc/apt/
for d in sys proc dev dev/pts; do sudo mount --bind /$d system/$d; done
chroot system apt update
chroot system apt upgrade
apt-mark showmanual > packages.lst
chroot system apt install $(cat packages.lst)
chroot system locale-gen
chroot system useradd -g users -G adm,cdrom,sudo,plugdev,lpadmin -m -s /bin/bash linomad
echo "linomad:linomad" | chroot chpasswd
chroot system systemctl disable apparmor.service
for d in dev/pts dev proc sys; do sudo umount system/$d; done

Make it live

  • Build the GRUB EFI image, the live system initial RAM disk and copy the kernel:
build-live-system.sh --init system live
  • Create a SquashFS module of the system:
build-live-system.sh --module system live 0-base-xfce
  • According to your needs, generate an ISO 9960 of the live DVD (and possibly test it with Qemu):
build-live-system.sh --iso live live-system.iso
qemu-system-x86_64 -enable-kvm -m 2048 -cdrom live-system.iso
  • Or copy the live system to an USB stick - Warning, destroys USB device data:
build-live-system.sh --usb live /dev/sdx

Build script usage - live-system generation

Setup kernel, initrd, GRUB EFI image and configuration file

Usage:

build-live-system.sh --init root_dir live_dir [additional_modules]

Generates: live_dir/efi/boot/{bootx64.efi,grub.cfg} and live_dir/linomad/{vmlinuz,initrd.gz}.
Included kernel modules (unless builtin and with their dependencies) are:

  • keyboard support (Busybox console): atkbd, i8042
  • P/S-ATA & CD-ROM support: ata_piix, sr_mod
  • USB support: xhci-pci, ehci-pci, usb-storage
  • live filesystems: nls_iso8859-1, isofs, nls_cp437, vfat, ext4, loop, overlay, squashfs

Example:

build-live-system.sh --init system live

Create a SquashFS module for the system

Usage:

build-live-system.sh --module root_dir live_dir module_file [-xz,-gzip,-lzo]

All root_dir subdirectories but /sys, /proc, /dev and /tmp are included.
Generates: live_dir/linomad/modules/module_file.

The compression option has an impact on media size and speed:

smaller / slowerDefaultbigger / faster
xzgziplzo

The system can be divided into multiple modules (example: "1-core", "2-gui", ...) that are loaded in alphabetical order; if a file is present in several modules, the one taken from the last loaded module is used.

Example:

build-live-system.sh --module system live 0-main

Copy live system on USB device

Warning: this operation destroys USB device data.

Usage:

build-live-system.sh --usb live_dir device [systemsize]

If not specified, systemsize is approximately half of the USB media size (64 MiB for a 128 MB device, 32 MiB for a 64 MB, ...).

The media is partitionned (using GPT) and formatted:

N°TypeFileSystemSizeLabelContent
10x0700vfatsystemsizeLiveSystemlive-system + extra storage
20x8300ext4remainingLiveDatapersistent data
  • if systemsize is not specified, and the device already is a live USB one, no formatting is performed.
  • Extra storage is accessible from Microsoft Windows.

Example:

build-live-system.sh --usb live /dev/sdx 8192

Update:

To update an existing live-USB device without destroying its data, specify the system partition instead of the whole device; example:

build-live-system.sh --usb live /dev/sdx

Manual setup for live USB system

Warning: this operation destroys USB device data.

To manually setup a bootable USB device (without using previous --usb action), it must be GPT partitionned and have a Fat-32 formatted partition containing the efi folder. The partition containing the linomad folder can be the Fat-32 one (or an other ext4 formatted one), but must be labelled LiveSystem. Installing the live system is then as simple as copying the files under live_dir.

The optional data partition must be ext4 formatted and labelled LiveData.

The linomad directory and labels can be renamed as long as you adapt the efi/boot/grub.cfg file (see boot parameters below).

  • The following example partitions and formats the USB device, with 8GiB space for the live-system (and extra storage):
sgdisk -Z /dev/sdx
sgdisk -o -n 1::+8G -t 1:0700  -n 2:: /dev/sdx
mkfs.vfat -n LiveSystem /dev/sdx1
mkfs.ext4 -F -L LiveData -O ^has_journal /dev/sdx2
  • If the live system files resides in an ISO image, mount it:
mkdir live; mount -o loop live.iso live/
  • The following commands copy the files on the USB device:
mkdir usb; mount /dev/sdx1 usb/
rm -f usb/{efi,linomad} #to remove old files when updating
cp -r live/* usb/
umount usb; rmdir usb
  • Optionally, to enable BIOS / legacy boot, an additional BIOS boot partition (EF02) and an hybrid MBR are required before installing GRUB:
sgdisk -n 128:34:2047 -t 128:ef02 -h 2 /dev/sdx
mkdir usb; mount /dev/sdx1 usb/
grub-install --target i386-pc --boot-directory usb/bios $installdevice
echo "configfile /efi/boot/grub.cfg" > usb/bios/grub/grub.cfg
umount usb; rmdir usb

Create a live CD/DVD ISO from live system

Usage:

build-live-system.sh --iso live_dir iso_file_name

Example:

build-live-system.sh --iso live live.iso`

Boot parameters

System language and keymap layout

  • locale: system language; example: locale=fr_FR.UTF-8
  • keymap: keymap layout; example: keymap=fr; the first two caracters are used for Xorg keymap layout
  • tz: timezone; example: tz=Europe/Paris (value must be a valid path from /usr/share/zoneinfo)
  • hwc: hardware clock: UTC or localtime

Misc

  • home=label, home=UUID or home=IP:path (NFS): specify persistent home directory (defaults to LiveData);
  • sys=label:path, sys=UUID:path or sys=IP:path (NFS): specify live system storage (defaults to LiveSystem:linomad)
  • exclude=module1:module2 : to prevent loading of specified modules

Live system installation

The live system can be installed into a hard disk partition; the result should be the same as a clean installation following the distribution regular install procedure.

Prerequisites:

  • Hard disk is partionned using GPT (and there is an EFI partition).
  • Boot mode is UEFI; Secure boot has to be disabled, or GRUB manually authorized (using firmware setup).

Install

Warning: this operation destroys all data on the install partition.

Usage:

build-live-system.sh --install root_dir partition

Example:

From a running live-system:

build-live-system.sh --install /live/system /dev/sdx2

Setup /home, user login and password

After installation, it is recommended to add a "normal" (non "root") user and use a separate partition to store users files (/home).

Usage:

build-live-system.sh --home install_part home_part login password

Example:

build-live-system.sh --home /dev/sdx2 /dev/sdx4 linomad P@ssw0rd

GRUB repairing (installation & configuration)

Usage:

build-live-system.sh --grub partition

Example:

build-live-system.sh --grub /dev/sdx2

Abbréviations

  • BIOS : Basic Input Output System
  • GRUB : Grand Unified Boot Loader
  • GPT : GUID Partition Table
  • MBR : Master Boot Record
  • UEFI : Unified Extensible Firmware Interface