r7 - 28 Jan 2007 - 03:26:55 - IuriDinizYou are here: TWiki >  Personal Web  > EmbeddedSystem
MÉTODO MUITO ARTESANAL DE CONSTRUÇÃO, MELHOR USAR O BUILDROOT

Construindo um Sistema embarcado para uma flash 32 MB arquitetura i386

Sistema

Host

  • Intel Celeron M 1.3 GHz
  • Sistema Debian/Linux etch

Target

  • Kalaheo
  • Intel Celeron Mobile 733 MHz
  • placa de vídeo compatível com i810fb (modprobe i810fb)
  • placa de som compatível com snd-intel8x0 (modprobe snd-intel8x0)
  • placa de rede compatível com e100 (modprobe e100)

Extras

  • driver ne2000 pci (qemu)

Softwares necessários

Para construir:

compiladores e utilitários relacionados.
rsync: http://rsync.samba.org
hal91: http://chris.silmor.de/hal91/

Vou usar debian gnu linux como sistema host.

Para incluir no sistema:

busybox 1.01: http://www.busybox.net/downloads/
udhcpc: http://udhcp.busybox.net/
grub: http://www.gnu.org/software/grub/
linux kernel: http://www.kernel.org
nano: http://www.nano-editor.org/

Para executar testes:

hdmounter: http://www.dad-answers.com/qemu/utilities/QEMU-HD-Mounter/
qemu: http://fabrice.bellard.free.fr/qemu/

Criar imagem

#!/bin/sh
mkdir mySystem
cd mySystem

# pegar um linux para partionar a pseudo-flash
wget http://chris.silmor.de/hal91/hal91.img

# criar a pseudo-flash
dd if=/dev/zero of=imagem.img bs=1M count=32

Agora temos quer particionar, vou usar o qemu para poder dar o boot

#!/bin/sh
qemu -fda hal91.img -hda imagem.img -boot a

Dentro do qemu, particione o disco com fdisk e crie o sistema com mke2fs

Montar imagem

Vamos instalar o hdmounter para poder usar a imagem.

#!/bin/sh
#cd mySystem

wget http://www.dad-answers.com/qemu/utilities/QEMU-HD-Mounter/qemu-hd-mounter.tar.gz

tar xvzf qemu-hd-mounter.tar.gz
make -C lomount
cp lomount/lomount hdmount

Agora vamos montar.
#!/bin/sh
#cd mySystem

mkdir mnt
./hdmount -t ext2 -diskimage imagem.img -partition 1 mnt

Criar uma raiz base

Assegure-se que o hd esteja montado

#!/bin/sh
#cd mySystem

# criar raiz
mkdir mnt/bin mnt/boot mnt/dev mnt/etc mnt/lib mnt/mnt mnt/proc \
mnt/sys mnt/tmp mnt/usr

cd mnt
ln -s bin sbin

mknod -m 622 dev/console c 5 1
mknod -m 666 dev/null c 1 3
mknod -m 666 dev/zero c 1 5
mknod -m 666 dev/ptmx c 5 2
mknod -m 666 dev/tty c 5 0
mknod -m 444 dev/random c 1 8
mknod -m 444 dev/urandom c 1 9
mknod -m 666 dev/tty1 c 4 1
chown root:tty dev/{console,ptmx,tty}

cd ..

Busybox

estou usando este config: .config
#!/bin/sh
#cd mySystem

wget http://www.busybox.net/downloads/busybox-1.01.tar.bz2
tar xvjf busybox-1.01.tar.bz2
ln -s busybox-1.01 busybox
cd busybox

wget http://clx.digi.com.br/wiki/pub/Personal/EmbeddedSystem/iuri.config -O .config
make && make install 
# busybox OK

cd ../mnt


# FIXME: usar Uclibc
# algumas libs (acho que nao sao necessarias todas estas libs)

rsync -avP /lib/libacl.so.1 /lib/libacl.so.1.1.0   /lib/libattr.so.1 \
  /lib/libattr.so.1.1.0 /lib/ld-linux.so.2 /lib/ld-2.3.5.so  /lib/librt-2.3.5.so \
  /lib/libncurses.so.5 /lib/libncurses.so.5.4 /lib/libdl.so.2 /lib/libdl-2.3.5.so \
  lib/

rsync -avP /lib/tls/librt.so.1 /lib/tls/libc.so.6 /lib/tls/libpthread.so.0 \
  /lib/tls/libc-2.3.5.so /lib/tls/libpthread-2.3.5.so lib/tls/

rsync -avP /lib/tls/librt.so.1 /lib/tls/librt-2.3.5.so lib/tls/

# libs para o busybox
#   /lib
rsync -avP /lib/ld-linux.so.2 /lib/ld-2.3.5.so lib/
#   /lib/tls
rsync -avP /lib/tls/libcrypt.so.1 /lib/tls/libc.so.6 /lib/tls/libc-2.3.5.so \
  /lib/tls/libcrypt-2.3.5.so lib/tls

cd ..

# para testar
# cd ..; chroot mnt /bin/ash


Kernel

Kernel versão 2.6.13.3

#cd mySystem
wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.13.3.tar.bz2
tar xvjf linux-2.6.13.3.tar.bz2

Grub

TODO

estou usando este menu.lst: TODO

olhe GrubBootLoader#Instalar_GRUB_em_uma_imagem_img

#!bin/sh
#cd mySystem

mkdir -p mnt/boot/grub
cp /lib/grub/i386-pc/stage1 mnt/boot/grub/
cp /lib/grub/i386-pc/stage2 mnt/boot/grub/
#cp /usr/share/doc/grub/examples/menu.lst mnt/boot/grub/
# wget meu_menu.lst

# dizer que o hd0 é a pseudoflash
echo "(hd0) ./imagem.img" > device.map

Instalar o bootloader executando /sbin/grub --device-map=device.map

#!/sbin/grub --device-map=device.map
root (hd0,0)
setup (hd0)
quit

Outras coisas

nano editor

#!/bin/sh
#cd mySystem

# apt-get install nano-tiny
cd mnt

# libs necessarias
rsync -avP /lib/libslang.so.2 /lib/libslang.so.2.0.4 \
  /lib/libm.so.6 /lib/libm-2.3.5.so lib/

rsync -avP /lib/tls/libm.so.6 /lib/tls/libm-2.3.5.so lib/tls

rsync -avP /bin/nano-tiny bin/nano

Rede

TODO: this
#!/bin/sh
#cd mySystem

cd mnt

mkdir network
mkdir -p var/run

cd network 
mkdir if-up.d if-down.d if-pre-up.d if-post-down.d
#TODO: wget interfaces
cd ..



# FIXME: usar Uclibc
rsync -avP /lib/tls/libnss_* lib/tls/
rsync -avP /lib/libnss_* lib/
rsync -avP /lib/libresolv-2.3.5.so /lib/libresolv.so.2 lib/
rsync -avP /lib/tls/libresolv-2.3.5.so /lib/tls/libresolv.so.2 lib/tls/

telnetd

Testar

#!/bin/sh
#cd mySystem

sync;sync

# desmontar particao
umount mnt

qemu -hda ./imagem.img
#qemu -hda ./imagem.img -fda hal91.img -enable-audio -std-vga -boot c 

Configurando

/etc/fstab





   Warning: This site does not allow %INCLUDE% of URLs 


/etc/inittab





   Warning: This site does not allow %INCLUDE% of URLs 


/etc/init.d/startup





   Warning: This site does not allow %INCLUDE% of URLs 


/etc/init.d/halt





   Warning: This site does not allow %INCLUDE% of URLs 


-- IuriDiniz - 04 Nov 2005

toggleopenShow attachmentstogglecloseHide attachments
Topic attachments
I Attachment Action Size Date Who Comment
elseconfig iuri.config manage 9.5 K 04 Nov 2005 - 11:23 IuriDiniz Config do busybox
elselst menu.lst manage 0.1 K 07 Nov 2005 - 21:38 IuriDiniz menu.lst
elseconfig kernel.iuri.config manage 22.9 K 07 Nov 2005 - 21:39 IuriDiniz minha configuração do kernel
elseEXT fstab manage 0.1 K 07 Nov 2005 - 21:40 IuriDiniz /etc/fstab
elseEXT inittab manage 0.2 K 07 Nov 2005 - 21:40 IuriDiniz /etc/inittab
elseEXT halt manage 0.1 K 07 Nov 2005 - 21:41 IuriDiniz /etc/init.d/halt
elseEXT startup manage 0.1 K 07 Nov 2005 - 21:41 IuriDiniz /etc/init.d/startup
Edit | WYSIWYG | Attach | Printable | Raw View | Backlinks: Web, All Webs | History: r7 < r6 < r5 < r4 < r3 | More topic actions
 
Powered by TWiki
This site is powered by the TWiki collaboration platformCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback