rolano: [moved] Компилятор падает на сборке ядра

112 сообщений / 0 new
Последнее сообщение
rolano (не проверено)

Ну вот, наконец пошел конструктив. Я пробовал make чтонадо 2>&1, как только буду снова собирать ядро - сделаю как советуете

Sheridan
Аватар пользователя Sheridan
Не в сети
Зарегистрирован: 20/09/2010

[blockquote] make чтонадо 2>&1 | tee make.log 1>&2 [/blockquote]
это одна комманда

rolano (не проверено)

Уважаемый Dumus!
Конечно, можно скролить экран вверх и вниз, но только тогда, когда на команды есть реакция. А у меня либо машина просто перегружается, либо виснет намертво, когда система не отрабатывает даже нажатия НумЛока (чего в Линухе не должно быть, как меня убеждают)

rolano (не проверено)

Уважаемый Sheridan!
Вы оказались неправы. При компиляции у меня машина просто повисла, я записал последние строки с экрана и сравнил с тем логом, который создался в результате исполнения предложенной Вами команды.
Последние строчки лога:
LD .tmp_vmlinux1
KSYM .tmp_kallsyms1.S
AS .tmp_kallsyms1.o
LD .tmp_vmlinux2
KSYM .tmp_kallsyms2.S
AS .tmp_kallsyms2.o
LD .tmp_vmlinux3
KSYM .tmp_kallsyms3.S
AS .tmp_kallsyms3.o
LD vmlinux

В то время как на экране:
GZIP arch/i386/boot/compressed/vmlinux.bin.gz
LD arch/i386/boot/compressed/piggy.o
LD arch/i386/boot/compressed/vmlinux
OBJCOPY arch/i386/boot/vmlinux.bin
HOSTCC arch/i386/boot/tools/build
BUILD arch/i386/boot/bzImage
Root device is (3, 65)
Boot sector 512 bytes
Setup is 4863 bytes
System is 1253 kB

Согласитесь, некоторые отличия имеются

Есть ещё последние сообщения, полученные в SafeMode:
AS arch/i386/boot/bootsect.o
LD arch/i386/boot/bootsect
AS arch/i386/boot/setup.o
LD arch/i386/boot/setup
AS arch/i386/boot/compressed/head.o
CC arch/i386/boot/compressed/misc.o
OBJCOPY arch/i386/boot/compressed/vmlinux.bin
objcopy: vmlinux: File format not recognized
make[2]: *** [arch/i386/boot/compressed/vmlinux.bin] Error 1
make[1]: *** [arch/i386/boot/compressed/vmlinux] Error 2
make: *** [bzImage] Error 2

Sheridan
Аватар пользователя Sheridan
Не в сети
Зарегистрирован: 20/09/2010

objcopy: vmlinux: File format not recognized
ну вот оно. Это насколько я понимаю изза линкера. Либо изза компилятора.
Насчет лога - ты целиком комманду писал? с 1>&2 в конце?
Поясню - 2>&1 1>&2 это перенаправление потоков вывода stdout и stderr

rolano (не проверено)

Писал ровно то, что посоветовали. Сообщения из SafeMode получены после сборки неочищенного дерева (было просто интересно). После очистки и пересборки система перезагрузилась.

rudy (не проверено)

Н-да. А почему она виснет-то?
Попробуй поставить gcc 3.3.x, ld 2.15 и собрать ядро ими.
И, на всякий случай, прогони свой раздел, в котором идет сборка, fsck -fyv /dev/раздел; badblocks -sv /dev/раздел.
Еще случайные повисания бывают по причине неисправного swap раздела. Загляни в /var/log/messages - нет ли там упоминаний проблем со свопом. И проверь его тоже: swapoff -a; badblocks -sv /dev/своп; swapon -a

rolano (не проверено)

