1

Я получаю сообщение об ошибке при попытке скомпилировать ядро Linux 3.8.0-32 в Elementary OS Luna на основе Ubuntu. У меня есть ноутбук Lenovo S400, и я использовал команду:

sudo make-kpkg --initrd --append-to-version=-sergiykhalymonkernel kernel_image kernel_headers

... которая вызвала следующую ошибку:

exec make kpkg_version=12.036+nmu2 -f /usr/share/kernel-package/ruleset/minimal.mk debian APPEND_TO_VERSION=-sergiykhalymonkernel  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.8.13.10-sergiykhalymonkernel/g'  \
                -e 's/=D/3.8.13.10-sergiykhalymonkernel-10.00.Custom/g'         -e 's/=A/amd64/g'  \
        -e 's/=SA//g'  \
        -e 's/=I//g'                    \
        -e 's/=CV/3.8/g'                \
        -e 's/=M/Unknown Kernel Package Maintainer <unknown@unconfigured.in.etc.kernel-pkg.conf>/g'             \
        -e 's/=ST/linux/g'      -e 's/=B/x86_64/g'    \
                  /usr/share/kernel-package/Control > debian/control
test -f debian/changelog ||  sed -e 's/=V/3.8.13.10-sergiykhalymonkernel/g'       \
            -e 's/=D/3.8.13.10-sergiykhalymonkernel-10.00.Custom/g'        -e 's/=A/amd64/g'       \
            -e 's/=ST/linux/g'     -e 's/=B/x86_64/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-headers-3.8.0-32'
====== making target debian/stamp/conf/kernel-conf [new prereqs: ]======
make EXTRAVERSION=.10-sergiykhalymonkernel   ARCH=x86_64 \
                    oldconfig;
make[2]: Entering directory `/usr/src/linux-headers-3.8.0-32'
scripts/kconfig/conf --oldconfig Kconfig
#
# configuration written to .config
#
make[2]: Leaving directory `/usr/src/linux-headers-3.8.0-32'
make EXTRAVERSION=.10-sergiykhalymonkernel   ARCH=x86_64 prepare
make[2]: Entering directory `/usr/src/linux-headers-3.8.0-32'
scripts/kconfig/conf --silentoldconfig Kconfig
make[2]: Leaving directory `/usr/src/linux-headers-3.8.0-32'
make[2]: Entering directory `/usr/src/linux-headers-3.8.0-32'
make[3]: *** No rule to make target `/usr/src/linux-headers-3.8.0-32/arch/x86/syscalls/syscall_32.tbl', needed by `arch/x86/syscalls/../include/generated/uapi/asm/unistd_32.h'.  Stop.
make[2]: *** [archheaders] Error 2
make[2]: Leaving directory `/usr/src/linux-headers-3.8.0-32'
make[1]: *** [debian/stamp/conf/kernel-conf] Error 2
make[1]: Leaving directory `/usr/src/linux-headers-3.8.0-32'
make: *** [debian/stamp/conf/minimal_debian] Error 2
Failed to create a ./debian directory:  at /usr/bin/make-kpkg line 984.

Я установил все программное обеспечение, необходимое для компиляции, и я не знаю, что могло вызвать ошибку. Что я могу с этим поделать? Спасибо за помощь!

ОБНОВЛЕНИЕ Я загрузил другое ядро, и оно хорошо скомпилировано. Спасибо за ответ!

2 ответа2

0

Я не знаком с ElementaryOS, но, судя по вашей ошибке, я задаюсь вопросом, не упускаете ли вы все дерево исходного кода. В моих системах Debian/Ubuntu у меня есть Makefile в

/usr/src/linux-headers-$(uname -r)/arch/x86/syscalls/

Похоже, что Makefile требует всего исходного дерева: я процитирую всего несколько строк,

 syscall32 := $(srctree)/$(src)/syscall_32.tbl
 syscall64 := $(srctree)/$(src)/syscall_64.tbl

чтобы обосновать мое подозрение.

Таким образом, вам придется установить весь исходный код. У вас есть две разные возможности,

  1. получите исходный пакет для вашего ядра и пересоберите его
  2. получите ядро mainline непосредственно из kernel.org и соберите его.
0

Я получал эту ошибку в Ubuntu 14.04, и я запустил следующее, и он все исправил:

sudo apt-get install bc

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .