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ś.