From ArchWiki
Revision as of 21:32, 6 August 2019 by Sporadiccrash (talk | contribs) (Multi-boot - hardware setup and my experiences)
Jump to navigation Jump to search


Had installed Arch Linux once in 2008 on an Athlon XP 2800+ machine. Now using Lubuntu but preparing the laptop for multi-boot for Arch Linux and Lubuntu.

item value
computer Dell Latitude E7440
CPU i7-4600U
harddisk 256 GB Samsung PM851
UEFI options
item value comment
SecureBoot disabled vmlinuz in ISO is not signed
Virtualization enabled not used yet
TPM enabled not used yet
Bluetooth disabled probably won't use

Multi-Boot of Arch Linux with Lubuntu


  • Lubuntu was installed first (version 19.04). Arch Linux was installed afterwards (version 2019.08.01).
  • Lubuntu installed on /dev/sda5, /boot/efi contains Grub EFI from Ubuntu.
  • Arch Linux installed on dev/sda6. /boot/efi is on /dev/sda1, /boot of Arch Linux is on /dev/sda6. /boot directories of Ubuntu and Arch cannot conflict.
  • A custom GRUB menu to be created in /etc/grub.d/ on /dev/sda5 so that Lubuntu can find Arch.
Partition Table
Partition filesystem usage
/dev/sda1 FAT32 GRUB EFI boot loader /boot/efi/EFI/ubuntu/shimx64.efi
/dev/sda2 swap swap for all operating systems
/dev/sda3 unused 8 GB spare for swap or future RAM upgrade to 16 GB
/dev/sda4 ext4 user data directory
/dev/sda5 btrfs Lubuntu 19.04 - mounted /dev/sda1 as /boot/efi
/dev/sda6 btrfs Arch Linux

Deviations from Arch Linux Installation

1.2 Boot the live environment You don't need to burn ISO on a USB stick. GRUB can boot an ISO image on any partition. In this example, ISO was downloaded in Lubuntu environment. A GRUB menuentry was created in Lubuntu, which can be seen below. ISO was downloaded into /dev/sda4, which corresponds to set root=(hd0,4).

exec tail -n +3 $0

# use device label instead of UUID
set imgdevpath=/dev/disk/by-label/USER_DATA

# root to be set to partition where GRUB is, so that GRUB can pass all relative paths correctly

menuentry 'ARCH ISO' --class arch {
  set root=(hd0,4)
  set isofile=/distros/archlinux-2019.08.01-x86_64.iso
  loopback loop $isofile
  linux (loop)/arch/boot/x86_64/vmlinuz img_dev=$imgdevpath img_loop=$isofile earlymodules=loop
  initrd (loop)/arch/boot/intel_ucode.img (loop)/arch/boot/amd_ucode.img (loop)/arch/boot/x86_64/archiso.img

You can change the ISO filename to your current one. You can also change the partition according to your needs.

1.7 Partition the disks

Arch is installed after Ubuntu. Ubuntu alreadys has a swap. Just run the command

swapon <swap partition> 

For multi-boot, don't run mkswap otherwise it will change the UUID of the swap partition, which will increase the boot time on both operating systems (90 seconds).

To boot Arch ISO or installed Arch from Lubuntu Grub, you don't need to mount ESP (in this example it is /dev/sda1 - at Lubuntu its mountpoint was /boot/efi), which will be explained in Boot loader section below.

2.2 Install the base packages pacstrap /mnt base does not install Grub, CPU microcode, wireless utilities. Run following command instead:

pacstrap /mnt base base-devel intel-ucode dialog wpa_supplicant wireless-tools iw grub networkmanager dhclient

3.8 Boot loader Don't install GRUB as boot loader, because there is already a GRUB which was installed on /boot/efi. Instead, run grub-mkconfig /boot/grub.cfg. The generated GRUB file can be called in Lubuntu environment. Go back to Lubuntu and create following file:

exec tail -n +3 $0

menuentry 'Arch Linux' --class arch {
  set root=(hd0,6)
  configfile /boot/grub.cfg

Run in Lubuntu sudo update-grub and reboot. In GRUB menu you will see Arch Linux.