Com instal·lar un OpenZaurus en una SHARP Zaurus SL-5500S

  • warning: tempnam(): open_basedir restriction in effect. File() is not within the allowed path(s): (/srv/www/gilug.org/www/site.tree/) in /srv/www/gilug.org/www/site.tree/public/includes/file.inc on line 802.
  • warning: fopen(): Filename cannot be empty in /srv/www/gilug.org/www/site.tree/public/includes/file.inc on line 803.
  • El fitxer no s'ha pogut crear.

INTRODUCCIÓ
La SHARP Zaurus SL-5500S, com sabreu és una de les poques PDA que funcionen amb GNU/Linux de sèrie, concretament un sistema operatiu amb parts privatives anomenat Qtopia. A mi m'agraden més els SO oberts, en constant evolució, més manejables i amb els que puguis col·laborar, i per tant vaig escollir un nou sistema operatiu: l'OpenZaurus

Un dels problemes que tenia és que el meu portàtil no te infrarojos i havia d'arrossegar per tot arreu la base usb si volia connectar-me a Internet o sincronitzar la Zaurus amb el PC. La solució per la que vaig optar va ser comprar un adaptador CompactFlash Wireless (Linksys PKW-WCF12, amb funcionament certificat sota GNU/Linux)

Donant un cop d'ull al projecte OpenZaurus es veu que permet fer algunes coses que no pots amb el Qtopia, com per exemple instal·lar tot el sistema operatiu en una SecureDigital o una CompactFlash, jo he escollit la SD perquè com he comentat la ranura de la CF la necessito per a la tarja sense fils. Com que ha de ser ràpida d'escriptura i de lectura -hi anirà tot el sistema-, he escollit una Transcend de 512MB Pro (o sigui a 60x)

TASQUES B@€SIQUES
Necessitarem instal·lar vàries coses per arribar a bon port amb aquest manual, per qui no tingui un Access Point i una CompactFlash Wireless ho pot fer fent servir el mòdul usbnet que simula una connexió de xarxa en un dispositiu usb:
modprobe usbnet

Cal assignar el nom del dispositiu al mòdul que ha d'utilitzar, ho farem de la següent manera:
# vi /etc/modutils/aliases
alias usb0 usbnet

Configurem un nou dispositiu de xarxa, cal que utilitzar una ip de diferent rang que la connexió de xarxa actual, ja que sinó el portàtil es faria un embolic a l'hora d'enviar paquets, en el meu cas ha quedat així:
# vi /etc/network/interfaces
iface usb0 inet static
address 192.168.129.202
netmask 255.255.255.0
network 192.168.129.0
broadcast 192.168.129.255
Si utilitzem hotplug podem afegir-hi les línies següents perquè ens aixequi el dispositiu cada vegada que connectem la base al portàtil, personalment no m'agrada el hotplug:
mapping hotplug
script echo

Bé ara per tenir sortida a Internet des de la PDA (imagino que la ethernet del portàtil eth0 està connectada a la xarxa i amb sortida a Internet) farem un script senzill que ens activarà el reenviament de paquets del nostre ordinador (se suposa que tenim aquest suport compilat en el kernel)

En el meu cas les ip's que utilitzo son les següents:
eth0 192.168.1.123
usb0 192.168.129.102
Collie 192.168.129.101
( collie es el nom de host per defecte de la pda )


# vi /etc/init.d/ipforwarding-collie
#!/bin/sh
if [ $1 = "start" ]
then
dd -host 192.168.129.101 usb0
iptables -t nat -F
iptables -t nat -A POSTROUTING -j SNAT -o eth0 --to 192.168.1.123
echo 1 > /proc/sys/net/ipv4/ip_forward
echo "Habilitada la conexió a internet per collie...";
else
if [ $1 = "stop" ]
then
echo 0 > /proc/sys/net/ipv4/ip_forward
echo "Denegada la conexió a internet per collie...";
else
echo "No s'ha realitzat cap operació...";
echo "La sintaxi és: ipforwarding-colie [start|stop]";
fi
#chmod /etc/init.d/ipforwarding-collie

Ara, configurem la ip de la collie, el dispositiu de xarxa usb de la PDA i com a porta d'enllaç hi posem la ip de usb0. El sistema ens ha quedat de la següent manera:

