Sistemas Embarcados. Introdução. kernel.org. Repositórios do kernel. Aula 03 e 04. O kernel do linux é bastante modular Mais de arquivos

Documentos relacionados
Boot gráfico no Debian com BootSplash

Desenvolvimento para Sistemas Embarcados (CEA 513) Conceitos Gerais

Tutorial BuildRoot. Meu Primeiro Linux embarcado: Programação de Periféricos CC FACIN PUCRS

Sistemas Embarcados. Filesystem Hierarchy Standard (FHS) Root filesystem. Aula 06

Soluções em Linux. Linux no Desktop. Ambiente Doméstico e Profissional. Sandro Venezuela sandro@linux2business.com.br

Estrutura de Diretórios Linux. Rodrigo Gentini

Realizar o gerenciamento básico de arquivos

Sistemas Operacionais. Rodrigo Rubira Branco

Introdução ao Desenvolvimento do Kernel Linux

Programação de Periféricos

Aula 03. Processadores. Prof. Ricardo Palma

Kernel Linux. Trabalho Realizador Por: Tiago Conceição Nº Representação artística do núcleo Linux

Instalação do cliente VPN Cisco em Linux

VIRTUALIZAÇÃO CORPORATIVA

Revisão LPI101. Tópicos e Objetivos Instalação e Gerenciamento de Pacotes do Linux Dispositivos, Sistemas de Arquivos Linux e o FHS

Conceitos básicos sobre computadores

Engenharia de Software II

Rede VPN UFBA Procedimento para configuração

Programação Avançada em Linux

Aprenda a instalar a plataforma de monitorização Cacti

OI CLOUD SEJA BEM-VINDO!

LPI. Linux Pro. certificação. LPI-1, Certificação LPI-2. Curso completo para LPIC-2. Certificação LPI-1. Linux Pro. Certificação LPI-2.

TUTORIAL WINDOWS 7. Curso Técnico em Informática. Aluno: Ricardo B. Magalhães Período: Noturno Profª: Patrícia Pagliuca

Compilação do kernel modprobe rmmod Utilização do kernel uname -r.

Hardware: Componentes Básicos. Sistema de Computador Pessoal. Anatomia de um Teclado. Estrutura do Computador. Arquitetura e Organização

GUIA RÁPIDO DE UTILIZAÇÃO KIT MERCURIOIV OSCILOSCÓPIO E GERADOR DE SINAIS

T.I. para o DealerSuite: Servidores Versão: 1.1

UFCD 0770 Dispositivos e Periféricos Formadora: Sónia Rodrigues

CATÁLOGO DE CUSTOMIZAÇÕES Conferência com Coletores (WEB)

Driver Next Versão 1.0 de Português

django-pagseguro Documentation

Linux Embedded. Criação de uma instalação. Especificação, Modelação e Projecto de Sistemas Embutidos

Tutorial para configurar as bibliotecas TerraView e Qt 3 no Visual Studio 2005

Prof. Rossano Pablo Pinto Dezembro/2012 Versão 0.2 (em construção) Prof. Rossano Pablo Pinto - 1

,QVWDODomR. Dê um duplo clique para abrir o Meu Computador. Dê um duplo clique para abrir o Painel de Controle. Para Adicionar ou Remover programas

TOP 20 ROTINAS QUE VOCÊ PODE AUTOMATIZAR HOJE!

Sistemas Embarcados. Tarefas básicas de um bootloader. Configurações genéricas de boot. Aula 05

Cadeira de Tecnologias de Informação. Ano lectivo 2009/2010. Sites dinâmicos. Com Expression Web TI2009/10 EWD_1. Filipa Pires da Silva (2009)

Usuários. Aplicativos e programas dos usuários. Kernel gerenciamento de processos, memória, sistema de arquivos, I/O, etc.

Copyright Smar

MVM Mattos Virtual Machine. Andrey de Oliveira Prof. Mauro Marcelo Mattos, Doutor FURB 2012/2

Linux Caixa Mágica. Documentos Técnicos CM. Manual de Configuração de Ligação à Internet por placas 3G 00904/

Revisão Aula Explique a MBR(Master Boot Record)

Construindo um Linux Parte 2 Disk Root Objetivo: Entender que o Linux é como um LEGO (Pode ser montado). Prof. Claudio Silva

Programação no kernel Linux. Felipe W Dam asio

TUTORIAL INCORPORANDO A BIBLIOTECA DO ARDUINO AO ECLIPSE

MicroWork TOUCH CHECKLIST

Disciplina: Sistemas Operacionais Professor: Cristiano Mariotti

Nivel de Linguagem de Montagem (Assembly)

Manual de Configuração

Processamento de Dados aplicado à Geociências. AULA 1: Introdução à Arquitetura de Computadores

Linux Essentials. Managing Package and Process

