Errore durante la compilazione del kernel Linux


1

Ottengo un errore durante il tentativo di compilare il kernel Linux 3.8.0-32 su Elementary OS Luna, basato su Ubuntu. Ho un notebook Lenovo S400 e il comando che ho usato è:

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

... che ha causato il seguente errore:

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.

Ho installato tutto il software necessario per la compilazione e non so cosa possa aver causato l'errore. Cosa posso fare a riguardo? Grazie per l'aiuto!

AGGIORNARE Ho scaricato un kernel diverso ed è ben compilato. Grazie per la risposta!

Risposte:


0

Non ho familiarità con il sistema operativo elementare, ma dall'aspetto del tuo errore mi chiedo se ti manca l'intero albero del codice sorgente. Nei miei sistemi Debian / Ubuntu, ho un Makefile in

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

Il Makefile sembra richiedere l'intero albero dei sorgenti: citerò solo poche righe,

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

per giustificare il mio sospetto.

Quindi dovrai installare l'intero codice sorgente. Hai due possibilità distinte,

  1. prendi il pacchetto sorgente per il tuo kernel e ricompilalo
  2. ottenere un kernel mainline direttamente da kernel.org e crearlo.

0

Stavo ricevendo questo errore su Ubuntu 14.04 e ho eseguito quanto segue e l'ho risolto subito:

sudo apt-get install bc

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.