Chatear en RedIrc

lunes, 16 de mayo de 2016

Redimensionar discos virtuales de VirtualBox

El siguiente procedimiento consiste en aumentar el tamaño de nuestro disco virtual por falta de espacio sin perder los datos en este usando VBoxManage incluido en VirtualBox.


Requisitos:

  • El disco a expandir debe ser dinámico.
  • El formato debe ser VDI o VHD.
  • El tamaño a expandir debe ser mayor que el actual.

El comando genérico es el siguiente:
VBoxManage modifyhd "Localización" --resize X

Donde:
  • Localización es el nombre o identificador (UUID) del disco duro.
  • X serán los megabytes a expandir, este debe ser mayor al espacio actual.

La localización o uuid de nuestros discos duros los podemos comprobar con el comando:
VBoxManage list hdds

UUID:                  694d5892-ad30-4cea-86fd-27ac2f9a12fd
Parent UUID:    base
State:                    created
Type:                    normal (base)
Location:             /home/lugonzaro/VirtualBox VMs/windows 10/windows 10.vdi
Storage format: VDI
Capacity:            81920 MBytes
Encryption:        disabled

Como ejemplo voy a expandir a 100GiB la capacidad de un disco virtual con uuid "694d5892-ad30-4cea-86fd-27ac2f9a12fd" que tiene actualmente 80GiB (aumentando 20GiB), por lo que ejecuto lo siguiente:
VBoxManage modifyhd "694d5892-ad30-4cea-86fd-27ac2f9a12fd" --resize 100000

Si tu disco no es compatible porque no es un disco dinámico puedes convertirlo usando clonemedium:
VBoxManage clonemedium <UUID> <OUTPUT> --format VDI --variant Standard
Por ejemplo:
VBoxManage clonemedium 694d5892-ad30-4cea-86fd-27ac2f9a12fd "Windows 10.vdi" --variant Standard --format VDI

Este proceso no elimina ningún dato por lo que es seguro. Después debes seleccionar el disco creado desde VirtualBox:

Seleccionar disco virtual en virtualbox

Una vez que comprobemos que funciona correctamente nuestra maquina virtual podemos eliminar la imagen vieja.

Una vez que hemos expandido nuestro disco duro tenemos que asignarla en la maquina virtual ya que esta se crea sin formato, en este caso, para Windows nos dirigimos al Administrador de discos y la expandimos dando click secundario sobre la que queremos asignar el espacio:

Administrador de discos, expandir

Seguimos el asistente. Al finalizar dispondremos de una partición con mayor tamaño y sin perder los datos de nuestra máquina virtual ;).

En máquinas virtuales Linux podemos usar gparted para redimensionar la partición desde un LiveCD como se muestra en el siguiente video (doble click para ver en pantalla completa):


viernes, 13 de mayo de 2016

Resolver los típicos problemas de apt y programas en Linux

En ciertas ocasiones ..., ¿ a quien no le ha pasado que al intentar ejecutar alguna aplicación no inicia sin mostrar mensajes ? En este artículo os voy a decir la manera más común para resolver este y otros problemas relacionados con apt o al compilar aplicaciones en Debian, Ubuntu o derivados.

Partimos en ejecutar la aplicación desde un terminal, esto nos mostrará la información necesaria para proceder a su resolución, si no sabes el nombre de la aplicación puedes arrastrar la aplicación en cuestión desde la X a un terminal para saber su ubicación:

Arrastrar aplicacion al terminal

Una vez sabiendo la ubicación de la aplicación buscaríamos la línea que empieza por Exec usando egrep, por ejemplo:
egrep ^Exec '/usr/share/applications/usb-creator-gtk.desktop'

Exec=usb-creator-gtk

Como vemos, el comando que ejecuta la aplicación es usb-creator-gtk.


Tabla de contenido:



Error while loading shared libraries



Normalmente una aplicación para que se pueda ejecutar necesita ciertas dependencias, estas se instalan automáticamente en la mayoría de casos, por ejemplo, podremos comprobar con apt las dependencias de una aplicación ejecutando lo siguiente:
apt-cache depends nmap

nmap
    Depende: libc6
    Depende: libgcc1
    Depende: liblinear3
...

Las dependencias se deben de instalar automáticamente usando nuestro gestor de paquetes, pero ¿ qué pasa cuando alguna de las dependencias falta ? por ejemplo, al ejecutar nmap:

nmap: error while loading shared libraries: liblua5.2-lpeg.so.2: cannot open shared object file: No such file or directory

Como vemos falta la librería liblua5.2-lpeg.so.2 para que nmap se pueda ejecutar, ahora la pregunta sería: ¿ Cómo se que tengo que instalar para proveer dicha librería ? la respuesta es usando apt-file.

Apt-file es una interesante aplicación que nos va a permitir escudriñar los paquetes para localizar la aplicación conociendo su librería.

Para instalar apt-file:
sudo apt install apt-file
Actualizamos la base de datos por primera vez y buscamos la librería usando apt-file:
sudo apt-file update
apt-file search liblua5.2-lpeg.so.2

lua-lpeg: /usr/lib/x86_64-linux-gnu/liblua5.2-lpeg.so.2
lua-lpeg: /usr/lib/x86_64-linux-gnu/liblua5.2-lpeg.so.2.0.0

Como vemos en la parte izquierda nos dice el paquete que proporciona la la librería que nos falta, por lo que la instalamos:
sudo apt install lua-jpeg
Ahora si volvemos a probar debería funcionar la aplicación. En algunos casos puede que nos funcione con el siguiente comando:
apt -f install
Si compilamos la aplicación sin error alguno y no te encuentra alguna librería suele ser debido a que las librerías se instalaron en una ruta que el sistema no encuentra, puedes probar a actualizar la cache para ver si el sistema la encuentra:
sudo ldconfig
Si persiste el problema puedes probar a indicar la ruta donde el sistema debe de buscar las librerías usando la variable de entorno LD_LIBRARY_PATH,  habitualmente las aplicaciones compiladas suelen colgar del directorio /usr/local, por ejemplo:
LD_LIBRARY_PATH=/usr/local/lib nombre_aplicacion
Un buen hábito es usar el parámetro --prefix en el script configuration, por ejemplo:
./configure --prefix=/usr/local
También puedes añadir el directorio de tus librerías en /etc/ld.so.conf.d/, por ejemplo:
echo "/usr/local/lib" | sudo tee -a /etc/ld.so.conf.d/lib_app.conf
sudo ldconfig
Por último y no menos importante es leer el archivo README/INSTALL para verificar que no te falte algún paso antes de usar la aplicación.




Violación de segmento (segmentation fault)



El programa intenta acceder a una zona de memoria reservada, más allá de los límites que el sistema operativo ha asignado debido a un error de programación (bug), una aplicación modificó el programa o una interrupción de la energía brusco puede causar el problema. Para solucionar este problema puedes probar a reinstalar el paquete, por ejemplo para nmap:
sudo apt install --reinstall nmap
Si lo compilastes:
make clean && make && sudo make install
Si no se soluciono reinstalando la aplicación prueba a reinstalar las librerías asociadas a la aplicación:
sudo apt-cache depends nmap | awk '{print $2}' | xargs sudo apt install --reinstall
Si no funciono puede que sea debido a que tengas problemas en el disco duro, no estaría de más hacer un test con fsck en busca de sectores dañados, sobre todo si el PC fue apagado bruscamente, por ejemplo para buscar errores en la partición sda1:
fsck -pcfv /dev/sda1
Por último y definitivamente se trata de un bug en el programa, puedes ponerte en contacto con el desarrollador.




Comando no encontrado (Command not found)




Aunque parezca estúpido este problema sigue pasando y mucho, esto se debe a que el sistema no encuentra el programa en las rutas predefinidas por el sistema, estas rutas están definidas en una variable de entorno llamada PATH, podemos ver las rutas actuales de esta manera:
echo $PATH
/usr/local/sbin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

