Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- #https://www.tomica.net/blog/2019/02/moving-ubuntu-to-root-on-zfs/
- #https://openzfs.github.io/openzfs-docs/Getting%20Started/Ubuntu/Ubuntu%2020.04%20Root%20on%20ZFS.html#ubuntu-installer
- sudo su
- setxkbmap de
- apt-get update
- apt-get install --yes zfsutils-linux debootstrap gdisk zfs-initramfs
- systemctl stop zed
- blkdiscard /dev/sda
- blkdiscard /dev/sdb
- blkdiscard /dev/sdc
- sgdisk --zap-all /dev/sda
- sgdisk --zap-all /dev/sdb
- sgdisk --zap-all /dev/sdc
- #boot loader
- sgdisk -n1:1M:+512M -t1:EF00 /dev/sda
- sgdisk -n1:1M:+512M -t1:EF00 /dev/sdb
- sgdisk -n1:1M:+512M -t1:EF00 /dev/sdc
- #boot pool
- sgdisk -n2:0:+2G -t2:BE00 /dev/sda
- sgdisk -n2:0:+2G -t2:BE00 /dev/sdb
- sgdisk -n2:0:+2G -t2:BE00 /dev/sdc
- #swap
- sgdisk -n3:0:+6G -t3:8200 /dev/sda
- sgdisk -n3:0:+6G -t3:8200 /dev/sdb
- sgdisk -n3:0:+6G -t3:8200 /dev/sdc
- #root
- sgdisk -n4:0:0 -t4:BF00 /dev/sda
- sgdisk -n4:0:0 -t4:BF00 /dev/sdb
- sgdisk -n4:0:0 -t4:BF00 /dev/sdc
- zpool create \
- -o cachefile=/etc/zfs/zpool.cache \
- -o ashift=12 -o autotrim=on -d \
- -o feature@async_destroy=enabled \
- -o feature@bookmarks=enabled \
- -o feature@embedded_data=enabled \
- -o feature@empty_bpobj=enabled \
- -o feature@enabled_txg=enabled \
- -o feature@extensible_dataset=enabled \
- -o feature@filesystem_limits=enabled \
- -o feature@hole_birth=enabled \
- -o feature@large_blocks=enabled \
- -o feature@lz4_compress=enabled \
- -o feature@spacemap_histogram=enabled \
- -O acltype=posixacl -O canmount=off -O compression=lz4 \
- -O devices=off -O normalization=formD -O relatime=on -O xattr=sa \
- -O mountpoint=/boot -R /mnt -f bpool \
- raidz /dev/sda2 /dev/sdb2 /dev/sdc2
- zpool create \
- -o ashift=12 -o autotrim=on \
- -O acltype=posixacl -O canmount=off -O compression=lz4 \
- -O dnodesize=auto -O normalization=formD -O relatime=on \
- -O xattr=sa -O mountpoint=/ -R /mnt -f rpool \
- raidz /dev/sda4 /dev/sdb4 /dev/sdc4
- zfs create -o canmount=off -o mountpoint=none rpool/ROOT
- zfs create -o canmount=off -o mountpoint=none bpool/BOOT
- UUID=$(dd if=/dev/urandom bs=1 count=100 2>/dev/null |
- tr -dc 'a-z0-9' | cut -c-6)
- zfs create -o mountpoint=/ \
- -o com.ubuntu.zsys:bootfs=yes \
- -o com.ubuntu.zsys:last-used=$(date +%s) rpool/ROOT/ubuntu_$UUID
- zfs create -o mountpoint=/boot bpool/BOOT/ubuntu_$UUID
- zfs create -o com.ubuntu.zsys:bootfs=no \
- rpool/ROOT/ubuntu_$UUID/srv
- zfs create -o com.ubuntu.zsys:bootfs=no -o canmount=off \
- rpool/ROOT/ubuntu_$UUID/usr
- zfs create rpool/ROOT/ubuntu_$UUID/usr/local
- zfs create -o com.ubuntu.zsys:bootfs=no -o canmount=off \
- rpool/ROOT/ubuntu_$UUID/var
- zfs create rpool/ROOT/ubuntu_$UUID/var/games
- zfs create rpool/ROOT/ubuntu_$UUID/var/lib
- zfs create rpool/ROOT/ubuntu_$UUID/var/lib/AccountsService
- zfs create rpool/ROOT/ubuntu_$UUID/var/lib/apt
- zfs create rpool/ROOT/ubuntu_$UUID/var/lib/dpkg
- zfs create rpool/ROOT/ubuntu_$UUID/var/lib/NetworkManager
- zfs create rpool/ROOT/ubuntu_$UUID/var/log
- zfs create rpool/ROOT/ubuntu_$UUID/var/mail
- zfs create rpool/ROOT/ubuntu_$UUID/var/snap
- zfs create rpool/ROOT/ubuntu_$UUID/var/spool
- zfs create rpool/ROOT/ubuntu_$UUID/var/www
- zfs create -o canmount=off -o mountpoint=/ \
- rpool/USERDATA
- zfs create -o com.ubuntu.zsys:bootfs-datasets=rpool/ROOT/ubuntu_$UUID \
- -o canmount=on -o mountpoint=/root \
- rpool/USERDATA/root_$UUID
- chmod 700 /mnt/root
- zfs create -o com.ubuntu.zsys:bootfs=no bpool/grub
- mkdir /mnt/run
- mount -t tmpfs tmpfs /mnt/run
- mkdir /mnt/run/lock
- zfs create -o com.ubuntu.zsys:bootfs=no \
- rpool/ROOT/ubuntu_$UUID/tmp
- chmod 1777 /mnt/tmp
- debootstrap focal /mnt
- mkdir /mnt/etc/zfs
- cp /etc/zfs/zpool.cache /mnt/etc/zfs/
- echo fileserver > /mnt/etc/hostname
- cat >> /mnt/etc/hosts << EOF
- 127.0.1.1 fileserver localhost
- EOF
- cat >> /mnt/etc/netplan/01-netcfg.yaml << EOF
- network:
- version: 2
- ethernets:
- enp1s0:
- dhcp4: true
- EOF
- cat > /mnt/etc/apt/sources.list << EOF
- deb http://archive.ubuntu.com/ubuntu focal main restricted universe multiverse
- deb http://archive.ubuntu.com/ubuntu focal-updates main restricted universe multiverse
- deb http://archive.ubuntu.com/ubuntu focal-backports main restricted universe multiverse
- deb http://security.ubuntu.com/ubuntu focal-security main restricted universe multiverse
- EOF
- mount --rbind /dev /mnt/dev
- mount --rbind /proc /mnt/proc
- mount --rbind /sys /mnt/sys
- chroot /mnt /usr/bin/env UUID=$UUID bash --login
- apt-get update
- dpkg-reconfigure locales tzdata keyboard-configuration console-setup
- apt-get install --yes nano vim dosfstools mdadm gdisk zfsutils-linux
- mkdosfs -F 32 -s 1 -n EFI /dev/sda1
- mkdosfs -F 32 -s 1 -n EFI /dev/sdb1
- mkdosfs -F 32 -s 1 -n EFI /dev/sdc1
- mkdir /boot/efi1
- mkdir /boot/efi2
- mkdir /boot/efi3
- echo /dev/disk/by-uuid/$(blkid -s UUID -o value /dev/sda1) \
- /boot/efi1 vfat defaults 0 0 >> /etc/fstab
- echo /dev/disk/by-uuid/$(blkid -s UUID -o value /dev/sdb1) \
- /boot/efi2 vfat defaults 0 0 >> /etc/fstab
- echo /dev/disk/by-uuid/$(blkid -s UUID -o value /dev/sdc1) \
- /boot/efi3 vfat defaults 0 0 >> /etc/fstab
- mount /boot/efi1
- mount /boot/efi2
- mount /boot/efi3
- mkdir /boot/efi1/grub
- mkdir /boot/efi2/grub
- mkdir /boot/efi3/grub
- mkdir /boot/grub1
- mkdir /boot/grub2
- mkdir /boot/grub3
- echo /boot/efi1/grub /boot/grub1 none defaults,bind 0 0 >> /etc/fstab
- echo /boot/efi2/grub /boot/grub2 none defaults,bind 0 0 >> /etc/fstab
- echo /boot/efi3/grub /boot/grub3 none defaults,bind 0 0 >> /etc/fstab
- mount /boot/grub1
- mount /boot/grub2
- mount /boot/grub3
- apt install --yes \
- grub-efi-amd64 grub-efi-amd64-signed linux-image-generic \
- shim-signed zfs-initramfs zsys
- apt-get remove --yes --purge os-prober sudo
- passwd
- mdadm --create /dev/md0 --metadata=1.2 --level=mirror \
- --raid-devices=3 /dev/sda3 /dev/sdb3 /dev/sdc3
- mkswap -f /dev/md0
- echo /dev/disk/by-uuid/$(blkid -s UUID -o value /dev/md0) \
- none swap discard 0 0 >> /etc/fstab
- cp /usr/share/systemd/tmp.mount /etc/systemd/system/
- systemctl enable tmp.mount
- addgroup --system lpadmin
- addgroup --system lxd
- addgroup --system sambashare
- grub-probe /boot
- update-initramfs -c -k all
- cat > /etc/default/grub << EOF
- GRUB_DEFAULT=0
- GRUB_TIMEOUT=5
- GRUB_RECORDFAIL_TIMEOUT=5
- GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
- GRUB_CMDLINE_LINUX_DEFAULT="init_on_alloc=0"
- GRUB_CMDLINE_LINUX=""
- GRUB_TERMINAL=console
- EOF
- update-grub
- grub-install --target=x86_64-efi --efi-directory=/boot/efi1 \
- --bootloader-id=ubuntu --recheck --no-floppy
- grub-install --target=x86_64-efi --efi-directory=/boot/efi2 \
- --bootloader-id=ubuntu --recheck --no-floppy
- grub-install --target=x86_64-efi --efi-directory=/boot/efi3 \
- --bootloader-id=ubuntu --recheck --no-floppy
- systemctl mask grub-initrd-fallback.service
- mkdir /etc/zfs/zfs-list.cache
- touch /etc/zfs/zfs-list.cache/bpool
- touch /etc/zfs/zfs-list.cache/rpool
- ln -s /usr/lib/zfs-linux/zed.d/history_event-zfs-list-cacher.sh /etc/zfs/zed.d
- zed -F &
- cat /etc/zfs/zfs-list.cache/bpool
- cat /etc/zfs/zfs-list.cache/rpool
- fg
- #Press Ctrl-C.
- sed -Ei "s|/mnt/?|/|" /etc/zfs/zfs-list.cache/*
- apt install --yes openssh-server mlocate
- nano /etc/ssh/sshd_config
- #PermitRootLogin yes
- exit
- mount | grep -v zfs | tac | awk '/\/mnt/ {print $3}' | \
- xargs -i{} umount -lf {}
- zpool export -a
- reboot
- dpkg-reconfigure grub-efi-amd64
- UUID=$(dd if=/dev/urandom bs=1 count=100 2>/dev/null |
- tr -dc 'a-z0-9' | cut -c-6)
- ROOT_DS=$(zfs list -o name | awk '/ROOT\/ubuntu_/{print $1;exit}')
- zfs create -o com.ubuntu.zsys:bootfs-datasets=$ROOT_DS \
- -o canmount=on -o mountpoint=/home/serveradmin \
- rpool/USERDATA/serveradmin_$UUID
- adduser serveradmin
- cp -a /etc/skel/. /home/serveradmin
- chown -R serveradmin:serveradmin /home/serveradmin
- chmod -R o-rwx /home/serveradmin
- usermod -a -G adm,cdrom,dip,lpadmin,lxd,plugdev,sambashare serveradmin
- apt-get autoremove --purge sudo snapd
- for file in /etc/logrotate.d/* ; do
- if grep -Eq "(^|[^#y])compress" "$file" ; then
- sed -i -r "s/(^|[^#y])(compress)/\1#\2/" "$file"
- fi
- done
- nano /etc/ssh/sshd_config
- #PermitRootLogin no
- systemctl reload sshd
- #allow reboot/halt for all users.
- #chmod u+s /usr/sbin/reboot
- #chmod u+s /usr/sbin/halt
- ##############################################################################################
- #######################################################
- ####################terminal server####################
- #######################################################
- apt-get update
- apt install mate-core mate-desktop-environment mate-notification-daemon
- apt-get install x2goserver x2goserver-xsession
- apt-get install mate-tweak
- #disable composit
- #or install apt-get install ubuntu-mate-core
- #######################################################
- ##################zfs storage + iscsi##################
- #######################################################
- ls /dev/sd*|sort
- sgdisk --zap-all /dev/sdX
- sgdisk --zap-all /dev/sdY
- sgdisk --zap-all /dev/sdZ
- #already created on install
- zpool add rpool raidz /dev/sdX /dev/sdY /dev/sdZ
- zpool status
- apt-get install tgt -y
- zfs create -s -V 30G rpool/vol1
- zfs set dedup=verify rpool/vol1
- cat >> /etc/tgt/conf.d/target01.conf << EOF
- <target iqn.2021-5.bitmaster.dedyn.io:vol1>
- backing-store /dev/zvol/rpool/vol1
- </target>
- EOF
- systemctl reload tgt
- #extend disk
- zfs set volsize=20G rpool/vol1
- systemctl restart tgt
- get infos
- zfs get all rpool/vol1
- zfs list rpool/vol1
- zdb -b rpool
- zfs get compressratio,refcompressratio
- zpool status
- #######################################################
- #####################recover disks#####################
- #######################################################
- zpool import -a
- zpool status
- ls /dev/sd*|sort
- sgdisk -n1:1M:+512M -t1:EF00 /dev/sdc
- sgdisk -n2:0:+2G -t2:BE00 /dev/sdc
- sgdisk -n3:0:+6G -t3:8200 /dev/sdc
- sgdisk -n4:0:0 -t4:BF00 /dev/sdc
- zpool status
- #old ID (status)
- #/dev/sdc* new disk
- zpool replace bpool 3362238763736904232 /dev/sdc2
- zpool replace rpool 4417555474297722148 /dev/sdc4
- cat /proc/mdstat
- mdadm --stop /dev/md0
- rm /etc/mdadm/mdadm.conf
- mdadm --assemble --scan --verbose
- mdadm --manage /dev/md127 --add /dev/sdc3
- #until raid recovery finish
- cat /proc/mdstat
- #until raid recovery finish
- mdadm --stop /dev/md127
- mdadm --assemble --update=name --name=md0 /dev/md0
- mkdosfs -F 32 -s 1 -n EFI /dev/sdc1
- blkid -s UUID -o value /dev/sdc1
- nano /etc/fstab
- mount /boot/efi3
- update-initramfs -c -k all
- update-grub
- grub-install --target=x86_64-efi --efi-directory=/boot/efi1 \
- --bootloader-id=ubuntu --recheck --no-floppy
- dpkg-reconfigure grub-efi-amd64
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement