Build Your Own Linux Distro

Image

Do you have a favourite distro that you’ve spent hours customising? Mayank Sharma shows you how you can spin it into a live distro that you can pass to friends, family, or even on to DistroWatch!

There are hundreds of actively maintained Linux distributions. They come in all shapes, sizes and configurations. Yet there’s none like the one you’re currently running on your computer. That’s because you’ve probably customised it to the hilt – you’ve spent numerous hours adding and removing apps and tweaking aspects of the distro to suit your workflow.

Wouldn’t it be great if you could convert your perfectly set up system into a live distro? You could carry it with you on a flash drive or even install it on other computers you use.

Besides satisfying your personal itch, there are several other uses for a custom distro. You can spin one with apps that you use in school and pass it around to everyone in class, stuffed with class notes and other study aids. You can do something similar within a professional organisation as well that uses a defined set of apps.

There are various tools for creating a custom distro. We’ll start with the ones that are simple to use but offer limited customisation options and move on to more complex ones that enable you to customise every aspect of your distro.

Quickly create your own Ubuntu

Perfect for mumbuntu and dadbuntu too.

Over the years there have been many tools that help you create a customised version of Ubuntu, which is one reason why there are so many Ubuntu respins out there. While most have fallen through the cracks, the Ubuntu Customisation Kit (UCK) lives on.

You can install UCK on top of Ubuntu or a derivative distro such as Linux Mint. The tool is in the official repositories and you can install it from the package manager. Additionally, you’ll also need the ISO image of the Ubuntu flavour you wish to customise. To simplify the build process, make sure you use the ISO image of the Ubuntu flavour which includes the desktop you want in your customised distro. For example, if you wish to include a localised Gnome desktop in your custom distro, use the Ubuntu Gnome spin instead of the default Ubuntu image. If you’re on a 32-bit machine, you’ll need the i386 image and not the x86-64 one. However, users of 64-bit OSes can also customise a 32-bit image.

When you launch UCK, the app will take you through a wizard after displaying a welcome message with information about its space requirements. In the first couple of steps you’ll be asked to select the language packs that you want in your distro along with the boot language. (Make sure the Ubuntu flavour you’re customising supports the languages you are building in.)

After you’ve selected a default language for the distro from the languages you’re building in, you’ll need to select the desktop environment for your distro. UCK will download the localised strings for the desktop in your distro based on the option you select on this screen. You’ll then be asked to point to the ISO image of the Ubuntu distro you wish to customise.

UCK will then prompt you for a name for your distro before asking if you wish to manually customise the distro. If you choose to do so, UCK will launch a terminal window chrooted into the build environment. In the final stages of the wizard UCK gives you the option to delete all Windows-related files from your distro and generate a hybrid ISO image that you can burn onto a CD or copy to a USB. Once it’s run through these steps, UCK will unpack the ISO and then download the selected language packs. You’ll then get the option to manually customise the distro, if you selected this option earlier. The Run Console Application option will launch a terminal window and drop you to the root shell of the mounted image.

Image

UCK lets you customise your distro to the hilt if you know your way around the Ubuntu filesystem.

Advanced configurations

From this window you can use the apt-get package manager to remove default packages and add new ones. For example, you can use apt-get install ubuntu-restricted-extras to install plugins to handle multimedia in various formats. If you’re creating a distro for low-end machines you can uninstall LibreOffice with

apt-get remove --purge libreoffice* /

and replace it with AbiWord using

apt-get install abiword

If you want to put application shortcuts on the desktop, first create the Desktop directory under your custom distro with

mkdir -p /etc/skel/Desktop

You can now copy the application shortcuts for any installed apps, such as

cp /usr/share/applications/firefox.desktop /etc/skel/Desktop

and make them executable with

chmod +x firefox.desktop

If you want to change the default wallpaper, open the /usr/share/glib-2.0/schemas/10_ubuntu-settings.gschema.override file in a text editor and change the picture-uri parameter to point to the image you wish to use as the background, such as:

