Bug 34865 - make-initrd не помещает модули crc32c в initrd
Summary: make-initrd не помещает модули crc32c в initrd
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: make-initrd (show other bugs)
Version: unstable
Hardware: all Linux
: P3 major
Assignee: Alexey Gladkov
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks: 34854
  Show dependency tree
 
Reported: 2018-04-28 09:17 MSK by Vitaly Chikunov
Modified: 2018-04-30 17:51 MSK (History)
11 users (show)

See Also:


Attachments
Bug repport (961.61 KB, application/x-bzip)
2018-04-28 13:37 MSK, Leonid Krivoshein
no flags Details
4.16.5-un-def bug report (970.18 KB, application/x-bzip)
2018-04-28 13:51 MSK, Leonid Krivoshein
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Vitaly Chikunov 2018-04-28 09:17:48 MSK
В обсуждении #34854 выяснилось, что make-initrd не помещает модули crc32c в initrd. crc32c нужны с версии ядра 4.16 для ext4.
Comment 1 Leonid Krivoshein 2018-04-28 11:48:30 MSK
Мой патч был к make-initrd для p8, а не для Сизифа.

make-initrd оперирует списком названий модулей, который ему скармливают. Либо определяет необходимые модули по той корневой системе, которая сейчас подключена и зависимостям из мета-данных модулей -- как раз наш случай. То есть в самом пакете make-initrd нет ни названий, ни списков модулей, которые должны попадать в initramfs, а алгоритм автоугадава основывается на зависимостях, определяемых при сборке ядра. Таким образом чинить это в пакете make-initrd -- заведомо неправильное решение. Очень неподходящее место, куда стоит прибивать гвоздями crc32c. Если Антон Бояршинов скажет, что всё сделано правильно, тогда поверю и разведу руками. Пока же crc32c стал единственным модулем, название которого попало в make-initrd.
Comment 2 AEN 2018-04-28 12:09:44 MSK
Леонид, бага сформулирована корректно. Как ее исправлять -- другой вопрос. Давайте подождем, что скажет legion.
Comment 3 Leonid Krivoshein 2018-04-28 12:21:03 MSK
Наверное он скажет "man 8 depmod" :)
Comment 4 Vitaly Chikunov 2018-04-28 12:30:51 MSK
Зависимость между ext4 и crc32c не через depmod, а через произвол Редхата.

https://bugzilla.kernel.org/show_bug.cgi?id=199183#c4
Comment 5 Vitaly Chikunov 2018-04-28 12:34:37 MSK
(In reply to comment #4)
> произвол Редхата.

Хотя, редхат может и не виноват, но он упоминался с коммите. Вот кто виноват https://en.wikipedia.org/wiki/Theodore_Ts%27o
Comment 6 Alexey Gladkov 2018-04-28 13:08:17 MSK
Сделайте пожалуйста следующее:

$ git clone http://git.altlinux.org/people/legion/packages/make-initrd.git
$ cd make-initrd.git
$ MKLOCAL=1 make
$ sudo ./utils/make-initrd bug-report

и приложите сюда полученный архив.

Это известная проблема. Такая неявная зависимость существует c 2013 и для неё я уже создавал механизм учёта:

http://git.altlinux.org/people/legion/packages/make-initrd.git?p=make-initrd.git;a=blob;f=kmodule.deps.d/add-deps-libcrc32c;h=ebbdc748e71f88085b78f9b134efc3225295963e;hb=HEAD

Очевидно, в ядре расширили список тех, кто неявно требует crc32c. Нужно дополнить данный хук или создать ещё один.
Comment 7 Vitaly Chikunov 2018-04-28 13:33:05 MSK
> Так что мешает повесить багу на make-initrd с корректной формулировкой и
заголовком?

Да вот такие просьбы на фидбэк, которые начинают прилетать не по адресу.

(In reply to comment #6)
> Сделайте пожалуйста следующее:

Я лишь завел баг по приказу АЕН. Саму проблему не воспроизводил. В 34854 передал просьбу сюда ответить тех кто с ней столкнулся.

А в скрытые зависимости, добавить, думаю, нужно ext4. (Наличие драйвера проверяется в ext4_fill_super).
Comment 8 Alexey Gladkov 2018-04-28 13:36:57 MSK
Предполагаю, что фикс должен быть типа:

<<<
diff --git a/kmodule.deps.d/add-deps-libcrc32c b/kmodule.deps.d/add-deps-libcrc32c
index ebbdc74..a829ec8 100755
--- a/kmodule.deps.d/add-deps-libcrc32c
+++ b/kmodule.deps.d/add-deps-libcrc32c
@@ -9,7 +9,7 @@ LIBCRC32C="$(depinfo -D "libcrc32c" 2>/dev/null |cut -f1 -d\ )"
 
 case "$LIBCRC32C" in
        builtin) pattern='^(xfs|btrfs) ' ;;
-       module)  pattern='^libcrc32c '   ;;
+       module)  pattern='^(ext4|libcrc32c) ' ;;
        *) exit 0 ;;
 esac
 
