manipulação de kernel linux lkcamp – blumenau/sc - 21/05/2019 · 2020-04-26 · kernel 4.x –...
TRANSCRIPT
![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](https://reader036.vdocuments.mx/reader036/viewer/2022062414/5f2c0827eb2f7b5149368a43/html5/thumbnails/1.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062414/5f2c0827eb2f7b5149368a43/html5/thumbnails/2.jpg)
● 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](https://reader036.vdocuments.mx/reader036/viewer/2022062414/5f2c0827eb2f7b5149368a43/html5/thumbnails/3.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062414/5f2c0827eb2f7b5149368a43/html5/thumbnails/4.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062414/5f2c0827eb2f7b5149368a43/html5/thumbnails/5.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062414/5f2c0827eb2f7b5149368a43/html5/thumbnails/6.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062414/5f2c0827eb2f7b5149368a43/html5/thumbnails/7.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062414/5f2c0827eb2f7b5149368a43/html5/thumbnails/8.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062414/5f2c0827eb2f7b5149368a43/html5/thumbnails/9.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062414/5f2c0827eb2f7b5149368a43/html5/thumbnails/10.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062414/5f2c0827eb2f7b5149368a43/html5/thumbnails/11.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062414/5f2c0827eb2f7b5149368a43/html5/thumbnails/12.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062414/5f2c0827eb2f7b5149368a43/html5/thumbnails/13.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062414/5f2c0827eb2f7b5149368a43/html5/thumbnails/14.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062414/5f2c0827eb2f7b5149368a43/html5/thumbnails/15.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062414/5f2c0827eb2f7b5149368a43/html5/thumbnails/16.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062414/5f2c0827eb2f7b5149368a43/html5/thumbnails/17.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062414/5f2c0827eb2f7b5149368a43/html5/thumbnails/18.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062414/5f2c0827eb2f7b5149368a43/html5/thumbnails/19.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062414/5f2c0827eb2f7b5149368a43/html5/thumbnails/20.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062414/5f2c0827eb2f7b5149368a43/html5/thumbnails/21.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062414/5f2c0827eb2f7b5149368a43/html5/thumbnails/22.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062414/5f2c0827eb2f7b5149368a43/html5/thumbnails/23.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062414/5f2c0827eb2f7b5149368a43/html5/thumbnails/24.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062414/5f2c0827eb2f7b5149368a43/html5/thumbnails/25.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062414/5f2c0827eb2f7b5149368a43/html5/thumbnails/26.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062414/5f2c0827eb2f7b5149368a43/html5/thumbnails/27.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062414/5f2c0827eb2f7b5149368a43/html5/thumbnails/28.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062414/5f2c0827eb2f7b5149368a43/html5/thumbnails/29.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062414/5f2c0827eb2f7b5149368a43/html5/thumbnails/30.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062414/5f2c0827eb2f7b5149368a43/html5/thumbnails/31.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062414/5f2c0827eb2f7b5149368a43/html5/thumbnails/32.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062414/5f2c0827eb2f7b5149368a43/html5/thumbnails/33.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062414/5f2c0827eb2f7b5149368a43/html5/thumbnails/34.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062414/5f2c0827eb2f7b5149368a43/html5/thumbnails/35.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062414/5f2c0827eb2f7b5149368a43/html5/thumbnails/36.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062414/5f2c0827eb2f7b5149368a43/html5/thumbnails/37.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062414/5f2c0827eb2f7b5149368a43/html5/thumbnails/38.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062414/5f2c0827eb2f7b5149368a43/html5/thumbnails/39.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062414/5f2c0827eb2f7b5149368a43/html5/thumbnails/40.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062414/5f2c0827eb2f7b5149368a43/html5/thumbnails/41.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062414/5f2c0827eb2f7b5149368a43/html5/thumbnails/42.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062414/5f2c0827eb2f7b5149368a43/html5/thumbnails/43.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062414/5f2c0827eb2f7b5149368a43/html5/thumbnails/44.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062414/5f2c0827eb2f7b5149368a43/html5/thumbnails/45.jpg)
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