Buscar

Trabalho Kernel

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 10 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 10 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 10 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

SISTEMAS OPERACIONAIS 
 
EDNEY PEREIRA PINTO 
 
 
 
 
 
 
 
TRABALHO EM SISTEMA DE INFORMAÇÃO 
SOBRE COMPILAÇÃO DO KERNEL 
 
 
 
 
 
 
 
 
Lavras - MG 
2015 
 
 
EDNEY PEREIRA PINTO 
 
 
 
 
 
SISTEMAS OPERACIONAIS 
 
 
 
 
 
Trabalho de apresentação ao Curso de 
Sistemas de Informação, matrícula 
número 201221037, turma 14B do 
conhecimento da Universidade 
Federal de Lavras - UFLA como 
requisito parcial para obtenção de título 
do grau de Bacharelado, sendo 
orientado pelo Professor Gláucio 
Loureiro. 
 
 
 
 
 
 
LAVRAS – MG 
2015 
 
 
Introdução ao Sistema Operacional Android 
 
Android é um ambiente operacional completo baseado no kernel 
Linux® V2.6. Inicialmente, o destino de implementação para o Android era 
a arena do telefone móvel, incluindo telefones inteligentes e dispositivos flip 
fone de baixo custo. Entretanto, a variedade completa do Android de 
serviços de computação e o suporte totalmente funcional têm potencial para 
ir além do mercado de telefones móveis. O Android pode ser útil para outras 
plataformas e aplicativos. 
A plataforma Android é o produto do Open Handset Alliance, um 
grupo de organizações colaborando para a construção de um telefone móvel 
melhor. O grupo, liderado pelo Google, inclui operadores de telefonia 
móvel, fabricantes de aparelhos portáteis, fabricantes de componentes, 
provedores de plataformas e soluções de software e empresas de marketing. 
A partir de um ponto de vista de desenvolvimento de software, o Android 
fica bem ao centro do mundo do software livre. 
Para estimular a inovação, o Google patrocinou duas séries do 
"Android Developer Challenges," onde milhões de dólares foram envolvidos 
nas melhores participações. Alguns meses depois do G1, o Android Market 
foi lançado, permitindo que os usuários navegassem e fizessem o download 
de aplicativos diretamente em seus telefones. 
 
Porque o Sistema Operacional Android? 
 
Android é uma plataforma jovem e tem o potencial de jogar dos 
dois lados do espectro de telefonia móvel e, talvez, de criar uma ponte sobre 
o abismo entre trabalho e diversão. 
Hoje, muitos dispositivos com capacidade de rede ou baseados em 
rede têm um gostinho de kernel Linux. Eles são uma plataforma sólida: com 
boa relação custo-benefício para implementação e suporte e prontamente 
 
 
aceitos como uma boa abordagem de design para implementação. A UI para 
esses dispositivos muitas vezes é baseada em HTML e pode ser visualizada 
com um navegador PC ou Mac. Mas nem todo dispositivo precisa ser 
controlado por um dispositivo de computação geral. Considere um 
dispositivo convencional, como um forno de microondas ou um assador de 
pães. E se os seus dispositivos domésticos fossem controlados pelo Android 
e ostentassem um touch screen colorido? Com uma UI do Android no forno, 
o autor poderia até cozinhar algo. 
 
Importância do Sistema Operacional Android 
 
O Sistema Android cresceu e se tornou o sistema operacional móvel 
mais utilizado no mundo, e uma das experiências de sistema móvel mais 
rápidas. A mídia especializada elogiou a natureza de código aberto do 
Android, tendo esta característica ter sido a principal "força" do sistema, 
permitindo empresas como a Microsoft, Amazon, Barnes & Noble, Ouya, 
Baidu e outros a criarem ramificações a partir do Android. Como resultado, 
o sistema foi descrito pelo site de tecnologia Ars Technica como o "sistema 
operacional padrão para se lançar novos softwares" para empresas que não 
possuem sistema próprio. Essa abertura e flexibilidade também está presente 
ao nível do usuário final do sistema: o Android permite extensa 
customização do sistema, e seus aplicativos são livres para serem instalados 
de outros lugares fora da loja oficial do Google. Estas são as vantagens mais 
citadas do Android sobre outros sistemas móveis. 
O Android tem sofrido de fragmentação, uma situação onde a 
variedade dos dispositivos Android em termos de hardware e software faz 
com que seja extremamente difícil desenvolver aplicativos que funcionem 
através de todos as variações, em comparação com plataformas rivais, como 
a do iOS, em que o sistema de hardware e software varia muito menos. Em 
2013, por exemplo, segundo dados da OpenSignal, haviam 11,868 modelos 
de Android, em dezenas de tamanhos diferentes de tela e resolução, rodando 
 
 
8 versões diferente do Android simultaneamente, enquanto a maior parte dos 
dispositivos iOS tem sido atualizados para a última versão do software. 
Críticos do Android como o site de tecnologia Apple Insider têm declarado 
que a fragmentação em termos de hardware e software tem deixado o 
Android crescer em número entre dispositivos de baixo preço e baixa 
qualidade. Estes dispositivos, que são a maioria, fazem com que 
desenvolvedores criem aplicativos para a massa, a qual normalmente possui 
software atrasado, e não possui incentivo para usufruir dos últimos recursos 
dos sistemas mais atuais, que estariam em apenas uma pequena porcentagem 
de dispositivos. Porém, a desenvolvedora OpenSignal, que desenvolve tanto 
para iOS quanto para Android, concluiu que essa fragmentação pode deixar 
o processo de desenvolvimento mais fácil, já que enquanto o Android cresce 
em termos globais, a chance de ser recompensado também cresce. 
Dispositivos com o sistema do Google representam mais da metade 
das vendas na maioria dos mercados, inclusive nos EUA e no Brasil, 
enquanto somente no Japão o sistema da Apple foi o mais vendido. No final 
de 2013 mais de 1,5 bilhão de smartphones haviam sido vendidos desde 
2010, fazendo do Android o sistema móvel mais vendido de todos os 
tempos, e na Google I/O de 2014 o Android possuía 1 bilhão de dispositivos 
ativos (que tiveram seus aparelhos conectados à internet em um intervalo de 
1 mês). Analistas estimam que este número deve subir para 3 bilhões até o 
final de 2014. Em 2013 o número de produtos Android vendidos em relação 
ao Windows era de 2.8:1, ou, numericamente, uma diferença de 578 milhões 
de aparelhos. 
 
