30 noviembre 2007

Pendrive con Linux-GRUB-Casper en 5 pasos

Hay muchas páginas que explican cómo crear un pendrive con una distribución de Linux, pero resulta que todas son copiadas de la misma. Vamos a ver otra forma. Advierto que no me voy a parar en detalles, entiendo que tienes manejo con particiones, GRUB y otras cosas necesarias. Vamos a hacer un pendrive persistente, es decir, los cambios que hagamos se mantendrán, y lo vamos a crear a partir del Live CD de Ubuntu Gutsy Gibbon.

Lo primero de todo es saber qué ficheros necesitamos. En otros tutoriales copian el CD entero. Aquí cogeremos los fundamentales, que son 3:
  • initrd.gz, que es el sistema inicial que se montará en RAM antes de montar el raiz definitivo
  • vmlinuz, que es la imagen comprimida del kernel
  • filesystem.squashfs, que es la imagen de la distribución en cuestión
Búscalos en el CD y vamos a empezar:
  1. Crea dos particiones (con fdisk /dev/sd? , por ejemplo) en el pendrive, una de 700MB para el sistema y otra con el resto para almacenar los cambios que se produzcan. Haz que la partición de sistema sea arrancable.
  2. Formatea las particiones en ext3 (con mkfs.ext3 /dev/sd?x, por ejemplo). La partición de sistema puede o no tener etiqueta, pero la que almacena cambios debe llamarse "casper-rw" obligatoriamente.
  3. En la partición de sistema crea las carpetas "boot" (copia aquí initrd.gz y vmlinuz) y "casper" (copia aquí filesystem.squashfs).
  4. Instala GRUB en el pendrive. En principio hazlo con la configuración que tienes en tu máquina. Ejecuta "grub-install --root-directory= --no-floppy /dev/sd?". Ahora entra en la carpeta "grub" que se habrá creado en la carpeta "boot" que creastes anteriormente. Modifica "device.map". Crea "menu.lst" (mejor copiarlo de la máquina local) y modifícalo para coger el kernel y el initrd desde la URL adecuada.
  5. En la entrada "kernel" de GRUB pásale estos parámetros al núcleo: boot=casper, persistent, ignore_uuid. Ahora vuelve a instalar GRUB en el pendrive con "grub-install /dev/sd?"
Listo.

Resultado de la encuesta sobre distribuciones Linux

El resultado de la encuesta sobre preferencias de distribuciones Linux ha sido concluyente: más del 65% de los votantes prefieren Ubuntu o Debian, teniendo ambas la misma base. Sorprendentemente la tercera en discordia es Gentoo, una de las más complicadas de usar por su filosofía "yo me lo compilo, yo me lo como". Red Hat no ha obtenido ningún voto, y 2 personas prefirieron una distribución que no era de las que se podía elegir. La primera distribución que yo usé en serio fue Debian, así que con ella me quedo (aunque ahora use Ubuntu). Muchas gracias a todos por participar.

21 noviembre 2007

Preguntas sin respuesta

¿Por qué al buscar "Windows XP " en Google y consultar las imágenes relacionadas aparece como primera foto...?

13 noviembre 2007

Desde Gentoo 2007 Live...

En mi afan por probar otras distribuciones no basadas en Debian instale Fedora 7 hace unos dias, que para mi gusto es desastrosa, sobre todo en lo que a repositorios y dependencias se refiere. Ahora es el turno de Gentoo y me he llevado una buena sorpresa al descubrir que la Live de 2007 reconoce automaticamente mi tarjeta inalambrica (una USB de Zyxel que requiere firmware en el resto de distribuciones). La configuracion de la tarjeta de red es otro mundo, y como tengo ganas de explorar la voy a instalar completamente para descubrir todos sus entresijos.

Agradeceria opiniones y temas a tener en cuenta sobre esta distribucion.

07 noviembre 2007

Reto: runlevel

Actualización: Todas las soluciones propuestas son válidas, de una forma u otra podemos encontrar el runlevel en ejecución sin usar el comando runlevel. Sin embargo yo iba por otro sitio. La ejecución del runlevel adecuado es el primer proceso que se ejecuta en el sistema, por lo que podemos encontrar toda su información en:

/proc/1/

En una Fedora, por ejemplo, el contenido de /proc/1/cmdline es init [3]. Aquí es donde se puede ver este valor. El problema es que no todas las distribuciones ofrecen esa información en este directorio (por lo que pido perdón a quien haya dado mil vueltas sobre esta carpeta y no haya encontrado nada).


Los linuxeros sabrán que runlevel indica el nivel de arranque utilizado para cargar el sistema, pero ¿en qué otro lugar del sistema podríamos descubrir este valor? Es decir, ¿cómo podemos saber el runlevel en ejecución sin utilizar el comando runlevel?. Tiene mucho sentido...

02 noviembre 2007

Procesos zombie en Linux

Qué mejor tema de conversación en este día (de los Difuntos) que tratar los procesos zombies en Linux. Para empezar echemos un vistazo a los principales estados de los procesos en Linux:
  • Sleeping (S): Procesos que están esperando su turno para ejecutarse.
  • Running (R): Procesos que están en ejecución.
  • Waiting (D): Procesos esperando a que se finalice alguna operación de Entrada/Salida.
  • Zombie (Z): Procesos que han terminado pero que siguen apareciendo en la tabla de procesos. Se pueden deber a errores de programación y pueden ser el síntoma de un sistema lento o que provoca problemas. En la Wikipedia se puede leer más acerca de estos procesos.
Ejecutando el comando 'top' podemos ver en tiempo real los procesos que se están ejecutando en el sistema. En la parte superior derecha se puede ver que hay un proceso zombie:


Desde 'top' podemos ver que hay procesos zombie, pero no podemos ver cuál es. Para ello debemos listar los procesos del sistema con 'ps' y buscando los que tienen estado Z (que es el descriptor de este tipo de procesos como vimos anteriormente):

ps -A -ostat,ppid,pid,cmd | grep -e '^[Zz]'

Este proceso debe desaparecer de la tabla de procesos, pero no responderá a un 'kill' "corriente". ¿Cómo lo podemos matar? Pues así:

kill -HUP `ps -A -ostat,ppid,pid,cmd | grep -e '^[Zz]' | awk '{print $2}'`

Pues ya está, ya podemos jugar a Resident Evil...