[РЕШЕНО] Внезапно перестало собираться ядро

Решил тут пересобрать ядро с поддержкой OverlayFS для Docker, а оно перестало собираться.

Ошибка выглядит так:

  CC      scripts/mod/empty.o
scripts/mod/empty.c:1:0: ошибка: code model kernel does not support PIC mode
 /* empty file to figure out endianness / word size */
 ^
scripts/Makefile.build:258: ошибка выполнения рецепта для цели «scripts/mod/empty.o»
make[2]: *** [scripts/mod/empty.o] Ошибка 1
scripts/Makefile.build:403: ошибка выполнения рецепта для цели «scripts/mod»
make[1]: *** [scripts/mod] Ошибка 2
make[1]: *** Ожидание завершения заданий…
  SHIPPED scripts/genksyms/parse.tab.c
  SHIPPED scripts/genksyms/lex.lex.c
  SHIPPED scripts/genksyms/keywords.hash.c
  SHIPPED scripts/genksyms/parse.tab.h
  HOSTCC  scripts/genksyms/parse.tab.o
  HOSTCC  scripts/genksyms/lex.lex.o
  HOSTLD  scripts/genksyms/genksyms
Makefile:555: recipe for target 'scripts' failed
make: *** [scripts] Error 2

Полное содержание /var/log/genkernel.log:
https://gist.github.com/8c7dffd82c1e925c1ea166bc9b9fe2da

Конфиг собираемого ядра:
https://gist.github.com/f69c696fd5f85449466fa0fc7cc752d4

Информация о системе:

$ uname -a
Linux router 4.1.15-gentoo-r1 #1 SMP Tue Mar 22 10:14:09 KRAT 2016 x86_64 Intel(R) Atom(TM) CPU K410 @ 1.66GHz GenuineIntel GNU/Linux
$ emerge --info | wgetpaste
Your paste can be seen here: https://gist.github.com/6b1d1bcbe18ca7ab19fdf8bfbb4b02cf

Для начала пробуйте более

Для начала пробуйте более новую версию.

Такая же проблема.

Такая же проблема.

А ты видел, что генкернел у

А ты видел, что генкернел у тебя берет конфиг не из /usr/src/linux/.config, a из /etc/kernels/kernel-config-x86_64-4.1.15-gentoo-r1? Там точно, то что нужно??

Если да, то покажи

emerge -pv $(qlist -IC gentoo firmware sources binutils gcc glibc headers) 2>&1|wgetpaste

В курсе. С конфигом

В курсе. С конфигом /etc/kernels/kernel-config-x86_64-4.1.15-gentoo-r1 у меня до недавних пор все отлично собиралось. А запостил в топик я конфиг /usr/src/linux/.config.

$ emerge -pv $(qlist -IC gentoo firmware sources binutils gcc glibc headers) 2>&1|wgetpaste
Your paste can be seen here: https://gist.github.com/fa5bf47cadbcc73ef93441146ae1bba6

Надеюсь, что они у тебя

Надеюсь, что они у тебя одинаковые! :)

По сути же есть несколько вопросов:
1. Давно ли используешь hardened профиль? Компилировалось ли ядро с ним уже?
2. Когда обновились sys-kernel/linux-headers? Знаешь ли ты, что версия заголовков не должна быть выше версии ядра? Идеально когда точно такая же, тогда система (glibc) сможет использовать все фишки ядра.
3. И самое важное - обновлял ли ты тулчейн (glibc/binutils/gcc - именно в такой последовательности!) и ядро после обновления sys-kernel/linux-headers?! Это надо делать обязательно при любом изменении sys-kernel/linux-headers. Эта связка очень важна для всей системы, поэтому linux-headers/glibc/binutils/gcc лучше даже замаскировать от автоматического обновления и не трогать без особой нужды.

А в качестве ответа могу дать только подсказку (маловато данных о твоей системе - там надо глубоко копать/смотреть): похоже что у тебя где-то происходит конфликт с -fPIC/-fno-PIC ключами. Скорее всего проблема решится пересобиранием мира, особенно если отключишь hardened профиль перед этим.

Если используете hardened,

Если используете hardened, почему используете gentoo-sources?