# /etc/init.d/ipforwarding-collie start ( ens activa la sortida a internet de collie)
# /etc/init.d/ipforwarding-collie stop (ens desactiva la sortida internet de collie)

EL TROS DELICAT
El primer que hem de fer es flaixejar el sistema per posar a la rom l'OpenZaurus enlloc del Qtopia, posem la compact flash formatada amb fat i ens descarreguem els següents paquets:

L'openssh-server, que ens servirà per entrar remotament al sistema:
http://www.g1gsw.org/ftp/Zaurus/openssh-server_3.6.1p1_arm.ipk

L'entorn de treball (jo he elegit l'opie, ja que després de provar el gpe vaig arrribar a la conclusió que era més lent i bastant inestable, bootstrap es sense entorn gràfic, la qual cosa no m'interessa):
http://www.openzaurus.org/official/unstable/3.5.2/sl5000,sl5500/opie-image.rootfs.img

El kernel (n'hi ha de diferents segons com distribueix els Mbs de la rom, en aquest cas la rom estarà plena 64MB i la memòria ram totalment lliure):
http://www.openzaurus.org/official/unstable/3.5.2/sl5000,sl5500/zImage_collie-64-0
Primer de tot instal·lem l'openssh des de packagemanager i llavors des del portàtil entrem amb ssh:

# ssh root@192.168.129.101
# cp opie-image.rootfs.img /mnt/cf/initrd.bin
# cp zImage_collie-64-0 /mnt/cf/zImage

Apaguem la PDA, obrim la tapa del darrera i veurem un botó que és el reset, ara connectem l'adaptador de corrent (no fos cas que a mig flaixejar se'ns acabés la bateria) i pitgem a la vegada amb la CompactFlash insertada les tecles: c + d + botó de reset. Automàticament se'ns encendrà un llum al costat del de càrrega de bateria, això ens indicarà que hem realitzat bé l'operació, per tant esperarem un parell de minuts a que acabi de flaixejar, i sabrem que ha acabat perquè el llum s'apagarà. Tanquem la tapa i engeguem la PDA normalment, si no s'engega haurem de resetejar-la amb el botó anteriorment citat per a aquesta funció.

PASSANT EL SISTEMA A LA SD
Tornem a configurar el dispositiu de xarxa USB per tenir sortida a Internet i des del packagemanager instal·lem l'openssh-server i l'wget

# ssh ssh root@192.168.129.101

Canviarem l'identificador de la partició a Linux Native i la formatarem amb ext2

# fdisk /dev/mmcda( l'identificador per la partició és el 83 )
# mkfs.ext2 /dev/mmcda1
# wget http://mysite.verizon.net/dfsteen/rboot.tar.gz
# tar xzf rboot.tar.gz
# mount /dev/mmcda1 /mnt/card
# modify_base.sh
# install_init.sh
# copy_files.sh /mnt/card

Editarem l'fstab de la SD, canviant un parell de línies, perquè quan arrenqui munti la CF com a l'arrel del sistema:

# vi /mnt/card/etc/fstab
#/dev/mtdblock4 / jffs2 defaults 1 1
/dev/mmcda1 / ext2 defaults 1 1

Arribat aquest punt jo vaig fer un reboot.

Ara esborrem un script que munta la SD altre cop
# ssh ssh root@192.168.129.101
# rm /etc/rc2.d/sd

REMATANT LA FEINA
Des del package manager alguns paquets no s'instal·len correctament per errors de dependències amb llibreries, per solucionar el tema hem de afegir unes línies al final de ipkg.conf:

# ssh ssh root@192.168.129.101
# vi /etc/ipkg.conf
src devel http://openzaurus.org/official/unstable/3.5.2/feed/devel
src unknown http://openzaurus.org/official/unstable/3.5.2/feed/unknown

Actualitzem la llista de paquets
ipkg update

Fem un upgrade del sistema
ipkg upgrade

I mitjançant la comanda següent o bé el packagemanager (té un bug que si instal·les més de 4 paquets a la vegada peta la llista de paquets instal·lats i queda inoperatiu)
ipkg install
ipkg remove

Per ultim jo com faig servir la Linksys Wireless, he de desinstal·lar un applet que es diu opie-wirelessapplet que té un bug que no deixa adormir el sistema amb la tarja wireless inserida.

PAQUETS RECOMANATS
Els paquets que jo he instal·lat són:
xmms (reproduir mp3)
mplayer (per veure divx)
opie-sheet (un full de càlcul)
opie-writer (un processador de text)
opie-email (un client de correu)
opie-i18n-es (espero aviat poder fer les traduccions al català)
konqueror (un navegador web, es un xic molest perquè grava la cache a l'arrel del sistema)
showimg (un visor d'imatges)
opie-notes (un applet que permet anotar notes com si fos en un postit)
kopi i kapi (son el korganizer i el kaddressbook que utilitzarem per sincronitzar amb els del PC)

SINCRONITZACIÓ
-Instal·lar el kapi (kaddressbook) i el kopi (korganizer) al zaurus
-Instal·lar l'openssh al zaurus desinstal·lant el dropbear
-Crear claus ssh al zaurus: ssh-keygen -t dsa (sense password)
-Copiar la clau al portàtil:
scp id_dsa.pub usuari_portàtil@192.168.129.202:/home/usuari/.ssh/authorized_keys
-Dins el kopi o el kapi:
Synchronize -> Configure... -> New profile -> Posar-hi un nom
Clicar a ssh/scp perquè empleni els camps amb els valors per defecte i llavors modificar-ho segons la nostra configuració

CARREGAR ELS MODULS DE LA XARXA USB
Quan adormim la Zaurus, es descarreguen els mòduls que permeten la connexió usb amb el PC a través de l'usbnet. Aquest és un script per carregar-los un cop l'hem despertada:

#!/bin/sh
/sbin/rmmod sa1100_bi
/sbin/rmmod net_fd
/sbin/rmmod usbdcore
/sbin/insmod /lib/modules/2.4.18-rmk7-pxa3-embedix/kernel/drivers/usb/device/usbdcore.o
/sbin/insmod /lib/modules/2.4.18-rmk7-pxa3-embedix/kernel/drivers/usb/device/net_fd/net_fd.o
/sbin/insmod /lib/modules/2.4.18-rmk7-pxa3-embedix/kernel/drivers/usb/device/bi/sa1100_bi.o

Per últim dir que en aquest article hi ha col·laborat en pelli i que esperem que pugui ser útil.

Ja tenim la nove versió 3.5.3

Openzaurus 3.5.3 disponible

Bones, soc l'Agus (problemes) no se que pasa amb el meu correu, acabo d'instal·lar la UBUNTU i tinc d'arreglar les petites coses de sempre, una es el correu.

I ja la he instal·lat la nova versió de Openzaurus.

De moment ja tinc l'arrel a la SD i he aconseguit connectar a internet fent servir el port USB, pero no com explica en David. Ara ho comento.

Instal·lació a la SD

Desprès d'introduir la nova ROM, he anat a buscar un paquet de fitxés que automatitzen totes les funciones, més fàcil impossible.

El vaig trobar a

http://openembedded.org/oe_wiki/index.php/How%20to%20se%20up%20OpenZaurus%20with%20SD%20card%20as%20root%20filesystem

Perdoneu pels links, però no se fer-ho d'altre manera, i no serà per que no m'ho han explicat. :)

Els arxius son a http://www.oxstone.com/Z_move_root_to_sdcard/ , però estan fets per les versions anteriors, així que he tingut de fer alguna modificació.

fitxer fstab

/dev/mmcda1 / ext2 defaults,noauto,noatime 1 1
/dev/mtdblock4 /media/realroot jffs2 defaults,noauto,noatime 1 1
/dev/hda1 /media/cf auto defaults,sync,noauto,noatime, user,exec,suid,gid=100,umask=0002 0 0
proc /proc proc defaults 0 0
tmpfs /var tmpfs defaults 0 0

# we use a non-volatile ramdisk, see /etc/init.d/ramdisk
#tmpfs /mnt/ram tmpfs defaults 0 0
/dev/hda1 auto defaults 0 0

fitxer move_root_to_sd.sh

# For Official OZ 3.5.3 ROM with Opie
# SD must be formatted in ext2 and inserted/blank
# Adapted by Gilug.org

rm -fr /media/card/*
cp /media/cf/proot /etc/init.d/proot
chmod 755 /etc/init.d/proot
rm /etc/resolv.conf
cp /media/cf/resolv.conf /etc
chmod 644 /etc/resolv.conf
cp /media/cf/hostname /etc
cp /media/cf/fstab /etc/fstab
chmod 644 /etc/fstab
mv /etc/rcS.d/S01devices /etc/rcS.d/S03devices
cd /etc/rcS.d
ln -s ../init.d/proot S02proot
cd / ; tar cvf - bin boot etc home lib mnt opt sbin sys tmp usr | tar xpf - -C /media/card
cd /media/card ; mkdir -p var proc dev media/cf /media/net /media/ram /media/realroot /media/hdd /media/union
rm /media/card/etc/rc*.d/*sd
touch /media/card/.bootme
mkdir -p /media/card/media/realroot
reboot
( Una mica de publicitat :) )

fitxer proot

#!/bin/sh
#
# proot - pivot_root
# Adapted by Gilug.org

. /etc/default/rcS

vtmaster=/dev/tty0

if test ! -b /dev/mmcda1 ; then
/bin/mount -o remount,rw / > $vtmaster
/bin/mknod /dev/mmcda1 b 60 1 > $vtmaster
/bin/mount -o remount,ro / > $vtmaster
fi

/sbin/modprobe sharp_mmcsd_m 2> $vtmaster
#/sbin/e2fsck -y /dev/mmcda1
/bin/mount -n -t ext2 -o defaults,noatime /dev/mmcda1 /media/card

if test -f /media/card/.bootme ; then
echo "from SD" > $vtmaster
/sbin/pivot_root /media/card /media/card/media/realroot > $vtmaster
else
echo "from internal flash" > $vtmaster
/bin/umount -n /media/card
fi

I ja està, posem els fitxes ( fstab, move_root_to_sd.sh, proot, hostname, resolv.conf ) a l'arrel de la nostra compact Flash i donem atributs execució “chmod +x” al move .... i al proot.

A continuació executem , amb la CF a la PDA i amb la SD formatejada amb ext2, move_roo_to_sd.sh i es deixa fer. Ella mateixa reiniciarà amb tot ja fet.

Sortida de Xarxa per la Zaurus

Doncs per sortir a la xarxa, he trobat aquest scrip

http://lists.ubuntu.com/archives/ubuntu-es/2004-November/001181.html
I l'he adequat a les meves necessitats , o sigui, eth0 es la targeta del meu PC i usb0 per on es connecta la meva zaurus.

#!/bin/bash
# Carreguem el modul NAT.
modprobe iptable_nat

iptables --flush
iptables --table nat --flush

# Activarem el NAT amb enmascarament en les regles de iptables:
iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE
iptables --append FORWARD --in-interface usb0 -j ACCEPT

# Posarem en marxa el reenviament de IP (IP forwarding)
echo 1 > /proc/sys/net/ipv4/ip_forward

També instal·lo l'scrip a /etc/init.d , li donem atributs de execució chmod +x , executem i ja ho tenim tot en marxa.

A pasar-ho be.

De conya! :)

Bones,

merci per la modificació de l'script, amb això quasi funciona correctament. La pega que li he trobat és que moltes vegades quan s'adorm mitjançant el botó On/Off no es desperta.
Per solucionar això tenint el sistema instal·lat a la flash interna es pot modificar el fitxer /etc/device_table i comentar la línia on apareix /dev/apm_bios, però si ho fem amb el sistema instal·lat a la sd llavors no hi ha manera d'adormir-lo perquè no crea el /dev/apm.

Alguna solució? (a part de no fer servir el botó On/Off :P)

salut!

Funciona

Bones pelli, soc l'Agus, doncs com tu dius, comentant la linia on apareix /dev/apm_bios a l'arxiu /etc/device_table queda solucionat el problema.

No ho sabia, hi porto jugant a suspendre i despertar la Z unes "quantes moltes vegades", amb el botó On/Off, i ja no es penja.

Peró ja no fa la suspensió automàtica, ara fa un joc de llums que te en conta la configuració dels temps de l'estavi d'energia.

Zeguimoz tabajando, lez mantendremoz infolmadoz.

Salut!


Warning: Table './gilugbitac/accesslog' is marked as crashed and last (automatic?) repair failed query: INSERT INTO accesslog (title, path, url, hostname, uid, sid, timer, timestamp) values('', 'node/238', '', '172.16.8.20', 0, '3lj4u369gedtmpuuphndkmcor0', 67, 1711695974) in /srv/www/gilug.org/www/site.tree/public/includes/database.mysql.inc on line 136