1 / 15

Laboratório 2

Laboratório 2. Sistemas embarcados Período 2010.2. Roteiro. Inicialização Sistema de arquivos raiz. Inicialização. Os programas responsáveis pela inicialização do núcleo são os bootloaders. Dentre eles pode-se destacar:

ismael
Télécharger la présentation

Laboratório 2

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Laboratório 2 Sistemas embarcados Período 2010.2

  2. Roteiro • Inicialização • Sistema de arquivos raiz

  3. Inicialização • Os programas responsáveis pela inicialização do núcleo são os bootloaders. • Dentre eles pode-se destacar: • GRUB(x86), LILO(x86), RedBoot(x86, ARM, PowerPC, MIPS e m68k) e U-Boot(x86, ARM e PowerPC). • U-Boot • É o melhor bootloader para ARM(suporte a um maior número de plataformas baseadas no ARM). • Projeto U-boot: http://sourceforge.net/projects/uboot

  4. Compilando o U-Boot • Instalar dependências build-essential, autoconf, autotools • Tem que ser compilado usando o toolchain da Texas para OMAP • Baixar no site de recursos • E descompactar como root • tar xjvf gcc-3.3.2.tar.bz2 -C / • Baixar o fonte • wget -b http://linux.omap.com/pub/bootloader/h2/source/u-boot.tar.gz • tar zxvf u-boot.tar.gz • cd u-boot • Configura o U-Boot para omap: • make omap1610inn_config • Alterar o Makefile • Apagar a linha 124 do Makefile • Os exemplos não compilam • Inicia compilação: • export PATH=$PATH:/usr/local/arm/3.3.2/bin • make • Arquivos gerados: • u-boot, uboot.bin • mkimage (programa usado para gerar uma imagem do núcleo entendível pelo o u-boot)‏

  5. Sistema de arquivos raiz • Estrutura de como os arquivos são organizados • Os principais comandos GNU são providos pelo busybox • O busybox é um arquivo executável • Os comandos são links simbólicos para o busybox • O busybox os identifica pelo link chamado • Provê desde o processo init, até servidores mais sofisticados (http)‏

  6. Vantagens • Construir seu próprio sistema de arquivos raiz traz algumas vantagens: • Melhor entendimento • Maior controle • Configurações mais simples

  7. Sistema de arquivos raiz • Os dispositivos (/dev) podem ser criados a partir do mdev (mini udev) provido pelo busybox • Só são necessários dois devices • /dev/null • /dev/console • Em versões mais antigas do núcleo (2.6.12) os dispositivos eram montados como um sistema de arquivos • devfs • Em distribuições mais completas, pode-se usar um initrd para carregar módulos que variam de acordo com as configurações das máquinas • Maior compatibilidade • Maior tamanho de distribuição

  8. Criando um sistema de arquivos raiz • Baixar da página o script que instala as dependências pra compilar o busybox • sh dependencias_busybox.sh • Baixando o Busybox: • wget http://busybox.net/downloads/busybox-1.2.1.tar.gz • tar zxvf busybox-1.2.1.tar.gz • cd busybox-1.2.1 • Configura o Busybox: • Habilita todas as opções do Busybox • make defconfig

  9. Altera algumas opções: • make menuconfig • (Caso apareça o erro /usr/bin/ld: cannot find -lncurses checar as dependências ncurses-base, ncurses-bin, ncurses-hexedit, ncurses-term, libncurses5, libncurses5-dbg, libncurses5-dev, libncursesw5, libncursesw5-dbg, libncursesw5-dev)‏

  10. Busybox settings • Build options • Marcar: Build BusyBox as a static binary (no shared libs)‏ • Desmarcar: Build with Large File Support (for accessing files > 2 GB)‏ • Shells • Choose your default shell: ash • cd .. • mv busybox-1.2.1 /scratchbox/users/userLogin/home/userLogin/ • /scratchbox/login • cd busybox-1.2.1 • Compila • make install

  11. Povoando o sistema de arquivos raiz • Pasta raiz • sudo mkdir -p /embedded/targets/tux • Copiando a estrutura dos arquivos do Busybox para dentro da imagem montada: • (Fora do scratchbox)‏ • sudo rsync -a /scratchbox/users/<userLogin>/home/<userLogin>/busybox-1.2.1/_install/ /embedded/targets/tux/

  12. Criando os principais devices • Criar a pasta de dispositivos: • sudo mkdir /embedded/targets/tux/dev • cd /embedded/targets/tux/dev • Criando o device “console”: • sudo mknod console c 5 1 • Criando o device “null”: • sudo mknod null c 1 3

  13. /etc/inittab do rootfs • Criar arquivo /etc/inittab: • sudo mkdir -p /embedded/targets/tux/etc • sudo vi /embedded/targets/tux/etc/inittab • Arquivo inittab: # This is run first script ::sysinit:/etc/init.d/rcS # Start an "askfirst" shell on the console ::askfirst:-/bin/sh # Stuff to do when restarting the init process ::restart:/sbin/init # Stuff to do before rebooting ::ctrlaltdel:/sbin/reboot ::shutdown:/bin/umount -a -r

  14. Script /etc/init.d/rcS • Criar o script /etc/init.d/rcS: • sudo mkdir -p /embedded/targets/tux/etc/init.d • sudo vi /embedded/targets/tux/etc/init.d/rcS • sudo chmod 777 /embedded/targets/tux/etc/init.d/rcS #!/bin/sh /bin/busybox mkdir -p /proc /bin/busybox mkdir -p /sys /bin/busybox mount -t proc none /proc /bin/busybox mount -t sysfs none /sys /bin/busybox mkdir -p /dev/pts /bin/busybox mount -t devpts devpts /dev/pts # /bin/busybox echo /sbin/mdev > /proc/sys/kernel/hotplug /bin/busybox mdev -s /bin/busybox ifconfig lo 127.0.0.1 up exec /etc/profile rcS

  15. Criar o script /etc/profile: • sudo vi /embedded/targets/tux/etc/profile • sudo chmod 777 /embedded/targets/tux/etc/profile #!/bin/sh TSLIB_TSDEVICE=/dev/event1 TSLIB_CONFFILE=/etc/ts.conf PATH=$PATH:/usr/X11R6/bin:/sbin LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/lib:/usr/lib DISPLAY=:0 export TSLIB_TSDEVICE TSLIB_CONFFILE PATH LD_LIBRARY_PATH DISPLAY profile

More Related