Mostrando entradas con la etiqueta Linux. Mostrar todas las entradas
Mostrando entradas con la etiqueta Linux. Mostrar todas las entradas

miércoles, 14 de enero de 2015

Jugando con systemD

Hola!! después de un largo tiempo sin escribir aquí y como propósito de año nuevo, espero poder seguir escribiendo en el blog. Desde que me "lié" con el proyecto [awbian] GNU/Linux dispongo de poco tiempo para mis "frikadas" y menos para escribirlas. Ya que en awbian se ha hecho la apuesta de usar systemd como gestor del sistema, voy a recopilar un pequeño manual básico de su uso.

Esquema de la arquitectura de systemd:


Empezamos con systemctl que básicamente es el subtituto de /etc/init.d/... start/restart/stop de toda la vida. Éste tiene algunos casos de uso útiles que veremos en unas pocas líneas. Llegados a este punto, creo que es útil definir como systemd usa el término "Unit"; este se refiere a servicio, sockets, devices, puntos de montage, particiones, paths, timers, ttys... y las "units" será quien recibirá las acciones que ordenaremos con systemctl:
  1. systemctl (Lista todas las unidades, su estado, descripción)
  2. systemctl start/stop [Unidad] (arranca o para una unidad)
  3. systemctl status [Unidad] (estado de la unidad)
  4. systemctl help [Unidad](un pequeño man de cada unidad)
  5. systemctl daemon-reload (escanea si hay cambios en la Unidades)
Por ejemplo:
# systemctl status syslog-ng.service
syslog-ng.service - System Logger Daemon
   Loaded: loaded (/lib/systemd/system/syslog-ng.service; enabled)
   Active: active (running) since Wed, 14 Jan 2015 12:18:08 +0100; 2h 17min ago
 Main PID: 18789 (syslog-ng)
   CGroup: name=systemd:/system/syslog-ng.service
    └ 18789 /usr/sbin/syslog-ng -F

Podemos ver la configuración de cada unidad en  /lib/systemd/ por ejemplo en el caso de syslog tal como dice el "status" está loaded en /lib/systemd/system/syslog-ng.service
Ahora es muy facil activar o desactivar un servicio:
  1. systemctl enable/disable [unidad] (activa o desactiva una unidad) Podria ser equivalente a chkconfig o a un update-rc.d...
Esto hace surgir la duda de en que runlevel está activo... systemd controla el runlevel también:
  1. systemctl isolate graphical.target (equivale hacer init 5)
  2. systemctl isolate multi-user.target (equivale hacer init 3)
  3. systemctl reboot/poweroff/suspend/hibernate/hybrid-sleep (apagados,reinicios, etc..)
  4. systemctl set-default multi-user.target (serializamos iniciar sin X)
Las unidades se escriben con su propia sintaxis, por lo que he podido ver, basada en XDG Desktop, similar a los .ini de Windows y se hubican en: 
/lib/systemd/system/ (los paquetes suelen dejarlos aquí) 
/etc/systemd/system/ (aquí es donde haremos las modificaciones)
Otra cosa que me parece muy interesante es el análisis del arranque que nos ofrece systemd. Por ejemplo:
# systemd-analyze (nos da el resumen de lo que tarda en arrancar el sistema)
Startup finished in 3100ms (kernel) + 18727ms (userspace) = 21828ms
# systemd-analyze blame (lo mismo pero sin resumen)
  5591ms cryptsetup@ferran_home.service
  4828ms lvm2.service
  4785ms wicd.service
  4361ms exim4.service
  3668ms keyboard-setup.service
#systemd-analyze plot > bootplot.svg (genera un gráfico del tiempo de boot)
Y con esto, el primer ladrillo del año ;)
Gracias por estar aquí. Como siempre, comenta, añade lo que consideres oportuno.
Saludos

jueves, 15 de mayo de 2014

XenServer - Useful Commands Chart

Hola! Después de unos cuantos años lanzando comandos contra XenServers me planteado hacer un resumen en un solo papel (no se si lo voy a conseguir). De momento les presento la versión mas alpha que beta de lo que me gustaría que sobretodo fuera útil. Espero ir actualizándolo y mejorarlo con sus consejos y sugerencias.


Saludos!

viernes, 7 de febrero de 2014

AWbuntu - Awesome + mini ubuntu

Hola amigos, hoy presento aquí a AWbuntu otra metadistribución de Ubuntu con unos detalles que a mi parecer valen la pena. Básicamente es el GNU/Linux que estoy creando a partir de mis necesidades y gustos (también de los contribuidores) .

Minimalista, para mi el top one. No quiero nada de GNome, KDE, XFce... Awesome lo encuentro formidable (por no decir increíble, valga la redundancia) en cuanto a rendimiento, flexibilidad y simpleza.

Instalable o bootable en llave USB. Cómo no siempre tengo a mano mi propio PC, pues me va perfecto que sea "live", pero estar con el pendrive enchufado mientras trabajo... me parece cuanto más problemático, así que gracias a mi colega Oscar, me dio la idea de "bootear" toda la distro en RAM, así por un lado me olvido del USB, una vez arrancado el SO y por otro lado, tengo todo el rendimiento del PC al estar todo en memoria. Eso si, 1Gb de RAM lo va a usar como FileSystem, así que si un PC no tiene como mínimo 2GB deRAM... Mejor arrancar como una live normal.

Con un core Debian, aunque me gusta mucho Arch y Gentoo por su filosofía, poder usar toda paquetización ya hecha de ubuntu, me ahorra tiempo, así que en el fondo es un Xubuntu más recortado, sin xfce, clientes de mail, etc...  32 bits de momento para máxima compatibilidad.

Todo el soft mínimo para un sysadmin... Chromium-browser, Nmap, ssh, rdesktop, minicom, dropbox...

Pues nada, espero haberte vendido la moto y que la pruebes XD

Cómo de momento es una prueba, muy prueba, estoy alojando la ISO en mi Google Drive y lo puedes descargar desde aquí: http://dstats.net/fwd/3iae4

También puedes ver lo que sería su web de presentación en: http://awbuntu.zsh.jp/

Saludos!!


jueves, 16 de enero de 2014

Overflow /tmp de 1.0M

Hola! Hoy he visto un tema que me ha parecido suficientemente importante como para escribir este post.
Resulta que un server tenía montado el /tmp como overflow. Viendo un df se ve claro:
root@server:/var/log# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda2      7.5G  2.4G  4.7G  34% /
udev            2.9G  4.0K  2.9G   1% /dev
tmpfs           1.2G  168K  1.2G   1% /run
none            5.0M     0  5.0M   0% /run/lock
none            3.0G     0  3.0G   0% /run/shm
overflow        1.0M  128K  896K  13% /tmp
Y dices... WTF!! Si el fstab no hay nada para el /tmp.

Pues resulta que es un sistema de protección contra quedarse sin espacio. En el caso que llegue a llenarse, se crea un nuevo punto de montaje /tmp en RAM. El tema es que no vuelve al estado original de forma automática.

Cómo tengas un JBOSS o algo que lo use, no vas a poder desmontarlo y habrá que hacer unos cuantos KILLS para poder llegar hacer un umount.

He visto que también se puede hacer:
echo 'MINTMPKB=0' > /etc/default/mountoverflowtmp 
Para desactivarlo definitivamente, pero bueno no se hasta que punto nos puede interesar dejarlo tal y como viene de serie. Que cada uno elija.

Saludos

lunes, 16 de septiembre de 2013

Cómo ver los 50 ficheros abiertos, más grandes con lsof

Hola!

Como a muchos nos ha pasado alguna vez... pasteo el lsof de la muerte que nos mostrará los 50 ficheros más grandes que tenemos abiertos en el sistema.
# lsof -s | awk '$5 == "REG"' | sort -n -r -k 7,7 | head -n 50
Así podemos ver ficheros que nos pueden estar gastando disco de forma indisciminada y verlos fácilmente ;)

Otro caso que tambien requiere una red de tuberías arcanas, para ver que procesos Dead de un sistema, y contarlos. Muy útil si por ejemplo tienes un Load Average alto o muy alto, sin embargo, haciendo un top, ves que no estas consumiendo CPU... Con lo siguiente los puedes ver y destruir con un kill -9

