PDA

Показать полную графическую версию : Компиляция ядра


Andro
21-06-2002, 08:17
Для поддержки нового пишущего сидюка мне пришлось перекомпилить ядро. Я положил его на дискету, перегрузил с ним машину. Худо-бедно система завелась, писалка заработала. Потом я зделал так:
make dep
make bzImage
make modules
make modules_install
make bzlilo
 И новое ядро, по идее, должно было установиться в системе, заместо старого. Система, действительно, чем-то шмыгала, ни на что не ругалась. Но новое ядро не положила, так как моих изменений после перезагрузке не оказалось. несколько попыток ни к чему не привели. Не ставится новое ядро и все. Может быть, кто-нибудь знает в чем дело? Неохота каждый раз перегружаться с дискеты, чтобы записать диск.

Dimon
21-06-2002, 21:51
Попробуй вместо make bzlilo набрать  make install - тогда ядро установится и пропишет себя в загрузчик

Andro
22-06-2002, 11:02
лБЛ С РПОЙНБА, make install - ЬФП ФП ЦЕ УБНПЕ, ЮФП Й bzlilo, ФПМШЛП РПУМЕ ХУФБОПЧЛЙ СДТБ ОЕ ЪБРХУЛБЕФ lilo. фБЛ Ч ЮЕН ЦЕ ТБЪОЙГБ?

Barracuda
26-06-2002, 15:52
Бррр!
Ну, во-первых, какой Линукс и какое ядро(вопрос бессмысленный, но всё же)?
Вот строчка, которую я обычно выполняю (опять же - на любителя):
make mrproper && make menuconfig && make dep && make clean && make bzImage && make modules && make modules_install
А вот далее предпочитаю делать всё ручками. В каталоге "/<где_исходники_ядра>/linux/arch/i386/boot" есть файлик "bzImage". Скопируй его в "vmlinuz-2.4.18-55" к примеру и перенеси получившийся файл в каталог "/boot" . Только смотри, не замочи рабочее ядро. В целях сохранности системы лучше его не трогать. Затем в "/<где_исходники_ядра>/linux/" скопируй файл "System.map" в "System.map-2.4.18-55" (тоже, к примеру, но версии в именах "vmlinuz" и " System.map" должны совпадать) а потом снеси полученный файл в "/boot". Каталог "/boot", будет выглядеть гле-то так:

./
../
System.map@
System.map-2.2.21-3
System.map-2.2.5-15
boot.0300
boot.b
chain.b
map
module-info@
module-info-2.2.5-15
os2_d.b
vmlinux-2.2.5-15*
vmlinuz@
vmlinuz-2.2.21-3
vmlinuz-2.2.5-15

Кстати, а какой у тебя boot-loader.
Если GRUB, то там никакой мороки, просто допиши по аналогии несколько строк с указанием нового имени ядра (всё остальное оставь без изменений). Только надо ДОБАВИТЬ эти строки, а не исправлять имеющиеся - опять же, из соображений сохранности системы, чтобы, в случае обвала, её можно было загрузить. Да, и не забудь поменять строчку "label", указав в ней новое имя системы (ну, например, "new"). Перегружайся и, как говорится, have fun.
Для LILO, в принципе, должно хватать "make install", однако лучше всё сделать ручками - надёжнее. После того, как файлы скопированы в "/boot", поправь файл "/etc/lilo.conf", так же ДОБАВИВ в него по аналогии строчки для загрузки новой версии. Получится что-то вроде:

boot=/dev/hda
map=/boot/map
install=/boot/boot.b
prompt
default=mod
timeout=40
image=/boot/vmlinuz-2.2.5-15
label=base
root=/dev/hda1
read-only
image=/boot/vmlinuz-2.2.21-3
label=mod
root=/dev/hda1
read-only

Здесь "base" - то, что в начале называлось "linux" (я его переименовал для своего удовства), а "mod" - новое ядро.
Затем запусти "/sbin/lilo" - он пропишет новую конфигурацию. Если у тебя используется бут-сектор для загрузки через WinNT/2000/XP, то запиши его через "dd if=/dev/<где_сидит_LILO> bs=512 count=1 of=/root/bootsect.lnx" и снеси его на Win раздел в загрузочную область.
Вот, вроде бы, и всё.

Andro
02-07-2002, 07:08
После совета уважаемого Seg Rendol кое-что уже начало получаться. Новая бага такая - при перезагрузке с новым ядром появляется буковка L (вместо LILO) и все глохнет. Это связано с дисковой геометрией, но я ее не трогал. И старое ядро не имеет ничего против нее (геометрии). В чем может быть бага?


А победа была так близко...

