Erro ao compilar o kernel do Linux

1

Eu recebo um erro ao tentar compilar o kernel Linux 3.8.0-32 no Elementary OS Luna, baseado no Ubuntu. Eu tenho um notebook Lenovo S400, e o comando que eu usei é:

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

... que causou o seguinte erro:

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 <[email protected]>/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 <[email protected]>/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.

Eu instalei todo o software necessário para compilar e não sei o que poderia ter causado o erro. O que posso fazer sobre isso? Obrigado pela ajuda!

UPDATE Eu baixei um kernel diferente e está bem compilado. Obrigado pela resposta!

    
por Infernion 18.11.2013 / 09:23

2 respostas

0

Eu não estou familiarizado com ElementaryOS, mas a partir da aparência do seu erro eu estou querendo saber se você está faltando toda a árvore de código-fonte. Nos meus sistemas Debian / Ubuntu, eu tenho um Makefile em

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

O Makefile parece exigir toda a árvore de fontes: vou citar apenas algumas linhas,

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

para substanciar minha suspeita.

Então você terá que instalar todo o código-fonte. Você tem duas possibilidades distintas,

  1. obtenha o pacote fonte do seu kernel e reconstrua-o
  2. obtenha um kernel principal diretamente do kernel.org e construa-o.
por 18.11.2013 / 10:45
0

Eu estava recebendo esse erro no Ubuntu 14.04 e executei o seguinte e ele foi corrigido:

sudo apt-get install bc

    
por 09.10.2015 / 01:09