[Hibernate] avec zfs zroot rootfs = zroot zfs
-
- Hankyu
- Messages : 19
- Inscription : mer. 26 janv. 2022, 19:29
[Hibernate] avec zfs zroot rootfs = zroot zfs
Bonjour
Je souhaite informer ArcheLinux d'un problème avec Hibernate sous zfs avec comme système rootfs zroot zfs.
2 points :
1) Hibernate sous ext4 (UEFI) aucun problème à signaler tout marche.
2) Par contre Hibernate sous zfs zroot il y a un problème au niveau du résume en passage de paramètre au kernel. exemple dans le grub : [ GRUB_CMDLINE_LINUX_DEFAULT="loglevel=3 quiet zfs=zroot resume=UUID=f009ca16-96ff-4db4-8759-56cfbbcd5712" ]
Le resume=UUID=UUID de mon SWAP.
Le SWAP n'est pas dans ZFS zroot, mais bien construit dans une partition gpt linux-swap.
Erreur que je constate, le UUID n'est pas reconnu, c'est à dire que le résume démarre avant que le rootfs ne soit démarré. Comme le rootfs de zfs zroot n'a pas démarré avant que le résume fonctionne. la raçine /dev du rootfs n'est pas accessible, ni pour le UUID, et ni pour le device sda, etc...dont du coup le résume de hibernate est perdu.
Voilà pourquoi ça marche sous ext4 et pas en zfs natif zroot en rootfs.
Si vous avez des solutions Je serais heureux de les essayer.
Cordialement
D.Castellacci
Je souhaite informer ArcheLinux d'un problème avec Hibernate sous zfs avec comme système rootfs zroot zfs.
2 points :
1) Hibernate sous ext4 (UEFI) aucun problème à signaler tout marche.
2) Par contre Hibernate sous zfs zroot il y a un problème au niveau du résume en passage de paramètre au kernel. exemple dans le grub : [ GRUB_CMDLINE_LINUX_DEFAULT="loglevel=3 quiet zfs=zroot resume=UUID=f009ca16-96ff-4db4-8759-56cfbbcd5712" ]
Le resume=UUID=UUID de mon SWAP.
Le SWAP n'est pas dans ZFS zroot, mais bien construit dans une partition gpt linux-swap.
Erreur que je constate, le UUID n'est pas reconnu, c'est à dire que le résume démarre avant que le rootfs ne soit démarré. Comme le rootfs de zfs zroot n'a pas démarré avant que le résume fonctionne. la raçine /dev du rootfs n'est pas accessible, ni pour le UUID, et ni pour le device sda, etc...dont du coup le résume de hibernate est perdu.
Voilà pourquoi ça marche sous ext4 et pas en zfs natif zroot en rootfs.
Si vous avez des solutions Je serais heureux de les essayer.
Cordialement
D.Castellacci
Re: [Hibernate] avec zfs zroot rootfs = zroot zfs
Bonjour,
J'ai fait un test ça marche pour moi. Il doit te manquer quelque chose. Par contre attention avec l'hibernation zfs, il n'y a pas de mécanisme de protection efficace d'un dataset en état d'hibernation. Il faut être très rigoureux, un resume sur un dataset ré importé depuis la précédente hibernation et adieu les données !
J'ai fait un test ça marche pour moi. Il doit te manquer quelque chose. Par contre attention avec l'hibernation zfs, il n'y a pas de mécanisme de protection efficace d'un dataset en état d'hibernation. Il faut être très rigoureux, un resume sur un dataset ré importé depuis la précédente hibernation et adieu les données !
-
- Hankyu
- Messages : 19
- Inscription : mer. 26 janv. 2022, 19:29
Re: [Hibernate] avec zfs zroot rootfs = zroot zfs
Bonjour Laurent85
Peux tu me décrire ta configuration
c est a dire si tu as fait
declarer un resume ds le hook mkinitcpio.conf
declarer un resume uuid ds le grub cmd default
creer un swap partition linux swap
declarer ds le fstab le point de montages swap
je n ai pas de dataset
j ai just créé le pool zroot et mis tout mon system racine de dans
Merci de m avoir repondu
Cordialement
D.Castellacci
Peux tu me décrire ta configuration
c est a dire si tu as fait
declarer un resume ds le hook mkinitcpio.conf
declarer un resume uuid ds le grub cmd default
creer un swap partition linux swap
declarer ds le fstab le point de montages swap
je n ai pas de dataset
j ai just créé le pool zroot et mis tout mon system racine de dans
Merci de m avoir repondu
Cordialement
D.Castellacci
Re: [Hibernate] avec zfs zroot rootfs = zroot zfs
J'ai testé l'hibernation avec Arch Linux installé sur un disque usb ssd, ce qui ne devrait pas changer la donne par rapport à un disque interne. J'ai booté dessus et fait un test d'hibernation ainsi qu'un test d'hibernation hybride à partir du menu de déconnexion de l'environnment de bureau Xfce. Les 2 fonctionnent.
J'utilise systemd-boot par défaut comme boot loader, j'ai essayé avec grub ça fonctionne également.
Code : Tout sélectionner
% zpool list
NAME SIZE ALLOC FREE CKPOINT EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
zroot_akx 508G 2.64G 505G - - 0% 0% 1.00x ONLINE -
% zfs list
NAME USED AVAIL REFER MOUNTPOINT
zroot_akx 2.64G 490G 96K none
zroot_akx/ROOT 2.54G 490G 96K none
zroot_akx/ROOT/default 2.54G 490G 2.54G /
zroot_akx/data 99.9M 490G 96K none
zroot_akx/data/home 99.3M 490G 99.3M /home
zroot_akx/data/root 556K 490G 556K /root
% grep '^HOOK' /etc/mkinitcpio.conf
HOOKS=(base udev microcode autodetect modconf kms keyboard keymap consolefont block zfs resume filesystems)
% cat /etc/fstab
LABEL=ESP_akx /boot vfat rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 2
UUID=dd4ce6f8-61ed-4a5f-8ed6-b3e029df98c3 none swap defaults 0 0
% sudo fdisk -l /dev/sda
Disque /dev/sda : 931,51 GiB, 1000204886016 octets, 1953525168 secteurs
Modèle de disque : PSSD T7 Shield
Unités : secteur de 1 × 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 512 octets
taille d'E/S (minimale / optimale) : 512 octets / 33553920 octets
Type d'étiquette de disque : gpt
Identifiant de disque : 99C4175B-15CB-439D-B088-A1324CE763C2
Périphérique Début Fin Secteurs Taille Type
/dev/sda1 2048 12584959 12582912 6G Données de base Microsoft
/dev/sda2 12584960 1082132479 1069547520 510G Racine Solaris
/dev/sda3 1082132480 1116948479 34816000 16,6G Partition d'échange Linux
% blkid | grep '^/dev/sda'
/dev/sda2: LABEL="zroot_akx" UUID="16729064511829640028" UUID_SUB="15665764287788905496" BLOCK_SIZE="4096" TYPE="zfs_member" PARTUUID="8719b71d-8acb-4512-a4d3-d87154b10bd1"
/dev/sda3: UUID="dd4ce6f8-61ed-4a5f-8ed6-b3e029df98c3" TYPE="swap" PARTUUID="0a8444ed-f80a-4551-9e54-787dcbf781b9"
/dev/sda1: LABEL_FATBOOT="ESP_akx" LABEL="ESP_akx" UUID="E330-DCC6" BLOCK_SIZE="512" TYPE="vfat" PARTUUID="9a92c6e9-7f04-4290-9858-75de06cff9e7"
% free -h
total utilisé libre partagé tamp/cache disponible
Mem: 14Gi 2,7Gi 12Gi 39Mi 353Mi 12Gi
Échange: 16Gi 0B 16Gi
Code : Tout sélectionner
% cat /boot/loader/entries/archiso-aui-0-x86_64-linux.conf
title Archuseriso Xfce (x86_64, UEFI)
sort-key 01
linux /vmlinuz-linux
initrd /initramfs-linux-fallback.img
options zfs=zroot_akx/ROOT/default zfs_import_dir=/dev/disk/by-partuuid/8719b71d-8acb-4512-a4d3-d87154b10bd1 zfs_force=1 zfs_boot_only=1 rw resume=UUID=dd4ce6f8-61ed-4a5f-8ed6-b3e029df98c3
% cat /boot/grub/grub.cfg
# Enable serial console
insmod serial
insmod usbserial_common
insmod usbserial_ftdi
insmod usbserial_pl2303
insmod usbserial_usbdebug
if serial --unit=0 --speed=115200; then
terminal_input --append serial
terminal_output --append serial
fi
# Get a human readable platform identifier
if [ "${grub_platform}" == 'efi' ]; then
archiso_platform='UEFI'
if [ "${grub_cpu}" == 'x86_64' ]; then
archiso_platform="x64 ${archiso_platform}"
elif [ "${grub_cpu}" == 'i386' ]; then
archiso_platform="IA32 ${archiso_platform}"
else
archiso_platform="${grub_cpu} ${archiso_platform}"
fi
elif [ "${grub_platform}" == 'pc' ]; then
archiso_platform='BIOS'
else
archiso_platform="${grub_cpu} ${grub_platform}"
fi
# Set default menu entry
default=desktop
timeout=15
timeout_style=menu
# Menu entries
menuentry "Archuseriso Xfce (%ARCH%, ${archiso_platform})" --class arch --class gnu-linux --class gnu --class os --id 'desktop' {
set gfxpayload=keep
search --no-floppy --set=root --label ESP_akx
linux /vmlinuz-linux zfs=zroot_akx/ROOT/default zfs_import_dir=/dev/disk/by-partuuid/8719b71d-8acb-4512-a4d3-d87154b10bd1 zfs_force=1 zfs_boot_only=1 rw resume=UUID=dd4ce6f8-61ed-4a5f-8ed6-b3e029df98c3
initrd /initramfs-linux-fallback.img
}
if [ "${grub_platform}" == "efi" ]; then
if [ "${grub_cpu}" == "x86_64" ]; then
menuentry "Run Memtest86+ (RAM test)" --class memtest86 --class memtest --class gnu --class tool {
set gfxpayload=800x600,1024x768
search --fs-uuid --no-floppy --set=root --label ESP_akx
linux /memtest86+/memtest.efi
}
menuentry "UEFI Shell" --class efi {
search --no-floppy --set=root --label ESP_akx
chainloader /shellx64.efi
}
elif [ "${grub_cpu}" == "i386" ]; then
menuentry "UEFI Shell" --class efi {
search --no-floppy --set=root --label ESP_akx
chainloader /shellia32.efi
}
fi
menuentry 'UEFI Firmware Settings' --id 'uefi-firmware' {
fwsetup
}
fi
menuentry "System shutdown" --class shutdown --class poweroff {
echo "System shutting down..."
halt
}
menuentry "System restart" --class reboot --class restart {
echo "System rebooting..."
reboot
}
-
- Hankyu
- Messages : 19
- Inscription : mer. 26 janv. 2022, 19:29
Re: [Hibernate] avec zfs zroot rootfs = zroot zfs
reBonjour Laurent85
J ai essaye zfs=zroot zfs_force=1 zfs_boot_only=1
Le message d erreur au boot "no pool available to import" n apparait plus
J ai essaye zfs_import_dir= ça ne marche pas chez moi car je n ai pas de dataset.
Peux tu faire un cat de /etc/default/grub
Pour voir les parameters envoye
Merci a toi
Cordialement
D.Castellacci
J ai essaye zfs=zroot zfs_force=1 zfs_boot_only=1
Le message d erreur au boot "no pool available to import" n apparait plus
J ai essaye zfs_import_dir= ça ne marche pas chez moi car je n ai pas de dataset.
Peux tu faire un cat de /etc/default/grub
Pour voir les parameters envoye
Merci a toi
Cordialement
D.Castellacci
-
- Hankyu
- Messages : 19
- Inscription : mer. 26 janv. 2022, 19:29
Re: [Hibernate] avec zfs zroot rootfs = zroot zfs
ReBonjour Laurent85
J ai essaye plusieurs fois
J ai essaye zfs_import_dir et la bonne nouvelle
Ça marche
C est grace a zfs_import_dir ça force la lecture en rootfs
Merci Laurent
Cordialement
J ai essaye plusieurs fois
J ai essaye zfs_import_dir et la bonne nouvelle
Ça marche
C est grace a zfs_import_dir ça force la lecture en rootfs
Merci Laurent
Cordialement
Re: [Hibernate] avec zfs zroot rootfs = zroot zfs
Ok
zfs_import_dir permet d'indiquer au hook zfs sur quelle partition se situe le pool zfs à importer.
zfs_import_dir permet d'indiquer au hook zfs sur quelle partition se situe le pool zfs à importer.
-
- Hankyu
- Messages : 19
- Inscription : mer. 26 janv. 2022, 19:29
Re: [Hibernate] avec zfs zroot rootfs = zroot zfs
Sujet Résolu
-
- Hankyu
- Messages : 19
- Inscription : mer. 26 janv. 2022, 19:29
[Résolu] Hibernate avec zfs zroot rootfs = zroot zfs
Merci a tous