Instalação de Carta de Correção Eletrônica Spalla

Instruções para Instalação dos Utilitários Intel

Programação de Sistemas

CCNA 2 Conceitos Básicos de Roteadores e Roteamento. Capítulo 5 - Gerenciamento do Software Cisco IOS

Guia de Instalação Rápida TEW-623PI 3.02

Supervisório Remoto aplicado em Dispositivo Móvel na Plataforma NI LabVIEW

Unidade 1: O Computador

1.0 Informações de hardware

Introdução ao Linux: Parte I

Gestão Documental. Gestão Documental

Agente local Aranda GNU/Linux. [Manual Instalación] Todos los derechos reservados Aranda Software [1]

Conhecendo o Delphi 2010

Introdução a Administração de Sistemas GNU/Linux

Sistemas Operacionais

Backup. José Antônio da Cunha CEFET-RN

Fundamentos de Sistemas Operacionais

Informática I. Aula Aula 19-20/06/06 1

Disciplina de Realidade Aumentada Prof. Sementille

BIOS - Códigos de erro

SISTEMA CAÇA-TALENTOS MANUAL DE OPERAÇÃO PERFIL SECRETARIA

Classificação de Ativo Orçamento e Provisão de Despesa

Lista de exercícios - P2

Manual do Formatador Kfloppy

Estrutura de um Sistema Linux Moderno Padrões de um Sistema Linux. Prof. Claudio Silva

Fuctura Tecnologia Rua Nicarágua, 159 Espinheiro (81) /

HARDWARE INFORMÁTICA. Prof.: MARCIO HOLLWEG

DESCRITIVO TÉCNICO PLATAFORMA PCS

10. CPU (Central Processor Unit) Conjunto das instruções Estrutura interna Formato das instruções...

Veeam Endpoint Backup FREE

Windows NT 4.0. Centro de Computação

Grupo de Estudos Linux

Atualização e e Backup do Protheus 10. Anotações. Nomenclaturas do Protheus 10. Build

Processador. Colégio Serrano Guardia Módulo III Suporte Técnico e Redes William Andrey de Godoy

VII SENABOM TEMA: O REGISTRO ELETRÔNICO DE EVENTOS (RE) Apresentado por: Ten Cel BM Flávio Rocha - CBMERJ

Portal nddcargo Manual de Utilização Contratante Visão Usuário Financeiro

Sumário. Organização do repositório com reprepro...1 Como Configurar um repositório utilizando o reprepro...4 Utilizando o Incoming...

MC504 - Sistemas Operacionais. Chamadas de Sistema

Sistemas Operacionais Universidade Federal de Santa Catarina. Sistemas Operativos para Celulares Symbian OS

Resumo. Objetivo. Introdução

LABORATÓRIO DE SISTEMAS OPERACIONAIS. PROFª. M.Sc. JULIANA HOFFMANN QUINONEZ BENACCHIO

Objetivos do Curso. Organização do Curso. Apresentação do Curso. Pós Graduação em Projeto e Gerencia de Redes de Computadores

Tópicos Avançados em Banco de Dados Dependências sobre regime e controle de objetos em Banco de Dados. Prof. Hugo Souza

>>> OBJETIVOS... === FHS - Filesystem Hierarchy Standard. === Sistemas de arquivos e Partições

O Sistema de Computação

Transcrição:

Sistemas Embarcados kernel linux Introdução O kernel do linux é bastante modular Mais de 20000 arquivos Porque gerar/instalar um novo kernel? Customizar para uma determinada necessidade/aplicação Incluir novas características Corrigir erros ou falhas de segurança Etapas: Recuperar os fontes do kernel Selecionar características desejáveis (configuração) Compilar o Kernel Instalação do Kernel e de seus módulos Aula 03 e 04 2 Repositórios do kernel kernel.org Repositório oficial para o código fonte é www.kernel.org Cópia completa da versão atual e das antecessoras Patches Recuperar e aplicar os patches na ordem Possui ± 25 arquiteturas diferentes, mas há site específicos para processadores embarcados Exemplos ARM: http://www.arm.linux.org.uk/developer Na verdade apenas patches MIPS: http://www.linux-mips.org PowerPC: http://penguinppc.org Ainda não integrados devido a maturidade ou especificidade Baixe os fontes do Núcleo a partir de: http://kernel.org 3 4

