Baixe o app para aproveitar ainda mais
Prévia do material em texto
1 P_S6_T0011 – Fundamentos de Sistema Operacionais ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Desenvolvimento de um Sistema Operacional Linux para fins Acadêmicos e Científicos Reginaldo Fernandes da Silva rfsseta@gmail.com Universidade Paulista - UNIP Campus Belém – Unidade Nazaré RESUMO O presente artigo apresenta os desafios na construção de um sistema operacional livre utilizando o LFS (Linux From Scratch), o que permiti a qualquer pessoa possa visualizar como o sistema funciona, corrigir algum problema, e até fazer alguma sugestão de melhoria. O processo de desenvolvimento foi dividido em etapas para que os integrantes realizem um profundo estudo sobre o SO Linux, arquitetura, sistemas de arquivos, pacotes importantes, comandos e scripts, diferença entre suas distribuições (Gnome, KDE, Mandriva) e outros sistemas distintos (Windows, Machintoch). O processo é desenvolver uma distribuição Linux para fins acadêmico-científicos. Disponibilizando aplicativos, API’s (Application Programming Interface), e outras ferramentas utilizadas para este fim. Palavras chaves: Linux, LFS, Pacotes Linux, Software Livre, Sistema Operacional, Desenvolvimento em Linux. I. INTRODUÇÃO Este 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, 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. 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. 2 P_S6_T0011 – Fundamentos de Sistema Operacionais ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- A finalidade 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 Sistema Operacional Linux, arquitetura, sistemas de arquivo, pacotes importantes, comandos e scripts, diferença entre suas distribuições (Gnome, KDE, Mandriva) e outros sistemas distintos. B. Preparação do ambiente anfitrião: No processo de criação de um OS Linux seguindo a referência LFS. Neste projeto foi escolhido o Ubuntu como sistema base (anfitrião). Os integrantes optaram por utilizar uma máquina virtual devido sua portabilidade. A máquina virtual escolhida foi Virtual Box por ser um aplicativo grátis, de interfase simples e intuitiva. Foi criada uma partição de 20 GB de espaço na máquina virtual, espaço suficiente, onde a metade foi instalada o sistema base e na outra o sistema hospedeiro. Também foi destinada a máquina virtual metade do processamento e memória RAM do computador, necessário para reduzir o tempo de compilação dos pacotes na construção do novo sistema. C. Instalação de arquivos: O Sistema Operacional é responsável pelo gerenciamento de recursos e periféricos, interpretação de mensagens e a execução de programas [1]. Estes programas estão contidos em pacotes. Para a construção do Linux (segundo LFS) são necessários aproximadamente 80 pacotes que ocupam 148MB de disco. A tabela I, possui alguns dos pacotes utilizados: Tabela I: Principais pacotes utilizados NOME DO PACOTE VERSÃO CONTEÚDO Binutils 2.22 Contém um vinculador, um assembler e outras ferramentas que trabalham com arquivos objetos. Glibc 2.22 Contém a biblioteca C principal. 3 P_S6_T0011 – Fundamentos de Sistema Operacionais ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Flex 2.5.35 Utilizado para gerar programas que reconhecem padrões em textos. Gcc 4.6.2 Contém os compiladores C/C++. Make 3.82 Possui programas para compilar pacotes. Linux 3.2.5 Contém o kernel ("núcleo") do Linux. Vim 7.3 Editor de texto. Tar 1.26 Programa que armazena e extrai arquivos de um pacote. Grub 1.99 Programa multi-carregador 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. 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 que é o editor de texto. É um processo cuidadoso, pois a maioria dos pacotes possui dependências com outros e o erro no processo de compilação, todo o processo tem que ser refeito. 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 este determina onde os sistemas de arquivos devem ser montados; configurando um novo KERNEL possibilita adaptá-lo ao hardware de cada usuário e instalando o GRUB (Grand Unified Bootloader) é um programa que permite ao usuário escolher através de um menu qual SO serra carregado. E. Instalando Pacotes de Rede e Segurança: A referência LFS possui uma continuação, o BLFS (Beyond Linux From Scratch), cujo foco é instalar pacotes de segurança, configurar funções de hardware, de usuários, instalar interface gráfica e outros aplicativos. O primeiro conjunto de pacotes 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. A solução encontrada para o problema foi realizada em duas etapas: A primeira foi criar um arquivo de configuração de rede ETHERNET, o que não foi a solução completa. A segunda 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”. 4 P_S6_T0011 – Fundamentos de SistemaOperacionais ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Tabela II: Principais pacotes instalados do BLFS PACOTE VERSÃO CONTEÚDO Wget 1.14 Programa para instalação de pacotes não interativo. ConsoleKit 0.4.6 Possui configurações de usuários Iptables 1.4.17 Principal ferramenta de Firewall do Linux. Stunnel 4.54 Permite realização de tunelamento sobre a rede PPP. Apr 1.4.6 Suporte para Apache WEB Service. Links 2.7 Navegador de internet em modo texto Ao concluir estas instalações dos pacotes, o sistema passou a ter um novo layout, com texto coloridos, separando diretórios, de arquivos e link’s. A interface passou a ser mais intuitiva (para usuários) já que possuía uma gama maior de comandos e inclusive um navegador de web em modo texto. A figura 1 exibe o sistema após a instalação destes pacotes. Fig. 1. Sistema com o novo layout. F. Instalando a Interface Gráfica: A Interface Gráfica é considerada um dos principais requisitos de um sistema operacional. Neste projeto foi utilizada a interface GNOME no Ubuntu, mais usada em sistemas livre [2]. Para instalação da interface gráfica é necessário atribuir ao sistema uma série de pacotes como XOrg, XOrg Libraries, UtilMacros e Xcb-pronto. Durante a instalação do pacote MakeDepend ocorria um erro que informava a não instalação do pacote XPROTO que é instalado ao atribuir o Xcb-pronto. Para solucionar o problema foi necessário utilizar um sistema de customização para completar o trabalho. Para diferenciar o sistema criado dos demais já existentes, foi modificada, também, a tela de carregamento do sistema, além do layout do GRUB. 5 P_S6_T0011 – Fundamentos de Sistema Operacionais ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 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 (chamado por alguns de apt-get) é uma ferramenta de download e instalação de programas. A tabela III é composta por uma lista de programas para estes fins, instalado no sistema. Tabela III: Principais softwares de fins acadêmicos/científicos instalados PACOTE CONTEÚDO Eclipse Ambiente de desenvolvimento de aplicativos em diversas linguagens. Sci-Lab 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 multi-plataforma. Selenium IDE Plugin para automatização de teste testes. 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 WokBench Sistema de gerenciamento de 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. IV. 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. V. 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://portalsis.wordpress.com/category/artigos-cietifico/.
Compartilhar