В системе есть /etc/crypttab: luks1 UUID=<uuid1> none luks init скрипты смотрят в этот файл и проверяют, если luks1 не существует, то активировать UUID=<uuid1> При загрузке получаем: в initrd активируем sda1, называет sda1-luks, init скрипты не находят luks1 и пытается повторно активировать sda1
Created attachment 5643 [details] Патч на make-initrd 0.7.9-alt1
Патчи на ветку legion/master: http://git.altlinux.org/people/timonbl4/packages/?p=make-initrd.git;a=shortlog;h=aab942ee02debefa157d0b694767adf723751cf9
+ LUKS_ROOT_UUID=$(blkid -o value -s UUID "$LUKS_ROOT") Видимо вы не поняли мой ответ по почте. Эти значения можно получить из udev (он их получает через libblkid) в хэндлере. Не нужно лишний раз дёргать одни и те же механизмы для получения одного и того же. + if [ x"$crypttab_block" = x"$LUKS_ROOT" ] || [ x"$crypttab_block" = x"UUID=$LUKS_ROOT_UUID" ]; then Не могли бы вы придерживаться стиля принятого в остальном коде ?
(В ответ на комментарий №3) > + LUKS_ROOT_UUID=$(blkid -o value -s UUID "$LUKS_ROOT") > > Видимо вы не поняли мой ответ по почте. Эти значения можно получить из udev (он > их получает через libblkid) в хэндлере. $ID_FS_UUID_ENC ? > + if [ x"$crypttab_block" = x"$LUKS_ROOT" ] || [ x"$crypttab_block" = > x"UUID=$LUKS_ROOT_UUID" ]; then > > Не могли бы вы придерживаться стиля принятого в остальном коде ? Можете пояснить?
(In reply to comment #4) > > + if [ x"$crypttab_block" = x"$LUKS_ROOT" ] || [ x"$crypttab_block" = > > x"UUID=$LUKS_ROOT_UUID" ]; then > > Не могли бы вы придерживаться стиля принятого в остальном коде ? > Можете пояснить? Видимо, [ x$a = x... ] -- дикая архаика, которая в некоторых местах ещё встречается (не считая случаев вроде configure, когда работать должно и на совсем странном хламе). Возможно, лучше так: > if [ "$crypttab_block" = "$LUKS_ROOT" -o "$crypttab_block" = "UUID=$LUKS_ROOT_UUID" ]; then Хотя я бы м.б. оформил как > case "$crypttab_block" in > "$LUKS_ROOT"|"UUID=$LUKS_ROOT_UUID") ...;; > esac
(В ответ на комментарий №4) > $ID_FS_UUID_ENC ? Угу ... ID_FS_UUID*. Их там насколько я помню несколько под разные цели. Передать её можно точно также как LUKS_ROOT. > > + if [ x"$crypttab_block" = x"$LUKS_ROOT" ] || [ x"$crypttab_block" = > > x"UUID=$LUKS_ROOT_UUID" ]; then > > > > Не могли бы вы придерживаться стиля принятого в остальном коде ? > > Можете пояснить? выражения в if/while не разделяются. x"something" это бесполезный код -> "something". Кстати, в вашем "while read" нет проверки на пустые строки и комментарии. Если с первыми проблем больших нет если верить, что LUKS_ROOT_UUID всегда заполнен, но с вторым можно легко выдать не то.
(In reply to comment #0) > При загрузке получаем: в initrd активируем sda1, называет sda1-luks, init > скрипты не находят luks1 и пытается повторно активировать sda1 TWIMC: текущий сизифный installer не создаёт /etc/crypttab, вследствие чего получаем bug #28255.
Reopen if needed