# top -b -n 1 | awk '{if (NR <=7) print; else if ($8 == "D") {print; count++} } END {print "Total status D: "count}'
Fuente aquí  y aquí Saludos

martes, 10 de septiembre de 2013

Configurar Powerpath en Oracle VM en vez de usar Multipath

Hola amigos! Como algunos ya sabéis estoy probando Oracle VM para backends de bases de datos. Y aquí va primer post, para configurar powerpath en vez de multipath para todos los que tengáis cabinas EMC.

Para luego verificar que vemos las mismas LUNS y mismos UUIDs, podemos guardar la salida de:
#  ls -l /dev/mapper/
total 0
lrwxrwxrwx 1 root root      12 sep 10 10:08 360060160ce2027004ed03e645919e311
lrwxrwxrwx 1 root root      12 sep 10 10:08 360060160ce202700a2ffea74fe15e311
lrwxrwxrwx 1 root root      12 sep 10 10:08 360060160ce202700ec38369a364be111
Primeramente desactivamos multipath y reniciamos el servidor
# chkconfig multipathd off
# /etc/init.d/multipathd stop
Una vez UP, miramos que no tengamos ningún device en el /dev/mapper
# ls -l /dev/mapper
total 0
crw------- 1 root root 10, 236 sep  9 15:48 control
Nos descargamos el nuevo udev del repositorio de Oracle y lo instalamos
# wget http://public-yum.oracle.com/repo/OracleVM/OVM3/latest/x86_64/udev-095-14.27.100.1.el5_7.4.2.x86_64.rpm
# rpm -Uvh udev-095-14.27.100.1.el5_7.4.2.x86_64.rpm
warning: udev-095-14.27.100.1.el5_7.4.2.x86_64.rpm: Header V3 DSA signature: NOKEY, key ID 1e5e0159
Preparing...                ########################################### [100%]
   1:udev                   ########################################### [100%]
Ahora, lo mismo pero con las versión correcta de powerpath.
# rpm -iv EMCPower.LINUX-5.7.1.01.00-006.OL5_UEK2_R3.x86_64.rpm 
Ya podemos añadir la key y reniciar
# emcpreg -add XXXX-XXXX
# reboot
Cuando tengamos otra vez el servidor arrancado, verificamos que en el device mapper estan las LUNS que teniamos con multipah con el mismo UUID. Pero primeramente acabamos de configurar PowerPath:
# powermt check_registration
# powermt set policy=co dev=all
# powermt display dev=all
# powermt save
Comprobamos el dev mapper:
# ls -l /dev/mapper/
total 0
lrwxrwxrwx 1 root root      12 sep 10 10:08 360060160ce2027004ed03e645919e311 ../emcpowerc
lrwxrwxrwx 1 root root      12 sep 10 10:08 360060160ce202700a2ffea74fe15e311 ../emcpowerb
lrwxrwxrwx 1 root root      12 sep 10 10:08 360060160ce202700ec38369a364be111 ../emcpowera
Con esto ya tendríamos que tener incluso montado el cluster ocfs2
# df
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sda2              3050092   1498204   1394452  52% /
/dev/sda1               101086     28542     67325  30% /boot
tmpfs                   541872         0    541872   0% /dev/shm
none                    541872        96    541776   1% /var/lib/xenstored
/dev/emcpowere        20971520    269076  20702444   2% /poolfsmnt/0004fb0000050000b8c6c5abcb3fd94b
/dev/emcpowerd       419430400  56515584 362914816  14% /OVS/Repositories/0004fb00000300000e98b1c9f943d355
Tengo que reconocer que en algunos aspectos como el RawDevice Mapping que tiene OVM está muy bien, es una lástima que con XenServer no lo tengamos solucionado ahún :D
Saludos

viernes, 6 de septiembre de 2013

Cómo hacer strace a un Apache

Hola,

¿Cómo podemos llegar más a fondo que la información que nos dan los logs de apache? Por ejemplo las llamadas al sistema, ficheros que se abren, etc...