Вот почему она виснет или перезагружается я и хочу узнать у более опытных товарищей. gcc 3.3.6 мне один сильно занятой спец уже поставил, а что такое ld? Логи посмотрю и своп проверю. По поводу свопа - пробовал собирать и на второй консоли запускал top, за все время рвботы не было ни одного обращения к нему, даже память не вся использовалась. Но все равно я сделаю, как Вы советуете.

rolano (не проверено)

Прошу прошения за неверные сведения но спец поставил мне не 3.3.6, а 3.4.1. Нужно ли мне откатываться до 3.3.6?

rudy (не проверено)

ld - это линкер. Еще может иметь значение версия objcopy/objdump, но после экспериментов с ними у себя на готовом образе ядра 2.6.10 мне не удалось найти никаких рекомендаций, что следует проверить.
Я просто пытаюсь сначала отсечь возможные несвязанные со средствами разработки причины.
Очевидно, это все происходит еще при выполнении цели bzImage, до install не доходит.
Да, поставить gcc-3.3.6 мало, надо еще им компилить. Для этого нужно передать make'у имя компилятора, например, так:
CC=имя-gcc-3.3 HOSTCC=имя-gcc-3.3 make bzImage и т.д.
На всякий случай передаю 2 переменные (CC и HOSTCC), так как настолько внимательно, чтобы передать только одну, Makefile еще не читал, но первая - это конвенциональная переменная, указывающая на C-компилятор в системе, а вторая точно используется в Makefile. Вместо имя-gcc-3.3 следует подставить имя бинарника от gcc-3.3.6.

rudy (не проверено)

Насчет 3.4.1 не знаю. Думаю, должен компилить нормально.

Sheridan
Аватар пользователя Sheridan
Не в сети
Зарегистрирован: 20/09/2010

Да должен нормально...
Я вобще 4кой собираю...

rudy (не проверено)

2Sheridan: Может у него проблемы с версиями различных сборочных тулзов, там изменений в форматах объектных файлов или форматов метаинформации не было при переходе на 4.х ? Хотя больше похоже, что проблема наведенная из-за каких-то сбоев в системе (железо, модули, файловые системы).

rolano (не проверено)

А проверить версию ld можно с помощью какой-нить команды типа ld -h или что-то в этом роде?

rudy (не проверено)

ld --version

rolano (не проверено)

В выходные пробовал собирать ядра с разными параметрами (ACPI, тайминги памяти, наборы модулей), но под Мандрейком 10.1 ничего не получалось (в т.ч. ядро 2.6.8.1-mdk, которое в собранном варианте ставится вместе м ним). Переставил систему на Слакварь 9.1 (ядро 2.4.22, gcc 3.2.3, ld 2.14) - и ядро из дистрибутивов собралось. С этим ядром я сейчас работаю.
Если это возможно, то объясните в чём может быть причина такого различного поведения этих сборок?

Sheridan
Аватар пользователя Sheridan
Не в сети
Зарегистрирован: 20/09/2010

кстати в мандраке у меня ниразу неполучалось собирать ядро. Правда пробовал дааавно уже и раз 5 всего..

dennica (не проверено)

У меня тоже не с первого раза получилось собрать ядро. И даже не с пятого. Но получилось, тем не менее. Только до сих пор сам не понимаю, почему так - делал-то одно и то же.

rolano (не проверено)

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

dennica (не проверено)

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

rolano (не проверено)

Я в Мандрейке пробовал ядра собрать не меньше десятка раз. Модули я конечно ручками не вставлял/удалял, но пару конфигураций попробовал. Почему в Мандрейке не собралось ни разу, а в Слакваре - легко? Ну если система не может собрать ядро, на котором сейчас работает, тогда это не система, а глюк

igorsia (не проверено)

в шапке я не раз натыкался что надо ставиь пакет связанный со свтроенным в С ассемблером... заголовки какие то. после этого ядро начинало собираться.
очевидно не прописана зависимость в rpm пакете

dennica (не проверено)

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

