Sistema de Vigilância

Documentos relacionados
Componentes do kernel Compilando o kernel Aplicando patch no kernel Configurar, compilar, instalar um kernel personalizado Gerenciar, consultar o

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

Compilação do Kernel

Aula 06. Montagem de Dispositivos. Prof. Roitier Campos

Introdução aos Sistemas Operacionais. Subsistema de Entrada e Saída

Compilando o Kernel Linux

Universidade Federal do Rio Grande do Sul Escola de Engenharia Departamento de Sistemas Elétricos de Automação e Energia ENG10032 Microcontroladores

b. Causa parada do processo c. Reinicia um processo parado d. O processo é enviado para primeiro plano e. O processo é enviado para segundo plano 5)

Universidade Federal do Rio Grande do Sul Escola de Engenharia Departamento de Sistemas Elétricos de Automação e Energia ENG10032 Microcontroladores

Universidade Federal do Rio Grande do Sul Escola de Engenharia Departamento de Sistemas Elétricos de Automação e Energia ENG10032 Microcontroladores

Compilando o Kernel Linux

Sistema Operacional GNU/Linux Discos

PROJETO INTERDISCIPLINAR I

10. mkdir [pasta1] [pasta2] (cria pasta1 e pasta dois ao mesmo tempo) Exemplo: $ mkdir teste1 teste2

Universidade Federal do Rio Grande do Sul Escola de Engenharia Departamento de Engenharia Elétrica ENG04008 Sistemas de Tempo Real.

V 1.6. LPI 101 Arquitetura do Sistema

Galileo Gen2. Walter Fetter Lages

Aprenda a instalar o novo ArchLinux passo a passo

Sistemas Operacionais. Laboratório 1 (Ambiente de Aprendizado)

Turma: SD-R Área: Redes Informáticas Formador: Tomás Lima Mediadora: Maria Eduarda Luz Unidade: UFCD 17 - Linux - Instalação e configuração Curso:

Tutorial de confguração de um cartão micro SD como área de swap e armazenamento para a DragonBoard 410c (DB410C)

Sistemas Operacionais Profa. Roberta Lima Gomes ROTEIRO LAB File System

Programação Aplicada a Redes de Computadores Shell Script

Instalação. Versão de 13/10/99. Volnys B. Bernal & Edson T. Midorikawa. Agenda. Instalação Linux. Introdução. Introdução.

SISTEMAS DE ARQUIVOS E DIRETÓRIOS DO LINUX. Prof. Gleison Batista de Sousa

RTAI Instalação. Prof. Walter Fetter Lages 2 de maio de 2014

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

LAB DHCP Configuração do serviço DHCP

Atualização de produto: Instalação do Sistema Operacional de Rede do HP Server tc2100

Instalação Linux Volnys Borges Bernal Laboratório de Sistemas Integráveis

Universidade Federal do Rio Grande do Sul Escola de Engenharia Departamento de Sistemas Elétricos de Automação e Energia ENG10032 Microcontroladores

ADMINISTRAÇÃO DE REDES I LINUX. Partições, Raid. Frederico Madeira LPIC 1, CCNA

Principais Comandos do Terminal no LINUX

Boot e shutdown. Administração de Sistemas 2015/2016 Pedro Brandão. Referências dos slides

Dispositivo principal alternativo e da restauração da infraestrutura de Gen1 com vara USB

Utilitário de Configuração

Utilitário de configuração

Comandos de Verificação. Alberto Felipe Friderichs Barros

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

1. Após o boot se completar, será exibida a tela de inicial do Redo exibida abaixo, onde o usuário deverá escolher a opção Start Redo Backup.

TECNÓLOGO EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS PROGRAMAÇÃO DE COMPUTADORES I Prática 01: Conceitos Iniciais

INSTALAÇÃO PRINTERTUX. Tutorial

INSTALACAO PRODUTOS DIGIVOICE NO ISSABEL PREPARAÇÃO DO SISTEMA

IPBrick Backups na IPBrick. iportalmais - Serviços de Internet e Redes, Lda.

OpenWrt: modelagem do

Guia de utilização do servidor da disciplina

TUTORIAL DE INSTALAÇÃO DO FIREWALL pfsense

Entraremos em sistema linux para realizar algumas tarefas e aprender alguns comandos.

Sistemas Operacionais. Prof. André Y. Kusumoto

Administração Central Cetec Capacitações Capacitação Sistema Operacional Linux Semana III

Técnico de Gestão e Programação de Sistemas Informáticos

Técnico Subsequente em Redes de Computadores Introdução a Sistemas Abertos (ISA)

1º Ano - Técnico em Informática Integrado. Sistemas Operacionais

Utilitário de Configuração

Instalação e Configuração de Servidores Linux Server Partições e Sist. de Arquivos. Prof. Alex Furtunato

Administração de sistemas Linux. Manipulação do sistemas de arquivos

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

Informática. Linux. Professor Márcio Hunecke.

LPI nível 2: Aula 1 Conheça o kernel Linux e saiba como aplicar patches, configurá-lo, compilá-lo e manipular seus módulos. por Luciano Siqueira

pedrofilho.eti.br Linux Essentials 2.3 Acessando diretórios e arquivos 2.4 Criando, movendo e excluindo arquivos Prof. Pedro Filho

Hierarquia de Diretórios da Família Linux. Sistemas Operacionais 1

Comandos básicos. Sistemas Operacionais II

Utilitário de Configuração Manual do utilizador

Aula 04 Sistemas Embarcados LT38C

Instalador e Operador de Sistemas de Telefonia e Comunicação de Dados

Gestão de Sistemas Operacionais

Configurando a autenticação radius por meio de Cisco cache engine

Sistema de arquivos. Adriano J. Holanda 24/5/2016

Preparatório LPIC-1 Tópico 102

MultiBoot Manual do utilizador

Linux - comando essenciais

Processo. Gerência de Processos. Um programa em execução. Centro de Informática/UFPE :: Infraestrutura de Software

Capítulo 9 Manipulando Hardware e dispositivos

Computer Setup Manual do utilizador

Moisés Souto docente.ifrn.edu.br/moisessouto

Instalacao do Zabbix 2.x em Ambiente CentOS

Workshop de Media Center

Como montar um servidor FTP em Windows

Processo. Gerência de Processos. Um programa em execução. Centro de Informática/UFPE :: Infraestrutura de Software

Configurar o módulo CGM-SRV IOx em CGR1xxx

1. (5) Arquitectura de Computadores. Classifique cada uma das alíneas seguintes como Verdadeira ou Falsa.

O Linux Possui varias características que diferenciam dos outros sistemas operacionais e que aproximam do UNIX, sendo um dos motivos da sua escolha

ArchLinux Como instalar sem espinhas (Parte 1)

Introdução ao Windows Server 2008

SEMPRE FAÇA BACKUP DOS ARQUIVOS DE DADOS DE UMA MÁQUINA ANTES DE INSTALAR OUTRO SISTEMA OPERACIONAL

ps: Process Status - Apresenta o estado dos processos ps a: Outros utilizadores ps u: Info Utilizador

S.O.R. A Interface de comando

Administração de Sistemas Operacionais

Utilitário de configuração do computador Guia do usuário

CURSO TÉCNICO DE INFORMÁTICA. Fundamentos de Hardware e Software

Como meter um linux numa pen drive!

Backup do Samba 4. Introdução. Backup do samba4

Telefone IP TIP 235G/ TIP 435G/ TIP 638V

Making USB Great Again with USBFILTER

Nimbus - Configuração de um Servidor de Backup

Mestrado em Engenharia Eletrotécnica e de Computadores

Guião para a instalação do Ubuntu (Versão 1.1 em 30 Set 07)

Sistemas Operacionais Abertos

Estrutura do Sistema Operacional

CAP1300 Guia de instalação rápida

Transcrição:

