View this PageEdit this PageUploads to this PageVersions of this PageHomeRecent ChangesSearchHelp Guide

Servidor de TCTI (main1, tcti, rtcti, tctiv, rtctiv) y servidores de estacion




Tuesday, 22 October 2019, 10:53:41 am
Actualizo la config de logs en tctiv y rtctiv Se hacen los siguientes cambios en ttctiv y rtctiv:
1. Se pone el
 export LOGPRODUCCION_ROTATE="7;gz;gzip -f %s"
En el /etc/init.d/sico_tctiserver (estaba en un script en ~/tctiserver/tctiserver que a su vez llamaba al tctiserver.real) y se renombra el tctiserver.real a tctiserver
2. Se añaden al /etc/hosts las ips de los equipos tctiv/rtctiv junto con sus hostnames:
16.0.62.62      tctiservervirtaar
16.2.62.62      tctiservervirtpsur

3. Se reinicia el servicio
 /etc/init.d/sico_tctiserver stop ; /etc/init.d/sico_tctiserver start
4. Se comprueba con un "tail -f /home/metro/tctiserver/tctiserver.log" que todo sigue funcionando bien.

Wednesday, 25 July 2018, 11:22:33 am
Pasos realizados para actualizar un tcti de estación de jessie a stretch e instalar los paquetes de lxc

Primero actualizamos a la última versión de jessie:
ping www.google.com
ntpdate hora.rediris.es
/etc/init.d/hwclock.sh stop
apt-get update
sed -i "/ftp.*debian.org/d" /etc/hosts
apt-get update
apt-get dist-upgrade
cat /etc/debian_version 
reboot


Y ahora actualizamos a stretch
cd /etc/apt/
sed -i "s/jessie/stretch/g" sources.list
apt-get update
apt-get dist-upgrade
cd /var/cache/apt/archives/
scp dario@3.0.1.3:/var/cache/apt/archives/firmware*real*deb .
dpkg -i firmware-realtek_20170823-1~bpo9+1_all.deb 
apt-get install lua-lxc lxc lxc-tests lxcfs lxctl
reboot


NOTA: en mendez álvaro también añadí "contrib" y "non-free" al sources.list, pero en principio eso no era necesario.

Wednesday, 25 July 2018, 10:56:47 am
Instalo el tctiserver en tctiv y rtctiv Pasos realizados:

1. Instalamos el vim (en este caso ya estaba instalado, pero nos aseguramos)
 apt-get install vim

2. Hacemos que el vim soporte el pegar con el botón de enmedio (tanto como usuario root como usuario metro)
 ~/.vimrc
syntax on
set shiftwidth=8
filetype plugin indent on
set tabstop=8
if has("autocmd")
        " Use actual tab chars in Makefiles.
        autocmd FileType make set tabstop=8 shiftwidth=8 softtabstop=0 noexpandtab
        " Use spaces in c and h files
        autocmd FileType c set expandtab
        autocmd FileType cpp set expandtab
endif
set clipboard=unnamedplus


3. Añadimos al /etc/ssh/sshd_config el que use los algoritmos para que se l pueda entrar desde main1:
Ciphers aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,aes256-cbc
KexAlgorithms curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1


4. Reiniciamos el ssh y añadimos a main1 al authorized_keys
/etc/init.d/ssh restart
sudo -u metro "ssh metro@16.0.62.18 'cat .ssh/rds_id.pub' >> /home/metro/.ssh/authorized_keys"


5. Añadimos la script de arrancar/parar el tcti
 /etc/init.d/sico_tctiserver
#!/bin/bash
# /etc/init.d/tctiserver_sico: Start tctiserver
#
# written by Dario Rodriguez <dario@softhome.net>

### BEGIN INIT INFO
# Provides:          tctiserver
# Provides:         
# Required-Start:    $remote_fs $syslog
# Required-Stop:
# Should-Start:      
# Default-Start:     S
# Default-Stop:
# Short-Description: Start tctiserver
# Description:  Start tctiserver
### END INIT INFO

if [ "m`whoami`" == "mroot" ] ; then
        exec sudo -u metro $0 "$@"
        exit 1
fi
#if [ "m$1" == "mstop" ] || [ "m$1" == "mrestart" ] ; then
        ps -efa | grep "tcti[s]erver" | grep -v "sico_tctiserver" | sed "s/  */ /g" | cut -d ' ' -f 2 | xargs kill 2>/dev/null >/dev/null
        if [ "m$1" == "mstop" ] ; then
                exit 0
        fi
#fi

KEEPLOG=60
if [ -e /home/metro/tctiserver/tctiserver.log ] ; then
        cd /home/metro/tctiserver/logs
        for i in `seq 0 $KEEPLOG | tac` ; do
                if [ -e tctiserver.log.$i ] ; then
                        mv tctiserver.log.$i tctiserver.log.$(( $i + 1 ))
                fi
        done
        mv /home/metro/tctiserver/tctiserver.log tctiserver.log.0
fi
cd /home/metro/tctiserver
rm nohup.out
export TCTISERVER_PORTOFFSET=10
nohup ./tctiserver_relaunch &
nohup ./tctiserverfwloc_relaunch 16.2.80.35 10003 &


6. Activamos la script
chmod 755 /etc/init.d/sico_tctiserver
systemctl daemon-reload 
systemctl enable sico_tctiserver
systemctl stop sico_tctiserver


7. Instalamos la aplicación
cd /home/metro
mkdir -p tctiserver/logs/../../backups
cd tctiserver
ssh metro@16.0.62.18 "cd /incoming/tctiserver.x86_64 && tar -cvf - ." | tar -xvf -
cd ..
chown -R metro:metro tctiserver backups


8. Arrancamos la aplicación
systemctl start sico_tctiserver
systemctl status sico_tctiserver