Cada vez que ejecutamos una aplicación el sistema lo busca en las ubicaciones definidas en la variable PATH, si no la encuentra nos dice que no encontró la orden, una solución es usar rutas absolutas como por ejemplo /usr/local/bin/nmap o añadir en el PATH la ruta /usr/local/bin/ de esta manera:
export PATH=${PATH}:/usr/local/bin/
Esto lo podemos añadir a nuestro archivo ~/.bashrc para no escribirlo siempre, de esta manera se exportará al iniciar el terminal.





En Linux/Unix existen 3 tipos de permisos (entre otros) para archivos/carpetas en bloques de 3 para gestionar los permisos del propietario del archivo, el grupo al que pertenece el archivo y los del resto de usuarios y son los siguientes:
  1. r:  Read, el archivo puede leerse.
  2. w: Write, el archivo tiene permisos para escribir
  3. x:  Execute, el archivo puede ejecutarse
Ejemplo:

ls -l programa
-rw------- 1 lugonzaro users 0 may 12 21:49 programa

Como vemos el propietario del archivo es el único que puede leer(r) y escribir(w) en el archivo pero no ejecutarlo(x), o sea, le falta el permiso para poder ejecutarse, por lo que tendríamos que permitirlo usando el siguiente comando:
chmod +x programa
Una vez que tiene el permiso ya podemos ejecutarlo:
./programa
hola mundo




E: No se pudo bloquear /var/lib/dpkg/lock




Es uno de los mensajes típicos cuando usamos apt en Debian o distribuciones derivadas, este mensaje es debido a que otro gestor de aplicaciones a bloqueado el uso de apt y cuando intentamos acceder a él nos devuelve un error.

Para comprobar quién lo está usando podemos ejecutar el siguiente comando:
sudo fuser -v  /var/lib/dpkg/lock

                               USUARIO     ORDEN DE ACCESO PID
/var/lib/dpkg/lock:  root       3206 F.... synaptic

Como podemos observar el gestor de paquetes synaptic está abierto y es el causante del bloqueo, lo que debemos de hacer es cerrar synaptic (si no está haciendo nada) O hacer la operación desde este. Una manera de cerrarlo directamente es matando el proceso que lo usa:
sudo fuser -vki /var/lib/dpkg/lock




La arquitectura del paquete (i386) no corresponde con la del sistema (amd64)




Este error es debido a que estamos usando un sistema operativo de 64 bits y estamos intentando instalar aplicaciones de 32 bits con dpkg configurado para 64 bits, si mostramos las arquitecturas permitidas debería salir al menos i386:
sudo dpkg --print-foreign-architectures
Para solucionar esto debemos añadir también la arquitectura de 32 bits a dpkg:
sudo dpkg --add-architecture i386
sudo apt update
sudo apt install libc6:i386 libncurses5:i386 libstdc++6:i386
sudo apt -f install
Podemos añadir otras, estás pueden ser:
setarch --list
uname26
linux32
linux64
i386
i486
i586
i686
athlon
x86_64

Las siguientes veces que intentes instalar algún paquete de 32 bits no tendrás problemas con apt/dpkg.




dpkg: problemas de dependencias impiden la configuración de *



Este error se debe a que el paquete que intentamos instalar tiene dependencias y estas no se encuentran instaladas en nuestro sistema, por lo que para solucionarlo simplemente debemos instalarlas o forzar la instalación y reparar con apt --fix-broken:
sudo dpkg --force-depends -i "TU paquete.deb"
sudo apt --fix-broken install -y
Otro método es usar gdebi (la opción más recomendada), este ya se encarga automáticamente de instalar las dependencias y utiliza un front-end:
sudo apt install gdebi -y
sudo gdebi -n "TU paquete.deb"
Puedes asociar los paquetes deb a gdebi, de esta forma al dar doble clic sobre uno se abrirá gdebi (recomendado):

nautilus - Bbrir con

nautilus, Abrir con GDebi


Al ejecutar el script configure puede que nos salga algo similar y es debido como os podéis imaginar a que no se encuentra cierta librería en el sistema instalada por lo que la compilación se detiene. Para resolver el problema simplemente debemos instalar las dependencias, estas suelen venir descritas en el archivo README/INSTALL del código fuente, por ejemplo, en el caso de reaver dice lo siguiente en docs/README:

Reaver is only supported on the Linux platform, requires the libpcap and libsqlite3 libraries, and can be built and installed by running:
$ ./configure
$ make
# make install

Por lo que tendríamos que instalar libpcap y libsqlite3 antes:
sudo apt install libpcap0.8-dev libsqlite3-dev
./configure
make && sudo make install
Como vemos instalamos los programas dev, os preguntaréis como se que son esas concretas, la respuesta es prueba/error >:-), no hay muchas donde elegir tampoco si escribimos sudo apt install libpcap y seguido damos varias veces a la tecla TAB nos sale lo siguiente:
sudo apt install libpcap
libpcap0.8       libpcap0.8-dbg   libpcap0.8-dev   libpcap-dev      libpcapnav0      libpcapnav0-dev




«/var/lib/dpkg/lock» - open (13: Permiso denegado)



Esto es debido a que no tenemos permiso para usar apt/dpkg, para solucionarlo probar a escribir antes sudo, por ejemplo:
sudo apt update
Si tras la ejecución del comando anterior te devuelve el mensaje "no está en el archivo sudoers." o "is not in the sudoers file." el usuario no se encuentra en el grupo "sudo" por lo que podemos añadirlo antes con el siguiente comando:
gpasswd -a TU_usuario sudo
Si el usuario esta activo debe de salir de la sesión para que los cambios se actualicen correctamente.




ImportError: No module named *


Este error es debido a que le falta algún módulo de python que no tienes instalado, por ejemplo:

ImportError: No module named 'cairo'

Tendríamos que buscar el módulo de python cairo y instalarlo:
apt search cairo | grep python
sudo apt install python3-cairo

miércoles, 11 de mayo de 2016

Como liberar espacio en nuestro disco duro en Ubuntu Linux

Vaciar la palepera

Los que dispongan de poco espacio en el disco duro sabemos lo importante que es la optimización y compresión de información en nuestro ordenador, Linux, como cualquier otro sistema operativo mantiene diversa información, datos de caché y aplicaciones que no usamos comprometiéndonos el espacio del disco, en este artículo os voy a dar unos trucos y pautas para liberar espacio.


1.0 - Gestor de paquetes:



1.1 - Apt Clean y Autoclean:


Cada vez que instalamos una aplicación usando nuestro gestor de paquetes como apt se descarga de Internet y se almacena en un directorio para su posterior instalación, estos paquetes, por defecto, se mantienen en el disco concretamente en la ruta /var/cache/apt/archives/

Para eliminar todos los paquetes podemos ejecutar el siguiente comando:
sudo apt clean
Como alternativa quizás nos interese solo borrar los paquetes con versiones anteriores a las que tenemos instaladas por si necesitamos reinstalar y no bajarlo de nuevo de Internet:
sudo apt autoclean
Esto lo tendríamos que hacer cada cierto tiempo pero podemos hacer que apt lo haga automáticamente cada cierto tiempo, para ello modificar el token AutocleanInterval en el archivo /etc/apt/apt.conf.d/10periodic, por ejemplo:

APT::Periodic::AutocleanInterval "7";

El número indica los días a esperar antes de limpiar los archivos deb de /var/cache/apt/archives/, en este caso lo hace cada 7 días.


1.2 - Usar el parámetro purge en vez de remove:


