User:Pavlix/Install

In this page I collect my slightly different ways of installing Gentoo for various environments. I'm maintaining it for myself, so feel free to read it but don't forget that there's official documentation.


 * https://wiki.gentoo.org/wiki/Handbook:Main_Page
 * http://www.gentoo.org/doc/en/gentoo-x86-quickinstall.xml

PXE
Upstream status:


 * PXE images not distributed
 * PXE documentation uses NFS, not squashfs, entirely wrong for a live system

Manual way:


 * grub2-mknetdir -v --net-directory=/tftproot
 * download install-amd64-minimal-20141204.iso
 * mount the iso
 * modify initrd and merge in squashfs
 * create grub.conf

Created a script and documented in Gentoo Wiki:


 * gentoo-boot-pxe /tftproot install-amd64-minimal-20141204.iso
 * https://wiki.gentoo.org/wiki/Installation_alternatives#Diskless_install_using_PXE_and_kernel.2Finitrd.2Fsquashfs_from_the_LiveCD

Publish over tftp:

Configure DHCP server
TODO

Boot the live system
My goal in this section is to get you booted as quickly as possible with a bare minimum of packages installed in the proces.

Note: I recently heard about Stage7 which has a potential of getting you there even faster but I haven't tried it, yet.

Boot
Use PXE boot to start the live system. It may take quite some time and no progress information is displayed by GRUB.

Optional: Obtain remote access
Connect over SSH:

Alternative: SSH without host keys.

Configure and mount storage
Format disks – Single disk laptop:

{{CodeBox|1= echo -n "o.n.....w." | tr. "\n" | fdisk /dev/sda pvcreate /dev/sda1 vgcreate -s 1G vg /dev/sda1

lvcreate vg -n gentoo -L 64G lvcreate vg -n home -L 64G

mkfs -t ext4 /dev/vg/gentoo mkfs -t ext4 /dev/vg/home mkswap /dev/vg/swap

mount /dev/vg/gentoo /mnt/gentoo mount /dev/vg/home /mnt/gentoo/home

Format disks – Storage server with four disks:

for i in a b c d; do echo -n "o.n.....w." | tr. "\n" | fdisk /dev/sd$i; done mdadm --create /dev/md0 --level=6 --raid-devices=4 /dev/sd[abcd]1 pvcreate /dev/md0 vgcreate -s 1G vg /dev/md0

lvcreate vg -n system -L 8G lvcreate vg -n swap -L 8G

mkfs -t ext4 /dev/vg/system mkswap /dev/vg/swap

mount /dev/vg/system /mnt/gentoo

Optional: Synchronize system time
ntpdate cz.pool.ntp.org

Bug: The livecd already configures network, I have no idea why it doesn't also update the time.

Install and enter the base system
curl http://ftp.fi.muni.cz/pub/linux/gentoo/releases/amd64/autobuilds/current-stage3-amd64/stage3-amd64-20141204.tar.bz2 | tar -C /mnt/gentoo -xjp

mount -t proc proc /mnt/gentoo/proc mount --rbind /dev /mnt/gentoo/dev mount --rbind /sys /mnt/gentoo/sys cp -L /etc/resolv.conf /mnt/gentoo/etc/ chroot /mnt/gentoo /bin/bash source /etc/profile

Get current portage tree
emerge-webrsync emerge --sync

Bug: emerge-webrsync complains about nonexistence of /usr/portage so that it looks as if it failed but it didn't.

!!! Section 'x-portage' in repos.conf has location attribute set to nonexistent directory: '/usr/portage' !!! Section 'gentoo' in repos.conf has location attribute set to nonexistent directory: '/usr/portage' !!! Invalid Repository Location (not a dir): '/usr/portage' Fetching most recent snapshot ...
 * 1) emerge-webrsync

Select profile (laptop with systemd)
Set profile (systemd laptop):

eselect profile set default/linux/amd64/13.0/desktop/gnome/systemd

=== Optional: Switch /tmp and /var/tmp to tmpfs

Configure and build kernel
Get kernel and initramfs tools (Laptop with systemd):

emerge gentoo-sources genkernel-next Note: Classic genkernel has been masked in the systemd profile. Note: lvm2 gets installed as a dependency. Bug: It indirectly hard depends depends on boost which takes ages to build.

Get kernel and initramfs tools (Storage server):

Build kernel and initramfs:

In the menuconfig (laptop):

systemd wasn't able to learn about the completed cryptsetup.
 * Bug: systemd works without it but cryptsetup/fstab ordering fails! apparently

enable kms by default to get good VT resolution and working X11


 * Bug: xorg won't start otherwise
 * Bug: screen wouldn't go back on after sleep on Lenovo T540p

In the menuconfig (storage server):

No changes needed.

Configure and install bootloader
Install bootloader tools:

Install bootloader (laptop):

Install bootloader (storage server):

Configure bootloader

Reboot
Install tools needed after reboot:

Configure tools needed after reboot:

See also: https://wiki.gentoo.org/wiki/Network_management_using_DHCPCD

Set root password:

Optional: Configure the build system and rebuild all packages
In ancient times, you could opt to install using the stage1 tarball, and would have all packages built with the build configuration you wanted. This is no longer supported by the Gentoo project. With the stage3 tarball installalation you have a good number of packages already built with the default configuration instead.

Warning: The rebuild process can be very time consuming and the optimizations may not even be significant. The default configuration is good enough for many use cases. Setting just the CPU_FLAGS_X86 to at least get advanced CPU features used by some software packages and running  is much faster, though.

Warning: Optimizing to a specific type of CPU may prevent you from easily moving the system to another machine. Default configuration or a broader set of CPUs (e.g.  instead of  ) may help.

Examine the hardware
Examine the system for CFLAGS and learn what gcc thinks about the target platform:

gcc -march=native -Q --help=target emerge --oneshot app-portage/cpuinfo2cpuflags cpuinfo2cpuflags-x86

Configure the build system
Configure CFLAGS and CPU_FLAGS_X86, add $CPU_FLAGS_X86 to USE, remove bindist and cpu flags from USE.

nano /etc/portage/make.conf

Rebuild all packages
It is the easiest way to get a system built with the above configuration but it may take a lot of time depending on your hardware. It is a good idea to clean up unnecessary packages before and after the process.

Check for packages with old CFLAGS
The package CFLAGS are stored in.

My output shows a couple of packages with custom, none of them actually built with the old   or anything like that.

Install and configure important gentoo packages
Now that we're not going to rebuild the whole system any more, it is time to add various other packages for everyday use. I'm using package sets to have common sets of packages used accross machines.

Create and install packages
Note: The items that are commented out are either not installable in Gentoo stable environment (which I consider a bug) or not needed on all my systems.

Enable power button on OpenRC systems:

TODO: I'm considering creating an overlay just for the package sets.

Configure remote shell accounts
For each user, create a user account and set a dummy password so that SSH recognizes that the account is not locked and enter the user account using sudo.

In the user account, configure SSH:

Enable bash completion
See also:


 * Bash