Giter VIP home page Giter VIP logo

viegas-rubim's Introduction

Viegas Rubim RMS - Embedded System Generator

Alisson Cavalcante Agiani - [email protected]
Márcio Rodrigo de Almeida Silva - [email protected]
Vinicius Tinti de Paula Oliveira - [email protected]

REQUERIMENTOS:

	syslinux mkfs build-essential linux-kernel

	Opcional
	qemu

DOCUMENTAÇÃO:

23/10: Há uma pasta "vm_uclibc" no viegas com um ambiente enjaulado pronto para 
compilar nossas aplicações de acordo com a uclibc, por isso a rotina de desenvolvimento
mudou um pouco. Deve-se montar o dispositivo primeiro:

sudo modprobe loop
mount -o loop vm_uclibc/root_fs_i386.ext2 vm_uclibc/root

E depois transferir para o ambiente enjaulado os sources desejados, dar chroot para lá e 
configurar/compilar normalmente. Os 5 aplicativos atuais que vêm com o Viegas(busybox,
opentracker, enhanced ctorrent, ntfs-progs e dropbear) já estão dentro do ambiente enjaulado. Em cada uma
das pastas de source foi criada uma subpasta seguindo o padrão "aplicativo_binary" que foi utilizada
para jogar os arquivos necessários da aplicação após a compilação(com ./configure --prefix=/aplicacao/aplicacao_binary/).

Antes de compilar, exportem esta flag que diminui o tamanho do executável final:

export CFLAGS="-Os"

Depois é só conferir as libs necessárias com ldd e copiá-las para a respectiva subpasta em viegas/sources

23/10: Foram adicionados mais dois scripts "extended" para criar uma 
imagem com todos os aplicativos embutidos, os scripts normais criam apenas
o sistema básico em um disquete:


./build-initrd.sh 	#ambiente simples de 1 disco
./build-disk.sh 	#ambiente simples de 1 disco


./build-extended-initrd.sh 	#ambiente estendido para testes com qemu
./build-extended-disk.sh	#ambiente estendido para testes com qemu

Depois o arquivo final estará localizado em images/disk.img, para 
testar sua compilação use qemu images/disk.img

Há também uma pasta configs/ com as configurações atuais do busybox e do kernel 2.6.27.2 para
análise/tuning.

OBS.: O dropbear foi configurado com:
./configure --disable-largefile --disable-zlib --disable-syslog --disable-lastlog --prefix=/dropbear-0.51/dropbear_binary/

O ntfs-progs foi configurado com:
./configure --enable-shared=yes --enable-static=no --prefix=/ntfsprogs-2.0.0/ntfs_binary

No opentracker eu tive que alterar o Makefile para setar "CC=gcc" para compilar com uclibc

Como o ambiente enjaulado não tem ncurses, o comando "make menuconfig" não funciona. Temos que
gerar a configuração no ambiente normal e depois transferir o arquivo .config para o ambiente enjaulado.

Sempre que possível, vamos compilar com shared libs.

OBS2.: Este ambiente enjaulado tem uma versão meio antiga do uclibc, portanto, compilar nossas
aplicações lá é como jogar na loteria com 80% de chance de ganhar. Nos outros 20% temos que caçar
funções não implementadas e desabilitá-las(como clock_gettime do busybox). Eu sei que isso é uma droga,
 mas venho tentando há duas semanas criar uma toolchain atualizada com buildroot, sem sucesso.
Se alguém conseguir essa proeza, nossas dores de cabeça vão diminuir bastante :)

OBS3.: Precisamos de um ROADMAP! Eu diria que esta é a versão 0.1a :D

OBS4.: Precisamos de cerveja! Aliás, vamos colocar o Viegas na licença beerware! hehehheheheh

viegas-rubim's People

Contributors

thelinuxlich avatar

Stargazers

Angus H. avatar Marcos Piccinini avatar  avatar

Watchers

James Cloos avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.