Своп недоступен после обновления до 24.10

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

У меня была свежая установка Ubuntu 24.04 с ZFS и 8 ГБ разделом подкачки, автоматически созданным установщиком Ubuntu, как /dev/nvme0n1p3.

Я обновился до 24.10, и раздел подкачки недоступен после перезагрузки. Похоже, что swapon не может найти зашифрованный раздел. Что пошло не так во время обновления?

Мой /etc/fstab не изменялся с момента первоначальной установки:

# /etc/fstab: статическая информация о файловой системе.
#
# Используйте 'blkid' для вывода универсального уникального идентификатора для устройства; это может быть использовано с UUID= как более надежный способ именования устройств,
# который работает даже если диски добавляются и удаляются. См. fstab(5).
#
# <файловая система> <точка монтирования>   <тип>  <опции>       <дамп>  <порядок>
/dev/disk/by-id/dm-uuid-CRYPT-PLAIN-dm_crypt-0 none swap sw 0 0
# Используйте `zfs list` для текущей информации о монтировании zfs
# bpool none defaults 0 0
# Используйте `zfs list` для текущей информации о монтировании zfs
# rpool none defaults 0 0
# Используйте `zfs list` для текущей информации о монтировании zfs
# rpool / defaults 0 0
# Используйте `zfs list` для текущей информации о монтировании zfs
# rpool none defaults 0 0
# Используйте `zfs list` для текущей информации о монтировании zfs
# rpool /root defaults 0 0
# Используйте `zfs list` для текущей информации о монтировании zfs
# rpool /home defaults 0 0
# Используйте `zfs list` для текущей информации о монтировании zfs
# bpool /boot defaults 0 0
# /boot/efi был на /dev/nvme0n1p1 во время установки curtin
/dev/disk/by-uuid/6DA7-371B /boot/efi vfat defaults 0 1

А мой /etc/crypttab:

dm_crypt-0 PARTUUID=d5018485-33be-40b8-80a1-9adb3c96ff16 /dev/urandom swap,initramfs

В /etc/crypttab я пытался заменить идентификатор PARTUUID=d5018485-33be-40b8-80a1-9adb3c96ff16 на /dev/nvme0n1p3, но это не решило проблему после перезагрузки.

Я также пробовал добавить эти опции:
swap,initramfs,plain,cipher=aes-xts-plain64,size=256

$ sudo blkid: (Я не показываю множество устройств loop)

/dev/nvme0n1p1: UUID="6DA7-371B" BLOCK_SIZE="512" TYPE="vfat" PARTUUID="604b52dd-b0fc-43d8-8661-3dcb64869220"
/dev/nvme0n1p4: LABEL="rpool" UUID="15673004915406136913" UUID_SUB="7631777870671497537" BLOCK_SIZE="4096" TYPE="zfs_member" PARTUUID="2157f054-6832-42fb-8032-8d2fb89b235b"
/dev/nvme0n1p2: LABEL="bpool" UUID="8036775395222734905" UUID_SUB="16758030276404416519" BLOCK_SIZE="4096" TYPE="zfs_member" PARTUUID="ec3c6766-9115-4fa6-b9d4-793d092a7bb4"
/dev/mapper/keystore-rpool: LABEL="keystore-rpool" UUID="bda5d08f-4300-4ecf-9dd1-9c6958d53738" BLOCK_SIZE="4096" TYPE="ext4"
/dev/nvme0n1p3: PARTUUID="d5018485-33be-40b8-80a1-9adb3c96ff16"
/dev/zd0: UUID="2586988a-ff8b-4fdf-96c1-dd1532b1eb90" TYPE="crypto_LUKS"
$ sudo swapon -a
swapon: не удается открыть /dev/disk/by-id/dm-uuid-CRYPT-PLAIN-dm_crypt-0: Нет такого файла или директории

