Installing Gentoo Linux UEFI OpenRC on VMWare.

54

Alright, get ready to strap on your geek hat and join me on a journey to the dark side of operating systems: Gentoo Linux UEFI OpenRC on VMWare. Now, I know what you’re thinking – “isn’t Gentoo that crazy Linux distro that takes a million years to install?” Yes, it is. But think of it as a marathon, not a sprint. And with its reputation for being super customizable, you’ll have plenty of time to make sure your desktop background matches your socks. So grab a bag of Haribo gummies, a frosty glass of Bavarian wheat beer, and let’s do this thing!

Ah, the sweet smell of a fresh Gentoo installation. But before we can embark on this journey, we need to get our hands on the Gentoo minimal installation ISO. Luckily, it’s as easy as visiting https://www.gentoo.org/downloads/ and downloading the latest version. Just make sure to choose the architecture and installation media that best suits your needs, or else you might end up with a system that’s as stable as a Jenga tower in an earthquake.

Now that we have our ISO, it’s time to create a new VMware machine. I hope you brought your hard hat, because we’re going to be building a beast! Let’s give our new VM 8192MB of RAM, 3 cores, and an 80GB hard disk. That’s right, we’re not messing around – this machine is going to be more powerful than a locomotive on steroids. So grab your beer and let’s get to work, because we have a Gentoo installation to complete! Just make sure not to spill your beer on the motherboard, or you might end up with a short-circuited wheat-fueled monster on your hands.

It is important to note that in order to successfully install Gentoo Linux on a virtual machine using VMWare Fusion, you must ensure that your firmware is set to EFI. This can be easily accomplished within the VMWare Fusion settings. However, if you are using VMWare Workstation, it is necessary to manually edit the vmx file and add the following line at the bottom of the file:

firmware = “EFI”.

By taking these necessary steps, you will ensure a smooth and seamless installation of Gentoo Linux on your virtual machine.

Now that our virtual machine is built and ready to go, it’s time to fire up the engine and start our Gentoo installation. But wait, there’s no need to don your digital hard hat and fiddle with the VM console – we’re going to use SSH to make our lives easier. And what’s more fun than remote controlling your own virtual machine? Absolutely nothing, that’s what.

To get started, we need to start the SSH server using the good old “/etc/init.d/sshd start” command. And just like that, we have access to the power of the command line, all without leaving the comfort of our own machine. So sit back, relax, and let the magic of SSH guide you on your Gentoo installation journey.

But first, we need to know the IP address of our virtual machine. Don’t worry, it’s not like finding a needle in a haystack – we just need to use the trusty “ifconfig” command to reveal our virtual machine’s true identity. Once we have our IP address, it’s off to the races – or more accurately, off to the command line – to install Gentoo Linux on our virtual machine. So buckle up, grab your Haribo gummies, and get ready for a wild ride through the world of Gentoo Linux.

Having successfully obtained the IP address of our VMWare virtual machine (mine is 192.168.84.129), the next step is to change the root password in order to facilitate an SSH connection. By taking this necessary step, we can ensure a secure and seamless connection to our virtual machine, allowing us to complete the Gentoo installation with ease. To change the root password, simply enter the command ‘passwd‘ and then input your desired password twice for confirmation.

Are you ready to rock and roll? Excellent, because it’s time to establish an SSH connection to your newly minted virtual machine. Using your preferred terminal or console software, simply enter the following command: 

				
					ssh root@your-vmware-ip-address
				
			

If you receive a warning about the connection, don’t panic – just type ‘yes’ and carry on like the brave virtualization warrior you are.

Now it’s time to put your password where your keyboard is – enter your newly changed root password and prepare to enter a world of Gentoo installation bliss. So sit back, relax, and let the magic of SSH guide you to virtualization greatness. And if all else fails, just remember the timeless words of our forefathers: “keep calm and carry on installing Gentoo”.

The next step in our Gentoo installation journey is to partition our hard disk. To do this, simply enter the command:

				
					cfdisk /dev/sda
				
			

in your terminal or console software of choice. For the purposes of this tutorial, we will be allocating 256MB for the EFI System, 16GB for swap, and the remainder of the space for the Linux Filesystem. By following these partitioning guidelines, we can ensure a stable and efficient installation of Gentoo Linux on our virtual machine.

Ah, thank you for the reminder! Before we can proceed with partitioning our hard disk, it’s important to select the appropriate filesystem – in this case, the GPT filesystem. By taking this crucial step, we can ensure that our partitioning process goes smoothly and that our Gentoo installation is optimized for performance and stability.

Once you have successfully completed the partitioning process, be sure to select the ‘write’ option and confirm by typing ‘yes’. This will save your partition changes and allow you to move forward with the installation process. Once you’ve done that, simply select ‘quit’ and get ready to take the next step towards Gentoo greatness!

Hold onto your keyboards, folks – it’s time to copy and paste some code! Fear not, for I shall guide you through this process with the grace and poise of a seasoned installation guru. Simply follow my lead and copy-paste the provided commands, and I shall reveal their mysterious purpose at the end of this thrilling ride. So buckle up, my virtualization warriors, and get ready for a wild ride of Gentoo installation wizardry!

				
					mkfs.vfat -F 32 /dev/sda1
mkswap /dev/sda2
swapon /dev/sda2
mkfs.ext4 /dev/sda3
mount /dev/sda3 /mnt/gentoo
mkdir /mnt/gentoo/boot
mount /dev/sda1 /mnt/gentoo/boot
				
			

Ah, the moment of truth has arrived! Let me explain the purpose of each of these commands so that you can understand the magic happening behind the scenes:

  • “mkfs.vfat -F 32 /dev/sda1” – This command is used to format the first partition of our hard disk in the FAT32 filesystem format, which is necessary for EFI boot.

  • “mkswap /dev/sda2” – This command creates a swap partition on the second partition of our hard disk, which is used for virtual memory management.

  • “swapon /dev/sda2” – This command activates the swap partition we just created, allowing our system to use it for virtual memory.

  • “mkfs.ext4 /dev/sda3” – This command formats the third partition of our hard disk in the ext4 filesystem format, which is commonly used for Linux Filesystems.

  • “mount /dev/sda3 /mnt/gentoo” – This command mounts the third partition of our hard disk on the /mnt/gentoo directory, allowing us to access it and make necessary modifications.

  • “mkdir /mnt/gentoo/boot” – This command creates a new directory called “boot” within our /mnt/gentoo directory, which we will use to store our boot files.

  • “mount /dev/sda1 /mnt/gentoo/boot” – Finally, this command mounts the first partition of our hard disk on the newly created /mnt/gentoo/boot directory, allowing us to access our boot files and complete the installation process.

And there you have it, my friends – a step-by-step guide to understanding the purpose of each of these mysterious commands. Now, let us press on and conquer the installation of Gentoo Linux!

Display the current date and time by entering the following command:

				
					time
				
			

Synchronize the system clock with an internet time server using the following command:

				
					ntpd -q -g
				
			

Change to the Gentoo installation directory by entering the following command:

				
					cd /mnt/gentoo
				
			

Use the “links” command to browse to the Gentoo downloads page by entering the following command:

				
					links www.gentoo.org/downloads
				
			

Download the stage3 tarball by clicking on the appropriate link on the Gentoo downloads page. I opted for the ‘Stage 3 desktop profile | openrc’ since I plan to use KDE. To exit Links, simply press Alt+Esc.

Extract the stage3 tarball using the following command:

				
					tar xpvf stage3*.tar.xz --xattrs-include='.' --numeric-owner
				
			

Open the make.conf file for editing using the following command:

				
					nano -w /mnt/gentoo/etc/portage/make.conf
				
			

Modify the make.conf file to include any necessary changes for your system, such as adding USE flags or setting the MAKEOPTS variable. Here’s my make.conf file for reference.

				
					# These settings are mandatory
CHOST="x86_64-pc-linux-gnu"
CFLAGS="-march=native -O2 -pipe"
CXXFLAGS="${CFLAGS}"

# These settings are optional but may improve performance
MAKEOPTS="-j4"
VIDEO_CARDS="vmware"
INPUT_DEVICES="evdev"
L10N="en-US"

# These settings are optional but may be required for certain software
USE="X opengl alsa dbus ffmpeg gstreamer -kde -gnome -gtk -qt -bluetooth"

# These settings are optional and can be customized to your preferences
PORTAGE_NICENESS="15"
PORTAGE_TMPDIR="/var/tmp"
PORTDIR="/usr/portage"
DISTDIR="/usr/portage/distfiles"
PKGDIR="/usr/portage/packages"

# These settings are for virtual machines with limited resources
FEATURES="cgroup compress-build-logs parallel-fetch"

				
			

Here is what each setting means:

  • CHOST: This specifies the CPU architecture for which the system is built. x86_64-pc-linux-gnu is suitable for most modern machines.
  • CFLAGS and CXXFLAGS: These specify the compiler optimization flags. -march=native will optimize for your specific CPU architecture, while -O2 will optimize for speed. -pipe enables parallel compilation, which can speed up the compilation process.
  • MAKEOPTS is set to “-j4”, which tells Portage to use 4 cores for parallel compilation.
  • VIDEO_CARDS: This specifies the video driver to use. vmware is suitable for running Gentoo in VMware.
  • INPUT_DEVICES: This specifies the input driver to use. evdev is a generic input driver that should work for most setups.
  • L10N: This specifies the system language. en-US is the English (US) locale.
  • USE: This specifies the software features to enable or disable. The example given enables X (the X Window System), audio (alsa), video (ffmpeg and gstreamer), and disables desktop environments (kde, gnome, gtk, qt), and bluetooth.
  • PORTAGE_NICENESS: This specifies the priority of compilation jobs. A lower number means higher priority.
  • PORTAGE_TMPDIR: This specifies the directory for temporary files during compilation.
  • PORTDIR: This specifies the location of the Portage tree, which contains the Gentoo package repository.
  • DISTDIR: This specifies the location of the downloaded source code files.
  • PKGDIR: This specifies the location to store built packages.
  • FEATURES enables some features that may help with building packages on a VM with limited resources. cgroup enables resource limiting and accounting, compress-build-logs compresses the build logs to save disk space, and parallel-fetch downloads source files in parallel.

You can customize these settings further based on your specific needs and preferences. Remember to save the file as /etc/portage/make.conf once you have made the necessary changes.

				
					mirrorselect -i -o >> /mnt/gentoo/etc/portage/make.conf
mkdir --parents /mnt/gentoo/etc/portage/repos.conf
cp /mnt/gentoo/usr/share/portage/config/repos.conf /mnt/gentoo/etc/portage/repos.conf/gentoo.conf
cp --dereference /etc/resolv.conf /mnt/gentoo/etc
				
			

Alrighty then, let’s break down these commands in a way that even your grandma would understand.

Firstly, we’ll use ‘mirrorselect’ command to select the best mirror for downloading packages and add it to the ‘make.conf’ file. This is to ensure that you download packages faster than a cheetah chasing its prey. (press * to mark your choices, and press Enter to write it)

Next up, we’ll be creating a directory named ‘repos.conf’ in the ‘/etc/portage’ folder and copying Gentoo’s repository configuration file to it. This is to ensure that our system can download and install packages from the Gentoo repository.

Lastly, we’ll be copying the ‘resolv.conf’ file to the ‘/etc’ folder of our Gentoo installation. This file contains information about the DNS servers that our system should use to resolve domain names into IP addresses.

So there you have it! With these commands, you’ll be able to select the best mirror for downloading packages, configure Gentoo’s repository settings, and ensure that your system can resolve domain names into IP addresses. All set to roll!

				
					mount --types proc /proc /mnt/gentoo/proc
mount --rbind /sys /mnt/gentoo/sys
mount --make-rslave /mnt/gentoo/sys
mount --rbind /dev /mnt/gentoo/dev
mount --make-rslave /mnt/gentoo/dev
mount --bind /run /mnt/gentoo/run
mount --make-rslave /mnt/gentoo/run
				
			

Alright, hold on tight because we’re about to go on a wild ride! We need to mount some crucial directories into our Gentoo system before we can continue. First, we’re mounting the proc filesystem using the mount command with the --types proc option, then specifying where we want to mount it (/mnt/gentoo/proc).

Next up, we’re mounting the sys filesystem using mount again, but this time we’re using the --rbind option which will make a mirror of the /sys directory in our Gentoo system. We’re also using --make-rslave option which will make the mount point a “slave” of the original mount point, which basically means that any changes made to the original mount point will propagate to the slave mount point. We’re doing the same thing with the dev filesystem.

Lastly, we’re mounting the run directory with --bind and --make-rslave options, which basically creates a new mount point that is connected to an existing mount point. In this case, we’re connecting the /run directory on the host system to the /mnt/gentoo/run directory in our Gentoo system. This is necessary because Gentoo expects certain files to exist in the /run directory.

Phew, that was a lot of mounting, but now our Gentoo system should have access to all the important directories it needs to function properly.

				
					chroot /mnt/gentoo /bin/bash
source /etc/profile
export PS1="(chroot) ${PS1}"
				
			
  • chroot /mnt/gentoo /bin/bash: This command changes the root directory of your terminal session to /mnt/gentoo, effectively making it think that the Gentoo installation on your hard drive is the entire file system. Think of it like entering a virtual Gentoo world where your computer is the server and you’re the root user. Don’t worry, though, you can always return to the real world with a simple exit command.

  • source /etc/profile: This command loads the system-wide shell configuration files and sets up some useful environment variables. It’s like inviting your friends over to a party and making sure they have drinks and snacks to enjoy.

  • export PS1="(chroot) ${PS1}": This command sets the command prompt of your terminal to indicate that you’re in a chroot environment. Your prompt will now say “(chroot)” before the usual prompt text. It’s like wearing a badge that says “I’m in a chroot environment, don’t mess with me!”

				
					emerge-webrsync
emerge --sync 
eselect news list
eselect news read 
eselect news purge
eselect profile list
eselect profile set n
				
			

First up, emerge-webrsync. This command allows you to download a new snapshot of the Gentoo Portage tree using the web. It’s perfect if you want to keep your Portage tree up-to-date, without having to do a full emerge --sync every time.

Next, we have emerge --sync. This command is similar to emerge-webrsync, but it downloads the Portage tree using rsync instead of the web. It’s faster and more reliable, but it requires that you have rsync installed.

Now, let’s talk about eselect news list, eselect news read, and eselect news purge. These commands allow you to manage Gentoo’s news system, which provides important updates and announcements to users. You can list all available news items, mark them as read, or delete them entirely.

Lastly, we have eselect profile list and eselect profile set. These commands allow you to manage Gentoo’s profiles, which define the set of USE flags and other configuration options that are used by default for different types of systems. You can list available profiles and select the one that’s best for your system. I opted for the “desktop plasma” profile as I intended to install KDE.

				
					emerge --ask --verbose --update --deep --newuse @world
nano -w /etc/portage/make.conf
//ADD FOLLOWING LINE
ACCEPT_LICENSE="*"
//EXIT
				
			

The first command, “emerge –ask –verbose –update –deep –newuse @world”, is basically telling the computer to go on a wild goose chase and update every single package it can find. It’s like telling your mom to clean the entire house, including the hidden corners she forgot about. (tips: press Enter if you see something about merge)

The next command, “nano -w /etc/portage/make.conf”, opens up a file in the nano text editor. It’s like opening a blank page and telling your mom to write down her recipe for her famous lasagna.

The line “ACCEPT_LICENSE=”*” ” in the file is basically telling the computer to accept every software license agreement it encounters. It’s like telling your mom to sign every contract without reading it.

				
					ls /usr/share/zoneinfo/
echo "Europe/Berlin" > /etc/timezone
emerge --config sys-libs/timezone-data
				
			