La eliminación de paquetes elimina parte de los archivos de este dejando por lo general pequeños archivos de configuración (paquetes residuales) de usuario por seguridad que fueron modificados, por ejemplo:
sudo apt remove un_paquete
En cambio, si queremos eliminar estos archivos de configuración (los perfiles de la aplicación almacenados en ~/.* no se eliminan) con la consiguiente liberación de espacio usaremos purge:
sudo apt purge un_paquete


1.3 - Autoremove:


Cuando instalamos un paquete normalmente se instalan sus dependencias que suelen ser librerías necesarias para que el paquete pueda ejecutarse , algo normal en Linux, el tema es cuando ya no queremos el paquete y lo eliminamos, sus dependencias por lo general no se eliminan con él quedándose en el sistema. Para eliminar estos paquetes se usa autoremove:
sudo apt autoremove
Para automatizar esta tarea podemos cambiar el token Remove-Unused-Dependencies a true en el archivo /etc/apt/apt.conf.d/50unattended-upgrades (si no lo tenéis lo creáis), debe quedar así:

Unattended-Upgrade::Remove-Unused-Dependencies "true";

Por seguridad, NO se eliminan los viejos kernels instalados, estos paquetes ocupan bastante en el sistema, si queremos que sean borrados tenemos que modificar el archivo /etc/kernel/postinst.d/apt-auto-removal, que es el que crea el archivo /etc/apt/apt.conf.d/01autoremove-kernels con el token APT::NeverAutoRemove con todos los kernels incluido el instalado pero puede resultar algo complicado por lo que lo "más seguro" sería eliminarlos con seguridad manualmente:
sudo apt purge `dpkg -l | tail -n +6 | grep -E 'linux-image-[0-9]+' | grep -Fv $(uname -r) | awk '{print $2}'`
sudo update-grub
Asegurarse que se ha localizado correctamente el kernel al ejecutar update-grub antes de reiniciar:

update-grub

Con esto deberíamos asegurarnos de no eliminar el kernel actual, de todas maneras debemos confirmar (y) para aseguraros lo que eliminamos.


1.4 - Purgar paquetes residuales:


De vez en cuando conviene revisar los paquetes en busca de aquellos con un estado rc que son paquetes que se han eliminado (remover) y se mantiene la configuración (configure):
dpkg -l | grep ^rc
Estos los podemos eliminar sin problema, podemos ejecutarlo manualmente o por crontab el siguiente comando:
dpkg -l | grep '^rc' | awk '{print $2}' | xargs sudo dpkg --purge 2>/dev/null



2.0 - Eliminar paquetes innecesarios y compactar binarios



2.1 - Eliminar información extra en binarios


La mayoría de aplicaciones que instalamos en nuestro Linux contienen archivos binarios, éstos disponen de cierta información como datos de depuración que se puede eliminar ahorrando  espacio en el disco, para ello podemos recurrir al siguiente comando:
strip --strip-all binario
Para agilizar esto lo combinaremos con find para buscar todos los binarios del sistema y lanzar strip de esta manera:
find `echo $PATH | sed -e "s/:/ /g"` -type f -exec file -i '{}' \; | \
    grep charset=binary | \
    awk '{print $1}' | \
    cut -d':' -f1 | \
    xargs sudo strip -s

[warning headline="Uso de strip en caliente"]No debería haber problemas al usar strip en un sistema activo pero es recomendable hacerlo desde un LiveCD para evitar que el sistema se congele ya que lo estamos usando y strip modifica los binarios.[/warning]


2.2 - Eliminar paquetes que no usemos


La mayor cantidad de espacio se nos va instalando aplicaciones, muchas veces se instalan programas que ya no necesitamos como los archivos dev que contiene el código fuente del programa, son utilizados para desarrolladores o los que necesitan compilar algún programa, si no es tu caso puedes eliminarlos:
dpkg -l | egrep "\-dev" | grep development | awk '{print $2}' | xargs sudo apt purge

Otros paquetes se usan para depurar que habitualmente son los que terminan en dbg o dbgsym, estos contiene los símbolos de depuración, ocupan mucho espacio y conviene eliminarlos, sobre todo si no vamos a depurar ningún programa:
dpkg -l | egrep "\-dbg" | grep debugging | awk '{print $2}' | xargs sudo apt purge

Por último podemos hacer una búsqueda de aquellos paquetes que no usemos y considerar eliminarlos, sobre todo los que ocupen mucho:
sudo apt install wajig
wajig large
Para eliminar el que no usemos o creamos conveniente:
sudo apt purge el_paquete


3.0 - Sistema de ficheros y documentos



3.1 - Cambiar el porcentaje de bloques reservados:


De forma predeterminada, Linux tiene un poco de espacio reservado para el superusuario (root), esto significa que ningún usuario normal puede llenar su sistema de archivos hasta el 100%, y por lo que siempre va a tener suficiente espacio libre para continuar la función normal. Por lo general, cada sistema de ficheros tiene el 5% de espacio reservado, esto lo podemos observar con el siguiente comando:

sudo tune2fs -l /dev/sda1 | grep Reserved

Reserved block count:     2440857
Reserved GDT blocks:      1012
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)

Como vemos nos esta reservando alrededor de 2GB (tengo 43GB en esa partición), para cambiar este porcentaje, por ejemplo en la partición sda1 usaremos el comando siguiente:
sudo tune2fs -m 0 /dev/sda1
Al configurar la reserva a 0 lo estamos deshabilitando, ahora deberíamos de tener un 5% más de espacio.


3.2 - Eliminar la caché y archivos temporales al reiniciemos


Cuando navegamos por Internet o por nuestro disco duro con el explorador de archivos se crean unos archivos en nuestro directorio personal ubicado en ~/.cache, esta contiene, entre otras cosas, miniaturas de imágenes localizadas en ~/.cache/thumbnails donde se almacenan decenas de imágenes en miniatura, estas conviene borrarlas cada cierto tiempo, por defecto en Ubuntu está configurado a 180 días. 

Hay un "truco" para que al reiniciar el sistema se elimine esta caché y es crear un montaje con tmpfs y de paso optimizaremos el sistema un poco, para ello, añadimos lo siguiente a nuestro archivo /etc/fstab:

tmpfs /home/tu_usuario/.cache tmpfs defaults,mode=1777 0 0
tmpfs /tmp tmpfs defaults 0 0
tmpfs /var/tmp tmpfs defaults 0 0

