gentoo second install x86 btrfs debian

Now that my Gentoo Phase 2 has been put on hold for the near future, I have to satisfy this itch to install gentoo on my main laptop. Having it on my primary rig, would allow me to use it more often than pulling out my backup system.

My blind first attempt, at a gentoo install, gave me a lot of confidence in the gentoo community. This second attempt substantially lessens the time/aggro I spent previously installing gentoo.

I significantly pruned the install path from my previous gentoo install process, removing many distractions. I could have just copied over those btrfs subvolumes, but I wanted to start clean.

Beware if you systemd, don't just blindly follow this.

Install Environment

This time I start from my running debian. I have a working environment, networking and x-browser. No faffing about with any install disks etc. And I can continue working without downtime, while gentoo/emerge is crunching cpu/disk.

You may follow this, installing from your own distro.


I like btrfs - cow, subvolumes, snapshots, send/receive. I have subvolumes for each os. I create new ones for this gentoo install, and use a few other existing ones.

# mount -L os /media/os
# btrfs subvolume create /media/os/@gentoo32
# btrfs subvolume create /media/os/@portage

The gentoo handbook refers to /mnt/gentoo. So we mount our subvolumes there.

# mkdir -p /mnt/gentoo
# mount -L os -o defaults,relatime,compress=lzo,subvol=@gentoo32 /mnt/gentoo/

I will use other subvolumes after this install completes to my satisfaction, as I don't want any accidents. This also keeps it simple & straightforward, with everything on one subvolume.


Download, verify & extract latest gentoo stage3. I use /tmp as working directory, as we won't need those files later.

$ cd /tmp
$ wget{yyyymmdd}.tar.bz2
$ wget{yyyymmdd}.tar.bz2.DIGESTS
$ sha512sum -c stage3-*.tar.bz2.DIGESTS
# tar --numeric-owner --xattrs -xvapf stage3-*.tar.bz2 -C /mnt/gentoo/

I downloaded a 228M file, which extracted 860M. So be patient..


mount required psuedo filesystems
# mount -o bind /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 --rbind /run/shm /mnt/gentoo/run/shm

Anything outside chroot will be inaccessible.

# cp -L /etc/resolv.conf /mnt/gentoo/etc/

Enter the chroot

# chroot /mnt/gentoo /bin/bash
# source /etc/profile
# export PS1="(chroot) $PS1"

my favourite editor :-)
# ln -s /bin/busybox /usr/local/bin/vi

ref: gentoo portage

Do yourself a favour, and ignore everything the handbook says about portage.. for now!
Learning everything about portage is really really useful, but not during installation. Particularly, if you are a gentoo newbie.

Install the latest portage snapshot, with all the above settings.
emerge-webrsync -q

/usr/portage is created during this first run. Ignore all those warnings..

This will take time.. be patient ;)


$ man news.eselect
$ eselect news list
$ eselect news read [number]

Action the relevant news items. Do your own research though. I got news items too old, and although relevant, not completely correct either.


$ ls /usr/share/zoneinfo
# echo "Europe/London" >/etc/timezone
# ln -sf /usr/share/zoneinfo/Europe/London /etc/localtime


$ cat /etc/locale.gen
en_GB.UTF-8 UTF-8

Each locale should be on a separate line. Atleast one should be UTF-8.

# locale-gen
$ locale -a
$ eselect locale list
# eselect locale set {number}

$ cat /etc/env.d/02locale

Reload environment, after changes.
$ env-update && source /etc/profile && export PS1="(chroot)$PS1"


No kernel is installed. We make our own.
ref: gentoo kernel

I moved the kernel section up ahead this time. While the kernel compiles, we continue the rest of the install..
on another terminal :) Enter chroot, and reload environment.


$ cat /etc/fstab


Gentoo utils are best in class. I use netifrc. Busybox udhcpc automatically for all configured interfaces.

My wireless card wasn't detected without lspci.
$ emerge --search pciutils
# emerge --ask sys-apps/pciutils

Configure interfaces
# ln -s /etc/conf.d/net.{lo,wlp3s0}

I need iw and wpa_supplicant.
ref: wpa_supplicant
# emerge --ask net-wireless/{wpa_supplicant,iw}

# vi /etc/wpa_supplicant/wpa_supplicant.conf
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=wheel

# wpa-passphrase {ssid} {password} >>/etc/wpa_supplicant/wpa_supplicant.conf

# vi /etc/conf.d/hostname

# vi /etc/hosts localhost.localdomain localhost {hostname}

# vi /etc/conf.d/keymaps

root passwd
# passwd


No bootloaders to be installed in this instance, as I use an existing one and add another entry in wheezy's /etc/grub.d/

menuentry "@gentoo32/vmlinuz" {
  set gfxpayload=auto
  set rtlbl=os
  set subvol=@gentoo32
  search --no-floppy --set root --label $rtlbl
  set bootoptions="root=LABEL=$rtlbl ro rootfstype=btrfs rootflags=defaults,noatime,compress=lzo,subvol=$subvol quiet"
  linux /$subvol/vmlinuz $bootoptions
  initrd /$subvol/initrd.img

ensure you have the corresponding filesystem tools.

# emerge --ask sys-fs/btrfs-progs

Don't forget the other terminal.. and finish installing the kernel & initramfs!

Exit the chroot

# exit
# reboot

No comments:

Post a Comment

most viewed