Una forma elegante usando strace, por ejemplo con:
strace -f -s 4096 -o /tmp/asd.out `pgrep apache| awk '{print "-p "$1}'|xargs` 
Si abrimos otro terminal con una sesion SSH y hacermos un tail de /tmp/asd.out, podremos ir viendo como se atiende cada petición HTTP
tail -f /tmp/asd.out
>4) = 548
5257  poll([{fd=11, events=POLLIN|POLLPRI}], 1, 0) = 0 (Timeout)
5257  write(11, "-\0\0\0\3select type,value from cdef_items where id=7", 49^C

Analizando el strace lanzado:

-t Trace child processes as they are created by currently traced processes as a result of the fork(2) system call.

-s Specify the maximum string size to print (the default is 32).  Note that filenames are not  considered  strings  and  are  always printed in full

-o Fichero de salida

-p El PID que queremos stracear (Como apache tiene varios PIDS, hacemos el subcomando `pgrep apache| awk ... que nos dara una salia << -p pidApache_1 -p pidApache_2 >>

Saludos

miércoles, 3 de julio de 2013

Muerte por RANDOM

Cómo morir haciendo un random, recomendable ejecutar en tty1

while true ; do echo -ne "\033[01;$((30+$RANDOM%9));$((40+$RANDOM%9))m" ; echo < /dev/urandom ; done

lunes, 17 de junio de 2013

CentOS 6.4 XenServer HVM domU Install Error

Hola!!


Recientemente he visto un bug a la hora de instalar CentOS 6.4 sobre XenServer tanto en ramas 5.6 como en 6.x. El problema es que no acaba de arrancar la minimal install iso. El truco, sencillo.

En un dom0 del pool, cambiamos los parámetros de la vm HVM que estamos probando:

xe vm-param-set uuid= platform:viridian=false

Con esto y un Control+Alt+Supr y la máquina tendría que arrancar con el setup de Centos 6.4


Saludos!

martes, 4 de junio de 2013

Instalando Bochs en GNU/Linux - Un emulador de PC x86 Arcano -


Hola! Hoy vengo con Bochs... Es un emulador opensource para entorno PC hecho en C++ por Kevin Lawton.
Evidentemente en cuanto a rendimiento, bochs es bastante más lento que QEMU ya que lo emula TODO. Pero me ha hecho gracia probarlo por el hecho que es bastante arcano, que ocupa 4,2M y es muy "actual" ya que la última release, es del 26 de Mayo de este año...

Descomprimimos el código fuente y accedemos al directorio
$ tar -xvzf bochs-2.6.2.tar.gz
$ cd bochs-2.6.2

Instalamos dependencias para poderlo compilar
$ sudo apt-get install libxrandr-dev  libxt-dev libxaw7-dev  g++

Hacemos el ./configure para Linux
$ sh .conf.linux

$ make
$ make install

Ya lo tenemos!
$ bochs

========================================================================
                       Bochs x86 Emulator 2.6.2
                Built from SVN snapshot on May 26, 2013
                  Compiled on Jun  4 2013 at 13:21:12
========================================================================
00000000000i[     ] LTDL_LIBRARY_PATH not set. using compile time default '/usr/local/lib/bochs/plugins'
00000000000i[     ] BXSHARE not set. using compile time default '/usr/local/share/bochs'
00000000000i[     ] lt_dlhandle is 0xa8a9e18
00000000000i[PLGIN] loaded plugin libbx_unmapped.so
00000000000i[     ] lt_dlhandle is 0xa8aa3f8
00000000000i[PLGIN] loaded plugin libbx_biosdev.so
00000000000i[     ] lt_dlhandle is 0xa8aaa18
00000000000i[PLGIN] loaded plugin libbx_speaker.so
00000000000i[     ] lt_dlhandle is 0xa8aaf30
00000000000i[PLGIN] loaded plugin libbx_extfpuirq.so
00000000000i[     ] lt_dlhandle is 0xa8ab3f8
00000000000i[PLGIN] loaded plugin libbx_parallel.so
00000000000i[     ] lt_dlhandle is 0xa8ac830
00000000000i[PLGIN] loaded plugin libbx_serial.so
00000000000i[     ] lt_dlhandle is 0xa8af758
00000000000i[PLGIN] loaded plugin libbx_gameport.so
00000000000i[     ] reading configuration from .bochsrc
00000000000e[     ] .bochsrc:522: ataX-master/slave CHS set to 0/0/0 - autodetection enabled
------------------------------
Bochs Configuration: Main Menu
------------------------------

This is the Bochs Configuration Interface, where you can describe the
machine that you want to simulate.  Bochs has already searched for a
configuration file (typically called bochsrc.txt) and loaded it if it
could be found.  When you are satisfied with the configuration, go
ahead and start the simulation.

You can also start bochs with the -q option to skip these menus.

1. Restore factory default configuration
2. Read options from...
3. Edit options
4. Save options to...
5. Restore the Bochs state from...
6. Begin simulation
7. Quit now

Please choose one: [6]


Saludos!!

martes, 30 de abril de 2013

Ext4 group descriptors corrupted + LVM cifrado

Hola!! he aquí otro error que da como resultado una petada al puro estilo Windows... PC sin arracar.

Mira que hay veces que he apagado mal el portátil y bueno, es algo que nunca me había pasado, hasta hoy. Cómo arreglarlo, facil:

Arrancamos con nuestra distro USB/CD live como Arch.

Cargamos el módulo del kernel
modprobe dm-crypt

Ejecutamos
cryptsetup luksOpen /dev/sda5 crypt1

Escaneamos los volumenes LVM:
vgscan --mknodes
vgchange -ay

Y le damos caña:
fsck /dev/mapper/xubuntu-root

Suerte!!

martes, 5 de febrero de 2013

XenServer - Nagios check usando XAPI

Hola! Este es el nuevo checkeo para XenServer que he estado haciendo. Es basicamente diferentes petiociones que realiza el servidor nagios contra la XAPI directamente. Es decir que no hace falta tener nrpe en los hosts. Simplemente con visibilidad al puerto 80/433 el checkeo es capaz de funcionar. 

Lo puedes descargar usando git en:

Por defecto, recomiendo poner el Master-Host en la definicion del servicio, pero no es mandatorio ya que el scrpt comprueba automáticamente si es el host master o no, y si no es master, se conecta al master. (obey your master, master!)

#!/usr/bin/python
# WTFPL (Do What The Fuck You Want To Public License)
#
#           DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
#                   Version 2, December 2004
#
#Copyright (C) 2013 Ferran Serafini 
#
#Everyone is permitted to copy and distribute verbatim or modified
#copies of this license document, and changing it is allowed as long
#as the name is changed.
#
#           DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
#  TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
#
# 0. You just DO WHAT THE FUCK YOU WANT TO.

import sys, time
import os
import XenAPI

...
Definicón del comando
define command{
        command_name check_xen
        command_line $USER1$/check_xen.py $ARG1$ root $ARG2$ $ARG3$ $ARG4$ $ARG5$
        }

Utilizaremos el mismo command para definir 3 servicios, uno para monitorizar los Hosts del pool, otro para verificar que estos hosts estan conectados a la cabina y otro que verifica el espacio disponible en los SR

Definicion de los servicios
#Cluster Hosts
define service{
        use                             C-XEN_HW
        host_name                       SB-XENBOX
        service_description             SB-XENBOX-CLUSTER_HOSTS
        check_command                   check_xen!Master_Host!passwd!HOSTS!0!0
        }
#Cluster PBDs
define service{
        use                             C-XEN_HW
        host_name                       SB-XENBOX
        service_description             SB-XENBOX-CLUSTER_STORAGE_PBDs
        check_command                   check_xen!Master_Host!passwd!SR!0!0
        }
#Free Storage
define service{
        use                             C-XEN_HW
        host_name                       SB-XENBOX
        service_description             SB-XENBOX-SHARED_STORAGE_FREE
        check_command                   check_xen!Master_Host!passwd!DISK!95!98
        }

Y con esto ya tenemos un nuevo check para Nagios ;)

martes, 28 de agosto de 2012

Efectos especiales para Awesome

Hay quien dice, hombre si usas un Windows Manager super minimalista (awesome)... no le añadas un  composite manager. Y tienen razón, :) ... Pero cuando llevas horas trabajando con varios lxterminal con fondos oscuros, fuentes secas y sin filigranas (terminus), escuchando Death Metal Sueco... etc, apetece que ese cambio de escritorio virtual,  sea suave y traslucido, que los menús y ventanas tengan sombras, aunque consumamos un poco de recursos extra.


Hasta ahora había probado Xcompmgr, es sencillo y hace lo que tiene que hacer, pero me ha dado problemas trabajando con multi-screen. Si solo trabajas con un monitor funciona bastante bien. El que he probado que funciona bien en un multi-screen de dos monitores es compton, de hecho también lo utilizo en un solo monitor y funciona perfecto.

Es tan sencillo como:
$ compton -cGb

Y para más extravagancia:
$ compton -cC -i 0.6 -e 0.6
$ compton -cC -i 0.6 -e 0.6 -fF
$ compton -cC -fF -I 0.065 -O 0.065 -D 6 -m 0.8 -i 0.6 -e 0.6

Para arrancarlo pues como tengas configurado el arranque automático de aplicaciones al arrancar tu window manager. Una buena opción es ponerlo en tu fichero ~/.xprofile

Esta disponible el paquete en AUR para Arch Linux, y en su github las sources para compilarlo para otras distribuciones.

miércoles, 16 de mayo de 2012

XenServer - Ubuntu 12.04

Hola! vamos a ver como instalar Ubuntu12.04 en XenServer. Como siempre utilizo el metodo HVM y luego la conversión a PV.

Instalamos desde la ISO como un "Other Install Media", poniendo así el espacio de disco, RAM y CPU que queramos, arrancamos desde CD e instalamos Ubuntu. A tener en cuenta: 
  • Utilizar EXT3 o si quereis utilizar EXT4, hay que tener la partición /boot en un disco EXT3 o EXT2
  • Utilizar un particionado personalizado y poner que la Swap sea el disco xdva1 y la raiz (o el disco susceptible a ser ampliado como xvda2) o mejor ahun, no pongas Swap (si hace falta, la montas luego como un VDI aparte ;)
Una vez instalado ajustamos la máquina para que sea paravirtual. 

  1. apt-get install linux-virtual
  2. cd /boot/ y  hacemos lo siguiente:
root@ubuntu12:/boot# ln -s vmlinuz-3.2.0-24-virtual vmlinuz.xen
root@ubuntu12:/boot# ln –s initrd.img-3.2.0-24-virtual initrd.img.xen

Nos conectamos al Dom0 y modificamos los siguientes parametros de la máquina virtual:
xenserver# xe vm-param-set uuid= HVM-boot-policy=""

xenserver# xe vm-param-set uuid= HVM-boot-params=""

xenserver# xe vm-param-set uuid= HVM-shadow-multiplier=""

xenserver# xe vm-param-set uuid= PV-bootloader-args="--kernel=/boot/vmlinuz.xen --ramdisk=/boot/initrd.img.xen"

xenserver# xe vm-param-set uuid= PV-args="root=/dev/xvda1 ro quiet console=hvc0 xencons=hvc0"

xenserver# xe vm-param-set uuid= PV-bootloader="pygrub"

xenserver# xe vbd-param-set uuid= bootable=true

Arrancamos la máquina virtual y si todo funciona OK ya estará corriendo para virtualizada, instalamos las XenTools y modificamos el fichero /etc/fstab

/dev/xvda1 / ext3 errors=remount-ro,barrier=0 0 1

Sin esta config en el fstab, la raiz se monta en RO eventualmente, de este modo funciona bien.

Tambien es necesario ajustar la tty por defecto para que sea hvc0:

sed -e “s/tty1/hvc0/ig” /etc/init/tty1.conf | sudo bash -c ‘cat > /etc/init/hvc0.conf
Con esto, ya teneis el nuevo template ;)
Saludos

lunes, 27 de febrero de 2012

Cómo cambiar el sistema encriptación por defecto Ubuntu Linux

Si planteamos el escenario, en que tenemos un servidor antiguo, con por ejemplo una Ubuntu 7.10 y queremos llevarnos todas las cuentas de usuarios en /etc/shadow a otro servidor Ubuntu, con una versión superior como la 10.4, o en general, a cualquier sistema que utilice un nuevo algoritmo de encriptación como puede ser sha512, tenemos que tener en cuenta:

El fichero de pam básico de password /etc/pam.d/common-password
password    [success=1 default=ignore]    pam_unix.so obscure sha512 
En este caso está configurado para utilice sha512, cambiando sha512 por md5, pasaríamos a utilizar el algoritmo antiguo:
password       [success=1 default=ignore]      pam_unix.so obscure md5

El fichero de configuración del login /etc/login.defs


Por defecto tendremos: ENCRYPT_METHOD SHA512
Para utilizar MD5 cambiamos a: ENCRYPT_METHOD MD5

Con esto, el servidor utilizará MD5 para el fichero /etc/shadow y la autentificación de tus usuarios.


Cabe recordar que es mucho más recomendable utilizar SHA512 que MD5 ya que de este último hay demostrados problemas de colisiones de hash (wikipedia: situación que se produce cuando dos entradas distintas a una función de hash producen la misma salida.)


Saludos!

domingo, 20 de noviembre de 2011

Linux - Los procesos del Kernel parte I

Cuando ejecutamos `ps aux` y vemos los procesos de un kernel 3.0, ¿sabemos realmente que hacen cada uno? Lo más normal es que NO. Así que voy hacer un repaso para saber un poco más sobre ellos, como hay unos cuantos, iré publicando unos cuantos cada día. Empecemos por: kthreadd, ksoftirqd y kworker.

  • [kthreadd] es la función principal (y bucle principal) del demonio kthreadd, el padre de todos los hilos del núcleo.  
root         2  0.0  0.0      0     0 ?        S    19:04   0:00 [kthreadd] 
  • [ksoftirqd] es un hilo para cada CPU o núcleo. Controla las interrupciones "suaves" (Interrupciones servidas o retornadas por interrupciones fuertes). Si ksoftirqd consume más de una mínima cantidad de CPU, significa que tenemos problemas con algún dispositivo hardware. Podemos ver las interrupciones en: /proc/interrupts
root         3  0.0  0.0      0     0 ?        S    19:04   0:00 [ksoftirqd/0]
  •  [kworker] es el hilo que controla las interrupciones ACPI de la BIOS. Normalmente podemos ver que tenemos diversos hilos. Gracias a estos hilos, con un Kernel bien soportado por nuestro hardware, nos van a permitir consumir mucha menos batería. Una buena utilidad para ver que proceso nos "gasta" más batería tenemos powertop.
root         4  0.0  0.0      0     0 ?        S    19:04   0:00 [kworker/0:0]
Esto es todo por hoy, espero poder documentarme más sobre más hilos del Kernel y ir subiendo un resumen de cada uno.
Saludos!

jueves, 27 de octubre de 2011

winexe: Ejecutar comandos remotos desde Linux a Windows

Magnifica utilidad para enviar comandos remotos a máquinas WindowsNT/2000XP/2003/7 desde GNU/Linux. Está disponible desde AUR para los users de Arch. 

Ejemplo1:
un Rickroll a nuestro compañero:
winexe //IPWINDOWS -U Administrador%Passwd --interactive=1 "explorer http:\\bd.vg" 



Ejemplo2:
Directamente abrimos una shell:
winexe //IPWINDOWS -U Administrador%Passwd cmd 


No hagáis mucho daño!! XD

viernes, 14 de octubre de 2011

Ubuntu 11.10 en un MacBook Air

Después de pelearme unas horas con Arch Linux en mi MacBook Air para intentar hacer funcionar el modulo de broadcom para la interfaz Wifi, vía paquete AUR sin yaourt, pacman diciendo que paquete corrupto, instalación sin kernel-sources y con el usb arriba y abajo, obviamente sin acceso a la red, tentado a reinstalar con Gentoo y compilar los modulos sin más y tener el MacBook Air más "mascle" de la tierra, he sido abducido para probar la ultima Ubuntu 11.0 ya que hoy es su día de lanzamiento.

Realmente la integración con MacBook Air es fantástica, todo funciona a la primera. Tengo que decir que solo lo he probado en modo live pero funciona todo, sonido, el driver 3D de Nvidia experimental, el modulo de broadcom, webcam, bluetooth... Ahora solo esperar a que finalice la instalación, instalar awesome y borrar gnome :D

Por cierto gente de arch, ¿no se podría incluir en el base, el modulo wl correctamente parcheado y testeado? Lo se, es un módulo privativo :(

martes, 26 de julio de 2011

XenServer - RedHat / CentOS Paravirtualizados

Una de las ventajas de usar XenServer es la posibilidad de arrancar las máquinas virtuales en modo paravirtualizado (PV). Algunas distros dificultan un poco la instalación en PV directamente desde el Setup. Ese es el caso de Red Hat o CentOS que por defecto se instalan en modo Virtualización completa (HVM).

Una vez instalado el sistema, modificamos los siguientes parámetros del grub:

title CentOS Xen (2.6.18-53.1.14.el5xen)
        root (hd0,0)
        kernel /xen.gz-2.6.18-53.1.14.el5
          module /vmlinuz-2.6.18-53.1.14.el5xen ro root=/dev/VolGroup00/LogVol00
          module /myinitrd.img

Modificamos las líneas en negrita por:

title CentOS (2.6.18-53.1.14.el5xen)
        root (hd0,0)
        kernel /vmlinuz-2.6.18-53.1.14.el5xen ro root=/dev/VolGroup00/LogVol00
        initrd /myinitrd.img

Reiniciamos con el nuevo kernel y creamos un nuevo initrd, sino nos aparecerá el error:
mount: could not find filesystem '/dev/root'
Setting up other filesystems.
Setting up new root fs setuproot:
 ...
Booting has failed

Genramos el nuevo initrd. El nuevo initrd hay que generarlo ignorando el soporte SCSI mediante la siguiente línea:

mkinitrd --omit-scsi-modules --with=xennet --with=xenblk --preload=xenblk initrd-$(uname -r)-no-scsi.img $(uname -r)

Apagamos la maquina virtual y modificamos los siguientes parámetros mediante el CLI para que XenServer reconozca que tiene que arrancar esta máquina como PV.

xe vm-param-set uuid= HVM-boot-policy=""

xe vm-param-set uuid= PV-bootloader=pygrub

xe vm-param-set uuid= PV-args="console=ttyS0 xencons=ttyS"

La volvemos arrancar y tendría que iniciarse correctamente. Si aparece siguiente el error:

Error: (2, 'Invalid kernel', "elf_xen_note_check: ERROR: Not a Xen-ELF image: No ELF notes or '__xen_guest' section found.\n")

significa que hay algún problema con la config del grub, comprueba que el kernel que has configurado en el grub sea el correcto.

martes, 3 de mayo de 2011

Citrix XenServer - Cambiar nombres de las NIC

Para cambiar el nombre de una NIC en XenServer hay que hacer los siguientes pasos.

Primeramente mostramos los uuids de las NIC del servidor
xe pif-list host-name-label=servidor.dominio.com
 ..
uuid ( RO)                  : 95b6b41c-bf97-3a1e-9613-72a2f0967476                device ( RO): eth10
    currently-attached ( RO): true
                  VLAN ( RO): -1
          network-uuid ( RO): 32e49a15-344f-c66a-3997-189ef59e3ba0
 ..

Despresentamos la NIC que queremos renombrar (por ejemplo eth10) por su uuid asociado:
xe pif-forget uuid=95b6b41c-bf97-3a1e-9613-72a2f0967476

Renombramos la interficie:
ip link set dev eth10 name eth2

Reescanemos las NICs
xe pif-scan host-uuid=95b6b41c-bf97-3a1e-9613-72a2f0967476

Ahora ya tendríamos que ver el nuevo nombre de la NIC y su "network" asociado.