Slackware + OpenZFS on root

Publicado por Jose Mario em 26/04/2023

[ Hits: 1.741 ]

 


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

GitHub - Gerenciando repositório pelo terminal

Compilando, instalando e testando ZSNES no Slackware current 64 bits

Slackware64-current (boot on zfs / root on zfs)

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

Patchs no i3-WM e Dmenu - "Automagicamente" compilando e aplicando

Leitura recomendada

Resumo LPI 102: Tópico 105 - Shells, Scripts e Administração de Dados

oVirt no Centos 7

Libs C realmente alternativos

Instalando o Linux num pen drive

Imprimindo em uma HP Laserjet 3030 conectada a um Jetdirect através linha de comando

  

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