domingo, 19 de julio de 2020

Failed to mount /sysroot - Error al iniciar VM en VirtualBox

Failed to mount /sysroot - Error al iniciar VM en VirtualBox


Hola.

Me encontré con este error en VirtualBox al iniciar mi máquina virtual de Oracle Linux. 

Es importante mencionar que este error me ocurrió después de que mi computadora host se trabó con la VM corriendo y tuve que reiniciarla con el clásico botonazo. Es decir que no la apagué correctamente y al intentar prenderla obtengo el siguiente error:

[    10.658694] BTRFS: failed to read tree root on sda3
[    10.665086] BTRFS: open_ctree failed
[FAILED] Failed to mount /sysroot.
See 'systemctl status sysroot.mount' for details.
[DEPEND] Dependency failed for Initrd Root File System.
[DEPEND] Dependency failed for Reload Configuration from the Real Root.
[     OK     ] Stopped dracut pre-udev hook.
[     OK     ] Stopped dracut cmdline hook.
[     OK     ] Stopped dracut initqueue hook.
[     OK     ] Reached target Initrd File Systems.
[     OK     ] Stopped target Basic System.
[     OK     ] Stopped target System Initialization.
[     OK     ] Started Emergency Shell.
[     OK     ] Reached target Emergency Mode.
Generating "/run/initramfs/rdsosreport.txt"
Entering emergency mode. Exit the shell continue.
Type "journalctl" to view system logs.
You might want to save "/run/initramfs/rdsosreport.txt" to a USB stick or /boot after mounting them and attach it to a bug report.
:/#
Como lo describe el error existe un error en la partición sda3. De acuerdo a cómo sucedió el error se puede inferir que es una corrupción de archivos en esa partición que impide el inicio del sistema.

Al intentar verificar el estado de esa partición con la instrucción btrfs check /dev/sda3 obtengo lo siguiente:

parent transid verify failed on 165429248 wanted 13999 found 13453
parent transid verify failed on 165429248 wanted 13999 found 13453
parent transid verify failed on 165429248 wanted 13999 found 13453
parent transid verify failed on 165429248 wanted 13999 found 13453
Ignoring transid failure
Couldn't setup extent tree
ERROR: cannot open file system

Como sugiere la primera descripción del error intento el comando systemctl status sysroot.mount. Esto me da toda la información del error que necesito para continuar.


systemctl status sysroot.mount



Ojo: Es muy importante tomar en cuenta que se puede perder información al ejecutar este comando por lo que sugiero mucho que hagan una copia de respaldo antes de intentar esto. Lo que yo hice fue clonar mi máquina virtual antes de esto en caso de no poder recuperarla.

El comando es: mount -t btrfs -o recovery,nospace_cache,clear_cache DEVICE MOUNTPOINT donde DEVICE es /dev/sda3 y MOUNTPOINT es /sysroot en mi caso.
:/# mount -t btrfs -o recovery,nospace_cache,clear_cache /dev/sda3 /sysroot
Una vez ejecutada el comando obtengo esta salida:

mount -t btrfs -o recovery,nospace_cache,clear_cache /dev/sda3 /sysroot


Después de esto apago la máquina con init 0 y la vuelvo a iniciar. 
Con esto ya puedo acceder nuevamente a mi maquina virtual. 


VirtualBox Oracle Linux Desktop


Les dejo link del video del procedimiento: https://youtu.be/UrEPbQikLPY 
 
Espero les sirva.

miércoles, 8 de julio de 2020

Cómo ver u ocultar contraseña con Javascript y jQuery

Cómo ver u ocultar contraseña con Javascript o jQuery


Hola.

En este post voy a compartir el código que pueden usar para ver u ocultar una contraseña con Javascript puro y con jQuery.

Se ha vuelto muy común en los formularios de login o de registro el ofrecer la posibilidad de ver y ocultar un campo de seguridad. El campo de seguridad más común es el de contraseña (input type=password)

ver-ocultar-contrasena-con-javascript-jQuery


En este caso estoy usado un objeto de tipo button y sus eventos de onmousedown y onmouseup

Los eventos dependerán del objeto que estén usando pero en general son los mismo eventos para cualquier tipo de objeto HTML. La funcionalidad y la manera de aplicarlo dependerá de sus requerimientos.

Les dejo abajo dos maneras jugando con los eventos y en Javascript puro además de jQuery.

Hay algo mágico al usar Javascript puro, es como volver el tiempo y usar el pelo largo 😂😄 y sobre todo sin librerías extras. Para el código con jQuery bueno ya saben que deben tener la librería incluida en su archivo.

1. Click al botón cambia de password a text y viceversa.

Javascript
<button type="button"  onmousedown="var p=document.getElementById('Password');p.type=='password'?p.type='text':p.type='password';">Click Me!</button>
jQuery
<button type="button"  onmousedown="$('#Password').attr('type')=='password'?$('#Password').attr('type','text'):$('#Password').attr('type','password');">Click Me!</button>

2. Presionado el botón cambia a texto y liberando el botón cambia a password.

Javascript
<button type="button"  onmousedown="var p=document.getElementById('Password');p.type='text'" onmouseup="var p=document.getElementById('Password');p.type='password';" >Click Me!</button>
jQuery
<button type="button"  onmousedown="$('#Password').attr('type','text');" onmouseup="$('#Password').attr('type','password');" >Click Me!</button>


Espero les sirva.