Sheridan
Аватар пользователя Sheridan
Не в сети
Зарегистрирован: 20/09/2010

У меня в федоре токо раз несобралось и то я выяснил что изза того что я мутил с libstdc++ и в include не нашлось какогото заголовка... Положил заголовог обратно - собралось.

rudy (не проверено)

Повисания исчезли? На Слаке не виснет?

Nick
Не в сети
Зарегистрирован: 20/09/2010

[quote=Sheridan]У меня в федоре токо раз несобралось и то я выяснил что изза того что я мутил с libstdc++ и в include не нашлось какогото заголовка... Положил заголовог обратно - собралось.[/quote]

Слепой ведет глухого... Ребятки, вы хоть понимаете, что делаете, или просто как "Мартышка и очки" -- удалил файл -- о, не работает, кинул -- заработало... Чудо! какая нахрен libstdc++? Нахрена трогать include? Ты понимаешь, что там находится?

dennica (не проверено)

Я не понимаю. Я не программист, не админ. Я инженер-механик по летательным аппаратам, в силу должностных обязанностей еще немного экономист и юрист. У меня нет возможности профессионально разбираться, как и почему все работает, но у меня и лишних денег нет, чтобы ко мне выезжал спец и все настраивал. Тем более не факт, что понадобится только один такой выезд. Что мне в этом случае делать? Правильно, смотреть и запоминать - так работало, а вот так рухнуло, а вот так работает, но плохо и нестабильно.

Nick
Не в сети
Зарегистрирован: 20/09/2010

[quote=dennica]Я не понимаю. Я не программист, не админ. [/quote]

Тогда не надо ничего компилировать. Современные дистрибутивы Linux хорошо работают без компиляции. Зачастую -- лучше, чем с компиляцией (см. данную тему).

Sheridan
Аватар пользователя Sheridan
Не в сети
Зарегистрирован: 20/09/2010

[quote=Nick]Слепой ведет глухого... Ребятки, вы хоть понимаете, что делаете, или просто как "Мартышка и очки" -- удалил файл -- о, не работает, кинул -- заработало... Чудо! какая нахрен libstdc++? Нахрена трогать include? Ты понимаешь, что там находится?[/quote]
Уважаемый, я понимаю что там находится. А еще я понимаю что там есть лишнее и еще я понимаю зачем оно там находится. И самое страшное то, что я понимаю как без этого обойтись.

rolano (не проверено)

Господа! Ваш спор действительно интересен. Тме не менее в нем есть ряд неточностей/недоговоренностей:
1. У меня ядро не собралось на свежеустановленном Мандрейке. Я ничего не мутил с библиотеками, а все , что поставил - Wine. Мог ли он угробить библиоотеки?
2. Если система с открытым исходным кодом не может собрать собственное ядро согласно инструкциям, идущим вместе с ним, то возникает вопрос - а чем она лучше Винды? В данном случае я получаю систему, способную работать только с собранными производителем дистрибутива ядрами. С Виндой вообще не поставляется исходного кода и справка составляется так, что после выпуска сервис-пака обязательно выходит файл с исправлениями косячных советов
3. Почему на моем якобы косячном железе ядро 2.4.22 под Слакварем собралось, а 2.6.8.1 под Мандрейком - нет. (Оба эти ядра идут вместе с соттветствующими дистрибами). Нету в Слакваре глюков по этому поводу.
4. Систему я усиленно не ломал. Собственно за две недели знакомства и цивилизованного освоения едва ли здравомыслящий человек возьмет на себя смелость "заоптимизировать" систему. Такое могут делать только злые админы и доморощенные кулхацкеры

Sheridan
Аватар пользователя Sheridan
Не в сети
Зарегистрирован: 20/09/2010

