Slackware + OpenZFS on root

Publicado por Jose Mario em 26/04/2023

[ Hits: 1.811 ]

 


Slackware + OpenZFS on root



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!!!

Outras dicas deste autor

Emulador pcsx2 (ps2) no Slackware64-14.2_multilib

Puppy Linux : Instalação e configuração

Script gerenciador e configurador para QEMU

Slackware + Gentoo - Dual-boot sem live-CD/USB

Compilando, instalando e testando ZSNES no Slackware current 64 bits

Leitura recomendada

Definindo Yaourt como "pacman2"

Yum, uma maneira de manter seu RedHat atualizado

Lamp Fedora 21

Abrindo portas do Firewall (IPtables) para Samba 4 (Active Directory)

Gtop no Fedora

  

Comentários
[1] Comentário enviado por patrickernandes em 08/05/2023 - 20:28h

Uma ótima dica de instalação..
Slackware é sempre bem-vindo, é simples e funcional!
E obrigado por me citar na referência ;)

Abraços,

---
Linux para suporte: http://sino.ernandes.info

[2] Comentário enviado por zezaocapoeira em 09/05/2023 - 06:10h


[1] Comentário enviado por patrickernandes em 08/05/2023 - 20:28h

Uma ótima dica de instalação..
Slackware é sempre bem-vindo, é simples e funcional!
E obrigado por me citar na referência ;)

Abraços,

---
Linux para suporte: http://sino.ernandes.info


Salve mano.

Valeu.

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!

[4] Comentário enviado por zezaocapoeira em 12/05/2023 - 05:46h


[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!!!

[5] Comentário enviado por maurixnovatrento em 14/05/2023 - 22:31h


Essa dica poderia virar artigo.

___________________________________________________________
Conhecimento não se Leva para o Túmulo.
https://github.com/mxnt10

[6] Comentário enviado por zezaocapoeira em 19/05/2023 - 03:00h


[5] Comentário enviado por mauricio123 em 14/05/2023 - 22:31h


Essa dica poderia virar artigo.

___________________________________________________________
Conhecimento não se Leva para o Túmulo.
https://github.com/mxnt10


Salve mano.

Valeu pelo feedback.

A documentação, official do OpenZFS, muito completa:

- https://openzfs.github.io/openzfs-docs/

Aqui apenas documentei um roteiro para adicionar o OpenZFS na iso do Slackware e instalar o sistema.

Obrigado pela atenção, salve!!!



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts