Summary: | Не показывает запрос пароля LUKS | ||
---|---|---|---|
Product: | Sisyphus | Reporter: | Олег Соловьев <mcpain> |
Component: | make-initrd-luks | Assignee: | Alexey Gladkov <legion> |
Status: | CLOSED FIXED | QA Contact: | qa-sisyphus |
Severity: | normal | ||
Priority: | P5 | CC: | aen, darktemplaralt, glebfm, ldv, legion, nbr, placeholder, shaba |
Version: | unstable | ||
Hardware: | x86_64 | ||
OS: | Linux | ||
Bug Depends on: | 34634 | ||
Bug Blocks: |
Description
Олег Соловьев
2020-09-16 13:38:59 MSK
Но при чем тут plymouth? Он просто показывает картинку. Это все происходит в initrd, значит initrd должен корректно эту ситуацию обрабатывать. В systemd есть специальные утилиты systemd-tty-ask-password-agent (/sbin/systemd-tty-ask-password-agent --watch --plymouth) которые умеют работать с plymouth, но в нашем initrd они не используются. В fedora используются и эти утилиты и systemd внутри initrd, поэтому у них все работает. Очень печальное будущее у этой фичи, если для правильной работы plymouth нужен systemd и его утилиты. Судя по всему фича уже давно сломана. Насколько мне известно, в plymouth есть вызов "plymouth ask-for-password", который можно использовать для ввода пароля через plymouth и передачи его куда-либо ещё, например в cryptsetup. Возможно есть и другие вызовы. О зависимостях таких вызовов на systemd мне ничего не известно, т.е. предположительно такой зависимости нет. Пока что я смог выяснить, что plymouth корректно обрабатывает нажатия клавиш и заполняет буфер тем, что надо. При нажатии Enter показывает соответствующее сообщение (с plymouth.debug) Но в cryptsetup оно не передается и прилетает в него почему-то пустой пароль. В Ubuntu cryptsetup работает через FIFO, в Fedora, я так понимаю, тоже. Но пока не могу найти конкретное место, плюс оно работает через какую-то обёртку. Как оно работает - ещё не разобрался. PS мы обсуждаем ошибку 38949 В Fedora используется systemd-cryptsetup, который через libcryptsetup занимается разблокировкой дисков. Насколько я понял, сначала отрабатывают правила udev, которые для каждого luks запускают генератор юнитов, в каждом запускается свой systemd-cryptsetup, а он через libcryptsetup занимается расшифровкой. Должно быть исправлено в 2.11.0. |