Make your own Arch Linux Distro with ArchISO
By Swee
Welcome to this tutorial on making a Linux Distro with archiso!
Here are the requirements:
- Arch Linux
- 20GB or more disk space
- 4GB RAM recommended
- 64-Bit CPU recommended for regular use
Tip: If you don’t want to use Arch linux, you can use a VM, but you won’t be able to test the new ISO unless you import the ISO to your host, then use a VM there.
Why ArchISO?
archiso is a simple tool for creating ISO images and respins (distros) of Arch Linux.
Fact: Arch Linux’ official ISO images are made with archiso.
Preparing tools
To install archiso on your machine, run this command as root:
pacman -Syu archiso
Tip: There could be an enchanced or newer version of
archisoin AUR.
According to Arch Linux Wiki, there are two default profiles, base and releng. We’re going to use releng because it is recommended for respins.
To use the releng profile, you must copy the profile to the current directory you’re in. You can run this command without root:
cp -r /usr/share/archiso/configs/releng ./archlive
Now that you’ve got a base profile, you’ll need to check this README file to get an understanding of what’s in the profile directory.
Editing packages
Now that you prepared the profile, you should edit the packages.x86_64 file located in the root directory of the profile, you can also remove some unwanted packages that are originally for the Arch Linux installation medium.
WARNING: Make sure the packages exist in your
pacmanrepositories or the ISO build will fail!
If your package is located in AUR or isn’t in an online repository, you can append this code to pacman.conf and make a custom repository with that. Click here if you need information about custom repositories.
[customrepo]
SigLevel = Optional TrustAll
Server = file:///path/to/customrepo
Tip: You can also uncomment the
multilibrepository inpacman.confif you need any packages there.
Adding files
If you use a graphical file manager like pcmanfm, then it will be simple to transfer your current configuration to your archiso profile.
Note: even if your machine has the default configuration of the program you want, you can copy the one from your machine to airootfs and edit it.
if you are using the command line to prepare your profile, then you can use the following command to copy iptables (can be any file) to your archiso profile.
cp -r /etc/iptables ./archlive/airootfs/etc
Tip: files like /etc/sudoers should copied to archlive/airootfs/etc/. think of airootfs being a filesystem offset.
Changing OS branding
Now it’s your turn for rebranding your OS, you can start with copying and editing /etc/os-release to airootfs and then editing the profile’s grub and syslinux folders. with editing these folders, you can change the OS names and descriptions in different bootloaders. plus a new splash for SYSLINUX is great.
Enabling SystemD services
To enable systemd services on your archiso profile, you have to add the service’s packages to both your packages.x86_64 file and your system.
systemd units run by wants targets, for example, multi-user.target can be added to the system by using this command.
mkdir -p ./archlive/airootfs/etc/systemd/system/multi-user.target.wants
And to enable the services that is wanted by multi-user.target such as gpm.service, you can run this command to make a symlink of the service just like systemctl enable will.
ln -s /usr/lib/systemd/system/gpm.service ./archlive/airootfs/etc/systemd/system/multi-user.target.wants/
WARNING: Point the symlink to the system file, symbolic links do not care if the target path doesn’t exist. If you set the target to an
airootfspath, then the environment will still try to use that same path without translating to a system path.
How to enable display manager?
You can also use systemd to add a display manager to your distro, to do this with LXDM, you can check display-manager.service to see which display manager is set.
ls -l /etc/systemd/system/display-manager.service
And then to enable LXDM by creating a symbolic link.
ln -s /usr/lib/systemd/system/lxdm.service ./archlive/airootfs/etc/systemd/system/display-manager.service
Creating users and passwords
Adding users is pretty complicated but it’s simple to encrypt the password. to add a user named user, follow these steps:
Step 1: Edit /etc/passwd
To add a user, you can change /etc/passwd like this
root:x:0:0:root:/root:/usr/bin/zsh
user:x:1000:1000::/home/user:/usr/bin/zsh
and create the respective home directory in airootfs.
Step 2: Generate encrypted password
To make the encrypted password, create a dummy user with the password you want, then use the following command and copy the encrypted password after the colon (:) next to the username and before the colon next to 14871.
cat /etc/shadow
Now, create /etc/shadow in airootfs and edit it like this.
root::14871::::::
user:enc:14871::::::
Replace enc with the password hash you just copied.
Step 3: Add groups
Groups are an important part of the multi-user linux, it allows to tell programs what permissions someone has. create and edit /etc/group and add these important groups.
root:x:0:root
adm:x:4:user
wheel:x:10:user
uucp:x:14:user
user:x:1000:
Step 4: Create /etc/gshadow
You can create and edit /etc/gshadow like this.
root:!*::root
user:!*::
Setting autologin
To set autologin on the console, you must create or change /etc/systemd/systemgetty@tty1.service.d/autologin.conf on the airootfs like this.
[Service]
ExecStart=
ExecStart=-/sbin/agetty --autologin user --noclear %I 38400 linux
Replace user with the username of the user for the profile.
How to set autologin on LXDM?
to setup autologin on LXDM, copy /etc/lxdm/lxdm.conf to airootfs and uncomment the following line.
#autologin=dgod
Replace dgod with the username of the user for the profile.
Info: To setup autologin on any other Display Manager other than LXDM, you must follow their documentation.
Build the ISO
to build the ISO, you must prepare an empty folder that archiso will use to prepare the ISO for compilation.
Note: If you have enough RAM and the system allows to do so, you can make an empty folder in
/tmpand use it as the work directory.
After preparing the folder, you must run the following command, replacing each directory path with the ones on your machine:
mkarchiso -v -w /path/to/work_dir -o /path/to/out_dir /path/to/profile/
Tip: After making the ISO, you can try making your ISO bootable with secure boot enabled machines, but I’m not that experienced to describe it for beginners yet.
Warning: you must delete everything in the folder before building again, or archiso will skip the building entirely!
Testing
To test your new ISO on an emulator, you can install the required packages using this command as root:
pacman -Syu qemu-desktop edk2-ovmf
And after installing qemu, run archiso’s built-in command for testing the ISO, replacing the file path(s) with the path(s) on your machine:
run_archiso -i /path/to/file.iso
Tip: you can emulate UEFI by adding the
-uargument to the command.
Now what?
Now that you have created your own distro, go ahead and customize it as you like and improve it to the way you want it to be.
If you liked this tutorial, please like this post and subscribe to SweeBlogs for more Tutorials and blogs!
Arch Linux and the Arch Linux Logo are trademarks of the Arch Linux project.