con la opción siguiente también se eliminarán los que aunque sin estar instalados no hayamos quitado sus archivos de configuración y que en la lista de dpkg aparecen como "deinstall":
sudo aptitude purge linux-image-2.6.22-14-generic
En principio con un par de nucleos funcionantes debería ser suficiente.
Wview es un software de wviewweather.com que permite obtener los datos de varios tipos de estaciones meteorológicas desde linux y genera una web estática actualizada desde los datos de la estación. También puede almacenar los datos en BD y enviar informes a diferentes servicios (AWEKAS, CWOP y
Weather Underground). Por ejemplo: Estación meteorológica en el Planetari de Castelló
Bien pues después de utilizarlo un tiempo aparecen 2 problemas esenciales para mantenerlo online:
1-. La estación está conectada a través de USB pero con un conversor cp2101. El problema es que algunas veces el sistema se reinicia pero enlazándose en /dev/ttyUSB1 en vez de /dev/ttyUSB0 que es el estándar.
2-. Alguna vez muere alguno de los procesos (wviewd o htmlgend) y deja de actualizarse la web. El origen todavía no lo tengo claro. Pero parece que wvpmon, que debería monitorizar los procesos y reiniciar el que falle, no lo hace correctamente.
Soluciones:
1-. para evitar que haya problemas con el cambio de puerto USB podemos incluir una nueva regla UDEV. Haremos que nuestro software apunte a un puerto "ficticio" wviewUSB y con la regla nueva crearemos un enlace simbólico de este puerto al que esté funcionando. Además podemos ejecutar un script para hacer reiniciarse a los procesos de wview…
# Regla udev para que cuando la estacion cambie de ttyUSB0 a 1 o # viceversa se actualice un symlink de wviewUSB –> ttyUSB? (0 o 1) # y se ejecute un script que reinicie wview. (Lo sgte todo en una linea)
2-. para reiniciar los procesos podríamos utilizar cron junto con algún script específico. Pero también podemos utilizar monit. Éste es un monitor de "eventos" que nos permite realizar acciones por ejemplo si el disco, la cpu o la ram están muy ocupadas o, como en este caso, si no se han generado los archivos de la estación.
Para ponerlo en marcha instalamos el paquete (sudo apt-get install monit) y deberemos editar los archivos /etc/default/monit (cambiar de startup=0 a startup=1) y /etc/monit/monitrc, que es donde realmente haremos los cambios:
# habilitar el servidor web interno de monit visible en http://localhost:2812/ set httpd port 2812 and use address localhost # only accept connection from localhost. without: all allow localhost # allow localhost to connect to the server and allow admin:monit # require user ‘admin’ with password ‘monit’
# incluir las reglas de monitorizacion y sus efectos check file Current.htm with path /usr/local/var/wview/img/Current.htm if timestamp > 20 minute then exec "/etc/init.d/wview.monit"
check file tempdaycomp.png with path /usr/local/var/wview/img/tempdaycomp.png if timestamp > 20 minute then exec "/etc/init.d/wview.monit"
Con esto conseguimos que se ejecute el script wview.monit si en 20 minutos no se ha actualizado una de las páginas web (Current.htm) o si no se ha actualizado uno de los gráficos. En teoría el archivo htm debería actualizarse una vez cada 5min y el gráfico una vez cada 10. Si no ocurre deberíamos hacer o bien que wview se reiniciase (wview restart) o bien que se reinicie el sistema completo. Incluso podríamos hacer que si la espera es de 20min que se reinicie wview y si pasa de 40min que se reinicie el equipo.
donde -v indica modo ‘verboso’, -n indica no-action (no se ejecuta el renombramiento), y -f indica forzar el cambio.
En la expresión de perl lo habitual es ‘s/viejo/nuevo’ que indica que hay que sustituir (s) el texto ‘viejo’ por el texto ‘nuevo’.
Ejemplos:
Cambiar parte del nombre:
1
rename -v 's/IMG_/\foto_/' *;.jpg
Cambiar la extensión:
1
rename -v 's/\.htm$/\.html/' *.htm
Cambiará los archivos con extensión htm y les pondrá html.
Dado que ‘.’ significa cualquier carácter en una expresión normal habrá que "escaparlo" para ello usamos ‘.’ ya que queremos que coincida con el punto de la extensión. El símbolo ‘$’ indica fin de nombre/cadena. Esto hará que se cambie el nombre para archivos *.htm pero no para otros que tengan algo más detras de la ‘m’, por ejemplo *.htms
Incluir texto:
1
rename -v 's/\.jpg$/_mini\.jpg/' *.jpg
Si queremos hacer explicito que se trata de miniaturas (thumbnails) podemos añadir a cada una el texto _mini justo delante de la extensión.
La cuestión es garantizar que la distribución no actualice un paquete determinado (quizá si que lo haga en el caso de una actualización de versión. Aunque la idea es ir de versión LTS a LTS (Ubuntu) con lo que por lo menos habrá una temporada sin cambios.
Para el ejemplo se usa el paquete tnftp, que es un cliente de ftp procendente de BSD que se utiliza para actualizaciones a través de ftp con wview.
Retención con aptitude:
1
$ sudo aptitude hold tnftp
Verificación:
12
$ aptitude search tnftp
ih tnftp - The enhanced ftp client
donde la ‘i’ indica instalado y la ‘h’ indica que está retenido (hold).
Problema: la retención con aptitude no implica la retención con apt-get o dpkg
Solución: retener también con dpkg. Esto tiene efecto también con apt-get
Retención con dpkg:
1
$ echo 'tnftp hold' | sudo dpkg --set-selections
Verificación:
12
$ sudo dpkg --get-selections | grep tnftp
tnftp hold
2-. Copiamos el contenido al disco usb (damos por hecho que previamente el disco está vacío y particionado con una partición fat (o fat32). Para copiarlo podemos abrir el iso con, por ejemplo, winrar si lo hacemos en Ms Windows, o podemos montarlo en modo loop en gnu/linux (mount -o loop bt3final_usb.iso bt3/). Una vez tenemos el contenido disponible lo copiamos al disco usb.
3-. Hacer el pendrive arrancable. Para ello ejecutamos un script (bootinst.bat en Windows o bootinst.sh en gnu/linux). Es posible que necesitemos disponer de permisos de administrador. En principio no debería haber problemas pero se impone leer con atención los mensajes que muestra el script.
No dudes que el camino bueno es el que indican las ayudas de los programas de imágenes. Es decir… "preparar" la instalación para realizar la imagen con la utilidad sysprep de Microsoft y posteriormente realizar la imagen. Así cuando restauremos y arranquemos haremos como una finalización de instalación del S.O.
Pero ¿qué pasa si se te ha fastidiado el hardware y quieres restaurar una imagen reciente en tu hardware nuevo?
Puedes seguir el tutorial "Cómo cambiar una placa sin reinstalar Windows" (web1 o web2)
En mi caso, tras un fallo multiorgánico del equipo, tuve que recurrir a un hardware algo más antiguo con lo que tras la restauración de la imagen no había manera de que arrancara…
¿Qué podemos hacer?
Se puede hacer una instalación encima cambiando la HAL (presionar F5 mientras dice algo así como “si tienes drivers para controlador específico pulsa F6” al principio de la instalación; elegir el hal adecuado para tu máquina) y proceder con la instalación diciendole al instalador que mantenga el S.O. que previo (eso si, después hay que volver a aplicar los service packs y actualizaciones, cosa que hace que el tema sea muy lento). Como dice Vicente Navarro… Lo hice y lo entendí, aunque yo lo hice y lo sufrí.
La segunda opción es más rápida. Supongamos, como era mi caso, que la imagen está restaurada pero no arranca. Podemos seguir el tutorial anterior en la parte que hace referencia a la sustitución de la hal. Para ello extraemos los archivos de kernel y hal adecuados para nuestra máquina del service pack (ej c:\WINDOWS\Driver Cache\i386\sp2.cab) correspondiente (o de c:\WINDOWS\Driver Cache\i386\driver.cab) desde otra máquina (o arrancando con un livecd y extrayendolo del disco restaurado si no tenemos otra a mano). Les cambiamos el nombre y los colocamos en c:\WINDOWS\system32 de nuestro equipo siguiendo las recomendaciones del tutorial (krnl.exe, krnlpa.exe y halnew.dll). Posteriormente alteramos el boot.ini (archivo oculto y de solo lectura situado en la raíz c:\ que contiene las opciones de arranque).
Lo que hacemos es introducir una nueva opción:
1234567
[boot loader]
timeout=10
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOW S
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP ..." /fastdetect /NoExecute=OptIn
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Windows XP cambio hal" /noexecute=alwaysoff /fastdetect /sos /kernel=krnl.exe /hal=halnew.dll
Arrancaremos seleccionando esta nueva entrada. Detectará la hal diferente y copiara los archivos sobre los ntoskrnl.exe, ntkrnlpa.exe y hal.dll. Tras eso podemos reiniciar y arrancar con la opcion normal. Después borraremos del boot.ini la opción que nos ha servido para restaurar la hal adecuada.
Solo nos faltará reactivar el windows.
Actualizaciones y Comentarios previos
Comentario 1
[Windows xp setup ACPI key, F10 F2 F6 F5 y otras teclas de función]
(http://miguesmart.blogspot.com/2008/08/windows-xp-setup-acpi-key-f10-f2-f6-f5.html)
Durante la instalación puede usar varias teclas de función para activar ciertas características y comandos. En la lista siguiente se detallan las teclas de función, lo que hacen y cómo se pueden usar.
Se pueden usar tres teclas cuando se carga el programa de instalación y cuando se le pide que presione la tecla de función F6 para instalar la interfaz estándar de equipos pequeños (SCSI, Small Computer System Interface) de terceros y los controladores de las controladoras de host:
F5: para la selección de la capa de abstracción de hardware (HAL) o del tipo de equipo
F6: para instalar controladores de controladoras de host y SCSI de terceros
F7: para ejecutar el programa de instalación sin Interfaz avanzada de configuración y energía (ACPI)
Cuando aparece la pantalla de bienvenida, se pueden usar las teclas de función siguientes:
F2: para iniciar automáticamente el proceso de Recuperación automática del sistema (ASR).
F10: para omitir las pantallas de menú y cargar la Consola de recuperación
Durante la instalación en modo de interfaz gráfica de usuario (GUI), se pueden usar las siguientes teclas de función:
MAYÚS+F10: para habilitar el acceso a un símbolo del sistema durante la instalación en modo GUI
MAYÚS+F11: para mostrar los asistentes al “estilo antiguo” que ofrecen más detalles
Comentario 2 (el loco)
Hola, como estan?, tengo un problema con respecto al siguiente tema: Hice una imagen de un windows xp con todos los parches de seguridad y todo instalado y testeado, lo instale todo en una maquina rapida, (solo utilice el disco rigido) y no instale ningun driver ni nada (ya que no eran de la maquina en la que finalmente funcionarian), y luego cuando lleve ese disco a una maquina mas antigua el xp no arranca… se queda en la pantalla negra con el cursor titilando, no llega a mostrar la pantalla del windows cargando… y se que hay una solucion en el arranque, pero no se donde… (ya probe con los sectores de arranque y demas del disco pero no hay forma…) queria saber si tienen alguna solucion? sin tener que reinstalar nada.. Gracias.
Respuesta
Lee la documentación enlazada (las webs) y trata de averiguar que ‘hal’ le corresponde a tu equipo.
Luego puedes seguir el procedimiento que te cuento de poner los archivos a mano para que los cargue en el siguiente arranque.
Tanto Clonezilla (que incluye ntfsclone) como SysRescCD son dos compilaciones de utilidades muy interesantes y desde este sitio griego podemos tenerlas juntas en el mismo cd. El siguiente texto está extraido de esta web…
What is it all about?
Clonezilla-SysRescCD is a Linux multi boot backup/restore and rescue CD, combining Clonezilla Live and System Rescue CD in one CD. It is released under the GNU General Public License (GPL).
Enhanced features
Enhancements to Clonezilla Live
Automated restore DVDs
can be easily created, so that anybody can perform a system restore
operation (even people with minimum technical knowledge). All the
necessary files for the creation of the DVD are included in Clonezilla-SysRescCD.
A script called reloc-img makes it possible to restore an image file to a location (disk or partition) different than the one originally backed up.
Enhancements to System Rescue CD
A script called startx-tft-ati will help you get into the graphical environment on a TFT - ATI graphics card based PC.
Other enhancements
Part of Clonezilla-SysRescCD’s web site is included in the CD, so that help is always available.
Por cuestiones que no vienen al caso necesito permitir que un usuario apague el servidor de un modo simple y sin requerirle mayor información.
Para prepararlo crearé un usuario que permita apagar el equipo via ssh con par de claves publica-privada y prepararé un mini-script que muestre un dialogo de confirmación…
Para el funcionamiento se requiere que PuTTY esté instalado (realmente solo necesitamos puttygen para la creación de las claves pública y privada y plink para ejecución del comando shutdown)
Inicialmente existe un servicio de temporización derivado de la funcionalidad inicial de Linksys. El ejecutable está en /usr/sbin/crond.
En los foros dedicados al tema (ver www.nslu2-linux.org) se recomienda instalar un segundo cron para otros funcionamientos.
Dado que me interesaba tener actualizado una dirección de dyndns instalé este segundo. Queda situado dentro de opt (/opt/sbin/cron)
Dada esta situación y con los 2 en marcha si utilizamos crontab modificamos el primero. Para utilizar el nuevo debemos incluir un nuevo archivo en /opt/etc/cron.d/ con la configuración. Es importante incluir el usuario que ha de ejecutar el comando temporizado… en el ejemplo se trata de root.
1234
bash-3.2# cat dyndnsupd
# Set the interval of the next IP check using a crontab entry.
# Once every 15 minutes is good for a home server.
*/15 * * * * root /opt/bin/dyndnsupdate.sh &>/dev/null