LINUX.ORG.RU

Монтирование LUKS-разделов systemd.

 , , ,


0

2

День добрый. После очередного обновления systemd Arch перестал монтировать LUKS-разделы. Точнее, crypttab читается, пароль запрашивается, но невовремя, когда большинство сервисов уже FAILED, процесс загрузки уходит дальше и падает без примонтированных var и home. В fallback то же самое. Cryptsetup.target и дописанные в него After={что-то} и Requires={что-то} нужного эффекта не приносят в любой конфигурации. TimeoutSec=0 тоже. Что я упускаю?

Cryptsetup.target и дописанные в него After={что-то} и Requires={что-то} нужного эффекта не приносят
Что я упускаю?

Думаю, именно там и упускаешь?

На всякий случай ещё можно сделать mkinicpio -p linux из чрута. Есть такая проблема в Арче: например, обновляется ядро и генерится initramfs, а ПОСЛЕ этого обновляется cryptsetup(lvm2, mdadm,...), вот и могут возникнуть проблемы.

ephecaff
()
Ответ на: комментарий от ephecaff

A common problem is that the mkinitcpio image is generated mid-upgrade. If some component of lvm is updated before the kernel and another is upgraded after, this may lead to broken images. We can't prevent this from happening right now, but OTOH I haven't seen it in a while.

To be on the safe side, run 'mkinitcpio -P' after kernel updates.

P.S. Это из рассылки Arch'а от 22-го октября.

ephecaff
()
Ответ на: комментарий от ephecaff

mkinitcpio сделал и даже проверил хуки ещё раз, вроде всё верно.

Думаю, именно там и упускаешь?

Прошу прощения за наглость, но не подскажете готового решения? Я уже, кажется, всю документацию по этой гадости перерыл и нигде не нашёл правильный порядок загрузки и монтирования разделов. Единственная доступная из коробки утилита выдаёт какой-то сложнейший граф в .svg, от которого мне плохо. По дефолту в cryptsetup.target вообще порядок не прописан.

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

К сожалению, я точно не подскажу. Когда я в последний раз (где-то в районе прошлого НГ) настраивал загрузку с зашифрованного контейнера, в Arch'е ещё не было systemd и контейнер был не LUKS, а PLAIN. В любом слючае нужно смотреть логи, все возможные причены не перепробуешь.

Удачи! Именно в такие моменты наши скиллы и растут =) Ура!

ephecaff
()
Ответ на: комментарий от droserasprout

Не юзаю LUKS, но каков должен быть порядок запуска юнитов? Грубо говоря, какие там есть юниты и что они делают?

intelfx ★★★★★
()

Может зависимости юнитов сломались?

А что показывает systemctl list-dependencies sysinit.target? Он должен быть зависим от cryptsetup.target

disarmer ★★★
()
Ответ на: комментарий от droserasprout

Не, ну это всего в systemd. Речь о том, какие из них принадлежат cryptsetup :)

Кстати, ты почитай арчвики.

https://wiki.archlinux.org/index.php/Dm-crypt https://wiki.archlinux.org/index.php/Dm-crypt/System_Configuration#mkinitcpio

И да: если ты в mkinitcpio.conf прописывал хук systemd, замени обратно на base udev. Или наоборот - хз, какой из способов сработает :)

intelfx ★★★★★
()
Ответ на: комментарий от disarmer

Running in chroot, ignoring request. Но в папке sysinit.target.wants мягкая ссылка на cryptsetup.target имеется. Этого вроде должно быть достаточно.

droserasprout ★★
() автор топика
Ответ на: комментарий от intelfx

Арчвики я как хороший мальчик читаю в первую очередь. Там большинство советов относятся к криптованому руту, а у меня только home и var.

У меня хуки base udev из коробки, сейчас попробую с systemd пересобрать.

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

Ну вот тут вроде бы описано, что надо сделать, чтобы заработало из коробки (для не-rootfs):
https://wiki.archlinux.org/index.php/Dm-crypt/Encrypting_a_Non-Root_File_Syst...

Попробуй.

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от intelfx

Обижаете. Сказал же, что арчвики перерыл насквозь. На всякий случай всё перепроверил букву в букву. Собственно, оно и работало успешно до последнего обновления systemd, cryptsetup и перезагрузки. Канал [testing], если что, не включён.

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

А. Окей.
Смотри.

  • откати все изменения в юнит-файлах (переустанови systemd и всё, что связано с шифрованием разделов)
  • создай /etc/systemd/system/home.mount.d/dependencies.conf с текстом
    [Unit]
    Wants=cryptsetup.target
    After=cryptsetup.target
    
  • повтори пред. шаг для всех зашифрованных разделов, заменяя «home» на путь к точкам их монтирования, причём вместо «/» ставь "-" (т. е. «mnt-something» вместо «/mnt/something»)
intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 2)
Ответ на: комментарий от droserasprout

Ну это не о том. Ты заставил sysinit.target фейлиться в случае фейла любого из юнитов. Вот у тебя всё и упало, когда сфейлилась загрузка модулей. Так что верни wants вместо requires.

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от intelfx

Ага, понял куда дальше копать. systemd-cryptsetup-generator на основании crypttab создаёт юниты при загрузке. Нужно их подправить и засунуть в etc/systemd/system/.

Новый год я, кажется, проведу в консоли.

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

Вот-вот.
Велкам инто линукс :)
С наступающим, что ли.

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