Kiss Install Guide
NO WARRANTIES, FACT CHECK EVERYTHING, THIS WORKS FOR ME, MIGHT NOT WORK FOR YOU!!!!
What will I need?
Internet and a Linux distro that’s already running. If you don’t have a distro thats already running or you only have one drive, consider flashing a distro of your liking to a USB drive.
Disk
In this example I am using a VM, so it will be /dev/vda, on real hardware it is probably /dev/sda or /dev/nvme0n1.
Run this:
fdisk /dev/vda
Here is an average setup:
Welcome to fdisk (util-linux 2.41.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table.
Created a new DOS (MBR) disklabel with disk identifier 0xa9cd720f.
Command (m for help): g
Created a new GPT disklabel (GUID: 0BCF6CD0-2DC1-4943-984E-77C6FBE98E34).
Command (m for help): n
Partition number (1-128, default 1):
First sector (2048-41943006, default 2048):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-41943006, default 41940991): +256M
Created a new partition 1 of type 'Linux filesystem' and of size 256 MiB.
Command (m for help): n
Partition number (2-128, default 2):
First sector (526336-41943006, default 526336):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (526336-41943006, default 41940991):
Created a new partition 2 of type 'Linux filesystem' and of size 19.7 GiB.
Command (m for help): t
Partition number (1,2, default 2): 1
Partition type or alias (type L to list all): 1
Changed type of partition 'Linux filesystem' to 'EFI System'.
Command (m for help): p
Disk /dev/vda: 20 GiB, 21474836480 bytes, 41943040 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 0BCF6CD0-2DC1-4943-984E-77C6FBE98E34
Device Start End Sectors Size Type
/dev/vda1 2048 526335 524288 256M EFI System
/dev/vda2 526336 41940991 41414656 19.7G Linux filesystem
Command (m for help): w
Format the first partition:
mkfs.vfat /dev/vda1
And the second one:
mkfs.ext4 /dev/vda2
Mount & Tarball
Everything past this will use /dev/sda as the install target.
Mount the root file system to /mnt:
mount /dev/sda2 /mnt
Create /efi:
mkdir /mnt/efi
And mount your fat partition on it:
mount /dev/sda1 /mnt/efi
Go to the mounted partition:
cd /mnt
Check the latest release.
For the time being it’s 24.12.18
wget https://codeberg.org/kiss-community/repo/releases/download/24.12.18/kiss-chroot-24.12.18.tar.xz
DONT FORGET TO CHECK THE CHECKSUM!!!
Extract it:
tar xf kiss-chroot-24.12.18.tar.xz
Chroot and basic setup
Now run:
/mnt/bin/kiss-chroot /mnt
Edit your ~/.profile (with vi) do something like this:
export KISS_PATH="$HOME/repos/repo/core:$HOME/repos/repo/extra"
export KISS_PATH="$KISS_PATH:$HOME/repos/community/community"
export CFLAGS="-O2 -pipe -march=native"
export CXXFLAGS="$CFLAGS"
export MAKEFLAGS="-j10"
The number after MAKEFLAGS should reflect the output of nproc.
Reload the profile:
source ~/.profile
Get the repos:
mkdir ~/repos
cd ~/repos
git clone https://codeberg.org/kiss-community/repo.git
git clone https://codeberg.org/kiss-community/community
Setup signing:
git config gpg.ssh.allowedSignersFile .allowed_signers
git config merge.verifySignatures true
(OPTIONAL) This is optional but recommended, will take some time, depending on your hardware. Rebuild all packages:
cd /var/db/kiss/installed && kiss build *
Kernel
Install dependencies (ncurses is technically not needed, but helpful when doing menuconfig):
kiss b perl libelf pkgconf ncurses
I will use the void-linux patch and config in this guide.
Make a directory for the kernel stuff.
mkdir ~/kernel
cd ~/kernel
Now clone the void repo:
git clone https://github.com/void-linux/void-packages.git
Take a look at what kernel you want to use, I will go for linux6.12. The version in the template is 6.12.41 at the time of writing. Go to the kernel cdn and copy the link to the version you wanna install.
curl https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.12.41.tar.gz --output kernel.tar.gz
tar xf kernel.tar.gz
cd linux-6.12.41
Now we copy the config and patch:
cp ../void-packages/srcpkgs/linux6.12/files/x86_64-dotconfig .config
patch < ../void-packages/srcpkgs/linux6.12/patches/fix-musl-objtool.patch
Edit .config and change CONFIG_IKHEADERS=m to CONFIG_IKHEADERS=n.
Now we compile:
make
When finished run:
make INSTALL_MOD_STRIP=1 modules_install
make install
mv /boot/vmlinuz /boot/vmlinuz-6.12.41
mv /boot/System.map /boot/System.map-6.12.41
Initramfs
Install tinyramfs:
kiss b tinyramfs
Add this to /etc/tinyramfs/config:
root="UUID=6aefe26b-72e0-4926-a6b4-01b1c197f898" root_type=ext4 hooks="mdev"
REPLACE THE UUID WITH THE CORRECT ONE!!! You can see your UUID with the command blkid pick the one that is /dev/sda2.
Generate the initramfs:
tinyramfs -k 6.12.41_1 -f initrd.img-6.12.41
Bootloader
I will show a Limine (WIP) and Grub setup.
GRUB
Install Grub and efibootmgr:
kiss b grub efibootmgr
Generate the efi with:
grub-install --target=x86_64-efi --efi-directory=/efi
Generate the config:
grub-mkconfig -o /boot/grub/grub.cfg
Check if Grub found vmlinuz and initrd.img.
Fstab
I do it manually most of the time, this is what I have in my /etc/fstab:
/dev/sda2 / ext4 defaults,noatime 0 1
/dev/sda1 /boot vfat defaults 0 2
Stuff you probably want
This is not really optional, you probably want those:
kiss b baseinit dhcpcd libudev-zero e2fsprogs dosfstools
You probably also want to enable mdev:
ln -s /etc/sv/mdev/ /var/service
If you have a non-us keyboard:
kiss b bkeymaps
To load the keymap (in spanish for example):
loadkmap < /usr/share/bkeymaps/es/es.bmap
Don’t forget to change your password:
passwd