Ah, it’s time for some time zone configuration! First, let’s take a peek at the available time zones with a classic “ls” command in the “/usr/share/zoneinfo/” directory. After some browsing, I think I’ll set my time zone to “Europe/Berlin”. Now, let’s update the “/etc/timezone” file with this newly selected time zone by echoing the value into the file. Lastly, we’ll configure the time zone by running the “emerge –config sys-libs/timezone-data” command. Time waits for no one, so let’s get this sorted!

				
					nano -w /etc/locale.gen
//UNCOMMENT THESE 2 LINES
en_US ISO-8859-1
en_US.UTF-8 UTF-8
//EXIT
locale-gen
eselect locale list
eselect locale set n
env-update && source /etc/profile && export PS1="(chroot)${PS1}"
				
			

Alright, folks, it’s time to get your locale game on! We’re going to open up the /etc/locale.gen file using nano and then uncomment two lines: en_US ISO-8859-1 and en_US.UTF-8 UTF-8. Once that’s done, we’ll generate the locales using locale-gen.

After that, it’s time to use eselect to list the available locales and set the one we want. Take your pick, folks!

Finally, we’ll update our environment variables and get our prompt looking nice and pretty again using env-update && source /etc/profile && export PS1="(chroot)${PS1}". Your chroot environment is now officially international!

				
					emerge --ask sys-kernel/linux-firmware
emerge --ask sys-kernel/gentoo-sources
eselect kernel list
eselect kernel set n
emerge --ask sys-kernel/genkernel
nano -w /etc/fstab
//ADD THIS LINE
/dev/sda1 /boot vfat defaults 0 2
//EXIT
genkernel all
ls /boot/vmlinu* /boot/initramfs*
				
			

First, we’re installing some necessary kernel firmware and sources with emerge. The Gentoo kernel sources are like the brain of the system, and the firmware is like the muscle that makes everything work.

Then, we use eselect to list the available kernels and set the default one. It’s like choosing which car to drive, but with more code and less horsepower.

Next, we install genkernel, a tool that will help us generate the kernel and initramfs image. Think of it like a chef’s knife that slices and dices the kernel ingredients into a delicious bootable soup.

After that, we use nano to edit the /etc/fstab file, which tells the system where to mount the file systems. We add a line that tells the system to mount the /boot partition at startup. It’s like telling your GPS where to park the car.

Finally, we use genkernel again to build the kernel and initramfs images. These are the files that actually boot the system, so it’s like building the launchpad for a rocket. (Get ready to buckle up because this step may take a significant amount of time, so be patient.) And, just to make sure everything is working, we use ls to check that the images are in the right place.

				
					nano -w /etc/fstab
//ADD FOLLOWING LINES
/dev/sda1    /boot   vfat  defaults,noatime 0 2
/dev/sda2    none    swap  sw   0 0
/dev/sda3    /        ext4 defaults,noatime 0 2
				
			

First, we use the nano text editor to modify the /etc/fstab file, which stands for “file systems table”. This file contains information about the partitions and file systems that are mounted at boot time. It’s like a guest list for your party, but for your hard drive.

The lines that we add to this file specify which partitions to mount and where to mount them. The first line tells the system to mount the /dev/sda1 partition (which we formatted as FAT32 and mounted at /boot) with the vfat file system type, and with the noatime option to skip updating the access time on files to reduce wear on the drive.

The second line tells the system that /dev/sda2 is a swap partition, which means that it’s used as a temporary storage area when the system runs out of RAM. We set the type to none and the options to sw.

Finally, the third line specifies that the root file system is located on /dev/sda3 and that it should be mounted with the ext4 file system type and with the noatime option. This is like telling the system where to find the food and drinks for the party.

Once we’ve made these changes and saved the file, our system will know how to boot up and where to find everything it needs to get started.

				
					nano -w /etc/conf.d/hostname
//CHANGE YOUR HOSTNAME
hostname="ashenray"
//EXIT
emerge --ask net-misc/dhcpcd
rc-update add dhcpcd default
emerge --ask --noreplace net-misc/netifrc
				
			

First up, we have emerge --ask net-misc/dhcpcd. This command tells Gentoo’s package manager, Portage, to install the dhcpcd package, which provides DHCP client functionality. In other words, it helps your Gentoo system automatically configure its network settings when it connects to a network. So, if you want to avoid manually configuring your network every time you connect to a new network, dhcpcd is your friend!

