Tutorial: wheezy en USB con persistencia

Algo que es muy útil para todo geek, es tener una memoria USB con nuestro sistema operativo favorito para usar según nos plazca de forma segura e independiente. Pero muchas veces necesitamos que ciertos datos permanezcan en el dispositivo entre una vez y otra que utilizamos el sistema.

A nuestro rescate sale Ben Armstrong explicando cómo lograrlo con la última versión de Debian.

Notas

Traducción

Desde wheezy, Debian ya no ofrece descargas de imágenes live listas de hdd (conocido anteriormente como usb-hdd) que, en squeeze, eran necesarias si deseaba utilizar persistencia. Las buenas noticias son que, debido a que las nuevas imágenes iso-hybrid utilizan xorisso, puede copiar la imagen a una memoria USB y reparticionarla para agregar una partición de persistencia. Desafortunadamente, el sistema de archivos en sí mismo es sólo de lectura, por lo que debe agregar manualmente el parámetro de arranque persistence cada vez que inicie la imagen. Si esto no le molesta, puede evitar todo este tutorial y simplemente seguir las instrucciones de live-manual para agregar la partición de persistencia y ya.

Este tutorial explica cómo extraer el contenido de una imagen live iso-hybrid de wheezy en una memoria USB y modificarla para arrancar con este parámetro habilitado permanentemente. Lo estoy escribiendo sólamente como una forma de esquivar el problema y no considero que ésta sea una forma de personalizar imágenes Debian Live en general. Me encantaría ayudar a crear una forma más conveniente y oficial de lograr lo mismo para una versión futura. Mientras tanto, la forma recomendada y oficial de realizar cualquier cambio a una imagen Debian Live es crearla desde cero utilizando live-build, como se describe en live-manual. Si lo prefiere, se encuentra disponible un servicio web Debian Live Images Autobuilder simplificado que funciona bien para muchas personalizaciones comunes. Utilice uno de estos métodos si desea hacer esta u otras personalizaciones de la forma oficial. De lo contrario, continúe leyendo.

Prerequisitos

  • Necesita descargar una imagen live iso-hybrid de Debian. Para este tutorial utilizaremos la imagen live de Debian wheezy amd64 LXDE:
    • http://cdimage.debian.org/debian-cd/current-live/amd64/iso-hybrid/debian-live-7.0.0-amd64-lxde-desktop.iso
  • Tenga en cuenta el tamaño de la imagen. Con ls -lh debian-live-7.0.0-amd64-lxde-desktop.iso puede ver que el tamaño de la imagen para este ejemplo es 854M. Más tarde, utilizará este espacio más 5% como el tamaño de la partición que la contendrá.
  • Necesita una memoria USB lo suficientemente grande para la imagen en sí y su partición de persistencia. Para esta imagen podría inclusive utilizar una memoria de 1G, aunque le quedaría muy poco espacio para persistencia. En este tutorial, la memoria de prueba es de 8G por lo que sobra mucho espacio en la misma para crecer.
  • Asumo para este ejemplo que está preparando la memoria en un sistema Debian o Linux que monta automáticamente los medios extraíbles cuando se los conecta, una configuración bastante usual.
  • Este tutorial también utiliza las siguientes herramientas, que necesitará instalar si no las tiene:
    • parted
    • mbr
    • dosfstools
    • p7zip
    • syslinux

Identificación del dispositivo de la memoria USB

Precaución: siempre revise y controle que está escribiendo al dispositivo correcto para evitar perder datos importantes. Puede hacer dos cosas para protejerse. La primera es no escribir la memoria USB como root. La segunda es siempre utilizar ls -l /dev/disk/by-id primero para identificar qué dispositivo es la memoria USB deseada.

 lrwxrwxrwx 1 root root  9 Jun 22 11:58 
 usb-SanDisk_Cruzer_Contour_0000184CA87406BC-0:0 -> ../../sdb

Como puede ver, mi SanDisk Cruzer Countour es /dev/sdb. Durante el tutorial haré referencia a este dispositivo como /dev/sdX para evitar desastres lamentables si copia y pega del mismo. Cuando lo siga, recuerde reemplazar dicho dispositvo con el correcto para la memoria USB en su sistema.

