Как мне выполнить гибернацию моего ноутбука с Fedora 40 с файлом подкачки на зашифрованной файловой системе btrfs?

Вопрос или проблема

Когда я пытаюсь перейти в режим гибернации, мой ноутбук зависает. Сначала он показывает обои экрана, затем черный экран (как будто собирается перейти в режим гибернации), затем снова обои экрана. После этого он, кажется, зависает; я не могу получить никакой реакции от него в этот момент. Что я упускаю? Спасибо.

Я использую Fedora 40 Linux с ядром 6.11.10-200.fc40.x86_64.

Вот что я попытался сделать до сих пор:

  • Создал swapfile больше, чем zram0 swap + 64 ГБ системной оперативной памяти.
    btrfs filesystem mkswapfile --size 80G /swapfile
  • Отредактировал /etc/fstab и добавил: /swapfile none swap sw 0 0
  • Перезагрузил, выполнил:
    swapon -s
    Filename                                Type            Size            Used            Priority
    /swapfile                               file            83886076        0               -2
    /dev/zram0                              partition       8388604         0               100
  • Посмотрел UUID luks и UUID файловой системы btrfs:
    blkid | grep luks
    /dev/mapper/luks-319127be-114d-4dd2-884b-0a04642c538a: LABEL="fedora" UUID="7a4b5350-4d8a-44ee-83b7-f612701eca51" UUID_SUB="f98c2850-16e0-4144-a4df-da5f1302e0a9" BLOCK_SIZE="4096" TYPE="btrfs"
  • Посмотрел смещение btrfs:
    btrfs inspect-internal map-swapfile -r /swapfile
    134685952
  • vim /etc/default/grub и изменил GRUB_CMDLINE_LINUX (показано здесь с переносом строки):
    GRUB_CMDLINE_LINUX="rd.luks.uuid=luks-319127be-114d-4dd2-884b-0a04642c538a rhgb quiet
    mem_sleep_default=deep resume=UUID=7a4b5350-4d8a-44ee-83b7-f612701eca51 
    resume_offset=134685952"
  • Отредактировал resume.conf: vim /etc/dracut.conf.d/resume.conf
  • Вставил следующее. Обратите внимание на пробелы в первых двух записях:
    add_device+=" /dev/mapper/luks-319127be-114d-4dd2-884b-0a04642c538a "
    add_dracutmodules+=" resume "
    resume="UUID=7a4b5350-4d8a-44ee-83b7-f612701eca51"
    resume_offset="134685952"
  • Пересоздал конфигурацию grub. Пересоздал образ initramfs:
    grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg
    dracut -f
  • vim /etc/systemd/sleep.conf и вставил в него:
    [Sleep]
       AllowHibernation=yes
       HibernateMode=platform shutdown
       HibernateState=disk
  • Теперь выполните: systemctl daemon-reload
  • Перезагрузите
  • В командной строке: systemctl hibernate
  • Машина зависает.

Ответ или решение

Чтобы правильно настроить режим гибернации на вашем ноутбуке с Fedora 40 и зашифрованной файловой системой Btrfs с использованием swap-файла, необходимо учитывать несколько ключевых аспектов. Ваша проблема с зависанием при попытке гибернации может быть связана с некорректными настройками, отсутствующими компонентами или несоответствием размерности swap.

Пошаговая инструкция по настройке гибернации

  1. Размер swap-файла: Убедитесь, что ваш swap-файл достаточного размера для хранения содержимого оперативной памяти. В вашем случае вы указали размер 80 ГБ, что приемлемо для 64 ГБ ОЗУ, но убедитесь, что выделенная память не используется другими процессами.

  2. Форматирование и настройка swap-файла: Вы использовали команду btrfs filesystem mkswapfile --size 80G /swapfile, и это верно. Поэтому убедитесь, что swap-файл правильно настроен в /etc/fstab, как вы уже сделали:

    /swapfile  none    swap    sw    0       0
  3. Проверка UUID и смещения:

    • Убедитесь, что UUID и смещение (offset) правильные. Вы указали корректные параметры в GRUB_CMDLINE_LINUX и resume.conf, но стоит проверить, что ваше смещение (134685952) действительно совпадает с тем, что возвращает btrfs inspect-internal map-swapfile -r /swapfile.
  4. Настройка GRUB: Убедитесь, что вы правильно отредактировали файл /etc/default/grub. Строка должна выглядеть так:

    GRUB_CMDLINE_LINUX="rd.luks.uuid=luks-319127be-114d-4dd2-884b-0a04642c538a rhgb quiet mem_sleep_default=deep resume=UUID=7a4b5350-4d8a-44ee-83b7-f612701eca51 resume_offset=134685952"

    Не забудьте обновить конфигурацию GRUB и initramfs после изменений.

  5. Настройка Dracut: Элементы в resume.conf выглядят корректно. Убедитесь, что все изменения сохранены, а затем пересоздайте initramfs командой:

    dracut -f
  6. Конфигурация systemd: Настройки в /etc/systemd/sleep.conf также должны быть корректными. Убедитесь, что вы добавили указанные строки:

    [Sleep]
    AllowHibernation=yes
    HibernateMode=platform shutdown
    HibernateState=disk

    Затем выполните команду:

    systemctl daemon-reload
  7. Проверка статуса после перезагрузки: После всех настроек перезагрузите систему и выполните команду для проверки статус:

    systemctl status

    Убедитесь, что службы работают корректно.

  8. Тестирование гибернации: Запустите команду для тестирования:

    systemctl hibernate

    Если система снова зависает, возможно, проблема в использовании zram. Попробуйте временно отключить zram, чтобы проверить, улучшит ли это ситуацию.

  9. Логи и диагностика: Если проблема сохраняется, посмотрите логи системы для выявления причин зависания. Это можно сделать с помощью команд:

    journalctl -b -1

    или

    dmesg

Заключение

Следуя этому пошаговому руководству, вы сможете настроить корректную гибернацию на вашем ноутбуке с Fedora 40 на зашифрованной Btrfs с использованием swap-файла. Если проблема не устраняется, рекомендуется проверить наличие обновлений для ядра и других компонентов системы, а также обратиться за поддержкой в сообщество Fedora, где вы сможете получить дополнительные рекомендации.

Оцените материал
Добавить комментарий

Капча загружается...