Next, we have rc-update add dhcpcd default. This command adds the dhcpcd service to Gentoo’s default runlevel, meaning it will automatically start when you boot your system. This is important, because you’ll want dhcpcd to be up and running in order to automatically configure your network settings.

Finally, we have emerge --ask --noreplace net-misc/netifrc. This command tells Portage to install the netifrc package. netifrc provides scripts that help Gentoo manage network interfaces, such as Ethernet or Wi-Fi interfaces. It’s important to note the --noreplace option here, which tells Portage not to replace any existing netifrc files with the new ones from the package. This can help prevent any conflicts with existing network configuration files.

So, with these commands, we’ve installed dhcpcd to help us automatically configure our network settings, added it to the default runlevel, and installed netifrc to help us manage our network interfaces. All in all, these steps should make it much easier to get your Gentoo system up and running on the network!

				
					nano /etc/security/passwdqc.conf
//EDIT FOLLOWING LINE
min=1,1,1,1,1
//EXIT
passwd
				
			

nano /etc/security/passwdqc.conf: This command opens up the passwdqc.conf file in a text editor called nano. passwdqc is a password strength checking and policy enforcement tool, so this file contains various settings related to password requirements. 

min=1,1,1,1,1: This is the line we’re editing, and it specifies the minimum length requirements for passwords. The five values separated by commas represent the minimum number of characters required for different types of characters (i.e. lowercase letters, uppercase letters, digits, symbols, and “other” characters).

passwd: This command prompts you to change your (for now, it’s root) password. The new password must meet the requirements specified in passwdqc.conf, which is why we just edited that file!

Alright, let’s dive into the juicy stuff! To enable root login on SSH, we first need to access the SSH daemon configuration file. To do this, we’ll bust out the trusty nano text editor with the command nano /etc/ssh/sshd_config. Once we’re in, we need to find the line that reads #PermitRootLogin prohibit-password and remove that pesky # to uncomment it. Then, we’ll modify the value to PermitRootLogin yes, giving root the keys to the SSH kingdom. Finally, we’ll save my changes (because we’re not monsters) and exit nano. With that, root will be able to log in remotely via SSH like a boss.

				
					emerge --ask app-admin/sysklogd
rc-update add sysklogd default
emerge --ask sys-process/cronie
rc-update add cronie default
emerge --ask sys-apps/mlocate
rc-update add sshd default
				
			

Ah, the joys of system administration! Let’s break down these commands one by one:

  • emerge --ask app-admin/sysklogd: This command installs the sysklogd package, which provides a system logger. You’ll want to keep track of what’s happening on your system, and the logger will help you do just that!
  • rc-update add sysklogd default: This command adds sysklogd to the default runlevel, so it will start automatically when your system boots up. No need to remember to start it manually!
  • emerge --ask sys-process/cronie: This command installs the cronie package, which provides a cron daemon. You can use this to schedule tasks to run at specific times or intervals.
  • rc-update add cronie default: This command adds cronie to the default runlevel, just like we did with sysklogd.
  • emerge --ask sys-apps/mlocate: This command installs the mlocate package, which provides a fast file search utility. This can come in handy when you’re trying to find specific files on your system.
  • rc-update add sshd default: This command adds the SSH daemon (sshd) to the default runlevel, so it will start automatically when your system boots up. This way, you’ll be able to log in remotely to your Gentoo system.
				
					echo 'GRUB_PLATFORMS="efi-64"' >> /etc/portage/make.conf
emerge --ask --verbose sys-boot/grub
mount -o remount,rw /sys/firmware/efi/efivars
grub-install --target=x86_64-efi --efi-directory=/boot/ --bootloader-id="Gentoo Linux [GRUB]" --recheck /dev/sda
grub-mkconfig -o /boot/grub/grub.cfg
				
			

Ah, let’s take a closer look at these commands!

First up, we have echo 'GRUB_PLATFORMS="efi-64"' >> /etc/portage/make.conf. This command appends a line to the make.conf file to specify that we want to use the EFI-64 platform for GRUB. This will come in handy when we install the bootloader.

