
A quick and painless guide to installing Gentoo Linux from scratch using the Minimal ISO. This tutorial is for users who are ready to learn the terminal and install Gentoo on bare metal. No prior experience required.
- ⏲️ Prep Time: 15 minutes
- 💻 Install Time: 1–2 hours
- 🧠 Difficulty: Intermediate
Summary
This guide walks through downloading the Gentoo Minimal ISO, partitioning with cfdisk
, configuring make.conf
, and installing a functional base system with dwm
, st
, and NetworkManager
. We’ll use OpenRC, install a binary kernel, and avoid unnecessary bloat via custom USE flags.
Steps
1. Boot Into the Minimal ISO
- Download ISO from gentoo.org
- Boot the ISO and hit Enter at GRUB
- U.S. keymap is default
- Optional:
ping gentoo.org
to check Ethernet (or useiwctl
for Wi-Fi)
2. Partition the Disk
Use cfdisk /dev/sda
with GPT label:
Partition | Size | Mount Point |
---|---|---|
/dev/sda1 | 1G | /boot |
/dev/sda2 | 4G | swap |
/dev/sda3 | Rest | / |
Confirm with lsblk
3. Format Filesystems
Make the filesystems on the respective partitions as follows:
mkfs.ext4 /dev/sda3
mkfs.vfat -F32 /dev/sda1
mkswap /dev/sda2
swapon /dev/sda2
4. Mount & Download Stage Tarball
Let’s grab the tarbal using the minimal link
command here:
mkdir -p /mnt/gentoo
mount /dev/sda3 /mnt/gentoo
cd /mnt/gentoo
links https://www.gentoo.org/downloads/mirrors
Download and extract the stage3
OpenRC tarball:
tar xpvf stage3-*.tar.xz --xattrs-include='*.*' --numeric-owner
5. Configure make.conf
vim /mnt/gentoo/etc/portage/make.conf
Add:
MAKEOPTS="-j5"
USE="-systemd -kde -gnome -bluetooth"
Note: I’m using 5 here because I have 10gb of RAM and 5 CPU Threads. The Gentoo Handbook recommends a good choice is the smaller of: the number of threads the CPU has, or the total amount of system RAM divided by 2 GiB.
6. Prep Chroot
cp --dereference /etc/resolv.conf /mnt/gentoo/etc/
mount -t 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-slave /mnt/gentoo/run
chroot /mnt/gentoo /bin/bash
source /etc/profile
export PS1="(chroot) $PS1"
Tip: If you are using the minimal iso, you can just run
arch-chroot /mnt
and it will automatically mount all the above directories as needed.
7. Mount /boot
mount /dev/sda1 /boot
8. Sync Portage & Select Profile
emerge-webrsync
eselect profile list
eselect profile set <your-choice> # e.g. 21
emerge --sync --quiet
9. Install World Set
Once Portage is up to date, and you have selected a profile, you can update your world set. This will take the
longest time of the installation process, so feel free to grab a coffee while you wait for this.
emerge --ask --verbose --update --deep --changed-use @world
10. Timezone & Locale
ln -sf /usr/share/zoneinfo/America/Los_Angeles /etc/localtime
vim /etc/locale.gen # uncomment en_US.UTF-8
locale-gen
eselect locale list
eselect locale set 4
env-update && source /etc/profile
export PS1="(chroot) $PS1"
11. Firmware & Kernel
echo "sys-kernel/linux-firmware @BINARY-REDISTRIBUTABLE" >> /etc/portage/package.license
emerge -q sys-kernel/linux-firmware
emerge -q sys-kernel/installkernel
echo 'sys-kernel/installkernel dracut grub' > /etc/portage/package.use/installkernel
emerge -q sys-kernel/gentoo-kernel-bin
12. Filesystems & Hostname
vim /etc/fstab # use /dev/sdaX or LABEL
vim /etc/conf.d/hostname # e.g. gentoo-btw
vim /etc/hosts # 127.0.1.1 gentoo-btw
13. Networking
emerge -q dhcpcd netifrc
vim /etc/conf.d/net
# Add:
config_enp0s3="dhcp"
cd /etc/init.d
ln -s net.lo net.enp0s3
rc-update add net.enp0s3 default
14. Root & User Accounts
passwd
useradd -m -G users,wheel,audio,video -s /bin/bash tony
passwd tony
emerge -q sudo
EDITOR=vim visudo # uncomment %wheel ALL=(ALL) ALL
15. Install Grub (UEFI)
echo 'GRUB_PLATFORMS="efi-64"' >> /etc/portage/make.conf
emerge -q sys-boot/grub efibootmgr
mount -t efivarfs efivarfs /sys/firmware/efi/efivars
grub-install --efi-directory=/boot
grub-mkconfig -o /boot/grub/grub.cfg
16. Final Steps
exit
umount -R /mnt/gentoo
reboot
17. First Boot & GUI
Login, then:
touch ~/.xinitrc
echo "exec dwm" > ~/.xinitrc
emerge -q xorg-server xrandr xinit xf86-video-vesa
emerge -q dwm st
emerge -q dbus networkmanager
rc-update add NetworkManager default
Then run:
startx
Post Install Tips
- Install
neofetch
,vim
,git
, etc. - Explore customizing
dwm
or switching to another WM. - Don’t forget to configure audio, user dotfiles, and input methods as needed.
Congratulations. You’re now running Gentoo, by the way.