Inicialización de la memoria USB

Comience conectando la memoria y desmontando cualquier partición que haya sido montada automáticamente para asegurarse que nada es accesible en el dispositivo. Por ejemplo:

$ umount /dev/sdX1

Ahora realice los cambios a la tabla de particiones. Utilice parted porque puede ejecutarlo como un usuario normal y tiene cierta funcionalidad avanzada más allá de las herramientas básicas como fdisk.

$ /sbin/parted
WARNING: You are not superuser.  Watch out for permissions.
GNU Parted 2.3
Using /dev/sdX
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print devices
/dev/sdX (8221MB)
(parted) select                                                           
New device?  [/dev/sdX]?                                                  
Using /dev/sdX
(parted)

Sepa que cuando lo ejecute como un usuario normal, si sólo tiene conectado un dispositivo extraíble (que podría incluir reproductores mp3, cámaras y lectores electrónicos), parted inmediatamente selecciona dicho dispositivo. Pero sólo para asegurarse, utilice print devices para enumerar los dispositivos y seleccionar el correcto como se mostró en el ejemplo anterior.

Reparticionado de la memoria USB

Una vez que verificó que tiene el dispositivo correcto, comience el reparticionado. Escriba una nueva tabla de particiones con mklabel msdos para eliminar todas las particiones anteriores en el mismo. Puede saltear este paso y adaptar las instrucciones restantes si tiene particiones que desea mantener. Esta es su última oportunidad de evitar errores si el dispositvo es el incorrecto, por lo que asegúrese que es el adecuado antes de continuar.

(parted) mklabel msdos
Warning: The existing disk label on /dev/sdX will be destroyed and all data
on this disk will be lost. Do you want to continue?
Yes/No? y
Error: Partition(s) 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 on
/dev/sdX have been written, but we have been unable to inform the kernel of
the change, probably because it/they are in use.  As a result, the old
partition(s) will remain in use.  You should reboot now before making further
changes.
Ignore/Cancel? i
(parted)

El error es normal y aparece cuando se ejecuta parted como un usuario normal, por lo que está bien presionar «i» para ignorarlo cada vez que aparece. En el resto del tutorial, omitiré estos errores de las salidas mostradas por cuestiones de brevedad.

Cree tres particiones, una partición fat32 para la imagen en sí que sea 5% más grande que el tamaño del archivo ISO, una partición ext4 de 1G para persistencia y una partición fat32 adicional con el resto del espacio. Ubique como primera la partición adicional para que los otros sistemas operativos en los que utilice la memoria puedan utilizarla. Utilice posicionamiento relativo desde el final del dispositivo para hacer más sencillo el utilizar todo el espacio restante en la primer partición. Por último, active la marca de arranque en la partición de la imagen live.

(parted) mkpart primary fat32 1 -1897M
(parted) mkpart primary ext4 -1897M -897M
(parted) mkpart primary fat32 -897M -0
(parted) set 3 boot on
(parted) quit
Information: You may need to update /etc/fstab.

Desconecte la memoria USB y conéctela nuevamente para que el núcleo vuelva a leer la tabla de partición actualizada. Si algún sistema de archivos preexistente es montado automáticamente, desmóntelos nuevamente. Ahora estamos listos para crear los nuevos sistemas de archivo.

$ umount /dev/sdX1
$ /sbin/mkdosfs -nEXTRA /dev/sdX1
mkdosfs 3.0.16 (01 Mar 2013)
$ /sbin/mkfs.ext4 -q -Lpersistence /dev/sdX2
$ /sbin/mkdosfs -nLXDE /dev/sdX3
mkdosfs 3.0.16 (01 Mar 2013)

Marca de arranque de la memoria USB

Utilice install-mbr para instalar un MBR en la memoria y syslinux para instalar el gestor de arranque que iniciará su la imagen de su partición live.

$ /sbin/install-mbr /dev/sdX
$ syslinux -i /dev/sdX3

Montaje de las particiones

Desconecte la memoria USB y conéctela nuevamente para que se monten automáticamente las nuevas particiones.

Revise dónde se montaron las particiones con df.

$ df
...
/dev/sdX1        6204568         4   6204564   1% /media/EXTRA
/dev/sdX3         831888         4    831884   1% /media/LXDE
/dev/sdX2         944120      1204    894124   1% /media/persistence

Extracción del contenido del archivo ISO a la memoria

Para continuar con la preparación de la memoria como un usuario normal, utilice p7zip para descomprimir el archivo ISO. Una alternativa es montar el archivo ISO como «loopback» y extraerlo de esa forma, pero para ello necesitará permisos de root.

$ cd /media/LXDE
$ 7z x ~/debian-live-7.0.0-amd64-lxde-desktop.iso
...
Extracting  live/filesystem.packages-remove
...

Cuando se descomprima live/filesystem.sqashfs (justo después de live/filesystem.packages-remove), será el archivo que más demore ya que contiene el sistema de archivos live completo. Tenga paciencia y eventualmente finalizará la extracción de éste y todos los demás archivos en la imagen.

...
Everything is Ok

Folders: 245
Files: 370
Size:       892183367
Compressed: 895483904

Modificación de los archivos de configuración del gestor de arranque

En la instalación de un archivo ISO, el directorio de configuración del gestor de arranque syslinux y los archivos en él, poseen el nombre isolinux. Necesita cambiar el nombre de este directorio y dos archivos de isolinux a syslinux para que el gestor de arranque los encuentre en la partición fat32 de la imagen live.

$ mv isolinux syslinux
$ mv syslinux/isolinux.cfg syslinux/syslinux.cfg
$ mv syslinux/isolinux.bin syslinux/syslinux.bin

Activación de la persistencia permanente

A continuación, agrege « persistence» a los parámetros de arranque y active la persistencia permanente creando un archivo llamado persistence.conf con el contenido «/ union» en la partición de persistencia.

$ sed -i 's/\(append boot=.*\)$/\1 persistence/' syslinux/live.cfg
$ cd /media/persistence
$ echo / union > persistence.conf

Reinicio en el sistema live

Ahora su memoria USB está lista para iniciar con la persistencia permanentemente activada. ¡Disfrute!

Descubriendo las posibilidades del directorio /proc

Una de las diferencias más grandes entre Windows y GNU/Linux que desconcierta a nuevos usuarios es el sistema de archivos. En Linux no hay más letras de unidad, sólo un directorio gigantezco que se llama directorio raíz en donde está todo.

Y ese todo es realmente todo. En particular hay un par de directorios medio raros y /proc es uno de los más raros. Este artículo explica muy claramente muchas de las cosas que hacen especial este directorio y lo que contiene además de algunas de las cosas que se pueden hacer con el mismo.

Notas

Continue reading

La paradoja de los monitores grandes

La tecnología tiene una constante: se vuelve cada vez mejor. Y también, muchas veces, hace que el tiempo la vuelva más barata. Es por eso que el día de hoy todos los equipos vienen con monitores LCD cuando originalmente eran algo exclusivo. Lo mismo pasa con el tamaño de los monitores. Todos, especialmente los geeks queremos tener pantallas grandes.

Pero tener monitores muy grandes también tiene sus problemas. Y este artículo es sobre el problema más grande de dichos monitores: el perder tiempo moviendo y cambiando el tamaño de las ventanas. Este artículo explica muy clarito de dónde viene ese problema y da un par de ideas para que los usuarios de Windows lo solucionen. Por suerte en GNU/Linux existen muchos manejadores de ventana basados en grillas que directamente eliminan ese problema.

Ya tienen otra excusa para empezar a usar GNU/Linux.

Notas

  • Artículo original: The Large Display Paradox
  • Autor original: Jeff Atwood
  • Los programas mencionados en el artículo así como sus características y funcionalidades probablemente estén muy desactualizados ya que el artículo tiene un par de años
  • Via: LifeHacker

Continue reading

Cómo comenzar a contribuir con Debian

Hace poco traduje un artículo sobre cómo ayudar a Debian. Ya sabiendo cómo se puede ayudar creo que este artículo es un excelente complemento ya que explica cómo dar el primer paso.

Esta es mi forma de contribuir un poco con Debian ¿cuál es la tuya?

Notas

Continue reading

“Seguridad” es realmente “control”

Hace 3 años que venimos leyendo sobre cómo se agregan cada vez más controles de seguridad a las aplicaciones que usamos día a día. Pero… ¿qué son realmente esos “controles de seguridad”? Este artículo creo que explica de una forma clara y sencilla la motivación de dichas funcionalidades: control y retención de usuarios. Y los usuarios seguimos aceptando esas cosas sin problemas.

Es por eso que soy un ávido promotor del software libre y los estándares abiertos. Si una empresa quiere que yo sea su cliente, primero va a tener que respetarme y reconocer que soy yo el que decido comprar sus servicios y productos y que si no me satisfacen van a tener un cliente menos. Y en esta época un cliente menos es un gran problema si ese cliente publica sobre su experiencia en diferentes redes sociales.

Espero que esta traducción ayude a mostrar lo poco que, lamentablemente, cambiaron las empresas en los últimos 3 años. Si tan sólo pudieramos cambiar los consumidores…

Notas

Continue reading

Depurando cuando se cuelga GNU/Linux

Lo bueno de GNU/Linux es que con cualquier problema que uno tiene sólo basta un par de búsquedas en internet para encontrar, al menos, una guía sobre por dónde empezar a buscar. Y si no es suficiente (o no se encuentra) siempre hay alguna comunidad en IRC o en una lista de correo con ganas de ayudar. Pero a veces no es suficiente, especialmente cuando el equipo directamente se cuelga, haciendo que sea muy complicado pedir ayuda (ya que no podemos copiar y pegar mensajes de error o probar cosas nuevas).

Por eso creo que es de vital importancia aprender un poquito sobre qué hacer con lo que sería el equivalente en GNU/Linux de las pantallas azules de la muerte. LA diferencia es que por lo general vamos a disponer de muchísima información para poder arreglarlo. Y si no, en el peor de los casos, este artículo al menos ayudará a descartar otros problemas.

Notas

  • Artículo original: Debugging system freezes
  • Autor original: Alexandre Rossi para Debian Administration
  • Si bien el artículo es originalmente específico para Debian, la mayoría de los consejos aplican a cualquier distribución GNU/Linux (a lo mejor cambiando algunos programas)
  • La palabra «log» está traducida como “registro”, pero agrego el original porque aún me resulta incómodo y poco claro

Continue reading

¿Cómo puedo ayudar a Debian?

A veces uno quiere ayudar en un proyecto libre y no sabe por dónde empezar. Siendo usuario de Debian y teniendo esa sensación creo que lo menos que puedo hacer es poner en práctica los consejos del artículo y traducirlo y publicarlo.

¿No sabés qué hacer para ayudar a Debian (que también, indirectamente, va a ayudar a Ubuntu)? Seguí leyendo.

Notas

Continue reading

Secretos del cliente MySQL de línea de órdenes

Los que trabajamos con bases de datos MySQL seguro tenemos un cliente gráfico para hacer la mayoría de nuestras tareas. Yo personalmente uso Emma en Linux, pero recomiendo usar SQLYog (su versión libre) para quienes usen Windows. Pero definitivamente no hay falta de otros programas que provean la funcionalidad que se desee para interactuar con una (o más) bases de datos MySQL.

Sin embargo, el cliente básico de línea de órdenes de MySQL es extremadamente poderoso. Pero, como toda herramienta no-gráfica, puede ser medio complicada de usar si no se está acostumbrado a leer un poco sobre las opciones que acepta o la documentación oficial.

Para eso está este artículo con unos consejos sobre cómo aprovechar al máximo esta herramienta.

Notas

Continue reading

5 ideas para vivir estresado

Todos nos sentimos estresados en algún momento y el estar al tanto de ello sólo nos produce más estrés. Salir de ese vórtice no es algo sencillo pero definitivamente no es imposible. Por eso este artículo me llamó tanto la atención, en lugar de ayudarnos a corregir lo que nos produce estrés nos muestra la mejor forma de potenciar sus efectos.