>>>
Comment 9 Leonid Krivoshein 2018-04-28 13:37:25 MSK
Created attachment 7522 [details]
Bug repport
Comment 10 AEN 2018-04-28 13:39:23 MSK
(В ответ на комментарий №9)
> Created an attachment (id=7522) [details]
> Bug repport

Спасибо!
Comment 11 Leonid Krivoshein 2018-04-28 13:51:57 MSK
Created attachment 7523 [details]
4.16.5-un-def bug report

То был отчёт до обновления ядра (для сравнения). А это уже более интересный (4.16.5-un-def без crc32c). Вот что выводится при его создании:

$ update-kernel -t un-def

Config file: /etc/initrd.mk
Generating module dependencies on host ...
Creating initrd image ...
Adding plymouth support ...
Adding modules ...
Adding modules (preload) ...
Adding rescue modules ...
Adding module dependencies ...
Generating module dependencies in image ...
Adding modules to run inside qemu ...
Adding initrd shell support (shell mode) ...
Adding sysvinit support ...
Packed modules: 8139cp 8390 9pnet 9pnet_virtio ahci ata_generic ata_piix autofs4 caif_virtio cdrom crc16 crypto_engine drm drm_kms_helper e100 e1000 evdev ext4 fscrypto hid hid-generic i2c-core input-leds intel-agp intel-gtt jbd2 libahci libata mbcache mii ne2k-pci pata_acpi pcnet32 rng-core rpmsg_core scsi_mod serio_raw sis-agp sr_mod ttm via-agp virtio virtio_balloon virtio_blk virtio_console virtio_crypto virtio-gpu virtio_input virtio_mmio virtio_net virtio_pci virtio_ring virtio-rng virtio_rpmsg_bus virtio_scsi vmw_vsock_virtio_transport vmw_vsock_virtio_transport_common vringh vsock 
Sorting sysvinit services ...
Packing image to archive ...
Writing build info files ...
Compressing image ...
Adding CPU microcode ...
Installing image ...
Removing work directory ...

Image is saved as /boot/initrd-4.16.5-un-def-alt1.img
Comment 12 Leonid Krivoshein 2018-04-28 14:04:48 MSK
(В ответ на комментарий №6)
> Это известная проблема. Такая неявная зависимость существует c 2013
> и для неё я уже создавал механизм учёта:

А я вчера гадал, для чего эта хренобобина.))

> Очевидно, в ядре расширили список тех, кто неявно требует crc32c. Нужно
> дополнить данный хук или создать ещё один.

Ломают ядерщики, а чинить нам! Получается, я был неправ. В том смысле, что предлагается чинить всё-таки средствами make-initrd.
Comment 13 Alexey Gladkov 2018-04-28 14:11:36 MSK
Нашёл ещё одну проблему в depinfo из make-initrd. Он не учитывает softdeps.
Comment 14 Leonid Krivoshein 2018-04-28 14:31:06 MSK
(В ответ на комментарий №6)
> Сделайте пожалуйста следующее:
> ...
> и приложите сюда полученный архив.
> 

Приложенного достаточно? Просто я делал в сизифной виртуалке немного иначе. На случай, если придётся повторить:

