DIY Distro - Debian Live-Build

Share your own howto's etc. Not for support questions!

DIY Distro - Debian Live-Build

Postby ozi » 2015-07-21 22:03

I've created a live-build development environment for those interested in how to make there own distro using Debian Live-Build.

Live-Build 4.x has been used, which supports Debian Jessie.

The first place to start is with the manual and the manpages. I suggest that the manpages lb_config.1.txt and lb_clean.1.txt, should be looked at first, after reading the manual.

I've also used live-boot.7.txt if using -bootappend-live in lb config.


This Debian Live-Build demonstration will endeavor to provide the reader with the basics of Live-Build and some essential commands necessary to use it to create an installable/live iso.

For the purposes of this demonstration and to keep it simple, the target desktop environment will be:


This example uses Debian Jessie as the build environment

Step 1. Install live-build on Star or Debian Jessie

Code: Select all
sudo apt-get install live-build live-manual


Step 2. Setup

Open a terminal window in your home directory and run the following commands:

Code: Select all
wget -c ""
tar -zxvf diy-debian.tar.gz
cd diy-distro
sudo ./menu

Main directory structure

├── diy-build
└── diy-source


├── auto
├── config
└── local

├── auto <--------- build, clean, config scripts
└── config
├── apt
├── archives
├── bootloaders
│ └── isolinux
├── hooks
├── includes.binary
├── includes.chroot
│ ├── etc
│ │ ├── dpkg
│ │ ├── lightdm
│ │ ├── live <--------- live user setup
│ │ └── skel <--------- skeleton /home directory
│ └── usr
│ ├── bin
│ ├── lib
│ ├── local
│ └── share
├── includes.installer <--------- installer preseed.cfg file and logo/theme update for the graphical installer
└── package-lists <--------- lists of packages to be installed
└── packages.chroot <--------- packages to be installed

packages.chroot: Packages that are inside this
directory will be automatically installed into the live system during
build - you do not need to specify them elsewhere.

DIY Menu

M A I N - M E N U
~~~~~~~~~~~~~~~~~~~~~ Build version [8.2]

s. Setup
r. Remove
u. Update
b. Build
p. Purge

q. Quit

Enter choice or q :

Build version [8.2]:
This the current debian version number. See Update below.

creates a clean diy-build directory and all the directories required for live-build.
Copies the default: build, clean and config files into the auto directory.

WARNING: diy-build directory is deleted in the process, if it exists.

NOTE : The diy-build diectory is owned by root. If the permissions in the build folder
aren't root the build will fail or be corrupt.

Removes the diy-build directory.

N.B. if Build has been run, then Purge should be done before Remove.

Copies contents of diy-source into diy-build, and updates the files with version number inside
that are in /config/includes.chroot/etc/

See _VERSION=8.2 in the menu script, change this to suit.

I find it easier to work with files/directories I own, which are in the diy-source directory.
It's up to you whether you do it my way or not.

Runs the build script in diy-build, which runs lb clean, lb config and lb build.

The build can be run in a separate terminal window, see build() in the script.

removes everything, including all caches. The config directory is kept.

sudo lb clean --purge

lb clean, is responsible for cleaning up after a system is built. It
removes the build directories, and removes some other files including
stage files, and any detritus left behind by other live-build commands.

It is important to check the build log after the build, which can be found in diy-build.
This will help in resolving any build errors.

Squashfs - better compression: ... TO/#whatis ... sqoverview

Add this line before the lb build in the build script.

export MKSQUASHFS_OPTIONS=" -no-recovery -always-use-fragments -b 1048576"

Add --chroot-filesystem squashfs to lb config

I changed the live containg -comp xz to -comp xz -Xbcj x86 -Xdict-size 75%
about line 357


MKSQUASHFS_OPTIONS="${MKSQUASHFS_OPTIONS} -comp xz -Xbcj x86 -Xdict-size 75%"

diy-debian iso

Disclaimer: This is not intended as a clone of VSIDO and is only intended as an example of Debian Live-Build.

  • These hooks: 990-cleanup.chroot, 300-localepurge.chroot, are used to remove and resize files to make the image smaller.
  • Setup-user script is run on login from /etc/light/lightdm.conf - session-setup-script=/usr/share/diy/setup-user.
  • Installer preseed used to pre-answer install questions is in /config/includes.installer. The update script copies preseed.cfg to /config/includes.binary/install so the live install can use it. Also see live-build config --bootappend-live.
  • Setup session-manager, there is a hook session-manager_alternative.chroot and 2 files in /config/includes.chroot/usr/share/xsessions jwm.desktop, lightdm-xsession.desktop.

25-06-2015 : LightDM Default Session and x-session-manager setup

Star website
Zephyr Linux

The Debian Administrator's Handbook
Installing, Step by Step

Last updated: 1 February 2016
User avatar
Posts: 7
Joined: 2012-01-09 03:18

Return to Docs, Howtos, Tips & Tricks

Who is online

Users browsing this forum: No registered users and 8 guests