$ sudo update-initramfs -u -k all
update-initramfs: Генерация /boot/initrd.img-6.11.0-9-generic
cryptsetup: ОШИБКА: dm_crypt-0: Неверное совпадение источника
device-mapper: таблица ioctl на dm_crypt-0 не удалась: Нет такого устройства или адреса
Команда не выполнена.
cryptsetup: ПРЕДУПРЕЖДЕНИЕ: Не удалось определить модули шифрования для загрузки для dm_crypt-0
mkinitramfs: copy_file: config '/etc/zfs/vdev_id.conf' не найден
mkinitramfs: copy_file: config '/etc/zfs/initramfs-tools-load-key' не найден
mkinitramfs: copy_file: config '/etc/zfs/initramfs-tools-load-key.d/*' не найден
update-initramfs: Генерация /boot/initrd.img-6.8.0-48-generic
cryptsetup: ОШИБКА: dm_crypt-0: Неверное совпадение источника
device-mapper: таблица ioctl на dm_crypt-0 не удалась: Нет такого устройства или адреса
Команда не выполнена.
cryptsetup: ПРЕДУПРЕЖДЕНИЕ: Не удалось определить модули шифрования для загрузки для dm_crypt-0
mkinitramfs: copy_file: config '/etc/zfs/vdev_id.conf' не найден
mkinitramfs: copy_file: config '/etc/zfs/initramfs-tools-load-key' не найден
mkinitramfs: copy_file: config '/etc/zfs/initramfs-tools-load-key.d/*' не найден
$ sudo fdisk -l /dev/nvme0n1
Диск /dev/nvme0n1: 3,64 TiB, 4000787030016 байт, 7814037168 секторов
Модель диска: CT4000P3SSD8                            
Единицы: сектора по 1 * 512 = 512 байт
Размер сектора (логический/физический): 512 байт / 512 байт
Размер ввода/вывода (минимальный/оптимальный): 512 байт / 512 байт
Тип метки диска: gpt
Идентификатор диска: 8B4A35DE-55EE-4ECA-99B3-E52D0FAC4A75

Устройство            Начало        Конец    Секторы  Размер Тип
/dev/nvme0n1p1     2048    2203647    2201600    1G EFI Система
/dev/nvme0n1p2  2203648    6397951    4194304    2G Файловая система Linux
/dev/nvme0n1p3  6397952   23175167   16777216    8G Файловая система Linux
/dev/nvme0n1p4 23175168 7814033407 7790858240  3,6T Файловая система Linux
$ lsblk -o +PATH,UUID,PARTUUID
NAME             MAJ:MIN RM   SIZE RO TYPE  МОНТ. ТОЧКИ                         ПУТЬ                       UUID                                 PARTUUID
zd0              230:0    0    20M  0 диск                                      /dev/zd0                   2586988a-ff8b-4fdf-96c1-dd1532b1eb90 
└─keystore-rpool 252:0    0     4M  0 шифр /run/keystore/rpool                 /dev/mapper/keystore-rpool bda5d08f-4300-4ecf-9dd1-9c6958d53738 
nvme0n1          259:0    0   3,6T  0 диск                                      /dev/nvme0n1                                                    
├─nvme0n1p1      259:1    0     1G  0 часть  /boot/efi                           /dev/nvme0n1p1             6DA7-371B                            604b52dd-b0fc-43d8-8661-3dcb64869220
├─nvme0n1p2      259:2    0     2G  0 часть                                      /dev/nvme0n1p2             8036775395222734905                  ec3c6766-9115-4fa6-b9d4-793d092a7bb4
├─nvme0n1p3      259:3    0     8G  0 часть                                      /dev/nvme0n1p3                                                  d5018485-33be-40b8-80a1-9adb3c96ff16
└─nvme0n1p4      259:4    0   3,6T  0 часть                                      /dev/nvme0n1p4             15673004915406136913                 2157f054-6832-42fb-8032-8d2fb89b235b
$ ls -al /dev/mapper/
crw-------  1 root root 10, 236 Nov 15 22:55 control
lrwxrwxrwx  1 root root       7 Nov 15 22:55 keystore-rpool -> ../dm-0
$ ls -al /dev/disk/by-uuid/
lrwxrwxrwx  1 root root  15 Nov 15 22:54 15673004915406136913 -> ../../nvme0n1p4
lrwxrwxrwx  1 root root   9 Nov 15 22:54 2586988a-ff8b-4fdf-96c1-dd1532b1eb90 -> ../../zd0
lrwxrwxrwx  1 root root  15 Nov 15 22:54 6DA7-371B -> ../../nvme0n1p1
lrwxrwxrwx  1 root root  15 Nov 15 22:54 8036775395222734905 -> ../../nvme0n1p2
lrwxrwxrwx  1 root root  10 Nov 15 22:55 bda5d08f-4300-4ecf-9dd1-9c6958d53738 -> ../../dm-0
$ ls -al /dev/block/
lrwxrwxrwx  1 root root    6 Nov 15 22:55 230:0 -> ../zd0
lrwxrwxrwx  1 root root    7 Nov 15 22:55 252:0 -> ../dm-0
lrwxrwxrwx  1 root root   10 Nov 15 22:55 259:0 -> ../nvme0n1
lrwxrwxrwx  1 root root   12 Nov 15 22:55 259:1 -> ../nvme0n1p1
lrwxrwxrwx  1 root root   12 Nov 15 22:55 259:2 -> ../nvme0n1p2
lrwxrwxrwx  1 root root   12 Nov 15 22:55 259:3 -> ../nvme0n1p3
lrwxrwxrwx  1 root root   12 Nov 15 22:55 259:4 -> ../nvme0n1p4
$ sudo parted /dev/nvme0n1 unit GB print free
Модель: CT4000P3SSD8 (nvme)
Диск /dev/nvme0n1: 4001GB
Размер сектора (логический/физический): 512B/512B
Таблица разделов: gpt
Флаги диска: 