Lo montamos:
sudo mount -a
Con lo anterior también eliminamos cualquier dato que pueda quedar residente como los archivos temporales de Google Chrome si lo usamos que se localiza en ~/.cache/google-chrome. Si usamos firefox los archivos temporales de Internet se almacenan en .mozilla/firefox/, para eliminarlos:
rm -rf ~/.mozilla/firefox/*
Si lo preferimos pulsamos a las teclas "Ctrl + SHIFT + Supr", Google Chrome:

Borrar datos de navegación

Firefox:

Limpiar todo el historial


3.3 - Eliminar archivos que ocupen demasiado


Si eres de los que descargan muchos datos de Internet puede que no sepas que ciertos archivos te están ocupando demasiado espacio en el disco, o quizás no sepas que archivo te esta consumiendo espacio, para ello tenemos el "Analizador de uso de disco" que nos ayudará:

Analizador de uso de disco

Podemos movernos dando clic con el ratón sobre el diagrama de la derecha y retroceder dando clic al centro del mismo, podemos comprobar la ruta donde nos está marcando en rojo:

Analizador de espacio de disco

Si somos un poco frikis podemos usar la terminal para localizar archivos que ocupen a partir de cierta cantidad de tamaño usando find, por ejemplo, mostrar los archivos que ocupan mas de 100 MiB en nuestra carpeta personal y mostrarlos:
find . -size +100M -print0 | xargs -0 ls -sdh | sort -k1,1n

1,9G ./.config/google-chrome/Default/File System/001/p/00/00000002
3,1G ./.config/google-chrome/Default/File System/001/p/00/00000004
9,9G ./VirtualBox VMs/Windows 7/Windows 7.vdi

Una vez localizados podemos pensar si lo borramos o traspasamos a otro lugar para liberar espacio.


3.4 - Vaciar la papelera de reciclaje


Como no, esto que no se nos olvide, la información que eliminamos desde el entorno gráfico suele ir al directorio ~/.local/share/Trash/files a no ser que al eliminar un archivo pulsemos la tecla "SHIFT Mayús + Supr", podemos borrarlo desde el entorno gráfico o por consola:
rm -rf ~/.local/share/Trash/files/*

En el caso de Ubuntu/Unity damos clic secundario en la papelera situada en la parte inferior del lanzador:

Vaciar la papelera



3.5 - Compactar bases de datos sqlite


Muchas aplicaciones hacen uso de base de datos del tipo sqlite ya que resulta muy versátil, liviano y sin necesidad de tener un servidor de SQL instalado en la máquina, la información se almacena en archivos que suelen tener extensión .sqlite o .db, estas bases de datos se suelen fragmentar, sobre todo cuando la aplicación elimina/añade datos muchas veces como lo hace firefox que conviene compactar o ordenar.

Para compactar todas las bases de datos sqlite instalaremos la aplicación sqlite3 para trabajar con estas y luego compactamos:
sudo apt install sqlite3 --yes
find ~ -type f -exec file '{}' \; | \
    grep SQLite | \
    awk '{print $1}' | \
    cut -d':' -f1 | \
    xargs sqlite3 "VACUUM"

Al compactar las bases de datos se libera espacio ya que se ordenan y de paso estamos optimizando las aplicaciones.


4.0 - Como ultima salida redimensionar


Si después  de hacer lo anterior seguimos con poco espacio en una partición(es) puedes redimensionar el tamaño de otra que si lo tiene y asignarlo a la que no tiene usando gparted desde un LiveCD ya que no podremos manipular las particiones si está montada.

Debemos redimensionar particiones contiguas, si no, no nos dejará, os dejo un video para que veáis y os hagáis una idea de como sería el proceso:







lunes, 9 de mayo de 2016

Mandar mensajes por whatsApp desde cualquier PC

WhatsApp se ha convertido en uno de los clientes de mensajería más usado en plataformas móvil como Android o IOS pero desde no hace mucho los amigos de Facebook han creado una plataforma por Web que nos permite conectar a la red de WhatsApp, gracias a esto podemos usar cualquier PC sin importar el Sistema Operativo que usemos para enviar mensajes.

Para empezar a usar el WhatsApp por Web nos dirigimos a la página Web WhatsApp, nos debería salir algo similar a esto:

WhatsApp por web

Lo siguiente es emparejar nuestro móvil a la Web, abrimos WhatsApp en el móvil y nos dirigimos a Configuración en IOS y pulsamos sobre "WhatsApp Web":

Configuración de WhatsApp Web en IOS

Se abrirá la cámara, lo único que tenemos que hacer para terminar de emparejar es apuntar con el móvil a el código QR proporcionado anteriormente por la Web.

Como vemos es muy fácil, a partir de ahora podremos usar nuestro PC para enviar o recibir mensajes de nuestros amigos, o enviar archivos adjuntos.

Si usas AdBlock recordar deshabilitar sobre el dominio para tener todas las funcionalidades:

No actuar en paginas de este dominio

Actualmente soporta lo siguiente:
  1. Permite enviar imágenes y vídeos desde el PC.
  2. Permite capturar desde una webcam instalada en el PC.
  3. Permite enviar notas de sonido.
  4. Tiene una gran lista de emojis que puedes usar.
Algunas capturas:

Adjuntar fotos o imagenes en WhatsApp Web

Opciones del chat desde WhatsApp Web

Emojis del chat desde WhatsApp Web

Configuración desde WhatsApp Web

Opciones desde WhatsApp Web

Optimizar nuestro PC y Linux al máximo

Si dispones de un PC con pocos recursos, o bien, te gusta sacar el máximo rendimiento a tu maquina, esta guía te puede servir para conseguir que tu Sistema Operativo Linux vaya más rápido siguiendo algunos consejos y pautas empezando desde el inicio del ordenador, la BIOS, el gestor de arranque y el Sistema Operativo.


La principal clave está en la RAM


Slot de memoria RAM
La RAM (del inglés Random Access Memory) o memoria de acceso aleatorio juega un papel importante ya que es la que almacena la información del sistema operativo, programas y instrucciones del CPU, no cabe duda que si queremos que nuestro PC rinda bien debemos de disponer de suficiente memoria RAM. ¿ Por qué es importante disponer de mucha RAM ?.

Cuando usamos nuestro sistema, habitualmente usamos aplicaciones, por ejemplo Google Chrome para navegar por Internet, al ejecutarse en el sistema se reserva una cantidad de memoria RAM (de mayor o menor medida dependiendo de la aplicación), cuanta más memoria dispongas libre más rápida ira la aplicación así como las que abramos después, en cambio, sí tenemos muy poca, las aplicaciones irán más lentas llegando a un punto que no podrá ejecutar más programas o tardarán una eternidad en abrirse ralentizando el sistema operativo.



1.0 - Configurando la BIOS


No me voy a extender demasiado con esta sección, os contaré las opciones que más se notan en el rendimiento del sistema según mi experiencia. Recomiendo que tengáis a mano el manual de la placa base y os asegureis antes de cambiar nada, si vuestra BIOS tiene la opción de crear perfiles o copias de seguridad hacerla, así si pasa algo podéis regresar, de todas maneras en caso de un problema se puede hacer un HARD-RESET sin problemas mayores.


1.1 - Optimizar la memoria RAM:


Podemos intentar optimizar los DIMM de RAM siempre y cuando la placa base y la memoria admita overclocking (OC), se puede intentar subir un poco la tensión de las RAM (vDIMM) y el FSB (bus principal del sistema), a penas subir 1 Voltio el vDIMM y 50 MHZ el HTT o FSB se puede mejorar la RAM un 25% garantizando una latencia medianamente baja para obtener un buen rendimiento.

El truco consiste en bajar el multiplicador del CPU y subir la frecuencia del bus FSB para equilibrar debido a que al subir el FSB también lo hace el CPU.
[warning headline="Importante"]Informate del fabricante de la RAM la máxima tensión que puede admitir tu memoria y la frecuencia optima/maxima para evitar problemas en la memoria.[/warning]
En las placas modernas y sobre todo en las preparadas para hacer OC ya disponen de perfiles para optimizarlas sin necesidad de bajar frecuencias o tensiones:


Perfil de OC en RAM

De cualquier manera os recomiendo que reviséis el manual de la placa base/BIOS y consulte las especificaciones técnicas de vuestra memoria antes de hacer OC. Podeis comprobar desde linux la velocidad de escritura con dd mapeando a ram con tmpfs:
sudo mount -t tmpfs /mnt/test1 /mnt/test1
dd if=/dev/zero of=/tmp/test1/test bs=1M 
8010+0 registros leídos8009+0 registros escritos8399081472 bytes (8,4 GB, 7,8 GiB) copied, 1,38479 s, 6,1 GB/s



1.2 - Optimizar los discos duros:


Otro aspecto a tener en cuenta es elegir el modo en el que se comunica la controladora del disco, suele ser: IDE, SATA o AHCI, es recomendado elegir AHCI ya que este ofrece más compatibilidad para los nuevos estándares y un rendimiento mucho mayor que el sistema IDE. Para activarlo en la BIOS revisar el manual de la placa base, aunque suele estar en el menú Integrated Peripherals puede variar según modelos:


BIOS, modo ACHI

Salvar y salir de la BIOS (suele ser pulsando la tecla F10). En Linux no deberíamos tener problemas, se debería de cargar el módulo ahci, si no fuera así, añadir el módulo ahci manualmente a la lista de módulos:
echo "ahci" >> /etc/modules
En WIndows lo más seguro que te de un hermoso BSOD (Blue Screen Of Dead>:D, antes de cambiar nada debemos modificar una clave del registro, ejecutar cmd (Alt + F2) y escribir lo siguiente:
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\msahci" -v Start -d 0x0 -t REG_DWORD -f
Ahora si, cambiamos el modo AHCI, no deberías tener problemas al iniciar Windows.


1.3 - Deshabilitar aquello que no uséis:


Las BIOS vienen con una configuración genérica para mantener una compatibilidad con cualquier PC, lo que pasa que en la mayoría de casos tenemos diferentes dispositivos activados que son innecesarios, estos tienen reservado ciertos recursos hardware y memoria que podemos aprovechar para otras cosas, por ejemplo, si tenemos una tarjeta gráfica por PCIe, no tiene sentido tener activada la GPU interna:

Deshabilitar GPU en la BIOS

Con el sonido pasa lo mismo que con la gráfica, si disponemos de una PCI dedicada para ello deshabilitar la interna, así para los puertos serie, paralelo, tarjetas de red, etc ..., cualquier cosa que no uséis para liberar recursos, de esta manera estaremos optimizando el sistema general.



2.0 - Optimizar el sistema operativo


2.1 - Gestor de arranque


Para que el sistema operativo pueda iniciar se necesita un gestor de arranque (bootloader en inglés), este se encarga de preparar y gestionar ciertos parámetros que se pasaran al kernel de Linux. Yo personalmente uso una partición /boot separada por seguridad y velocidad, también uso un FS ext2, aunque se pueda usar ext3, ext4, ReiserFS, etc ..., lo cierto que me va muy bien, de paso compatible para GRUB/2 (ext4fs no es compatible con GRUB).

Una opción a tener en cuenta consiste en separar las particiones para aumentar la seguridad y velocidad , por ejemplo:

/dev/sda3      ext4        /
/dev/sda2      ext2        /boot
/dev/sda1      ext4        /home
/dev/sda1      reiserfs   /var

Al mantener las particiones separadas se lee/escribe de modo asíncrono. Otra opción a tener muy en cuenta es la creación de un sistema RAID 0, pero para esto último necesitas disponer de 2 o mas discos duros de igual caracteristicas.

También se nota el arranque al usar UEFI BIOS sobre el modo legacy, el problema que resulta engorroso sobre todo si quieres instalar otro OS todos deben de instalarse igual y aun no es compatible al 100% en Linux por lo que no lo use.

Para optimizar el sistema de archivos añadiremos elevator=noop al token GRUB_CMDLINE_LINUX_DEFAULT en el archivo /etc/default/grub quedando algo así:


GRUB_CMDLINE_LINUX_DEFAULT="quiet splash elevator=noop"


Actualizamos el grub:
sudo update-grub

elevator=noop usa un algoritmo de planificación de entrada/salida, tiene como objetivo disminuir los tiempos de búsqueda utilizado principalmente sobre memorias Flash, NAND o SDRAM y en dispositivos que carecen de dependencia a movimientos mecánicos como discos de estado sólido o SSD (Solid State Drive), si usas discos magnéticos probar el planificador cfq, el planificador deadline si vas a usar tu equipo como servidor.


2.2 - Optimizar el inicio del sistema:


En el proceso de arranque se cargan entre otras cosas el intérprete de órdenes /bin/bash, este resulta muy lento por lo que conviene cambiarlo por dash (/bin/sh), el uso de dash como el intérprete de órdenes del sistema mejorará el rendimiento general de éste, esto no altera el intérprete de órdenes que utilizan los usuarios. Para usar dash ejecutamos en un terminal: 
sudo dpkg-reconfigure dash 

Si a menudo haces reinicios del sistema en "caliente", el sistema pasa por todas las etapas del cargador de arranque normalmente (stages), carga el kernel y inicia los servicios normalmente, con kexec podemos evitar este proceso que sería más lento ya que proporciona la carga de un kernel en memoria y luego lo carga directamente utilizando la llamada al sistema kexec sin tener que pasar por todo el proceso normal de carga aumentando considerablemente la carga. Para instalarlo:
sudo apt kexec-tools
Por alguna razón no me funciona si kexec se encarga de los reinicios, por lo visto shutdown no soporta kexec-based, por lo que aquí le digo que no:
sudo dpkg-reconfigure kexec-tools
dpkg-reconfigure kexec-tools
Edito el archivo /sbin/reboot y sustituye la función do_stop () por esta:
do_stop () {
 # Message should end with a newline since kFreeBSD may
 # print more stuff (see #323749)
 log_action_msg "Will now restart"
 if [ -x /sbin/kexec ]; then
            kexec -l --append="`cat /proc/cmdline`" --initrd=/boot/initrd.img-`ls /lib/modules | sort -nr | head -n 1` /boot/vmlinuz-`ls /lib/modules | sort -nr | head -n 1`
            sync
            umount -a
            kexec -e
        else
            reboot -d -f -i
        fi
}
Ahora con ejecutar reboot ya debería funcionar.



2.3 - Usar tmpfs:


Tmpfs (antaño shmfs) es un sistema de ficheros soportado en Linux desde la versión 2.4 del kernel, esta se ubica en RAM, la información se pierde al reiniciar de ahí el nombre tmpfs o sistema de ficheros temporal, su uso habitual es el de crear espacios de trabajo donde hay muchos ciclos de I/O en el disco.

Para optimizar la lectura/escritura así como ahorrar ciclos en el disco duro vamos a crear 3 montajes, añadimos lo siguiente en /etc/fstab:

tmpfs   /home/tu_user/.cache      tmpfs   defaults,mode=1777    0   0
tmpfs   /tmp                                 tmpfs   defaults                        0   0
tmpfs   /var/tmp                           tmpfs   defaults                        0   0

Montamos todos los dispositivos del fstab:
sudo mount --all
Al usar este método también nos va a servir para limpiar los archivos temporales al reiniciar, ya que al volverse a montar se pierden los datos al igual que la memoria RAM.

En ~/.cache/ se guardan datos dinámicos como ~/.cache/thumbnails donde se almacenan las previsualizaciones de las imágenes, con esto se puede aumentar la carga en el explorador de archivos y para los que usen Google Chrome también vendrá bien ya que en ~/.cache se almacenan los archivos temporales de este aumentando la carga de contenido redundante de páginas web.

[update headline="Nota"]Si se agota el espacio asignado que por defecto es la mitad de la total de RAM, se usará la memoria de intercambio igual que cualquier otra partición. Se puede usar la opción size para definir un tamaño personalizado.[/update]



2.4 - Uso de prelink y preload:


Prelink y preload son excelentes utilidades que nos van a permitir acelerar la ejecución de aplicaciones ya que enlaza las librerías compartidas necesarias según vamos usando los programas más habituales cargandolos en RAM y ejecutándose más rápidas.

Para instalar en Ubuntu, debian o derivados usamos apt:
sudo apt install prelink preload
Activamos el servicio en el archivo /etc/default/prelink:

PRELINKING=yes 

Exploramos y enlazamos los binarios con las librerías por primera vez ejecutando:
sudo prelink -amvR
En el archivo /etc/prelink.conf se pueden definir librerías o binarios a considerar por defecto. Cada vez que se actualiza un binario debemos ejecutar prelink para que vuelva a enlazar las librerías, por lo que podemos añadir esto a apt para que se ejecute cada vez que hay cambios en algún binario:
echo DPkg::Post-Invoke {"echo Ejecutando prelink...; /etc/cron.daily/prelink";} >> /etc/apt/99prelink
Con preload en principio no he modificado nada, por defecto se ejecuta en segunda plano, hace comprobaciones cada 20 segundos de los procesos menores de 2 MiB, de todas maneras podemos estimar alguna modificación desde el archivo /etc/preload.conf como el ciclo.


2.5 - Sistema de ficheros


Algunos sistemas de ficheros a tener en cuenta:

  • XFS - Proporciona un rendimiento muy rápido en los archivos y sistemas de archivos grandes y es muy rápido en el formato y montaje, en contra es más lento cuando trata con muchos archivos pequeños.
  • ReiserFS - Es muy rápido, especialmente cuando se trata de muchos archivos pequeños. 
  • Btrfs - Parece ser el futuro de los sistemas de archivos de GNU/Linux y se ofrece como una opción para el sistema de archivos de root en todos las instalaciones de las distribuciones más importantes.
  • Ext4: Sistema de archivos rápido y seguro por excelencia de la mayoría de distribuciones Linux, relativamente reciente, es compatible con ext2 y ext3.


Ext4 (Fourth Extended Filesystem), este es una buena elección para la mayoría de usos, la diferencia con su hermano ext3 es que hace uso de diferentes extents y es algo más rápido. Si tienes un FS ext3 se puede portar a la versión 4 sin perder los datos ejecutando lo siguiente:
sudo apt install e2fsprogs
sudo tune2fs -O extents,uninit_bg,dir_index /dev/sdxy
fsck.ext4 -fyD /dev/sdxy
donde /dev/sdxy es la partición a convertir.

Podemos evitar que los archivos y directorios guarden información de la fecha de acceso para evitar lecturas/escrituras reiteradas cada vez que abrimos una carpeta, dejar que Linux haga la magia del cache, esto se nota sobre todo en portátiles, cada vez que lee algo tiene que escribir haciendo trabajar mas de lo necesario el disco duro que de otra manera estaría cacheado por el sistema.

Para deshabilitar los tiempos de acceso añadimos la opción noatime, ejemplo:

/dev/sda1    /                  ext4    defaults,noatime        0   0
/dev/sda2    /home         ext4    defaults,noatime        0   0
tmpfs          /tmp            tmpfs  defaults,relatime        0   0
/dev/sda3   /var/spool    ext4    defaults,relatime        0   0

Nota que /var/spool y /tmp esta relatime, esto es debido a que estas particiones se suele usar para mail y en la mayoría de casos se suele usar el modificador atime para saber cuando un archivo fue leído. Una opción mas "suave" es usar nodiratime para cubrir solo los directorios en vez de noatime. Si usas un SSD no se te olvide añadir también la opción discard.

Otro punto importante a tener en cuenta es la correcta elección del sistema journal en los FS ext3/4, existen 3 tipos:
  1. ordered: Escribe primero los datos asociados a los metadatos en el sistema de archivos antes de hacerlo en el registro. Si la prioridad es garantizar la integridad de datos o bien se carece de un sistema de respaldo de energía confiable, es la opción que debe utilizarse.
  2. journal: Es lo opuesto a ordered, obliga a escribir primero los datos asociados a los metadatos en el registro por diario y luego en el sistema de archivos, por lo cual utiliza un registro por diario más grande y el cual demora más tiempo en recuperarse en caso de una falla del sistema o interrupción de energía.
  3. writeback: Esta opción resulta la más rápida pero aumenta el riesgo de que los datos modificados recientemente se dañen durante un problema, se suele usar sobre servidores de archivos y/o ftps ya que da prioridad a la escritura.
Para modificar el sistema journal ejecutamos lo siguiente suponiendo que queremos usar writeback:
tune2fs -o journal_data_writeback /dev/sdxy
Ejemplo de partición en /etc/fstab

/dev/sda2    /home         ext4    defaults,noatime,data=writeback        0    0


2.6 - Elegir un entorno de escritorio adecuado


El entorno de escritorio es digamos la parte visual que envuelve al sistema dándole un aspecto mejorado. Entre los escritores más destacados que considero cito los siguientes:
  • KDE - Es una de las mas conocidas y completas, pero también la mas pesada y la que mas recursos consume, tenemos que elegir entre aspecto o velocidad.
  • GNOME - Un Entorno bastante usado en muchas distribuciones, dispone de varias bifurcaciones como mate, una de las usada por Linux Mint, pesa algo menos que KDE.
  • XFCE Se característica principalmente por ser rápido y ligero, sin dejar de ser visualmente atractivo y fácil de usar, es una buena elección para aquellos ordenadores con pocos recursos.
  • Enlightenment Entorno muy ligero, atractivo y configurable para X11 y Wayland, este escritorio es una de las principales opciones para ordenadores de bajas prestaciones, ofrece un aspecto muy bueno a costa de pocos recursos.
Podemos instalar cualquier escritorio, incluso usar varios pero lo normal es bajar una distribución que ya lo integre, por ejemplo, para KDE tenemos Kubuntu, para GNOME podemos usar Ubuntu, para usar XFCE tenemos Xubuntu y para Enlightenment podemos instalarlo así (desde Ubuntu Xenial):
sudo add-apt-repository ppa:niko2040/e19
sudo apt-get update
sudo apt-get install enlightenment

2.7 - Deshabilita servicios innecesarios


Cuantos más procesos estén en ejecución más recursos estaremos gastando, es conviene revisar estos y descartar aquellos que no vayamos a utilizar, en Gnome/Ubuntu disponemos de una aplicación llamada gnome-session-properties donde podemos ver los programas que se van a cargar al iniciar la sesión de Linux, algunos se encuentran ocultos por lo que ejecutamos el siguiente comando para poder mostrar todos y lanzamos la aplicación:
sed -i "s/NoDisplay=true/NoDisplay=false/g" /etc/xdg/autostart/*.desktop
gnome-session-properties

Preferencias de las aplicaciones al inicio

Como vemos en la imagen anterior únicamente damos clic en la casilla para deshabilitar la aplicación o servicio, de esta manera evitamos que se inicien, aunque no lo desinstalamos de esta manera.

También conviene hacer un repaso de los servicios del sistema y deshabilitar los que no usemos usando systemd:
sudo systemctl list-units --all --state=active --type=service
Para deshabilitar un servicio, por ejemplo el servicio ModemManager.service:
sudo systemctl disable ModemManager.service
sudo systemctl stop ModemManager.service


2.8 - Variables recomendadas en el kernel


Linux mantiene una memoria de intercambio ubicada en el disco duro, esta es usada cuando ciertos procesos se encuentran inactivos en mucho tiempo o se está agotando la memoria RAM, cuando esto ocurre el sistema operativo lo mueve al disco duro, de ahí que se denomine a esta memoria de intercambio, este proceso resulta muy lento debido a que la memoria del disco duro suele ser lenta en comparación con la física.

Este proceso de intercambio es manejado por una variable del kernel llamada swapping que define un porcentaje. Podemos comprobar la memoria usada con el comando:
swapon -s
Filename Type Size    Used  Priority
/dev/sda4    partition  3811324    0           -1

Por defecto la variable swappiness está definida a un 60%, por lo que cuando el sistema lo supera comenzará a intercambiar memoria con el disco. Si disponemos de suficiente RAM, al menos 4GB este porcentaje conviene bajarlo para que las aplicaciones trabajen mas en RAM y por lo tanto rindan más, un valor de 20 es suficiente:

echo vm.swappiness=20 | sudo tee -a /etc/sysctl.conf 
sudo sysctl -p
cat /proc/sys/vm/swappiness

sábado, 7 de mayo de 2016

Añadir dispositivos PCIs a VirtualBox

Virtualbox, device passthrough

Ya vimos en el articulo sobre virtualización kvm el acceso directo a dispositivos físicos desde las máquinas virtuales, lo que se llama "device passthrough", gracias a la gestión de memoria IOMMU (input–output memory management unit), VirtualBox no es menos ya que también lo permite, lo que no he logrado que funcione es mapear la GPUs a la maquina virtual.


Requisitos para usar Device passthrough


  • El procesador debe soportar la virtualización VT-x o AMD-v.
  • La bios debe soportar IOMMU.
  • El kernel debe de disponer del soporte para IOMMU y el mapeo DMA.
  • Se debe activar IOMMU como parámetro en el arranque.


Puesta a punto


Para comprobar si nuestro CPU soporta la virtualización ejecutar lo siguiente:
egrep -c '(vmx|svm)' /proc/cpuinfo
Si se muestra algo es que si lo soporta, de lo contrario deberemos comprobar en la BIOS si está deshabilitado. Para usar PCI Passthrough añadimos el parámetro intel_iommu=on en /etc/default/grub:


GRUB_CMDLINE_LINUX_DEFAULT="quiet splash intel_iommu=on"




Uso de VBoxManage para mapear dispositivos


Para añadir una PCI a VirtualBox usaremos el siguiente comando generico:
VBoxManage modifyvm "VM_NAME" --pciattach bus:device.function
Donde:
  • VM NAME es el nombre que dimos a nuestra maquina virtual que podemos ver con el comando:
    VBoxManage list vms
  • bus:device.function son unos números que identifica a cada tarjeta en el sistema, estos los podemos ver con el comando:
    lspci -nn

Por ejemplo, para añadir una una tarjeta de red PCI:
lspci -nn | grep Ethernet
03:00.0 Ethernet controller [0200]: Qualcomm Atheros Killer E220x Gigabit Ethernet Controller [1969:e091] (rev 10)


El bus sería 03, device: 00 y function sería 0, por lo que el comando resultaría para una maquina llamada Windows 7:
VBoxManage modifyvm "Windows 7" --pciattach 03:00.0
[update headline="Nota"]La maquina virtual debe estar apagada, de lo contrario no nos dejará modificar nada.[/update]
Para liberar la PCI:
VBoxManage modifyvm "Windows 7" --pcidetach 03:00.0

Lo siguiente será iniciar la maquina virtual "Windows 7", comprobar en el Administrador de discos si esta disponible y si necesitamos meter el driver:

Administrador de dispositivos

[warning headline="Cuidado"]Al añadir dispositivos desde nuestra PC a la maquina virtual estos cambian el espacio de trabajo por lo que son reservados y no se pueden usar en el PC, por lo que tenemos que tener precaución de no añadir algo necesario.[/warning]

Virtualización de Windows con kvm en Ubuntu

KVM (Kernel-based Virtual Machine)  es una de las grandes soluciones de software libre para virtualización sobre plataformas x86 y x86_64, se encuentra disponible en el kernel de Linux desde su versión 2.6.20, soporta virtualización de procesadores Intel (Intel VT-x) y AMD (AMD-V).

Lo más destacado es su gran rendimiento con la posibilidad de crear pasarelas de hardware (passthrough) a través de IOMMU (input–output memory management unit) permitiendo la comunicación directa entre la memoria virtual y la física (DMA).


Requisitos previos a la instalación


Para usar kvm al máximo rendimiento necesitamos disponer de soporte para virtualización VT-x/AMD-v en nuestro procesador, podemos comprobar si disponemos de las banderas vmx o svm en el CPU con el siguiente comando:
egrep -c '(vmx|svm)' /proc/cpuinfo
Si no se muestra nada tras la ejecución del comando anterior debemos de comprobar si disponemos de tal soporte en nuestro CPU, en tal caso, activarlo en la BIOS, en mi caso para Intel:

Activar virtualizacion para CPU Intel

Otra manera de comprobar si disponemos de soporte para kvm es usando kvm-ok:
sudo apt install cpu-checker
kvm-ok
INFO: /dev/kvm exists
KVM acceleration can be used

Sí vamos a añadir dispositivos PCI en nuestras máquinas virtuales necesitamos activar iommu en el arranque del sistema añadiendo el parámetro intel_iommu en la línea GRUB_CMDLINE_LINUX_DEFAULT del archivo /etc/default/grub, quedando algo así:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash intel_iommu=on"

[update headline="Para CPU AMD"]Si tu procesador es AMD sustituye intel_iommu por amd_iommu[/update]
Actualizamos grub y reiniciamos el sistema antes de seguir:
sudo update-grub
sudo reboot
Comprobamos si IOMMU se activa y no hay problemas revisando el registro:
dmesg | egrep '(AMD-Vi|DMAR|IOMMU)'
0.000000] DMAR: IOMMU enabled




Instalación de KVM


Para instalar kvm en Ubuntu, Debian o derivados usaremos apt:
sudo apt-get install qemu-kvm libvirt-bin ubuntu-vm-builder bridge-utils virt-manager ovmf
virt-manager es una herramienta que nos va a permitir crear y modificar máquinas virtuales fácilmente a través de un interfaz gráfico.

Añadir los grupos libvirtd y kvm al usuario actual, luego debemos reiniciar la sesión para actualizar los cambios en el usuario:
sudo usermod -aG libvirtd,kvm $USER
sudo chown root:libvirtd /dev/kvm
gnome-session-quit


Creando una máquina virtual con virt-manager


Como ya dijimos, virt-manager es una excelente herramienta para manejar máquinas virtuales kvm, ejecutamos virt-manager (Alt + F2) y iniciamos el creación de una máquina virtual nueva pulsando el primero icono en la parte superior izquierda, en este ejemplo crearé Windows 7.

virt-manager Creación de una maquina virtual
Como vemos, podemos instalar nuestro sistema operativo desde diferentes medios, lo habitual es usar una imagen ISO, continuamos el asistente hasta llegar a la última etapa donde marcaremos "Personalizar configuración antes de instalar":

virt-manager Personalizar sistema operativo
Al dar al botón Finalizar nos mostrara los detalles del hardware virtual, desde aquí podemos añadir, eliminar o modificar dispositivos máquinas virtuales.

Es recomendado usar el firmware OVMF para iniciar las máquinas virtuales con soporte UEFI, necesario si queremos añadir una GPU que tenga soporte UEFI:

virt-manager Firmware UEFI


En Memoria elegimos acorde al sistema operativo que vamos a instalar, en este caso, para Windows 7 con 4096 MiB es más suficiente.

En el apartado CPUs, en modelo tengo host-passthrough, esta opción hace que el procesador virtual tenga las mismas características que el real, está NO está disponible en la lista, debemos escribirlo.

En SATA Disco * tengo las siguientes opciones qué es lo recomendado si quieres sacar el máximo rendimiento:

virt-manager opciones de disco

En SATA CDROM * definimos el origen de nuestra imagen ISO de Windows para empezar la instalación, esta la podemos añadir dando al botón Conectar si no la tendríamos definida:

virt-manager montar imagen ISO

Antes de iniciar la instalación vamos a añadir un dispositivo CDROM nuevo para montar los virtio drivers (clic para descargar los últimos drivers) que son actualizaciones y drivers que debemos de instalar/actualizar en nuestra máquina una vez la instalemos, pulsamos en "Añadir hardware" en la parte inferior de la ventana y seleccionamos la ubicación donde los descargamos, en "Tipo de dispositivo" elegimos "Dispositivo CDROM":

virt-manager añadir un cdrom

Como ya dijimos anteriormente, podemos añadir dispositivos PCI/USB, pero hay que tener en cuenta que el dispositivo que elijamos se reservará para la máquina virtual por lo que tendremos que usar aquellos que no usemos en la maquina host o usar una conexión VNC remota, esta ya lo proporciona kvm.


[update headline="GPU Passthrough"]Para usar de pasarela la GPU esta debe soportar UEFI, para comprobar si nuestra tarjeta lo soporta leer esto.[/update]

Si estamos conectados por terminal remotamente sin entorno gráfico podríamos hacer las modificaciones virsh o instalando la maquina virtual con virt-install, para editar una existente llamada win7:
sudo virsh edit win7


Instalación de Windows 


En este punto ya tenemos preparado ĺo necesario para empezar la instalación de nuestro sistema operativo dando al botón "Iniciar la instalación" en la parte superior de la ventana:

virt-manager iniciar la instalacion

Una vez instalado el sistema debemos de actualizar y instalar los controladores PCI y VGA, para ello, nos dirigimos al Administrador de dispositivos y damos clic secundario sobre cada uno de ellos => "Actualizar software de controlador":

Windows, actualizar software de controladores

windows, busca software de controladores en el equipo

seleccionar la capeta que contiene los controladores en windows

Así con todos los que faltan, incluido el adaptador de pantalla, al reiniciar deberemos de notar la diferencia.

viernes, 6 de mayo de 2016

Optimizar el arranque y el sistema en Windows

Voy a describir unas pautas sencillas para optimizar al máximo el inicio de nuestro sistema operativo Windows, esto es válido para las versiones de Windows Vista o superiores, también trataremos de optimizar el sistema usando las herramientas nativas del sistema y daré algunos consejos según mi experiencia.


Optimizar el inicio de windows


Si dispones de un procesador multicore, cosa que en estos tiempos es muy común disponer de uno, podemos iniciar nuestro sistema en paralelo, usando todos los procesadores para iniciar el sistema que por defecto sera 1. Para cambiarlo ejecutamos msconfig (WIN + R) y nos dirigimos a la ventana Arranque, abajo pulsamos en el botón "Opciones avanzadas", damos clic sobre la casilla "Número de procesadores" seleccionando el mayor número de la lista de abajo. También podemos seleccionar la "Cantidad máxima de memoria", aquí usaremos un valor expresado en MB, cuanto más grande mejor, quedando algo así:

Opciones de arranque de Windows

En la pestaña "Inicio de Windows" disponemos de los programas que se cargan al iniciar nuestra sesión, cuantos más programas tenga que cargar Windows mas lento sera la carga por lo que es conveniente deshabilitar aquellos programas que no vayamos a usar inmediatamente desmarcando las casillas correspondientes:

msconfig, inicio de windows

[update headline="Nota"]Al desmarcar las casillas de verificación no estamos desinstalando o eliminando las aplicaciones, simplemente lo que hacemos es que no se inicien automáticamente al cargar nuestra sesión.[/update]

De igual manera que las aplicaciones, Windows inicia unos servicios que pueden ralentizar la carga y el funcionamiento global del sistema, conviene deshabilitar los que no usemos, para evitar problemas es recomendado no deshabilitar los servicios de Microsoft a no ser que estemos seguros:

msconfig, servicios

Alguna otra opción o información sobre msconfig puede que nos interese leer desde la web de Microsoft. Al aceptar estos cambios nos preguntará si queremos reiniciar, podemos hacerlo y comprobar el resultado.


Eliminar aplicaciones y características de Windows que no usemos


Lo siguiente que podemos hacer ahora es eliminar aquellas aplicaciones que no usemos demasiado para ahorrar espacio en disco y optimizar el sistema en general, para ello ejecutamos appwiz.cpl (Ctrl + R), por ejemplo, para eliminar el Office:

Eliminar office en Windows

También podemos eliminar ciertas características que Windows tiene por defecto y que no usemos para nada, esto igual que desistalar aplicaciones conlleva optimizar el sistema y ganar más espacio en nuestro disco, damos clic en la parte izquierda sobre "Activar o desactivar las características de Windows" y desmarcamos la que nos interese, por ejemplo para desinstalar Internet Explorer:

Eliminar Internet Explorer


Mantener la vida a nuestro disco duro


Si disponemos de discos duros de estado sólido (SSD) este paso nos lo podemos saltar ya que apenas existe fragmentación, en el caso de los discos magnéticos debemos de defragmentar periódicamente el disco para ganar velocidad, esto es debido a que al irse escribiendo y borrando archivos continuamente en el disco duro, los fragmentos tienden a no quedar en áreas contiguas, así, un archivo puede quedar "partido" en muchos pedazos a lo largo del disco, el uso del desfragmentador de Windows ayudará a que estos archivos se ordenan ahorrando velocidad a la hora de leer del disco. Para iniciar el desfragmentador de Windows ejecutamos defrag (WIN + R), seleccionamos la unidad y damos clic en el botón "Desfragmentar disco":

Desfragmentar el disco en Windows

Esto puede tardar dependiendo del tamaño y velocidad del disco, mientras tanto, podemos programar esto automáticamente para olvidarnos de esto, damos clic al botón Configurar programación, marcamos la casilla "Ejecución programada (recomendado)" y elegimos la programación sobre los discos seleccionados que por defecto serán todos:

Programar la desfragmentación en Windows

Es recomendado deshabilitar el servicio del monitor de disco, para ello ejecutamos cmd y escribimos:
diskperf -N
También conviene de vez en cuando comprobar si existe algún problema en nuestro disco duro haciendo comprobaciones periódicas, esto además corregirá problemas que puedan existir en el sistema de ficheros (FS) y sectores dañados:
chkdsk /F /R /P
Nos preguntará si queremos ejecutar el comando en el próximo reinicio, le decimos que Sí:

chkdsk

El disco tras el transcurso del tiempo se va deteriorando, sobre todo depende del uso que le demos pero al final  termina fallando sectores, existe una herramienta que os voy a recomendar que es HDD regenerator, aunque es de pago vale la pena, y seguro que por Internet encontráis una ISO "gratis" ;), esta herramienta hace un barrido completo al disco y hace una alineación de los sectores dañados corrigiendo muchos.

hdd regenerator v1.71
Hdd Regenerator - Scan y repair
Hdd Regenerator - Escanear

Reducir los efectos visuales


Windows dispone de múltiples efectos visuales que le hacen más atractivo pero sacrificando recursos que pueden ser vitales en ciertos ordenadores con recursos escasos. Por defecto, estos efectos son gestionados por el sistema, esto lo podemos cambiar desde la configuración avanzada del sistema en Rendimiento podemos personalizarlo a nuestro gusto:

Opciones de rendimiento en Windows


Deshabilitar la memoria de paginación


Si dispones de más de 1 GB de RAM puedes optimizar el sistema evitando que el kernel se pagine en el disco duro, ejecutándose en la memoria RAM aumentando considerablemente el rendimiento y de paso evitando ciclos de I/O al disco.

Para deshabilitar la paginación ejecutamos cmd (WIN + R) y escribimos lo siguiente:
REG ADD "HKLM\System\CurrentControlSet\Control\Session Manager\Memory Management" -v DisablePagingExecutive -d 0x1 -t REG_DWORD -f

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management


Últimos retoques y consejos


Una vez echo los pasos anteriores podemos usar el asistente de solucionador de problemas de rendimiento, para ello escribimos en inicio "Solucionador de problemas" lo damos clic, en la parte inferior, en el apartado "Sistema y seguridad" damos clic sobre "Buscar problemas de rendimiento" y realizamos el test:

Asistente buscar problemas de rendimiento

Por supuesto que para tener un sistema optimizado debemos mantenerlo actualizado, los drivers juegan un papel también importante, tener los últimos controladores nos brindara exprimir al máximo nuestro hardware. 

Existen muchas herramientas de software que nos pueden ayudar también mucho a la hora de optimizar nuestro Windows, una que si os puedo recomendar es tuneup, lo que he probado es bastante completa y muy eficaz.

Como consejo si os recomendaría discos SSD, se nota mucho el rendimiento, estos pueden llegar hasta mas de 512MB/s y más si dispones de puertos eSATA 3 o superiores, vamos, una barbaridad, de elegir un SSD os recomiendo los de Samsung XXX EVO, son de lo más rápidos. Por supuesto que cuanta mas RAM dispongamos mucho mejor.