Barracuda
02-07-2002, 17:09
Читаю книжку, и нахожу, что появление одной буквы "L" указывает на то, что (доыловно) " ... the first stage boot loader has been loaded and started, but it can't load the second stage boot loader ...". Если я правильно понял сию белиберду, то часть, которая находится в бут-секторе  (512 байт) он загрузил и выполнил, однако ту часть, которую он собирается читать с диска (boot.b) он прочитать не смог.
Вопрос следующий: а где, собственно говоря, находистя у тебя раздел, с которого грузится Linux (имеется ввиду, "/boot" или корень, в котором должен находится этот каталог). Тут фича в том, что возможно, при загрузке с дискеты, никаких траблов. Если у тебя загрузочный раздел "разлёгся" за пределами 1024-го цилиндра, тоды - траблы. Он (LILO) не очень то дружит с этим. У меня была такая же хрень. Выход я увидел в следующем: "откуси" от первого раздела 32 Mb в самом начале и помести туда раздел "/boot" (если нужна метода, как это сделать - пиши письмо, а то мои посты и так очень длинные). А всё остальное может остаться там, где и сидит.

Andro
04-07-2002, 07:19
Беда в том, что /boot стоит у меня отдельным разделом как раз в начале диска. Так что проблема не в этом. И что делать - не понятно.

ramms
05-07-2002, 05:30
было у меня такое =)
чинил так:
загрузился с загр.дискеты винды и запустил fdisk /mbr      //т.о. вынес лило из МБР

перезагружаюсь - теперь сразу грузится винда =)
гружусь снова с установочным сидюком linux и произвожу обновление ,но ничего не выбираю

всё должно работать , можешь дальше продолжать опыты =)

Andro
05-07-2002, 08:38
Честно говоря, ставить такие эксперименты я не могу, так как эта машина - расчетный сервер у меня на работе. Ее простой невозможен, а здесь олн непременно будет. Такой способ вряд ли поможет. Но за совет - спасибо

Barracuda
05-07-2002, 17:45
СТОП! Такие эксперименты для рабочей машины не годятся.
Andro? А ты откуда (расчёты, енто интересно).
Ты можешь загрузит родное ядро? Свяжись по аське, могет в режиме on-line чего-то придумаем (номер смотри в моём профиле)...

Исправлено: Barracuda, 18:51 5-07-2002

mioni
06-07-2002, 08:52
Andro, а каким размером у тебя /boot? Когда у меня он был большим, то были такие же траблы, урезал, все запахало.

Andro
07-07-2002, 08:59
Спасибо всем. Честно говоря, возиться дальше у меня нет времени. А пишущий сидюк (ради которого ядро и пересобиралось) я итак уже прикрутил.
Кстати, когда пытаешься настраивать будущее ядро - какие настройки там уже стоят? Как я понимаю это настройки далеко не текущего ядра.

Barracuda
07-07-2002, 20:34
mioni
А к чему большлй "/boot" - 32 Мб хватит по-уши (16 Мб - рекомендуемый), ведь размер ядра не более 2 Мб плюс всякая фигня, ну на 5 Мб максимум. Парочка другая ядер займёт всего метров десять. И всё.
Кстати
Andro
а какой у тебя тип файловой системы на "/boot"?

Andro
08-07-2002, 07:24
У меня там ext2, а размер /boot точно не помню. Мегов что-то около 500

mioni
08-07-2002, 10:58
to Andro: не великоват /boot то? Правильно Barracuda говорит, 30 мегов хватает выше крыши. Попробуй уменьшить /boot до мегов 30, может поможет.

Barracuda
08-07-2002, 17:36
mioni
Угу, дофига будет.
Одного я ни как не пойму - что-то Andro у тебя не всё в порядке, посмотри внимательно в "/etc/fstab" и конфиг LILO. После его переустановки всё должно пофиксится. Попробуй загрузиться с родным ядром, проверь конфиги и перпиши лило в бут-сектор (просто запусти "lilo"). Я перекраивал диски, после чего грузился в режим инсталляции но ничего не ставил, монтировал получившиеся диски, правил конфиги, после чего переписывал LILO и всё работало.:confused:
Andro выложи конфиги:
/etc/fstab
конфиг LILO
раскладку диска


Исправлено: Barracuda, 18:41 8-07-2002

Ge0rge
01-03-2003, 18:07
хммммм, делаю всё по описанию Barracuda, пробую на дистрибутиве Redhat7.3, все make прошли без проблем, (что

странно - точно то же делал на Redhat8.0 и на make modules вылетали ошибки!), дописываю в grub.conf новое ядро

по аналогии со старым (кстати, я не нашел в info ничего про параметр initrd=, откуда брать и что это за образ

initrd-2.4.18-3.img?) и при загрузке на новом ядре наблюдаю облом следующего содержания:

kmod: failed to exec /sbin/modprobe -s -k block-major-8, errno=2
VFS:cannot open root device sda1 or 08:01    
please append a correct "root=" boot option
kernel panic: VFS: unable to mount root fs on on 08:01


Что я опять не так сделал?

Enzo Matrix
25-04-2003, 21:06
Не компилируется ядро 2.2.18 и 2.4.2, у меня Mandrake RE Spring 2001, gcc 2.96 ядро
2.2.18, glibc 2.2.2
Выдаёт:

[root@enzo linux]# make install
gcc -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -o scripts/split-include scripts/split-include.c
In file included from /usr/include/errno.h:36,
from scripts/split-include.c:26:
/usr/include/bits/errno.h:25:26: linux/errno.h: No such file or directory
make: *** [scripts/split-include] Ошибка 1

Может кто объянит в чём дело?




© OSzone.net 2001-2012