Mestrado em Engenharia Eletrotécnica e de Computadores Automação e Sistemas ARCOM Arquitetura de computadores Departamento de Engenharia Eletrotécnica Instituto Superior de Engenharia do Porto 1100997 - Pedro Santos 1120987 - Sérgio Martins 2012

Índice 1. Introdução e opções tomadas... 3 2. Implementação... 4 2.1 Preparação do Kernel... 4 2.2 Configuração do Buildroot...10 2.3 Aplicação de captura de imagem com a câmara...12 2.4 Configuração de módulos no arranque...13 3. Arranque do Sistema...14 4. Utilização do Sistema e Conclusões...15 5. Referências Documentais...16 1100997, 1120987 2

1. Introdução e opções tomadas Este documento apresenta o relatório do trabalho Sistema de vigilância - Utilização de câmara USB, armazenamento de imagens como componente de avaliação da disciplina de Arquitetura de Computadores, no âmbito do Mestrado em Engenharia Eletrotécnica e de Computadores. A implementação do trabalho envolveu a configuração de um Kernel Linux, com os recursos necessários para utilização de uma câmara USB. A captura de imagens efetuou-se através de uma aplicação minimalista de acesso à API de vídeo. Nas configurações base de Kernel e Buildroot utilizaram-se os conhecimentos adquiridos nas aulas e pelos guiões disponibilizados. A informação sobre os módulos a utilizar foi adquirida com o conteúdo das mensagens de sistema e módulos carregados, comandos dmesg e lsmod. Começou-se por configurar o Kernel Linux 3.5.6, optando-se a maior parte das vezes por módulos estáticos, principalmente a nível de USB que formam a base do armazenamento. Já os módulos de vídeo e rede foram compilados e carregados dinamicamente de modo a poderem ser alterados, consoante a máquina a utilizar. Optou-se por ativar a remoção de módulos para que o sistema possa ser actualizado, no que toca a vídeo, remotamente e sem reiniciar. As câmaras USB externas de que disponhamos, Sweex e Creative, foram carregadas com sucesso embora no final não se tenha conseguido obter imagem pela aplicação utilizada. O módulo UVC provou ser realmente universal, suportando as câmaras de um computador Magalhães e HP Mini 110 sem configurações adicionais. A initrd foi reduzida ao simples carregamento de módulos/espera de carregamento destes e comutação para o init da busybox patente na segunda partição. Para criação do sistema base utilizou-se o Buildroot 2012.08, ferramenta de tal maneira completa que satisfez todas as nossas necessidades de aplicações base, comunicação, librarias e compilação cruzada. Utilizamos uma partição EXT3 já que a EXT2 se revelou extremamente frágil, corrompendo-se frequentemente ao longo dos testes. 1100997, 1120987 3

2. Implementação 2.1 Preparação do Kernel Download de código fonte do kernel wget http://ave.dee.isep.ipp.pt/~jes/arcom/guiao2-linux_distro/src/linux- 3.5.6.tar.bz2 Descompactação do arquivo tar xjvf linux-3.5.6.tar.bz2 Nova configuração e menu de configuração make allnoconfig make xconfig Opções de configuração do Kernel: A menos de explicitamente indicado, os módulos foram compilados estaticamente. General Setup Local version: 1100997 1120987 Initial RAM filesystem and RAM disk (initramfs/initrd) support Optimize for size Disable heap randomization Optimize very unlikely/likely branches Enable loadable module support Module unloading (para permitir atualizar módulos sem reiniciar o kernel) Processor type and features Processor family Pentium MMX Preemption Model Preemptible kernel High Memory Support off Timer frequency 1000Hz Bus options PCI support PCI access mode Any Executable file formats / Emulations Kernel support for ELF binaries 1100997, 1120987 4

