LINUX.ORG.RU

linux не видит gpt разметку на luks томе

 ,


0

2

Сабж проявляется, если просто открыть шифрованный том (cryptsetup open /dev/sdX some_name), на котором есть gpt разметка. Но если там немного пошуровать parted-ом, например так:

parted /dev/mapper/some_name resizepart 2 -35s
parted /dev/mapper/some_name resizepart 2 -34s

, то всё прекрасно видит: появляются /dev/mapper/some_namepX. Дело в том, что я перенёс корень на такой раздел, но при загрузке вываливаюсь в busybox из-за сабжа.

Ответ на: комментарий от infomeh

Есть утилита partprobe.

Спасибо! А есть простой способ вкорячить её в grub, initramfs или как там оно? Не хотелось бы провести пол дня в экспериментах, если ответ на поверхности :)

fingolfin
() автор топика

Простого способа не нашел, нашел сложный: надо прописать правило в udev, что бы при подключении шифрованного тома вызывать partprobe. Сам partprobe надо сунуть в initramfs.

Только вот partprobe требует кучу либ, всех их тянуть в initramfs — как-то не труЪ. Есть ли какая-то более легкая утилита с аналогичным функционалом?

fingolfin
() автор топика
Ответ на: комментарий от ABW

Да, на busybox (kubuntu 19). partprobe я уже добавил через скрипт в /etc/initramfs-tools/conf.d/ Это сработало, его теперь можно запустить из бизибокса, но он требует либы. Конечно, можно все либы тоже добавить через скрипт, но не кошерно это. Из альтернатив я знаю только kpartx, завтра поковыряю его.

fingolfin
() автор топика

Итак, после ковыряний забил на kpartx, т.к. оказалось, что все нужные partprobe’у либы уже есть, кроме одной, которую я добавил, и теперь partprobe можно вызывать из initramfs, и он корректно работает.

Но проблема: мне никак не удаётся прикрутить partprobe к udev’у. Пробовал так:

# KERNEL=="dm-0", RUN+="/sbin/partprobe /dev/mapper/crypt1"
# SYMLINK=="mapper/some_name", RUN+="/sbin/partprobe /dev/mapper/crypt1"
# ENV{DM_NAME}=="some_name", RUN+="/sbin/partprobe /dev/mapper/crypt1"
# ENV{DM_NAME}=="some_name", SYMLINK+="udevtest"
SYMLINK=="mapper/some_name", SYMLINK+="udevtest"

Ни один из вариантов не сработал. Некоторые просто не работают, некоторые вешают компьютер наглухо (даже busybox не загружается).

Ну и — вишенка на торте: если файл правил udev имеено такой, как в примере (т. е. последняя строка), то разделы сами определяются через какое-то время нахождения в бизибоксе - пара минут где-то. Вот что это? о_О

fingolfin
() автор топика
Ответ на: комментарий от boowai

Да, lvm это просто, хотя бы потому, что ubuntu из коробки ставится на шифрованный lvm. Но это — дело принципа, и я пока не сдался :)

fingolfin
() автор топика

Победа!

Уррраа, долгожданная победа! Система грузится с gpt раздела на шифрованном luks2-томе! Если кто захочет сделать так, вот как у меня получилось это сделать.

Создаём и подключаем шифрованный том (man cryptsetup), я создал на /dev/sda5 и назвал его «crypt1». Потом размечаем его, создаем разделы parted /dev/mapper/crypt1, создаём fs (я создаю на первом разделе) mkfs.ext4 /dev/mapper/crypt1p1, копируем на него систему, chroot’имся. Смотрим ууид раздела: lsblk -o NAME,UUID (напротив sda5). Правим crypttab и fstab, вот как они выглядят у меня:

# cat /etc/crypttab
crypt1 UUID=[УУИД_РАЗДЕЛА] none luks,discard
# cat /etc/fstab
[... Всякая информация ...]
/dev/mapper/crypt1p1 / ext4 errors=remount-ro 0 1

Пишем правило для udev и скрипт для initramfs-tools:

# echo 'ACTION=="add|change", ENV{DM_NAME}=="crypt1", RUN+="/sbin/kpartx -a /dev/mapper/crypt1"' > /etc/udev/rules.d/56-crypt1.rules
# echo '#!/bin/sh -e' > /etc/initramfs-tools/hooks/kpartx-hook
# echo 'cp /usr/sbin/kpartx $DESTDIR/sbin/' >> /etc/initramfs-tools/hooks/kpartx-hook

Всё! Осталось только update-grub, update-initramfs -u и можно ребутиться!

fingolfin
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.