Ru-Board.club
← Вернуться в раздел «UNIX»

» Компиляция ядра Linux

Автор: EndoR
Дата сообщения: 17.06.2003 17:47
Вот ситуация - скомпилил ядро. Все вроде сделал по правилам.

Код: make menuconfig
make dep
make bzImage
make modules
make modules_install
Автор: polux
Дата сообщения: 18.06.2003 07:54
некорректно записана информация в мбр или в начало раздела(не знаю как там у тебя), попробую сделать lilo -v, должно появиться сообщение об ошибках...
Автор: EndoR
Дата сообщения: 20.06.2003 20:45
polux
тек-с... лило заработало - написал lilo -m /dev/sda.
Только теперь новая проблема - скомпиленное ядро не грузицца. При загрузке выдает
Код: Kernel panic: VFS: unable to mount root fs on 08:03
Автор: lynx
Дата сообщения: 20.06.2003 20:48
EndoR


Цитата:
Kernel panic: VFS: unable to mount root fs on 08:03

Пробовал писать root=/dev/sda, толку ноль. Что с этим делать?


Кернел (ядро) не может смонтировать рут раздел. Ты его ему неправильно указал в fstab



Добавлено

Цитата:
Пробовал писать root=/dev/sda, толку ноль. Что с этим делать?


Перебирать варианты, пока не загрузится.
Автор: EndoR
Дата сообщения: 20.06.2003 21:19
lynx

Цитата:
Перебирать варианты

Имхо, не самый лучший вариант. Система у меня разбита так:

Код: /dev/sda1 /boot
/dev/sda2 swap
/dev/sda3 /
Автор: ooptimum
Дата сообщения: 20.06.2003 23:00
EndoR
Это потому, что драйвер твоего Promise RAID адаптера отсутствует в /boot/initrd для ядра 2.4.20.
Автор: EndoR
Дата сообщения: 21.06.2003 12:30
ooptimum
так ведь можно вроде систему запускать при отсутствии initrd... или я неправ?

Добавлено
ooptimum
Кстать... в /lib моего initrd-2.4.20smp.img есть FastTrak.o. Наскока я понимаю, это и есть тот самый драйвер Promise RAID?
Автор: ooptimum
Дата сообщения: 21.06.2003 16:48
EndoR

Цитата:
так ведь можно вроде систему запускать при отсутствии initrd... или я неправ?

Можно, если система мрожет работать со всеми устройствами без загрузки внешних модулей. А в данном случае драйвер FastTrak в ядре отсутствует и поэтому его надо откуда-то загрузить. Загрузить его из /lib/modules/... нельзя, т.к., собственно, сама файловая система "/" недоступна. Для доступа к диску нам надо загрузить модуль, для загрузки модуля нужен доступ к диску -- порочный круг. Для решения подобных проблем и придумали механизм initrd.

Цитата:
в /lib моего initrd-2.4.20smp.img есть FastTrak.o. Наскока я понимаю, это и есть тот самый драйвер Promise RAID?

Похоже на то. Теперь тебе надо разобраться почему этот модуль не грузится. Если ты просто скопировал initrd от старой системы, то так работать не будет. Тебе надо создавать свой новый initrd именно для твоего нового ядра, включая модуль FastTrak, скомпилированный именно для этого ядра.
Автор: EndoR
Дата сообщения: 21.06.2003 17:24
ooptimum

Цитата:
Для решения подобных проблем и придумали механизм initrd.

внятно объяснил

Цитата:
Тебе надо создавать свой новый initrd именно для твоего нового ядра, включая модуль FastTrak, скомпилированный именно для этого ядра.

ээ.. mod_scsi нужен, так? чтоб система могла грузицца с /dev/sda, да?
Автор: ooptimum
Дата сообщения: 21.06.2003 18:52

Цитата:
mod_scsi нужен, так? чтоб система могла грузицца с /dev/sda, да?

Поддержка scsi должна быть либо в ядре, либо в виде модуля. Если она в виде модуля, то для загрузки со scsi устройств (или того, что выглядит как scsi устройство, как в случае FastTrak IDE RAID) этот модуль должен быть в initrd.
Автор: EndoR
Дата сообщения: 23.06.2003 13:32
ooptimum
делаю
Код: mkinitrd --with=/lib/modules/2.4.18-3smp/kernel/drivers/scsi/FastTrak.o /boot/initrd-2.4.20smp.img 2.4.20smp
Автор: ooptimum
Дата сообщения: 24.06.2003 07:08
Ты должен компилировать модуль используя исходники того ядра, под которым он потом будет запускаться. Посмотри в сырцах модуля IMHO есть README файл, имеющий в числе прочего и примеры, как надо make запускать. Там есть параметр у make'а, указывающий где лежат сырцы ядра под которое компилируешь. Но я его имя никак не вспомню что-то, а посмотреть сейчас негде.

