![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Reparar una telecancela con una partición jffs2 llena (que no deja borrar ficheros)Procedimiento que se ha seguido para reparar una telecancela de tribunal que tenía la partición jffs2 llena por un fichero /home/smp/LSTCOND.SMP que no debería estar ahí y no se podía borrar (mtdblock1 montado en /var con sistema de archivos jffs2).Resulta que jffs2 no permite borrar ficheros una vez que el sistema de archivos está lleno por lo que la única solución es reformatear la partición. Este procedimiento guarda los datos existentes (quitando el fichero problemático) y crea una nueva partición con esos datos, que a continuación se flashea en el equipo. 1. En uiharu, como root, se instala el paquete que contiene el mkfs.jffs2 y se instala el driver jffs2: apt-get-get install mtd-utils modprobe jffs2 2. Se obtienen los datos actuales de la partición; suponiendo que la telecancela está en la red de SICO en la ip 3.0.1.221, en uiharu (3.0.1.3) como usuario dario, se hace: mkdir -p /src/telecancela-tribunal-fix-jffs2 cd /src/telecancela-tribunal-fix-jffs2 socket-upipe-server 10000 > mtdblock1_without_SMP.tgz # dejamos esta ventana abierta esperando los datos 3. una ventana diferente, en la telecancela (3.0.1.221, entras con telnet y te haces root), como root: cd /tmp # hacemos un ftp a salchicha para coger el socket-upipe ftp 3.0.1.170 # pones usuario y password de ftp en salchicha, p.ej. dario y la password correspondiente bin cd /usr/local/bin get socket-upipe-client get socket-upipe-server quit # fin del ftp chmod a+x socket-upipe-client socket-upipe-server mkdir t mount --bind /var /tmp/t tar -cpf - --exclude ./home/smp --exclude ./home/smp/LSTCOND.SMP . | gzip -1 | ../socket-upipe-client 3.0.1.3 10000 cd .. umount t ps -efa | sed "s/^ *//g" | grep "reiniciar\|montarNFS\|home\|sleep" | cut -d ' ' -f 1 | tr '\n' ' ' | xargs kill -9 sleep 2 ps -efa | sed "s/^ *//g" | grep "reiniciar\|montarNFS\|home\|sleep" | cut -d ' ' -f 1 | tr '\n' ' ' | xargs kill -9 mount -o remount,ro /var ./socket-upipe-server 10000 | dd of=/dev/mtdblock1 bs=16384 # Se queda esperando datos para sobrescribir la partición jffs2 4. El terminal de (2) ya debe haberse salido del socket-upipe-server al recibir los datos. En uiharu, como root: cd /src/telecancela-tribunal-fix-jffs2 mkdir t cd t tar -xvzpf ../mtdblock1_without_SMP.tgz cd .. mkfs.jffs2 --root=t --output=mtdblock1.raw.new --eraseblock=0x20000 --little-endian --no-cleanmarkers --pad=1441792 cat mtdblock1.raw.new | socket-upipe-client 3.0.1.221 10000 5. El terminal de (3) ya debe haber puesto otra vez el prompt del shell al haber terminado de recibir los datos; sólo falta reiniciar la telecancela. En la telecancela (3.0.1.221), como root: reboot NOTA: Se ha utilizado información de aquí para construir la orden de mkfs.jffs2. Attachs (apuntes de cuando se hizo este procedimiento en tribunal)como.txtdonde.txt create-jffs2.sh history.txt history uiharu 01 usuario.txt history uiharu 02 root.txt mtdblock1 without SMP.tgz proc-mtd.txt |