Salve galera.
O vídeo contém:
- Adicionando o OpenZFS na iso do Slackware64-15.0
- Instalando o Slackware64-15.0 no filesystem OpenZFS on root
Resumindo:
- Isso não é um guia é apenas um roteiro/rascunho complemento do vídeo.
- instalação do Slackware64-15 vanilla atualizado como base para modificar iso, adicionar o módulo do OpenZFS.
- baixar a tree do Slackware64-15 e descomprimir o initrd.img
- fazer as modificações desejadas e recriar o initrd.img
- recriar a iso.
- Após o processo para adicionar o módulo OpenZFS na iso do Slackware.
- particionar o disco , e criar as pools/volume com o OpenZFS.
- Instalar o sistema, configurando adequadamente.
Vou deixar um rascunho/roteiro que usei:
Parte de criar/modificar a iso
Comandos:
mkdir iso-build
cd iso-build
mkdir iso
rsync -av --delete -rlptD --delete-excluded --progress --exclude pasture --exclude testing --exclude source --exclude kde --exclude extra/source rsync://linorg.usp.br/slackware/slackware64-15.0/ ./iso/
lftp -c "open https://slackbuilds.org/slackbuilds/15.0/system/ ; mirror openzfs"
cd openzfs/
source openzfs.info
wget $DOWNLOAD
chmod +x openzfs.SlackBuild
# sh openzfs.SlackBuild
mkdir /tmp/initrd
cd /tmp/initrd
# xz -dc < /home/slack15/iso-build/iso/isolinux/initrd.img | cpio -idmv
Instalar o módulo referente:
# installpkg --root /tmp/initrd/ /home/slack15/iso-build/iso/patches/packages/linux-5.15.94/kernel-modules-5.15.94-x86_64-1.txz
# rm -rf lib/modules/5.15.19/
# installpkg --root /tmp/initrd /home/slack15/iso-build/openzfs-2.1.9_5.15.94-x86_64-1_SBo.tgz
# depmod -b $(pwd) -a 5.15.94
# find . | cpio -o -H newc | xz -z --check=crc32 -T0 > /home/slack15/iso-build/iso/isolinux/initrd.img.zfs
cd /home/slack15/iso-build/
wget https://raw.githubusercontent.com/tterpelle/docker-slack64-current-zfs/master/files/container/grub-zfs.cfg
Substituir as entradas antigas na iso pelas novas:
# cd /home/slack15/iso-build/iso/kernels/huge.s/
# rm System.map.gz bzImage config
# cp /boot/vmlinuz-huge-5.15.94 bzImage
# cp /boot/System.map-huge-5.15.94 System.map
# gzip System.map
# cd /home/slack15/iso-build/iso/EFI/BOOT/
# cat /home/slack15/iso-build/grub.cfg.zfs > ./grub
# vim grub.cfg
# xorriso -as mkisofs -iso-level 3 -full-iso9660-filenames -R -J -A "Slackware Install" -hide-rr-moved -v -d -N -eltorito-boot isolinux/isolinux.bin -eltorito-catalog isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -isohybrid-mbr /usr/share/syslinux/isohdpfx.bin -eltorito-alt-boot -e isolinux/efiboot.img -no-emul-boot -isohybrid-gpt-basdat -m 'source/' -volid "SlackDVD" -output /tmp/slackware-dvd.iso .
Parte 2
Instalação do sistema pela iso modificada.
# gdisk /dev/sda
# cfdisk /dev/sda
# mkfs.fat -F32 /dev/sda1
# ls -l /dev/disk/by-id/id-to-partion-partx
# zpool create -f -o ashift=12 -O acltype=posixacl -O relatime=on -O xattr=sa -O dnodesize=legacy -O normalization=formD -O mountpoint=none -O canmount=off -O devices=off -R /mnt -O compression=lz4 zroot /dev/disk/by-id/id-to-partition-partx
# zfs create -o mountpoint=none zroot/data
# zfs create -o mountpoint=none zroot/ROOT
# zfs create -o mountpoint=/ -o canmount=noauto zroot/ROOT/default
# zfs create -o mountpoint=/home zroot/data/home
# zfs create -o mountpoint=/root zroot/data/home/root
# zpool export zroot
# zpool import -d /dev/disk/by-id -R /mnt zroot -N
# zfs mount zroot/ROOT/default
# zfs mount -a
# zpool set bootfs=zroot/ROOT/default zroot
# zpool set cachefile=/etc/zfs/zpool.cache zroot
# mkdir -p /mnt/{etc/zfs,boot/efi}
# cp /etc/zfs/zpool.cache /mnt/etc/zfs/zpool.cache
# mount /dev/sda1 /mnt/boot/efi
# setup
# chroot /mnt/
# source /etc/profile
Atualizar o sistema pela midia ou pelo slackpkg:
# mount /dev/sr0 /mnt/dvd/
# upgradepkg /mnt/dvd/patches/packages/linux-5.15.94/kernel-*.txz
# upgradepkg /mnt/dvd/patches/packages/*.txz
# umount /mnt/dvd/
# lftp -c "open https://slackbuilds.org/slackbuilds/15.0/system/ ; mirror openzfs"
# cd openzfs/
# source openzfs.info
# wget $DOWNLOAD
# chmod +x openzfs.SlackBuild
# sh openzfs.SlackBuild
# installpkg /tmp/openzfs-2.1.9_5.15.94-x86_64-1_SBo.tgz
Em caso de dúvida consulte:
# man installpkg
# man upgradepkg
# cd /boot/initrd
# installpkg --root /boot/initrd-tree/ /tmp/openzfs-2.1.9_5.15.94-x86_64-1_SBo.tgz
# vim /etc/mkinitrd.conf
SOURCE_TREE="/boot/initrd-tree"
CLEAR_TREE="0"
OUTPUT_IMAGE="/boot/initrd.gz"
MODULE_LIST="zfs"
ROOTDEV="zroot/ROOT/default"
ROOTFS="zfs"
# vim /boot/initrd-tree/init
Veja:
https://github.com/tterpelle/docker-slack64-current-zfs/blob/master/files/installer/init.zfs.patch
# vim /etc/rc.d/rc.S
Veja:
https://github.com/tterpelle/docker-slack64-current-zfs/blob/master/files/installer/rc.S.zfs.patch
# depmod -a 5.15.94
# mkinitrd -k 5.15.94 -F /etc/mkinitrd.conf
# export ZPOOL_VDEV_NAME_PATH=YES
# grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=ZFS
# grub-mkconfig -o /boot/grub/grub.cfg
# zfs create -V 8G -b $(getconf PAGESIZE) -o compression=lz4 -o logbias=throughput -o sync=always -o primarycache=metadata -o secondarycache=none -o com.sun:auto-snapshot=false zroot/swap
# mkswap -f /dev/zvol/zroot/swap
# swapon /dev/zvol/zroot/swap
Adicionar a linha em /etc/fstab:
/dev/zvol/zroot/swap none swap discard 0 0
# umount -lR /mnt
# zfs umount -a
# zpool export zroot
Extra
Aproveitei que o openzfs atualizou para a versão 2.1.10 para anexar essa parte extra.
Quando atualizar o kernel tem que fazer os passos seguintes:
Após o kernel atualizado e instalado/configurado corretamente, antes de reiniciar o sistema:
Em caso de dúvida consulte:
# man installpkg
# man upgradepkg
( atualizar para versão 2.1.10 )
Reinstalar/atualizar o pacote opezfs-versão_SBo.txz no sistema e no /boot/initrd-tree.
Para o sistema é compilação/instalação padrão do slackbuild:
# lftp -c "open https://slackbuilds.org/slackbuilds/15.0/system/ ; mirror openzfs"
# cd openzfs/
# source openzfs.info
# wget $DOWNLOAD
# chmod +x openzfs.SlackBuild
# sh openzfs.SlackBuild
# upgradepkg /tmp/openzfs-2.1.10_5.15.94-x86_64-1_SBo.tgz
Para o /boot/initrd-tree:
# ROOT=/boot/initrd-tree/ upgradepkg /tmp/openzfs-2.1.10_5.15.94-x86_64-1_SBo.tgz
# depmod -a 5.15.94
# mkinitrd -k 5.15.94 -F /etc/mkinitrd.conf
# export ZPOOL_VDEV_NAME_PATH=YES
# grub-mkconfig -o /boot/grub/grub.cfg
Obs.:
- usei o kernel huge do Slackware
- atenção na configuração do arquivo /etc/mkinitrd.conf
- É necessário conhecimento/pesquisa prévia do OpenZFS, pois é um pouco complexo.
- Esse procedimento não tem suporte oficial.
- Use por sua conta e risco.
Complemento
Para a montagem/desmontagem automática dos outros volumes/pools além do root, é necessário usar as alterações disponibilizados abaixo:
- init-slackware64-15-zfs.patch
https://pastebin.com/raw/L2mE2eqJ
- rc.6-slackware64-15-zfs.patch
https://pastebin.com/raw/QUsSWazB
- rc.S-slackware64-15-zfs.patch
https://pastebin.com/raw/90pWMyDc
- rc.zfs-slackware64-15-zfs.patch
https://pastebin.com/raw/mJSJ9P5Z
Arquivos originais:
https://linorg.usp.br/slackware/slackware64-15.0/slackware64/a/mkinitrd-1.4.11-x86_64-28.txz
https://linorg.usp.br/slackware/slackware64-15.0/slackware64/a/sysvinit-scripts-15.0-noarch-8.txz
Referência para essas configurações:
Referências
Obrigado pela atenção, salve!!!
[3] Comentário enviado por edps em 10/05/2023 - 18:35h
Que baita trabalheira @zezao! eu ando preguiçoso, meus sistemas já estão há quase 4 anos instalados, todos rolling-release.
Ótimo trabalho como sempre!
Salve mano.
Valeu.
O negócio é encontrar o caminho depois é só seguir que chega lá.
Aqui como sistema principal Slackware64 current com quase esse tempo, rsrs.
Obrigado pela atenção, salve!!!