Creative Commons License
Excepto donde se indique otra cosa, todo el contenido de este lugar está bajo una licencia de Creative Commons.
Taquiones > diario > 2007 > 10 > 3 > hal y sus rarezas

hal y sus rarezas

Llevaba la tira de tiempo con un estúpido problema con el desmontaje de memorias USB (extracción segura lo llaman) que consistía en que HAL me soltaba alguna de las siguientes lindezas:

  • Cannot open /media/.hal-mtab
  • Device to unmount is not in /media/.hal-mtab so it is not mounted by HAL.

El último es especialmente molesto puesto que había accedido a la unidad a través de 'system:/media/sdf1', esto es, lo había montado HAL y no entendía por qué se negaba a reconocerlo :-)

Buscando en la red encontré un número demasiado grande de referencias a foros de Ubuntu con el mismo problema y parecidas soluciones: purgar ó instalar gnome-mount, según el caso.

Obviamente no me servían porque yo uso Debian y KDE, no Gnome, así que cuando ya estaba por desesperar recordé que alguien explicó en algún sitio (toma ya certeza) que Debian utilizaba HAL junto a pmount para este controlar estos vaivenes en los dispositivos de almacenamiento, y yo sabía que hace mucho tiempo que había instalado usbmount para lo mismo, que seguía en el sistema y que no había tenido noticias de problemas hasta ahora.

Resumiendo, que desinstalando usbmount el problema se soluciona; y siento no ser más preciso pero suficiente he tenido con mirar el fuente de HAL y enterarme de qué esperaba encontrar en el archivo /media/.hal-mtab que mantiene. Algo en el otro paquete impedía (ó anulaba de alguna manera) que se grabase la correspondiente entrada en dicho registro.

Por cierto, voy a hablar un poco de ese archivo. Su función principal es permitir saber a HAL qué ha montado y qué no, y bajo qué condiciones. Su formato es texto plano y cada línea representa un punto de montaje con el siguiente contenido:

 <device_file>\t<uid>\t<session-id>\t<fstype>\t<options_sep_by_comma>\t<mount point>\n

Según los fuentes de la versión 0.5.9.1 el campo session-id contiene siempre el valor cero (0) porque está sin uso actualmente.

Además se citan algunos ejemplos que me permito copiar:

/dev/sda2   500     0       hfsplus noexec,nosuid,nodev     /media/Macintosh HD
/dev/sda4   500     0       ntfs    noexec,nosuid,nodev,umask=222   /media/Windows
/dev/sdb1   500     0       vfat noexec,nosuid,nodev,shortname=winnt,uid=500     /media/davidz

Los fuentes, además, son un ejemplo excelente de programación en lenguaje C, con abundancia de comentarios informativos como el anterior y nombres largos de variables que facilitan mucho su lectura, puesto que ya sabes qué uso tienen la mayor parte de ellas.

La cantidad de información que conserva en dicho registro proporciona mucha seguridad a HAL cuando tiene que determinar si algo lo ha montado él de verdad ó hemos hecho alguna incursión en el mundo de root por la puerta de atraś.