Tuesday, 7 February 2017, 8:57:17 am
Instalo el unzip en tctiservermoncloa y tctiserverpsur Para poner poner el getversion.sh en el directorio files de tctiserver (el getversion.sh usa el unzip/zipgrep para obtener la versión del tcm2-debug.apk). Pasos realizados:
cd /var/cache/apt/archives/
mount -o remount,rw / 
scp metro@16.0.62.18:/incoming/unzip_6.0-4_i386.deb .
dpkg -i unzip_6.0-4_i386.deb
mount -o remount,ro /


Monday, 16 January 2017, 9:49:36 am
Instalo el tctiserverfwloc en tctiservermoncloa y lo pongo en los ficheros de arranque
1) Para instalarlo
Como dario, en salchicha:
cd /home/dario/Programacion/proyectos/sico-tctiserverfwloc
scp tctiserverfwloc metro@16.0.62.18:/tmp/


Como metro, en tctiserevrmoncola:
cd ~/tctiserver
scp metro@16.0.62.18:/tmp/tctiserverfwloc .
cp tctiserver_relaunch tctiserverfwloc_relaunch
sed -i "/tctiserverfwloc/d" restart.sh
sed -i 's/erver" *$/erver" | grep -v fwloc/g' restart.sh
sed -i '/tctiserver_relaunch/a(nohup ./tctiserverfwloc_relaunch 16.2.80.35 10003 & )2>/dev/null' restart.sh


como root, en tctiservermoncloa:
mount -o remount,rw /
sed -i "/tctiserverfwloc/d" /etc/init.d/sico_tctiserver
echo "nohup ./tctiserverfwloc_relaunch 16.2.80.35 10003 &" >> /etc/init.d/sico_tctiserver
mount -o remount,ro /



Thursday, 21 July 2016, 9:04 am
Hago una copia en nas del disco flash de tctiservermoncloa

Está en:

 3.0.1.46:/sharedunix/chroots/tctiservermoncloa_20160721-1.sda.gz

Thursday, 21 July 2016, 8:48:48 am
Rehacer el repositorio de hdd.tgz de formatear/regenerar el HDD en tctiservermoncloa/tctiserverpsur (tcti/rtcti)
Como root:
cd /media/hdd
tar -cvzf /tmp/hdd.tgz tctiserver/tctiserver tctiserver/loctable.bin \
  tctiserver/logs/dummy tctiserver/planos_*.bin tctiserver/restart.sh \
  tctiserver/tctiserver.bin tctiserver/tctiserver.compat \
  tctiserver/tctiserver.squeeze tctiserver/tctiserver_relaunch \
  tctiserver/locclient
cd /root
ls -l hdd.tgz ; mount -o remount,rw / ; cp /tmp/hdd.tgz . ; mount -o remount,ro / ; ls -l hdd.tgz


Wednesday, 20 July 2016, 11:44:43 am
Saber la última localizacion de cada MAC

En tcti:~/tctiserver
rm -f /tmp/mac2.txt
grep "alarminfo\|id " tctiserver.log | grep '@' | sed "s/id \([^ ]*\) \([^ ]*\)/\2 \1/g" | \
  cut -d '@' -f 2 | cut -d ' ' -f 1,2 | sed "s/^\([^ ]*\) \(.*\)/\2 \1/g" | sort | uniq | \
  cut -d ' ' -f 1 | uniq > /tmp/mac2.txt
echo "#`date`" ; echo "#name,mac,apmac" ; for i in `cat /tmp/mac2.txt ` ; do \
  grep $i auth_*.cfg | expand | grep -v ^# | head -1 | \
  sed "s/  */ /g" | cut -d ' '  -f 3 | tr '\n' ','; grep "$i" /tmp/mac.txt | \
  grep "alarminfo\|id " | grep '@' | tail -1 | sed "s/id \([^ ]*\) \([^ ]*\)/\2 \1/g" | \
  cut -d '@' -f 2 | cut -d ' ' -f 1,2 | sed "s/^\([^ ]*\) \(.*\)/\2 \1/g" |tr ' ' ','; done


El resultado es algo así como
#mié jul 20 11:45:17 CEST 2016
#name,mac,apmac
s5.1003mcristal,84:38:38:96:29:c8,00:3a:98:49:59:f1
s5.1003aeropuerto,84:38:38:96:2a:16,00:3a:98:49:3e:a1
s5.1002cnaciones,84:38:38:96:35:59,00:3a:98:49:53:51
s5.1004barajas,84:38:38:a3:57:5f,00:3a:98:49:40:d1
samsungs5sico,ec:1f:72:5c:10:e6,d8:b1:90:45:5a:ae


Tuesday, 28 June 2016, 9:04:16 am
Localizaciones MAC a fecha de 20160628
En tcti se ha hecho lo siguiente:
cd ~/tctiserver/logs
mkdir t
for i in tctiserver.log.* ; do grep 'alarminfo\|id' $i | grep '@' > t/mac.$i ; done
cd t
grep "alarminfo\|id " * | grep '@' | sed "s/id \([^ ]*\) \([^ ]*\)/\2 \1/g" | cut -d '@' -f 2 | cut -d ' ' -f 1,2 | sed "s/^\([^ ]*\) \(.*\)/\2 \1/g" | sort | uniq | tee result.txt
cd ~/tctiserver
for i in `cat logs/t/result.txt | cut -d ' ' -f 1 | sort | uniq` ; do ( grep $i auth_*.cfg | grep -v "^#" ; echo "???" ) | head -1 | cut -d ' ' -f 3 ; grep $i logs/t/result.txt ; echo "" ; done


El resultado:

samsungs5formacion
84:38:38:96:29:c5 00:18:18:f4:ef:c1
84:38:38:96:29:c5 00:1e:4a:33:0f:f1
84:38:38:96:29:c5 00:23:04:f3:30:01
84:38:38:96:29:c5 00:24:14:12:50:71
84:38:38:96:29:c5 00:3a:99:55:24:21

s5.1003mcristal
84:38:38:96:29:c8 00:11:20:ef:d7:71
84:38:38:96:29:c8 00:19:aa:77:0d:f1
84:38:38:96:29:c8 00:1a:2f:80:12:41
84:38:38:96:29:c8 00:1b:90:77:9f:f1
84:38:38:96:29:c8 00:21:55:4f:0f:c1
84:38:38:96:29:c8 00:24:50:11:50:41
84:38:38:96:29:c8 00:3a:98:31:d5:41
84:38:38:96:29:c8 00:3a:98:34:20:e1
84:38:38:96:29:c8 00:3a:98:49:4c:81
84:38:38:96:29:c8 00:3a:98:49:53:21
84:38:38:96:29:c8 00:3a:98:49:59:f1

s5.1003aeropuerto
84:38:38:96:2a:16 00:1c:57:8b:c8:d1
84:38:38:96:2a:16 00:23:5e:1d:b3:31
84:38:38:96:2a:16 00:3a:98:49:3e:a1
84:38:38:96:2a:16 00:3a:98:49:3e:b1
84:38:38:96:2a:16 00:3a:98:49:40:d1
84:38:38:96:2a:16 00:3a:98:49:41:a1
84:38:38:96:2a:16 00:3a:98:49:5c:11
84:38:38:96:2a:16 b0:7d:47:af:6c:61
84:38:38:96:2a:16 d8:b1:90:34:8e:21
84:38:38:96:2a:16 d8:b1:90:3c:b6:11
84:38:38:96:2a:16 d8:b1:90:3c:b6:1e
84:38:38:96:2a:16 d8:b1:90:3c:cc:7e
84:38:38:96:2a:16 d8:b1:90:41:af:ee
84:38:38:96:2a:16 d8:b1:90:45:3b:01

s5.1002cnaciones
84:38:38:96:35:59 00:3a:98:49:40:71
84:38:38:96:35:59 00:3a:98:49:41:81
84:38:38:96:35:59 00:3a:98:49:45:81
84:38:38:96:35:59 00:3a:98:49:53:51
84:38:38:96:35:59 00:3a:98:49:5a:b1

???
84:38:38:96:35:7e 00:13:80:11:ed:d1
84:38:38:96:35:7e 00:18:18:f4:ef:c1
84:38:38:96:35:7e 00:19:56:e0:1b:51
84:38:38:96:35:7e 00:1e:7a:19:ad:01
84:38:38:96:35:7e 00:3a:98:34:2e:21

s5.1004barajas
84:38:38:a3:57:5f 00:1c:57:8b:c8:d1
84:38:38:a3:57:5f 00:3a:98:49:3e:a1
84:38:38:a3:57:5f 00:3a:98:49:3e:b1
84:38:38:a3:57:5f 00:3a:98:49:40:d1
84:38:38:a3:57:5f 00:3a:98:49:41:a1
84:38:38:a3:57:5f 00:3a:98:49:46:b1
84:38:38:a3:57:5f 00:3a:98:49:5c:11

s5.70997mcristal
84:38:38:b4:60:43 00:18:18:f4:ef:c1
84:38:38:b4:60:43 00:23:04:f3:30:01

samsungs5sico
ec:1f:72:5c:10:e6 00:00:00:00:00:00
ec:1f:72:5c:10:e6 00:11:20:ef:d7:71
ec:1f:72:5c:10:e6 00:19:aa:77:0d:f1
ec:1f:72:5c:10:e6 00:1b:90:77:9f:f1
ec:1f:72:5c:10:e6 00:21:55:4f:0f:c1
ec:1f:72:5c:10:e6 00:3a:98:31:d5:41
ec:1f:72:5c:10:e6 00:3a:98:34:20:e1
ec:1f:72:5c:10:e6 00:3a:98:49:4c:81
ec:1f:72:5c:10:e6 00:3a:98:49:53:21
ec:1f:72:5c:10:e6 00:3a:98:49:59:f1


Tuesday, 7 June 2016, 11:44:42 am
Ver la localización (MAC del AP) de un terminal

En el tcti (o rtcti), se hace lo siguiente:
cd ~/tctiserver
grep "alarminfo\|id " tctiserver.log | grep '@' | sed "s/id \([^ ]*\) \([^ ]*\)/\2 \1/g" | cut -d '@' -f 2 | cut -d ' ' -f 1,2 | sed "s/^\([^ ]*\) \(.*\)/\2 \1/g" | sort | uniq


por ejemplo, el resultado de dicho comando es (Mac terminal, mac AP):

MCRISTAL
84:38:38:96:29:c8 00:19:aa:77:0d:f1
84:38:38:96:29:c8 00:1b:90:77:9f:f1
84:38:38:96:29:c8 00:21:55:4f:0f:c1
84:38:38:96:29:c8 00:3a:98:31:d5:41
84:38:38:96:29:c8 00:3a:98:34:20:e1
84:38:38:96:29:c8 00:3a:98:49:4c:81
84:38:38:96:29:c8 00:3a:98:49:53:21
84:38:38:96:29:c8 00:3a:98:49:59:f1


CNACIONES
84:38:38:96:35:59 00:3a:98:49:40:71
84:38:38:96:35:59 00:3a:98:49:41:81
84:38:38:96:35:59 00:3a:98:49:45:81
84:38:38:96:35:59 00:3a:98:49:53:51



