Escolar Documentos
Profissional Documentos
Cultura Documentos
• Especificado pelo parâmetro init do comando kernel • Programa executado por default quando o boot é feito através
• ex.: kernel /boot/vmlinuz-2.6.30.img init=/sbin/init de um ramdisk e não é fornecido um argumento para init
• Executado no final do procedimento de boot do kernel • Normalmente é um shell script
• Responsável por iniciar outros programas em espaço de usuário • Baseado em um shell simples como o nash ou busybox sh
• Serviços (daemons) e demais programas de usuário • Tarefas típicas:
p
• Recebe o pid 1 • Detecção de drivers a carregar, inicializar rede, montar
partições, “chavear” para um novo FS (se for o caso)...
• É o processo pai de todos os demais processos
• Processo “imortal” (não se pode usar o comando kill nele)
• /sbin/init é a segunda opção de programa default • Busybox é um conjunto simplificado de comandos Unix
• Responsável por: • Não possui todas as opções, mas o suficiente para a maioria
• Inicializar serviços (daemons) e interfaces gráficas (X server) dos casos de sistemas embarcados
• Executado também na parada do sistema (scripts K) • Comandos são denominados de applets
• Existe uma versão light no busybox • Busybox é um binário único com múltiplos pontos de entrada
• Possível executar comandos como argumento ou diretamente
• % busybox ls –la
• % ls –la [necessário ter ls apontando para busybox]
• A forma de apontar é usando links
• Fontes disponíveis em: http://www.busybox.net
• Licença GPL • addgroup, adduser, adjtimex, ar, arping, ash, awk, basename, bunzip2,
bzcat, cal, cat, chgrp, chmod, chown, chroot, chvt, clear, cmp, cp, cpio,
• Modularidade crond, crontab, cut, date, dc, dd, deallocvt, delgroup, deluser, devfsd, df,
dirname, dmesg, dos2unix, dpkg, dpkg-deb, du, dumpkmap, dumpleases,
• Permite usuários definirem seus próprios applets echo, egrep, env, expr, false, fbset, fdflush, fdformat, fdisk, fgrep, find, fold,
free, freeramdisk, fsck.minix, ftpget, ftpput, getopt, getty, grep, gunzip, gzip,
• Procedimento para criação e integração de applets halt, hdparm, head, hexdump, hostid, hostname, httpd, hush, hwclock, id,
• CUIDADO: licença GPL ifconfig, ifdown, ifup, inetd, init, insmod, install, ip, ipaddr, ipcalc, iplink,
i
iproute,
t iiptunnel,
t l kill
kill, killall,
kill ll klogd,
kl d llash,
h llast,
t llength,
th lilinuxrc, lln, lloadfont,
df t
• Qualquer trabalho derivado deve disponibilizar fontes! loadkmap, logger, login, logname, logread, losetup, ls, lsmod, makedevs,
md5sum, mesg, mkdir, mkfifo, mkfs.minix, mknod, mkswap, mktemp,
• Configuração bastante simples modprobe, more, mount, msh, mt, mv, nameif, nc, netstat, nslookup, od,
openvt, passwd, patch, pidof, ping, ping6, pipe_progress, pivot_root,
• Facilita o procedimento de cross-compilação poweroff, printf, ps, pwd, rdate, readlink, realpath, reboot, renice, reset, rm,
rmdir, rmmod, route, rpm, rpm2cpio, run-parts, rx, sed, seq, setkeycodes,
• Tamanho reduzido sha1sum, sleep, sort, start-stop-daemon, strings, stty, su, sulogin, swapoff,
• Dependendo das opções selecionadas varia de 4 kB a 1 MB swapon, sync, sysctl, syslogd, tail, tar, tee, telnet, telnetd, test, tftp, time,
top, touch, tr, traceroute, true, tty, udhcpc, udhcpd, umount, uname,
• Ligação estática ou dinâmica uncompress, uniq, unix2dos, unzip, uptime, usleep, uudecode, uuencode,
vconfig, vi, vlock, watch, watchdog, wc, wget, which, who, whoami, xargs,
yes, zcat
• Uma vez criado o arquivo .config basta usar make • BusyBox provê capacidades equivalentes ao init System V
• Resultado é um binário busybox • Mais simples, não possui suporte a runlevels
• Após compilação correta, executar make install • Se necessário runlevel, não se pode usar o init do busybox
• Cria um diretório _install com a hierarquia bin, linuxrc, sbin e usr • Apropriado para maioria de sistemas embarcados
• “Povoa” a hierarquia com uma série de links (soft ou hard) • Seqüência de passos:
para o executável busybox 1.
1 C fi
Configura os signal
i lhhandlers
dl necessários
á i ao init
i it
• Cria entrada linuxrc (link para busybox) 2. Inicializa console
• Instalação: 3. Parsing no arquivo /etc/inittab
• Copiar para um diretório de destino OU 4. Executa arquivo /etc/init.d/rc.S
• Realizar a montagem da imagem do rootfs e copiar _install 5. Executa comandos inittab marcados com action = wait
• e.g.: 6. Executa comandos inittab marcados com action = once
• /mnt/rootfs 7. Fica em laço realizando
• rsync –a _install/ /mnt/rootfs/ 1. Comandos com action = respawn
2. Comandos com action = askfirst
INF01059 - Sistemas Embarcados 11 INF01059 - Sistemas Embarcados 12
Ações executadas pelo init BusyBox Alternativa para BusyBox: embutils
Buildroot Características
• Cross toolchain • Software adicional • Necessário ter instalado • Executar make menuconfi ou
• Gcc + GNU binutils + gdb • Busybox • gcc e g++ make xconfig
• Kernel • POSIX, Linux, GNU tolls • GNU make • Ainda há uma tarefa criteriosa
• Databases (mysql) • sed (trabalhosa) de escolha
• Linux (várias versões) e Hurd
• Editores • bison • make
• Carregadores
• U-boot, grub, syslinux, • Suporte a áudio
áudio, vídeo e • flex • Geração de “project”
project
pxelinux placas gráficas • autoconf • Onde são armazenados os
• Rede e serviços de rede • ncurses resultados do build
• Biblioteca
• uClibC • Scritps (lua, python, perl, ruby, • zlib
php) • libaci
• Sistemas de arquivos
• X-Windows • lzo
• Cramfs, ext2, isso, jffs, romfs,
• etc • gettext
squasfs, ubifs
• Comando patch (pacote a ser instalado) • P. Ragavahn, A. Lad, S. Neelakandan. Embedded Linux
• Faz modificações em arquivos a partir do diretório corrente System Design and Developement. Auerbach, 2006.
• Baseado em um arquivo (diff_file) que descreve: • C. Hallinan. Embedded Linux Primer: A Practical Real-World
• Alteração do conteúdo de arquivos Approach. Prentice Hall, 2006.
• Criação
ç e remoçãoç de arquivos
q e diretórios • K. Yaghmour.
g Building
g Embedded Linux Systems.
y Oreilly,
y
• Exemplo: 2003.
• patch –p<n> < diff_file
• n é o parâmetro que indica quantos diretórios devem ser
“saltados” em relação ao que é dado no diff_file
• /usr/local/home/asc/fonte/exemplo.c (-p0)
• usr/local/home/asc/fonte/exemplo.c (-p1)