46
Manipulação de Kernel Linux LKCAMP – Blumenau/SC - 21/05/2019

Manipulação de Kernel Linux LKCAMP – Blumenau/SC - 21/05/2019 · 2020-04-26 · Kernel 4.X – Diretórios e Arquivos O Kernel usado como base é o Kernel 4.X.XX, do repositório

  • Upload
    others

  • View
    21

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Manipulação de Kernel Linux LKCAMP – Blumenau/SC - 21/05/2019 · 2020-04-26 · Kernel 4.X – Diretórios e Arquivos O Kernel usado como base é o Kernel 4.X.XX, do repositório

Manipulação de Kernel Linux

LKCAMP – Blumenau/SC - 21/05/2019

Page 2: Manipulação de Kernel Linux LKCAMP – Blumenau/SC - 21/05/2019 · 2020-04-26 · Kernel 4.X – Diretórios e Arquivos O Kernel usado como base é o Kernel 4.X.XX, do repositório

● Kernel 4.X.XX

– Diretórios e Arquivos

– Arquitetura Monolítica

– Estrutura do Kernel Linux

● Gerenciamento de Tarefas– Modelos de Interrupção– Estados de Tarefas

● Gerenciamento de Memória– Paginação

● Gerenciamento de Entrada e Saída

● 2a. Parte – Manipulação do Kernel

● Requisitos de Manipulação

● Manipulação do Kernel

– menuconfig

● O quê tem lá dentro?

● Compilar Kernel e gerar Pacotes

– Arquivo initrd

● Instalação de Kernel

● Mapa do Kernel Linux

● Referências

Conteúdo da Apresentação

Page 3: Manipulação de Kernel Linux LKCAMP – Blumenau/SC - 21/05/2019 · 2020-04-26 · Kernel 4.X – Diretórios e Arquivos O Kernel usado como base é o Kernel 4.X.XX, do repositório

Kernel 4.X – Diretórios e Arquivos

● O Kernel usado como base é o Kernel 4.X.XX, do repositório do Github

● O diretório padrão para manipulação do Kernel é o /usr/src. Neste diretório, descompactamos o pacote do código fonte do Kernel

● Nosso foco será no diretório usr/src/linux-source-4.X.XX/, de onde partiremos para analisar diversos outros diretórios, como o acpi/ e o staging/

Page 4: Manipulação de Kernel Linux LKCAMP – Blumenau/SC - 21/05/2019 · 2020-04-26 · Kernel 4.X – Diretórios e Arquivos O Kernel usado como base é o Kernel 4.X.XX, do repositório

Kernel 4.X – Diretórios e Arquivos

● No caso do diretório acpi/, temos os arquivos para uso do Advanced Configuration and Power Interface

● Arquivos: ac.c (gerencia o uso compartilhado da energia), battery.c (gerencia o consumo da bateria) e o fan.c (gerencia o cooler do notebook), entre outros

● O Advanced Configuration and Power Interface tem como objetivo consolidar e melhorar a alimentação de energia existentes e os padrões de configuração para os dispositivos de hardware.

Page 5: Manipulação de Kernel Linux LKCAMP – Blumenau/SC - 21/05/2019 · 2020-04-26 · Kernel 4.X – Diretórios e Arquivos O Kernel usado como base é o Kernel 4.X.XX, do repositório

Kernel 4.X – Diretórios e Arquivos

● No caso do diretório staging/, temos um diretório para testes de novas funcionalidades

● Arquivos: diversos, divididos em subdiretórios● O Staging Driver tem como objetivo unir em um único diretório, para

permitir que patchs para hardwares ainda em fase de testes, possam ser avaliados, testados, corrigidos e compilados, como módulo interno ou externo do Kernel.

Page 6: Manipulação de Kernel Linux LKCAMP – Blumenau/SC - 21/05/2019 · 2020-04-26 · Kernel 4.X – Diretórios e Arquivos O Kernel usado como base é o Kernel 4.X.XX, do repositório

Kernel 4.X – Diretórios e Arquivos