¿O acaso conocen mejores formas de mantenerse estresados?

Notas

Continue reading

Los proyectos del GSoC 2011

Para quien no sepa, Google financia a estudiantes de todo el mundo para que participen y mejoren proyectos de código abierto desde 2005. Hace unos días se publicó la lista de instituciones aceptadas en el Google Summer of Code 2011.

Mientras revisaba los proyectos que me interesan, se me ocurrió hacer un breve resumen de las ideas que pueden llegar a ver la luz gracias a este programa. Esta lista no intenta ser exhaustiva y sólo recopila algunas ideas de algunos proyectos; no es seguro que algún estudiante se postule para implementarla ni – de hacerlo – que sea aceptado. Pero está bueno ojear lo que puede llegar a deparar el futuro de estos proyectos.

GNU/Linux

Debian, una de las distribuciones de GNU/Linux (y ahora también GNU/kFreeBSD) con más distribuciones derivadas – como Ubuntu. Tiene muchas cosas interesantes para hacer, entre ellas:

  • Crear un sistema para repositorios personales similares a los PPA de Launchpad
  • Un nuevo control de diferentes versiones del mismo archivo provistos por diferentes paquetes
  • Mejor integración del servidor BOINC para facilitar la creación de proyectos que dependen de la donación de ciclos ociosos de procesador
  • Mejorar los Debian Pure Blends, las mini-distros especializadas de Debian

GNOME tiene muchos proyectos internos. Las ideas para el Summer of Code son tan variadas como los proyectos mismos: mejor edición y publicación de imágenes en Shotwell, aplicaciones web con Epiphany, agregar multi-player a un juego utilizando el framework Telepathy, integrar Anjuta con BugZilla, revisores de ortografía ne GTK+/GLib, filtros en el servidor (sieve) en Evolution, integrar video en Rhythmbox, entre muchísimos otros.

Haiku es un sistema operativo en desarrollo con proyectos que realmente pueden marcar una diferencia. Estos incluyen: hacer andar VirtualBox, mejorar el soporte de sistemas de archivos, implementar soporte para Bluetooth, mejoras a la interfaz e inclusive aceleración 3D por hardware.

Illumos, el proyecto para reemplazar OpenSolaris después de sus problemas hace unos meses también quiere estar a la par de otras distribuciones. Por eso podés ayudarlo: mejorando su versión de Wine, mejorar los sistemas de audio y virtualización o haciendo que Chrome, LibreOffice o KDE 4.6 anden sobre Illumos.

OpenSUSE, en cambio, tiene muchísimos proyectos para mejorar su sistema de creación de paquetes de software. Por lo que leí, parecería que apuntan a beneficiar a los desarrolladores en general integrando mejor su infraestructura de compilación, los reportes, los paquetes compilados y su sistema de testing. Aunque también tienen un par de proyectos para mejorar la experiencia del usuario: SaX 3 para configurar el servidor X, instalación desde Windows con Wubi, reportar bugs y muchas otras.

Programación

Django es uno de los frameworks web en python. Aparentemente están interesados en mejorar las grandes críticas al sistema:

  • Compilación de los templates para aumentar su velocidad
  • Un mejor módulo de usuarios y autenticación
  • Mejores mensajes de error y mejor documentación
  • Actualización de esquemas de bases de datos

Drupal es utilizado en todo el mundo cada vez más. La mayoría de los proyectos son sobre integración con otros sistemas (como OpenERP y Google Apps) y migración de funcionalidad existente a su última versión: Drupal 7; aunque también hay un par de ideas nuevas.

Elgg es un motor de redes sociales, básicamente te permite crear tu propia red social. Los proyectos incluyen uno para mejorar la accesibilidad del sistema (WAI y Sección 508), mejor sistema para contenidos en diferentes lenguajes y funcionalidades AJAX en su interfaz.

GCC tiene proyectos tan variados como interesantes. Van desde optimizaciones en velocidad o tamaño y mejorar las herramientas de diagnóstico hasta implementar nuevos estándares sobre los existentes como C++0x , OpenMP 3.0 o funcionalidades de Fortran.

