LinuxForum.Fans
Тема

Ошибка при сборке ядра 3.2~ Debian

Автор: everloginme 5 сообщений 2724 просмотров
#293410

Здравствуйте. Помогите, пожалуйста, разобраться с проблемой.

Дано:

everloginme@iMach:~$ lsb_release -a

text

No LSB modules are available.
Distributor ID:    Debian
Description:    Debian GNU/Linux testing (wheezy)
Release:    testing
Codename:    wheezy

everloginme@iMach:~$ uname -a

text

Linux iMach 3.2.0-4-686-pae #1 SMP Debian 3.2.32-1 i686 GNU/Linux

everloginme@iMach:~$ gcc -v

text

Используются внутренние спецификации.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/i486-linux-gnu/4.7/lto-wrapper
Целевая архитектура: i486-linux-gnu
Параметры конфигурации: ../src/configure -v --with-pkgversion='Debian 4.7.2-4' --with-bugurl=file:///usr/share/doc/gcc-4.7/README.Bugs --enable-languages=c,c++,go,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.7 --enable-shared --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.7 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --enable-plugin --enable-objc-gc --enable-targets=all --with-arch-32=i586 --with-tune=generic --enable-checking=release --build=i486-linux-gnu --host=i486-linux-gnu --target=i486-linux-gnu
Модель многопоточности: posix
gcc версия 4.7.2 (Debian 4.7.2-4) 

Очень сильно горю желанием пересобрать ядро, с изменением нескольких параметров - явно указать семейство проца, частоту таймера и поддержку памяти. Хочется посмотреть на прирост скорости, если такой ожидается.
Но это не суть.

Как и в большинстве манов и руководств сначала копировал исходники родного ядра, так пробовал и с более свежими версиями ядер с kernel.org - в итоге одна и та же ошибка на этапе сборки.



Компилить пытался как в /usr/src, так пытался и в других каталогах.
ncurses, fakeroot и сопутствующее установлено.

В случае новой сборки нового ядра - делаю, make defconfig, в надежде что он поставит параметры по умолчанию.
Затем через fakeroot запускаю сборку.

$ fakeroot make-kpkg --initrd --revision=everloginme.0.01 kernel_image

Показать
text

exec make kpkg_version=12.036+nmu3 -f /usr/share/kernel-package/ruleset/minimal.mk debian DEBIAN_REVISION=everloginme.0.01  INITRD=YES 
====== making target debian/stamp/conf/minimal_debian [new prereqs: ]======
This is kernel package version 12.036+nmu3.
test -d debian             || mkdir debian
test ! -e stamp-building || rm -f stamp-building
install -p -m 755 /usr/share/kernel-package/rules debian/rules
for file in ChangeLog  Control  Control.bin86 config templates.in rules; do                                      \
            cp -f  /usr/share/kernel-package/$file ./debian/;                               \
        done
for dir  in Config docs examples ruleset scripts pkg po;  do                                      \
          cp -af /usr/share/kernel-package/$dir  ./debian/;                                 \
        done
test -f debian/control || sed         -e 's/=V/3.2.35nz1/g'  \
                -e 's/=D/everloginme.0.01/g'         -e 's/=A/i386/g'  \
        -e 's/=SA//g'  \
        -e 's/=I//g'                    \
        -e 's/=CV/3.2/g'                \
        -e 's/=M/Unknown Kernel Package Maintainer <unknown@unconfigured.in.etc.kernel-pkg.conf>/g'                \
        -e 's/=ST/linux/g'      -e 's/=B/i386/g'    \
                  /usr/share/kernel-package/Control > debian/control
test -f debian/changelog ||  sed -e 's/=V/3.2.35nz1/g'       \
            -e 's/=D/everloginme.0.01/g'        -e 's/=A/i386/g'       \
            -e 's/=ST/linux/g'     -e 's/=B/i386/g'         \
            -e 's/=M/Unknown Kernel Package Maintainer <unknown@unconfigured.in.etc.kernel-pkg.conf>/g'                            \
             /usr/share/kernel-package/changelog > debian/changelog