Thursday, 12 May 2016, 9:14:25 am
Poner el gdb temporalmente en los tcti de estación (los nuevos, es decir debian 8.0 amd64, 64 bit, x86_64) He hecho un tar con los ficheros necesarios para poder arrancar el gdb desde el /tmp. Procedimiento realizado para hacer el tar:
cd /tmp/
mkdir gdb-tcti
mkdir t
cd t
wget http://ftp.de.debian.org/debian/pool/main/g/gdb/gdb_7.7.1+dfsg-5_amd64.deb
wget http://ftp.de.debian.org/debian/pool/main/r/readline6/libreadline6_6.3-8+b3_amd64.deb
wget http://ftp.de.debian.org/debian/pool/main/n/ncurses/libncurses5_5.9+20140913-1+b1_amd64.deb
wget http://ftp.de.debian.org/debian/pool/main/n/ncurses/libtinfo5_5.9+20140913-1+b1_amd64.deb
wget http://ftp.de.debian.org/debian/pool/main/p/python2.7/libpython2.7_2.7.9-2_amd64.deb
wget http://ftp.de.debian.org/debian/pool/main/e/expat/libexpat1_2.1.0-6+deb8u1_amd64.deb
wget http://ftp.de.debian.org/debian/pool/main/x/xz-utils/liblzma5_5.1.1alpha+20120614-2+b3_amd64.deb
for i in *deb ; do ar x $i ; tar -xvf data* ; rm -f data* ; done
cp usr/lib/x86_64-linux-gnu/lib* ..
cp lib/x86_64-linux-gnu/lib* ..
cp usr/bin/gdb ..
cd ..
rm -rf t
rm libexpat.so.1.6.0
rm libexpatw.so.1.6.0 libhistory.so.6.3 libform.so.5.9 liblzma.so.5.0.0 libmenu.so.5.9 libncurses.so.5.9 libpanel.so.5.9 libreadline.so.6.3 libtic.so.5.9 libtinfo.so.5.9
rm libpython2.7.so.1
echo '#!/bin/bash' > gdb.sh
echo 'export LD_LIBRARY_PATH=.' >> gdb.sh
echo 'exec ./gdb "$@"' >> gdb.sh
chmod 755 gdb.sh
tar -cvf gdb-tcti.tar gdb gdb.sh lib*


El tar resultante es este: gdb-tcti amd64.tar

He dejado una copia del tar en:
 main1:/incoming/gdb-tcti amd64.tar

Wednesday, 25 November 2015, 10:54:40 am
Sobre las estaciones tcti con soporte android 5 Hemos puesto
metro: mailbolitren
root: correopentrain

Wednesday, 12 June 2013, 6:00:48 pm
Actualización de tctiservermoncloa y tctiserverpsur Usando el fichero de update, el procedimiento ha sido:
metro@manten01:/incoming$ scp update-tctiserver_20130607.tgz tcti:/tmp/
metro@manten01:/incoming$ ssh root@tcti
root@tctiservermoncloa:~# cd /
root@tctiservermoncloa:/# ps -efa | grep tcti | grep "re[l]aunch" | sed "s/  */ /g" | cut -d ' ' -f 2 | xargs kill
root@tctiservermoncloa:/# mount -o remount,rw /
root@tctiservermoncloa:/# tar -xvzf tmp/update-tctiserver_20130607.tgz 
root@tctiservermoncloa:/# update-grub2 
root@tctiservermoncloa:/# mount -o remount,ro /
root@tctiservermoncloa:/# cd /media/hdd/
root@tctiservermoncloa:/media/hdd# tar -xvzf /root/hdd.tgz 
root@tctiservermoncloa:/media/hdd# reboot


Friday, 7 June 2013, 7:06:51 pm
Ya está listo el nuevo maestro de tctiserver Hay una copia (que se puede escribir con un dd en un disco) en:
 seraphim:/backups/tctiserver/tctiservermaestro_20130607.sda.bz2

También hay un .tgz con la actualización que hay que hacer en los equipos en campo (tctiservermoncloa y tctiserverpsur) para que sea igual al maestro:
 seraphim:/backups/tctiserver/update-tctiserver_20130607.tgz

La actualización contiene:
  • Las configuraciones de tctiservermoncloa y tctiserverpsur
  • Los menús y scripts para reconfigurar el disco desde el GRUB
  • El hdd.tgz con la última versión del tctiserver (los ficheros de configuración no han cambiado). Esta versión es la que soporta descarga de .apk usando http
  • La configuración del ntpdate

FALTA (no es importante): Cuando hice el disco (ver entrada del "Wednesday, 29 August 2012, 7:17:52 pm"), puse un espacio de más en la línea
 sed -i "s/^HWCLOCKPARS=/HWCLOCKPARS= --noadjfile /g" /etc/init.d/hwclockfirst.sh  /etc/init.d/hwclock.sh
Sobra el espacio entre "HWCLOCKPARS=" y el "--noadjfile", habría que editar de nuevo el /etc/init.d/hwclockfirst.sh y el /etc/init.d/hwclock.sh

Monday, 20 May 2013, 11:06:27 am
Implementar custom menus en grub2 Documentación de Grub CustomMenus y SubMenus.

Tuesday, 14 May 2013, 7:26:27 pm
Maestros de tctiserver (tctiservermoncloa y tctiserverpsur) Hay dos imágenes de disco generadas el 14/05/2013 en
 seraphim:/backups/tctiserver/tctiservermoncloa.sda.bz2
 seraphim:/backups/tctiserver/tctiserverpsur.sda.bz2

Lo único es que están configuradas para tener como peer master a main1.

Han sido generadas haciendo lo siguiente:
1. en main1
 cd /incoming/tctiserver.peers
 socket-upipe-server 10010 | bzip2 -1 > nombreimagen.sda.bz2
