Sistemas Embarcados - Inf

Propaganda
Introdução
Sistemas Embarcados
• Bootloader é um componente fundamental
• Faz a inicialização do hardware e carrega o sistema operacional
• Difere entre sistemas embarcados e desktops
• Ainda que sejam os mesmos, são configurados de forma diferente
• Uso comum de dispositivos
p
DOC ((DiskOnChip)
p)
Bootloaders
• Noção de monitor:
• Capacidade de auxiliar na depuração, leitura e escrita de
memória, reprogramação de flash, configuração etc
• É um tipo de bootloader inteligente
• Existem bootloaders específicos e universais
• e.g.: lilo, milo, syslinux, grub, u-boot, redboot etc...
Aula 05
INF01059 - Sistemas Embarcados
Tarefas básicas de um bootloader
Configurações genéricas de boot
• Inicializar elementos do hardware no startup
• O boot pode ser feito a partir:
• As ações dependem do processador, da placa, do chipset etc...
• Primeira tarefa feita por um bootloader
• Dispositivos solid state (flash, rom, eprom, e2prom, ...)
• Discos
• Rede
• Processadores iniciam execução em um endereço fixo
• Projetistas
j
mapeiam
p
flash,, rom,, eprom
p
nesse endereço
ç
• Não se pode contar com DRAM, pois é necessário programar
sua controladora antes de iniciar a usá-la
• Após tornar “vivo” o hardware o bootloader deve localizar,
carregar e passar a execução a outro programa
• Tipicamente é o sistema operacional
INF01059 - Sistemas Embarcados
2
3
• Tipo
p de boot escolhido influencia
• Bootloader
• Hardware e o software no sistema hospedeiro
• e.g.: servidores de DHCP, TFTP, NFS etc
INF01059 - Sistemas Embarcados
4
Dispositivos de armazenamento solid state
Boot a partir de disco
• Tipicamente são empregadas memórias flash
• O meio de armazenamento contém:
• Normalmente utilizado em desktops e servidores
• A imagem do núcleo e o sistema de arquivos raiz estão
armazenados no disco
• Bootloader e os parâmetros para o boot
• Imagem do kernel (compactado ou não)
• Sistema de arquivos
q
raiz (root
(
file system)
y
)
• O bootloader carrega um estágio secundário de bootloader ou
carrega a imagem do kernel diretamente do disco
• Dificuldade adicional:
• Como ler os setores de disco com a imagem do kernel?
• Opção 1: ler uma área pré-determinada em forma raw
• Opção 2: conhecer o sistema de arquivos usado no disco
para ler o arquivo “imagem do kernel”
Sistema de
Arquivos raiz
Booloader
Parâmetros
Imagem do kernel
• No startup, o processador inicia a executar no endereço do
bootloader
INF01059 - Sistemas Embarcados
5
Boot via rede
INF01059 - Sistemas Embarcados
6
Visão geral procedimento boot Linux
• Duas possibilidades para o sistema embarcado:
• Tem apenas o bootloader localmente
• Obtém o kernel via transferência de arquivos
• Sistema de arquivos é transferido ou montado via rede
• Possui o bootloader e a imagem do kernel localmente
• Sistema de arquivos é transferido ou montado via rede
• Emprega protocolos Internet
• TFTP para transferência de arquivos
• NFS para montagem de sistemas de arquivos
• BOOTP/DHCP para obter parâmetros de rede automaticamente
• Bootloader deve prover cliente para bootp, dhcp, tftp, nfs...
• Possível usar rede ethernet ou serial
• Necessário configurar servidores externos
INF01059 - Sistemas Embarcados
Fonte.: Almesberger, Werner, Booting Linux: The
History and the Future. Proceedings of Ottawa
Linux Symposium 2000, July 2000
7
INF01059 - Sistemas Embarcados
8
Bootloaders de dois estágios
Exemplos de bootloaders para x86 compatíveis
• O hardware inicializa um bootloader a partir de um local fixo
• LILO: LInux LOad:
• Normalmente possui um espaço muito pequeno
• e.g.: setor de boot de um disco rígido
• Bootloader original do Linux
• http://freshmeat.net/projects/lilo/
• Empregam dois estágios devido a limitação de espaço
• GRUB: GRand Unified Bootloader from GNU.
• Primeiro estágio:
g funcionalidade mínima
• Acessa o segundo estágio em uma localização maior,
carrega e transfere a execução para ele
• Segundo estágio: oferece um programa mais complexo
• Sem limites do que pode ser implementado
• Pode ser o próprio sistema operacional
• Bootloader mais p
poderoso usado em distribuições
ç
linux
• http://www.gnu.org/software/grub/
• SYSLINUX
• Empregado para boot via rede ou mídias removíveis
• http://syslinux.zytor.com
9
Bootloaders genéricos
10
Taxonomia de bootloaders
• Das U-Boot (http://www.denx.de/wiki/UBoot/WebHome)
• Quatro grandes grupos:
• Bootloader universal desenvolvido pela Denx Software
• Muito usado em sistema baseados em ARM
• Suporta vários outros processadores, mips, x86, m68k, nios...
• Redboot ((http://sources.redhat.com/redboot/)
p
)
• Bootloader desenvolvido pela RedHat para o sistema eCos
• Pode ser empregado em outros sistemas
• Suporta vários processadores: x86, arm, ppc, mips, sh, m68k
• Especializados
• Genéricos
• Com reconhecimento de sistemas de arquivos
• File system
y
aware loaders
• Sem reconhecimento de sistemas de arquivos
• File system unware loaders
• uMon (http://microcross.com/html/micromonitor.html)
•
MicroMonitor general purpose, multi-OS bootloader
• Suporta: ARM, SH2, m68k, MIPS, PowerPC, Xscale...
• Existem muitos outros…
11
INF01059 - Sistemas Embarcados
12
Loaders especializados
Loaders genéricos
• Reconhecem apenas um dispositivo de armazenamento
• Executam sobre um sistema operacional
• e.g.: memória flash ou floppy
• Empregam serviços desse para carregar a imagem do kernel
• e.g.: sistemas de arquivos
• Possui uma imagem do kernel em um formato específico
• Executam diretamente no firmware
• Exemplos:
• Pontos positivos e negativos
• Não necessitam conhecer estrutura de dispositivos
p
e de
sistemas de arquivos (+)
• Cuidados especiais para o kernel que está sendo carregado não
sobrescrever áreas de memória do kernel ativo (-)
• Necessário executar duas cargas de kernel (-)
• LinuxBIOS, Syslinux, Netboot, etc...
• Exemplos:
• Loadlin, ArLo, etc
INF01059 - Sistemas Embarcados
13
File system aware boot loaders
File system unaware boot loaders
• Podem ser vistos como um mini-sistema operacional
• Não reconhece nenhum sistema de arquivo
• Reconhecem um ou mais sistemas de arquivos
• Acessam dispositivos E/S através de facilidades do firmware
• Muitas vezes possuem seus próprios drivers de dispositivo
• Exemplos:
p
Grub, Shoelace, Silo etc
• Necessário ler diretamente os blocos de disco
• Implica em saber quais blocos (mapeamento)
• Exemplo: lilo e programa /sbin/lilo
Imagem do
Kernel
(arquivo)
Imagem do
Kernel
(arquivo)
Bootloader (lê blocos)
Mapa de
blocos
Metadados
Metadados
disco
Imagem do
Kernel
(arquivo)
Mapeamento
Sistema de arquivos
Bootloader (e.g. ext2)
Sistema de arquivos
14
INF01059 - Sistemas Embarcados
Imagem do kernel
Blocos de
dados
INF01059 - Sistemas Embarcados
disco
Imagem do kernel
15
Blocos de dados
INF01059 - Sistemas Embarcados
16
Trabalho 2 – peso 1 (INDIVIDUAL)
Leituras complementares
• Instalar o grub em um cdrom é deixá-lo pronto para receber
comandos a partir de seu shell
• P. Ragavahn, A. Lad, S. Neelakandan. Embedded Linux
System Design and Developement. Auerbach, 2006.
• C. Hallinan. Embedded Linux Primer: A Practical Real-World
Approach. Prentice Hall, 2006.
• K. Yaghmour.
g
Building
g Embedded Linux Systems.
y
Oreilly,
y
2003.
• Para “uniformizar” os problemas usar a versão 0.97
• Dicas:
• usar um CD-RW (sem dúvida, haverá muitas tentativas)
• Faz
F parte
t do
d trabalho:
t b lh
• Descobrir os fontes do grub, baixar, aplicar patches e compilar
• Se houverem surpresas, lembrem-se do google e de howtos)
• Data de entrega: 10/09/2009 (≈1 semana)
• Entregar o CD com a imagem ISO e um relatório (simples) das
opções empregadas no configure, problemas e soluções
• DESAFIO: vale 01 ponto a mais
• Utilizar um carregador diferente do grub e conseguir realizar o
boot de um kernel
INF01059 - Sistemas Embarcados
17
INF01059 - Sistemas Embarcados
18
Download