По порядку
1 см. 3
2 см. 3
3 Mandrake. Этим имхо все сказано. Дистрибутив довольно слабый. В линуховых кругах считается мягко говоря довольно плоим. Лично мне он не нравится тем что както довольно самостоятельный... Очень может быть что недоконца в нем разобраны зависимости, недособраны пакеты и прочие мелочи... Советую короче что-ть другое.
4 Да в принципе никто не говорил что ты ее ломал. Просто выясняем причины... Которые в принципе могут кстати быть довольно непредсказуемы. Я долго к примеру ломал голову почему у меня qt не собирается... Оказалось изза того что камень был разогнан...

Vitls
Аватар пользователя Vitls
Не в сети
Зарегистрирован: 21/09/2010

[quote=rolano]Предложение поставить ядро из rpm очень не нравится. Оно собиралось ниезвестно кем неизвестно где и незнамо под какие системы.[/quote]
1. Неужели Вы думаете, что Вы умнее и опытнее тех, кто собирает ядра для "промышленных" дистрибутивов вроде RHEL, SuSE или Mandrake. Вполне оптимизированные и стабильные ядра. Каждое из них прекрасно работает на 99% железа. Доверять надо производителям, доверять надо.
2. Не собирайте ядра из-под root. Административные полномочия нужны только для make install.

Дело не в том как болезнь вылечить.
Дело в том как других заразить.

Vitls
Аватар пользователя Vitls
Не в сети
Зарегистрирован: 21/09/2010

[quote=Sheridan]
3 Mandrake. Этим имхо все сказано. Дистрибутив довольно слабый. В линуховых кругах считается мягко говоря довольно плоим..[/quote]
Не выдавай свое личное мнение за истину. Истина только в вине.

Дело не в том как болезнь вылечить.
Дело в том как других заразить.

Vitls
Аватар пользователя Vitls
Не в сети
Зарегистрирован: 21/09/2010

[quote=rolano]Господа! Ваш спор действительно интересен. Тме не менее в нем есть ряд неточностей/недоговоренностей:
1. У меня ядро не собралось на свежеустановленном Мандрейке. Я ничего не мутил с библиотеками, а все , что поставил - Wine. Мог ли он угробить библиоотеки?
2. Если система с открытым исходным кодом не может собрать собственное ядро согласно инструкциям, идущим вместе с ним, то возникает вопрос - а чем она лучше Винды? [/quote]
А Вы читали документацию по сборке ядра именно для своего дистримбутива? Например, если под RHEL собирать ядро " скандачка" по документации kernel.org, то у Вас ничего хорошего не выйдет. Но если взять исходники ядра, прочесть документацию по приготовлению пакета, составить грамотный spec-файл, в итоге вы получите прекрасный пакет, который легко и правильно будет адаптирован в систему и не будет вызывать нареканий у утилиты контроля за целостностью системы.
Совет: не лезьте в чужой монастырь со своим уставом.

Дело не в том как болезнь вылечить.
Дело в том как других заразить.

Sheridan
Аватар пользователя Sheridan
Не в сети
Зарегистрирован: 20/09/2010

[quote=Vitls][quote=Sheridan]
3 Mandrake. Этим имхо все сказано. Дистрибутив довольно слабый. В линуховых кругах считается мягко говоря довольно плоим..[/quote]
Не выдавай свое личное мнение за истину. Истина только в вине.
[/quote]
Ну фиг его знает но я еще не видел человека которому мандрак бы понрафился... Иначе бы не писал...

Sheridan
Аватар пользователя Sheridan
Не в сети
Зарегистрирован: 20/09/2010

[quote=Vitls]
2. Не собирайте ядра из-под root. Административные полномочия нужны только для make install.
[/quote]

Поподробнее напиши плиз почему?

rolano (не проверено)