Номер  Начало   Конец     Размер    Файловая система  Имя  Флаги
        0,00GB  0,00GB  0,00GB  Свободное место
 1      0,00GB  1,13GB  1,13GB  fat32              boot, esp
 2      1,13GB  3,28GB  2,15GB  zfs
 3      3,28GB  11,9GB  8,59GB
 4      11,9GB  4001GB  3989GB  zfs
        4001GB  4001GB  0,00GB  Свободное место

Кроме того, не знаю, связано ли это, но во время загрузки, когда запрашивается пароль для (зашифрованного ZFS) диска, я получаю следующее предупреждение:
cryptsetup: ПРЕДУПРЕЖДЕНИЕ: Опция 'size' отсутствует в crypttab для картирования plain dm-crypt dm_crypt-0. Пожалуйста, прочитайте /usr/share/doc/cryptsetup-initramfs/README.initramfs.gz и добавьте правильную опцию 'size' в ваш crypttab(5).

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

После обновления до Ubuntu 24.10 у вас возникла проблема с недоступностью раздела подкачки (swap). Рассмотрим возможные причины и пути решения этой проблемы.

Причины проблемы

  1. Ошибки в конфигурации файлов fstab и crypttab. Во время обновления могут быть изменены или повреждены записи в этих файлах, что препятствует корректной инициализации раздела подкачки.
  2. Некорректная работа initramfs. Если при генерации образа initramfs произошли ошибки (например, из-за неправильных конфигураций или отсутствия файлов), это может повлиять на возможность расшифровки раздела подкачки во время загрузки.
  3. Обновление версии ядра. При обновлениях новая версия ядра может потребовать обновления конфигурации модулей или команд, которые использовались для создания раздела подкачки.

Анализ ваших файлов конфигурации

Ваши конфигурации выглядят следующим образом:

fstab

/dev/disk/by-id/dm-uuid-CRYPT-PLAIN-dm_crypt-0 none swap sw 0 0

crypttab

dm_crypt-0 PARTUUID=d5018485-33be-40b8-80a1-9adb3c96ff16 /dev/urandom swap,initramfs

Здесь видно, что в fstab установлен раздел с использованием dm-uuid, что может не соответствовать текущему состоянию системы, учитывая, что при установке используется LUKS.

Шаги по решению проблемы

  1. Проверьте состояние раздела подкачки:
    Используйте команду sudo swapon --show, чтобы проверить, доступен ли раздел подкачки.

  2. Обновите критические конфигурации:
    Попробуйте изменить запись в fstab, заменив текущую строку на следующую:

    /dev/nvme0n1p3 none swap sw 0 0

    Также удостоверьтесь, что crypttab настроен корректно. Попробуйте изменить способ указания источника:

    dm_crypt-0 /dev/nvme0n1p3 /dev/urandom swap,initramfs,cipher=aes-xts-plain64,size=256
  3. Пересоздайте и обновите initramfs:
    Исполните команду для обновления initramfs:

    sudo update-initramfs -u

    Это создаст новый образ загрузки, который будет включать правильные параметры для работы с вашим разделом подкачки.

  4. Проверьте наличие ошибок или предупреждений:
    Во время загрузки вам могут быть показаны предупреждения, такие как:

    cryptsetup: WARNING: Option 'size' missing in crypttab for plain dm-crypt mapping dm_crypt-0.

    Это может указывать на пропуск необходимых параметров в вашем crypttab. Если ваш раздел подкачки имеет размер, укажите его, добавив size:

    dm_crypt-0 PARTUUID=d5018485-33be-40b8-80a1-9adb3c96ff16 /dev/urandom swap,initramfs,size=8192

    Здесь size=8192 должен соответствовать размеру вашего раздела подкачки в мегабайтах.

  5. Перезагрузите систему:
    После внесения изменений, сделайте полную перезагрузку системы и проверьте доступность раздела подкачки снова с помощью swapon --show и free -m.

Заключение

Следуя данным шагам, вы сможете диагностировать и, надеюсь, решить проблему с недоступностью раздела подкачки после обновления до Ubuntu 24.10. Если проблема сохраняется, вам следует проверить журналы системных сообщений (например, с помощью dmesg) и другие системные логи, чтобы получить дополнительную информацию о возможных ошибках на этапе загрузки.

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

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