Write ELF core dumps with partial segments Networking support Networking op ons Packet Socket Unix domain sockets TCP/IP Networking (removendo todas as pré-seleções) Remover Wireless Device Drivers USB Support File systems Block devices RAM block device support SCSI device support SCSI device support legacy /proc/scsi/ support SCSI disk support Prove all LUNs on each SCSI device Network device support Network core driver support Generic Media Independent interface device support Ethernet driver support Realtek RTL-8129/8 (para ebox, Loadable) Realtek 8169 gigabit (para Magalhães, Loadable) Remover Wireless LAN Mul media support (loadable) Video for Linux (loadable) Video capture adapters V4L USB Devices (necessário selecionar Support for host side USB, previamente) USB Class Video (UVC) (loadable) GSPCA based webcams (loadable) SONIX Bayer USB Camera Driver (loadable) Remover V4L PCI(e) devices Remover Radio Adapters Graphics support Support for frame buffer devices Enable firmware EDID Enable Video Mode Handling Helpers VESA VGA graphics support VGA text console Enable Scrollback Buffer in System RAM Framebuffer Console support Support for host side USB USB announce new devices EHCI HCD (USB 2.0) support OHCI HCD support USB Mass Storage support The shared table of common (or usual) storage devices Second extended fs support Ext3 journaling file system support Network file systems 1100997, 1120987 5

DOS/FAT /NT Filesystems VFAT (Windows 95) fs support (860) Default codepage for FAT iocharset : iso8859-1 Na ve language support Codepage 860 (Portuguese) NLS ISO 8859-1 NLS UTF-8 Compilação do Kernel make ARCH=i386 Preparação do dispositivo de armazenamento #como root, a pen a corresponder a /dev/sdc. umount /dev/sdc* #limpar tabelas de eventuais partições existentes. dd if=/dev/zero of=/dev/sdc bs=1m count=4 conv=fsync #criar partições fdisk /dev/sdc # criar partição de arranque com (e.g.) 20 MB: ('n','p',1,<enter>,+20m) # Marcar como active partição 1. ('a',1) # Criar outra partição com o restante espaço. (n,p,2,<enter> (próximo sector livre), <enter> (último sector, restante espaço) # Executar alterações ('w') # retirar pen e voltar a inserir. Novo umount para desfazer auto-mount. umount /dev/sdc* mkfs.vfat /dev/sdc1 mkfs.ext3 /dev/sdc2 syslinux -s /dev/sdc1 cd /usr/share/syslinux/ printf '\1' cat altmbr.bin - dd bs=440 count=1 iflag=fullblock conv=notrunc of=/dev/sdc # Embora não seja muito correto criar diretorias na raíz, optamos por fazê-lo 1100997, 1120987 6

# para simplificar os acessos a esta mkdir /pen1 mkdir /pen2 mount /dev/sdc1 /pen1 mount /dev/sdc2 /pen2 # Copiar kernel. cp <dir_linux_kernel_compil>/arch/x86/boot/bzimage /pen1/ #Criação do ficheiro /pen1/syslinux.cfg com o conteúdo abaixo: DEFAULT bigbrother LABEL bigbrother KERNEL bzimage APPEND ramdisk_size=2048 initrd=initrd.gz vga=789 Preparação da Busybox wget http://www.busybox.net/downloads/busybox-1.20.2.tar.bz2 Extração de ficheiros tar xjvf busybox-1.20.2.tar.bz2 Menu de configuração make allnoconfig make xconfig Opções seleccionadas: (apenas o estritamente necessário para iniciar a segunda partição) Build Options: Build BusyBox as a static binary Introduzir a opção -m32 em CFLAGS e LDFLAGS 1100997, 1120987 7

Applets Coreutils sleep Shells ash Console Utilities dumpkmap Linux Module Utilities # Compilar insmod (não necessário para o mínimo mas para precaver futuras necessidades) Linux System Utilities mount umount export LDFLAGS=-m32 make -j 8 Criação da initrd #criar ficheiro que servirá de suporte para o initrd dd if=/dev/zero of=initrd.img bs=1k count=2000 mkfs.ext2 initrd.img # Montar initrd mkdir initrd mount initrd.img initrd -o loop cd initrd # Copiar busybox e criar links simbólicos mkdir bin cd bin cp../../busybox-1.20.2/busybox. ln -s busybox ash ln -s busybox sleep ln -s busybox insmod ln -s busybox mount ln -s busybox umount cd.. 1100997, 1120987 8

# ficheiro linuxrc na raíz / #!/bin/ash # Beep echo -e "\007" echo "" echo " Big Brother" echo "" echo " ISEP, 2012" echo "" echo " 1100997-1120987" echo "" PATH=/bin export PATH mount -t proc none /proc sleep 10 echo 0x802 > /proc/sys/kernel/real-root-dev umount /proc chmod 755 linuxrc # Criar /dev/console mkdir -p dev cd dev mknod console c 5 1 mknod null c 1 3 #sistema de terminais virtuais (ttyx) mknod tty c 5 0 #usado pelo comando tty para saber qual o terminal atual mknod tty0 c 4 0 #link para o terminal atual mknod tty1 c 4 1 #terminal default cd.. # mount point para o sistema de ficheiros virtual proc mkdir -p proc 1100997, 1120987 9

#ficheiros de dispositivo para as várias partições mknod dev/sda b 8 0 mknod dev/sda1 b 8 1 mknod dev/sda2 b 8 2 mknod dev/sdb b 8 16 # Desmontar initrd cd.. umount initrd gzip initrd.img # copiar initrd para pendrive cp initrd.img.gz /pen1/initrd.gz # Desmontar partição 1 umount /pen1 mkdir p /pen2/usr/share/keyb/ <dir busybox>/busybox dumpkmap > /pen2/usr/share/keyb/keyb.map 2.2 Configuração do Buildroot Opções de configuração do builroot Target Architecture i386 Target Architecture Variante i586 Toolchain Toolchain type Buildroot toolchain Kernel Headers Linux 3.4.x Kernel header uclibc C library Version uclibc 0.9.33.x Binutils Version binu ls 2.21.1 GCC compiler Version gcc 4.5.x Build/install a shared libgcc? Enable compiler tis support Enable large files (files > 2GB) support Enable toolchain locale/i18n support Enable C++ support Thread library implementation Na ve POSIX threading (NPTL) System configuration 1100997, 1120987 10

/dev management Sta c using device table Init system Busybox Port to run a getty (login prompt)on: tty1 remount root filesystem read-write during boot Filesystem images Ext2 root filesystem Compression method no compression tar the root filesystem Compression method no compression Package Selection for the target Libraries Graphics Jpeg Hardware handling libv4l v4l2 ctl Networking applications Dropbear (Necessário para acesso SSH2) Optimize for size log dropbear access to lastlog pro pd (Servidor de FTP) Compilação de Buildroot make # Cópia de ficheiros cd output/images mkdir r mount rootfs.ext2 r o loop cd r cp R * /pen2/ # Copiar os módulos para a segunda partição da pen: cd <dir_linux_kernel_compil> mkdir p /pen2/lib/modules cp $(find. -name *.ko) /pen2/lib/modules/ 1100997, 1120987 11

2.3 Aplicação de captura de imagem com a câmara Para implementação do nosso trabalho necessitamos de uma aplicação para capturar imagens de uma câmara USB. Na pesquisa que efectuámos encontramos várias soluções, nomeadamente xawtv, uvccapture, ZoneMinder. Estas aplicações, principalmente, por motivos de múltiplas dependências de librarias foram sendo descartadas. No trabalho de procura de uma aplicação conseguimos compilar e executar a aplicação v4l2grab que descarregamos do site: http://www.twam.info/wp-content/uploads/2009/04/v4l2grab.c: v4l2grab Version 0.1 Compilação do framegrabber mkdir v4l cd v4l export PATH=$PATH:<caminho absoluto para output/host/usr/bin do buildroot> i586-linux-gcc v4l2grab.c -o v4l2grab -Wall -ljpeg -DIO_READ -DIO_MMAP - DIO_USERPTR cp v4l2grab /pen2/usr/bin Com o programa compilado fazemos a captura de imagens com o comando:./v4l2grab -o image.jpg Executaram-se algumas alterações à aplicação. O código-fonte encontra-se no ficheiro anexo cyclegrabber.c dada a sua extensão. Sumário de alterações: Inclusão de opção para captura de cíclica com número definido ou infinito de capturas. o l ou --loop x (com x = numero de ciclos ou 0 para infinito) Inclusão de opção para acrescentar data e hora no nome do ficheiro. o D ou --datestamp Inclusão de opção para introdução de intervalo temporal entre capturas. o i ou --interval x (com x = tempo em milissegundos) A opção o (nome de ficheiro de saída) foi reconfigurada como opcional sendo apenas o prefixo do ficheiro. Por omissão o nome do ficheiro é sequencial. A extensão.jpeg é sempre colocada. 1100997, 1120987 12

2.4 Configuração de módulos no arranque Para execução da aplicação de captura de imagens é necessário carregar os módulos listados abaixo. Para efetuar o carregamento de forma automática incluímos os comandos de carregamento insmod no ficheiro /etc/inittab logo após o carregamento de scripts rc (::sysinit:/etc/init.d/rcs). #Carregamento de Modulo de Placa Ethernet null::sysinit:/sbin/insmod /lib/modules/r8169.ko #Carregamento de Modulos de Video4Linux e UVC null::sysinit:/sbin/insmod /lib/modules/videodev.ko null::sysinit:/sbin/insmod /lib/modules/videobuf2-core.ko null::sysinit:/sbin/insmod /lib/modules/videobuf2-memops.ko null::sysinit:/sbin/insmod /lib/modules/videobuf2-vmalloc.ko null::sysinit:/sbin/insmod /lib/modules/v4l2-int-device.ko null::sysinit:/sbin/insmod /lib/modules/v4l2-common.ko null::sysinit:/sbin/insmod /lib/modules/uvcvideo.ko null::sysinit:/sbin/loadkmap < /usr/share/keyb/keyb.map null::sysinit:/usr/bin/cyclegrabber -l 0 -D -i 1000 -o /www/cap/c & # de notar o & após a linha do cyclebgrabber que permite enviar para background a # aplicação. 1100997, 1120987 13

3. Arranque do Sistema Após as devidas desmontagens ( umount /dev/sdc*) colocamos a pen no sistema final e observamos o correto arranque deste. Após login como root realizou-se algumas configurações e criação do utilizador admin, para acesso remoto. É possível configurar o servidor de ftp através do ficheiro /etc/proftpd.conf embora as opções por defeito se tenham mostrado satisfactórias. # Alterar password de root passwd root # Criação de grupo video para possibilitar o acesso à câmara de outros # utilizadores. addgroup video chown root.video /dev/video* adduser admin G video chmod g+rw /dev/video* # configuração do interface de rede com DHCP udhcpc 1100997, 1120987 14

4. Utilização do Sistema e Conclusões Após o arranque do sistema a aplicação cyclegrabber fica em captura em ciclo infinito. É possível desativá-la terminando o processo (comando ps para determinar pid e kill pid para terminar). O sistema é acessível por ssh e ftp com o utilizador admin e as portas por defeito. Verificou-se que a captura máxima se encontra nos 4/5 fps. A configuração foi testada com sucesso na ebox, computador Magalhães I e netbook HP Mini 110. No zip anexo encontram-se os ficheiros config utilizados, v4l2grab.c original e o ficheiro alterado cyclegrabber.c. 1100997, 1120987 15

5. Referências Documentais [1]: http://www.twam.info/linux/v4l2grab-grabbing-jpegs-from-v4l2-devices. [2]: Guiões das aulas de ARCOM: dist_linux-buildroot.pdf, dist_linux-fs.pdf, dist_linux-fs3.pdf, dist_linuxkernel-v2v. [3]: https://www.kraxel.org/blog/linux/xawtv/ [4]: The Webcam HOWTO http://www.tldp.org/howto/html_single/webcam-howto/ 1100997, 1120987 16