Цитата:
mkinitrd --with=/lib/modules/2.4.18-3smp/kernel/drivers/scsi/FastTrak.o /boot/initrd-2.4.20smp.img 2.4.20smp

Я тебе об это ранее так и писал, что модуль от 2.4.18 под 2.4.20 не пойдет. В общем, читай выше внимательно.
Автор: EndoR
Дата сообщения: 24.06.2003 17:59
ooptimum

Цитата:
Там есть параметр у make'а, указывающий где лежат сырцы ядра под которое компилируешь. Но я его имя никак не вспомню что-то, а посмотреть сейчас негде.

есть такое там. еще есть указание архитектуры, под которо компилишь. все это я указал. Все равно говорит то же самое.
Автор: ooptimum
Дата сообщения: 25.06.2003 07:07
Ты что-то делаешь не так, тебе не кажется?

Цитата:
Все равно говорит то же самое.

"то же самое" -- это что именно?
Автор: EndoR
Дата сообщения: 25.06.2003 15:26
ooptimum

Цитата:
"то же самое" -- это что именно?

это опять выводит:

Цитата:
No module FastTrak found for kernel 2.4.20smp?

По пунктам описываю, что я делаю:
- компилю FastTrak (в make-файле путь указывает на /usr/src/linux, а архитектура - INDEP386)
- кидаю полученный FastTrak.o в /lib/modules/2.4.20smp/kernel/drivers/scsi
- захожу в /usr/src/linux
- make menuconfig
- make dep
- make bzImage
- make modules
- make module_install
- mkinitrd --with=/lib/modules/2.4.20smp/kernel/drivers/scsi/FastTrak.o /boot/initrd-2.4.20smp.img 2.4.20smp
...и получаю:

Цитата:
No module FastTrak found for kernel 2.4.20smp

вот собссно...
Автор: ooptimum
Дата сообщения: 25.06.2003 21:51

Цитата:
в make-файле путь указывает на /usr/src/linux

Действительно. С чего я взял, что там это настраивается? А, знаю... С другим модулем спутал.
К делу... А ты уверен, что /usr/src/linux указывает на сырцы 20-го ядра?

Цитата:
make menuconfig
...

А нафига, собссно? Надо было компилировать только этот конкретный модуль, а не все ядро. Или ты только для mkinitrd? О... как все запущено-то. Руками ты initrd создать не в состоянии? Описываю:
1. Берешь текущий initrd (тот, который тебе система создала при установке) и копируешь его в свой ~: `cp /boot/initrd.gz ~`;
2. Распаковываешь ~/initrd.gz: `cd, gzip -d initrd.gz`;
3. Создаешь временную папку: `md tmp`;
4. Читеришь: `su`;
5. Монтируешь ~/initrd в ~/tmp: `mount -t ext2 -o loop initrd tmp`
6. Компилируешь FastTrak.o под свое новое ядро (2.4.20smp).
7. Копируешь FastTrak.o в свой смонтированный initrd: `cp FastTrak.o tmp/lib/modules/2.4.20smp/kernel/drivers/scsi`;
8. Проверяешь tmp/linuxrc на присутствие там строки "insmod FastTrak". Если ее нет, то добавляешь.
9. Размонтируешь свой initrd: `umount tmp`;
10. Удаляешь временную папку: `rd tmp`;
11. Пакуешь новый initrd: `gzip initrd`;
12. Переносишь новый initrd на его законное место: `mv initrd.gz /boot/initrd.2.40.20smp`;
13. Правишь /etc/lilo.conf на предмет наличия строки "initrd=/boot/initrd.2.40.20smp" в секции с твоим новым ядром;
14. `lilo`;
15. C-A-D или как ты там перегружаешься...
Все.
Автор: f_serg
Дата сообщения: 26.06.2003 06:38
EndoR

Цитата:
Пробовал писать root=/dev/sda, толку ноль. Что с этим делать?

