Desenvolvimento de um Sistema Operacional Linux para

Propaganda
Desenvolvimento de um Sistema Operacional
Linux para fins Acadêmicos e Científicos
Ramon da Silva Pereira
Wercely Duarte de Sousa
Carlos Henrique Feichas
Instituto Nacional de Telecomunicações –
Inatel
[email protected]
Instituto Nacional de Telecomunicações –
Inatel
[email protected]
Instituto Nacional de Telecomunicações –
Inatel
[email protected]

Resumo — Este artigo apresenta os desafios na construção de
um sistema operacional livre utilizando o LFS.
Abstract — This paper presents the challenges in building a
free operating system using the LFS.
Palavras chave — Linux, LFS, Pacotes Linux, Software Livre,
Sistema Operacional, Desenvolvimento em Linux.
I. INTRODUÇÃO
O presente documento é uma síntese dos conhecimentos
adquiridos durante o processo de Iniciação Científica onde foi
desenvolvido um SO (Sistema Operacional) Linux para fins
acadêmicos e científicos seguindo a referência LFS (Linux
From Scratch), bem como os resultados obtidos ao longo do
processo.
II. OBJETIVO
O Linux é um sistema operacional de código aberto
distribuído gratuitamente pela internet, o que permite a
qualquer pessoa visualizar como o sistema funciona, corrigir
algum problema, e até fazer alguma sugestão de melhoria.
Tais características motivam o seu rápido crescimento,
aumento da compatibilidade de periféricos e sua estabilidade
[1].
Este software básico, por ser de código aberto, permite aos
programadores adaptá-los a suas necessidades, não ficando
assim, restritos apenas aos desenvolvidos por grandes
empresas ou comunidades.
A idéia do trabalho é desenvolver uma distribuição Linux
para fins acadêmico-científicos. Tal sistema dispõe de
aplicativos, API’s (Application Programming Interface), e
outras ferramentas utilizadas para este fim.
III. DESENVOLVIMENTO DO SISTEMA
O processo de desenvolvimento foi dividido em etapas
cujas atividades e resultados estão descritos a seguir:
A. Planejamento
Nesta etapa os integrantes realizaram um profundo estudo
sobre o SO Linux, arquitetura, sistemas de arquivo, pacotes
importantes, comandos e scripts, diferença entre suas
distribuições (Gnome, KDE, Mandriva) e outros sistemas
distintos (Windows, Machintoch).
B. Preparação do Ambiente Anfitrião
No processo de criação de um SO Linux seguindo a
referência LFS, é necessário possuir uma de suas distribuições
instalada para servir de sistema anfitrião, além de um espaço
em disco para alocação do novo sistema. Neste projeto foi
escolhido o Ubuntu como sistema base (anfitrião).
Os integrantes optaram por utilizar uma máquina virtual
devido a sua portabilidade, além de evitar danos aos dados já
existentes no computador utilizado. A máquina virtual
escolhida foi Virtual Box por ser um aplicativo grátis, de
interface simples, intuitiva, possuir vários recursos, além de
muitos usuários que escrevem em fóruns suas experiências.
Na preparação do ambiente, foi criada uma partição de 20
GB de espaço na máquina virtual (espaço considerado
suficiente, já que existem distribuições que ocupam espaço
muito menor), onde metade foi utilizada para instalação do
sistema base e a outra parte para o sistema hospedeiro.
Também foi destinada a máquina virtual metade do
processamento e memória RAM do computador. Isso é
necessário para reduzir o tempo de compilação dos pacotes
úteis na construção do novo sistema.
C. Instalação de arquivos
O Sistema Operacional é o conjunto de programas que
fazem a interface do usuário e seus programas com o
computador. Ele é responsável pelo gerenciamento de
recursos e periféricos (como memória, discos, arquivos,
impressoras, CD-ROM's, etc.), interpretação de mensagens e a
execução de programas [1]. Estes programas estão contidos
em pacotes.
Para a construção do Linux (seguindo LFS) são necessários
aproximadamente 80 pacotes, que ocupam 148MB de disco. A
tabela 1 possui alguns dos pacotes utilizados:
TABELA I
PRINCIPAIS PACOTES UTILIZADOS.
NOME
DO
PACOTE
Binutils
VERSÃO
2.22
Glibc
2.22
Flex
2.5.35
Gcc
4.6.2
Make
3.82
Linux
3.2.5
Vim
Ncours
7.3
5.9
Tar
1.26
Bash
4.2
Coreuti
8.15
Sed
4.2.1
Grub
1.99
es
ls
CONTEÚDO
Contém um vinculador,
um assembler e outras
ferramentas que trabalham
com arquivos objetos.
Contém a biblioteca C
principal.
Utilizado para gerar
programas que reconhecem
padrões em textos.
Contém os compiladores
C/C++.
Possui programas para
compilar pacotes.
Contém
o
kernel
("núcleo") do Linux.
Editor de texto.
Contém bibliotecas para
manipulação de caracteres
no terminal.
Programa que armazena
e extrai arquivos de um
pacote.
Interpretador
de
comandos.
Contém programas para
ajuste de características
básicas do sistema.
Contém um editor de
Stream (fluxo de dados).
Programa
multicarregador de SO.
O processo de instalação de pacotes é dividido em três
etapas: descompactação, compilação e instalação. A primeira
etapa é realizada no sistema anfitrião, deve-se mover os
arquivos descompactados para o sistema hospedeiro via
terminal e em seguida, realizar as duas etapas seguintes. É um
processo cuidadoso, pois a maioria dos pacotes possui
dependências com outros. Uma vez errado o processo de
compilação, todo o processo deve ser refeito.
Seguindo a referência LFS o primeiro pacote a ser instalado
é Binutils, este possui o assembler e o vinculador dinâmico
que é utilizado pelo GCC e Glibc, o segundo é o GCC que
contém os compiladores C/C++ e o último pacote é o Vim
(editor de texto).
D.Tornando o Sistema Inicializável
Após realizar a instalação dos pacotes, o sistema em criação
deve ser configurado para ser inicializável. Isto é feito criando
o arquivo FSTAB, configurando um novo KERNEL e
instalando o GRUB.
O arquivo FSTAB determina onde os sistemas de arquivos
devem ser montados. A figura 1 mostra este arquivo no
sistema criado neste projeto.
Fig. 1. Arquivo FSTAB.
A configuração do Kernel possibilita adaptá-lo ao hardware
de cada usuário (por exemplo: caso o fabricante seja HP, há
módulos para HP, caso DELL, também há módulos). É
necessário realizar a configuração para que o novo SO seja
adaptado conforme a necessidade. Como o sistema proposto é
de uso geral (independente do fabricante do hardware) , não
houve modificação. A figura 2 mostra a tela de configuração
do kernel.
Fig. 2. Tela de configuração do KERNEL.
O GRUB (Grand Unified Bootloader) é um programa que
permite ao usuário escolher através de um menu qual SO será
carregado. Uma vez instalado, deve-se criar um arquivo
chamado menu.lst no diretório que é responsável pela lista de
exibição de sistemas operacionais instalados. A figura 3
mostra o código do "menu.lst" e a figura 4 mostra a tela de
exibição do mesmo.
Fig. 3. Exemplo de arquivo menu.lst.
Fig. 6. Diretório raiz (/) do novo SO..
E. Instalando Pacotes de Rede e Segurança
Fig. 4. Menu de escolha do sistema a ser carregado.
Com todos os pacotes instalados e configurados o novo
sistema está pronto para ser carregado. As figura 5 e 6 mostra
a primeira tela do sistema criado e uma listagem do diretório
raiz deste sistema.
A referência LFS possui uma continuação, o BLFS (Beyond
Linux From Scratch), cujo o foco é instalar pacotes de
segurança, configurar funções de hardware, funções de
usuários, instalar interface gráfica e outros aplicativos.
O primeiro conjunto de pacotes indicado pelo BLFS é
utilizado para instalação e configuração dos dispositivos
removíveis de mídia como pen-drives, CDs, disquetes e USB.
Nesta fase ocorreram os piores problemas encontrados ao
longo do projeto. O primeiro deles aconteceu devido a uma
incompatibilidade entre a máquina virtual e o sistema
construído, o que ocasionou no não funcionamento dos
dispositivos de mídia. Isto causou um atraso no projeto, pois
não era possível instalar novos pacotes por não conseguir
conectar a internet e nem através de periféricos.
A solução encontrada para o problema foi realizada em
duas etapas: A primeira foi criar um de arquivo de
configuração de rede ETHERNET. O que não era a solução
completa, já que o sistema não possuía o apt-get, wget e o
kpkg (programas essenciais para o download de pacotes). A
segunda etapa foi criar um servidor FTP (File Transfer
Protocol), onde foram colocados os pacotes a serem baixados,
e em seguida transferidos ao Linux via rede "cabeada".
Os primeiros pacotes instalados foram os pacotes de
controle de usuário e segurança (pacote de criptografia de
senhas, listas de controle de acesso, entre outros). Seguindo de
arquivos com scripts para compressão de manuais de
informações do sistema.
TABELA II
PRINCIPAIS PACOTES INSTALADOS DO BLFS.
PACOTE
Wget
Fig. 5. Tela de Login do novo SO (tela inicial).
VERSÃO
1.14
ConsoleKit
0.4.6
Iptables
1.4.17
CONTEÚDO
Programa para instalação
de pacotes não interativo.
Possui configurações de
usuários
Principal ferramenta de
Firewall do Linux.
Nss
3.14.1
Stunnel
4.54
Sudo
1.8.6p3
Apr
1.4.6
Glib
2.34.3
Links
2.7
Programa para serviço de
segurança
em
aplicações
cliente-servidor.
Permite realização
de
tunelamento sobre a rede PPP.
Permite a alguns usuários
executar alguns ou todos os
comandos
como
super
usuário.
Suporte para Apache WEB
Service.
Prove a utilização algumas
funcionalidades do sistema
como thread, carregamento
dinâmico e sistema objeto.
Navegador de internet em
modo texto
XPROTO. Porém, este pacote é instalado ao atribuir o Xcbproto, que já havia sido atribuído ao sistema antes.
Após muitas tentativas para encontrar a solução e o prazo
de finalização do projeto se esgotando, o integrantes
decidiram utilizar um sistema de customização para completar
o trabalho já que não havia mais tempo suficiente para mais
tentativas de solução, utilizou-se uma versão do Ubuntu e um
software de customização de SO, para desta forma, a idéia
final do projeto pudesse ser apresentada.
Para diferenciar o sistema criado dos demais já existentes,
os integrantes modificaram, também, a tela de carregamento
do sistema além do layout do GRUB. A figura 8 é uma
demonstração de uma das alterações que podem ser feitos na
tela de GRUB.
Ao concluir estas instalações, o sistema passou a ter um
novo layout, com textos coloridos, separando diretórios, de
arquivos e link's. A interface passou a ser relativamente mais
intuitiva (para usuários familiarizados com sistemas modo
texto), já que possuía uma gama maior de comandos e
inclusive um navegador web em modo texto, o "Links". A
figura 7 exibe o sistema após a instalação destes pacotes.
Fig. 8. Adicionado a tela de GRUB uma imagem diferente da padrão.
G.Instalação dos Softwares de Desenvolvimento
Os programas julgados pelos integrantes e por alguns
professores da instituição de ensino como os mais úteis para
fins acadêmicos e científicos, compõe o sistema criado. A
obtenção e instalação destes programas se deram através do
pacote APT. O APT (chamado por alguns de apt-get) é uma
avançada ferramenta de download e instalação de programas.
A tabela 3 é composta por uma lista de programas para
estes fins, instalados no sistema.
Fig. 7. Sistema com o novo layout.
F. Instalando a Interface Gráfica
A Interface Gráfica é considerada um dos principais
requisitos de um sistema operacional. A interface GNOME,
utilizada no Ubuntu, é a mais utilizada entre os usuários de
sistemas livres [2]. Por este motivo, neste projetos foi a
interface escolhida.
Para instalação da interface gráfica é necessário atribuir ao
sistema uma série de pacotes como XOrg, XOrg Libraries,
UtilMacros e Xcb-proto. Nesta fase ocorreu o segundo e o
maior problema encontrado ao longo do projeto. Durante a
instalação do pacote MakeDepend ocorria um erro que
informava a não instalação de um pacote necessário, o
TABELA III
PRINCIPAIS SOFTWARES DE FINS ACADÊMICOS/CIENTÍFICOS INSTALADOS
PACOTE
Eclipse
Sci-Lab
CONTEÚDO
Ambiente de desenvolvimento
de aplicativos em diversas
linguagens.
Software
científico
para
computação numérica, baseado
no Matlab
Filezilla
Cliente FTP, SFTP e FTPS muito
utilizado por desenvolvedores WEB no
processo de deploy de aplicativos.
Qt Creator
Ambiente de desenvolvimento multiplataforma.
Selenium Plugin para automatização de teste testes.
IDE
VirtualBox
Maquina Virtual.
Dia
Editor de diagramas, utilizado na
criação de desenhos técnicos
DDD
Programa de depuração de arquivos
em C/C++.
MySql
Sistema de gerenciamento de
WokBench
banco de dados (SGBD).
Tomcat
Servidor WEB Java, container de
servlets.
Eagle
Programa de montagem de
esquema elétrico.
GCC/G++
Conjunto de compiladores de
Linguagens de programação.
WireShark
Analisador de tráfico de rede.
Bison e Flex
Utilizado na construção de
linguagens de programação e
compiladores.
III. CONCLUSÃO
Construir um sistema operacional não é uma tarefa simples,
pois o mesmo utiliza uma grande quantidade de arquivos e
necessita de muito cuidado na instalação deles, além de
necessitar de muito tempo de construção. Porém é um processo
de muito aprendizado. É interessante poder olhar para um
sistema e poder entender o que ocorre nas camadas mais
internas, além da que o usuário comum pode ver, em outras
palavras enxergar o que ocorre "por baixo dos panos", quais
arquivos são responsáveis por determinados eventos no sistema.
Este processo foi tão motivador que inspirou os integrantes a
continuá-lo no Trabalho de Conclusão de Curso (TCC).
IV. REFERÊNCIA
[1]
- M. S. Gleydson, 05/12/2010. Guia Foca GNU/Linux,
versão
4.22,
2010.
Disponível:
http://www.guiafoca.org/?page_id=238.
[2] Beekmans. Gerard. 2012. Linux From Scratch, versão 7.1.
2012. Disponível: http://www.vivaolinux.com.br/linux/
[*] Bernardes, Luan. Oliveira, Janiel. Etapas de
Desenvolvimento de Sistemas. 2011. Disponível: http://
http://portalsis.wordpress.com/category/artigos-cientifico/
Download