You are on page 1of 48

Aspectos do Kernel do Linux e Instalao

Prof. Mauro Tapajs

Objetivos
Nivelar

os participantes do projeto Itautec nos vrios aspectos do kernel do sistema Linux que ser uma das plataformas a serem analisadas sobre as mquinas Itautec as questes relevantes sobre o assunto para a pesquisa em andamento do projeto as dvidas que ocorrerem aos participantes e esclarec-las para que a pesquisa siga adiante

Levantar

Investigar

Kernel do Linux

Trata-se do componente central deste sistema operacional (core) Totalmente customizvel pode ficar pequeno e compacto Monoltico ( a escolha Pode rodar em hardwares modestos Grande compatibilidade

Filesystems (Windows, OS/2, MAC OS, Solaris, SunOS, NeXTSTEP, BSD, etc) Rede (Ethernet, Fast e Giga, FDDI, HIPPI, Token Ring, WaveLAN, DEC Roamabout) Com as bibliotecas adequadas pode at rodar programas escritos para outros SOs

Caractersticas do Kernel

Multitarefa real - gerencia o tempo de CPU entre os vrios processos Multiprocessamento pode trabalhar com vrios processadores Gerenciamento otimizado de memria, com suporte a memria virtual (swap) Faz a gesto de recursos da mquina (portas seriais, impressoras, rede, etc) Continuamente atualizado (evoluo de hardware)

Caractersticas do Kernel

Controla e media o acesso ao hardware Controla os filesystems, apresentando qualquer dispositivo de armazenamento numa forma padronizada Implementa e suporta abstraes fundamentais ao sistema como processos, arquivos, dispositivos, usurios, rede, filesystems Controla a distribuio de recursos do sistema Realiza tarefas de manuteno rotineiras

Modo de Operao

Execuo de processos em modo kernel / usurio Kernel reentrante possibilidade de rodar vrios processos em kernel mode No preemptivo (em sistemas monoprocessados) Kernel control path sequncia de instrues executada pelo kernel em resposta a chamadas de sistema, interrupes ou excees interessante se rodar com as interrupes habilitadas na maior parte do tempo

Plataformas Suportadas

alpha (HP) arm cris (thin servers) i386 Ia64 itanium m68k mips e Mips64 parisc (HP) ppc s390 e s390x (IBM zSeries) sh (superH Hitachi) sparc e sparc64 (SUN)

Numerao dos kernels

Formato X.Y.Z, onde


X nmero de verso Y

se for par uma verso estvel se for mpar uma verso em desenvolvimento

Z nmero do release (estvel ou beta)

O kernel 2.4 (atual) foi lanado em jan/2001

Caractersticas da Verso 2.4 do kernel


No h mais a limitao de 1024 processos/threads Melhor suporte multiprocessador (SMP) Suporte USB e PCMCIA interno no kernel e no em pacotes separados Suporte genrico a portas paralelas Melhor suporte a filesystems e NFSv3 Facilidade na importao de filesystems externos (tecnologia de filesystem virtual) Melhor suporte a memria virtual Novos dispositivos so suportados

Algumas Distribuies Linux

Layout Bsico dos diretrios do Linux


/bin /sbin /etc /root /dev /lib /lib/modules /mnt /var /usr /usr/src/linux /usr/doc /boot /tmp /home /opt /lost+found /proc
Arquivos aplicativos/utilitrios binrios executveis Arquivos binrios executveis essenciais ao sistema Arquivos de inicializao, configurao e administrao do sistema Diretrio pessoal do usurio root Arquivos de dispositivos Bibliotecas Mdulos que podem ser carregados no kernel Ponto de montagem de filesystems temporrios Arquivos permanentemente atualizados e que mudam muito de tamanho como, por exemplo, logs e spools de impresso Arquivos de aplicaes do sistema Arquivos de cdigo-fonte do kernel do Linux Alguns arquivos com documentao especfica Arquivos usados na inicializao (boot) Arquivos temporrios Arquivos locais dos usurios Arquivos de instalao de aplicaes Blocos de filesystem encontrados perdidos pelo comando fsck Informaes do sistema: processos, dispositivos, memria, filesystems, etc.

Diretrio /proc

Diretrio especial ilusrio criado pelo kernel em memria para disponibilizar informaes online sobre o sistema Permite acesso vrias informaes sobre o que est acontecendo na mquina

Exemplos: /proc/x informaes do processo de nmero x /proc/cpuinfo processador, tipo, modelo, etc /proc/devices lista de dispositivos no kernel atual /proc/modules lista os mdulos carregados no momento

Arquitetura do Kernel
Applications System Libraries (libc) System Call Interface I/O Related File Systems Networking Device Drivers Process Related Scheduler Memory Management IPC

Modules

Architecture-Dependent Code Hardware

Arquitetura do Kernel

Kernel

Isola o hardware das aplicaes (intermedirio)

Memria

Memria usada pelos processos (Texto, dados e pilha)

Gerenciamento de Memria

Parte da memria fsica de um sistema alocada para o kernel e suas estruturas de dados estticas A outra parte gerenciada pelo sistema de memria virtual, atendendo ao kernel, processos e caches de dispositivos de I/O

Cada processo ter sua rea de endereamento privativa Vrias cpias do mesmo processo podem compartilhar sua execuo, separando apenas as reas de dados

Memria Virtual

Usada para disponibilizar memria virtual e task swapping Vantagens


Rodar processos que exigem mais memria que a fisicamente instalada no sistema Somente parte do cdigo de um programa armazenada na memria fsisca Pode-se realocar programas para qualquer rea da memria fsica do sistema

O kernel cria um espao de endereamento virtual nico de forma que memria fsica e memria virtual se tornam transparente para processos Um mapeamento automtico traduz endereos de memria em endereos fsicos

Memria Virtual

Swapping cpia de todo o escopo de um processo para o disco Paginao cpia de partes (pginas) para o disco (4 kb) Dependendo da aplicao, velocidade desejada e tamanho da RAM, o espao de memria virtual pode ter de 1 a 3 vezes o tamanho da RAM Pode-se ter 16 reas de swap em disco, inclusive em discos diferentes! Alguns comandos envolvidos: mkswap swapon / swapoff free

Interao com o Kernel


Chamadas Endereos O

de Sistema - normalmente exigem endereos de memria como parmetros errados podem causar crash kernel deve checar se os endereos esto coerentes antes de realizar a chamada (atravs de funes especficas) ou apenas tratar as falha a nvel de kernel mode caso enviado um sinal para o processo falho (SIGSEGV)

Neste

Interrupes
Possibilidade

do hardware se comunicar com o

sistema
Usadas

pelos device drivers de interrupes

Nmeros

Primeiro conjunto : 0-7 Segundo conjunto : 8-15

Em

placas SMP

irq13 para interrupes Interprocessador irq16 para SMP reschedule

Chamadas de Sistema
Exemplos:
kill () sigaction () sigprocmask () sigpending () ssetmask() sigsuspend() settimer fork

Interao com o Kernel


Excees

falha

falha de hardware ou instruo

Processos

podem criar seus timers para controle temporizado de eventos de controle do kernel para estes timers (ordenao e ticks de 10 ms - i386)

Necessidade

Sinais
Mensagens

execuo Cada sinal tem um nmero e significao Exemplos:


SIGHUP 1 SIGINT 2 SIGQUIT 3 SIGILL 4 SIGTRAP 5 SIGBUS 7 SIGFPE 8 SIGKILL 9 hangup interrupt quit illegal instruction trace trap bus error arithmetic exception kill (cannot be caught, blocked, or ignored)

do sistema para processos em

Devices

Device driver permite a interao do kernel com o dispositivo de I/O Os DD podem ser mdulos do kernel e podem se carregados e descarregados dinamicamente sob demanda O diretrio /dev contm os arquivos de dispositivos (no so drivers para o dispositivo) Existem arquivos de dispositivos para dispositivos abstratos como /dev/null e /dev/log Exemplo: Dispositivos para HDs
/hda1: primeiro HD primeira parto /hda2: primeiro HD segunda parto /hdb1: segundo HD primeira parto /hdb2: segundo HD segunda parto

Arquivo de dispositivo

O arquivo de dispositivo o arquivo que representa o hardware no sistema O ponto de montagem o diretrio onde o filesystem montado Os drivers dos dispositivos so partes do kernel responsveis em controlar os diversos hardwares da mquina Os dispositivos se comunicam com o kernel atravs dos arquivos do diretrio /dev

Acesso a dispositivos

SMP - Symmetrical MultiProcessor


O kernel suporta o trabalho de vrios processadores em paralelo Sistemas Multiprocessados vrios kernels control path O procedimento de desabilitar interrupes de hardware no faz sentido em sistemas multiprocessados (outros processo de kernel podem acessar os dados protegidos na regio crtica) Semforos ou spin locks podem ser usados para manter a integridade de estruturas de dados em sistemas multiprocessados As estruturas de dados de processos (tasks) deve conter informao de que processador est executando o processo

Compilao do Kernel

Razes: Kernel mais simples / leve Kernel mais genrico Kernel com suportes especficos

1. 2. 3.

Pode-se gerar um kernel numa mquina mais rpida e depois copi-lo para uma mais lenta

Compilao do Kernel

Procedimento: make config / menuconfig / xconfig make dep make clean make zImage/bzimage/bzdisk Cpia da imagem gerada para o diretrio /usr/src/Linux/arch/i386/boot/zImage ou um diskette (bzdisk) make modules Make modules_install Atualizao do LILO (ou outro boot manager)

1. 2. 3. 4. 5.

6. 7. 8.

Compilao do Kernel

HARDWARE-How To listas de compatibilidade com o kernel Checar se as verses de gcc e libc so as corretas Ao chamar algum dos comandos config, ser apresentado um lista das opes possveis do kernel Itens que variam de acordo com a verso do kernel, como: Suporte SCSI Itens de Networking Adequao para determinadas famlias de processadores

Suporte a Mdulos

Alternativas para um kernel lidar com vrios dispositivos: microkernel (exige muita comunicao interprocesso) e suporte a mdulos Linux usa mdulos em razo da eficincia, normalmente device drivers Quase todas as partes do kernel podem ser transformadas em mdulos O kernel possui uma tabela de smbolos que indica o mdulo que deve ser carregado Modernas arquiteturas podem realizar o check do hardware e o kernel pode identificar os dispositivos em tempo de boot para carregar os mdulos correspondentes

Suporte a Mdulos

Processo kerneld no mais usado Nos novos kernels, esta funo pode ser feita pelo prprio kernel (opo kmod de compilao) Alguns comandos envolvidos:

modprobe insmod rmmod

Instalao do Kernel

Make bzlilo (somente se o lilo estiver em /sbin/ e o kernel est em vmlinuz) Ou usar o lilo diretamente configurando o arquivo /etc/lilo.conf Outro boot manager - GRUB

Formato da rvore de Cdigo Fonte do Linux


Documentation arch drivers
acorn atm block cdrom char dio fc4 i2c i2o ide ieee1394 isdn macintosh misc net

/usr/src/linux
init fs include
asm-alpha asm-arm asm-generic asm-i386 asm-ia64 asm-m68k asm-mips asm-mips64 linux math-emu net pcmcia scsi video adfs affs autofs autofs4 bfs code cramfs devfs devpts efs ext2 fat hfs hpfs

scripts net lib mm


802 appletalk atm ax25 bridge core decnet econet ethernet ipv4 ipv6 ipx irda khttpd lapb

ipc

kernel

alpha arm i386 ia64 m68k mips mips64 ppc s390 sh sparc sparc64

adfs affs autofs autofs4 bfs code cramfs devfs devpts efs ext2 fat hfs hpfs

Cdigo Fonte do Linux

documentation

documentos dos desenvolvedores divididos por itens especficos um subdiretrio para cada arquitetura, sendo que cada um pode ter subdiretrios para /usr/src/linux/ especficos para a arquitetura O lib contm rotinas j otimizadas para a plataforma em questo (memcpy, checksums, etc) Maior parte do cdigo (~1.5M) Subdiretrios especficos (por exemplo: SCSI) Mecanismos de virtual filesystem (VFS) Subdiretrios para cada tipo de fs

arch

drivers

fs

Cdigo Fonte do Linux

include

Contm os arquivos de definies (include) usados

linux math-emu net pcmcia scsi video

Pores especficas do kernel sao guardadas com estruturas #ifdefs


#ifdef __KERNEL__ /* kernel stuff */ #endif

Cdigo Fonte do Linux

init

Processos de inicializao Somente dois arquivos


version.c contains the version banner that prints at boot main.c architecture-independent boot code

Implementam a funo start_kernel

ipc

Implementao de comunicao interprocesso System V (semforos, memria compartilhada e filas de mensagens)

Cdigo Fonte do Linux

kernel

Cdigo core do sistema sched.c (o arquivo principal do kernel) - scheduler, wait queues, timers, alarms, task queues Interrupoes (irq.c) Controle de processos (fork.c, exec.c, signal.c, exit.c - acct.c, capability.c, exec_domain.c) Suporte a mdulos (kmod.c, ksyms.c, module.c) Outras operaes (time.c, resource.c, dma.c, softirq.c, itimer.c, printk.c, info.c, panic.c, sysctl.c, sys.c)

Cdigo Fonte do Linux

lib

Compressores do tipo gzip Analisadores de comandos e erros Rotinas de suporte Gerenciamento de memria Paginao e swapping, polticas, rotinas de baixo nvel Alocao e liberao de memria Memria virtual Mapeamento de memria Networking Em constante alterao Configuraes do kernel em menus Patching

mm

net

scripts

Desenvolvimento no Linux
Scripts WEB:

(Awk, perl, shells) C, C++

html, php, javascript

Linguagem Java Velhas

Linguagens: cobol e lisp sockets, rpc, motif (paga) entre processos: FIFO, RPC,

Bibliotecas:

Comunicao

IPC

Desenvolvimento no Linux Ferramentas


Script gcc

configure (autoconf)

(cc) grficos (xwpe, proprietrios) dinmicas e estticas (.a e .so) ld

Ambientes Bibliotecas Linkagem:

Ferramenta make
make:

determina que partes de um programa devem ser recompiladas em funo de uma alterao. qualquer linguagem Makefile possibilidades (target)

Aceita

Arquivo Vrias

Instalao de Aplicativos
Aplicaes

no Linux so, como nos outros sistemas, um conjunto de arquivos com pelo menos um executvel vem num formato padro ou apresentaro um script que automatiza as tarefas de instalao install

Normalmente

Utilitrio

RPM RedHat Packets Management


Formato padro desenvolvido pela RH Baseado num pequeno utilitrio de mesmo nome Modos de operao (Instalao, verificao, consulta, desinstalao, etc) Nomenclatura dos arquivos dos pacotes Nome-verso-release.arquitetura.rpm

Base de dados RPM: /var/lib/rpm/*

RPM RedHat Packets Management

Comandos bsicos Listagem dos pacotes instalados rpm qi(a)

Instalao de um pacote rpm i <pacote> Desinstalao rpm e <pacote>

Outras Maneira de Instalar


Aplicativos Deve-se

na forma de cdigo fonte

compilar o pacote, gerando seus executveis vem na forma de um arquivo tar A DOCUMENTAO!!!

Normalmente LER O

sistema dever ter os aplicativos de compilao, linkagem e controle (citados na documentao)

Compilao de Pacotes
Nem

sempre da mesma forma genrico


./configure make make install

Procedimento

You might also like