LinuxForum.Fans
Тема

Проблема с компиляцией ядра

Автор: Leavmir_1 25 сообщений 3205 просмотров
#261421

После конфигурации ядра и запуска компиляции вскорости выпадает ошибка: debian/ruleset/targets/common.mk^286 Cannot find lguest tools. Останов.

#261427

Какая версия ядра?
Если не нужна паравиртуализация, отключите

Processor type and features → Paravirtualized guest support → Lguest guest support

text
CONFIG_LGUEST_GUEST:

Lguest is a tiny in-kernel hypervisor. Selecting this will allow your kernel to boot under lguest. This option will increase your kernel size by about 6k. If in doubt, say N.

If you say Y here, make sure you say Y (or M) to the virtio block and net drivers which lguest needs.

#261461
"Leavmir_1" написал:
После конфигурации ядра и запуска компиляции вскорости выпадает ошибка: debian/ruleset/targets/common.mk^286 Cannot find lguest tools. Останов.

Закомментируй в конфиге CONFIG_LGUEST_GUEST и CONFIG_LGUEST

text
# CONFIG_LGUEST_GUEST is not set
# CONFIG_LGUEST is not set

И все будет ok.
ы. ядра в подписи есть если надо :) и там же конфиг для x86.

#261477
"newzenon" написал:
Закомментируй в конфиге CONFIG_LGUEST_GUEST и CONFIG_LGUEST

«Идеологически» комментировать вручную конфигурационный файл ядра не правильно, для этого есть make menuconfig.

#261478
"Lupo Alberto" написал:
«Идеологически» комментировать вручную конфигурационный файл ядра не правильно, для этого есть make menuconfig.

не спорю, мне удобней было в vim, make menuconfig поиск "/" напрягает :)

#261480
"newzenon" написал:
не спорю, мне удобней было в vim, make menuconfig поиск "/" напрягает

в vim тоже поиск по "/" ;)
но menuconfig и правда не самая удобная вещь, которая только может быть...

#261481
"Fat-Zer" написал:
в vim тоже поиск по "/" ad

да (если сам по-другому не сделал), но при этом оказываешься там где надо.

#261483
"newzenon" написал:
не спорю, мне удобней было в vim,

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

[console]
gentoo-laptop linux-3.4.4-gentoo # diff .config .config.old
303,311c303
< CONFIG_PARAVIRT_GUEST=y
< # CONFIG_PARAVIRT_TIME_ACCOUNTING is not set
< # CONFIG_XEN is not set
< # CONFIG_XEN_PRIVILEGED_GUEST is not set
< # CONFIG_KVM_CLOCK is not set
< # CONFIG_KVM_GUEST is not set
< CONFIG_LGUEST_GUEST=y
< CONFIG_PARAVIRT=y
< # CONFIG_PARAVIRT_DEBUG is not set
---
> # CONFIG_PARAVIRT_GUEST is not set
1026d1017
< # CONFIG_VIRTIO_BLK is not set
1264d1254
< # CONFIG_VIRTIO_NET is not set
1541,1542d1530
< CONFIG_HVC_DRIVER=y
< CONFIG_VIRTIO_CONSOLE=y
1550d1537
< # CONFIG_HW_RANDOM_VIRTIO is not set
2764,2765d2750
< CONFIG_VIRTIO=y
< CONFIG_VIRTIO_RING=y
3266,3269c3251
< CONFIG_VIRTUALIZATION=y
< # CONFIG_KVM is not set
< # CONFIG_VHOST_NET is not set
< CONFIG_LGUEST=m
---
> # CONFIG_VIRTUALIZATION is not set
[/console]

#261487
"Lupo Alberto" написал:
Например, в данном случае это выглядит так:

Не не так:

text
# diff .config config-3.4-4.nz-686
336c336
< CONFIG_LGUEST_GUEST=y
---
> # CONFIG_LGUEST_GUEST=y
418a419
> 
420,421c421,422
< CONFIG_HIGHMEM4G=y
< # CONFIG_HIGHMEM64G is not set
---
> # CONFIG_HIGHMEM4G=y
> CONFIG_HIGHMEM64G=y
423a425,426
> CONFIG_X86_PAE=y
> 
5363c5366
< CONFIG_LGUEST=m
---
> # CONFIG_LGUEST=m
#261488
"newzenon" написал:
Не не так:

Возможно, из-за разницы архитектур — у меня x86. Но даже ваш пример показывает, что измнение указанных опций оказывает влияние на другие опции.

#261490

Не влияет я изменил:

text
# CONFIG_LGUEST_GUEST is not set
# CONFIG_LGUEST is not set
# CONFIG_NOHIGHMEM is not set
# CONFIG_HIGHMEM4G is not set
CONFIG_HIGHMEM64G=y
CONFIG_HIGHMEM=y
CONFIG_X86_PAE=y

так что все тут.

#261491
"newzenon" написал:
так что все тут.

Каждый вправе разбрасывать собственные грабли... ;)

#261493
"Lupo Alberto" написал:
Каждый вправе разбрасывать собственные грабли...

Где тут грабли? Для wheezy 3.4.4 ядро соберется только если вырубить LGUEST, ну и PAE включил, все.

#261494
"newzenon" написал:
Где тут грабли?

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

#261496
"newzenon" написал:

# CONFIG_LGUEST_GUEST is not set
# CONFIG_LGUEST is not set
# CONFIG_NOHIGHMEM is not set
# CONFIG_HIGHMEM4G is not set
"newzenon" написал:
Закомментируй в конфиге CONFIG_LGUEST_GUEST и CONFIG_LGUEST

А об остальных опциях как догадались?

#261497

Вот кстати ошибка если LGUEST включен:

text

#fakeroot make-kpkg --initrd kernel-image
exec make kpkg_version=12.036+nmu2 -f /usr/share/kernel-package/ruleset/minimal.mk debian INITRD=YES 
====== making target debian/stamp/conf/minimal_debian [new prereqs: ]======
This is kernel package version 12.036+nmu2.
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.4.4-nz/g'  \
                -e 's/=D/3.4.4-nz-10.00.Custom/g'         -e 's/=A/i386/g'  \
        -e 's/=SA//g'  \
        -e 's/=I//g'                    \
        -e 's/=CV/3.4/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.4.4-nz/g'       \
            -e 's/=D/3.4.4-nz-10.00.Custom/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
make[1]: Entering directory `/usr/src/linux-3.4.4'
====== making target debian/stamp/conf/kernel-conf [new prereqs: ]======
make    ARCH=i386 \
                    oldconfig;
make[2]: Entering directory `/usr/src/linux-3.4.4'
scripts/kconfig/conf --oldconfig Kconfig
#
# configuration written to .config
#
make[2]: Leaving directory `/usr/src/linux-3.4.4'
make    ARCH=i386 prepare
make[2]: Entering directory `/usr/src/linux-3.4.4'
scripts/kconfig/conf --silentoldconfig Kconfig
make[2]: Leaving directory `/usr/src/linux-3.4.4'
make[2]: Entering directory `/usr/src/linux-3.4.4'
make[3]: Цель `all' не требует выполнения команд.
make[3]: Цель `relocs' не требует выполнения команд.
  CHK     include/linux/version.h
  CHK     include/generated/utsrelease.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 `/usr/src/linux-3.4.4'
echo done > debian/stamp/conf/kernel-conf
make[1]: Leaving directory `/usr/src/linux-3.4.4'
make -f debian/rules debian/stamp/conf/full-changelog
make[1]: Entering directory `/usr/src/linux-3.4.4'
====== making target debian/stamp/conf/full-changelog [new prereqs: ]======
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
install -p -m 755 /usr/share/kernel-package/rules debian/rules
sed         -e 's/=V/3.4.4-nz/g'  \
                -e 's/=D/3.4.4-nz-10.00.Custom/g'         -e 's/=A/i386/g'  \
        -e 's/=SA//g'  \
        -e 's/=I//g'                    \
        -e 's/=CV/3.4/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
sed -e 's/=V/3.4.4-nz/g' -e 's/=D/3.4.4-nz-10.00.Custom/g'          \
        -e 's/=A/i386/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/changelog > debian/changelog
chmod 0644 debian/control debian/changelog
make -f debian/rules debian/stamp/conf/kernel-conf
make[2]: Entering directory `/usr/src/linux-3.4.4'
make[2]: `debian/stamp/conf/kernel-conf' не требует обновления.
make[2]: Leaving directory `/usr/src/linux-3.4.4'
make[1]: Leaving directory `/usr/src/linux-3.4.4'
echo done > debian/stamp/conf/minimal_debian
exec debian/rules  INITRD=YES  kernel-image 
====== making target debian/stamp/conf/vars [new prereqs: ]======

debian/ruleset/targets/common.mk:286: *** Cannot find lguest tools. Останов.

#261498
"newzenon" написал:
Вот кстати ошибка если LGUEST включен:

Вроде бы в ядрах до 3.3 её нет.

#261500

Не знаю, ковырял ядра Aptosid'а http://oscar.aptosid.com/debian/pool/main/l/
По-умолчанию, LGUEST включен, но собирал именно для wheezy, в sid'е возможно со сборкой этой проблемы нет.

#261580

Ядро 3.4.4. Паравиртуализацию уже пробовал отключать, ошибка та же.

#261661

Leavmir_1 во первых покажи

text
#cat /etc/debian_version

Второе - конфигурацию ядра покажи, кинь куда-нибудь на pastebin.com
Можешь забрать мои конфиги [url=ftp://linuxru.org/debian/]тут[/url]

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