Triple Boot Mastery: Windows, Arch Linux, and Kali Linux

This guide will walk you through installing three operating systems on a single machine, creating a powerful multi-purpose environment for development, security testing, and everyday use.

Since the installation gave me many problems, I will now try to install it better on my local server.

Installation Steps:

1. Install Windows

First, install Windows normally, but leave free space for Arch and Kali Linux. In this example, we'll use 250GB for Windows.

2. Prepare Arch Linux Installation

Download Arch Linux and create a bootable USB using Ventoy for convenience.

3. Start Arch Linux Installation

When the installer starts, SSH into the machine to install.

Arch Installation Start

4. Partition the Disk

First, find your hard drive:

fdisk -l

Run cfdisk to partition the disk:

cfdisk /dev/nvme0n1

Select the DOS option if prompted.

Create the partitions as shown in the image below (this is a photo of a fresh installation without other OS, the next image shows the current layout):

Partition Layout

5. Final Partition Layout

After creating the 3 partitions as shown in the image above —where the first is for /boot, the second for / (root), and the third for swap— your partition layout should look like this: (I leave 290GB for kali linux)

Final Partition Layout

6. Format Partitions

First, find the partition names:

root@archiso ~ # lsblk
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
loop0         7:0    0 841.4M  1 loop /run/archiso/airootfs
sda           8:0    1  59.8G  0 disk 
├─sda1        8:1    1  1007M  0 part 
└─sda2        8:2    1   172M  0 part 
nvme0n1     259:0    0 931.5G  0 disk 
├─nvme0n1p1 259:5    0   100M  0 part 
├─nvme0n1p2 259:6    0    16M  0 part 
├─nvme0n1p3 259:7    0 243.3G  0 part 
├─nvme0n1p4 259:8    0   757M  0 part 
├─nvme0n1p5 259:9    0     1G  0 part 
├─nvme0n1p6 259:10   0   380G  0 part 
└─nvme0n1p7 259:11   0    16G  0 part

Format the partitions accordingly:

mkfs.vfat -F 32 /dev/nvme0n1p5
mkfs.ext4 /dev/nvme0n1p6
mkswap /dev/nvme0n1p7
Formatting Partitions

7. Install Arch Linux

Run these commands:

mount /dev/nvme0n1p6 /mnt
mkdir /mnt/boot
mount /dev/nvme0n1p5 /mnt/boot
pacstrap /mnt linux linux-firmware networkmanager grub wpa_supplicant base base-devel

genfstab -U /mnt
genfstab -U /mnt > /mnt/etc/fstab

arch-chroot /mnt
passwd

pacman -S nano git
nano /etc/sudoers
# Uncomment this line:
# %wheel ALL=(ALL:ALL) ALL

useradd -m havi
passwd havi
usermod -aG wheel havi
groups havi

su havi
sudo nano /etc/locale.gen
# Uncomment this line:
# en_US.UTF-8 UTF-8

sudo locale-gen

pacman -Sy efibootmgr
mkdir /boot/efi
mount /dev/nvme0n1p1 /boot/efi
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=GRUB /dev/nvme0n1
grub-mkconfig -o /boot/grub/grub.cfg

echo arch-xps > /etc/hostname

pacman -S linux linux-headers linux-lts linux-lts-headers nano base-devel openssh networkmanager wpa_supplicant wireless_tools netctl dialog lvm2 grub efibootmgr linux-firmware sof-firmware base base-devel nano git kitty zsh

# For graphic environment:
pacman -Sy plasma-meta dolphin sddm
systemctl enable --now sddm

exit
umount -a
reboot

8. Change Shell

After starting your session, change to zsh:

chsh -s /bin/zsh

9. Install Kali Linux

After verifying that Arch Linux starts correctly, insert the USB with Kali or Ventoy with the Kali installer.

Choose manual partitioning:

Kali Manual Partitioning

Create only two partitions in the free space without deleting anything:

Kali Partition Creation

Confirm that only two partitions will be created and the Grub will be installed automatically in the partition that Kali automatically detected:

Kali Grub Installation

Complete the normal installation process.

10. Update GRUB for Triple Boot

To update the boot menu and choose the default operating system, edit the GRUB configuration file:

sudo nano /etc/default/grub

Find the GRUB_DEFAULT line and change it according to the OS you want to boot by default. For example:

GRUB_DEFAULT=0

If you want to boot the third OS in the menu (for example, Kali Linux), change the value to 3:

GRUB_DEFAULT=3

Save the changes and update GRUB by running:

sudo update-grub