2. en el tcti/rtcti, como root
 scp metro@16.0.62.18:/usr/local/bin/socket-upipe-client /tmp
 /tmp/socket-upipe-client 16.0.62.18 10010  /dev/sda

Para generar el hdd.tgz que está en las imágenes en /root/hdd.tgz (contiene las configuraciones que se ponen cuando se hace un disco nuevo con /root/format_hdd.sh ), se colocan los ficheros nuevos /incoming/tctiserver.peers/tctiserver y después, todavía en main1:
 cd /incoming/tctiserver.peers
 tar -cvzf hdd.tgz tctiserver

NOTA: la pass de root en tcti/rtcti es "tctiroot".

NOTA2: Para generar a imagen de rtcti, como está con cosas de pruebas en estos momentos, se hace lo siguiente:
1. hay que mover /root/test a /tmp (y después volverlo a poner en su sitio)
2. quitar el "exit 0" de /etc/rcS.d/S37sico_tctiserver (y después volverlo a poner)
En decir:
rtcti# mount -o remount,rw /
rtcti# cd /root
rtcti# mv test /tmp
rtcti# vi /etc/rcS.d/S37sico_tctiserver # y quitar el exit 0
rtcti# mount -o remount,ro /
rtcti# /tmp/socket-upipe-client 16.0.62.18 10010 < /dev/sda
rtcti# mount -o remount,rw /
rtcti# mv /tmp/test /root/
rtcti# vi /etc/rcS.d/S37sico_tctiserver # y poner otra vez el exit 0
rtcti# mount -o remount,ro /


Thursday, 30 August 2012, 7:47:20 pm
Preparar un nuevo disco de tctiserver desde el maestro genérico

1. Se copia el maestro, para eso se arranca el maestro normalmente teniendo pinchado el "nuevo" en sdb, se entra como root y se hace:
 dd if=/dev/sda of=/dev/sdb bs=16384

2. Se arranca el nuevo disco normalmente

3. Se entra remotamente a él, como root (ssh root@3.0.1.4)

4. Se pone el disco en rw:
 mount -o remount,rw /

5. Se cambia el nombre
 sed -i s/prototipotctiserver/tctiserver_psur/g /etc/hosts /etc/hostname

6. Se pone la ip correcta, tanto en el hosts como el /etc/network/interfaces:
 vi /etc/hosts
 vi /etc/network/interfaces

7. Se remonta como ro y listo
 mount -o remount,ro /


Wednesday, 29 August 2012, 7:17:52 pm
Pasos seguidos para hacer el prototiposervidortcti (mestro) Se h seguido el siguiente procedimiento:
1. Se ha instalado Debian Squeeze 6.0.5 i386 en el DOM de 1GB, poniendo como partición RAIZ sda1 "ext4 con un 70% del disco, marca de arranque activada y opciones readonly, noatime", y particion HOME sda5 "ext4 con el resto del disco y opciones readonly, relatime". Como replica de Debian, he usado la de Alemania.