GIT también fue aceptado. Los proyectos son por lo general implementar nuevas funcionalidades que mejoran las existentes o simplemente integrar o limpiar el código de la funcionalidad existente haciendo al sistema más eficiente, robusto y adaptable.

Haskell es un lenguaje muy interesante. Tiene proyectos variados que van desde implementar una base sobre CUDA de NVidia para Haskell Paralelos sobre Datos hasta desarrollar una interfaz para CouchDB o Amazon S3.

Python (en realidad la Python Software Foundation) tienen como principal objetivo impulsar Python 3. Y esto no es sólo en python mismo sino que también incluye otros proyectos como MailMan y Mercurial. Entre todas las cosas que se pueden hacer figuran:

  • Proveer profiling de diferentes implementaciones de python
  • Mejorar el mecanismo de importación de módulos
  • Proveer una interfaz Django para Mailman
  • Mejorar la performance y la documentación de Mercurial
  • Mejorar los sub-repositorios de mercurial, especialmente los relacionados a otros sistemas de control de versiones

Multimedia, Ofimática e Internet

FFMpeg y LibAV tienen varios proyectos sobre integración o mejora de nuevos codificadores/decodificadores de audio y video e integración con otros proyectos existentes.

GIMP también tiene sus propias ideas sobre cómo mejorarse: mejor interfaz para tamaños (que soporte operaciones matemáticas básicas y mezclar unidades), portar los plugins más importantes a la nueva infraestructura interna, permitir plugins en JavaScript y muchos otros. También hay varias ideas de proyectos en Inkscape.

GNUCash quiere mejorar también mejorando su sistema de pruebas interno, integración de negocios, migrar el sistema de reportes a python e inclusive continuar el trabajo de una interfaz completamente nueva.

Mozilla la fundación conocida por Firefox principalmente tiene muchos más proyectos en los que trabajar además del navegador. Estos van desde un parser en python para el formato de MediaWiki a una forma de ver una página web que muestre el anidado y z-index de los elementos en 3D.

Otros

Clear Climate Code es un proyecto promover la ciencia del clima. Las ideas incluyen:

  • Mejor y más fácil distribución e instalación
  • Integración con Excel para quienes quieran usar una hoja de cálculo
  • Implementación en otros lenguajes diferentes a python y/o integración con NumPy

Creative Commons es conocido por sus licencias, pero también tiene proyectos de software. Por ejemplo, un plugin oficial para WordPress o el programa CC Publisher para embeber información de la licencia en los archivos de audio y video que uno cree.

HedgeWars tiene ideas interesantes sobre cosas para hacer mejor el juego: poder guardar videos de partidas, sincronizar configuraciones, no ser expulsado de un juego cuando se pierde la conexión, una versión para iOs y otra para Android e inclusive inventar un nuevo modo de juego y armas.

phpMyAdmin también participa y quiere hacer cambios a su interfaz agregando más AJAX y limpiando código histórico así como mejorar su estructura interna con más testing, utilizando orientación a objetos de PHP y soportando Drizzle, un fork de MySQL.

Y hay más…

Y si todo eso te parece poco acá hay un par más:

  • LibreOffice tiene muchas cosas en las que trabajar sobre el nuevo fork de OpenOffice.
  • Moodle, la popular aplicación de educación en-linea también participa con un par de ideas interesantes.
  • OpenMRS es una plataforma para registros médicos. No estoy muy familiarizado con la aplicación, pero creo que es un tema importante y por de más interesante para aprender algo nuevo.
  • OpenStreetMap quiere mejorar todo, desde nuevas aplicaciones para usar sus mapas hasta mejoras en sistemas de ruteo y detección de nombres de calles en fotos con información geo-localizada.
  • Status.net, el sistema de micro-blogging abierto (y sobre el que funciona identi.ca) quiere tener su API en tiempo real, brindar analytics, integrar mejor las fotos y soportar diferentes sistemas de bases de datos internamente.
  • MediaWiki tiene proyectos para mejorar el código principal, sus extensiones o directamente hacer cosas nuevas.