Que versão usar? Versionamento do kernel Linux A versão atual do kernel é a 2.6 (2.6.0 lançada em 12/2003) Desde então, características e novos drivers foram introduzidos. Difícil obter drivers de novos dispositivos para a versão anterior (2.4). Não há mais suporte da comunidade. Evitar todo e qualquer desenvolvimento com 2.4 Até 2004 : série.major.releases.updates série: 0 (nascimento) 1 (capacidade rede) 2 (SMP e não Intel) major: par (versão estável), impar (versão desenvolvimento) release: adições e correções maiores a uma versão Release candidate (rc): release para teste updates: correções críticas na última release estável Após lançamento da 2.6.11(2004): Primeiros dois números são estáveis (2.6) Terceiro número é a versão atual do núcleo (2.6.32) Quarto número marca atualizações para correções de defeitos e segurança (2.6.32.16) Ainda vale as release candidates 5 6 Estrutura de arquivos dos fontes linux (parcial 1/2) Estrutura de arquivos dos fontes linux (parcial 2/2) arch/<arch> arch/<arch>/mach-<mach> block/ COPYING CREDITS crypto/ Documentation/ drivers/ fs/ include/ include/asm-<arch> include/linux init/ Architecture specific code Machine / board specific code Block layer core Linux copying conditions (GNU GPL) Linux main contributors Cryptographic libraries Kernel documentation. Don't miss it! All device drivers except sound ones (usb, pci...) Filesystems (fs/ext3/, etc.) Kernel headers Architecture and machine dependent headers Linux kernel core headers Linux initialization (including main.c) ipc/ Kbuild kernel/ lib/ MAINTAINERS Makefile mm/ net/ README REPORTING-BUGS scripts/ security/ sound/ usr/ Code used for process communication Part of the kernel build system Linux kernel core (very small!) Misc library routines (zlib, crc32...) Maintainers of each kernel part. Very useful! Top Linux makefile (sets arch and version) Memory management code (small too!) Network support code (not drivers) Overview and building instructions Bug report instructions Scripts for internal or external use Security model implementations (SELinux...) Sound support code and drivers Code to generate an initramfs cpio archive. 7 8

Arquivos.config, System.map e vmlinux.config.config Arquivo texto com constantes definidas Parâmetros para configuração do kernel System.map Lista dos símbolos usados pelo kernel e seus endereços Útil para depuração do kernel Gerado na compilação no diretório top-level vmlinux Imagem do kernel (resultado ligação de biblioteca e objetos) Executável em formato ELF (Executable and Linking Format) Arquitetura dependente Gerado na compilação no diretório top-level Primeiro passo para compilar o kernel é configurar Geração do arquivo.config Resposta a mais de 700 questões (Yes, No, Module) Várias formas: config, menuconfig, xconfig, gconfig, oldconfig, randconfig, defconfig, allmodconfig, allyesconfig e allnoconfig Arquivo.config é removido por alguns scripts Interessante preservar cópia dele para evitar (+700 questões!!) 9 10 make xconfig screenshot Trecho exemplo de um.config CD-ROM/DVD Filesystems CONFIG_ISO9660_FS=m CONFIG_JOLIET=y CONFIG_ZISOFS=y CONFIG_UDF_FS=y CONFIG_UDF_NLS=y Section name (helps to locate settings in the interface) All parameters are prefixed with CONFIG_ DOS/FAT/NT Filesystems CONFIG_MSDOS_FS is not set CONFIG_VFAT_FS is not set CONFIG_NTFS_FS=m CONFIG_NTFS_DEBUG is not set CONFIG_NTFS_RW=y 11 12

Alguns detalhes quanto ao config Makefile principal O kernel é uma estrutura monolítica Compilado e ligado estaticamente para gerar um executável único Problema de tamanho Capacidade de adicionar on-the-fly características ao kernel Loadable modules Formas de responder as perguntas Y : ligado estaticamente N : não faz parte do kernel M : usado como módulo Inclui uma forma de versionamento Manter várias gerações de um sistema de forma organizada Constantes: VERSION, PATCHLEVEL, SUBLEVEL, EXTRAVERSION e.g. 2.6.20-asc (2, 6, 20 e asc, respectivamente) Se tudo está devidamente instalado Compila o kernel gerando o System.map e vmlinux Gerado uma versão compactada do kernel (vmlinux) Nomes para: x86 zimage (<512 MB), bzimage (>512 MB) Núcleo em si é bastante pequeno, o que engorda a imagem são os drivers de dispositivos, suporte a vários protocolos de rede e a sistemas de arquivos etc 13 14 Loadable kernel modules Dependências de Módulos Módulos servem para adicionar uma funcionalidade ao kernel Drivers de dispositivos, sistemas de arquivos etc Podem ser carregados e removidos a qualquer momento Possível manter em memória apenas quando necessário Uma vez em memória tem acesso total a estruturas do kernel Útil para manter o tamanho do kernel o menor possível Essencial em sistemas GNU/Linux para PCs Podem ser ligados estaticamente ao kernel Permite liberar apenas binário de um determinado driver Atenção: lembrar da contaminação da GPL Forma prática para desenvolver e testar drivers sem gerar um novo kernel Lista de dependências de um modulo Armazenado em /lib/modules/<version>/modules.dep Gerado automaticamente a partir dos símbolos que são exportados or um módulo e.g.: módulo B depende de um módulo A se ele empregar um simbolo exportado pelo módulo B Caso real: usb_storage depende do usbcore Possível, como root, atualizar o arquivo de dependências depmod -a [<version>] Na compilação do kernel se deve gerar os módulos e realizar a sua instalação 15 16