● Citamos até o momento o diretório de manipulação do Kernel. Contudo, este diretório /usr/src faz parte de um contexto maior, mais amplo, onde temos a organização de toda uma gama de diretórios e arquivos, acessíveis ao usuário com nível pleno, ou normalmente chamado como 'usuário com poderes de root'.

● Esta estrutura de diretórios e arquivos segue a Filesystem Hierarchy Standard (FHS), padrão de organização de diretórios recomendado para sistemas clones-unix, como o Linux.

Page 7: Manipulação de Kernel Linux LKCAMP – Blumenau/SC - 21/05/2019 · 2020-04-26 · Kernel 4.X – Diretórios e Arquivos O Kernel usado como base é o Kernel 4.X.XX, do repositório

Kernel 4.X – Diretórios e Arquivos

Esta organização para diretórios e arquivos, utilizada no Linux, segue o padrão proposto pelo Filesystem Hierarchy Standard (FHS).

Algumas distribuições Linux agregam outros diretórios a esta estrutura padrão. Outros, alteram a estrutura padrão, e não seguem a FHS.

Debian GNU/Linux é uma das distribuições Linux que segue a FHS.

Page 8: Manipulação de Kernel Linux LKCAMP – Blumenau/SC - 21/05/2019 · 2020-04-26 · Kernel 4.X – Diretórios e Arquivos O Kernel usado como base é o Kernel 4.X.XX, do repositório

Kernel 4.X – Arquitetura Monolítica

● No Linux, todos os serviços centrais residem em um kernel central, que é o núcleo do sistema operacional.

● Este kernel mantém todos os componentes básicos juntos e elimina a espera por mudanças de operação e/ou contexto.

● Apesar de ter arquitetura monolítica, a estrutura do Kernel Linux é integralmente modular, permitindo adicionar ou remover componentes (ou módulos) conforme necessidade e/ou demanda.

Page 9: Manipulação de Kernel Linux LKCAMP – Blumenau/SC - 21/05/2019 · 2020-04-26 · Kernel 4.X – Diretórios e Arquivos O Kernel usado como base é o Kernel 4.X.XX, do repositório

Kernel 4.X – Estrutura da Kernel Linux

Page 10: Manipulação de Kernel Linux LKCAMP – Blumenau/SC - 21/05/2019 · 2020-04-26 · Kernel 4.X – Diretórios e Arquivos O Kernel usado como base é o Kernel 4.X.XX, do repositório

Gerenciamento de Tarefas

● É responsável pelo processamento simultâneo de vários programas (multitarefa), pela compatibilidade com múltiplos núcleos (processadores) e pelo agendamento de serviços.

● Agendamento de serviços é o gerenciamento de qual tarefa é executada e quanto tempo em cada núcleo. O agendamento de serviços é dividido em duas etapas:

Page 11: Manipulação de Kernel Linux LKCAMP – Blumenau/SC - 21/05/2019 · 2020-04-26 · Kernel 4.X – Diretórios e Arquivos O Kernel usado como base é o Kernel 4.X.XX, do repositório

Gerenciamento de Tarefas

● Agendamento de serviços:● Etapa 1: O agendador de múltiplos núcleos agrupa

processadores individuais ou os núcleos de uma máquina multicore. Nestes grupos, as tarefas são designadas para as CPUs.

● Etapa 2: Cada processador gerencia as tarefas que serão executadas por ele, conforme agendamento de serviços. O Stack Pointer de cada núcleo fornece o endereçamento da cada bloco de dados a ser analisado.

Page 12: Manipulação de Kernel Linux LKCAMP – Blumenau/SC - 21/05/2019 · 2020-04-26 · Kernel 4.X – Diretórios e Arquivos O Kernel usado como base é o Kernel 4.X.XX, do repositório

Gerenciamento de Tarefas

● Modelo de Interrupção● O Kernel Linux distingue em 4 níveis distintos para processar código.

Usuários está restritos ao nível do usuário e ao nível dos aplicativos; Em computadores com múltiplos núcleos, as funções podem executar múltiplas tarefas em paralelo.