picture-uri=’file:///usr/share/backgrounds/Partitura_by_Vincijun.jpg’ /

Similarly, you can change the theme and icons by editing the respective parameters in this file. For example, if you wish to change the Ambiance theme to Radiance and use the HighContrast icon set, make sure the file reads as below:

[org.gnome.desktop.interface]
gtk-theme=”Radiance”
icone-theme=”HighContrast”
...
[org.gnome.desktop.wm.preferences]
theme=”Ambiance”

Once you’ve edited this file, make sure you compile the modified schemas with

glib-compile-schemas /usr/share/glib-2.0/schemas

You can also copy files into the live CD you are customising. To do this, launch another terminal and cd to ~/tmp/remaster-root/, which is the root of the customised live CD. You can copy files into their appropriate folders under the remaster-root and UCK will include them in the live CD. For example, you can copy custom shortcuts and folders to Desktop with

sudo cp -r ~/Documents/README.txt ~/remaster-root/etc/skel/Desktop

Once you’re done, close the chroot terminal window and select the Continue Building option in the UCK wizard. The tool will now build your new localised Ubuntu distro and point you to the freshly baked customised ISO image.

Point-and-click distros

Use SUSE Studio to assemble a distro using the web browser.

SUSE Studio is perhaps the easiest tool for creating custom distros. The app is graphical and works inside a web browser. It needs only a web browser and an internet connection, and while it creates OpenSUSE-based images you can operate SUSE Studio from any distro. With SUSE Studio you can create full-fledged desktop distros, minimal dedicated servers, and targeted virtual appliances. You can use the web interface to add users, customise the list of apps and even add files and customise the artwork.

Point your web browser to the SUSE Studio website at www.susestudio.com and create an account. Alternatively, you can sign into the service using any OpenID provider, such as Google, Yahoo, Twitter, Facebook, etc. Once you’ve signed in, click on Create New Appliance on the Dashboard. SUSE Studio refers to the custom distros as an appliance irrespective of whether it’s designed for physical hardware or a virtual machine.

Before you can begin building your distro, you need to select a base template from one of the predefined ones. The templates help infuse the custom distro with essential packages for your distro. There are templates for the latest and the previous OpenSUSE release, OpenSUSE 13.1, OpenSUSE 12.3, as well as for the SUSE Linux Enterprise distro. Unless you have a licence for SLES, you’ll want to base your distro on one of the OpenSUSE templates.

The Just enough OS (JeOS) template is ideal for building a minimalistic system. Then there’s the Server template, which helps you build text-only server distros. Finally there are templates that help customise a Gnome 3 or KDE 4-based desktop distro. Once you’ve selected a base template, scroll down the page and select the processor architecture for the distro. Click on the Create Appliance button to build the base image, on which you can build your customised Linux distro.

Image

You can test your images in SUSE Studio’s web-based TestDrive before downloading them.

Rolling start

You’re now at the at the main screen of your appliance, which has a set of tabs to help you customise different aspects of your distro. The first tab, labelled Software, is where you choose software packages. Under this tab, you’ve got a list of the enabled repositories and the list of software that’s already installed in your distro. Both of these are based on the template you selected earlier.

To install additional software, use the Find box on the page to look for packages in the repositories. When you find what you’re looking for, just hit the corresponding +add button to include it in your distro. SUSE studio will automatically check for and add any dependencies. If the package you’ve just added conflicts with an existing one, you’ll get options to resolve the issue by removing one of the two conflicting packages. If you have some custom apps you can also add their RPMs from this page.

In case the software you wish to add isn’t in the default repositories, you can also add additional repos with the Add Repositories option. This brings up a page that’s similar to the one for adding software. Once the repositories have been added, SUSE Studio will list them under the Software tab and allow you to search for packages inside them as well.

Make it your own

The bulk of the configuration is handled from under the Configuration tab. This tab is further divided into seven different sections for configuring different aspects if your distro. From the General section you can localise the distro and select the default language and keyboard layout along with the time zone. You can also select how you want your distro to configure the network (DHCP is usually a safe bet) and enable the firewall and open ports for remote access. This is also where you add any users and groups. The Personalise section is where you choose the custom artwork for your distro. You can either select one of the listed ones or upload your own.

