Вопрос или проблема
У меня была свежая установка 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). Рассмотрим возможные причины и пути решения этой проблемы.
Причины проблемы
- Ошибки в конфигурации файлов
fstab
иcrypttab
. Во время обновления могут быть изменены или повреждены записи в этих файлах, что препятствует корректной инициализации раздела подкачки. - Некорректная работа
initramfs
. Если при генерации образаinitramfs
произошли ошибки (например, из-за неправильных конфигураций или отсутствия файлов), это может повлиять на возможность расшифровки раздела подкачки во время загрузки. - Обновление версии ядра. При обновлениях новая версия ядра может потребовать обновления конфигурации модулей или команд, которые использовались для создания раздела подкачки.
Анализ ваших файлов конфигурации
Ваши конфигурации выглядят следующим образом:
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.
Шаги по решению проблемы
-
Проверьте состояние раздела подкачки:
Используйте командуsudo swapon --show
, чтобы проверить, доступен ли раздел подкачки. -
Обновите критические конфигурации:
Попробуйте изменить запись вfstab
, заменив текущую строку на следующую:/dev/nvme0n1p3 none swap sw 0 0
Также удостоверьтесь, что
crypttab
настроен корректно. Попробуйте изменить способ указания источника:dm_crypt-0 /dev/nvme0n1p3 /dev/urandom swap,initramfs,cipher=aes-xts-plain64,size=256
-
Пересоздайте и обновите initramfs:
Исполните команду для обновленияinitramfs
:sudo update-initramfs -u
Это создаст новый образ загрузки, который будет включать правильные параметры для работы с вашим разделом подкачки.
-
Проверьте наличие ошибок или предупреждений:
Во время загрузки вам могут быть показаны предупреждения, такие как: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
должен соответствовать размеру вашего раздела подкачки в мегабайтах. -
Перезагрузите систему:
После внесения изменений, сделайте полную перезагрузку системы и проверьте доступность раздела подкачки снова с помощьюswapon --show
иfree -m
.
Заключение
Следуя данным шагам, вы сможете диагностировать и, надеюсь, решить проблему с недоступностью раздела подкачки после обновления до Ubuntu 24.10. Если проблема сохраняется, вам следует проверить журналы системных сообщений (например, с помощью dmesg
) и другие системные логи, чтобы получить дополнительную информацию о возможных ошибках на этапе загрузки.