| Summary: | incorrect USEMODULES detect | ||
|---|---|---|---|
| Product: | Sisyphus | Reporter: | led |
| Component: | startup | Assignee: | Alexey Gladkov <legion> |
| Status: | CLOSED FIXED | QA Contact: | qa-sisyphus |
| Severity: | normal | ||
| Priority: | P3 | CC: | eostapets, glebfm, ldv, legion, mike, sr |
| Version: | unstable | ||
| Hardware: | all | ||
| OS: | Linux | ||
| Bug Depends on: | |||
| Bug Blocks: | 15333, 22929 | ||
Ах так вот кто меня заставил влепить лишних пару сотен килобайт в терминальное ядро! :) А давно старый код сломался? Я бы хотел указать в commit message версию ядра, начиная с которой он мог работать неправильно. (В ответ на комментарий №3) > А давно старый код сломался? Я бы хотел указать в commit message версию ядра, > начиная с которой он мог работать неправильно. USEMODULES указывает на то, собрано ли ядро с CONFIG_MODULES=y или нет. /proc/ksyms и /proc/kallsyms никогда не являлось показателем того,что ядро модульное. /proc/modules же присутствует всегда, когда ядро собрано с CONFIG_MODULES=y (по крайней мере, начиная с 2.6.12 - точно) В текущем же состоянии для того, чтобы нормально работала автозагрузка модулей, приходится собирать ядро с CONFIG_KALLSYMS=y, который (по определению) нужен только для отладки Я посмотрел по истории пакета startup: проверка модульности по /proc/ksyms была принесена из mandrake, после появления ядра 2.6 была сделана калька для него (/proc/kallsyms), но эта рповерка абсолютно не является проверкой ядра на "модульность" 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). (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). Спасибо! Странно, но поймал те же грабли на p5/branch со startup-0.9.8.26-alt1 и kernel-image-tmc-tc-2.6.27-alt6. Вставил отладку после if..fi, который правился коммитом по ссылке в #c1 -- USEMODULES=y. Сейчас попробую подсунуть ядро с CONFIG_KALLSYMS=y. Не, без разницы -- извиняюсь за шум. |
В /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 или выставлением других костылей.