G

Gentoo Installation Script

public
Guest Oct 15, 2024 Never 10
Clone
Bash gentoo-install.sh 55 lines (55 loc) | 2.45 KB
1
#!/bin/bash
2
RELEASE=${RELEASE:-'openrc'}
3
MIRROR=${MIRROR:-'https://mirrors.tuna.tsinghua.edu.cn/gentoo'}
4
PORTAGE=${PORTAGE:-'rsync://mirrors.tuna.tsinghua.edu.cn/gentoo-portage'}
5
set -e
6
read -r -p "Where do you want to install Gentoo (e.g. /dev/sda)? " drive
7
parted -s "$drive" mklabel gpt mkpart primary 1MiB 1025MiB set 1 esp on mkpart primary 1025MiB 100% set 2 lvm on
8
mapfile -t parts < <(lsblk -np -x NAME -o NAME "$drive")
9
cryptsetup -q luksFormat "${parts[2]}"
10
cryptsetup open "${parts[2]}" cryptlvm
11
pvcreate -qq /dev/mapper/cryptlvm
12
vgcreate -qq vg0 /dev/mapper/cryptlvm
13
memory=$(free -b | awk '/^Mem:/{print $2}')
14
lvcreate -qq -L "${memory}b" -n swap vg0
15
lvcreate -qq -l 100%FREE -n root vg0
16
mkswap -q /dev/mapper/vg0-swap
17
swapon /dev/mapper/vg0-swap
18
mkfs.ext4 -q /dev/mapper/vg0-root
19
mount /dev/mapper/vg0-root /mnt/gentoo
20
mkfs.fat -F 32 "${parts[1]}"
21
mount -m "${parts[1]}" /mnt/gentoo/boot
22
url="$MIRROR/releases/amd64/autobuilds/current-stage3-amd64-$RELEASE"
23
stage3=$(wget -qO- "$url/latest-stage3-amd64-$RELEASE.txt" | grep -oP "stage3-amd64-$RELEASE-.*\.tar\.xz")
24
wget -q "$url/$stage3"
25
wget -qO- "$url/$stage3.sha256" | grep "$stage3" | sha256sum -c --quiet
26
tar xpf "$stage3" -C /mnt/gentoo --xattrs-include='*.*' --numeric-owner
27
sed -i 's/^COMMON_FLAGS=.*/COMMON_FLAGS="-march=native -O3 -pipe"/' /mnt/gentoo/etc/portage/make.conf
28
cat >> /mnt/gentoo/etc/portage/make.conf <<EOF
29
MAKEOPTS="-j$(nproc)"
30
GENTOO_MIRRORS="$MIRROR"
31
USE="X dbus dist-kernel dracut grub lto lvm mount pgo"
32
VIDEO_CARDS="nvidia"
33
ACCEPT_LICENSE="-* @FREE linux-fw-redistributable NVIDIA-r2"
34
EOF
35
mkdir -p /mnt/gentoo/etc/portage/repos.conf
36
printf "[gentoo]\nsync-uri = $PORTAGE\n" > /mnt/gentoo/etc/portage/repos.conf/gentoo.conf
37
genfstab -U /mnt/gentoo >> /mnt/gentoo/etc/fstab
38
cp -L /etc/resolv.conf /mnt/gentoo/etc/
39
arch-chroot /mnt/gentoo bash -ce '
40
read -r -p "Enter new UNIX username: " username
41
useradd -m -G wheel,video -s /bin/bash "$username"
42
passwd "$username"
43
emerge-webrsync -q
44
emerge -q1 cpuid2cpuflags
45
echo "*/* $(cpuid2cpuflags)" > /etc/portage/package.use/00cpu-flags
46
emerge -q cryptsetup os-prober
47
echo "GRUB_DISABLE_OS_PROBER=false" >> /etc/default/grub
48
emerge -q linux-firmware nvidia-drivers sudo networkmanager sysklogd chrony
49
sed -i "s/^#\s*\(%wheel\s*ALL=(ALL.*)\s*ALL\)/\1/" /etc/sudoers
50
rc-update -q add NetworkManager default
51
rc-update -q add sysklogd default
52
rc-update -q add chronyd default
53
grub-install --efi-directory=/boot
54
'
55
reboot