You can avoid visiting the Server tab, which only has options to add data to either a PostgreSQL or a MySQL server. Similarly, if you’re setting up your distro for a virtual machine, head to the Appliance tab to configure related settings. However, most desktop users should just head to the Desktop tab, from where you can automatically log in any added user and define any apps that you want to autostart.

If you consider yourself an advanced user, you can take a look at the Scripts sections, from where you can run custom scripts. This section lets you define scripts that run at the end of the build as well as those that run every time you boot the custom distro.

Once you’re done with the sections under the Configuration tab, move on to the Files section to add either single files or an archive of files to the custom distro. All files are added to the / directory. However, once they have been uploaded you can select the files and move them into other locations.

For example, if you wish to include a file on the Desktop it should be placed under /etc/skel/Desktop.

Now that you’ve customised your distro it’s time to ask SUSE Studio to convert it into a usable distro. Head to the Build tab, which lists options to transform the distro into various formats. You can, for example, create a Live ISO image of your distro meant for optical drives as well as live images for USB and images for virtually every virtualisation software available, including KVM, VirtualBox, VMware, Xen and more. In order to create a traditional installation image, select the Preload ISO (.iso) option.

When you’ve select the format, hit the Build button to create your distro, which will only take a few minutes. If you’ve selected additional formats as well, click on the Build Additional button to get images in the other formats. SUSE Studio also assigns a version number to your distro. Every time you modify the distro, it will increment the version number and automatically generate a changelog that’ll list all the changes since the last version.

Take it for a spin

After the image has been built, you can test it from within your browser with the Testdrive option. Once you’re satisfied, use the Download option to grab the image of your custom distro. You can also share your distro with other SUSE Studio users by heading to the Share tab, where you get textboxes to describe your distro. Once you have the image you can use it as you would any other distro image.

SUSE Studio has a very low threshold of entry and can be used by virtually anyone regardless of their level of Linux expertise. Most of the time-consuming and heavy-duty tasks, like fetching packages and assembling the distro, happen at the remote SUSE servers. You can also test the images remotely and only grab them once you’re satisfied with your creation. The system also preserves your build system, and you can tweak it and make changes without much fuss. It’s a great place to start.

Create a customised Ubuntu install image

If you want to roll out Ubuntu on a bunch of identical machines with similar configurations and the same software, like in a lab or office, you can save yourself some time by creating automated installer images. The www.instalinux.com service is an online service like SUSE Studio, but instead of full-fledged OpenSUSE-based distros, it churns out small ISOs that are designed to prepare ready-to-use Linux machines by automatically fetching packages and installing them.

The web service is powered by the SystemDesigner CGI scripts from the Linux Common Operating Environment project (http://linuxcoe.sourceforge.net). The interface takes you through the steps involved in installing a distro, such as selecting a keyboard layout, timezone, password for the root user, package selection and the disk partitioning scheme. Once you’ve answered the questions, it creates a preseed installer and puts it on a small (about 30MB) CD.

Other online distro builders

SUSE Studio isn’t the only web-based service for creating Linux distros. The Debian Builder (http://live-build-cgi.debian.net/cgi-bin/live-build) is hosted by the Live Systems project, which produces the tools that are used for producing official Debian live images. The service can create basic netboot images without the X server as well as hybrid ISO images that boot from USB disks.

You can create a basic distro by selecting a handful of options including the Debian branch you want the image to be based on (Wheezy, Jessie, Sid) and the predefined group of packages (Gnome Desktop, KDE Desktop, Mate Desktop, Rescue, etc).

Advanced users can also tweak additional advanced options. You get options to choose the architecture of the build, the filesystem of the chroot environment, the bootloader, whether it should include the Debian installer, and a lot more. The service will email you once your customised Debian Live system is ready to be downloaded.

Then there’s the Porteus Wizard (http://build.porteus.org). Porteus is a small portable distro that’s based on Slackware. Using its straightforward but feature-rich web interface you can build a customised version of Porteus with your choice of desktop environment (KDE4, Mate, LXDE, Xfce) and a host of popular software including web browsers (Firefox, Chrome, Opera), word processors (LibreOffice, AbiWord), VoIP client (Skype), graphics drivers for Nvidia and AMD Radeon, and more. You can also customise advanced boot parameters such as setting a custom size for a tmpfs partition and enabling the zram kernel module.

Wear a different hat

Create distros based on Fedora Linux.

If you live in RPM-land and are more adept with Fedora, you can put together a customised distro using its livecd-creator tool. This is a set of scripts that are available in the official Fedora repositories. Unlike UCK, livecd-creator works solely on the command line, and instead of an ISO image of a Fedora release, you can grab all the packages you need in your custom Fedora distro from the internet.

The scripts use the powerful Kickstart files to set up your customised Fedora-based distro. If you haven’t heard of them before, a Kickstart file is a simple text file containing a list of actions such as package names. The livecd-creator tool compiles your distro as per the instructions in this file.

To help you get started, you can download the Kickstart files for several Fedora spins by grabbing the spin-kickstarts package from the repositories. Once this is installed, you’ll have a bunch of Kickstart files under the /usr/share/spin-kickstarts directory. You can customise any of these Kickstart files by editing them in any text editor. Although they are fairly straightforward and well documented, you can browse the Fedora wiki (http://fedoraproject.org/wiki/Anaconda/Kickstart) to get a hang of the various options.

You’ll also save yourself some time by grabbing the Kickstart Configurator tool with

yum install system-config-kickstart

This tool has an easy-to-navigate graphical interface for creating a Kickstart file.

Image

New users will be well advised to use the graphical Kickstart Configuration tool (found in the system tools) for selecting software for their custom Fedora-based distro.

Kick the tires

You can specify the packages you want inside your custom distro by listing them under the %packages section. Here, in addition to individual packages, you can also specify groups of packages such as

gnome-desktop. You can also pull in packages from another Kickstart file by specifying its name and location with the %include paramete, such as

%include /usr/share/spin-kickfedora-live-base.ks

Post installation

If you need to run commands after the live environment is up and running, such as for configuring the network, you need to specify them under the %post section. So if you wish to automatically launch Firefox you can place a shortcut to the app in the ~/.config/autostart folder, and your %post section should have the following lines:

%post
# autolaunch Firefox
mkdir -p /etc/skel/.config/autostart
cp /usr/share/applications/firefox.desktop /etc/skel/.config/autostart/
%end

Make sure that the %packages and %post sections are closed with %end. If you wish to run any commands outside the build environment, such as to copy files from the host distro to the custom distro, you can add the –nochroot parameter to %post like so:

%post --nochroot
#copy resolv.conf from host to the custom distro
cp /etc/resolv.conf $LIVE_ROOT/etc/
%end

The $LIVE_ROOT is a variable that points to the live environment. You can similarly copy any file from the host system to the live environment, for example:

cp -r /home/bodhi/Music $LIVE_ROOT/

The one important line you’ll have to add manually to the Kickstart file if you use the graphical tool is the repository definition. This line points to the list of mirrors for the Fedora repository (along with the version and architecture information) from where the tool will pull in packages. So if you wish to grab packages from Fedora 21’s repository for the 64-bit architecture, enter

repo --name=fedora --mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=fedora-21&arch=x86_64

Once your Kickstart file is all set up you can feed it to the livecd-creator tool for creating the custom distro. Assuming it’s saved as ~/custom-kickstarts/Custom-Fedora.ks, you can create your custom distro with the command:

sudo livecd-creator
--config=/home/bodhi/custom-kickstarts/Custom-Fedora.ks
--fslabel=FedoraUltimate
--cache=/var/cache/live
--verbose

The –fslabel switch specifies the name for your custom distro. When the tool has run through all the instructions in the Kickstart file, it’ll assemble the ISO image for your distro and place it in your home directory ready for you to dd it to a USB stick.

Bake your own pie

Create your own Raspberry Pi distro.

Image

We made a custom version of Raspbian for LV006’s cover DVD – with NOOBS, you can too.

The New Out Of the Box Software, or NOOBS is the Raspberry Pi’s official installer. It has simplified and standardised the procedure for installing a distro on the Raspberry Pi. While the main purpose of NOOBS is to simplify the installation of an operating system on to the Pi, the tool can also be used to create a custom distro.

To get started, grab the NOOBS installer from the website and install any of the supported distributions that you want to customise. We’d advise you to use the Raspbian distribution, which is also recommended by the NOOBS installer.

After you’ve installed Raspbian, boot the distro and make whatever changes you want. You can change the default wallpaper and also switch themes by running the obconf command from the command line, and you can install additional themes with:

sudo apt-get install openbox-themes

You can also install and remove apps either directly via apt-get or by first installing the graphical Synaptic package manager.

You can copy over any files into this Raspbian installation. NOOBS lets you create a 512MB partition that you can use to store files. Or, you can use the

raspi-config

command to expand the root partition to fill the SD card. Also make sure you set up the distro to work with your network hardware straight out of the box. So for example, you can configure the wireless adapter to connect to your Wi-Fi access point and access network services such as the directory server, or change the default browser page to point to your intranet landing page.

When you’re done setting up the distro, it’s time to package it into an archive. Change to the root directory with cd / and enter the following command:

sudo tar -cvpf root.tar /bin /boot /cdrom /dev /etc /home /initrd.img /initrd.img.old /lib /lib64 /media /mnt /opt /proc /root /run /sbin /srv /sys /tmp /usr /var /vmlinuz /vmlinuz.old --exclude=proc/* --exclude=sys/* --exclude=dev/pts/*

This command can take up to half an hour to complete depending on the number of changes you’ve made to Raspbian.

When it’s done, you’ll have a file called root.tar in the root directory. Similarly now roll up the boot files. First, move into the boot directory with

cd /boot

and then create the archive with the

tar -cvpf boot.tar

command. This will not take much time, and when it’s done you’ll have a file called boot.tar in the boot directory.

NOOBS requires compressed versions of these files. But the Raspberry Pi doesn’t have the resources to squeeze these files. So you’ll have to move them out to a regular desktop PC where you can compress them with the xz -9 -e boot.tar and xz -9 -e root.tar commands. This will replace the files with their compressed versions, namely boot.tar.xz and root.tar.xz.

Now format the SD card and extract a fresh copy of NOOBS into it. Use the file manager to navigate to the os directory under the newly extracted files. This directory further contains a number of directories, each of which containing the files for a supported distro including Arch, Pidora, Raspbian and others. Since our custom distro is based on Raspbian, we can remove all the other directories from under the os folder. Rename the Raspbian folder to the name for your custom distribution.

Head inside this folder and open the file named os.json in a text editor. In the file, replace the text beside the name and description fields from that of the original Raspbian distribution to your custom one. Also, make sure you remove the file named flavours.json. You can also optionally change the artwork of the distribution.

Finally, remove the existing root.tar.xz and boot.tar.xz files from under this folder and replace them with the ones you’ve just created. That’s it! Now boot the Pi with this card. The NOOBS menu will now list your unique, customised Linux distro.

Made-to-order distros

Build your Arch-based custom distro from the ground up.

If you have the patience to hand craft a custom distro from scratch, you should build one on top of Arch Linux. The distro’s approach to allow the user to craft their installation from the ground up makes it an ideal platform for cultivating a custom distro without the code bloat and package proliferation that afflicts so many other popular distros.

You can create a custom Arch-based distro with the command-line Archiso utility. The utility is a collection of Bash scripts, and although it has a steep learning curve it gives you a lot of control over the final result.

Setup the build

The first thing you need before you can use Archiso is an Arch Linux installation. If you don’t already use Arch, follow Graham’s tutorial in LV001 and also available on the LV website (www.linuxvoice.com/arch-linux) to setup a working Arch Linux system.

Once you’ve installed Arch on your computer, the next step is to customise it to your liking. That includes installing more packages, swapping out the default themes and artwork of your desktop environment and configuring other aspects of the systems such as the network. Later on, we’ll copy these customisations and configurations from the installed instance of Arch over to the custom distro we’re building.

When you’re done customising the Arch installation, fire up a terminal and install the dependencies for Archiso with:

pacman -S make squashfs-tools libisoburn dosfstools patch lynx devtools git

Now fetch the latest version of the archiso package from its Git repository with

git clone git://projects.archlinux.org/archiso.git

This will fetch the files inside the

~/archiso directory. Move into the directory and install the tool with make install. Once it’s installed, you can safely remove the

~/archiso directory. Next, we’ll create a directory where we’ll tweak the files for our custom distro with

mkdir ~/archlive

Make sure you have enough free disc space to accommodate all the apps you wish to install, along with any files you want to copy over to the custom distro.

Now you need to copy over one of the two Archiso profiles. The baseline profile is useful for creating a basic live system with no pre-installed packages. However, we’ll use the releng profile, which lets you create a fully customised Arch Linux with pre-installed apps. To use these scripts, simply copy them over to the ~/archlive directory, like so:

cp r /usr/share/archiso/configs/releng/ ~/archlive/
Image

Arch Linux is already pretty snappy, but once you’ve mastered Archiso you can use the tool to create streamlined distros that can outperform all others.

Add packages

Telling Archiso which packages to put on the custom ISO is as simple as adding them to a text file, one package name per line. Under the ~/archlive directory you’ll have three files: packages.i686, packages.x86_64, and packages.both. You can open these files in a text editor and include the names of the packages you want in your distro. Archiso will read the files for the respective architecture and include them packaged in the final ISO, which will be a dual-boot ISO that’ll work on both 32-bit and 64-bit machines. However, for consistency we recommend you add the app names to the packages.both file so that they are available on both the architectures.

The packages.both file already lists a bunch of packages. You should leave them in there and append your own at the end of the file. Use the

pacman -Qqe

command to list all the packages installed on your machine, and then copy the ones you need. You can create a barebones system with the Mate desktop, the Simple Login manager and the Firefox web browser by adding the following packages in the packages.both file:

xorg-server
xorg-xinit
xorg-server-utils
xf86-video-vesa
slim
mate
firefox

If you’re feeling adventurous you can copy all the packages installed on your machine over to the packages.both file with

pacman -Qqe >> ~/archlive/packages.both

Configure root

The airootfs directory inside ~/archlive/ acts as an overlay for what will be the / directory of your new distribution. Any files you add to this directory will be added to your distro’s filesystem, so if you’re using the Slim login manager, copy over its configuration file with

cp /etc/slim.conf ~/archlive/airootfs/etc/

Similarly you should also copy the

/etc/systemd/system/display-manager.service file from the host machine to its corresponding location under ~/archlive/airootfs/, along with directories that house custom artwork, namely /usr/share/backgrounds, /usr/share/icons, and /usr/share/themes.

If you want your custom distro to have the same users as your host machine, copy over the relevant files with

cp /etc/{shadow,passwd,group} ~/archlive/airootfs/etc/

Before you can copy over any files that you want within the user’s /home directory, you need to create the skel directory with

mkdir ~/archlive/airootfs/etc/skel

This directory represents the home directory of the user inside the system under development. You can now copy files inside the user’s home directory, such as

cp ~/.bashrc ~/archlive/airootfs/etc/skel/

Similarly you can copy over any files and directories from under your home directory to the skel directory, including ~/.xinitrc and ~/.config.

To log in automatically as your user instead of the default root user, open the

~/archlive/airootfs/etc/systemd/system/[email protected]/autologin.conf file in a text editor and modify the following line to swap the auto login user:

ExecStart=-/sbin/agetty --autologin bodhi --noclear %I 38400 linux

Replace bodhi with the name of your user.

Final configurations

Inside root’s home folder (~/archlive/airootfs/root) there’s a file named customize-root-image.sh. Any administrative task that you would normally do after an Arch install can be scripted into this file. Remember that the instructions within the file have to be written from the perspective of the new environment, which is to say that / in the script represents the root of the distro that’s being assembled.

Open the file in a text editor, find the line that sets /etc/localtime and change it to your timezone, eg:

ln -sf /usr/share/zoneinfo/Europe/London /etc/localtime

Also make sure that the shell is set to Bash by changing the usermod line to read

usermod -s /usr/bin/bash root

Then copy the contents of the skel directory into your user’s home directory with

cp -aT /etc/skel/ /home/bodhi/

and set proper ownership with

chown bodhi:users /home/bodhi -R

In both these commands, replace bodhi with the name of your user.

Finally, scroll down to the end of the file and comment out all the systemctl commands by appending a # symbol before them. To boot into the graphical desktop, make sure the correct services are started by adding the following:

systemctl enable pacman-init.service choose-mirror.service
systemctl set-default graphical.target
systemctl enable graphical.target

That’s it. You’re now all set to build the ISO for your custom distro. Enter the ~/archlive directory and run

./build.sh -v -N EduArch -V 1.0 -L EduArch_1.0

to initiate the build process. The -v switch enables the verbose mode, the -N switch sets the name of the ISO image, -V sets the version number and -L appends a label to the generated ISO image.

Note that the build process is slow and can take several hours depending on the available resources of your computer. When it’s done it’ll place the ISO under the

~/archlive/out directory.

Generate updated images

You can now copy the ISO out of the build system and share it with anyone. After a while though, you’ll want to update the system. Maybe the included apps have had a newer release since you last created the ISO image, or maybe you need to change any of the other files that you’ve manually copied into the distro.

To do so, head to the ~/archlive/work directory. The i686 and x86_64 directories under the work folder house the filesystems for the corresponding architecture. You can chroot into either of them with

arch-chroot ~/archlive/work/x86_64/root-image

or

arch-chroot ~/archlive/work/i686/root-image

Once inside, you can perform any updates or changes to the system. If you wish to update the apps, first update the package manager’s key database and package list:

pacman-key --init
followed by
pacman-key --populate
. Once that’s done, you can update the system with
pacman -Syu

After you’ve made the changes, type

exit

to get out of the chroot environment. Remember to make the changes for both the architectures. You’re now all set to recreate the ISO image. However, the

build.sh script will fail to execute, as there’s already a work folder. To force it to generate a new ISO file, open the build.sh file in a text editor. Scroll down to the very bottom of the file and remove the run_once parameter from the beginning of the make_prepare and make_iso commands, so that it reads:

for arch in i686 x86_64; do
make_prepare
done
make_iso

Save the file and run the script with

./build.sh -v -N EduArch -V 2.0 -L EduArch_2.0

to generate the updated iteration of your custom distro.

Build an embedded Linux distro

Linux is a popular choice in the embedded space. However the field is saturated with different embedded Linux distributions. To curb this proliferation, the Linux Foundation along with industry leaders such as Intel, AMD, Freescale, Texas Instruments, Wind River and others have created the Yocto Project.

The main aim of the project is to create and make available the build environment and tools for creating an embedded Linux distro. The project supports various 32- and 64-bit embedded architectures such as ARM, PPC, and MIPS. Using these tools developers can build a complete Linux system for an embedded device.

To aid developers the project offers the Hob tool, which is a graphical front-end for the project’s build engine called BitBake. Hob reads recipes and follows them by fetching packages, building them, and incorporating the results into bootable images. You can install it on all the popular Linux distros including Fedora 20, Ubuntu 14.04, Debian 7.4, OpenSUSE 13.1 and CentOS 6.5.

To get started download the build system from the project’s website using git with

git clone -b daisy git://git.yoctoproject.org/poky.git