Skip to content

Instantly share code, notes, and snippets.

@jadams
Last active August 12, 2018 21:08
Show Gist options
  • Save jadams/ab8cd5f5a0481a94f372edde9894a4b3 to your computer and use it in GitHub Desktop.
Save jadams/ab8cd5f5a0481a94f372edde9894a4b3 to your computer and use it in GitHub Desktop.
#!/bin/bash
#https://bit.ly/2Mfzfc5
gdisk /dev/sda
cryptsetup luksFormat /dev/sda2
cryptsetup luksOpen /dev/sda2 lvm
lvm pvcreate /dev/mapper/lvm
vgcreate vg0 /dev/mapper/lvm
lvcreate -L 10G -n root vg0
lvcreate -L 2G -n swap vg0
lvcreate -l 100%FREE -n home vg0
mkfs.vfat -F 32 /dev/sda1
mkfs.ext4 /dev/mapper/vg0-root
mkswap /dev/mapper/vg0-swap
mkfs.ext4 /dev/mapper/vg0-home
swapon /dev/mapper/vg0-swap
mkdir /mnt/gentoo
mount /dev/mapper/vg0-root /mnt/gentoo
cd /mnt/gentoo
ntpd -q -g
wget http://distfiles.gentoo.org/releases/amd64/autobuilds/20180809T214504Z/hardened/stage3-amd64-hardened-20180809T214504Z.tar.xz
tar xpf stage3-*.tar.xz --xattrs-include='*.*' --numeric-owner
echo '
CFLAGS="-O2 -march=native -pipe"
CXXFLAGS="\${CFLAGS}"
CPU_FLAGS_X86="mmx mmxext sse sse2 ssse3 sse3"
MAKEOPTS="-j4"
PORTAGE_NICENESS=19
EMERGE_DEFAULT_OPTS="--jobs=4"
' >> /mnt/gentoo/etc/portage/make.conf
mkdir --parents /mnt/gentoo/etc/portage/repos.conf
cp /mnt/gentoo/usr/share/portage/config/repos.conf /mnt/gentoo/etc/portage/repos.conf/gentoo.conf
cp --dereference /etc/resolv.conf /mnt/gentoo/etc/
mount --types proc /proc /mnt/gentoo/proc
mount --rbind /sys /mnt/gentoo/sys
mount --rbind /dev /mnt/gentoo/dev
cat << EOF | chroot /mnt/gentoo /bin/bash
source /etc/profile
export PS1="(chroot) ${PS1}"
mkdir /boot
mount /dev/sda1 /boot
emerge-webrsync
eselect profile set default/linux/amd64/17.0/hardened
emerge --update --deep --newuse @world
echo "Pacific/Honolulu" > /etc/timezone
emerge --config sys-libs/timezone-data
echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen
locale-gen
eselect locale set en_US.utf8
env-update && source /etc/profile && export PS1="(chroot) $PS1"
echo '
/dev/sda1 /boot vfat defaults 0 2
/dev/mapper/vg0-root / ext4 defaults,noatime 0 1
/dev/mapper/vg0-home /home ext4 defaults,noatime 0 1
/dev/mapper/vg0-swap none swap defaults 0 0
tmpfs /tmp tmpfs defaults,nodev,nosuid,noexec 0 0
tmpfs /var/tmp tmpfs defaults,nodev,nosuid,noexec 0 0
tmpfs /run tmpfs defaults,nodev,nosuid,noexec 0 0
shm /dev/shm tmpfs defaults,nodev,nosuid,noexec 0 0
' >> /etc/fstab
emerge sys-kernel/gentoo-sources
emerge sys-kernel/linux-firmware
emerge sys-kernel/genkernel
emerge sys-fs/cryptsetup
genkernel --luks --lvm --no-zfs all
echo 'GRUB_PLATFORMS="efi-64"' >> /etc/portage/make.conf
emerge sys-boot/grub
grub-install --target=x86_64-efi --efi-directory=/boot
echo 'GRUB_CMDLINE_LINUX="dolvm crypt_root=/dev/sda2 root=/dev/mapper/vg0-root root_trim=yes"' >> /etc/default/grub
grub-mkconfig -o /boot/grub/grub.cfg
exit
EOF
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment