Algo de Linux: octubre 2011

sábado, 15 de octubre de 2011

Eliminar la password de la bios en Acer Aspire ONE NAV50

Este netbook tiene una bios InsydeH2O que guarda la password de la bios encriptada. Para borrarla tenemos dos opciones:
  • Modo hardware.
  • Modo software.
Para borrar la password de la bios de manera física, desatornillamos la tapa de la memoria RAM y usamos un destornillador para puentear los dos contactos del jumper U72. Ver siguiente imagen:


Una vez hecho ésto, podemos comprobar cómo podemos acceder a la BIOS sin password. Cerramos la tapa de nuevo y listo.

Para borrar la password de la bios mediante software, Acer nos proporciona una utilidad dos (clnpwd.exe), que podemos copiar en un disco de arranque FreeDOS usb, por ejemplo y ejecutar desde allí.

Podríamos preparar un pendrive de arranque FreeDOS con UNetbootin, montarlo para añadirle la utilidad clnpwd.exe. Luego arrancaríamos el equipo con este pendrive y lo usaríamos para borrar la password.



Si no tenemos puesto como dispositivo de arranque ningún otro dispositivo a parte del disco duro, otra opción sería preparar la imagen del disco de arranque FreeDOS, añadirle la herramienta al directorio /boot de la máquina y arrancarlo desde grub.

jueves, 13 de octubre de 2011

Crear un disco de arranque freedos rápidamente

Puesto que las máquinas de hoy en día ya no tienen disqueteras, a veces necesitamos un disco de arranque freedos en un pendrive, por ejemplo, para actualizar la BIOS. Una forma rápida de crearlo es haciendo uso de UNetbootin, una aplicación multiplataforma que permite la creación de USB arrancables  de diferentes distribuciones, además de Freedos.

Para crear un usb arrancable con FreeDOS, introduciremos el pendrive que queremos hacer arrancable y abriremos la aplicación UNetbootin.
 
Después, seleccionamos la opción "Distribución", tal y como se muestra en la imagen anterior. Una vez seleccionada, hacemos clic en el desplegable de al lado y elegimos "FreeDOS". Por último seleccionamos la unidad USB que vamos a hacer arrancable con FreeDOS y hacemos clic en el botón "Aceptar".

Y listo. UNetbootin descargará FreeDOS y lo montará en el pendrive, haciéndolo arrancable.

viernes, 7 de octubre de 2011

Flashear la BIOS de equipos NEC PowerMate VL4 vía PXE

PROBLEMA A RESOLVER:
Nuestros terminales ligeros son NEC PowerMate VL4 sin disquetera ni CD-ROM. El problema que tenemos actualmente es que, tras unos años en funcionamiento, se están agotando las pilas. Como consecuencia, se borran  los ajustes de la CMOS y los equipos dejan de arrancar porque la opción de arranque por defecto es el Floppy.

SOLUCIÓN:
Cambiar los ajustes por defecto de la BIOS para que el primer dispositivo de arranque sea "On Board LAN", es decir,  la tarjeta de red integrada.
Lo interesante de esta actualización es que fijaremos los ajustes por defecto en la ROM de la BIOS y no en la CMOS. Así, aunque se agoten las pilas de los equipos, las opciones que deseamos tener, seguirán establecidas y no se perderan, como sucedería si estuvieran almacenadas en la CMOS y se agotara la pila.

AJUSTES FIJADOS COMO PREDETERMINADOS:
Éstos son los ajustes que he establecido por defecto en la ROM modificada:
  • Fijado como primer dispositivo de arranque "On Board LAN", es decir, la tarjeta de red integrada y activado como "Show only" para que no pueda ser modificado por el usuario.
  • Desactivado segundo y tercer dispositivo de arranque para que el usuario no pueda cambiarlo.
  • Desactivado el arranque desde otros dispositivos.
  • Desactivadas opciones de establecer passwords de setup y de usuario. Así los usuarios no van a poder cambiarlos en caso de reseteo de los valores de la CMOS.

HERRAMIENTAS:
Como nuestra bios es AWARD, para flashearla u obtener un backup tan sólo tendríamos que copiar la herramienta AWDFLASH.EXE y la imagen de la BIOS que vamos a grabar en nuestra máquina. 
Ya que necesitaba un disquete de arranque, para flashear/obtener copia de la BIOS, he creado una imagen de un floppy con las siguientes herramientas, que me permitirá hacer algunas cosas más con la imagen de la BIOS, como por ejemplo, personalizarla:
  • awd822a.exe -> Flash loader for Award BIOS. Permite flashear/hacer backup de la BIOS.
  • modbin62.04.03.exe -> Nos permite modificar ajustes por defecto de BIOS Award.

PASOS SEGUIDOS:

Primero.- Crear un floppy disk con las herramientas mencionadas anteriormente que nos servirán para trabajar con nuestras BIOS Award.
Como comentaba al principio, nuestros terminales ligeros no disponen de disquetera ni de unidad de CDROM. Además, tampoco disponen de arranque vía USB, por tanto, nuestra mejor opción para actualizar la BIOS de los mismos es cargar una imagen de floppy mediante PXE, haciendo uso de memdisk (También se puede usar GRUB para arrancar una imagen de floppy, pero, como el sistema de terminales ligeros hace uso de PXE, vamos a aprovecharlo).
  
1.- Lo primero que necesitamos es un disquete de arranque.  
      Como se requiere un sistema operativo DOS para nuestros fines y podemos evitar usar versiones propietarias, descargamos FreeDOS, un sistema DOS compatible completamente free. Y como necesitamos espacio en nuestro floppy, descargamos la versión "OEM Bootdisk", que contiene lo justo:
  • AUTOEXEC.BAT
  • COMMAND.COM
  • CONFIG.SYS
  • KERNEL.SYS
  • README
  • sys.com

Así que descargamos la versión FreeDOS OEM Bootdisk:
# wget http://www.linuxinsight.com/files/FDOEM.144.gz
Y descomprimimos:
# gunzip FDOEM.144.gz
Obtendremos un fichero llamado FDOEM.144
      
En el siguiente enlace de Dropbox también econtraremos una imagen de un floppy de 1.44MB: http://dl.dropbox.com/u/5004198/floppies/dosdisk144.img
# wget http://dl.dropbox.com/u/5004198/floppies/dosdisk144.img
2.- Descargamos de internet las herramientas que queramos incluir en nuestro disquete. Por ejemplo:
  • awd822a.exe
  • modbin62.04.03.exe 
3.- Una vez que tenemos la imagen del disquete de arranque, lo montamos en un directorio y añadimos las herramientas.

Montamos la imagen del Floppy Bootdisk en un directorio temporal:

# mkdir /tmp/floppy
# mount -t vfat -o loop FDOEM.144 /tmp/floppy

Y le añadimos las herramientas que necesitemos:

# cp awd822a.exe /tmp/floppy/
# cp modbin62.04.03.exe /tmp/floppy/modbin6.exe
      
He renombrado modbin para que el nombre del archivo no tenga más de 8 caracteres, ya que la actualización se hace en un sistema operativo DOS.
   
También me ha parecido interesante añadir el editor de textos de freedos edit.exe, por si en algún momento tengo que editar ficheros en formato dos, como, por ejemplo el AUTOEXEC.BAT. Como en mi máquina tengo instalado dosemu, lo he copiado desde allí:
# cp /usr/lib/dosemu/freedos/bin/edit.exe /tmp/floppy/
Por último, he pensado que la imagen debería permitir elegir con qué imagen flashear la rom, así que he añadido CHOICE.COM, que permite dar opción al usuario a elegir entre varias opciones desde el autoexec.bat:
# cp choice.com /tmp/floppy/
Y listo. Ahora mi floppy contendrá lo siguiente:    
  • AUTOEXEC.BAT
  • COMMAND.COM
  • CHOICE.COM
  • edit.exe
  • MODBIN6.EXE
  • sys.com
  • awd822a.exe
  • CONFIG.SYS
  • KERNEL.SYS
  • README
4.- Desmontamos y copiamos la imagen del disquete a un lugar seguro:
# umount /tmp/floppy  
# cp FDOEM.144 /home/miusuario/Dropbox/bios/
5.- Comprobar que nuestro disquete funciona:
# qemu -fda /home/miusuario/Dropbox/bios/FDOEM.144

Segundo.- Obtener una copia de nuestra BIOS en un fichero.
Ahora que ya tenemos una imagen de un disquete autoarrancable con las herramientas necesarias, vamos a hacer un backup de la BIOS de un equipo NEC para trabajar sobre ella y hacerle los ajustes planificados. Para ello:
  
1.- Grabamos la imagen en un disquete:
# dd if=/home/miusuario/Dropbox/bios/FDOEM.144 of=/dev/fd0 bs=10k count=144
2.- Como tengo equipos NEC con disquetera, voy a usar uno de ellos para hacer un backup de la BIOS.         

Seleccionamos como primer dispositivo de arranque "Floppy" en la BIOS, introducimos el disquete en el equipo del que vamos a obtener copia de la BIOS y reiniciamos para arrancar desde el mismo.
  
Se iniciará FreeDOS y se quedará esperando en la línea de comandos:
A:\
Escribiremos el comando para hacer la copia y pulsamos Enter:
A:\ awd822a /pn /sy backup.bin

donde: /pn -> program no (no flashear la BIOS)
            /sy -> save yes (guardar un backup de la BIOS actual)
                
Cuando el proceso termine, tendremos una copia de la bios en un fichero llamado backup.bin
           
Apagamos el equipo del que hemos hecho la copia.
      
3.- Introducimos el disquete en nuestro equipo para hacer una nueva imagen del mismo, ahora que tiene, el backup.bin, además de las herramientas y creamos la imagen:
# dd if=/dev/fd0 of=/home/miusuario/Dropbox/bios/fbiosnec.img bs=10k count=144  
4.- Montamos la imagen del disquete (fbiosnec.img) en un directorio temporal:

# mount -t vfat -o loop fbiosnec.img /tmp/floppy
5.- Una vez montado, copiamos el fichero de backup a un lugar seguro para tener una copia, por ejemplo, a mi carpeta de Dropbox:
# cp /tmp/floppy/backup.bin /home/miusuario/Dropbox/bios
La primera copia (backup.bin) nos va a servir para tener un backup de la BIOS original.

La segunda copia (biosnec.bin) es la que vamos a modificar para que contenga los ajustes que queremos.       
      
6.- Aprovechando que en mi equipo tengo wine, abrimos una consola de wine en un terminal:

# cd /tmp/floppy/
# wineconsole cmd
Se nos abrirá una consola dos de wine en el directorio /tmp/floppy:      
Z:\tmp\floppy>
Como ya hemos guardado una copia de la imagen de la bios, renombramos el fichero del floppy:
Z:\tmp\floppy> ren backup.bin biosnec.bin
Y, por último, abrimos MODBIN6.EXE para realizar los ajustes que queremos hacer en la BIOS:
Z:\tmp\floppy> MODBIN6
MODBIN6 detectará todas las copias de las BIOS que haya. Como en el disquete sólo hay una (biosnec.bin), tan sólo se mostrará ésta. Pulsamos ENTER para cargarla. Se abrirá el programa y ya podremos hacer nuestros ajustes.
      
Cuando terminemos de hacer los ajustes en la copia de la BIOS, guardamos y cerramos la ventana "Wine Command Prompt".
      
7.- Al principio, usé una imagen de disquete de 1.44MB, suficiente cuando queremos almacenar una copia de la bios, pero como posteriormente pensé en incluir la imagen original de la bios, la imagen retocada, y modificar el autoxec para permitir elegir al usuario con qué imagen flashear, el disquete de 1.44MB se me quedaba pequeño. Así que opté por usar una imagen de floppy de 2.88MB, que nos deja más espacio libre en disco para añadir nuestras herramientas.

Podemos descargar la imagen del floppy desde http://dl.dropbox.com/u/5004198/floppies/dosdisk288.img:
# wget http://dl.dropbox.com/u/5004198/floppies/dosdisk288.img
Montamos la imagen de este nuevo floppy en una carpeta temporal y le copiamos el contenido del otro disquete:
# mkdir /tmp/floppy288
# mount -t vfat -o loop dosdisk288.img /tmp/floppy288
# cp /tmp/floppy/* /tmp/floppy288/
Además, copiamos la imagen de la BIOS original:
# cp /home/miusuario/Dropbox/bios/backup.bin /tmp/floppy288
8.- No olvidemos que tenemos montada la imagen del disquete fbiosnec.img en /tmp/floppy y la imagen del disquete dosdisk288.img en /tmp/floppy288 y que tenemos que desmontarlas. La desmontamos:
# umount /tmp/floppy
# umount /tmp/floppy288
9.- Editamos el autoexec.bat del floppy de actualización fbiosnec.img.
Aquí dejo una copia del que he preparado: http://dl.dropbox.com/u/5004198/floppies/autoexec.bat
# wget http://dl.dropbox.com/u/5004198/floppies/autoexec.bat
10.- Y hacemos una copia de nuestro floppy:
# cp dosdisk288.img /home/miusuario/Dropbox/bios/fbiosnec.img                         
Tercero.- Crear una imagen iso de CD autoarrancable.
Como no cuesta nada, ahora que tenemos un floppy de arranque, podemos crear también una imagen de CD autoarrancable, por si la necesitamos en algún momento.
  
* Si nuestra máquina es Debian Lenny, tenemos que usar mkisofs:
# mkisofs -o fbiosnec.iso -b fbiosnec.img fbiosnec.img
* Si nuestra máquina es Debian Squeeze:
# genisoimage -o fbiosnec.iso -b fbiosnec.img fbiosnec.img

Cuarto.- Preparar PXE para cargar la imagen de nuestro floppy disk mediante memdisk.

Bien. Ahora ya tenemos una imagen de un floppy con el que podemos flashear automáticamente la BIOS de nuestros equipos. Como ya comentamos al principio, para flashearlos nuestra mejor opción es cargar una imagen del floppy que hemos creado mediante PXE, haciendo uso de memdisk aprovechando que el sistema de terminales ligeros hace uso de PXE.
  
Las instrucciones que hacen arrancar un terminal ligero se encuentran en el fichero: /var/lib/tftpboot/ltsp/i386/pxelinux.cfg/default
   
Si mostramos el contenido de éste fichero:   
# cat /var/lib/tftpboot/ltsp/i386/pxelinux.cfg/default
Veremos que tan sólo contiene una línea de comentario y otra que carga la imagen de los terminales:
# Para usar nbd
DEFAULT vmlinuz ro initrd=initrd.img quiet
Así que lo retocaremos un poco para que podamos lanzar la imagen de nuestro disquete cuando queramos. Además, ya de paso, vamos a añadir la posibilidad de iniciar Plop Boot Manager, por si en algún momento necesitamos arrancar los equipos desde usb. Pero, antes, vamos a preparar el entorno:
  
1.- Creamos un directorio llamado Floppy dentro /var/lib/tftpboot/ltsp/i386 en el servidor de terminales:
# mkdir /var/lib/tftpboot/ltsp/i386/Floppy
Más que nada para ser organizados y si en algún momento, necesitamos otro disquete para otros fines, lo añadiremos aquí también.
  
2.- Copiamos la imagen del disquete para flashear la bios en /var/lib/tftpboot/ltsp/i386/Floppy/
# cp /home/miusuario/Dropbox/bios/fbiosnec.img /var/lib/tftpboot/ltsp/i386/Floppy/
3.- Copiamos memdisk a /var/lib/tftpboot/ltsp/i386/
# cp /opt/ltsp/i386/usr/lib/syslinux/memdisk /var/lib/tftpboot/ltsp/i386/
4.- Descargamos Plop Boot Manager y lo descomprimimos:
# cd /home/miusuario/Dropbox/bios/
# wget http://download.plop.at/files/bootmngr/plpbt-5.0.12.zip
# unzip plpbt-5.0.12.zip
Se creará un directorio: plpbt-5.0.12. Dentro de él encontraremos un fichero: plpbt.bin. Lo copiamos a /var/lib/tftpboot/ltsp/i386/
      
5.- Copiamos plpbt.bin a /var/lib/tftpboot/ltsp/i386/

# cp plpbt.bin /var/lib/tftpboot/ltsp/i386/
6.- Hacemos una copia de seguridad del fichero default:
# mv /var/lib/tftpboot/ltsp/i386/pxelinux.cfg/default /var/lib/tftpboot/ltsp/i386/pxelinux.cfg/default.orig
7.- Creamos una nueva copia del fichero default:
# nano /var/lib/tftpboot/ltsp/i386/pxelinux.cfg/default

Con el contenido que listamos a continuación:

# Fichero /var/lib/tftpboot/ltsp/i386/pxelinux.cfg/default

DEFAULT ltsp

# Para usar nbd
LABEL ltsp
           kernel vmlinuz
           append ro initrd=initrd.img quiet
 
# Para flashear la BIOS del terminal
LABEL flashbios
           kernel memdisk
           append rw initrd=Floppy/fbiosnec.img

# PLOP Boot Manager
LABEL plp
           linux plpbt.bin
Si nos fijamos en el fichero, podemos ver que tiene tres entradas:
  • ltsp (Para iniciar el terminal ligero)
  • flashbios (Para flashear la bios del terminal ligero)
  • plp (Para iniciar Plop Boot Manager)     
Y que, por defecto, se inicia la máquina mediante ltsp.
     
Si en algún momento queremos flashear la bios de los terminales conectados a un servidor, no tenemos más que cambiar la entrada:
DEFAULT ltsp
por:
DEFAULT flashbios
Al encender los terminales, arrancarán la imagen del floppy que flashea la BIOS.

Y, si en algún momento, queremos arrancar Plop Boot Manager, por ejemplo, para disponer de arranque USB en los terminales, cambiamos la línea DEFAULT a:
DEFAULT plp

lunes, 3 de octubre de 2011

NetworkManager: Modificar políticas

Recomendación. Modificar las políticas de este otro modo: http://enavas.blogspot.com.es/2012/10/networkmanager-modificar-politicas-ii.html

NetworkManager usa PolicyKit para ofrecer un control de acceso "de grano fino" a características específicas para asegurar que el administrador del sistema pueda controlar qué pueden hacer y que no pueden hacer los usuarios. Por ejemplo: Controlar que los usuarios puedan editar conexiones de sistema, crear redes adhoc abiertas, etc...

Como ya hablé en un artículo anterior, con NetworkManager podemos crear conexiones de sistema que se establezcan antes de que el usuario inicie sesión. Ver artículo: NetworkManager: Establecer conexión wifi antes de iniciar sesión en Debian

En el sistema de nuestro centro, nos interesa que los portátiles de alumnos y profesores establezcan la conexión inalámbrica antes de que el usuario inicie sesión para que puedan ejecutarse determinados procesos, como por ejemplo, la actualización de portátiles mediante puppet.

Para lograrlo, creé una conexión de sistema que permite realizar la conexión automática a la red del  centro, comprobé que estaba creada dentro del directorio: /etc/NetworkManager/system-connections/ y que funcionaba.

Pero me dí cuenta de que había un problema: Si creo una conexión inalámbrica, la guardo como conexión del sistema, marcando la casilla "Disponible para todos los usuarios" y el usuario cambia su clave de entrada al sistema (que es la misma para acceder a la wifi), el usuario no va a poder acceder a la wifi después de ello, porque para poder cambiar la clave, NetworkManager le pide la contraseña de administrador.

Para solucionar este problema, tendremos que cambiar la política de NetworkManager, modificando el fichero:

/usr/share/polkit-1/actions/org.freedesktop.network-manager-settings.system.policy

Concretamente, modificaremos la siguiente sección, que he acortado quitando las descripciones y mensajes de los diferentes idiomas para mostrarlo en este post:

<action id="org.freedesktop.network-manager-settings.system.modify">
    <description>Modify system connections</description>
    <description xml:lang="es">Modificar conexiones de sistema</description>
    <message xml:lang="es">Política de sistema evita modificación de configuración de sistema</message>
    <defaults>
      <allow_inactive>no</allow_inactive>
      <allow_active>auth_admin_keep</allow_active>
    </defaults>
  </action>

Para modificarlo no tenemos más que fijarnos en que es la sección que nos permite modificar conexiones de sistema (Modify system connections). Para ser más exactos, cambiaremos la línea que dice:

<allow_active>auth_admin_keep</allow_active>

por:

<allow_active>yes</allow_active>

Guardamos y listo. Ahora cuando el usuario tenga que cambiar los parámetros de conexión, como por ejemplo, su clave, NetworkManager no le pedirá la password de administrador.

Las posibles opciones son:
  • auth_admin
  • auth_admin_keep
  • yes
  • no
Un valor de "auth_admin" hará que se pida la password de administrador cada vez que un usuario quiera hacer cambios en la conexión.

Un valor de "auth_admin_keep" hará que se pida la password de administrador tan sólo una vez y se cacheará para no volver a pedírsela al usuario durante la misma sesión.

Un valor de "yes" hará que no se pida la password de administrador al usuario cuando éste quiera modificar la conexión. Éste es el valor que nosotros necesitamos usar en este caso.

Por último, un valor de "no" significa que se deniega el permiso completamente.

domingo, 2 de octubre de 2011

WIIMC: Reproducir archivos multimedia almacenados en nuestro PC

WiiMC (Wii Media Center) es un excelente "media player" opensource que nos va a permitir escuchar nuestra música, ver videos, dvd y fotos tanto si están almacenados en DVD, USB o SD como si están almacenados en una máquina de nuestra red, o incluso medios online, como por ejemplo, youtube.

Además, si tenemos nuestra wii conectada a internet, podremos actualizar WiiMC cada vez que haya una versión nueva porque nos avisará.

Y como siempre hay alguien que lo pregunta: Sí, tiene soporte de idioma español.

Eso sí, para poder instalarlo es imprescindible tener el Homebrew Channel en nuestra Wii.

 

Una cosa que me encanta de esta aplicación es la opción de reproducir los archivos a través de la red. De este modo, si quiero, puedo guardar la música, los videos y las fotos en una carpeta de mi máquina y reproducirlos vía wifi desde la Wii. Esto es una  gran ventaja, porque teniendo esta aplicación puedo reproducir una enorme cantidad de formatos tanto de vídeo como de audio.

La reproducción a través de la red puede hacerse via SMB, HTTP, and FTP.

Para probar, podemos crear una carpeta donde almacenar nuestros archivos multimedia:

# mkdir /home/multimedia

Y asignarle como propietario nuestro usuario. Por ejemplo:

# chown enavas:enavas /home/multimedia

En esta carpeta será donde almacenemos nuestra música, videos y fotos.

Después instalamos samba, si no lo tenemos ya instalado en nuestra distribución, y modificamos el fichero  /etc/samba/smb.conf añadiendo lo siguiente:

[multimedia]
path=/home/multimedia
read only=yes
guest ok=yes


Reiniciamos samba:
# /etc/init.d/samba restart

Y estaremos compartiendo la carpeta /home/multimedia con permisos de sólo lectura.

Ahora nos vamos a la Wii, abrimos el WIIMC y nos vamos a las opciones de configuración (el icono que hay arriba a la derecha , al lado del logo de WIIMC).

En el listado de opciones de configuración, seleccionamos "conexiones".

Nos mostrará dos posibilidades:
  • "conexion PC
  • "conexion FTP"
Elegimos "conexion PC" y rellenamos las casillas que nos aparecen con los siguientes datos:

  • Nombre Mostrado: Como se pueden crear diferentes conexiones, las diferenciamos mediante un nombre. Por ejemplo: "multimedia".
  • IP: Debemos especificar la IP de la máquina que comparte los recursos. Por ejemplo: 192.168.0.1
  • Carpeta: Indicamos el nombre de la carpeta compartida. Ejemplo: multimedia.
  • Usuario: Especificamos el nombre de un usuario con permisos para leer la carpeta.
  • Contraseña: Escribimos la contraseña del usuario que hemos especificado en el cuadro anterior.
Una vez rellenado el formulario, hacemos clic sobre el botón "atras" y nos aparecerá la nueva conexión que acabamos de crear.

Ahora, ya tan sólo tenemos que seleccionar dicha conexión para ver los archivos que compartimos desde el PC y seleccionar el archivo que queremos reproducir.