Уважаемые специалисты!
Если честно, то меня совершенно не волнуют особенности конкретного дистрибутива в отношении ядра (более того - мне на них начхать). Я хочу иметь возможность собирать стабильные ядра несмотря ни на что. Такая дистрибутивная специфичность очень сильно напоминает ситуацию с Виндой со всеми её "особенностями и странностями". Специфичность ядра должна касаться способов ешё организации (соотношение модульности/монолитности, использование initrd или неиспользование, оптимизация под конкретные архитектуры, состав и назначение некоторых каталогов и т.д.). Я ведь нигде не утверждал, что хочу с первого раза получить хорошее ядро, но черт возьми, я его в Мандрейке не получил совсем. Если Мандрейк не может собрать собственное ядро, тогда о чём вообще можно говорить? Ни один из советов мне не помог. Некоторые из Вас говорят, что типа это я криворукий (а скорее - начинающий пользователь), но ведь собрать ядро по инструкции сможет даже новичок. ТОЛЬКО ВОТ В МАНДРЕЙКЕ ИНСТРУКЦИЯ НИ ХРЕНА НЕ ЗНАЧИТ. Если Мандрейк позиционируется как система со своим ядром, тогда не надо нигде писать, что система основана на ядре Linux - пусть люди пишут свою Винду. О какой переносимости ПО можно говорить, если собрать общедоступное ядро - проблема?

Sheridan
Аватар пользователя Sheridan
Не в сети
Зарегистрирован: 20/09/2010

Млин приди ко мне домой я те покажу как под 4й федорой 2.6.13 ядро 4м гцц собирается. Может мандрак кривоват, может у тебя камень разогнан или тайминги завышены. И я не вижу смысла пинания ядра после того как не получилось его собрать под какимто _одним_ дистрибутивом. Меня например факт того что под мандраком не собирается честно говоря удивил.

Sheridan
Аватар пользователя Sheridan
Не в сети
Зарегистрирован: 20/09/2010

Да, позавчера поставил .13е ядро сразу. С первого же пинка.

rolano (не проверено)

Проц я не разгонял, а тайминги поставил на максимальные. Слакварь свое ядро собрал, а Мандрейк - нет. Пинать ядра я и не собирался, но и слушать советы типа "доверяй производителю" тоже не сильно нравятся. Майкрософт - тоже производитель, только вот его почему-то пинать можно, а коллектив Мандрейка - ни-ни. Если человеку нужна меганадежность и доверие к производителю, тогда мир Linux не для него - нужно пользовать коммерчекие вресии Unix-подобных систем. В Linux меня то и привлекло, что здесь я играю определяющую роль в системе: да, я могу чего-нить не включить и тогда ядро будет глючить, паниковать и т.д., но это мое право. Если меня такого права лишают, тогда это нужно явно оговаривать и не использовать ПО с общедоступной лицензией на бинарники и исходники. Если в Мандрейке такие мегаспецы, что обычные ядра к их системам не подходят, тогда пусть зарабатывают зеленых американских президентов на своих собственных разработках - пусть делают закрытую реализацию ядра или системы в целом.

rolano (не проверено)

Уважаемые модераторы!
А тему-то за что переместили из Ликбеза? Я поначалу подумал, что Вы её нафиг грохнули.

Vitls
Аватар пользователя Vitls
Не в сети
Зарегистрирован: 21/09/2010

[quote=rolano]Слакварь свое ядро собрал, а Мандрейк - нет. Пинать ядра я и не собирался, но и слушать советы типа "доверяй производителю" тоже не сильно нравятся.
...
Если меня такого права лишают, тогда это нужно явно оговаривать и не использовать ПО с общедоступной лицензией на бинарники и исходники. Если в Мандрейке такие мегаспецы, что обычные ядра к их системам не подходят, тогда пусть зарабатывают зеленых американских президентов на своих собственных разработках - пусть делают закрытую реализацию ядра или системы в целом.[/quote]
1. В Слаке свои правила сборки ядер, в Мандраке - свои.
2. Linux - открытая система, поэтому производителю можно и нужно доверять. Возьмите исходные тексты ядра с сайта Мандраки илм с компак-диска, выключите ненужное, добавьте нужное, что хотите делайте, но ради Бога, играйте по правилам дистрибутивостроителя.
Не нравятся (не понимаете) правила - меняйте дистрибутив, кто ж мешает-то.
3. Не разбираясь вы не лезете чинить стиральную машину или двигатель авто, ядро Linux не чем не проще. Чтобы правильно и грамотно собирать ядра тоже нужно многое знать и уметь.