Plataforma PC: para o(a) apressadinho(a)... Do bootloader para userspace Após baixar os fontes em um diretório qualquer ($DIR) make mrproper make defconfig ou make oldconfig (reaproveitar um.config) Aproveita um.config existente e são apenas as questões que não foram respondidas (existiam) no.config anterior Ex.: cp /boot/config-2.6.26 26 /usr/src/linux/.configconfig make clean make make install make modules_install update-initramfs c k [versão kernel] Existem outras formas de gerar o initrd.img, essa é a mais fácil Versão, por exemplo, 2.6.30 Editar o arquivo /boot/grub/menu.lst Bootloader Low level hardware initialization Fetch and copy Linux kernel to RAM Kernel initialization init process System initialization from userspace 17 18 Kernel bootstrap Kernel bootstrap A inicialização do kernel faz parte da geração da imagem objcopy gzip as as objcopy... LD vmlinux SYSMAP System.map SYSMAP.tmp_System.map MODPOST vmlinux Kernel: arch/arm/boot/image is ready AS arch/arm/boot/compressed/head.o GZIP arch/arm/boot/compressed/piggy.gz AS arch/arm/boot/compressed/piggy.o CC arch/arm/boot/compressed/misc.o AS arch/arm/boot/compressed/head-xscale.o AS arch/arm/boot/compressed/head-sharpsl.o LD arch/arm/boot/compressed/vmlinux OBJCOPY arch/arm/boot/zimage Kernel: arch/arm/boot/zimage is ready... Exemplo parcial de uma geração para processador xscale vmlinux Kernel proper : Raw kernel executable (ELF object) Image Stripped kernel binary (binary object) piggy.gz piggy.s Compressed kernel binary piggy.o head.o misc.o head-cpu.o head-board.o asm wrapper around piggy.gz + bootstrap code vmlinux (in arch/<arch> boot/compressed) Composite kernel image (ELF object) zimage Kernel image for bootloader (binary object) 19 20

Bootstrap code Tarefas do código de bootstrap head.o: Código dependente da arquitetura Executado pelo bootloader head-cpu.o (no exemplo é head-xscale.o): Código específico da CPU A principal tarefa é feita pelo head.o Verificação da arquitetura e do processador Configuração da MMU, criação da tabela de páginas e habilitação da memória virtual Realiza chamada a função start_kernel no arquivo /init/main.c Programação interrupções, MMU, modo de operação etc head-board.o (aqui head-sharpsl.o): Código específico para inicialização da placa (BSP) misc.o: Rotinas de descompactação Procedimentos são praticamente os mesmos para todas arquiteturas 21 22 Código de init_post Grafo de inicialização do kernel Kernel Linux 2.6.22 Arquivo init/main.c 23 24

Principais passos da inicialização Visão genérica do procedimento de boot linux* Bootloader executa o código de bootstrap Bootstrap inicializa a placa, processador e descomprime o código do kernel na RAM Chama start kernel Inicializa console Inicializa serviços do kernel (alocação de memória, cache, esclonamento,...) Cria um novo fluxo Chama start_kernel Será o processo initit e faz laço de idle Inicializa e executa as init calldispositivos Startup do sistema Estágio 1 -bootloader Estágio 2 -bootloader init BIOS ou Boot monitor (flash ou ROM) Master Boot Record (MBR) Lilo, grub etc. Linux Espaço de usuário * Considerando arquiteturas do tipo IA32/AMD 25 26 Startup do sistema Startup do sistema Estágio 1 -bootloader Estágio 2 -bootloader (IA32/AMD) Estágio 1 -bootloader Estágio 2 -bootloader init init Imagem do núcleo é um arquivo comprimido Compressão é feita com um formato apropriado (zlib) Código do núcleo comprimido Cabeçalho composto por um programa de descompactação Código do núcleo é posto na memória Passa o controle para uma função específica (startup_32) Exemplos: IA32/AMD: zimage ( <512 KB) ou bzimage (>512 KB) ARM-Cirrus: zimage (1.6 MB) Seqüência de inicialização do núcleo Bastante similar entre distintas plataformas start()./arch/i386/boot/head.s decompress_kernel./arch/i386/boot/compress/misc.c startup_32./arch/i386/compress/head.s startup_32./arch/i386/kernel/head.s start_kernel()./init/main.c cpu_idle()./init/main.c 27 28