А root=/dev/sda3?
Автор: EndoR
Дата сообщения: 27.06.2003 16:51
ooptimum
ты смотрел, что я выше писал? то, что ты написал я уже сделал. это не работает. Есть правда один момент - как скомпилить FastTrak под ядро? Я подправил make и скомпилил - не заработало.
f_serg
с этим уже разобрался. там проблемка с лило была.
Автор: ooptimum
Дата сообщения: 27.06.2003 21:40

Цитата:
Есть правда один момент - как скомпилить FastTrak под ядро?

/usr/src/linux во всех нормальных дистрибутивах -- линк на каталог с сырцами ядра. Почему бы тебе не изменить этот линк так, чтобы он указывал на нужный тебе каталог?
Цитата:
то, что ты написал я уже сделал. это не работает

Я читал, что делал mkinitrd, а не то, что я тебе написал. Так...

Цитата:
No module FastTrak found for kernel 2.4.20smp

А ты, собссно, после того, как

Цитата:
кидаю полученный FastTrak.o в /lib/modules/2.4.20smp/kernel/drivers/scsi

`depmod -a` делал? Нет. Да даже если и делал, то зависимости для текущего ядра обновятся, а не для того, какого надо. Так что только руками, батенька, ручками... В общем, еще раз читай мой предыдущий пост и выполняй по пунктам, с соблюдением всех знаков пунктуации... Я этот список, специально для тебя писанный, вчера еще раз проверял. Подошло время ядро обновить, вот и выдался случай. Так что проверено, мин нет. А я умываю руки. Убеждать надоело...
Автор: EndoR
Дата сообщения: 30.06.2003 13:30
тек-с... ясно. никто толком не может по порядку объяснить
ooptimum

Цитата:
depmod -a` делал? Нет

это отсутствует в твоем списке. Также неясно вот это

Цитата:
6. Компилируешь FastTrak.o под свое новое ядро (2.4.20smp).

Как это делать? В make нет указания версии ядра.
Автор: ooptimum
Дата сообщения: 30.06.2003 14:24

Цитата:
это отсутствует в твоем списке.

Если ты будешь делать по моему списку, то это не нужно.

Цитата:
Как это делать? В make нет указания версии ядра.

Для тех, кто в бронепоезде... В make используется то, что лежит в /usr/src/linux, но этот самый "linux" в конце -- это просто линк, который ты можешь изменить, т.е. сделай так, чтобы он указывал на сырцы нужного тебе ядра. Все это я уже тебе писал. Если и сейчас ты не сможешь все собрать, то я уж и не знаю даже, что тогда может помочь...
Автор: EndoR
Дата сообщения: 30.06.2003 17:51
Понятно. Кто еще что предложит?

Добавлено
О, кстати. mkinitrd заработал. Ошибка заключалась в кривости рук...
Правда, ядро все равно не грузится с той же ошибкой.
Автор: andrews
Дата сообщения: 02.07.2003 20:06
EndoR
там в модуле есть символ - что-то типа kernel_version, вот если его поменять на скажем kernel_verzion бинарным редактором, то это может спасти ацца русской демократии но это не всегда работает ...
Автор: xntx
Дата сообщения: 02.07.2003 22:19
можно оффтоп? что значит /dev/sda ? SCSI?
Автор: EndoR
Дата сообщения: 03.07.2003 09:48
xntx
либо scsi, либо его эмуляция (ooptimum, поправляй меня, если что )
andrews

Цитата:
там в модуле есть символ - что-то типа kernel_version

да? это где это, уже в скомпиленном модуле? а unresolved symbols потом не будет говорить?
Автор: andrews
Дата сообщения: 08.07.2003 12:05
EndoR

Цитата:
а unresolved symbols потом не будет говорить?

это с чего бы вдруг ? этот символ defined внутри модуля. ядро просто проверяет версию по нему.
Автор: EndoR
Дата сообщения: 08.07.2003 12:55
andrews
не, я о том, что в этом модуле такого параметра нет.
Автор: EndoR
Дата сообщения: 02.10.2003 21:39
ooptimum
Опять возвращаемся...
Скомпилил модуль, вроде сделал mkinitrd. Та же ошибка.
В новый initrd воткнул всё, скомпиленное для этого ядра. В чем могла еще быть ошибка?
Автор: moscvich
Дата сообщения: 03.10.2003 07:12
Для поддержки initrd в ядре должен быть вкомпилирован модуль ext2,он есть?
Автор: EndoR
Дата сообщения: 03.10.2003 14:10
moscvich
разумеется.

Страницы: 12

Предыдущая тема: Проблема с GNOME в ASPLinux 7.3


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.