G

Untitled

public
Guest Oct 15, 2024 Never 11
Clone
Bash gentoo-install.sh 54 lines (54 loc) | 2.42 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 fat32 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
mount -m "${parts[1]}" /mnt/gentoo/boot
21
url="$MIRROR/releases/amd64/autobuilds/current-stage3-amd64-$RELEASE"
22
stage3=$(wget -qO- "$url/latest-stage3-amd64-$RELEASE.txt" | grep -oP "stage3-amd64-$RELEASE-.*\.tar\.xz")
23
wget -q "$url/$stage3"
24
wget -qO- "$url/$stage3.sha256" | grep "$stage3" | sha256sum -c --quiet
25
tar xpf "$stage3" -C /mnt/gentoo --xattrs-include='*.*' --numeric-owner
26
sed -i 's/^COMMON_FLAGS=.*/COMMON_FLAGS="-march=native -O3 -pipe"/' /mnt/gentoo/etc/portage/make.conf
27
cat >> /mnt/gentoo/etc/portage/make.conf <<EOF
28
MAKEOPTS="-j$(nproc)"
29
GENTOO_MIRRORS="$MIRROR"
30
USE="X dbus dist-kernel dracut grub lto lvm mount pgo"
31
VIDEO_CARDS="nvidia"
32
ACCEPT_LICENSE="-* @FREE linux-fw-redistributable NVIDIA-r2"
33
EOF
34
mkdir -p /mnt/gentoo/etc/portage/repos.conf
35
printf "[gentoo]\nsync-uri = $PORTAGE\n" > /mnt/gentoo/etc/portage/repos.conf/gentoo.conf
36
genfstab -U /mnt/gentoo >> /mnt/gentoo/etc/fstab
37
cp -L /etc/resolv.conf /mnt/gentoo/etc/
38
arch-chroot /mnt/gentoo bash -ce '
39
read -r -p "Enter new UNIX username: " username
40
useradd -m -G wheel,video -s /bin/bash "$username"
41
passwd "$username"
42
emerge-webrsync -q
43
emerge -q1 cpuid2cpuflags
44
echo "*/* $(cpuid2cpuflags)" > /etc/portage/package.use/00cpu-flags
45
emerge -q cryptsetup os-prober
46
echo "GRUB_DISABLE_OS_PROBER=false" >> /etc/default/grub
47
emerge -q linux-firmware nvidia-drivers sudo networkmanager sysklogd chrony
48
sed -i "s/^#\s*\(%wheel\s*ALL=(ALL.*)\s*ALL\)/\1/" /etc/sudoers
49
rc-update -q add NetworkManager default
50
rc-update -q add sysklogd default
51
rc-update -q add chronyd default
52
grub-install --efi-directory=/boot
53
'
54
reboot