{{tag>[gentoo linux gpt btrfs]}} =====Gentoo - Install===== Points of departure: * **MBR**: Master boot record. Grub will install boot.img here, hardware will boot from this. Then it wil load first sector from core.img. * **core.img**: Will load its configuration file and any other modules needed, particularly file system drivers. It will load config from /boot/grub * **GPT**: GUID partition table. * **BTRFS**: file system. * **GRUB2**: bootloader * **SystemD**: init system. ====Download iso==== * Download 64 bit ISO and verification files: [[http://distfiles.gentoo.org/releases/amd64/current-iso/]] * Verify signature:gpg --recv-keys 0xBB572E0E2D182910 gpg --verify install-amd64-minimal-20141204.iso.DIGESTS.asc * Verify key with: [[https://www.gentoo.org/proj/en/releng/]]. * Verify integrity: grep -A 1 -i sha512 install-amd64-minimal-20141204.iso.DIGESTS.asc sha512sum install-amd64-minimal-20141204.iso.DIGESTS.asc #or openssl dgst -sha512 install-amd64-minimal-20141204.iso ====Boot ISO==== * Mount ISO via iLO, IPMI, etc... * Boot server from ISO (F11 on X9SCL/Supermicro). * Boot Gentoo: boot: gentoo * Select keymap, or leave default. ====Configure network==== * Configure networking, for example DHCP:dhcpcd enp4s0 * Change root password, create user and start SSHd # passwd # useradd -m -G users,wheel john # passwd john # /etc/init.d/sshd start * Log in via SSH and switch to root. ====Configure disk layout and btrfs RAID1==== * I've played a lot with software RAID, LVM, GPT etc. So lets completely wipe the SSDs. See: [[secure_wipe]] * Create GPT partitions including swap **on sda**: gdisk /dev/sda o #create empty new GUID partition table. n #add new partition. 1 #partition number 1. 2048 #default first sector. +2MiB #BIOS boot partition size. ef02 #partition type. n #add new partition. 2 #partition number 2. #default next sector. +2GiB #SWAP partition size. 8200 #partition type. n #add new partition. 3 #partition number 3. #default next sector. #Rest of disk. 8300 #partition type. w #write changes and exit. * Create GPT partitions swap **on sdb**: gdisk /dev/sdb o #create empty new GUID partition table. n #add new partition. 1 #partition number 1. 2048 #default first sector. +2MiB #BIOS boot partition size. ef02 #partition type. n #add new partition. 2 #partition number 2. #default next sector. #Rest of disk. 8300 #partition type. w #write changes and exit. * Create RAID1 filesystem:# mkfs.btrfs -L btrfsmirror -m raid1 -d raid1 /dev/sda3 /dev/sdb2 WARNING! - Btrfs v3.14.2 IS EXPERIMENTAL WARNING! - see http://btrfs.wiki.kernel.org before using Performing full device TRIM (57.62GiB) ... Turning ON incompat feature 'extref': increased hardlink limit per file to 65536 Performing full device TRIM (59.62GiB) ... adding device /dev/sdb2 id 2 fs created label SSDRAID1 on /dev/sda3 nodesize 16384 leafsize 16384 sectorsize 4096 size 117.25GiB Btrfs v3.14.2 * Verify:# btrfs filesystem show Label: 'SSDRAID1' uuid: 3a69524a-97d1-4255-ab39-9ebf206f3f61 Total devices 2 FS bytes used 112.00KiB devid 1 size 57.62GiB used 2.03GiB path /dev/sda3 devid 2 size 59.62GiB used 2.01GiB path /dev/sdb2 Btrfs v3.14.2 * Add to /etc/fstab:LABEL=btrfsmirror /mnt/gentoo btrfs defaults,noatime 0 0 LABEL=btrfsmirror /mnt/gentoo/root btrfs defaults,noatime,compress=lzo,autodefrag,subvol=root 0 0 * Mount new btrfs filesystem:# mount /mnt/gentoo * Create BTRFS subvolumes: btrfs subvolume create /mnt/gentoo/root btrfs subvolume create /mnt/gentoo/root/home btrfs subvolume create /mnt/gentoo/root/var * Verify:# btrfs subvolume list /mnt/gentoo/ ID 258 gen 9 top level 5 path root ID 259 gen 8 top level 258 path root/home ID 260 gen 9 top level 258 path root/var # btrfs fi df /mnt/gentoo Data, RAID1: total=1.00GiB, used=512.00KiB Data, single: total=8.00MiB, used=0.00 System, RAID1: total=8.00MiB, used=16.00KiB System, single: total=4.00MiB, used=0.00 Metadata, RAID1: total=1.00GiB, used=160.00KiB Metadata, single: total=8.00MiB, used=0.00 unknown, single: total=16.00MiB, used=0.00 ====Install stage==== * Check and set date:# date Thu Dec 18 19:56:19 UTC 2014 # date [MMDDhhmm[[CC]YY][.ss]] #or ntpdate ntp1.polaire.nl * Download stage3 tarballs, go to releases/amd64/autobuilds/ on a mirror nearby:# cd /mnt/gentoo/root # links http://www.gentoo.org/main/en/mirrors.xml stage3-amd64-20141204.tar.bz2.CONTENTS stage3-amd64-20141204.tar.bz2.DIGESTS stage3-amd64-20141204.tar.bz2.DIGESTS.asc * Verify integrity:# openssl dgst -r -sha512 stage3-amd64-.tar.bz2 * Verify cryptographic signature:# gpg --recv-keys 0xBB572E0E2D182910 # gpg --verify stage3-amd64-20141204.tar.bz2.DIGESTS.asc * Unpack tarball:# tar xvjpf stage3-*.tar.bz2 ====Install base==== * Edit /mnt/gentoo/root/etc/portage/make.conf:# vi /mnt/gentoo/root/etc/portage/make.conf CFLAGS="-march=native -O2 -pipe" CXXFLAGS="${CFLAGS}" MAKEOPTS="-j5" USE="bindist mmx sse sse2 systemd -consolekit" * Select mirror:# mirrorselect -i -o >> /mnt/gentoo/root/etc/portage/make.conf # mirrorselect -i -r -o >> /mnt/gentoo/root/etc/portage/make.conf * Copy DNS info:# cp -L /etc/resolv.conf /mnt/gentoo/root/etc/ * Mount special file systems:# mount -t proc proc /mnt/gentoo/root/proc # mount --rbind /sys /mnt/gentoo/root/sys # mount --rbind /dev /mnt/gentoo/root/dev * Enter new environment:# chroot /mnt/gentoo/root /bin/bash # source /etc/profile # export PS1="(chroot) $PS1" ====Configure portage==== * Install a portage snapshot: # emerge-webrsync * Update portage tree to latest version:# emerge --sync --quiet * Select profile if needed:# eselect profile list # eselect profile set * Create symlink for SystemD:# ln -sf /proc/self/mounts /etc/mtab * Re emerge in order to compile with systemd :# emerge -avDN @world * Install VIM:# emerge --ask vim * Configure timezone:# echo "Europe/Amsterdam" > /etc/timezone * Reconfigure the sys-libs/timezone-data package:# emerge --config sys-libs/timezone-data * Configure locale: # vi /etc/locale.gen en_US ISO-8859-1 en_US.UTF-8 UTF-8 # locale-gen # locale -a * Set system wide locale: # eselect locale list # eselect locale set * Reload environment:# env-update && source /etc/profile ====Configure Kernel==== * Install kernel sources:# emerge --ask sys-kernel/gentoo-sources * Install pci utils:# emerge --ask sys-apps/pciutils * Configure kernel:# cd /usr/src/linux # make menuconfig CONFIG_AUTOFS4_FS CONFIG_CGROUPS CONFIG_FANOTIFY ##BTRFS General setup ---> [*] Initial RAM filesystem and RAM disk (initramfs/initrd) support File systems ---> <*> Btrfs filesystem support [*] Btrfs POSIX Access Control Lists ##SystemD Gentoo Linux ---> Support for init systems, system and service managers ---> [*] systemd ##devtmpfs Device Drivers ---> Generic Driver Options ---> -*- Maintain a devtmpfs filesystem to mount at /dev [*] Automount devtmpfs at /dev, after the kernel mounted the rootf * Compile kernel:make -j5 && make modules_install make install * Build initramfs:# emerge genkernel # genkernel --install initramfs # ls /boot/initramfs* * Create swap: # mkswap /dev/sda2 Setting up swapspace version 1, size = 2097148 KiB no label, UUID=6de68c5a-1c90-4b25-b019-00def47e6c35 * Configure /etc/fstab:LABEL=btrfsmirror / btrfs defaults,noatime,compress=lzo,autodefrag,subvol=root 0 0 UUID="6de68c5a-1c90-4b25-b019-00def47e6c35" none swap sw 0 0 * Configure networking:# vi /etc/conf.d/hostname # vi /etc/conf.d/net dns_domain_lo="homenetwork" config_enp4s0="dhcp" # emerge --ask --noreplace net-misc/netifrc * Edit /etc/hosts127.0.0.1 tux.homenetwork tux localhost * Set root password:passwd * Edit /etc/rc.conf * Edit /etc/conf.d/keymaps * Edit /etc/conf.d/hwclock ==== Install tools==== * Install mailx:# emerge --ask virtual/mailx # emerge --config =mail-mta/nullmailer-1.13-r4 * Install logrotate:# emerge --ask app-admin/logrotate * Install syslogger:# emerge --ask app-admin/syslog-ng # systemctl enable syslog-ng.service * Install cron:# emerge --ask sys-process/cronie # systemctl enable cronie.service * Install file indexing:# emerge --ask sys-apps/mlocate * Install DHCP client:# emerge --ask net-misc/dhcpcd ====Install bootloader==== * Install grub2:# vi /etc/portage/package.use sys-boot/grub:2 device-mapper # emerge --ask sys-boot/grub # vi /etc/default/grub # Append parameters to the linux kernel command line GRUB_CMDLINE_LINUX="rootfstype=btrfs rootflags=device=/dev/sda3,device=/dev/sdb2,subvol=root init=/usr/lib/systemd/systemd" * Install grub2 on disks:# grub2-install /dev/sda # grub2-install /dev/sdb * Generate config:# grub2-mkconfig -o /boot/grub/grub.cfg ====Reboot system==== * Exit chroot:exit * Umount:umount -l /mnt/gentoo/dev{/shm,/pts,} umount /mnt/gentoo{/boot,/sys,/proc,} reboot