● Chamadas de sistema e threads do Kernel: tem prioridade similares e ficam no 'espaço do Kernel'. Podem trabalhar com modo de preempção (interrupções bloqueadas).

● O nível mais inferior é ocupado pelas rotinas de interrupção de serviços, que podem interromper toda e qualquer operação nas camadas superiores. É onde temos os 'as monitorias dos sinais de identificação de hardware'.

Page 13: Manipulação de Kernel Linux LKCAMP – Blumenau/SC - 21/05/2019 · 2020-04-26 · Kernel 4.X – Diretórios e Arquivos O Kernel usado como base é o Kernel 4.X.XX, do repositório

Gerenciamento de Tarefas● Modelo de Interrupção

Page 14: Manipulação de Kernel Linux LKCAMP – Blumenau/SC - 21/05/2019 · 2020-04-26 · Kernel 4.X – Diretórios e Arquivos O Kernel usado como base é o Kernel 4.X.XX, do repositório

Gerenciamento de Tarefas● Modelo de Interrupção

● Chamadas de sistema e threads do Kernel (Tarefas):

Page 15: Manipulação de Kernel Linux LKCAMP – Blumenau/SC - 21/05/2019 · 2020-04-26 · Kernel 4.X – Diretórios e Arquivos O Kernel usado como base é o Kernel 4.X.XX, do repositório

Gerenciamento de Tarefas

● Modelo de Interrupção● Estados de Tarefas: 'Tarefas' podem ter diversos estados (gráfico

anterior). Uma nova tarefa sempre é criada por uma chamada de sistema clone() como uma cópia exata de seu processo-mãe. A nova tarefa tem o estado TASK_RUNING. O agendador escolhe a próxima tarefa a ser processada, considerando as tarefas disponíveis. Uma mudança de contexto ativa a 'tarefa', que muda o estado para ativo.

Page 16: Manipulação de Kernel Linux LKCAMP – Blumenau/SC - 21/05/2019 · 2020-04-26 · Kernel 4.X – Diretórios e Arquivos O Kernel usado como base é o Kernel 4.X.XX, do repositório

Gerenciamento de Memória

● É o segundo maior componente do Kernel.● Responsável por implementar o endereçamento e a paginação.● Garante que todo e qualquer conjunto de código tenha acesso a memória

principal.● O registro do endereçamento utilizado pelos conjuntos de códigos

(aplicativos, libs, módulos, o próprio kernel, etc...) é SEMPRE aleatório, considerando os registros heap, stack e as bibliotecas compartilhadas. Este processo de endereçamento aleatório de instruções de código é chamado de Address Space Layout Randomization, ou ASLR e é um dos fatores que garante a segurança de acesso exclusivo do Kernel, bem como determina o processo hierárquico de acesso aos códigos em processamento.

Page 17: Manipulação de Kernel Linux LKCAMP – Blumenau/SC - 21/05/2019 · 2020-04-26 · Kernel 4.X – Diretórios e Arquivos O Kernel usado como base é o Kernel 4.X.XX, do repositório

Gerenciamento de Memória● Ciclo de vida dos objetos do Kernel na memória (via 'Paginação')

● Este 'ciclo' impede ataques maliciosos, vindos de fora do Kernel

Page 18: Manipulação de Kernel Linux LKCAMP – Blumenau/SC - 21/05/2019 · 2020-04-26 · Kernel 4.X – Diretórios e Arquivos O Kernel usado como base é o Kernel 4.X.XX, do repositório

Gerenciamento de Memória

● Paginação● O gerenciamento de memória converte os endereços lógicos

usados pelos aplicativos para manipulação de dados em endereços físicos. O método utilizado para isso é conhecido como 'paginação'. A paginação divide a memória principal em 'páginas' do mesmo tamanho. Neste contexto, uma 'pagina' tipicamente tem 4KB. Em outras palavras, 4GB de RAM são divididos em um milhão de páginas de memória.

Page 19: Manipulação de Kernel Linux LKCAMP – Blumenau/SC - 21/05/2019 · 2020-04-26 · Kernel 4.X – Diretórios e Arquivos O Kernel usado como base é o Kernel 4.X.XX, do repositório