2. En el tasksel sólo se ha puesto SSH server (desmarcado lo de utilidades normales".

3. Se ha reiniciado

4. En el meú de grub, se ha editado la entrada y se ha añadido a la línea de "linux... ...quiet ro" un " single" para que arranque en modo singleúser

5. Se pone la passwrd de root para entrar.

6. Se arranca el sshd con un /etc/init.d/ssh start

7. Se monta el disco en rw
 mount -o remount,rw /

8. Se borra el nologin
 rm /etc/nologin

9. Se crea el fichero /sbin/init-ro con el siguiente contenido:
#!/bin/bash
DIRS="/tmp /var/log /var/run /var/lock /var/tmp /var/lib/urandom /var/lib/dhcp /etc/network/run"
for DIR in $DIRS; do
  echo "Mounting $DIR as tmpfs"
  mount -n -t tmpfs tmpfs $DIR
  if [ -d "$DIR-saved" ]; then
    echo "Restoring $DIR-saved to $DIR"
    tar -C "$DIR-saved" -cf - ./ | tar -C "$DIR" -xpf -
  fi
done

#echo "nameserver 4.2.2.1" > /var/tmp/resolv.conf
#touch /var/lib/dhcp/dhcpd.leases

exec /sbin/init


10. Se pone los permisos de ejecución al nuevo script:
 chmod a+x /sbin/init-ro

11. Se edita el menú de grub, editando el fichero /etc/grub.d/10_linux y añadiendo un "init=/sbin/init-ro" a la línea de "linux ${rel_dirname}...", quedando:
 linux   ${rel_dirname}/${basename} root=${linux_root_device_thisversion} ro ${args} init=/sbin/init-ro

12. Se ejecuta grub-mkconfig para qu coja las nuevas opciones del grub (y por si acaso, se hace también a mano primero):
sed -i "s:\( ro .*quiet\):\1 init=/sbin/init-ro:g" /boot/grub/grub.cfg
grub-mkconfig


13. Se prepara el directorio de /var/run-saved para qu funcione el sshd bien
 mkdir -p /var/run-saved/sshd
 rm /var/run/*
 rmdir /var/run/sshd

14. Se hacen los arreglos varios que se hacían en el ejemplo del dockstar:
export ROOT=
sed -i 's/\/etc\/resolv.conf/\/var\/tmp\/resolv.conf/' $ROOT/sbin/dhclient-script > /dev/null 2>&1
rm $ROOT/etc/resolv.conf
ln -s /var/tmp/resolv.conf $ROOT/etc/resolv.conf
rm -rf $ROOT/etc/network/run
ln -s /var/tmp/network $ROOT/etc/network/run
rm $ROOT/etc/blkid.tab  > /dev/null 2>&1
ln -s /dev/null $ROOT/etc/blkid.tab
rm $ROOT/etc/mtab  > /dev/null 2>&1
ln -s /proc/mounts $ROOT/etc/mtab
rm $ROOT/etc/rcS.d/S13udev-mtab
rm -rf $ROOT/var/log/*


15. Se hacen los arreglos indicados en http://wiki.debian.org/ReadonlyRoot:
echo "0.000000 1121000000 0.000000" > /etc/adjtime
echo "1121000000" >> /etc/adjtime
echo "UTC" >> /etc/adjtime
chmod 644 /etc/adjtime
sed -i "s/^HWCLOCKPARS=/HWCLOCKPARS= --noadjfile /g" /etc/init.d/hwclockfirst.sh  /etc/init.d/hwclock.sh
ln -s /var/lib/initscripts/nologin /etc/nologin
mv /etc/init.d/udev-mtab /etc/init.d/udev-mtab.disabled


16. Por útlimo, remontar / como ro y reiniciar:
 mount -o remount,ro /
 shutdown -r now

Una vez hecho esto, después de reiniciar, he instalado el less (y para no tener que usar el resaolv.conf), he reconfigurado el /etc/añt/sources.list para que diga:
/etc/apt/sources.list
deb http://141.76.2.4/debian/ squeeze main
deb http://212.211.132.32/ squeeze/updates main
deb http://141.76.2.4/debian/ squeeze-updates main

Depués (pongo lo del remount,rw por completitud, realmente se había hecho antes de editar el sources.list):
mount -o remount,rw /
apt-get update
apt-get install less bridge-utils
mount -o remount,ro /


17. Configurar la red para que haga un bridge con las dos tarjetas de red y que no reserve interfaces (ver BridgeNetworkConnections):
mount -o remont,rw /
mv /etc/udev/rules.d/70-persistent-net.rules /etc/udev/rules.d/70-persistent-net.rules.disabled
vi /etc/network/interfaces
mount -o remount,ro /

El fichero ha que quedar así
 /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo br0
iface lo inet loopback

# Set up interfaces manually, avoiding conflicts with, e.g., network manager
iface eth0 inet manual

iface eth1 inet manual

# Bridge setup
iface br0 inet static
        bridge_ports eth0 eth1
        address 3.0.1.4
        netmask 255.255.255.0
        network 3.0.1.0
        broadcast 3.0.1.255
        gateway 3.0.1.51
        # dns-* options are implemented by the resolvconf package, if installed
        #dns-nameservers 3.0.1.51
        #dns-search metro.local



Monday, 27 August 2012, 6:29:41 pm
Sobre instalar los sevidores de TCTI de línea: investigando sobre emdebian grip 2.0 Por de pronto, está el HowTo que seguí en casa para instalar Emdebian grip 2.0 en un Seagate DockStar, usando UBIFS en la NAND y reconfigurandolo para que esté en read-only. Lo interesante es el script que prepara la imagen del S.O..

La parte que configura el sistema para poder arrancar como ro es la siguiente:
##########
##########
#
# Configure system as read-only
#
##########
##########


cat <<END > $ROOT/etc/fstab
/dev/root  /                 ext2  noatime,ro   0 1

# /tmp (and others) are mounted from /sbin/init-ro

# un-comment the next line to store /etc on external drive
#/dev/sda1 /etc              ext2  noatime      0 0

# uncommend the next two lines to store apt files on external drive
#/dev/sda2 /var/cache/apt/lists    ext2  noatime      0 0
#/dev/sda3 /var/lib/apt            ext2  noatime      0 0

END

# Create /sbin/init-ro script mount serveral directories as tmfps

cat <<END > $ROOT/sbin/init-ro
#!/bin/bash
DIRS="/tmp /var/log /var/run /var/lock /var/tmp /var/lib/urandom /var/lib/dhcp /
etc/network/run"
for DIR in \$DIRS; do
  echo "Mounting \$DIR as tmpfs"
  mount -n -t tmpfs tmpfs \$DIR
  if [ -d "\$DIR-saved" ]; then
    echo "Restoring \$DIR-saved to \$DIR"
    tar -C "\$DIR-saved" -cf - ./ | tar -C "\$DIR" -xpf -
  fi
done

echo "nameserver 4.2.2.1" > /var/tmp/resolv.conf
touch /var/lib/dhcp/dhcpd.leases

exec /sbin/init
END
chmod +x $ROOT/sbin/init-ro

# Configure dhcp-client to write resolv.conf to /tmp instead of /etc
sed -i 's/\/etc\/resolv.conf/\/var\/tmp\/resolv.conf/' $ROOT/sbin/dhclient-script > /dev/null 2>&1
rm $ROOT/etc/resolv.conf
ln -s /var/tmp/resolv.conf $ROOT/etc/resolv.conf


# make /etc/network/run/ a symlink to /tmp/network/
rm -rf $ROOT/etc/network/run
ln -s /var/tmp/network $ROOT/etc/network/run


# Fixes from http://wiki.debian.org/ReadonlyRoot

rm $ROOT/etc/blkid.tab  > /dev/null 2>&1
ln -s /dev/null $ROOT/etc/blkid.tab

rm $ROOT/etc/mtab  > /dev/null 2>&1
ln -s /proc/mounts $ROOT/etc/mtab

rm $ROOT/etc/rcS.d/S12udev-mtab

rm -rf $ROOT/var/log/*


Y después, en los parámetros al núcleo que se ponen en el gestor de arranque se pone "init=/sbin/init-ro":

##### Configure boot environment

fw_setenv usb_root "$ROOT_DEV ro"
fw_setenv usb_set_bootargs 'setenv bootargs console=$console root=$usb_root \
rootdelay=$usb_rootdelay rootfstype=$usb_rootfstype $mtdparts init=/sbin/init-ro'



Alternativa: instalando Debian Squeeze y siguiendo el Wiki para "ReadonlyRoot" En el wiki de biean hay una entrada de cómo hacer el root readonly, que es en parte en lo que se basa el anterior script: http://wiki.debian.org/ReadonlyRoot. Se puede hacer instalando debian desde el debian-installer, pero al hacer las particiones, poner root en el extra flags de dicha partición:
Enable readonly root during installation
Note: Tested with Debian Squeeze build from 2010-10-20

In the Debian installer, when configuring the filesystem and mountpoint for a partition, once can also select extra flags for the mount. If you want a readonly root then you can select that there and the installer will create the fstab corretcly for you. This gives you a system that almost works.

You will have to correct /etc/mtab, ifupdown and, if you have no /tmp partition, add tmpfs to /etc/fstab to get a clean boot. Do that at the shell prompt at the second console (Ctrl-Alt-F2) in the installer or first before any other fixes from above and reboot. Before you fix ifupdown you will have no networking so don't go this way when installing remote.

After the second boot you might get an error from exim4 that the panic log isn't empty. This is because the network didn't come up on the first boot (you fixed ifupdown now, right?). Check that it is just that, remove the file (see , section 2.5.1. "The daily cron job", esp. logrotate -f /etc/logrotate.d/exim4-paniclog) and restart exim4.


Thursday, 1 March 2012, 5:14:18 pm
En caso de cambiar de placa en un TCTI/crp IDE y que en la nueva (sata con puertos IDE) no arranque El error que da es un cuelgue diciendo un path SCSI del estilo de /host0/bus0/target0/lun0:Simplemente se selecciona para arrancar el kernel 2.2.x, y después se cambia el /boot/grub/menu.lst para poner el default al número que corresponde al 2.2.x.

NOTA: En caso de que error sea un PANIC por no poder montar root, en vez de lo escrito en esta entrada, hay que hacer lo que dice la de "Friday, 11 June 2010, 6:47:30 pm". O en vez de todos esos pasos, se puede hacer "a lo cutre":
1. modificar en el grub el root=/dev/hda por root=/dev/sda antes de arrancar
2. modificar en el /boot/grub/menu.lst lo mismo y salvar, para que no haya que hacer lo del paso 1 cada vez que arranque O:).

Friday, 11 June 2010, 6:47:30 pm
Actualizo el maestro de TCTI para que arranque en una placa cuyo dispositivo SATA salga como sda (no hda como en las antiguas) Haciéndolo en campo (con un disco sin actualizar, pero con una placa SATA/sda), se hace lo siguiente:

1. Tenemos que hacer que arranque del disco SATA. Para eso, sacas el menú del GRUB (con las flechitas mientras arranca), le das 'e' ara editar la primera entrada, vas a la línea del kernel, le vuelves a das 'e' para editarla, cambias el /dev/hda1 a /dev/sda1, guardas con el enter, le das a la 'b' para arrancar.

2. En el aranque se queda parado diendo que no puede hacer un fsck, le das a 'Control+D' para continuar. LLegará hasta el login.

3. Entras como root

4. Preparamos el disco para editar haciendo lo siguiente:
 # mount -o remount,rw /
 # mount -o remount,rw /chroot

5. Vamos a hacer que no haya que editar a mano el menú de arranque; editas el /boot/grup/menu.lst y en la línea que pone "root=/dev/hda1 ro quiet" la cambias por "root=LABEL=ROOT ro quiet"

6. Vamos a hacer que encuentre los discos y no de el error del fsck; editas el /chroot/etc/fstab y haces los cambios siguientes:
Cambiar estoPor esto otro
/dev/hda1LABEL=ROOT
/dev/hda5LABEL=HOME
/dev/hda6LABEL=OPT

7. Por último hay que darle nombre a las particiones para que los cambios anteriores funcionen; en /dev se hace lo siguiente:
 # cd /dev
 # mv .udev /tmp
 # MAKEDEV sda
 # mv /tmp/.udev .
 # e2label /dev/sda1 ROOT
 # e2label /dev/sda5 HOME
 # e2label /dev/sda6 OPT

8. Ya hemos terminado, volvemos a ponerlo en read-only y rebotamos:
 # mount -o remount,ro /
 # mount -o remount,rw /chroot
 # reboot

Y con eso el disco debería funcionar en las nuevas placas (y seguir funcionando en las antiguas).

NOTA: En el maestro se han hecho algunos cambios adicionales para que funcione el copiar discos y la regeneración de los menús del grub.

NOTA2: Bueno, realmente el maestro lo actualicé hace varias semanas. Hoy ha sido documentado (parcialmente).

Friday, 12 February 2010, 5:31:47 pm
Actualizo todos los tctis para que guarden el log en el pcl correspondiente:
mount -o remount,rw /chroot
chroot /chroot
scp metro@16.0.62.18:/incoming/sudo_1.6.9p17-2_i386.deb /var/cache/apt/archives/
dpkg -i /var/cache/apt/archives/sudo_1.6.9p17-2_i386.deb
exit
cp /chroot/etc/sudoers /etc/sudoers
cd /etc/init.d
scp metro@16.0.62.18:/incoming/control-data /etc/init.d/control-data
cp /etc/init.d/control-data /chroot/etc/init.d/control-data
mount -o remount,ro /chroot
ls -l /etc/init.d/control-data /chroot/etc/init.d/control-data


Y lo que he añadido al /etc/init.d/control-data es:
...
stop)
echo -n "Shutting down control-data: "
# Copiamos las trazas de tcti al pcl
(
cd /home/metro/sistema/V1/UI_Plano/ui_concentrador
for i in 6 5 4 3 2 1 0; do
sudo -u metro rsh pcl "cd /home/metro/sistema/V1/UI_Plano/ui_concentrador ; mv xEventosTCTI.Log.${i}.gz xEventosTCTI.Log.$( echo $i + 1 | bc ).gz" 2>/dev/null
done
sudo -u metro rcp xEventosTCTI.Log pcl:/home/metro/sistema/V1/UI_Plano/ui_concentrador/xEventosTCTI.Log.0
sudo -u metro rsh pcl 'cd /home/metro/sistema/V1/UI_Plano/ui_concentrador ; gzip xEventosTCTI.Log.0'
)
# El resto es normal
mount -o remount,rw /opt
mkdir /opt/updates
...


Tuesday, 9 February 2010, 6:16 pm
Pequeña actualización a los tctis "nuevos" que están en campo Resulta que los tctis de lenny no tienen el rebwait, y hay que ponerlo; aparte algunos tenían el resolv.conf sin borrar:
# rm /etc/resolv.conf ; mount -o remount,rw /chroot ; rm /chroot/etc/resolv.conf ; mount -o remount,rw /
# echo "30 4 * * * /sbin/reboot" | crontab -
# mount -o remount,ro /chroot ; mount -o remount,ro /
# cat /var/spool/cron/crontabs/root
# exit



Thursday, 5 November 2009, 6:59:17 pm
Hago el de carpetana(L6) Además, lo he copiado a través de la red y tarda muhco menos. Pasos seguidos:
1. Se arranca el maestro de tcti (con el blanco puesto en el secundario), pero con el arranque normal (no con el de copiado). Se pone el cable de red en la boca más cercana a la corriente.
2. Se entra como root y se hace:
# ifconfig eth0 3.0.1.6 ; socket-upipe-server 10000 > /dev/hdc
3. Se entra en seraphim y se hace:
$ cat /backups/tcti/tcti_canillejas.hda | socket-upipe-client 3.0.1.6 10000
4. Se espera un ratito a que termine de copiarlo (unos 3 min.). Al terminar en seraphim todavía tarda un poco en el tcti para darte el prompt. Hasta que no vuelves a tener prompt no ha terminado de copiar.
5. Ahora en el tcti: se hace un shutdown
6. Se inicia con el nuevo disco
7 Se entra como root y se configura con el habitual
# mount -o remount,rw / ; mount -o remount,rw /home
# chroot /chroot
# ip-change ip mascara gateway
# hostname-change tcti_canillejas huihui nuevonombre huihui
# exit
# mount -o remount,ro / ; mount -o remount,ro /home
# shutdown -h now
# 

Tuesday, 30 June 2009, 7:03:57 pm
Añadi tcti_pacifico a la configuración de tctiserver de main1 Falta averiguar la IP WiFi que se da en Pacífico.

Descripción del proyecto


TCTI requiere de dos tipos de servidores:
  • Servidores de línea
  • Servidores de estación.

Servidores de línea:
  • Actualmente se usa de forma genérica a main1 (/incoming/tctiserver).


Servidores de estación:

NOTA: Configurar una estación de TCTI a partir del maestro

Linea1

NombreIPSituación
Pacifico(L1)17.138.58.67Estación de pacífico
Plaza de Castilla(L1)18.132.58.12Estación de plaza de castilla
Estrecho(L1)19.68.58.8Estación de estrecho
Atocha Renfe(L1)19.80.58.8Estación de atocha renfe

Linea 5

NombreIPSituación
Canillejas(L5)17.65.58.243Estación de canillejas

Linea 6

NombreIPSituación
Carpetana(L6)17.130.58.13Estación de carpetana

Planos piloto

NombreIPSituación
Aula Estaciones Canillejas16.4.254.178Es el TCE del aula de estaciones

Puertos que se usan:
ver más abaj en "Puertos (troubleshooting)"


Para saber las IPs que se asignan a los terminales

Hay que ir a la estación con el terminal y hacer la siguiente prueba:
1. Se ejecuta en main1 lo siguiente:
$ cd /incoming
$ ./tctiserver-test-traceroute.sh
2. Se ejecuta en el terminal el programa de pruebas (es simplemente un TCM configurado para que se conecte a 150.100.122.31:10001)
3. Se mira el ficehero tcti_pruebas_xxx.txt para ver los traceroutes; de la penúltima línea se saca el router y de la última línea se le convierte en un /24 y ese es la red de destino (p.ej. si pone "17.65.105.10 (17.65.105.10) 7.993 ms 3.645 ms 16.512 ms" es "17.65.105.0/24").
3. En el seldamserver.cfg se añade una línea que ponga algo así como:
 ip_de_router red_de_destino localizacion nombre
p.ej.
 172.26.5.194 17.65.105.0/24 05011 Canillejas

Puertos (troubleshooting)


PuertoOrigenDestinoUsoTipo (permanente/intermitente)
10001TerminalPlanoAccionesconexión intermitente
10002ServidorPlanoSesiones, recibir alarmaspermanente
10003TerminalServidorAutentificaciónintermitente
10004ServidorServidorPeerspermanente
10005ServidorTerminalAlarmasintermitente

Pruebas desde la oficina


  1. Poner aliases en symbiandevel:
    # modprobe dummy ; ifconfig dummy0 150.100.122.31 ; ifconfig dummy0:1 17.65.58.243
  2. Poner redirectores en symbiandevel:
    $ cd /home/dario/tctiserver
    $ LOGPRODUCCION=/dev/tty ./tctiforward 172.16.2.2 172.16.1.2
  3. Poner redirectores en frontpci02:
    $ LOGPRODUCCION=/dev/tty /incoming/tctiforward 150.100.122.31 17.65.58.243
  4. Conectarse con el móvil E60 y probar...

Attachs

gdb-tcti amd64.tar