chmod 0644 debian/control debian/changelog
test -d ./debian/stamp || mkdir debian/stamp 
make -f debian/rules debian/stamp/conf/kernel-conf
parsechangelog/debian: warning:     debian/changelog(l1): version 'everloginme.0.01' is invalid: version number does not start with digit
LINE: linux-source-3.2.35nz1 (everloginme.0.01) unstable; urgency=low
parsechangelog/debian: warning:     debian/changelog(l1): version 'everloginme.0.01' is invalid: version number does not start with digit
LINE: linux-source-3.2.35nz1 (everloginme.0.01) unstable; urgency=low
parsechangelog/debian: warning:     debian/changelog(l1): version 'everloginme.0.01' is invalid: version number does not start with digit
LINE: linux-source-3.2.35nz1 (everloginme.0.01) unstable; urgency=low
parsechangelog/debian: warning:     debian/changelog(l1): version 'everloginme.0.01' is invalid: version number does not start with digit
LINE: linux-source-3.2.35nz1 (everloginme.0.01) unstable; urgency=low
parsechangelog/debian: warning:     debian/changelog(l1): version 'everloginme.0.01' is invalid: version number does not start with digit
LINE: linux-source-3.2.35nz1 (everloginme.0.01) unstable; urgency=low
make[1]: Entering directory `/home/documents/kernel/linux-source-3.2'
====== making target debian/stamp/conf/kernel-conf [new prereqs: ]======
make    ARCH=i386 \
                    oldconfig;
make[2]: Entering directory `/home/documents/kernel/linux-source-3.2'
scripts/kconfig/conf --oldconfig Kconfig
#
# configuration written to .config
#
make[2]: Leaving directory `/home/documents/kernel/linux-source-3.2'
make    ARCH=i386 prepare
make[2]: Entering directory `/home/documents/kernel/linux-source-3.2'
scripts/kconfig/conf --silentoldconfig Kconfig
make[2]: Leaving directory `/home/documents/kernel/linux-source-3.2'
make[2]: Entering directory `/home/documents/kernel/linux-source-3.2'
  HOSTCC  arch/x86/tools/relocs
  CHK     include/linux/version.h
  UPD     include/linux/version.h
  CHK     include/generated/utsrelease.h
  UPD     include/generated/utsrelease.h
  CHK     include/generated/package.h
  UPD     include/generated/package.h
  CC      kernel/bounds.s
  GEN     include/generated/bounds.h
  CC      arch/x86/kernel/asm-offsets.s
  GEN     include/generated/asm-offsets.h
  CALL    scripts/checksyscalls.sh