Gerenciamento de Memória

● Paginação

Page 20: Manipulação de Kernel Linux LKCAMP – Blumenau/SC - 21/05/2019 · 2020-04-26 · Kernel 4.X – Diretórios e Arquivos O Kernel usado como base é o Kernel 4.X.XX, do repositório

Gerenciamento de Memória● Paginação

Page 21: Manipulação de Kernel Linux LKCAMP – Blumenau/SC - 21/05/2019 · 2020-04-26 · Kernel 4.X – Diretórios e Arquivos O Kernel usado como base é o Kernel 4.X.XX, do repositório

Gerenciamento de Memória

● Paginação (API's do Kernel para Manipulação de Memória)● Manipulação de memória do usuário. Esta seção cobre a interface

do Kernel e do espaço do usuário. As funções de acesso à memória do espaço do usuário estão listadas no próximo slide.

● Estas API's específicas (ou Interface de Programação de Aplicativo) são instruções do Kernel, que asseguram que toda e qualquer manipulação da memória sejam tratadas corretamente.

● Com isso, podemos avaliar os métodos de movimentação de dados entre o Kernel e o espaço do usuário (com o Kernel iniciando a operação e gerenciando todo o processo).

Page 22: Manipulação de Kernel Linux LKCAMP – Blumenau/SC - 21/05/2019 · 2020-04-26 · Kernel 4.X – Diretórios e Arquivos O Kernel usado como base é o Kernel 4.X.XX, do repositório

Gerenciamento de Memória

● Paginação (Funções de Manipulação de Memória do Usuário)

Page 23: Manipulação de Kernel Linux LKCAMP – Blumenau/SC - 21/05/2019 · 2020-04-26 · Kernel 4.X – Diretórios e Arquivos O Kernel usado como base é o Kernel 4.X.XX, do repositório

Gerenciamento de Entrada e Saída

● É responsável pelo acesso a arquivos e dispositivos periféricos. O ponto de distribuição central é o Virtual Filesystem Switch (VFS), que distribui o acesso e repassa as chamadas de disco para o agendador. Ele é responsável por organizar e otimizar as chamadas, para que a cabeça de leitura (no caso dos discos rígidos) faça o menor número possível de movimentos.

● O gerenciamento da cabeça de leitura é irrelevante para SSD's (memórias flash). Por isso, o Kernel passa os dados diretamente para o disco, se estiver configurada para este tipo de ação.

Page 24: Manipulação de Kernel Linux LKCAMP – Blumenau/SC - 21/05/2019 · 2020-04-26 · Kernel 4.X – Diretórios e Arquivos O Kernel usado como base é o Kernel 4.X.XX, do repositório

Gerenciamento de Entrada e Saída

● O VFS também utiliza o mesmo modelo hierárquico que o Kernel usa para gravar ou ler dados de um disco. Este modelo registra os meta-dados de cada arquivo. São estes os meta-dados: tamanho do arquivo, data de criação, último acesso, privilégios de acesso, propriedade, aplicativo que podem manipular o arquivo, etc... Este registro do meta-dado é associado a um inode (nó de índice de registro, que é um número identificador de cada arquivo e de seus meta-dados).

● Podemos listas os inodes e as demais informações associadas a ele e ao arquivos, a partir do comando ls -lai.

Page 25: Manipulação de Kernel Linux LKCAMP – Blumenau/SC - 21/05/2019 · 2020-04-26 · Kernel 4.X – Diretórios e Arquivos O Kernel usado como base é o Kernel 4.X.XX, do repositório

Gerenciamento de Entrada e Saída

● Exemplo de execução e resultado do 'ls -lai'brlix@brlix$ ls -lai

1321328 drwxr-xr-x 4 brlix brlix 4096 Dez 17 21:11 .

1319023 drwxr-xr-x 59 brlix brlix 4096 Dez 18 11:28 ..

1311518 -rw-r—r-- 1 brlix brlix 61996 Dez 8 13:46 CV-en.odt

1332258 -rw------- 1 brlix brlix 56 Set 24 14:48 .directory

1853167 drwxr-xr-x 2 brlix brlix 4096 Set 19 10:29 Epidemus

1349300 drwxr-xr-x 2 brlix brlix 4096 Dez 6 16:31 impressos

1321712 -rw-r--r-- 1 brlix brlix 36889 Dez 17 21:11 notes.txt

1337519 -rw-r—r-- 1 brlix brlix 280 Set 27 15:17 patrocinio-latinoware.txt

1341827 -rw-r—r-- 1 brlix brlix 2801 Set 20 13:31 sources.list-model

1339328 -rwxr-xr-x 1 brlix brlix 191 Set 25 20:10 wireless-lan-up

Page 26: Manipulação de Kernel Linux LKCAMP – Blumenau/SC - 21/05/2019 · 2020-04-26 · Kernel 4.X – Diretórios e Arquivos O Kernel usado como base é o Kernel 4.X.XX, do repositório

Gerenciamento de Entrada e Saída

● Ainda sobre o VFS, ele possui um conjunto de interfaces padrão para aplicativos, que se destina a reconhecer e executar E/S de arquivo, por meio de um conjunto de sistemas de arquivos que estiverem disponíveis no Kernel e combina isso com o suporte a um ou mais dispositivos.

● Os sistemas de arquivos não são estáticos. Estes sistemas de arquivos podem ir e vir conforme a natureza transitória dos dispositivos de armazenamento.

Page 27: Manipulação de Kernel Linux LKCAMP – Blumenau/SC - 21/05/2019 · 2020-04-26 · Kernel 4.X – Diretórios e Arquivos O Kernel usado como base é o Kernel 4.X.XX, do repositório

Gerenciamento de Entrada e Saída

● Um desktop Linux tem suporte ao sistema de arquivos ext3 no disco rígido e ao sistema de arquivos ISO 9660, em um CD-ROM/DVD-ROM, com o CDFS. Conforme mídias são inseridas e removidas, o Kernel Linux se adapta a esses novos sistemas de arquivos com diferentes conteúdos e estrutura. Um sistema de arquivo remoto é acessado através do Network File System (NFS). Ao mesmo tempo, o Linux 'monta' uma partição NT File System (NTFS) com Windows e a utiliza para leituras e gravações.

● Paralelamente, uma USB flash drive (UFD) removível é conectada, fornecendo outro sistema de arquivos, bem como o mesmo conjunto de interfaces de E/S de arquivo pode ser usado por todo esses dispositivos, permitindo que o sistema de arquivos subjacente e o dispositivo físico sejam removidos pelo usuário.

● O VFS cria uma 'camada de abstração uniforme', que permite a interação transparente entre as camadas manipuláveis pelo usuário ('aplicativos' e 'usuário') e a camada da BIOS e os dispositivos (hardware).

Page 28: Manipulação de Kernel Linux LKCAMP – Blumenau/SC - 21/05/2019 · 2020-04-26 · Kernel 4.X – Diretórios e Arquivos O Kernel usado como base é o Kernel 4.X.XX, do repositório

Gerenciamento de Entrada e Saída

Page 29: Manipulação de Kernel Linux LKCAMP – Blumenau/SC - 21/05/2019 · 2020-04-26 · Kernel 4.X – Diretórios e Arquivos O Kernel usado como base é o Kernel 4.X.XX, do repositório

Requisitos para Manipulação

● LIBNCURSES5-DEV● Conjunto de bibliotecas de funções da família ncurses (new curses), que

gerenciam programas, extensões, lib's e manuais para programação, sob GNU/GPL. Oferece um método independente para atualizar caracteres na tela.

● MAKE● O MAKE pode ser usado para descrever qualquer tarefa em que alguns

arquivos possam ser atualizados automaticamente com os outros, sempre que os outros mudarem. Para usar o MAKE, é necessário escrever um arquivo chamado "makefile", que descreve as relações entre os arquivos em seu programa, e o estado dos comandos para atualizar cada arquivo.

Page 30: Manipulação de Kernel Linux LKCAMP – Blumenau/SC - 21/05/2019 · 2020-04-26 · Kernel 4.X – Diretórios e Arquivos O Kernel usado como base é o Kernel 4.X.XX, do repositório

Requisitos para Manipulação

● GCC● O GCC é o compilador padrão para C, C++, Objective-C, Objective-C++, Ada,

Fortran 95, e Java em todas as arquiteturas. O pacote do GCC também provê libgcc1, libgcc2 (m68k) e libgcc4 (hppa) que contêm as GCC intrinsics e libstdc++6.

● KERNEL-PACKAGE● Um pacote Debian de utilitários para construir um Kernel Linux. Possui

arquivos “.config” pré-configurados para diversas arquiteturas. O comando para compilação e empacotamento “make-kpkg” está dentro deste pacote.

Page 31: Manipulação de Kernel Linux LKCAMP – Blumenau/SC - 21/05/2019 · 2020-04-26 · Kernel 4.X – Diretórios e Arquivos O Kernel usado como base é o Kernel 4.X.XX, do repositório

Requisitos para Manipulação

● BISON● Trata-se de um compilador, compatível com Yacc, que pode ser utilizado com fast

lexical analyzer generator, também chamado por FLEX.

● LIBELF-DEV● Fornece uma biblioteca compartilhada que permite ler e gravar arquivos ELF. Este

pacote contém bibliotecas de desenvolvimento e arquivos de cabeçalho para libelf1.

● LIBSSL-DEV● Este pacote é parte da implementação do projeto OpenSSL dos protocolos

criptográficos SSL e TLS, para comunicação segura pela Internet. Contém as bibliotecas de desenvolvimento, arquivos de cabeçalho e páginas man para o libssl e o libcrypto.

Page 32: Manipulação de Kernel Linux LKCAMP – Blumenau/SC - 21/05/2019 · 2020-04-26 · Kernel 4.X – Diretórios e Arquivos O Kernel usado como base é o Kernel 4.X.XX, do repositório

Requisitos para Manipulação

● BUILD-ESSENTIAL● Referencia todos os pacotes essenciais para efetuar a construção/manipulação/

edição de pacotes para Debian's-Like

● INITRAMFS-TOOLS● Pacote de scripts que facilita a criação de arquivos initrd. O initrd é um arquivo

que é responsável pelo processo de inicialização do Kernel, usado para preparar as tarefas a serem inicializadas antes de execução do sistema de arquivos

● GIT (para usarmos o kernel do Ubuntu)● Git é um sistema de controle de versão distribuído com ênfase em velocidade.

O Git foi inicialmente projetado e desenvolvido por Linus Torvalds para o desenvolvimento do kernel Linux.

Page 33: Manipulação de Kernel Linux LKCAMP – Blumenau/SC - 21/05/2019 · 2020-04-26 · Kernel 4.X – Diretórios e Arquivos O Kernel usado como base é o Kernel 4.X.XX, do repositório

Requisitos para Manipulação

● FLEX● Flex (fast lexical analyzer generator) é uma alternativa open source para

o LEX. Trata-se de um aplicativo que gera análises de léxicos (também chamadas de "scanners" ou "lexers"). É frequentemente utilizada como uma implementação LEX em conjunto com o Berkeley Yacc parser generator em sistemas operacionais derivados BSD (uma vez que LEX e o Yacc são parte do POSIX), mas também pode ser usado em conjunto com o GNU bison (uma versão do Yacc), que é um port de BSD’s para distribuições Linux’s. Diferente do Bison, FLEX não é parte do projeto GNU e não se encontra sob GPL.

Page 34: Manipulação de Kernel Linux LKCAMP – Blumenau/SC - 21/05/2019 · 2020-04-26 · Kernel 4.X – Diretórios e Arquivos O Kernel usado como base é o Kernel 4.X.XX, do repositório

Requisitos para Manipulação

● KERNEL SOURCE● Código fonte do kernel a ser utilizada no processo de manipulação

Podemos utilizar um “Linux Source” de qualquer origem, desde que o “source” possua os módulos que sejam compatíveis com o ambiente em uso. Exemplo: - Ambiente Debian-Like - Podemos usar “Linux Source” do kernel.org https://git.kernel.org/torvalds/t/linux-4.18-rc5.tar.gz

- Podemos usar “Linux Source” do Ubuntu, via 'git' # git clone git://kernel.ubuntu.com/ubuntu/ubuntu-<versão>.git source

- Podemos usar “Linux Source” do Debian http://ftp.br.debian.org/debian/pool/main/l/linux/linux-source-4.19_4.19~rc7-1~exp1_all.deb

- Entre outras fontes... (procure fontes confiáveis!!)

Page 35: Manipulação de Kernel Linux LKCAMP – Blumenau/SC - 21/05/2019 · 2020-04-26 · Kernel 4.X – Diretórios e Arquivos O Kernel usado como base é o Kernel 4.X.XX, do repositório

Manipulação do Kernel

● Via “make menuconfig”, podemos manipular a partir de uma ferramenta, a habilitação e/ou desabilitação de módulos para suporte a hardware e sistemas de arquivos

● Além do “menuconfig”, temos o “xconfig” e o “gconfig”, que são ferramentas gráficas que também permitem a manipulação do configurador para o Kernel

● Outro caminho (mais complexo) é a manipulação do arquivo “.config”, utilizado para determinar quais módulos serão compilados e se serão internos ou externos

Page 36: Manipulação de Kernel Linux LKCAMP – Blumenau/SC - 21/05/2019 · 2020-04-26 · Kernel 4.X – Diretórios e Arquivos O Kernel usado como base é o Kernel 4.X.XX, do repositório

Manipulação do Kernel - menuconfig

Page 37: Manipulação de Kernel Linux LKCAMP – Blumenau/SC - 21/05/2019 · 2020-04-26 · Kernel 4.X – Diretórios e Arquivos O Kernel usado como base é o Kernel 4.X.XX, do repositório

O quê tem lá dentro?

● Bom,.... só usando o menuconfig para descobrir!● Vamos executar

● ~$ cd /usr/src/linux-source-4.X.XX/● ~$ sudo su● ~# make menuconfig

Na referência CONFIG_SYSTEM_TRUSTED_KEYS="", deve-se remover a entrada debian/certs/test-signing-certs.pem.

Page 38: Manipulação de Kernel Linux LKCAMP – Blumenau/SC - 21/05/2019 · 2020-04-26 · Kernel 4.X – Diretórios e Arquivos O Kernel usado como base é o Kernel 4.X.XX, do repositório

Compilar Kernel e gerar Pacotes

OBS.: Antes de gerar os pacotes, edite o arquivo “/etc/kernel-pkg.conf”, alterando o nome do mantenedor do pacote.

● Após todo o processo de edição, podemos executar o comando abaixo, para compilar e gerar pacotes de instalação do “fonte” editado (linux-source), da “imagem” (linux-image) do Kernel e dos “cabeçalhos” (linux-headers) de interação com o Kernel.

# make-kpkg kernel_image kernel_source kernel_headers

Page 39: Manipulação de Kernel Linux LKCAMP – Blumenau/SC - 21/05/2019 · 2020-04-26 · Kernel 4.X – Diretórios e Arquivos O Kernel usado como base é o Kernel 4.X.XX, do repositório

Arquivo initrd

● O arquivo initrd é um bloco de dispositivos somente de leitura. Também é uma memória RAM virtual que é inicializada pelo gerenciador de boot (grub ou lilo) antes que o kernel seja inicializado. O kernel então pode usar o conteúdo do initrd para iniciar o sistema em duas etapas.

● Na primeira etapa da inicialização, o kernel inicia-se e monta um sistema de arquivos raiz inicial, a partir do conteúdo do initrd. Na segunda etapa, os drivers adicionais e outros módulos são carregados. Depois de carregar os módulos adicionais, um novo sistema de arquivos root é disponibilizado.

Page 40: Manipulação de Kernel Linux LKCAMP – Blumenau/SC - 21/05/2019 · 2020-04-26 · Kernel 4.X – Diretórios e Arquivos O Kernel usado como base é o Kernel 4.X.XX, do repositório

Instalação do Kernel

● Com os arquivos gerados, podemos instalar a imagem do kernel e os cabeçalhos, com o seguinte comando:

# dpkg -i kernel*.deb

● Criar o arquivo initrd (caso não seja criado na compilação)# mkinitramfs -o /boot/initrd.img-4.X.XX /lib/modules/4.X.XX

● Atualizar o gerenciador de boot (no caso, o grub)# update-grub

Page 41: Manipulação de Kernel Linux LKCAMP – Blumenau/SC - 21/05/2019 · 2020-04-26 · Kernel 4.X – Diretórios e Arquivos O Kernel usado como base é o Kernel 4.X.XX, do repositório

Instalação do Kernel

● Após atualizar, podemos verificar o arquivo de gerenciamento de boot do grub, para verificar todos os kernels disponíveis.

# nano /boot/grub/menu.lst (para grub 1)Ou# nano /boot/grub/grub.cfg (para grub 2)

● Obs.: devemos verificar a presença das linhas de inicialização do kernel, bem como a linha de inicialização do initrd correspondente a cada kernel.

Page 42: Manipulação de Kernel Linux LKCAMP – Blumenau/SC - 21/05/2019 · 2020-04-26 · Kernel 4.X – Diretórios e Arquivos O Kernel usado como base é o Kernel 4.X.XX, do repositório

Mapa do Kernel Linux

Page 43: Manipulação de Kernel Linux LKCAMP – Blumenau/SC - 21/05/2019 · 2020-04-26 · Kernel 4.X – Diretórios e Arquivos O Kernel usado como base é o Kernel 4.X.XX, do repositório

Referências

● Kernel GitHub● https://github.com/torvalds/linux

● Security breach at kernel.org● http://www.h-online.com/open/news/item/Security-breach-at-kernel-org-1334642.html

Page 44: Manipulação de Kernel Linux LKCAMP – Blumenau/SC - 21/05/2019 · 2020-04-26 · Kernel 4.X – Diretórios e Arquivos O Kernel usado como base é o Kernel 4.X.XX, do repositório

Referências

● Advanced Configuration and Power Interface - ACPI● http://en.wikipedia.org/wiki/Advanced_Configuration_and_Power_Interface

● Virtual Filesystem Switch (VFS)● http://www.ibm.com/developerworks/linux/library/l-virtual-filesystem-switch/

● Debian Package Tracking System – Experimental Kernel Source● https://packages.debian.org/source/experimental/linux

● Ubuntu Packages Search System – Kernel for AWS● https://packages.ubuntu.com/cosmic/linux-aws

● Linux Kernel Map● http://www.makelinux.net/kernel_map/

Page 45: Manipulação de Kernel Linux LKCAMP – Blumenau/SC - 21/05/2019 · 2020-04-26 · Kernel 4.X – Diretórios e Arquivos O Kernel usado como base é o Kernel 4.X.XX, do repositório

Referências

● JONES, M. Tim: GNU/Linux Application Programming : 2nd Edition● Charles River Media: 2008

● RUBINI, Alessandro et al: Linux Device Drivers : 3rd Edition● O'Reilly: 2005

● McCARTY, Bill: Learning Debian GNU/Linux : 1st Edition● O'Reilly: 2000

● KROAH-HARTMAN, Greg: Linux Kernel in a Nutshell● O'Reilly: 2006

● BOVET, Daniel et al: Understanding the Linux Kernel : 3rd Edition● O'Reilly: 2005

● LOVE, Robert: Linux System Programming : 1st Edition● O'Reilly: 2007

● KERRISK, Michael: The Linux Programming Interface: 1st Edition● No Starch Press – San Francisco: 2010

Page 46: Manipulação de Kernel Linux LKCAMP – Blumenau/SC - 21/05/2019 · 2020-04-26 · Kernel 4.X – Diretórios e Arquivos O Kernel usado como base é o Kernel 4.X.XX, do repositório

PERGUNTAS?David [email protected]

Manipulação de Kernel Linux

LKCAMP – Blumenau/SC - 21/05/2019