LINUX.ORG.RU

Bisect и отсутствие драйверов

 , , ,


0

2

Доброго вечера, Господа! Решаю проблемку с ядрами, более компетентные люди попросили bisect сделать и показать проблемные коммиты. Притянул всё нужное для компиляции, далее по плану. $ git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git $ git clone http://github.com/ignatenkobrain/kernel-package.git $ cd linux $ git bisect start $ git bisect bad v3.19 $ git bisect good v3.12 # make defconfig # make -j4 && make modules_install && make install $ reboot Гружусь в собранное ядро, а оно не подгружает драйвера вообще: видео как при nimodeset, ви-фи/звук/юсб - ничего не работает. Что делаю не так?

Что делаю не так?

(основываясь на ощущениях от того, что ты бездумно клонировал kernel-package и, кажется, не использовал его) Не проверяешь bad и good, ставишь ядро make modules_install install. Какой дистрибутив? Собери пакет, поставь пакет. Честно проверь, что собранный тобой bad — bad, а good — good, потом приступай к bisect.

t184256 ★★★★★
()
Ответ на: комментарий от t184256

Fedora 20. Можно более детально по поводу bisect и того, что я не использую kernel-package, а то я курил овер9000 мануалов по bisect и пробовал еще больше сценариев работы с ним, так и не поняв окончательно, что нужно делать.

MolotovSolution
() автор топика

На живой системе лучше так не делать. Есть риск просрать все данные, если попадёшь на коммит, в котором жостко поломана ФС, например.

Deleted
()
Ответ на: комментарий от Deleted

Я переустанавливаю её раз в неделю, так как дальше 3.12 ядра и стоковых версий софта и драйверов от 20-ой федоры с рфремикс я двинуться не могу: система виснет при старте и накрывается звездой. Так что, не беда, если придется снова переустанавливать её.

MolotovSolution
() автор топика
Ответ на: комментарий от Deleted

Ну, в ручную через make menuconfig это делать, так легче сразу голову в микроволновку засунуть, так как придется это делать раз эдак 16-17, пока буду кривые костыли искать меж ядрами от 3.12 до 3.19(4.0).

MolotovSolution
() автор топика
Ответ на: комментарий от t184256

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

MolotovSolution
() автор топика
Ответ на: комментарий от MolotovSolution

ну начинай с тех конфигов, которые использовали мейнтейнеры ядра в федоре. или вообще собранных ими ядер наставь побольше и сузь область поиска.

t184256 ★★★★★
()
Ответ на: комментарий от MolotovSolution

Извини, нельзя. У меня 4 часа ночи и я иду спать. К тому же я сам дебианщик и просто пишу то, что подсказывает здравый смысл, сам-то я такого не делал никогда. Но вроде дело говорю...

t184256 ★★★★★
()
Ответ на: комментарий от MolotovSolution

Ну, в ручную через make menuconfig это делать, так легче сразу голову в микроволновку засунуть, так как придется это делать раз эдак 16-17, пока буду кривые костыли искать меж ядрами от 3.12 до 3.19(4.0).

В установленной федоре готовые конфиги ядер лежат в /boot/config-*.

Deleted
()
Ответ на: комментарий от Deleted

На живой системе лучше так не делать. Есть риск просрать все данные, если попадёшь на коммит, в котором жостко поломана ФС, например.

Как раз сейчас делаю bisect на живой системе, так аж страшно стало, у меня там ещё и btrfs.

gentoo_root ★★★★★
()
Ответ на: комментарий от MolotovSolution

Всё от рута:

cd /usr/src
git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git linux-git
cd linux-git
# тут достань где-то конфиг ядра — либо из /proc/config.gz, либо из /boot/config-*, нужно положить в файл .config
# в принципе, если он есть в /boot, можно попробовать его не копировать руками, оно само разберётся
# а проверить это легко — например, зайти в make menuconfig и посмотреть CONFIG_LOCALVERSION, в дистрибутивах его заполняют, поэтому если он не пустой, то подхватился конфиг от дистрибутива из /boot
git bisect start
# если знаешь, какие коммиты/теги были хорошими и плохими, то (но лучше всё равно вручную на них зачекаутиться, собрать ядро и убедиться):
git bisect bad v3.19 # или же можно просто сейчас собрать ядро, убедиться, что оно плохое, и сказать git bisect bad master
git bisect good v3.12
# после этого произойдёт checkout на место где-то посередине, можно собирать ядро
make oldconfig
make
make INSTALL_MOD_STRIP=1 modules_install
make install # если есть желание завернуть в пакет, можно вместо make modules_install и make install собрать пакет и установить его, но у меня gentoo, поэтому я делаю так
# здесь надо не забыть прописать ядро в загрузчик (например, выполнить всякие update-grub, если grub, или отредактировать syslinux.cfg, если syslinux)
reboot
# загрузились, потестили ядро
cd /usr/src/linux-git
git bisect good # или bad, в зависимости от результатов тестирования
# повторить, начиная с make oldconfig

Как-то так, но не всегда всё обходится так просто. Например, в моём случае мне кажется (я ещё не закончил, выводы делать рано), что наложились сразу две проблемы, одну из них исправили после того, как ввели вторую, поэтому я ещё после каждого git bisect good/bad накладываю патч для исправления первой проблемы, а перед следующим возвращаю всё, как было. В общем, разные ситуации бывают.

gentoo_root ★★★★★
()
Последнее исправление: gentoo_root (всего исправлений: 1)
Ответ на: комментарий от gentoo_root

Самое главное забыл написать. В конце git bisect после очередного good или bad напишет сообщение такой-то коммит is the first bad commit. После этого bisect закончен. Чтобы удалить остатки от установленных ядер, нужно удалить файлы в /boot (System.map-*, config-*, vmlinuz-*, initrd.img-*) и каталоги в /lib/modules, но не все, не надо удалять те ядра из /boot и модули из /lib/modules, которые уже были до этого установлены. Также можно будет удалить /usr/src/linux-git.

И ещё одно совсем забыл: после установки ядра через make install (и перед обновлением конфига загрузчика) может понадобиться (а может и не понадобиться) генерация для него initramfs. Как это сделать — зависит от дистрибутива.

gentoo_root ★★★★★
()

вопрос. а зачем ты склонировал мой репозиторий со скриптом и не пользуешься им ?)

i_gnatenko_brain ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.