Triple Boot Arch Linux XFCE with Linux Mint and Windows 7
Arch Linux is an independently developed, i686/x86-64 general purpose GNU/Linux distribution versatile enough to suit any role. Development focuses on simplicity, minimalism, and code elegance. Arch is installed as a minimal base system, configured by the user upon which their own ideal environment is assembled by installing only what is required or desired for their unique purposes. GUI configuration utilities are not officially provided, and most system configuration is performed from the shell and a text editor. Based on a rolling-release model, Arch strives to stay bleeding edge, and typically offers the latest stable versions of most software. I have always wanted to give it a go since this is slightly different, so I decided to Triple Boot Arch Linux XFCE with Linux Mint and Windows 7. My config is pretty much basic as I will start developing it more as time goes.
I’ve enjoyed installing Arch Linux and my configuration is fast and quick. Total process took me less than 2 hours and out of those 2 hours, I’ve sat there doing nothing for 90mins as it was just downloading packages from repo. I’ve included my BIOS, Hardware, Grub and any other details I found useful for someone who might want to replicate it. If you decide to install Arch Linux, you probably can just copy paste it in your terminal and things should just work as it is.
Hardware Configuration:
- Samsung Laptop – Model NP530U4B-S01AU
- Intel® Core™ i5 Processor 2467M (1.60GHz, 3MB L3 Cache)
- Graphics Details:
- Graphic Processor: AMD Radeon™ HD7550M
- Graphic Memory : 1GB DDR3 (Ext. Graphic)
- Memory: 4GB DDR3 System Memory at 1,333MHz (on BD 4GB)
- Storage: 500GB S-ATAII Hard Drive (7,200RPM) with ExpressCache 16GB
- Connectivity:
- Wired LAN: 10 / 100 / 1,000 Gigabit Ethernet LAN
- Wireless LAN : Inte®l Centrino® Advanced-N 6230, 2 x 2 802.11 abg/n (up to 300Mbps), Widi Support
- Bluetooth: Bluetooth V3.0 High Speed
- Input Devices:
- Keyboard: Standard US
- Touch Pad: Touch Pad (Scroll Scope, Flat Type, Gesture UI)
- UEFI: Disabled
- Fast Boot: Disabled
- Network Boot: Disabled
- Boot Priority:
- USB HDD
- CD/DVD ROM
- Internal HDD
BIOS Configuration:
- UEFI: Disabled
- Fast Boot: Disabled
- Network Boot: Disabled
- Boot Priority:
- USB HDD
- CD/DVD ROM
- Internal HDD
Existing Operating Systems:
- Linux Mint 15 Cinnamon
- Windows 7
My /dev/sda was partitioned as follows:
- /dev/sda (500GB, 7200RPM primary hard disk)
- /dev/sda1 – Partition table for Window 7 – 100MB
- /dev/sda2 – Windows 7 (ntfs) – 340GB
- /dev/sda3 – Windows Recovery (ntfs) – 20GB
- /dev/sda5 – GNU Linux (ext4) – 45GB
- /dev/sda6 – SWAP Space – 2GB
- /dev/sda7 – Linux Mint – 35GB
- /dev/sdb (16 GB Express Cache)
- /dev/sdb1 – Fast Boot
- /dev/sdb2 – Caching for Windows 7 (Express Cache)
My Grub was living in /dev/sda
I was using Linux Mint Grub (/dev/sda7).
Primary Boot OS at that time was Linux Mint Cinnamon. I decided to remove GNU Linux (I’ve only installed Linux Mint 2 days back and was still playing with it) from /dev/sda5 and install Arch Linux there.
Download ISO
Download Arch Latest ISO from: https://www.archlinux.org/download/
ARCH Linux ISO
Size: 522M
Name of ISO: archlinux-2013.12.01-dual.iso
Burn it in to a CD
Reboot Laptop with CD in bay
In Live CD:
Choose Option 1 (Boot Arch x64)
Once logged into your Live CD type the followings:
Define Keyboard
I went for US keyboard
loadkeys us
Connect to Wireless LAN:
Enable device and connect using wifi–menu
Find Device name:
iw dev
Set device up
ip link set wlp2s0 up
Connect to Wireless
wifi-menu wlp2s0
Confirm connectivity:
ping www.google.com
Check Disk
fdisk –l
Create files-system:
As stated previously, I already had a partition that I was going to replace GNU Linux with Arch Linux. (/dev/sda5). So I didn’t had to repartition my hard disk, just format that partition for Arch Linux
mkfs.ext4 /dev/sda5 mkswap /dev/sda6 swapon /dev/sda6
Confirmed new partitioning
lsblk /dev/sda
Mount partition:
mount /dev/sda5 /mnt
Install Arch base system
The base system is installed using the pacstrap script. This will give you a basic Arch system. Other packages can be installed later using pacman.
pacstrap -i /mnt base
Generate fstab:
genfstab -U -p /mnt >> /mnt/etc/fstab
Check FSTAB file for unusual stuff!
vi /mnt/etc/fstab
I had nothing special here, so moving on
chroot into Arch base
I decided to go for bash shell (/bin/bash).
arch-chroot /mnt /bin/bash
In ARCH chroot Environment
Set your local and generate it
vi /etc/locale.gen
I’ve un-commented the following line in that file and saved it.
en_US.UTF-8 UTF-8
Now generate locale:
locale-gen echo LANG=en_US.UTF-8 > /etc/locale.conf export LANG=en_US.UTF-8
Set timezone
ln -s /usr/share/zoneinfo/Australia/Sydney /etc/localtime
Set clock to UTC
hwclock --systohc –utc
Set hostname
echo arch64 > /etc/hostname
Enable dhcpd
systemctl enable dhcpcd
Install required softwares
I’ve went for WiFi-related applications and grub.
pacman -S iw wpa_supplicant dialog wpa_actiond grub os-prober
Create an initial ramdisk environment
mkinitcpio -p linux
Set a password for root user
passwd
Create a grub.cfg file for reference:
I decided to create a grub.cfg file and put it in /root folder. I am not going to use Arch grub yet.
grub-mkconfig -o /root/grub.cfg
Exit from chroot environment:
exit
Once exited, we’ll be back into Live CD.
In Live CD:
Unmount /dev/sda5 from /mnt
umount -R /mnt
Reboot
We’re done with Live CD. Time to reboot.
reboot
Now remember, my old grub which was in /dev/sda and reading config from /dev/sda7 (Linux Mint) didn’t knew anything about Arch Linux. It will think I still got GNU Linux in /dev/sda5. So it’s time to fix that.
In Linux Mint
Become root:
sudo su –
Use os-prober to see all Operating systems:
os-prober
At this point my Linux Mint OS-Prober didn’t see anything except Windows 7 and Linux Mint.
Quite annoying! How to fix it?
Mount Arch Linux Partition
mount /dev/sda5 /mnt
Now we do another OS-Prob.
os-prober
Now it found it. Good then. We can generate a grub config file.
Create a new grub-config file
Before we do that, let’s make a backup of my existing grub.cfg file.
mv /boot/grub/grub.cfg /root/grub.cfg.mint
Now create a new one
grub-mkconfig -o /boot/grub/grub.cfg
Install grub into /dev/sda
grub-install --recheck /dev/sda
Update grub
update-grub reboot
Login to new Arch Linux:
At this point I tried to login to Arch Linux, it went to a rootfs. Weird eh!
The error message was about UUID (hard disk partition not found).
No such Device: ad4103fa-d940-47ca-8506-301d8071d467.
Loading Linux core repo kernel ...
error: no such partition.
Loading initial ramdisk ...
So reboot back into Linux Mint to fix Hard disk UUID in Grub
Fix UUID in grub.cfg
grub.cfg in Linux Mint (/boot/grub/grub.cfg) shows me this:
menuentry 'Arch' --class gnu-linux --class gnu --class os $menuentry_id_option 'osprober-gnulinux-simple-331e2ff8-fc8b-4de1-93b9-4ce5aeb7c3ba' { insmod part_msdos insmod ext2 set root='hd0,msdos5' if [ x$feature_platform_search_hint = xy ]; then search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos5 --hint-efi=hd0,msdos5 --hint-baremetal=ahci0,msdos5 331e2ff8-fc8b-4de1-93b9-4ce5aeb7c3ba else search --no-floppy --fs-uuid --set=root 331e2ff8-fc8b-4de1-93b9-4ce5aeb7c3ba fi linux /boot/vmlinuz-linux root=UUID=ad4103fa-d940-47ca-8506-301d8071d467 rw quiet initrd /boot/initramfs-linux.img } submenu 'Advanced options for Arch' $menuentry_id_option 'osprober-gnulinux-advanced-331e2ff8-fc8b-4de1-93b9-4ce5aeb7c3ba' { menuentry 'Arch Linux, with Linux core repo kernel (on /dev/sda5)' --class gnu-linux --class gnu --class os $menuentry_id_option 'osprober-gnulinux-/boot/vmlinuz-linux--331e2ff8-fc8b-4de1-93b9-4ce5aeb7c3ba' { insmod part_msdos insmod ext2 set root='hd0,msdos5' if [ x$feature_platform_search_hint = xy ]; then search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos5 --hint-efi=hd0,msdos5 --hint-baremetal=ahci0,msdos5 331e2ff8-fc8b-4de1-93b9-4ce5aeb7c3ba else search --no-floppy --fs-uuid --set=root 331e2ff8-fc8b-4de1-93b9-4ce5aeb7c3ba fi linux /boot/vmlinuz-linux root=UUID=ad4103fa-d940-47ca-8506-301d8071d467 rw quiet initrd /boot/initramfs-linux.img } menuentry 'Arch Linux, with Linux core repo kernel (Fallback initramfs) (on /dev/sda5)' --class gnu-linux --class gnu --class os $menuentry_id_option 'osprober-gnulinux-/boot/vmlinuz-linux--331e2ff8-fc8b-4de1-93b9-4ce5aeb7c3ba' { insmod part_msdos insmod ext2 set root='hd0,msdos5' if [ x$feature_platform_search_hint = xy ]; then search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos5 --hint-efi=hd0,msdos5 --hint-baremetal=ahci0,msdos5 331e2ff8-fc8b-4de1-93b9-4ce5aeb7c3ba else search --no-floppy --fs-uuid --set=root 331e2ff8-fc8b-4de1-93b9-4ce5aeb7c3ba fi linux /boot/vmlinuz-linux root=UUID=ad4103fa-d940-47ca-8506-301d8071d467 rw quiet initrd /boot/initramfs-linux-fallback.img } }
WTH:
--set=root 331e2ff8-fc8b-4de1-93b9-4ce5aeb7c3ba
and
root=UUID=ad4103fa-d940-47ca-8506-301d8071d467
doesn’t match
I’ll think about it later but now I need to fix it.
I did create a grub.cfg in Arch Linux. So I need to get a copy of that to determine what Arch think is correct.
Mount Arch into Linux Mint:
mount /dev/sda5 /mnt
Copy Grub.cfg into
cp /mount /root/grub.cfg /root/grub.cfg.arch
From this grub.cfg.arch file (I renamed it for convenience) this is what I can see:
menuentry 'Arch Linux, with Linux core repo kernel' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-core repo kernel-true-331e2ff8-fc8b-4de1-93b9-4ce5aeb7c3ba' { load_video set gfxpayload=keep insmod gzio insmod part_msdos insmod ext2 set root='hd0,msdos5' if [ x$feature_platform_search_hint = xy ]; then search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos5 --hint-efi=hd0,msdos5 --hint-baremetal=ahci0,msdos5 331e2ff8-fc8b-4de1-93b9-4ce5aeb7c3ba else search --no-floppy --fs-uuid --set=root 331e2ff8-fc8b-4de1-93b9-4ce5aeb7c3ba fi echo 'Loading Linux core repo kernel ...' linux /boot/vmlinuz-linux root=UUID=331e2ff8-fc8b-4de1-93b9-4ce5aeb7c3ba rw quiet echo 'Loading initial ramdisk ...' initrd /boot/initramfs-linux.img } menuentry 'Arch Linux, with Linux core repo kernel (Fallback initramfs)' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-core repo kernel-fallback-331e2ff8-fc8b-4de1-93b9-4ce5aeb7c3ba' { load_video set gfxpayload=keep insmod gzio insmod part_msdos insmod ext2 set root='hd0,msdos5' if [ x$feature_platform_search_hint = xy ]; then search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos5 --hint-efi=hd0,msdos5 --hint-baremetal=ahci0,msdos5 331e2ff8-fc8b-4de1-93b9-4ce5aeb7c3ba else search --no-floppy --fs-uuid --set=root 331e2ff8-fc8b-4de1-93b9-4ce5aeb7c3ba fi echo 'Loading Linux core repo kernel ...' linux /boot/vmlinuz-linux root=UUID=331e2ff8-fc8b-4de1-93b9-4ce5aeb7c3ba rw quiet echo 'Loading initial ramdisk ...' initrd /boot/initramfs-linux-fallback.img }
That means the correct UUID is
331e2ff8-fc8b-4de1-93b9-4ce5aeb7c3ba.
That’s good then.
Open Linux Mint grub.cfg in gedit:
gedit /boot/grub/grub.cfg
Replace UUID
ad4103fa-d940-47ca-8506-301d8071d467
with
331e2ff8-fc8b-4de1-93b9-4ce5aeb7c3ba
Save the file. Reboot
Login to new Arch Linux:
This time I managed to login to Arch Linux shell. Nice. So let’s install X and a Desktop Manager
First thing we need to connect to Wifi
I installed iw, wpa_supplicant, dialog, and wpa_actiond just for that.
Connect to Wifi
wifi-menu
Install Xorg and related packages:
pacman -S xorg-server xorg-apps xorg-xinit xorg xorg-devices
Install a Display Manager:
I’ve chosen gdm as I can later install Gnome with less complications.
pacman -S gdm
Install xfce4
I’ve chosen XFCE4 as its light.
pacman -S xfce4 xfce4-goodies gamin
Update .xinitrc
echo exec startxfce4 > .xinitrc
Install required Input device packages
pacman -S xf86-input-synaptics
Enable Display Manager:
systemctl enable gdm.service systemctl start gdm
Install any other packages you wish:
pacman –S lm_sensors laptop-detect lsb-release
Start X
startx
As you can see now I have a nice XFCE/XFCE4 desktop with all the widgets and gadgets (thanks to xfce4-goodies). Over the few days, I will continue to explore more and develop this build to suit my needs. I like eye candy but not at the expense of loosing speed. Gnome/KDE/Mate and Cinnanon would be next project. It was interesting to trible boot Arch Linux XFCE with Linux Mint and Windows 7. Arch is certainly a different territory but like any other Linux distribution, the base is same. The best part of Triple Boot Arch Linux XFCE was that you get to learn so much more about exactly which packages are required to boot up your Linux distribution. I would recommend readers to give it a try, it will make you more comfortable with Linux.
Lastly, I’ve not explained a lot of things, as I tailored this guide to just copy paste and go style. If you have a different build, I recommend reading following documents/wiki pages:
- Arch Linux
- The Arch Way
- Arch Compared to Other Distributions
- Beginners’ Guide
- Installation Guide
- FAQ
- General Recommendations
Thanks for reading. Feel free to comment or show me your build.
Looks like I'm not the only one who had similar issues with Grub presenting incorrect UUID. Several post shows the same solution
I used:
https://bbs.archlinux.org/viewtopic.php?id=148038
https://bbs.archlinux.org/viewtopic.php?pid=12946… https://bbs.archlinux.org/viewtopic.php?id=146572 https://bbs.archlinux.org/viewtopic.php?id=166042 https://bbs.archlinux.org/viewtopic.php?pid=11517…
Seems like a common issue in Arch Linux (Multibooting cases).