make[2]: Leaving directory `/home/documents/kernel/linux-source-3.2'
echo done > debian/stamp/conf/kernel-conf
make[1]: Leaving directory `/home/documents/kernel/linux-source-3.2'
make -f debian/rules debian/stamp/conf/full-changelog
parsechangelog/debian: warning:     debian/changelog(l1): version 'everloginme.0.01' is invalid: version number does not start with digit
LINE: linux-source-3.2.35nz1 (everloginme.0.01) unstable; urgency=low
parsechangelog/debian: warning:     debian/changelog(l1): version 'everloginme.0.01' is invalid: version number does not start with digit
LINE: linux-source-3.2.35nz1 (everloginme.0.01) unstable; urgency=low
parsechangelog/debian: warning:     debian/changelog(l1): version 'everloginme.0.01' is invalid: version number does not start with digit
LINE: linux-source-3.2.35nz1 (everloginme.0.01) unstable; urgency=low
parsechangelog/debian: warning:     debian/changelog(l1): version 'everloginme.0.01' is invalid: version number does not start with digit
LINE: linux-source-3.2.35nz1 (everloginme.0.01) unstable; urgency=low
parsechangelog/debian: warning:     debian/changelog(l1): version 'everloginme.0.01' is invalid: version number does not start with digit
LINE: linux-source-3.2.35nz1 (everloginme.0.01) unstable; urgency=low
make[1]: Entering directory `/home/documents/kernel/linux-source-3.2'
debian/ruleset/targets/source.mk:107: предупреждение: переопределение команд для цели `kernel]'
debian/ruleset/targets/source.mk:35: предупреждение: старые команды для цели `kernel]' игнорируются
debian/ruleset/targets/source.mk:169: предупреждение: переопределение команд для цели `kernel]'
debian/ruleset/targets/source.mk:107: предупреждение: старые команды для цели `kernel]' игнорируются
debian/ruleset/targets/headers.mk:40: предупреждение: переопределение команд для цели `kernel]'
debian/ruleset/targets/source.mk:169: предупреждение: старые команды для цели `kernel]' игнорируются
debian/ruleset/targets/headers.mk:185: предупреждение: переопределение команд для цели `kernel]'
debian/ruleset/targets/headers.mk:40: предупреждение: старые команды для цели `kernel]' игнорируются
debian/ruleset/targets/headers.mk:255: предупреждение: переопределение команд для цели `kernel]'
debian/ruleset/targets/headers.mk:185: предупреждение: старые команды для цели `kernel]' игнорируются
debian/ruleset/targets/manual.mk:37: предупреждение: переопределение команд для цели `kernel]'
debian/ruleset/targets/headers.mk:255: предупреждение: старые команды для цели `kernel]' игнорируются
debian/ruleset/targets/manual.mk:53: предупреждение: переопределение команд для цели `kernel]'
debian/ruleset/targets/manual.mk:37: предупреждение: старые команды для цели `kernel]' игнорируются
debian/ruleset/targets/manual.mk:67: предупреждение: переопределение команд для цели `kernel]'
debian/ruleset/targets/manual.mk:53: предупреждение: старые команды для цели `kernel]' игнорируются
debian/ruleset/targets/doc.mk:34: предупреждение: переопределение команд для цели `kernel]'
debian/ruleset/targets/manual.mk:67: предупреждение: старые команды для цели `kernel]' игнорируются
debian/ruleset/targets/doc.mk:100: предупреждение: переопределение команд для цели `kernel]'
debian/ruleset/targets/doc.mk:34: предупреждение: старые команды для цели `kernel]' игнорируются
debian/ruleset/targets/doc.mk:131: предупреждение: переопределение команд для цели `kernel]'
debian/ruleset/targets/doc.mk:100: предупреждение: старые команды для цели `kernel]' игнорируются
debian/ruleset/targets/image.mk:34: предупреждение: переопределение команд для цели `kernel]'
debian/ruleset/targets/doc.mk:131: предупреждение: старые команды для цели `kernel]' игнорируются
debian/ruleset/targets/image.mk:233: предупреждение: переопределение команд для цели `kernel]'
debian/ruleset/targets/image.mk:34: предупреждение: старые команды для цели `kernel]' игнорируются
debian/ruleset/targets/image.mk:347: предупреждение: переопределение команд для цели `kernel]'
debian/ruleset/targets/image.mk:233: предупреждение: старые команды для цели `kernel]' игнорируются
debian/ruleset/targets/debug.mk:32: предупреждение: переопределение команд для цели `debian/stamp/install/linux-image-3.2.35nz1[everloginme'
debian/ruleset/targets/image.mk:34: предупреждение: старые команды для цели `debian/stamp/install/linux-image-3.2.35nz1[everloginme' игнорируются
debian/ruleset/targets/debug.mk:96: предупреждение: переопределение команд для цели `debian/stamp/binary/linux-image-3.2.35nz1[everloginme'
debian/ruleset/targets/image.mk:233: предупреждение: старые команды для цели `debian/stamp/binary/linux-image-3.2.35nz1[everloginme' игнорируются
debian/ruleset/targets/debug.mk:96: предупреждение: переопределение команд для цели `kernel]-dbg'
debian/ruleset/targets/debug.mk:32: предупреждение: старые команды для цели `kernel]-dbg' игнорируются
debian/ruleset/targets/debug.mk:112: предупреждение: переопределение команд для цели `debian/stamp/binary/pre-linux-image-3.2.35nz1[everloginme'
debian/ruleset/targets/image.mk:347: предупреждение: старые команды для цели `debian/stamp/binary/pre-linux-image-3.2.35nz1[everloginme' игнорируются
debian/ruleset/targets/debug.mk:112: предупреждение: переопределение команд для цели `kernel]-dbg'
debian/ruleset/targets/debug.mk:96: предупреждение: старые команды для цели `kernel]-dbg' игнорируются
debian/ruleset/local.mk:61: *** целевой файл `kernel]' имеет вхождения и с `:', и с `::' .  Останов.
make[1]: Leaving directory `/home/documents/kernel/linux-source-3.2'
make: *** [debian/stamp/conf/minimal_debian] Ошибка 2
Failed to create a ./debian directory: Нет такого файла или каталога at /usr/bin/make-kpkg line 984.