Вообще-то это не связанные

Вообще-то это несвязанные вещи!
Одно время (после отказа команды grsecurity предоставлять патчи без подписки) мы тоже ушли на gentoo-sources при hardened профиле, и все там прекрасно работает! ;)

У меня действительно оказался

У меня действительно оказался включен hardened-профиль, хотя до этого я всегда висел на дефолтном. Возможно, я был нетревз и зачем-то переключил профиль.

Про sys-kernel/linux-headers интересная информация, не знал, что заголовки должны быть не старше версии ядра. Даунгрейднул их и данный момент занимаюсь пересборкой добра:

Calculating dependencies... done!
[ebuild   R    ] dev-libs/libffi-3.2.1::gentoo  USE="-debug -pax_kernel* -static-libs {-test}" ABI_X86="(64) -32 (-x32)" 0 KiB
[ebuild   R    ] dev-util/pkgconfig-0.28-r2::gentoo  USE="-hardened* -internal-glib" ABI_X86="(64) -32 (-x32)" 0 KiB
[ebuild   R    ] dev-libs/cyrus-sasl-2.1.26-r9:2::gentoo  USE="berkdb gdbm pam ssl -authdaemond -java -kerberos -ldapdb -mysql -openldap -postgres -sample (-selinux) -sqlite -srp -static-libs -urandom*" ABI_X86="(64) -32 (-x32)" 5098 KiB
[ebuild   R    ] dev-libs/libpcre-8.38:3::gentoo  USE="bzip2 cxx jit* readline recursion-limit (unicode) zlib -libedit -pcre16 -pcre32 -static-libs" ABI_X86="(64) -32 (-x32)" 1526 KiB
[ebuild   R    ] mail-mta/postfix-3.0.3-r1::gentoo  USE="berkdb eai ldap pam sasl ssl -cdb -doc -dovecot-sasl -hardened* -ldap-bind (-libressl) -lmdb -mbox -memcached -mysql -nis -postgres (-selinux) -sqlite -vda" 0 KiB
[ebuild   R    ] net-dns/bind-tools-9.10.3_p4::gentoo  USE="idn ipv6 readline seccomp ssl xml -doc -gost -gssapi (-libressl) -urandom*" 0 KiB
[ebuild   R    ] dev-lang/python-2.7.10-r1:2.7::gentoo  USE="gdbm ipv6 ncurses readline sqlite ssl threads (wide-unicode) xml (-berkdb) -build -doc -examples -hardened* -tk -wininst" 11977 KiB
[ebuild   R    ] dev-lang/python-3.4.3-r1:3.4::gentoo  USE="gdbm ipv6 ncurses readline sqlite ssl threads xml -build -examples -hardened* -tk -wininst" 14096 KiB
[ebuild   R    ] sys-devel/gcc-4.9.3:4.9.3::gentoo  USE="cxx fortran* (multilib) nls nptl openmp sanitize* vtv* (-altivec) (-awt) -cilk -debug -doc (-fixed-point) -gcj -go -graphite (-hardened*) (-libssp) -multislot -nopie -nossp -objc -objc++ -objc-gc -regression-test -vanilla" 0 KiB
[ebuild   R    ] sys-libs/glibc-2.22-r4:2.2::gentoo  USE="(multilib) -debug -gd (-hardened*) -nscd -profile (-selinux) -suid -systemtap -vanilla" 0 KiB

Total: 10 packages (10 reinstalls), Size of downloads: 32696 KiB

Как пересоберется sys-devel/gcc, попробую еще раз собрать ядро.

Если "Даунгрейднул

Если изменил sys-kernel/linux-headers, то обязательная последовательность должна быть такой (и только такой!), как я уже писал - сначала:

emerge -1 glibc binutils gcc -pv

убедиться, что пересборка будет именно в таком порядке и у binutils версия или параметры не меняются, тогда убрать -pv и пересобрать тулчейн, потом

. /etc/profile

Иначе делать по частям:

emerge -1 glibc binutils
. /etc/profile
emerge -1 gcc
. /etc/profile

и только после этого можно компилить все, что нужно.

В твоем сообщении изменились параметры gcc, поэтому его надо было пересобрать первым, как я описал выше.

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".