Skip to content

Instantly share code, notes, and snippets.

@pakdev
Last active August 12, 2018 04:24
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save pakdev/a8c86a3f0fd3b777ae20ee08ea36a913 to your computer and use it in GitHub Desktop.
Save pakdev/a8c86a3f0fd3b777ae20ee08ea36a913 to your computer and use it in GitHub Desktop.
Gentoo install XPS 8500

Disk Preparation

  1. Determine disk name # lsblk

  2. Launch parted # parted -a optimal /dev/sda

  3. Erase everything mklabel gpt

  4. 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
  1. Create filesystems
# mkfs.fat -F 32 /dev/sda1
# mkfs.ext4 /dev/sda3
# mkswap /dev/sda2
# swapon /dev/sda2
  1. Mount root partition
# mkdir -p /mnt/gentoo
# mount /dev/sda3 /mnt/gentoo
# cd /mnt/gentoo

Installing Stage 3

  1. Check that date is correct. See here if it's wrong. # date

  2. Download tarball a. Find download link from: https://www.gentoo.org/downloads b. # wget <url>

  3. Validate tarball

# wget <url>.DIGESTS
# openssl dgst -r -sha512 stage3-.tar.xz

Ensure a pair of the numbers above match

  1. Unpack # tar xpf stage3-.tar.xz --xattrs-include='*.*' --numeric-owner

  2. 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"

Installing the Gentoo base system

  1. 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/"

  1. 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
  1. 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/
  1. Enter the new environment
# chroot /mnt/gentoo /bin/bash
# source /etc/profile
# export PS1="(chroot) ${PS1}"
  1. Mount boot # mount /dev/sda1 /boot/

  2. Update the ebuild repo # emerge --sync

  3. Select the right profile [16] default/linux/amd64/17.0/desktop (stable)

# eselect profile list
# eselect profile set 16
  1. Update the @world set # emerge -auvDN @world

Configure the base system

  1. Set the timezone
# echo "America/Chicago" > /etc/timezone"
# emerge --config sys-libs/timezone-data
  1. 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
  1. Reload the environment
# env-update && source /etc/profile && export PS1="(chroot) $PS1"

Install the kernel

  1. Grab the sources # emerge -av sys-kernel/gentoo-sources

  2. [Optional] Install hardware detection tool # emerge -av sys-apps/pciutils

  3. Get genkernel # emerge -av sys-kernel/genkernel

  4. Modify fstab so that the boot partition is mounted # nano -w /etc/fstab

Make its contents be: /dev/sdd1 /boot vfat defaults 0 2

  1. Install the genkernel # genkernel all

  2. [Optional] Install 3rd party firmware # emerge --ask sys-kernel/linux-firmware

  3. 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

Configure the system

  1. Set hostname # nano -w /etc/conf.d/hostname

  2. Specify dhcp # nano -w /etc/conf.d/net

  3. Set networking to automatically start at boot

# cd /etc/init.d
# ln -s net.lo net.enp4s0
# rc-update add net.enp4s0 default
  1. Update hosts file # nano -w /etc/hosts

  2. Set the root password # passwd

  3. Make OpenRC log # nano -w /etc/rc.conf

Change rc_logger="NO" to rc_logger="YES"

Install tools

  1. System logger
# emerge -av app-admin/metalog
# rc-update add metalog default
  1. Cron daemon
# emerge -av sys-process/fcron
# rc-update add fcron default
# crontab /etc/crontab
  1. File indexing # emerge -av sys-apps/mlocate

  2. Enable remote access # rc-update add sshd default

  3. Filesystem tools

# emerge -av sys-fs/e2fsprogs
# emerge -av sys-fs/dosfstools
  1. DHCP client # emerge -av net-misc/dhcpcd

Install Bootloader

  1. Install grub # emerge -av sys-boot/grub:2

  2. Install EFI

# grub-install --target=x86_64-efi --efi-directory=/boot
# grub-install --target=x86_64-efi --efi-directory=/boot --removable
  1. Create configuration # grub-mkconfig -o /boot/grub/grub.cfg

Reboot!

# exit
# cd
# umount -l /mnt/gentoo/dev{/shm,/pts,}
# umount -R /mnt/gentoo 
# reboot
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment