Bug 28082 - initrd. Брать название luks устройств из /etc/crypttab
: initrd. Брать название luks устройств из /etc/crypttab
Status: RESOLVED LATER
: Sisyphus
(All bugs in Sisyphus/make-initrd-luks)
: unstable
: all Linux
: P3 enhancement
Assigned To:
:
:
:
:
:
  Show dependency tree
 
Reported: 2012-11-21 16:11 by
Modified: 2018-04-23 19:08 (History)


Attachments
Патч на make-initrd 0.7.9-alt1 (1.66 KB, patch)
2012-11-21 16:17, timonbl4@altlinux.org
no flags Details | Diff


Note

You need to log in before you can comment on or make changes to this bug.


Description From 2012-11-21 16:11:49
В системе есть /etc/crypttab:
luks1    UUID=<uuid1>    none    luks

init скрипты смотрят в этот файл и проверяют, если luks1 не существует, то
активировать UUID=<uuid1>

При загрузке получаем: в initrd активируем sda1, называет sda1-luks, init
скрипты не находят luks1 и пытается повторно активировать sda1
------- Comment #1 From 2012-11-21 16:17:23 -------
Created an attachment (id=5643) [details]
Патч на make-initrd 0.7.9-alt1
------- Comment #3 From 2012-11-21 16:54:50 -------
+ 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

Не могли бы вы придерживаться стиля принятого в остальном коде ?
------- Comment #4 From 2012-11-21 17:30:25 -------
(В ответ на комментарий №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
> 
> Не могли бы вы придерживаться стиля принятого в остальном коде ?

Можете пояснить?
------- Comment #5 From 2012-11-21 17:55:20 -------
(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
------- Comment #6 From 2012-11-21 18:04:16 -------
(В ответ на комментарий №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 всегда заполнен,
но с вторым можно легко выдать не то.
------- Comment #7 From 2012-12-21 18:12:52 -------
(In reply to comment #0)
> При загрузке получаем: в initrd активируем sda1, называет sda1-luks, init
> скрипты не находят luks1 и пытается повторно активировать sda1
TWIMC: текущий сизифный installer не создаёт /etc/crypttab, вследствие чего
получаем bug #28255.
------- Comment #8 From 2018-04-23 19:08:30 -------
Reopen if needed