Next, we have emerge --ask --verbose sys-boot/grub. This command installs the GRUB bootloader on our Gentoo system. It’s always important to have a reliable bootloader, so we can boot up our system with confidence.

After that, we have mount -o remount,rw /sys/firmware/efi/efivars. This command remounts the EFI variables filesystem with write permissions. This is necessary for the next command to work properly. Well, well, well, looks like we’ve hit a bit of a roadblock. If you didn’t set your firmware to EFI, unfortunately, you’re going to have to put a pin in this process for now. But don’t worry, we’ll get you sorted out in no time! So, let’s take a step back and try again from the start, this time with EFI firmware enabled. Good luck, and don’t let this setback get you down!

Next up is grub-install --target=x86_64-efi --efi-directory=/boot/ --bootloader-id="Gentoo Linux [GRUB]" --recheck /dev/sda. This command installs GRUB on our system, targeting the x86_64-efi platform and using the /boot/ directory as the EFI system partition. We also give our GRUB bootloader a custom name, “Gentoo Linux [GRUB]”, to make it easier to identify. Finally, we run the recheck option to make sure everything is set up properly.

Last but not least, we have grub-mkconfig -o /boot/grub/grub.cfg. This command generates the GRUB configuration file, grub.cfg, which tells GRUB where to find our operating system and how to boot it. This is an important step, so we can actually boot up our system with GRUB.

And there you have it! With these commands, we can successfully install and configure the GRUB bootloader on our Gentoo system.

				
					blkid
nano /etc/fstab
//replace your /dev/sda* with blkid that you have
//below is my fstab
UUID=02a31a2a-3dd6-44a4-bc70-3d9e2ad4e2ed none            swap    sw              0 0
UUID=c05015a6-880a-4179-9f48-90386ea7de15 /               ext4    defaults        0 1
UUID=9688-2EF8                                /boot/efi      vfat    defaults        0 2

				
			

When it comes to identifying storage devices, using UUIDs (Universally Unique Identifiers) is like giving them a fancy name tag that says, “Hello, my name is Unique and I’m one-of-a-kind!” Whereas using /dev/sd* is like calling a person by their social security number – functional, but not very friendly.

The beauty of UUIDs is that they’re unique across different operating systems and hardware configurations. So, if you’re swapping hard drives or moving files around, using UUIDs helps ensure that your system can still find the right device, even if it’s not labeled the same way.

On the other hand, if you rely on /dev/sd* naming, you could end up in a confusing mess of “which drive is which?” Especially if you accidentally swap the cables around, or if a drive fails and gets replaced. So, it’s always better to be safe than sorry and use UUIDs in your fstab file.

				
					exit
cd
umount -l /mnt/gentoo/dev/{/shm,/pts,}
umount -R /mnt/gentoo
reboot
				
			

Ah, the sweet sound of a fresh installation of Gentoo! But before you can enjoy your newly installed system, there are a few things you need to do. First up, we need to change directory to the root directory by running the command cd.

Now, it’s time to unmount some stuff! Specifically, we need to unmount the Gentoo installation’s /dev/shm, /dev/pts, and /dev directories. We can do this using the command umount -l /mnt/gentoo/dev/{/shm,/pts,}.

But wait, we’re not done yet! We need to unmount the Gentoo installation’s root directory and all its subdirectories. We can do this with the command umount -R /mnt/gentoo.

Finally, it’s time to bid farewell to our installation media and reboot our system. Just run the command reboot and watch as your Gentoo system springs to life!

Ladies and gentlemen, we have successfully brought Gentoo to life! However, it’s time to hit pause on this tutorial and take a breather before diving into the next one. We’re about to embark on a long and treacherous journey to install the KDE Plasma desktop, so I’m splitting this tutorial into two parts to spare us all some pain and suffering. Rest up and I’ll see you on the flip side when I’m ready to tackle the beast that is KDE.

The next tutorial on how to install KDE on Gentoo is available here.

error: Alert: Content selection is disabled!!