LINUX.ORG.RU

Не собирается ядро

 ,


0

1

Доброго времени суток всем. FAQ читал, по форуму искал - есть похожие, но не подходящие. Имеется: свежая Fedora 20 и неработоспособность части периферии.

Решил пересобрать ядро, дабы все заработало. Делал все четко по этому ману и на этапе, собственно, сборки командой

$ rpmbuild -bb --with baseonly --with firmware --without debuginfo --target=`uname -m` kernel.spec

выходит такая простыня:

Setup is 15296 bytes (padded to 15360 bytes). System is 2426 kB CRC dbfb004c Kernel: arch/x86/boot/bzImage is ready (#1) + make -s ARCH=x86_64 V=1 -j4 modules drivers/video/console/fbcon.c:3609:13: error: expected declaration specifiers or '...' before string constant early_param("quiet", quiet_logo); ^ drivers/video/console/fbcon.c:3609:22: error: expected declaration specifiers or '...' before 'quiet_logo' early_param("quiet", quiet_logo); ^ drivers/video/console/fbcon.c:3603:19: warning: 'quiet_logo' defined but not used [-Wunused-function] static int __init quiet_logo(char *str) ^ make[3]: *** [drivers/video/console/fbcon.o] Error 1 make[3]: *** Waiting for unfinished jobs.... make[2]: *** [drivers/video/console] Error 2 make[1]: *** [drivers/video] Error 2 make: *** [drivers] Error 2 + exit 1 ошибка: Неверный код возврата из /var/tmp/rpm-tmp.FjEt85 (%build)

Ошибки сборки пакетов: Неверный код возврата из /var/tmp/rpm-tmp.FjEt85 (%build)

kernel.spec - дефолтный, вот тут без ченджлога.

uname -a

Linux localhost.localdomain 3.15.4-200.fc20.x86_64 #1 SMP Mon Jul 7 14:24:41 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

Подскажите, пожалуйста: как это пофиксить?


Ответ на: комментарий от darkenshvein

Получается что так. Если честно - сам Fedor`у дня два пользую всего. В вике сказано так собирать.

Lan4X
() автор топика
Ответ на: комментарий от Waldo-de-Kard

Сам удивился такому подходу. Сейчас попробовал make && make modules_install. Пошло бодро, но недолго:

scripts/kconfig/conf --silentoldconfig Kconfig make[1]: Цель `all' не требует выполнения команд. make[1]: Цель `relocs' не требует выполнения команд. CHK include/generated/uapi/linux/version.h CHK include/generated/utsrelease.h CALL scripts/checksyscalls.sh CHK include/generated/compile.h UPD include/generated/compile.h CC init/version.o LD init/built-in.o LDS arch/x86/kernel/vmlinux.lds LDS arch/x86/realmode/rm/realmode.lds LD arch/x86/realmode/rm/realmode.elf RELOCS arch/x86/realmode/rm/realmode.relocs OBJCOPY arch/x86/realmode/rm/realmode.bin AS arch/x86/realmode/rmpiggy.o LD arch/x86/realmode/built-in.o LDS arch/x86/vdso/vdso.lds VDSO arch/x86/vdso/vdso.so.dbg OBJCOPY arch/x86/vdso/vdso.so AS arch/x86/vdso/vdso.o LDS arch/x86/vdso/vdso32/vdso32.lds VDSO arch/x86/vdso/vdso32-int80.so.dbg OBJCOPY arch/x86/vdso/vdso32-int80.so VDSO arch/x86/vdso/vdso32-syscall.so.dbg OBJCOPY arch/x86/vdso/vdso32-syscall.so VDSO arch/x86/vdso/vdso32-sysenter.so.dbg OBJCOPY arch/x86/vdso/vdso32-sysenter.so AS arch/x86/vdso/vdso32.o VDSOSYM arch/x86/vdso/vdso-syms.lds VDSOSYM arch/x86/vdso/vdso32-int80-syms.lds VDSOSYM arch/x86/vdso/vdso32-syscall-syms.lds VDSOSYM arch/x86/vdso/vdso32-sysenter-syms.lds VDSOSYM arch/x86/vdso/vdso32-syms.lds LD arch/x86/vdso/built-in.o LD arch/x86/built-in.o CC [M] drivers/video/console/fbcon.o drivers/video/console/fbcon.c:3609:13: ошибка: expected declaration specifiers or «...» before string constant early_param("quiet", quiet_logo); ^ drivers/video/console/fbcon.c:3609:22: ошибка: expected declaration specifiers or «...» before «quiet_logo» early_param("quiet", quiet_logo); ^ drivers/video/console/fbcon.c:3603:19: предупреждение: «quiet_logo» определена, но нигде не используется [-Wunused-function] static int __init quiet_logo(char *str) ^ make[3]: *** [drivers/video/console/fbcon.o] Ошибка 1 make[2]: *** [drivers/video/console] Ошибка 2 make[1]: *** [drivers/video] Ошибка 2 make: *** [drivers] Ошибка 2

С теми же симптомами, но на русском :(

Lan4X
() автор топика
Ответ на: комментарий от Waldo-de-Kard

Сейчас понабегут федорофанатики и будут тебе кричать, что это твоё make install — архаично и несекурно, а rpmbuild — нашифсё

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

Вы это собираете в виртуалке или на реальном железе?
Я, конечно, не кернел-хакер, но этот ваш fbcon есть

Symbol: DRM_VMWGFX_FBCON [=n]                                                                          x
  x Type  : boolean                                                                                        x
  x Prompt: Enable framebuffer console under vmwgfx by default                                             x
  x   Location:                                                                                            x
  x     -> Device Drivers                                                                                  x
  x       -> Graphics support                                                                              x
  x         -> Direct Rendering Manager                                                                    x
  x (1)       -> DRM driver for VMware Virtual GPU (DRM_VMWGFX [=n])                                       x
  x   Defined at drivers/gpu/drm/vmwgfx/Kconfig:16                                                         x
  x   Depends on: HAS_IOMEM [=y] && DRM_VMWGFX [=n]                                                        x

Может убрать нахрен этот ваш фреймбуфер для VMware?

Waldo-de-Kard ★★
()
Ответ на: комментарий от Waldo-de-Kard

Собираю на реальном. Я бы убрал, но: # CONFIG_DRM_VMWGFX is not set

Lan4X
() автор топика
Ответ на: комментарий от Waldo-de-Kard

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

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

Не виноватая я, оно само так :( Я два раза проверил - все честно скопипастчено в нужном порядке.

Я нуб, но не настолько же(

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

Путем нехитрых действий было выяснено, что этот fbcon есть: Low level frame buffer based console driver. Что, в свою очередь, есть FRAMEBUFFER_CONSOLE, находящийся в положении "-M-" и его никак не снять (вагную что это можно через правку конфига ручками сделать, но вот про стабильность вопрос тогда возникает). Как-то это дело можно еще обойти?

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

1. Скачать ядро с kernel.org.

2. Вбросить имеющийся конфиг ядра в директорию с распакованным ядром из пункта 1 под именем .config

3. make oldconfig

4. make && make modules && make modules_install && make install по вкусу

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

А. Просто погуглил ошибку в надежде найти сходу, все результаты были про ветку 2.6

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

В федоре это и вправду плохая затея, если ТС захочет поставить, например, любую виртуалку.

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

Убрать, как я понял, реально, если убрать все, что хотет этот параметр включенным. Но не думаю что это хорошая идея.

Вот где ошибка возникает: (fbcon.c) 3609: early_param(«quiet», quiet_logo);

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

Лол, я поражаюсь этой системе. Как я понял - суть во включенном DRM. Отключаю в .config, запускаю.. получаю ту же самую ошибку. В аухе лезу обратно - DRM_RADEON=m ; DRM=m ; FRAMEBUFFER_CONSOLE=m ; Отключаю, повторяю...

На этой итерации замечаю что ++ CONFIG_DRM=m

Шта? Откуда оно появляется? Я заменил уже и config-x86_64-generic из папки BUILD и kernel-3.11.10-x86_64.config из BUILD/configs.

Перед подгрузкой параметров стоит такое: # # configuration written to .config # + echo '# x86_64' + cat .config + for i in '*.config' + mv kernel-3.11.10-x86_64.config .config ++ head -1 .config ++ cut -b 3- + Arch=x86_64 + make ARCH=x86_64 listnewconfig + grep -E '^CONFIG_' + true + '[' -s .newoptions ']' + rm -f .newoptions + make ARCH=x86_64 oldnoconfig scripts/kconfig/conf --olddefconfig Kconfig

И перед ним выше в логе куча аналогичных для других архитектур.

Я вообще уже не понимаю этой системы >_<

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

Товарищи прикапывающиеся к rpmbuild просто не разбираются в предмете.

rpmbuild - это утилита для сборки пакета согласно спеку. Спек - это по сути bash-скрипт, в котором внутри выполняется вызов и make, и make install, и всё остальное.

И проблема у тебя вовсе не в rpmbuild, поэтому совершенно не удивительно что ошибка такая же.

Менять процедуру сборки не нужно, нужно чинить сам код, который собираешь.

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

Благодарю. Я понимаю, что не в ней, проблема в том, что .config подменяется как-то и откуда-то. Пока еще не понял откуда.

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

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

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

Понял, благодарю. Изменил конфиг соответствующий в /SOURCE Все заработало, правда, ненадолго:

+ grep -E -v 'GPL( v2)?$|Dual BSD/GPL$|Dual MPL/GPL$|GPL and additional rights$' + pushd /home/lanman/rpmbuild/BUILDROOT/kernel-3.11.10-301.LanMan_edition.fc20.x86_64/lib/modules/3.11.10-301.LanMan_edition.fc20.x86_64/ ~/rpmbuild/BUILDROOT/kernel-3.11.10-301.LanMan_edition.fc20.x86_64/lib/modules/3.11.10-301.LanMan_edition.fc20.x86_64 ~/rpmbuild/BUILD/kernel-3.11.fc20/linux-3.11.10-301.LanMan_edition.fc20.x86_64 + rm -f modules.alias modules.alias.bin modules.builtin.bin modules.dep modules.dep.bin 'modules.*map' modules.symbols modules.symbols.bin modules.devname modules.softdep + popd ~/rpmbuild/BUILD/kernel-3.11.fc20/linux-3.11.10-301.LanMan_edition.fc20.x86_64 + /home/lanman/rpmbuild/SOURCES/mod-extra.sh /home/lanman/rpmbuild/BUILDROOT/kernel-3.11.10-301.LanMan_edition.fc20.x86_64/lib/modules/3.11.10-301.LanMan_edition.fc20.x86_64 /home/lanman/rpmbuild/SOURCES/mod-extra.list ~/rpmbuild/BUILDROOT/kernel-3.11.10-301.LanMan_edition.fc20.x86_64/lib/modules/3.11.10-301.LanMan_edition.fc20.x86_64 ~/rpmbuild/BUILD/kernel-3.11.fc20/linux-3.11.10-301.LanMan_edition.fc20.x86_64 ~/rpmbuild/BUILD/kernel-3.11.fc20/linux-3.11.10-301.LanMan_edition.fc20.x86_64 ~/rpmbuild/BUILDROOT/kernel-3.11.10-301.LanMan_edition.fc20.x86_64/lib/modules/3.11.10-301.LanMan_edition.fc20.x86_64 ~/rpmbuild/BUILD/kernel-3.11.fc20/linux-3.11.10-301.LanMan_edition.fc20.x86_64 ~/rpmbuild/BUILD/kernel-3.11.fc20/linux-3.11.10-301.LanMan_edition.fc20.x86_64 + cp signing_key.priv signing_key.priv.sign cp: cannot stat 'signing_key.priv': No such file or directory ошибка: Неверный код возврата из /var/tmp/rpm-tmp.EnhYTP (%build)

Гугл говорит что за такое поведение отвечает параметр CONFIG_MODULE_SIG, но, опять же.

# CONFIG_MODULE_SIG is not set

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

Благодарю, все получилось!

Всем спасибо за поддержку, тему можно считать закрытой.

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

Ноуп, я просто ставил код между инлайнами, он сам так разбивал, да. Но за напоминание благодарю.

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