Como posso localizar um código fonte específico do kernel na minha máquina?

3

Eu quero localizar o código-fonte signal.c do kernel na minha máquina, para estudar as diferenças (se existirem) entre o que eu tenho e este código-fonte . Eu tentei seguir isso postar sugestão, mas não consegui longe.

Acho que preciso de instruções mais específicas. Estou trabalhando com o Ubuntu 14.04, x86_64, linux-source-3.13.0 (o último é uma saída de apt-cache search linux-source ).

    
por HelterSkelter 31.07.2016 / 19:56

1 resposta

1

Se você seguiu as instruções, você instalou um pacote de origem do kernel, chamado linux-source-3.13.0 , por exemplo, por

sudo apt-get install linux-source-3.13.0

ou

sudo apt-get install linux-source

que instala um pacote virtual que instala o pacote versioned como uma dependência.

Feito isso, você pode encontrar o arquivo que estava procurando (usando o nome do pacote):

dpkg -L linux-source-3.13.0 |grep -F signal.c

e obtenha o (s) nome (s) do (s) nome (s) de qualquer arquivo desse pacote chamado "signal.c"

Se o pacote fosse realmente um tarball das origens, você teria que extrair esses arquivos, por exemplo, usando tar . Nesse caso, dpkg -L linux-source listaria apenas o tarball (e o grep não retornaria nada).

Para o caso de um tarball, você pode fazer isso:

tar tvf $(dpkg -L linux-source-3.13.0) |grep -F signal.c

se contiver apenas um arquivo. Mas supondo que você tivesse algo como

/usr
/usr/src
/usr/src/linux-patch-3.13-rt.patch.bz2
/usr/src/linux-source-3.13.tar.bz2
/usr/share
/usr/share/doc
/usr/share/doc/linux-source-3.13
/usr/share/doc/linux-source-3.13/copyright
/usr/share/doc/linux-source-3.13/changelog.Debian.gz
/usr/share/doc/linux-source-3.13/README.Debian

então o arquivo que você está procurando estaria no arquivo "tar.bz2", então ...

tar tvf $(dpkg -L linux-source-3.13.0|grep -F .tar.bz2) |grep -F signal.c

mostraria os nomes de caminho dentro daquele tarball para "signal.c"

Leitura adicional:

por 31.07.2016 / 19:59

Tags