Install

from archlinux iso

install on archiso zfs system from https://github.com/eoli3n/archiso-zfs

curl -s https://raw.githubusercontent.com/eoli3n/archiso-zfs/master/init | bash

ext4

create partition

DISK=ata-SSDPR-CX400-256-G2_GY3042305
sgdisk --clear -g $DISK
sgdisk -n3:1M:+512M -t3:EF00 $DISK # boot partition or efi partition
parted $DISK set 3 bios_grub on
sgdisk -n1:0:0 -t1:8300 $DISK

format

mkfs.ext4 -L ROOT $DISK-part1

mount

mount $DISK-part1 /mnt

install arch

pacstrap /mnt base linux-lts linux-firmware
genfstab -U /mnt >> /mnt/etc/fstab

follow https://wiki.archlinux.org/title/installation_guide

ZFS

Reset disk and create GPT partition schema

DISK=/dev/disk/by-id/ata-HFS512G39MND-3510A_FJ64N5235113A4S13
sgdisk --clear -g $DISK

Prepare partitions

# Run this if you need legacy (BIOS) booting:
# sgdisk -a1 -n2:34:2047 -t2:EF02 $DISK
# Run this for legacy (BIOS) boot or UEFI booting or raidz pool:
sgdisk -n3:1M:+512M -t3:EF00 $DISK
parted $DISK set 3 bios_grub on # needed for embedding grub in this partition
# and after run these:
sgdisk -n9:-8M:0 -t9:BF07 $DISK
sgdisk -n1:0:0 -t1:BF01 $DISK

Create pool or …

zpool create -o ashift=12 \ -O atime=off -O canmount=off -O normalization=formD \ -O mountpoint=/ -R /mnt -f \ rpool ${DISK}-part1

… import existing pool

zpool export rpool zpool import -R /mnt rpool ... umount everything inside /mnt and remove subfolders zfs mount rpool/ROOT/arch

or create raidz pool

zpool create -O atime=off -O mountpoint=/ -R /mnt -O canmount=off -O compression=lz4 -O normalization=formD -o ashift=12 \ rpool raidz /dev/disk/by-id/ata-ST4000NM0035-1V4107_ZC10????-part1

create dataset

zfs create -o canmount=off -o mountpoint=none rpool/ROOT
zfs create -o canmount=noauto -o mountpoint=/ rpool/ROOT/arch
zfs mount rpool/ROOT/arch
zfs create -o setuid=off rpool/home
zpool set bootfs=rpool/ROOT/arch rpool

install base system

pacstrap /mnt base
echo "rpool/ROOT/arch	/	zfs	rw,noatime,xattr,noacl	0 0" > /mnt/etc/fstab

zfs cache

[ -f /etc/zfs/zpool.cache ] || zpool set cachefile=/etc/zfs/zpool.cache rpool
mkdir -p /mnt/etc/zfs
cp /etc/zfs/zpool.cache /mnt/etc/zfs/zpool.cache

arch-chroot /mnt

Install system

pacman -Syyu
pacman -S base vim

add archzfs repo

cat >> etc/pacman.conf <<EOF
[archzfs]
Server = http://archzfs.com/\$repo/x86_64
EOF
pacman-key --init
pacman-key -r F75D9D76
pacman-key --lsign-key F75D9D76
pacman -Syyu
pacman --noconfirm -S linux-lts linux-lts-headers linux-firmware intel-ucode
pacman --noconfirm -S zfs-dkms
systemctl enable zfs.target
systemctl enable zfs-import-cache
systemctl enable zfs-mount
systemctl enable zfs-import.target

basic configuration

ln -sf /usr/share/zoneinfo/Europe/Rome /etc/localtime
hwclock --systohc
cat > /etc/locale.gen <<EOF
en_US.UTF-8 UTF-8
it_IT.UTF-8 UTF-8
EOF
locale-gen
echo LANG=it_IT.UTF-8 > /etc/locale.conf
echo nero > /etc/hostname
echo "KEYMAP=it\nFONT=Lat2-Terminus16" > /etc/vconsole.conf

edit /etc/mkinitcpio.conf to change HOOKS order

HOOKS=(base udev autodetect modconf block keyboard zfs filesystems)

regenerate initram

mkinitcpio -p linux-lts

bios grub

pacman -S grub os-prober
ZPOOL_VDEV_NAME_PATH=1 grub-install --target=i386-pc /dev/sda
ZPOOL_VDEV_NAME_PATH=1 grub-mkconfig -o /boot/grub/grub.cfg

uefi grub

# exit from chroot
mount /dev/sda3 /arch/efi # /dev/sda3 is EFI partition
chroot /arch bash
mount -t efivarfs efivarfs /sys/firmware/efi/efivars
pacman --noconfirm -S grub efibootmgr
ZPOOL_VDEV_NAME_PATH=1 grub-install --target=x86_64-efi --efi-directory=/efi --bootloader-id=arch

edit /etc/default/grub

GRUB_CMDLINE_LINUX_DEFAULT="noresume zfs_force=1 libahci.ignore_sss=1 vga=current"

generate grub config

export ZPOOL_VDEV_NAME_PATH=1
grub-mkconfig -o /boot/grub/grub.cfg

root password

passwd

User

pacman -S sudo
useradd -m scipio
usermod -a -G wheel scipio
passwd scipio

decomment wheel in /etc/sudoers

Basic

systemctl start systemd-timesyncd.service
systemctl enable systemd-timesyncd.service

Gnome

pacman -S gnome gpaste network-manager-applet
systemctl enable NetworkManager.service
systemctl enable gdm

nvidia

pacman -S nvidia-dmks

others

pacman -S fish rsync openssh
pacman -S libreoffice-fresh-it

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