Diferença entre estes dois métodos de baixar o código fonte do linux

2

Informações do sistema:

root@zaidi:/home/uzair# uname -a
Linux zaidi 3.11.0-26-generic #45~precise1-Ubuntu SMP Tue Jul 15 04:04:35 UTC 2014 i686 i686 i386 GNU/Linux

Estou tentando escrever um driver de dispositivo simples. Para isso eu preciso baixar o código fonte do kernel que estou rodando (certo?)

Eu encontrei seguindo dois métodos:

apt-get install linux-source-$(uname -r)


apt-get source linux-image-$(uname -r)

Qual é a diferença entre esses dois comandos? Qual deles é realmente necessário para construir o driver. Eu tenho um arquivo de make como este:

# Makefile – makefile of our first driver
# if KERNELRELEASE is defined, we've been invoked from the
# kernel build system and can use its language.
ifneq (${KERNELRELEASE},)
    obj-m := ofd.o
# Otherwise we were called directly from the command line.
# Invoke the kernel build system.
else
    KERNEL_SOURCE := /usr/src/linux
    PWD := $(shell pwd)
default:
    ${MAKE} -C ${KERNEL_SOURCE} SUBDIRS=${PWD} modules
clean:
    ${MAKE} -C ${KERNEL_SOURCE} SUBDIRS=${PWD} clean
endif

Eu gostaria de ter o código-fonte em /usr/src/linux

    
por gpuguy 15.09.2014 / 09:50

2 respostas

1

Diferença entre o processo de instalação por apt-get install & amp; por apt-get source :

  1. sudo apt-get install <package> instala pacotes com suas dependências de repositórios e arquivos em cache são encontrados em /var/cache/apt/archives in .deb extension.
  2. sudo apt-get source <package> fará o download dos arquivos de origem no diretório atual.

Agora, veja como criar & amp; instalar o pacote dos arquivos de origem baixados (do repositório):

  • Primeiro, instale dependências de compilação pelo comando: sudo apt-get build-dep <package>
  • Em seguida, faça o download do pacote de origem por comando: sudo apt-get source <package>
  • Em seguida, navegue até o diretório que contém a fonte por cd e use dpkg-buildpackage -uc -us -b para obter binários, dpkg-buildpackage -uc -us -S para um pacote de fontes sem usar o sudo.
  • Obtenha / construa .deb arquivos que podem ser instalados por dpkg -i <file-name>.deb

Mas se <package> estiver diretamente disponível para instalação nos repositórios, recomenda-se instalar pacotes seguindo o comando

sudo apt-get install <package>

Para compilar o pacote a partir do código-fonte, visite: ajuda da comunidade

    
por Pandya 15.09.2014 / 14:28
0

Você só precisa do pacote linux-headers apropriado:

apt-cache show linux-source-3.13.0
Package: linux-source-3.13.0
...
Description-en: Linux kernel source for version 3.13.0 with Ubuntu patches
This package provides the source code for the Linux kernel version
3.13.0.
 .
This package is mainly meant for other packages to use, in order to build
custom flavours.
.
If you wish to use this package to create a custom Linux kernel, then it
is suggested that you investigate the package kernel-package, which has
been designed to ease the task of creating kernel image packages.
.
If you are simply trying to build third-party modules for your kernel,
you do not want this package. Install the appropriate linux-headers
package instead.

Faça:

sudo apt-get install linux-headers-$(uname -r)
    
por muru 15.09.2014 / 11:24