Compilação do Kernel do Sistema Operacional Android 
 
O Kernel do Android 
O kernel do sistema operacional Android, portado para arquitetura 
OMAP da Texas Instrument, é baseado no Linux ARM. A ARM é 
 
 
fabricante de microprocessadores e microcontroladores usados em 
eletrônicos embarcados e móveis. Faz parte da Linux Foundation e, com 
intuito de inovar os sistemas com Linux, contribui com o Kernel Linux há 
algum tempo. 
Diretórios de configuração 
Configs: O diretório configs, que encontra-se no caminho 
/kernel/arch/arm/configs, possui os arquivos responsáveis pela configuração 
do Linux ARM, para vários modelos diferentes de placas que utilizam a 
arquitetura ARM. Em nosso caso, onde utilizamos a placa BeagleBoard, 
apenas o arquivo “omap3_beagle_android_defconfig” será utilizado para 
configuração dos drivers e módulos a serem incluídos no kernel durante sua 
compilação. 
Drivers: O diretório drivers, que encontra-se no caminho /kernel/drivers, 
contém os drivers a serem incluídos no kernel do Linux durante sua 
compilação. É neste importante diretório que encontraremos o driver correto 
para o adaptador de rede que utilizaremos na conexão e transmissão de 
dados via rede Wi-Fi. Dentro do diretório de drivers de dispositivos 
podemos encontrar o arquivo Makefile, que, em seu conteúdo, especifica 
qual linha devemos adicionar no arquivo omap3_beagle_android_defconfig 
para que seja adicionado o driver requerido durante a compilação. O arquivo 
Android.mk também é importante para definirmosquais módulos deverão 
ser adicionados ao kernel, visto que os drivers podem possuir alguma 
dependência. O adaptador escolhido para contemplar o trabalho foi o Encore 
802.11g Wireless USB Adapter, que possui como chipset o componente 
RTL8187B. Tal informação foi obtida através do comando “lsusb”, no 
terminal do sistema operacional Linux, rodando num microcomputador com 
Sistema Operacional Linux Ubuntu, com adaptador conectado em uma de 
suas portas USB. 
 
 
O diretório drivers, localizado, a partir do diretório principal, em 
/kernel/drivers/net, contém os drivers já disponíveis no Linux ARM para 
dispositivos de rede. Dentro deste, encontraremos o diretório .../net/wireless, 
que contém todos os drivers disponíveis para adaptadores de rede sem fio. O 
nosso driver (RTL8187B) já está presente no diretório 
.../net/wireless/rtl8180. 
A linha obj-$(CONFIG_RTL8187) += rtl8187.o, indica-nos que o trecho 
CONFIG_RTL8187=y deve ser adicionado ao arquivo 
omap3_beagle_android_defconfig, que é lido durante a compilação para 
identificar os módulos que devem ser adicionados ao kernel. Essa adição 
garante que o Android, pós-compilação, conterá o driver necessário para 
controlar a comunicação entre o Sistema Operacional e o Adaptador de rede 
Wi-Fi da Encore. 
- External: O diretório external, que encontra-se no diretório raíz /external, 
possibilita a configuração dos módulos necessários ao Sistema Operacional 
para execução da conexão e troca de dados da rede. Através dele é possível 
adicionar programas não disponíveis como padrão no Android, mas que 
sejam necessários para execução de tarefas indispensáveis. Um exemplo 
para a placa BeagleBoard é o driver de som. O padrão usado no Linux é o 
ALSA (Advanced Linux Sound Architecture), que não vem como padrão no 
Android, portado para arquitetura ARM. Para que seja utilizado tal driver, é 
necessário adicionar seu código fonte e bibliotecas necessárias ao diretório 
external e configurado para compilar de maneira correta. 
- Build: No diretório build deverá ser feita a configuração dos dispositivos a 
serem utilizados pela placa BeagleBoard. Dentro dele, no diretório generic, 
encontrado em /build/target/board/generic/, configuraremos o arquivo 
BoardConfig.mk. É este arquivo que permite indicar a compilação a 
utilização do hardware Wi-Fi em conjunto com a mainboard, visto que a 
versão do Android em questão, não vem com suporte a dispositivos wireless 
 
 
ativado por padrão. Estas configurações serão apresentadas com maiores 
detalhes na seção “As Configurações de Rede Wi-Fi Pré-Compilação”. 
As Configurações de Rede Wi-Fi Pré-Compilação: A configuração Wi-Fi no 
Android começa a partir de aplicativos Java e vai até driver/firmware, com a 
inserção da interface JNI e Wi-Fi nativa do componente. As configurações 
necessárias dentro do Android e kernel Linux. 
Compilando o Sistema Operacional 
É necessário obter uma toolchain (caixa de ferramentas) para a compilação 
do kernel do Android. A etapa de compilação divide-se em duas, pois é 
necessário compilar o Android (Interface Gráfica do Sistema) e o Kernel 
(Linux) do Sistema Operacional. 
1 - Compilando o Android (Interface) 
Acesse o diretório raíz do sistema, onde estão todos os seus diretórios e o 
arquivo Makefile, através do terminal e, com privilégios de root (sudo bash) 
e com o Java 5 configurado como padrão, execute comando “make”. 
2 - Compilando o Kernel do Android (Linux) 
Para compilação do Kernel é necessário configurar a varável de ambiente 
CC_PATH utilizada pelo script de compilação. Para tanto, deve-se acessar o 
caminho do toolchain instalado. Em nosso caso o toolchain encontra-se no 
mesmo diretório dos arquivos do beagledroid, que contém todo o código-
fonte da plataforma Android, dentro do diretório “opt”. 
Os comandos para configurar a variável e compilar o kernel são: 
/beagledroid#export 
CC_PATH=/media/arquivos/gea/documentos/PUCPR/Pos/TCC/opt/arm- 
2007q3/bin/arm-none-linux-gnueabi- 
 
 
 /beagledroid# cd kernel 
/beagledroid/kernel#../vendor/embinux/supporttools/beagle_build_kernel.sh 
 
O que pode ser alterado no Android e por quê? 
 
Um grupo de pesquisadores da Universidade de Ben-Gurion, em Israel, 
divulgou os principais grupos de vulnerabilidades e riscos do Android, que 
comprometem a disponibilidade do dispositivo, sua confidencialidade e sua 
integridade, sendo estes, pontos fundamentais para garantir a segurança de 
qualquer sistema operacional. Alguns destes danos referem-se às permissões 
concedidas a uma aplicação instalada ou, através de uma aplicação que 
explore as vulnerabilidades do Linux e das bibliotecas de sistemas. Outro 
grupo de risco, está nos arquivos contidos no cartão de memória SD, que não 
são protegidas por nenhum mecanismo de controle de acesso e, nas 
comunicações sem fio, que podem ser pirateadas (eavesdropped) à distância. 
Outro risco é o comprometimento via rede, pois os dispositivos que rodam 
Android podem ser atacados por outros dispositivos, computadores ou redes, 
efetuando um escaneamento das portas, ou através de caminhos abertos em 
serviços de SMS/MMS ou de email. Um deles se encontra na manipulação 
de mensagens de texto, onde foi possível enviar requisições WAP mal-
formadas que causam um erro Java (Array Index Out Of Bounds Exception), 
fazendo com que o sistema reinicie sem avisos, causando perda temporária 
de conectividade e, portanto, negação de serviço. Outra falha conhecida, esta 
presente no firmware RC29 e anteriores do G1, o Google Phone e iPhone 
Killer, caracteriza-se por interpretar tudo que você digita no telefone como 
um “comando”, em qualquer área onde possibilite a entrada de texto. Por 
exemplo, ao abrir o navegador, ou uma aplicação de SMS, e digitar o termo 
“reboot” e teclar “enter”, o sistema era reiniciado. Para este problema o 
Google liberou o RC30, corrigindo o problema. E, por fim, outro problema 
 
 
identificada estava relacionado a diversas anormalidades na API Dalvik, que 
é uma maquina virtual presente no Android. Uma aplicação maliciosa pode 
ser desenvolvida de tal forma que, caso seja executada pelo usuário, uma 
função vulnerável da API pode ser chamada, provocando, por exemplo, a 
reinicialização do sistema.

Outros materiais