$ su -
# apt-get update
# apt-get install git-core /usr/bin/x86_64-alt-linux-gcc zlib-devel libkmod-devel bzlib-devel liblzma-devel libzstd-devel help2man
# exit
$ git clone git://git.altlinux.org/people/legion/packages/make-initrd.git
$ cd make-initrd
$ MKLOCAL=1 make
$ su -
# update-kernel -t un-def
# /home/<USERNAME>/make-initrd/utils/make-initrd bug-report -k 4.16.5-un-def-alt1
Comment 15 Alexey Gladkov 2018-04-28 14:42:02 MSK
(В ответ на комментарий №12)
> > Очевидно, в ядре расширили список тех, кто неявно требует crc32c. Нужно
> > дополнить данный хук или создать ещё один.
> 
> Ломают ядерщики, а чинить нам! Получается, я был неправ. В том смысле, что
> предлагается чинить всё-таки средствами make-initrd.

Они не ломают. Если у вас будут в initrd все модули, которые были скомпилированы для данного ядра, то всё будет работать. Ядро запросит нужный модуль. С точки зрения разработчиков ядра всё правильно и продолжает работать.

Трудности начинаются у проектов, которые хотят построить замыкание по опредённым критериям. В этой области разработчики ядра помощи не обещают.

К слову, в Fedora и Ubuntu по умолчанию в initrd кладут все модули ядра. Правда за всё нужно платить. У нас расжатый и распакованый образ initrd занимает примерно 20М, у них столько (~23M) весит только сжатый архив.
Comment 16 Alexey Gladkov 2018-04-28 14:42:45 MSK
(В ответ на комментарий №14)
> Приложенного достаточно? Просто я делал в сизифной виртуалке немного иначе.

Пока да. Спасибо.
Comment 17 Andrew Savchenko 2018-04-28 15:05:06 MSK
Ну спасибо, коллеги. Рутинно обновил систему и не смог загрузится на 4.16.5-un-def.

По-моему всё предельно просто: сейчас совершенно не важно, кто виноват и как правильно. Важно, чтоб система загружалась. Поэтому нужно вкомпилить модуль прямо в ядро или откатится на более старое ядро, убрав проблемное из Сизифа..
Comment 18 Leonid Krivoshein 2018-04-28 15:11:05 MSK
(В ответ на комментарий №17)
> Важно, чтоб система загружалась.

Сейчас в Сизифе обходное решение предельно простое:

# echo "MODULES_ADD += crc32c" >> /etc/initrd.mk
# echo "MODULES_PRELOAD += crc32c" >> /etc/initrd.mk
# make-initrd
Comment 19 Alexey Gladkov 2018-04-28 15:16:08 MSK
(В ответ на комментарий №17)
> Ну спасибо, коллеги. Рутинно обновил систему и не смог загрузится на
> 4.16.5-un-def.
> 
> По-моему всё предельно просто: сейчас совершенно не важно, кто виноват и как
> правильно. Важно, чтоб система загружалась. Поэтому нужно вкомпилить модуль
> прямо в ядро или откатится на более старое ядро, убрав проблемное из Сизифа..

Пожалуйста, не нужно тут этого обсуждать. Выбрать старое ядро вы можете в загрузчике.
Comment 20 Dmitry V. Levin 2018-04-28 17:22:00 MSK
$ git grep -F 'crypto_alloc_shash("crc32c",'
arch/powerpc/crypto/crc-vpmsum_test.c:  crc32c_tfm = crypto_alloc_shash("crc32c", 0, 0);
drivers/infiniband/hw/i40iw/i40iw_utils.c:      tfm = crypto_alloc_shash("crc32c", 0, 0);
fs/ext4/super.c:        sbi->s_chksum_driver = crypto_alloc_shash("crc32c", 0, 0);
fs/jbd2/journal.c:              journal->j_chksum_driver = crypto_alloc_shash("crc32c", 0, 0);
fs/jbd2/journal.c:                      journal->j_chksum_driver = crypto_alloc_shash("crc32c",
lib/libcrc32c.c:        tfm = crypto_alloc_shash("crc32c", 0, 0);
Comment 21 Dmitry V. Levin 2018-04-28 17:27:43 MSK
Во все версии make-initrd, которые знают про возможную неявную зависимость ext4 на crc32c, нужно добавить некий Provides, например,
Provides: make-initrd-crc32c = 1

Тогда мы во все ядра, в которых есть эта неявная зависимость на crc32c, поставим зависимость на make-initrd-crc32c >= 1

Нумерация этого Provides может пригодиться в будущем.
Comment 22 Alexey Gladkov 2018-04-28 17:29:11 MSK
(В ответ на комментарий №20)
> $ git grep -F 'crypto_alloc_shash("crc32c",'
> fs/ext4/super.c:        sbi->s_chksum_driver = crypto_alloc_shash("crc32c", 0,
> 0);
> lib/libcrc32c.c:        tfm = crypto_alloc_shash("crc32c", 0, 0);

Именно. Но хочет он не libcrc32c, а crc16.

# modinfo ext4 |grep depends
depends:        mbcache,fscrypto,jbd2,crc16
Comment 23 Alexey Gladkov 2018-04-28 17:33:17 MSK
(В ответ на комментарий №21)
> Во все версии make-initrd, которые знают про возможную неявную зависимость ext4
> на crc32c

Я написал хук/хак для этого.

> нужно добавить некий Provides, например,
> Provides: make-initrd-crc32c = 1

ОК. Добавлю в следующей версии.

> Тогда мы во все ядра, в которых есть эта неявная зависимость на crc32c,
> поставим зависимость на make-initrd-crc32c >= 1

Кстати, сейчас у модулей есть softdeps, которые будут учитываться в новом make-initrd. Вы можете добавить:

softdep ext4 pre: libcrc32c
Comment 24 Dmitry V. Levin 2018-04-28 17:34:15 MSK
(In reply to comment #22)
> (В ответ на комментарий №20)
> > $ git grep -F 'crypto_alloc_shash("crc32c",'
> > fs/ext4/super.c:        sbi->s_chksum_driver = crypto_alloc_shash("crc32c", 0,
> > 0);
> > lib/libcrc32c.c:        tfm = crypto_alloc_shash("crc32c", 0, 0);
> 
> Именно. Но хочет он не libcrc32c, а crc16.

Ему нужен Synchronous Cryptographic Hash по имени "crc32c", он не знает, кто его предоставляет, и его это не интересует.

> # modinfo ext4 |grep depends
> depends:        mbcache,fscrypto,jbd2,crc16

Это другое, см. git grep -Fw crc16 fs/ext4
Comment 25 Dmitry V. Levin 2018-04-28 17:35:48 MSK
(In reply to comment #23)
> Кстати, сейчас у модулей есть softdeps, которые будут учитываться в новом
> make-initrd. Вы можете добавить:
> 
> softdep ext4 pre: libcrc32c

Как это правильно сделать?
Comment 26 Alexey Gladkov 2018-04-28 18:01:21 MSK
(В ответ на комментарий №25)
> Как это правильно сделать?

Вот так:

diff --git a/fs/ext4/super.c b/fs/ext4/super.c
index 7c46693..c79de2a 100644
--- a/fs/ext4/super.c
+++ b/fs/ext4/super.c
@@ -5860,5 +5860,6 @@ static void __exit ext4_exit_fs(void)
 MODULE_AUTHOR("Remy Card, Stephen Tweedie, Andrew Morton, Andreas Dilger, Theodore Ts'o and others");
 MODULE_DESCRIPTION("Fourth Extended Filesystem");
 MODULE_LICENSE("GPL");
+MODULE_SOFTDEP("pre: libcrc32c");
 module_init(ext4_init_fs)
 module_exit(ext4_exit_fs)
Comment 27 Dmitry V. Levin 2018-04-28 18:08:54 MSK
(In reply to comment #26)
> (В ответ на комментарий №25)
> > Как это правильно сделать?
> 
> Вот так:
> 
> diff --git a/fs/ext4/super.c b/fs/ext4/super.c
> index 7c46693..c79de2a 100644
> --- a/fs/ext4/super.c
> +++ b/fs/ext4/super.c
> @@ -5860,5 +5860,6 @@ static void __exit ext4_exit_fs(void)
>  MODULE_AUTHOR("Remy Card, Stephen Tweedie, Andrew Morton, Andreas Dilger,
> Theodore Ts'o and others");
>  MODULE_DESCRIPTION("Fourth Extended Filesystem");
>  MODULE_LICENSE("GPL");
> +MODULE_SOFTDEP("pre: libcrc32c");

А почему именно libcrc32c?  libcrc32c экспортирует символ crc32c, но ext4 использует не этот символ, а crypto_alloc_shash("crc32c", 0, 0) напрямую.
Мне кажется, что softdep должен быть таким же, как и в lib/libcrc32c.c
Comment 28 Alexey Gladkov 2018-04-28 18:33:55 MSK
(В ответ на комментарий №27)
> А почему именно libcrc32c?  libcrc32c экспортирует символ crc32c, но ext4
> использует не этот символ, а crypto_alloc_shash("crc32c", 0, 0) напрямую.
> Мне кажется, что softdep должен быть таким же, как и в lib/libcrc32c.c

Да, так правильнее.
Comment 29 Dmitry V. Levin 2018-04-28 18:55:57 MSK
Мне кажется, что MODULE_SOFTDEP("pre: crc32c") в ext4 - это abuse маханизма, и апстримный мантейнер ext4 не согласится это добавлять.

По сути зависимость в ext4 реализована не soft, а очень даже hard.
В ядре есть механизм указать эту зависимость правильно?
Comment 30 Alexey Gladkov 2018-04-28 19:26:19 MSK
(В ответ на комментарий №29)
> Мне кажется, что MODULE_SOFTDEP("pre: crc32c") в ext4 - это abuse маханизма, и
> апстримный мантейнер ext4 не согласится это добавлять.

Ты неправ. Инициализация опциональная, если есть фича METADATA_CSUM или EA_INODE.

<<<
    /* Load the checksum driver */
    if (ext4_has_feature_metadata_csum(sb) ||
        ext4_has_feature_ea_inode(sb)) {
        sbi->s_chksum_driver = crypto_alloc_shash("crc32c", 0, 0);
        if (IS_ERR(sbi->s_chksum_driver)) {
            ext4_msg(sb, KERN_ERR, "Cannot load crc32c driver.");
            ret = PTR_ERR(sbi->s_chksum_driver);
            sbi->s_chksum_driver = NULL;
            goto failed_mount;
        }
    }
>>>

> По сути зависимость в ext4 реализована не soft, а очень даже hard.
> В ядре есть механизм указать эту зависимость правильно?

Это не явное указание т.к. crc32c предоставляют несколько модулей.

# grep 'alias crc32c ' modules.alias
alias crc32c crc32c_intel
alias crc32c crc32c_generic
Comment 31 Alexey Gladkov 2018-04-28 19:35:48 MSK
(В ответ на комментарий №29)
> По сути зависимость в ext4 реализована не soft, а очень даже hard.
> В ядре есть механизм указать эту зависимость правильно?

Если я правильно понимаю, что зависимость на libcrc32c появляется автоматически в случае явного использования crc32c. Чего-нибудь из <linux/crc32c.h>. Но я нигде не видел зависимости именно на crc32c в modinfo.
Comment 32 Dmitry V. Levin 2018-04-28 21:10:00 MSK
(In reply to comment #30)
> (В ответ на комментарий №29)
> > Мне кажется, что MODULE_SOFTDEP("pre: crc32c") в ext4 - это abuse маханизма, и
> > апстримный мантейнер ext4 не согласится это добавлять.
> 
> Ты неправ. Инициализация опциональная, если есть фича METADATA_CSUM или
> EA_INODE.
> 
> <<<
>     /* Load the checksum driver */
>     if (ext4_has_feature_metadata_csum(sb) ||
>         ext4_has_feature_ea_inode(sb)) {
>         sbi->s_chksum_driver = crypto_alloc_shash("crc32c", 0, 0);
>         if (IS_ERR(sbi->s_chksum_driver)) {
>             ext4_msg(sb, KERN_ERR, "Cannot load crc32c driver.");
>             ret = PTR_ERR(sbi->s_chksum_driver);
>             sbi->s_chksum_driver = NULL;
>             goto failed_mount;
>         }
>     }
> >>>

Ты пропустил, что этой необязательности присвоили CVE, исправили и сбэкпортили во все мыслимые и немыслимые ядра.
Comment 33 Dmitry V. Levin 2018-04-28 21:10:50 MSK
Коммит v4.16-rc1-18-ga45403b51582 ровно об этом.
Comment 34 Dmitry V. Levin 2018-04-28 21:17:55 MSK
(In reply to comment #31)
> (В ответ на комментарий №29)
> > По сути зависимость в ext4 реализована не soft, а очень даже hard.
> > В ядре есть механизм указать эту зависимость правильно?
> 
> Если я правильно понимаю, что зависимость на libcrc32c появляется автоматически
> в случае явного использования crc32c. Чего-нибудь из <linux/crc32c.h>. Но я
> нигде не видел зависимости именно на crc32c в modinfo.

Зависимость на libcrc32c появляется при использовании символов, предоставляемых lib/libcrc32c.c:

$ grep EXPORT_SYMBOL lib/libcrc32c.c
EXPORT_SYMBOL(crc32c);
EXPORT_SYMBOL(crc32c_impl);

У ext4 теперь зависимость на провайдера crc32c.
Да, провайдер может быть какой угодно, но зависимость по сути жёсткая.

При этом зависимости на libcrc32c у ext4 нет не только формальной, но и фактической.
Comment 35 Dmitry V. Levin 2018-04-28 21:56:40 MSK
(In reply to comment #32)
> Ты пропустил, что этой необязательности присвоили CVE, исправили и сбэкпортили
> во все мыслимые и немыслимые ядра.

окей, ещё не во все, пока "только" v4.17-rc1~134^2~11, v4.16.4~102, v4.14.36~84.
Comment 36 Alexey Gladkov 2018-04-28 22:19:56 MSK
(В ответ на комментарий №32)
> Ты пропустил, что этой необязательности присвоили CVE, исправили и сбэкпортили
> во все мыслимые и немыслимые ядра.

Да, у меня не самая свежая копия была.

> У ext4 теперь зависимость на провайдера crc32c.
> Да, провайдер может быть какой угодно, но зависимость по сути жёсткая.
> 
> При этом зависимости на libcrc32c у ext4 нет не только формальной, но и
> фактической.

Да, но я не видел, чтобы ставили зависимость на алиас crc32c. В этом наверное и корень проблемы. Для указания алгоритма по имени сейчас используют softdep:

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/fs/cifs/cifsfs.c#n1491

Это плохой вариант, но он вроде как единственный сейчас.
Comment 37 Dmitry V. Levin 2018-04-28 22:53:54 MSK
(In reply to comment #36)
> (В ответ на комментарий №32)
> 
> > У ext4 теперь зависимость на провайдера crc32c.
> > Да, провайдер может быть какой угодно, но зависимость по сути жёсткая.
> > 
> > При этом зависимости на libcrc32c у ext4 нет не только формальной, но и
> > фактической.
> 
> Да, но я не видел, чтобы ставили зависимость на алиас crc32c. В этом наверное и
> корень проблемы. Для указания алгоритма по имени сейчас используют softdep:
> 
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/fs/cifs/cifsfs.c#n1491
> 
> Это плохой вариант, но он вроде как единственный сейчас.

Отправил https://lkml.kernel.org/r/20180428195044.GA14126@altlinux.org
Посмотрим, что ответят, но, видимо, завязываться на это не надо.
Comment 38 Vitaly Chikunov 2018-04-28 23:21:39 MSK
Я согласен с тем, что это никакой не softdep по смыслу.

> The softdep command allows you to specify soft, or optional, module dependencies.  modulename can be used without these optional modules installed, but usually with some features missing.
Comment 39 Alexey Gladkov 2018-04-28 23:26:13 MSK
(В ответ на комментарий №37)
> Отправил https://lkml.kernel.org/r/20180428195044.GA14126@altlinux.org

Спасибо!

> Посмотрим, что ответят, но, видимо, завязываться на это не надо.

Конечно нельзя. Я уже закоммитил:

http://git.altlinux.org/people/legion/packages/make-initrd.git?p=make-initrd.git;a=commitdiff;h=5eebc7a50ac345402a7d8ba0a31c8e4207fd35cf

правда там с libcrc32c. Хоть и не большая ошибка, но всё-таки. Я проверил на bug-report, что crc32c & co добавляются.
Comment 40 Leonid Krivoshein 2018-04-28 23:42:11 MSK
(В ответ на комментарий №37)
> Отправил https://lkml.kernel.org/r/20180428195044.GA14126@altlinux.org

Круто!

(В ответ на комментарий №39)
> > Посмотрим, что ответят, но, видимо, завязываться на это не надо.
> Конечно нельзя.

Выходит, make-initrd должен учитывать такие косяки с зависимостями.


> Я уже закоммитил

У меня только два практических вопроса. Как я понимаю, Алексей, Вы сами поправите в Сизифе make-initrd? Нужно ли мне портировать это в p8? Там, где я гвоздь не в ту дырку загнал?
Comment 41 Alexey Gladkov 2018-04-28 23:54:34 MSK
(В ответ на комментарий №40)
> Выходит, make-initrd должен учитывать такие косяки с зависимостями.

Я не люблю людей и очень не хотел бы учитывать их косяки, но вы же сами видите, что если этого не делать, то не система не будет грузиться )) Так что приходится.

Задача make-initrd сделать всё, чтобы корень нашёлся и управление было передано иниту с этого корня. Понятно, что не на всех ядрах и конфигурациях такое возможно, но нужно стараться ))

> У меня только два практических вопроса. Как я понимаю, Алексей, Вы сами
> поправите в Сизифе make-initrd?

Да.

> Нужно ли мне портировать это в p8? Там, где я
> гвоздь не в ту дырку загнал?

Вот тут я вам ответить не могу. Там свои мантейнеры и свои начальники.
Comment 42 Anton Farygin 2018-04-28 23:58:06 MSK
в p8 другой make-initrd. Лёня, можешь туда бэкпортировать нужные изменения.
Comment 43 Leonid Krivoshein 2018-04-29 00:17:29 MSK
(В ответ на комментарий №42)
> в p8 другой make-initrd. Лёня, можешь туда бэкпортировать нужные изменения.

Хорошо, сейчас сделаю сразу без test-only.
Comment 44 Vitaly Chikunov 2018-04-29 00:37:06 MSK
(In reply to comment #37)
> Отправил https://lkml.kernel.org/r/20180428195044.GA14126@altlinux.org
> Посмотрим, что ответят, но, видимо, завязываться на это не надо.

В свою очередь, отправил в https://bugzilla.kernel.org/show_bug.cgi?id=199183#c7
Comment 45 Leonid Krivoshein 2018-04-29 01:37:43 MSK
(В ответ на комментарий №42)
> Лёня, можешь туда бэкпортировать нужные изменения.

Task #205415 готов, но нужно проверять, прежде чем апрувить. В принципе, уже не к спеху, оно и со старым гвоздём какое-то время будет нормально работать...
Comment 46 Anton Farygin 2018-04-29 07:18:42 MSK
в p8 без проверки сейчас ничего не попадает.
Comment 47 Repository Robot 2018-04-29 16:53:20 MSK
make-initrd-2.0.8-alt1 -> sisyphus:

Sun Apr 29 2018 Alexey Gladkov <legion@altlinux.ru> 2.0.8-alt1
- Add wrapper to read modalias with and without new line at the end.
- Add new way to add kernel modules into initramfs.
- Add new way how to put programs into initrd.
- Add hidden ext4 dependency (ALT#34865).
- Output information about image size.
- Require kinit-utils >= 1.5.25-alt5 (ALT#34457).
- Runtime changes:
  + Add timeout after all events to avoid race conditions.
  + Allow parameter to have more than one name in /proc/cmdline.
  + Load kernel parameters from all system configuration files.
- LUKS feature changes:
  + Make luks-dev an array.
- Ucode feature changes:
  + Add optional dependency to compress feature.
- Utilities:
  + depinfo: Add softdeps to dependencies.
- Command arguments:
  + make-initrd: Check for unknown features in config.
  + bug-report: Improve bug report creation.
  + bug-report: Add kernel modules dependencies.
- New:
  + Add modules-filesystem feature.
  + Add modules-network feature.
- Old:
  + Remove lxc feature.
Comment 48 Leonid Krivoshein 2018-04-29 18:33:05 MSK
(В ответ на комментарий №47)
> make-initrd-2.0.8-alt1 -> sisyphus:
> 
> Sun Apr 29 2018 Alexey Gladkov <legion@altlinux.ru> 2.0.8-alt1
> - Utilities:
>   + depinfo: Add softdeps to dependencies.

Вот это я в p8 не бэкпортировал. Наверное, стоит?

> - New:
>   + Add modules-filesystem feature.
>   + Add modules-network feature.

Алексей, может стоит описать на ВиКи детали и анонсировать в devel@? Очень нужная вещь! Я бы даже предложил бэкпортировать в p8.
Comment 49 Alexey Gladkov 2018-04-29 21:02:19 MSK
(В ответ на комментарий №48)
> (В ответ на комментарий №47)
> > make-initrd-2.0.8-alt1 -> sisyphus:
> > 
> > Sun Apr 29 2018 Alexey Gladkov <legion@altlinux.ru> 2.0.8-alt1

Блин, наша сборочница всё ещё светит полные адреса.

> > - Utilities:
> >   + depinfo: Add softdeps to dependencies.
> 
> Вот это я в p8 не бэкпортировал. Наверное, стоит?

Это к мантейнерам p8.

> > - New:
> >   + Add modules-filesystem feature.
> >   + Add modules-network feature.
> 
> Алексей, может стоит описать на ВиКи детали и анонсировать в devel@?

Может быть, но чего-то я сомневаюсь, что это интересно.
Comment 50 Dmitry V. Levin 2018-04-29 22:10:27 MSK
(In reply to comment #49)
> (В ответ на комментарий №48)
> > (В ответ на комментарий №47)
> > > make-initrd-2.0.8-alt1 -> sisyphus:
> > > 
> > > Sun Apr 29 2018 Alexey Gladkov <legion@altlinux.ru> 2.0.8-alt1
> 
> Блин, наша сборочница всё ещё светит полные адреса.

altlinux.org заменяется на altlinux, остальное остаётся как есть.
Comment 51 Alexey Gladkov 2018-04-30 09:28:38 MSK
(В ответ на комментарий №50)
> > Блин, наша сборочница всё ещё светит полные адреса.
> 
> altlinux.org заменяется на altlinux, остальное остаётся как есть.

Ясно. Закрывать баги через changelog мне нельзя.
Comment 52 Dmitry V. Levin 2018-04-30 09:36:57 MSK
(In reply to comment #51)
> (В ответ на комментарий №50)
> > > Блин, наша сборочница всё ещё светит полные адреса.
> > 
> > altlinux.org заменяется на altlinux, остальное остаётся как есть.
> 
> Ясно. Закрывать баги через changelog мне нельзя.

Почему?
Comment 53 Alexey Gladkov 2018-04-30 09:53:01 MSK
(В ответ на комментарий №52)
> (In reply to comment #51)
> > > altlinux.org заменяется на altlinux, остальное остаётся как есть.
> > 
> > Ясно. Закрывать баги через changelog мне нельзя.
> 
> Почему?

Эм ... ну потому что мой email светит сборочница.
Я не хочу менять домен на .org только ради неё.
Comment 54 Dmitry V. Levin 2018-04-30 10:02:36 MSK
(In reply to comment #53)
> (В ответ на комментарий №52)
> > (In reply to comment #51)
> > > > altlinux.org заменяется на altlinux, остальное остаётся как есть.
> > > 
> > > Ясно. Закрывать баги через changelog мне нельзя.
> > 
> > Почему?
> 
> Эм ... ну потому что мой email светит сборочница.
> Я не хочу менять домен на .org только ради неё.

.org лучше :)
Comment 55 Alexey Gladkov 2018-04-30 10:15:54 MSK
(В ответ на комментарий №54)
> > Эм ... ну потому что мой email светит сборочница.
> > Я не хочу менять домен на .org только ради неё.
> 
> .org лучше :)

Чем ? Чем .ru ? )) Домен .ru у меня с 2003.
Comment 56 Anton Farygin 2018-04-30 10:17:57 MSK
Не беспокойся, .ru сейчас в одинаковом статусе с .org
Да, Дима ?
Comment 57 Leonid Krivoshein 2018-04-30 17:51:40 MSK
Антон,

(В ответ на комментарий №40)
> > > - Utilities:
> > >   + depinfo: Add softdeps to dependencies.
> > Вот это я в p8 не бэкпортировал. Наверное, стоит?
> Это к мантейнерам p8.

(В ответ на комментарий №42)
> в p8 другой make-initrd. Лёня, можешь туда бэкпортировать нужные изменения.

В связи с багом #34871 и обсуждавшимися выше softdeps всё же посчитал важным портировать новый depinfo 2.0.9 из Сизифа. Подготовил альтернативную сборку 0.8.15-alt1.M80P.7 в task #205433. Тестировать по полной лучше эту сборку, а если не пойдёт, тогда уже старый вариант: task #205415.