Академический Документы
Профессиональный Документы
Культура Документы
2012
2.31
2012
3.31
Tipos de Kernel
Monoltico
O Kernel Monoltico executa cada servio bsico do sistema como gerenciamento de memria, manipulao de interrupes e comunicao I/O, sistemas de arquivos, etc. no espao do kernel. A incluso de todos os servios bsicos no espao do kernel tem 3 grandes inconvenientes: o tamanho do kernel, falta de extensibilidade e difcil manuteno. Os Kernels Monolticos exigem recompilao e reboot no sistema antes de elespoderem adicionar novos recursos. Linux, Unix, FreeBSD, DOS
Humberto Caetano @CST Ps-Graduao: Adm de Redes Linux 4.31
2012
Tipos de Kernel
Microkernel
O conceito de Microkernel de reduzir o kernel a comunicaes de processos bsicos econtrole de I/O, e deixar os outros servios de sistemas situados no user-space (espao dousurio) em forma de processos normais(chamados de servers) Existe um server para cada problema de gerenciamento de memria, um server faz gerenciamento de processos, e outrogerencia drivers, e assim por diante. Microkernels oferecem uma maior flexibilidade, pois voc pode adicionar vriosmdulos de suport sem realizar o reboot Mdulos infectados,ou Trojan modules, apresentam um grande risco de segurana. Se o kernel carrega tal mdulo,ele roda com todo o controle do sistema e privilgios do kernel em si. OpenSolaris, Hurd, Minix
Humberto Caetano @CST Ps-Graduao: Adm de Redes Linux 5.31
2012
Tipos de Kernel
Kernel Hbrido
A Microsoft introduziu o kernel para seu Windows NT, no incio da dcada de 1990. Foi planejado para ser um microkernel, mas por falta de desempenho, a Microsoft decidiu colocar um monte de servios do sistema de volta ao espao do kernel, incluindo, entre outros, os drivers de dispositivo e pilhas de comunicao. Isso encheu o kernel e tornou-o maior do que a maioria dos kernels monolticos existentes naquela poca. Windows
Humberto Caetano @CST Ps-Graduao: Adm de Redes Linux 6.31
2012
Tipos de Kernel
ExoKernel
Um ExoKernel elimina a noo que um sistema operacional deveria prover abstrao para as aplicaes. Ao invs disso ele se preocupa, basicamente, em multiplexar de forma segura o acesso puro ao hardware. Xen
2012
7.31
Arquitetura do Sistema
2012
8.31
Caractersticas do Kernel
1. Permite o carregamento dinmico dos mdulos do kernel. Embora o mesmo seja monoltico, capaz de carregar e descarregar dinamicamente o cdigo do kernel. 2. Tem suporte do multiprocessador simtrico (SMP). 3. O Kernel Linux antecipado (preemptive). capaz de antecipar uma tarefa, caso ela esteja sendo executada no kernel. 4. O Kernel Linux no tem drivers no user space, e sim Kernel Loadable Modules que rodam no Kernel. 5. O Kernel Linux no pode utilizar aritmtica de ponto flutuante.
2012
9.31
Caractersticas do Kernel
6. A memria do Kernel Linux no paginvel. Cada byte de memria consumido um byte a menos na memria fsica. 7. O Kernel Linux executa operaes em segundo plano atravs das threads - processos-padres que existem unicamente no kernel space e no trocam de contexto no user space, porm, so programveis e so preemptive (antecipados) como processos normais. 8. Quando um processo ou uma tarefa termina, o Kernel Linux libera os recursos e notifica os outros processos e tarefas que estavam associados a eles. 9. O Kernel Linux livre, em todos os sentidos da palavra.
Humberto Caetano @CST Ps-Graduao: Adm de Redes Linux 10.31
2012
Kernel do Linux
2012
11.31
Mdulos
2012
Mdulos
Para carregarmos um mdulo podemos usar o comando insmod. Mas o insmod s funciona corretamente se voc carregar todos os mdulos que tem dependncias.
# insmod /lib/modules/3.10.0/kernel/fs/fat/vfat.ko
insmod: error inserting '/lib/modules/3.10.0/kernel/fs/fat/vfat.ko': -1 Unknown symbol in module
2012
13.31
Mdulos
Uma outra vantagem do modprobe que ele capaz de carregar o mdulo sem a necessidade de digitarmos o caminho completo ao arquivo do mdulo.
Humberto Caetano @CST Ps-Graduao: Adm de Redes Linux 14.31
2012
Mdulos
/lib/modules/`uname -r`
2012
Mdulos
2012
16.31
# uname -r 2.6.32-5-686 A.B.C-D # uname -a Linux debian 2.6.32-5-686 #1 SMP Fri May 10 08:33:48 UTC 2013 i686 GNU/Linux
2012
17.31
A - Version :: Nmero principal. a verso principal. B - Patchlevel :: Indica mudanas importantes no funcionamento do kernel do Linux. o nmero de reviso principal. At a verso 2.4 se esse nmero fosse mpar, indicava um kernel experimental, se fosse par, ento era um kernel considerado estvel (de produo). Da verso 2.6 em diante no se usa mais essa distino. Agora so usadas RC (Release Candidate). Ento, a verso 3.8.3, uma verso estvel, a verso 3.9-rc2 uma verso de desenvolvimento. A verso 2.6.34.14 era uma verso estvel, a verso 2.6.34-rc5 era uma verso em desenvolvimento. C - Sublevel :: Sua evoluo indica o suporte a novos dispositivos, bem como correo de bugs e pequenos melhoramentos no sistema. o nmero de reviso secundrio. D - Extraversion :: Usado quando desejamos diferenciar duas compilaes de um kernel de mesma verso, a fim de constiturem mdulos separados. So as correes urgentes.
Humberto Caetano @CST Ps-Graduao: Adm de Redes Linux 18.31
2012
O Linux implementa um kernel monoltico. Porm ele implementa ideias do mundo Mikrokernel:
2012
Baixando o arquivo tar.gz disponvel em kernel.org ou atravs da sua distribuio Baixando uma verso atravs do git.
2012
20.31
2012
21.31
Preparando a compilao
Linux Debian
# apt-get install build-essential ncurses-dev kernel-package
Linux CentOS
# yum groupinstall "Development Tools" ncurses-devel bc
2012
22.31
Preparando a compilao
Como ponto de partida, vamos copiar a configurao atual do kernel do nosso Linux.
# cp /boot/config-`uname -r` /usr/src/linux/.config
Lembrando que podemos utilizar os comandos make config, make menuconfig e make xconfig para criarmos o arquivo .config que ser utilizado na compilao
2012
23.31
Compilando
2012
24.31
Preparando a compilao
Para que possamos iniciar o Linux corretamente, precisamos criar o arquivo de drivers de dispositivos.
# ls /lib/modules/ # cp .config /boot/config-3.9.8
No debian
# mkinitramfs -o /boot/initrd.img-3.9.8 3.9.8
No CentOS
# mkinitrd /boot/initramfs-3.9.8.img 3.9.8
Humberto Caetano @CST Ps-Graduao: Adm de Redes Linux 25.31
2012
Preparando a inicializao
Debian
# cp arch/i386/boot/bzImage /boot/vmlinuz-3.9.8 # update-grub
Generating grub.cfg ... Found linux image: /boot/vmlinuz-3.9.8 Found initrd image: /boot/initrd.img-3.9.8 Found linux image: /boot/vmlinuz-2.6.32-5-686 Found initrd image: /boot/initrd.img-2.6.32-5-686
CentOS
# cp arch/i386/boot/bzImage /boot/vmlinuz-3.9.8
Agora temos que editar o arquivo /boot/grub/menu.lst e adicionar a entrada para o novo kernel.
Humberto Caetano @CST Ps-Graduao: Adm de Redes Linux 26.31
2012
Uma forma de trabalharmos na atualizao do Kernel aplicando patches de correo ao mesmo ao invs de efetuar o download de uma verso completa.
# wget https://www.kernel.org/pub/linux/kernel/v3.x/patch-3.10.bz2 # wget https://www.kernel.org/pub/linux/kernel/v3.x/patch-3.9.8.bz2
2012
27.31
J existe um patch implantado no kernel que estvamos utilizando, ento temos que remov-lo.
# cd /usr/src/linux-3.10 # patch -R -p1 < /root/patch-3.9.8
2012
Para finalizar, podemos compilar o novo kernel. Vamos copiar o arquivo .config da compilao anterior para facilitar o processo.
# cp /usr/src/linux-3.9.8/.config /usr/src/linux-3.10/
2012
29.31
possvel gerarmos pacotes do kernel compilado para que possamos instalar nosso trabalho em outras mquinas da rede. # cd /usr/src/linux-3.10
Debian # mkdir Documentation/lguest # echo all: >> Documentation/lguest/Makefile # fakeroot make-kpkg --initrd kernel-image kernel_headers
2012
30.31
2012
31.31