Skip to content

Instantly share code, notes, and snippets.

@ncrmro
Created May 13, 2018 17:39
Show Gist options
  • Save ncrmro/f389c1362baf4d19d6e8b310d66902e6 to your computer and use it in GitHub Desktop.
Save ncrmro/f389c1362baf4d19d6e8b310d66902e6 to your computer and use it in GitHub Desktop.
Condensed scripts installed zfs on root from https://github.com/zfsonlinux/zfs/wiki/Ubuntu-18.04-Root-on-ZFS

https://github.com/zfsonlinux/zfs/wiki/Ubuntu-18.04-Root-on-ZFS ls /dev/disk/by-id/

uefi

export DISK=/dev/disk/by-id/ata-M4-CT256M4SSD2_00000000123509146D38 && \
apt install --yes debootstrap gdisk zfs-initramfs && \
sgdisk --zap-all $DISK && \
sgdisk -n3:1M:+512M -t3:EF00 $DISK && \
sgdisk -n1:0:0 -t1:BF01 $DISK && \
export RPOOL_PART=$DISK-part1 && \
sleep 3 && \
zpool create -o ashift=12 \
-O atime=off \
-O canmount=off \
-O compression=lz4 \
-O normalization=formD \
-O mountpoint=/ \
-R /mnt -f \
rpool $RPOOL_PART && \
zfs create -o canmount=off -o mountpoint=none rpool/ROOT && \
zfs create -o canmount=noauto -o mountpoint=/ rpool/ROOT/ubuntu && \
zfs mount rpool/ROOT/ubuntu && \
zfs create -o setuid=off rpool/home && \
zfs create -o mountpoint=/root rpool/home/root && \
zfs create -o canmount=off -o setuid=off -o exec=off rpool/var && \
zfs create -o com.sun:auto-snapshot=false rpool/var/cache && \
zfs create rpool/var/log && \
zfs create rpool/var/spool && \
zfs create -o com.sun:auto-snapshot=false -o exec=on  rpool/var/tmp && \
zfs create rpool/var/mail && \
chmod 1777 /mnt/var/tmp && \
debootstrap bionic /mnt && \
zfs set devices=off rpool && \
echo userv > /mnt/etc/hostname && \
nano /mnt/etc/hosts

nano /mnt/etc/netplan/enp2s0.yaml

network:
  version: 2
  ethernets:
    enp2s0:
      dhcp4: true

nano /mnt/etc/apt/sources.list

deb http://archive.ubuntu.com/ubuntu bionic main universe
deb-src http://archive.ubuntu.com/ubuntu bionic main universe

deb http://security.ubuntu.com/ubuntu bionic-security main universe
deb-src http://security.ubuntu.com/ubuntu bionic-security main universe

deb http://archive.ubuntu.com/ubuntu bionic-updates main universe
deb-src http://archive.ubuntu.com/ubuntu bionic-updates main universe

mount --rbind /dev /mnt/dev &&
mount --rbind /proc /mnt/proc &&
mount --rbind /sys /mnt/sys &&
chroot /mnt /bin/bash --login

locale-gen en_US.UTF-8 && \
echo LANG=en_US.UTF-8 > /etc/default/locale && \
dpkg-reconfigure tzdata && \
ln -s /proc/self/mounts /etc/mtab
Also install other packages needed avahi-deamon ufw openssh-server fail2ban
export EXTRA_PACKAGES="nano ufw openssh-server htop qemu-kvm libvirt0 libvirt-bin libguestfs-tools" && \
apt update && \
apt install --yes --no-install-recommends linux-image-generic && \
apt install --yes zfs-initramfs dosfstools $EXTRA_PACKAGES && \
export RPOOL_PART=/dev/disk/by-id/ata-M4-CT256M4SSD2_00000000123509146D38-part3 && \
mkdosfs -F 32 -n EFI $RPOOL_PART && \
mkdir /boot/efi && \
echo PARTUUID=$(blkid -s PARTUUID -o value $RPOOL_PART) \
/boot/efi vfat nofail,x-systemd.device-timeout=1 0 1 >> /etc/fstab && \
mount /boot/efi && \
apt install --yes grub-efi-amd64 && \
passwd

zfs set mountpoint=legacy rpool/var/log &&
zfs set mountpoint=legacy rpool/var/tmp &&
cat >> /etc/fstab << EOF rpool/var/log /var/log zfs defaults 0 0 rpool/var/tmp /var/tmp zfs defaults 0 0 EOF

nano /etc/default/grub

update-initramfs -c -k all &&
export DISK=/dev/disk/by-id/ata-M4-CT256M4SSD2_00000000123509146D38 &&
update-grub &&
grub-install
--target=x86_64-efi
--efi-directory=/boot/efi
--bootloader-id=ubuntu
--recheck
--no-floppy &&
zfs snapshot rpool/ROOT/ubuntu@install &&
exit

mount | grep -v zfs | tac | awk '//mnt/ {print $3}' | xargs -i{} umount -lf {} &&
zpool export rpool &&
reboot now

export USERNAME=ncrmro && \
zfs create rpool/home/$USERNAME ; \
adduser $USERNAME ; \
cp -a /etc/skel/.[!.]* /home/$USERNAME ; \
chown -R $USERNAME:$USERNAME /home/$USERNAME ; \
usermod -a -G adm,cdrom,dip,plugdev,sudo $USERNAME ; \
adduser $USERNAME libvirt ; \
adduser $USERNAME libvirt-qemu

END UEFI

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment