Bug 21738 - incorrect USEMODULES detect
Summary: incorrect USEMODULES detect
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: startup (show other bugs)
Version: unstable
Hardware: all Linux
: P3 normal
Assignee: Alexey Gladkov
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks: 15333 22929
  Show dependency tree
 
Reported: 2009-09-27 04:12 MSD by led
Modified: 2010-02-21 20:42 MSK (History)
6 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description led 2009-09-27 04:12:46 MSD
В /etc/rc.d/rc.sysinit USEMODULES выставляется в "y" только при наличии /proc/ksyms или /proc/kallsyms:

f [ -z "$USEMODULES" ]; then
        if [ -f /proc/ksyms -o -f /proc/kallsyms ] && ! grep -iwqs nomodules /proc/cmdline; then
                USEMODULES=y
        else
                USEMODULES=n
        fi
fi

что, как мне кажется, неверным.
Предлагаю заменить строку

if [ -f /proc/ksyms -o -f /proc/kallsyms ] && ! grep -iwqs nomodules /proc/cmdline; then

на

if [ -f /proc/modules ] && ! grep -iwqs nomodules /proc/cmdline; then

Тогда не придётся собирать ядро с обязательным включением CONFIG_KALLSYMS=y или выставлением других костылей.
Comment 2 Michael Shigorin 2009-09-28 20:59:33 MSD
Ах так вот кто меня заставил влепить лишних пару сотен килобайт в терминальное ядро! :)
Comment 3 Dmitry V. Levin 2009-09-29 20:54:47 MSD
А давно старый код сломался?  Я бы хотел указать в commit message версию ядра, начиная с которой он мог работать неправильно.
Comment 4 led 2009-09-29 21:01:03 MSD
(В ответ на комментарий №3)
> А давно старый код сломался?  Я бы хотел указать в commit message версию ядра,
> начиная с которой он мог работать неправильно.

USEMODULES указывает на то, собрано ли ядро с CONFIG_MODULES=y или нет. /proc/ksyms и /proc/kallsyms никогда не являлось показателем того,что ядро модульное. /proc/modules же присутствует всегда, когда ядро собрано с CONFIG_MODULES=y (по крайней мере, начиная с 2.6.12 - точно)
В текущем же состоянии для того, чтобы нормально работала автозагрузка модулей, приходится собирать ядро с CONFIG_KALLSYMS=y, который (по определению) нужен только для отладки
Comment 5 led 2009-09-29 21:03:42 MSD
Я посмотрел по истории пакета startup: проверка модульности по /proc/ksyms была принесена из mandrake, после появления ядра 2.6 была сделана калька для него (/proc/kallsyms), но эта рповерка абсолютно не является проверкой ядра на "модульность"
Comment 6 Repository Robot 2009-09-30 03:55:06 MSD
startup-0.9.8.25-alt1 -> sisyphus:

* Wed Sep 30 2009 Dmitry V. Levin <ldv@altlinux> 0.9.8.25-alt1

- rc.sysinit: Detect USEMODULES by /proc/modules only (Led; closes: #21738).
Comment 7 Michael Shigorin 2009-09-30 03:56:42 MSD
(In reply to comment #3)
> Я бы хотел указать в commit message версию ядра,
> начиная с которой он мог работать неправильно.
Наблюдал на kernel-image-tmc-tc с 2.6.27-alt1 по 2.6.27-alt3, в alt4 по
подсказке led@ (случайно наступившего на те же грабли у себя) сделал
CONFIG_KALLSYMS=y.

(In reply to comment #6)
> startup-0.9.8.25-alt1 -> sisyphus:
> * Wed Sep 30 2009 Dmitry V. Levin <ldv@altlinux> 0.9.8.25-alt1
> - rc.sysinit: Detect USEMODULES by /proc/modules only (Led; closes: #21738).
Спасибо!
Comment 8 Michael Shigorin 2010-02-21 16:30:46 MSK
Странно, но поймал те же грабли на p5/branch со startup-0.9.8.26-alt1 и kernel-image-tmc-tc-2.6.27-alt6.
Comment 9 Michael Shigorin 2010-02-21 16:52:49 MSK
Вставил отладку после if..fi, который правился коммитом по ссылке в #c1 -- USEMODULES=y.  Сейчас попробую подсунуть ядро с CONFIG_KALLSYMS=y.
Comment 10 Michael Shigorin 2010-02-21 20:42:30 MSK
Не, без разницы -- извиняюсь за шум.