Дело не в том как болезнь вылечить.
Дело в том как других заразить.

Vitls
Аватар пользователя Vitls
Не в сети
Зарегистрирован: 21/09/2010

[quote=Sheridan][quote=Vitls]
2. Не собирайте ядра из-под root. Административные полномочия нужны только для make install.
[/quote]

Поподробнее напиши плиз почему?[/quote]
Это одно из первых правил безопасности системы. При сборке из-под root непроверенного исходного кода злоумышленник может получить доступ к данным с правами администратора. Даже если собирается само ядро :-). Парадоксально, но больше половины кода Linux выполняется в userspace.

Дело не в том как болезнь вылечить.
Дело в том как других заразить.

rolano (не проверено)

Уважаемый VitIs!
Я пробовал собирать в Мандрейке 2.6.8.1-mdk (с диска). НЕТУ ТОЛКУ. По поводу правил сборки - а что в Мандрейке СВОЙ компилятор, СВОЙ линкер, или у них собственное мнение по поводу внутренней структуры бинарника ядра?

rolano (не проверено)

А если ядра с kernel.org не подходят к Мандраку, тогда пусть они тогда так и скажут. Я нигде про это не слышал.

igorsia (не проверено)

скорее всего у тебя не стоит какая нить библиотека или пакет какой глючит... бывает...
не обращай вниманния - прелесть линукса именно в том что их много.

rolano (не проверено)

У меня уже ничего не глючит. У МЕНЯ ТЕПЕРЬ СТОИТ СЛАКВАРЬ 9.1. А с ядрами ветки 2.6.х я ещё разберусь (потом).

dennica (не проверено)

Ядра с kernel.org к Мандраке подходят прекрасно. И патчи накладываются без проблем. И работает все как часы. А если ты на Мандраке вынес какую-нибудь библиотеку или подключил модуль какой-нибудь экспериментальный, который с твоим железом не подружился, то это не проблемы Мандраки. Внимательнее смотри, какие модули для чего служат и поотключай те, которые тебе не нужны, а заодно и те, в которых ты не вполне уверен.

Vitls
Аватар пользователя Vitls
Не в сети
Зарегистрирован: 21/09/2010

[quote=rolano]Уважаемый VitIs!
Я пробовал собирать в Мандрейке 2.6.8.1-mdk (с диска). НЕТУ ТОЛКУ. По поводу правил сборки - а что в Мандрейке СВОЙ компилятор, СВОЙ линкер, или у них собственное мнение по поводу внутренней структуры бинарника ядра?[/quote]
Вы, уважаемый, не понимаете фундаментального: ядро, генерируемое при помощи spec-файлов дистрибутивостроителей очень гармонично вписывается в систему. Например, сценарий в спеке сборки ядра в Fedora3 предполагает применение udev, а если собирать вручную, то получаем devfs (ибо по-умолчанию) и нихрена неработающую систему. И таких тонкостей масса.
Тот же Слакварь, в отличие от Мандраки или Редхата, предполагает самостоятельную сборку ядра, и соответственно архитектура всей системы как единиго целого несколько иная (конкретно для Слаки понятие целостность системы вообще отсутствует).
Вы, наверное, не сталкивались с промышленным применением Linux. На производстве ядра пересобирать некогда и незачем, там главное, чтобы работало и работало стабильно.
p.s. Мой ник-нейм пишется как VITLS
[ Редактирование 31.08.2005 - 19:37:59 ]

Дело не в том как болезнь вылечить.
Дело в том как других заразить.

rudy (не проверено)

2rolano&Vitls: Флеймиться не надоело? :-)

RSS-материал