Посему слезно спрашиваю, знает ли кто-нибудь в чем может быть дело и как это исправить?

#293422

С linux-source от установленного дистрибутива никаких трудностей не будет.
Я компилирую ядро прямо в /usr/src, предварительно распаковав linux-source...bz2,
командой make-kpkg, компилируется успешно. Компиляцию ядер от друих вариантов
вам никто не гарантирует.

Пётр.

#293463

попробуйте перейти в каталог с исходником ядра и выполнить:

text
make clean

потом:

text
make deb-pkg
#293475

Ну, что сказать.
Сначала, почистил все от прошлых сборок и установок. До этого, кстати, ставил так же и linux-source и ошибка была та же.

text

sudo aptitude install linux-source-3.2
sudo tar xvjf /usr/src/linux-source-3.2.tar.bz2 && cd /usr/src/linux-source-3.2 
# теперь будет чисто, несмотря на то, что и так нет мусора от прошлых сборок, но ладно
sudo make clean && sudo make-kpkg clean

Далее, при попытке "make deb-pkg" без su\sudo ругается на отсутствие доступа. Даем доступ - ругается на отсутствие конфига. Даем что ему надо, предварительно снова все почистив на всякий пожарный.

text

sudo make clean && sudo make-kpkg clean
# и даже 
make mrproper
# получаем текущий конфиг
sudo cp /boot/config-`uname -r` ./.config
# от  make deb-pkg я отказался, т.к. понятно, что он собирает deb пакет, 
# но не понятно затрет ли в случае чего родное ядро или нет. Рисковать я не стал, отменил сборку, снова почистился и
# копаюсь в конфиге
sudo make xconfig
> foo text...blablabla
> # configuration written to .config
# компиляция с той же самой ошибкой, была до тех пор, пока комманда на комплицию не превратилась:
sudo fakeroot make-kpkg --initrd --stem extraversion  --revision revision  --append-to-version=-evkernel-0.1a kernel_image kernel_headers
# толи нужно было явно указать extraversion, толи revision... я не знаю, но на данный момент все наконец то компилируется и продолжает это делать.
# указывать использовать два проца при сборке я отказался, мало ли. Подожду.

Спасибо ребята за помощь, правда я так и не понял в чем была ошибка.

#293484

Клево) Все встало)

everloginme@iMach:~$ uname -a

text

Linux iMach 3.2.35-evkernel-0.1aeverloginme-kernel #1 SMP Sun Dec 30 01:07:09 MSK 2012 i686 GNU/Linux

Единственное что, virtualbox выдавал fail load в загрузке ядра, значит куда то делись флаги по виртуализации. Но, это уже оффтоп. Всем спасибо) ;)

Войдите или зарегистрируйтесь, чтобы ответить.