-
Determine disk name
# lsblk
-
Launch parted
# parted -a optimal /dev/sda
-
Erase everything
mklabel gpt
-
Make partitions
unit mib
mkpart primary 1 129
name 1 boot
mkpart primary 129 4225
name 2 swap
mkpart primary 4225 -1
name 3 rootfs
set 1 boot on
print
- Create filesystems
# mkfs.fat -F 32 /dev/sda1
# mkfs.ext4 /dev/sda3
# mkswap /dev/sda2
# swapon /dev/sda2
- Mount root partition
# mkdir -p /mnt/gentoo
# mount /dev/sda3 /mnt/gentoo
# cd /mnt/gentoo
-
Check that date is correct. See here if it's wrong.
# date
-
Download tarball a. Find download link from: https://www.gentoo.org/downloads b.
# wget <url>
-
Validate tarball
# wget <url>.DIGESTS
# openssl dgst -r -sha512 stage3-.tar.xz
Ensure a pair of the numbers above match
-
Unpack
# tar xpf stage3-.tar.xz --xattrs-include='*.*' --numeric-owner
-
Configure options
# nano -w /mnt/gentoo/etc/portage/make.conf
For XPS 8500, add the following:
CHOST="x86_64-pc-linux-gnu"
CFLAGS="-march=native"
CFLAGS="${CFLAGS} -O2 -pipe"
CXXFLAGS="${CFLAGS}"
MAKEOPTS="-j8"
INPUT_DEVICES="evdev"
VIDEO_CARDS="nvidia"
USE="X bluetooth dbus pulseaudio savedconfig xinerama zsh-completion"
PYTHON_TARGETS="python2_7 python3_6"
PYTHON_SINGLE_TARGET="python3_6"
GRUB_PLATFORMS="efi-64"
- Add mirrors
# mirrorselect -i -o >> /mnt/gentoo/etc/portage/make.conf
or, if mirrorselect isn't available, add this to the bottom of /etc/portage/make.conf:
GENTOO_MIRRORS="http://lug.mtu.edu/gentoo/ http://mirrors.evowise.com/gentoo/"
- Repo config
# mkdir -p /mnt/gentoo/etc/portage/repos.conf
# cp /mnt/gentoo/usr/share/portage/config/repos.conf /mnt/gentoo/etc/portage/repos.conf/gentoo.conf
- Copy DNS info
# cp --dereference /etc/resolv.conf /mnt/gentoo/etc/
4 Mount filesystems
# mount --types proc /proc /mnt/gentoo/proc/
# mount --rbind /sys /mnt/gentoo/sys/
# mount --rbind /dev /mnt/gentoo/dev/
# test -L /dev/shm/ && rm /dev/shm/ && mkdir /dev/shm/
# mount --types tmpfs --options nosuid,nodev,noexec shm /dev/shm
# chmod 1777 /dev/shm/
- Enter the new environment
# chroot /mnt/gentoo /bin/bash
# source /etc/profile
# export PS1="(chroot) ${PS1}"
-
Mount boot
# mount /dev/sda1 /boot/
-
Update the ebuild repo
# emerge --sync
-
Select the right profile [16] default/linux/amd64/17.0/desktop (stable)
# eselect profile list
# eselect profile set 16
- Update the @world set
# emerge -auvDN @world
- Set the timezone
# echo "America/Chicago" > /etc/timezone"
# emerge --config sys-libs/timezone-data
- Configure locales
# nano -w /etc/locale.gen
Enable: en_US ISO-8859-1 en_US.UTF-8 UTF-8
# locale-gen
# eselect locale list
# eselect locale set 5
- Reload the environment
# env-update && source /etc/profile && export PS1="(chroot) $PS1"
-
Grab the sources
# emerge -av sys-kernel/gentoo-sources
-
[Optional] Install hardware detection tool
# emerge -av sys-apps/pciutils
-
Get genkernel
# emerge -av sys-kernel/genkernel
-
Modify fstab so that the boot partition is mounted
# nano -w /etc/fstab
Make its contents be:
/dev/sdd1 /boot vfat defaults 0 2
-
Install the genkernel
# genkernel all
-
[Optional] Install 3rd party firmware
# emerge --ask sys-kernel/linux-firmware
-
Finish the fstab
# nano -w /etc/fstab
Make its contents now:
/dev/sdd1 /boot vfat defaults 0 2
/dev/sdd2 none swap sw 0 0
/dev/sdd3 / ext4 noatime,discard 0 1
-
Set hostname
# nano -w /etc/conf.d/hostname
-
Specify dhcp
# nano -w /etc/conf.d/net
-
Set networking to automatically start at boot
# cd /etc/init.d
# ln -s net.lo net.enp4s0
# rc-update add net.enp4s0 default
-
Update hosts file
# nano -w /etc/hosts
-
Set the root password
# passwd
-
Make OpenRC log
# nano -w /etc/rc.conf
Change rc_logger="NO"
to rc_logger="YES"
- System logger
# emerge -av app-admin/metalog
# rc-update add metalog default
- Cron daemon
# emerge -av sys-process/fcron
# rc-update add fcron default
# crontab /etc/crontab
-
File indexing
# emerge -av sys-apps/mlocate
-
Enable remote access
# rc-update add sshd default
-
Filesystem tools
# emerge -av sys-fs/e2fsprogs
# emerge -av sys-fs/dosfstools
- DHCP client
# emerge -av net-misc/dhcpcd
-
Install grub
# emerge -av sys-boot/grub:2
-
Install EFI
# grub-install --target=x86_64-efi --efi-directory=/boot
# grub-install --target=x86_64-efi --efi-directory=/boot --removable
- Create configuration
# grub-mkconfig -o /boot/grub/grub.cfg
Reboot!
# exit
# cd
# umount -l /mnt/gentoo/dev{/shm,/pts,}
# umount -R /mnt/gentoo
# reboot