KISS Linux

[ ← Back Home ]


Last modified on November 28, 2023

Table of Contents

KISS Linux is a Linux distribution that uses the kiss package manager, a simple extensible shell script. KISS Linux is source-based, meaning packages are downloaded and built from source rather than prebuilt.

KISS Linux is community maintained. It was originally developed by Dylan Araps who left the project on December 13th, 2021. The repositories and the kiss package manager have since been maintained by kiss-community, which hosts the repositories on Codeberg.

Before you begin…

Source-based distributions can be installed from any other distribution. Flash a separate (optionally graphical) Linux image on a CD/DVD/USB and follow the commands below to install KISS. Some good images to use are Linux Mint and Artix Linux.

Choosing between KISS and GKISS

Throughout this tutorial, different repository links will be provided depending on whether you wish to install KISS or GKISS Linux.

KISS is maintained in two different forms: Regular KISS Linux and GKISS Linux. In short, GKISS is the more “compatible” of the two because of its usage of the GNU C Library (glibc). For example, NVIDIA drivers function on GKISS, while they do not on KISS. Regular KISS Linux uses musl libc instead, which may not be compatible with as much software.

Partitioning and Mounting

Before installing the system, run cfdisk to properly partition the space you wish to use for KISS. This guide will assume you’re installing to /dev/sda1.

If running with BIOS/DOS, ensure your root partition is bootable!

Format your root partition to the EXT4 filesystem:

mkfs.ext4 /dev/sda1

Mount the root partition to /mnt:

mount /dev/sda1 /mnt

Make sure to mount any additional partitions at this point as well. For example, if using UEFI with GPT, mount your FAT 32 boot partition to /mnt/boot/efi.

Downloading the Tarball

Begin by downloading the latest KISS tarball:

# Repository to use. Pick "" for KISS, "g" for GKISS.
prefix=""

# Get version information
baseurl="https://codeberg.org/kiss-community/${prefix}repo/releases"
ver=$(basename "$(curl -w "%{url_effective}\n" -I -L -s -S $baseurl/latest -o /dev/null)")
file=${prefix}kiss-chroot-$ver.tar.xz
url="$baseurl/download/$ver/$file"

# Download the tarball
curl -fLO "$url"

Extracting the Tarball

Extract the tarball to /mnt:

tar xvf $file -C /mnt

Generating the fstab

The genfstab script may be used to generate an /etc/fstab file for the KISS Linux install. Download and run the script as follows:

# Standalone install for all OS':
git clone https://github.com/glacion/genfstab
cd genfstab

./genfstab /mnt > /mnt/etc/fstab

Note: Make sure to check the /mnt/etc/fstab before rebooting your system at the end of the installation. The script is not foolproof and may have included some unwanted filesystems.

Changing root

KISS Linux tarballs come with a built-in chroot script named kiss-chroot. Simply run this and you’ll immediately be in the new filesystem:

/mnt/bin/kiss-chroot /mnt

Package Configuration

KISS repositories should be stored in /var/db/kiss/. Clone the relevant repositories to this directory:

# Repositories for KISS Linux
git clone https://codeberg.org/kiss-community/repo /var/db/kiss/repo

# Repositories for GKISS LINUX
git clone https://codeberg.org/kiss-community/grepo /var/db/kiss/repo

# Community repository
git clone https://codeberg.org/kiss-community/community /var/db/kiss/community

The repositories contain various subdirectories (core, extra and wayland) which themselves contain the package sources and kiss package configurations.

The KISS package manager only uses the repositories it finds in the KISS_PATH variable. To declare this variable on the system level, add it to /etc/profile:

export KISS_PATH=''
KISS_PATH=/var/db/kiss/repo/core
KISS_PATH=$KISS_PATH:/var/db/kiss/repo/extra
KISS_PATH=$KISS_PATH:/var/db/kiss/repo/wayland

# Community repository
KISS_PATH=$KISS_PATH:/var/db/kiss/community/community

For the changes to take effect, run:

source /etc/profile

# Check the KISS_PATH variable
echo $KISS_PATH

Build Configuration

In addition to declaring variables for the package manager, /etc/profile should also contain the following to tune package compilation:

export CFLAGS="-O3 -pipe -march=native"
export CXXFLAGS="$CFLAGS"

# NOTE: '4' should be changed to match the number of threads.
# 	This value can be found by running 'nproc'.
export MAKEFLAGS="-j4"

As with all changes to /etc/profile, run the following to put the changes into effect:

source /etc/profile

Updating and rebuilding

Now you can update the repositories and rebuild all installed packages:

kiss update
cd /var/db/kiss/installed && kiss build *

If you encounter any issues building packages, make sure your repositories are up to date. If the issues persist, do not hesitate to join the kiss-community IRC chat at #kisslinux on libera.chat.

Installing necessary packages

Some packages to consider:

To install any of the following commands, run kiss b and then kiss i:

kiss b libelf ncurses perl baseinit grub e2fsprogs dhcpcd

kiss i libelf ncurses perl baseinit grub e2fsprogs dhcpcd

Kernel Configuration

KISS Linux does not come with any preconfigured kernel options. To install and use the Linux kernel, you must download, compile and install it yourself.

Begin by creating the /usr/src/ directory and entering it:

mkdir -p /usr/src
cd /usr/src

Download and extract the latest Linux kernel:

curl -fLO https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.7.9.tar.xz
tar xvf linux*

Now enter the directory and run make menuconfig:

cd linux*/
make menuconfig

This will open the kernel configuration TUI, where you can begin customizing your kernel:

The kernel configuration screen.

For tips on how to configure the kernel, please see the Gentoo wiki’s kernel configuration guide.

Once the kernel has been configured to your liking, compile and install it:

make -j$(nproc)
make install

You may also install the kernel modules.

make INSTALL_MOD_STRIP= 1 modules_install

Finally, be sure to give your kernel and System.map an appropriate name for the bootloader (grub) to identify:

mv /boot/vmlinuz /boot/vmlinuz-6.7.9
mv /boot/System.map /boot/System.map-6.7.9

Users and passwords

Set a password for the root user:

passwd

Create a new user:

useradd -m -s /bin/sh alex

Bootloader configuration

To install grub bootloader, run the following commands:

grub-install /dev/sda
grub-mkconfig -o /boot/grub/grub.cfg

You should now be able to reboot and utilize your KISS Linux system.

Congratulations! You’ve successfully installed KISS Linux.

Further Reading