Bug 28082 - initrd. Брать название luks устройств из /etc/crypttab
Summary: initrd. Брать название luks устройств из /etc/crypttab
Status: RESOLVED LATER
Alias: None
Product: Sisyphus
Classification: Development
Component: make-initrd-luks (show other bugs)
Version: unstable
Hardware: all Linux
: P3 enhancement
Assignee: Alexey Gladkov
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2012-11-21 16:11 MSK by timonbl4@altlinux.org
Modified: 2018-04-23 19:08 MSK (History)
7 users (show)

See Also:


Attachments
Патч на make-initrd 0.7.9-alt1 (1.66 KB, patch)
2012-11-21 16:17 MSK, 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 timonbl4@altlinux.org 2012-11-21 16:11:49 MSK
В системе есть /etc/crypttab:
luks1    UUID=<uuid1>    none    luks

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

При загрузке получаем: в initrd активируем sda1, называет sda1-luks, init скрипты не находят luks1 и пытается повторно активировать sda1
Comment 1 timonbl4@altlinux.org 2012-11-21 16:17:23 MSK
Created attachment 5643 [details]
Патч на make-initrd 0.7.9-alt1
Comment 2 timonbl4@altlinux.org 2012-11-21 16:24:46 MSK
Патчи на ветку legion/master:
http://git.altlinux.org/people/timonbl4/packages/?p=make-initrd.git;a=shortlog;h=aab942ee02debefa157d0b694767adf723751cf9
Comment 3 Alexey Gladkov 2012-11-21 16:54:50 MSK
+ 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 timonbl4@altlinux.org 2012-11-21 17:30:25 MSK
(В ответ на комментарий №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 Michael Shigorin 2012-11-21 17:55:20 MSK
(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 Alexey Gladkov 2012-11-21 18:04:16 MSK
(В ответ на комментарий №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 Michael Shigorin 2012-12-21 18:12:52 MSK
(In reply to comment #0)
> При загрузке получаем: в initrd активируем sda1, называет sda1-luks, init
> скрипты не находят luks1 и пытается повторно активировать sda1
TWIMC: текущий сизифный installer не создаёт /etc/crypttab, вследствие чего получаем bug #28255.
Comment 8 Alexey Gladkov 2018-04-23 19:08:30 MSK
Reopen if needed