lunes, noviembre 17, 2014
Tipografía práctica
Buscando un sumario de reglas generales referidas al diseño de textos impresos y de sitios web di con el libro Practical Typography de Matthew Butterick, que tras haber leído detenidamente considero indispensable para todo aquel que se haya dedicado tres minutos de su vida a plantearse con qué fuente plasmar, con qué alineación, o cómo dar énfasis a un texto que se encontraba escribiendo. Butterick es autor de diversas tipografías que provee en su sitio web, pero como diseñador viene de un trasfondo de letras: es escritor y es abogado, una profesión donde los documentos escritos son ineludibles.
Del sitio web del libro, que está disponible enteramente en línea, comiencen por “Typography in ten minutes”, luego pasen a “Summary of key rules” y, si les interesa lo que ven, sigan por el resto. En el texto, Butterick -menos teórico y más pragmático- también recomienda varias familias de tipografías y reniega de muchas otras, da excelentes consejos sobre cómo dar formato al texto y componer las páginas de un documento, y presenta además algunos ejemplos de diseño de elementos tales como artículos de investigación, encabezados, currículums, entre otros. Todos consejos bien fundamentados y con los que coincido casi plenamente; creo que la única diferencia que tengo es sobre el tamaño de letra que utiliza en el sitio web, pero eso se arregla fácilmente con el zoom del navegador.
Por lo demás, Practical Typography.
lunes, noviembre 10, 2014
SRC: Control de versiones para proyectos de un solo archivo
Tomás me recomendó GistBox, que parece bastante piola puesto que en cierta forma está destinado a mantener esa “biblioteca” de código variado que uno va acumulando con el tiempo. Además los Gists siguen siendo repositorios git, por lo cual tienen todas las ventajas de un control de versiones. Pero aquí ya uno depende un poco de los servicios en la nube y además sigue siendo necesario mantener los archivos fuente en directorios aparte.
Salvando GistBox, hasta el momento no había encontrado ningún software que realice tal tarea, e incluso estuve tentado a comenzar un proyecto propio para tal fin.
Sin embargo, recientemente di con un post de Eric Raymond en el cual menciona la creación de un nuevo proyecto denominado SRC o “Simple Revision Control”, basado en RCS y definido como “Revision control with a modern UI for single-file solo projects kept possibly more than one to a directory”. En palabras sencillas, justo lo que estoy buscando.
Según el sitio web del proyecto -que al involucrar múltiples archivos, está mantenido en git, pun intended!-, Simple Revision Control es:
RCS recargado -un pequeño y cómodo sistema de control de versiones para proyectos de único archivo, único desarrollador, tal como todos esos pequeños scripts en el directorio ~/bin. Cuenta con operación libre de bloqueo, una interfaz de usuario limpia y moderna similar a la de subversion, documentación integrada, y los archivos de historia son archivos sencillos de RCS.A primera vista tiene tres ventajas: a) cumple con lo que yo había solicitado; b) está desarrollado en python; y c) por el propio autor de “The Art of UNIX Programming”. Más no se puede pedir.
Y mientras estaba leyendo el artículo, en los comentarios aportan otra utilidad similar (que también desconocía): Zit, the git-based single file content tracker. Por ahora voy a probar SRC y ver si se ajusta a mi forma de trabajo. En un tiempo les comento que tal fue.
lunes, noviembre 03, 2014
Post instalación Debian GNU/Linux 7 (Wheezy)
- para el que quiera tener una instalación de debian wheezy (estable) usable, vale decir, con algunas aplicaciones más modernas que las que trae por defecto pero tratando de no salir de los repos oficiales;
- y para mí, para no perder tiempo haciendo memoria en el caso de tener que reinstalar el sistema.
Paso 1
Para comenzar, partimos de la instalación base de Debian Wheezy. Para que se den una idea, hay que seguir la instalación tradicional y cuando presenta el uso que se dará (escritorio, servidor, etc), desmarcar todas las opciones y continuar normalmente.Paso 2
Una vez instalado y hecho el primer arranque, luego de iniciar sesión lo que suelo hacer al toque es deshabilitar la opción de instalación de paquetes recomendados, puesto que pocas veces son necesarios y además engordan sobremanera el espacio ocupado por el sistema. Para ello basta con ejecutar la línea siguiente para que las próximas instalaciones eviten instalarlos.echo "APT::Install-Recommends \"false\";" > /etc/apt/apt.conf.d/90-wheezy-powerup-disable-recommends.conf
Paso 3
Luego, sólo si están detrás de un proxy, hay varias formas de configurarlo: puede ser globalmente mediante las variables de entornohttp_proxy, https_proxy y ftp_proxy, o bien mediante la configuración de APT para aquellos casos donde dispongan de un servidor de caché como APT-Cacher. Por ejemplo:
PROXY="http://proxy.miorganizacion.com.ar:8080/" export http_proxy=$PROXY export https_proxy=$PROXY export ftp_proxy=$PROXY echo "Acquire::http::Proxy \"$PROXY\";" > /etc/apt/apt.conf.d/90-wheezy-powerup-proxy.conf echo "Acquire::ftp::Proxy \"$PROXY\";" > /etc/apt/apt.conf.d/90-wheezy-powerup-proxy.conf
Paso 4
Verificar que están configurados los repositorios oficiales de la distribución, más el repositorio de backports. Para ello, el archivo/etc/apt/sources.list debería listar, al menos, los siguientes:
deb http://cdn.debian.net/debian/ wheezy main contrib non-free deb http://security.debian.org/ wheezy/updates main contrib deb http://cdn.debian.net/debian/ wheezy-backports main contrib non-free
Paso 5
Agregar algunos repositorios externos (no Debian) que contienen software útil, por ejemplo mozilla-debian para la última versión de Iceweasel, el de Dropbox y el de Google Talk. Se pueden agregar en un archivo denominado/etc/apt/sources.list.d/repos-externos.list
deb http://mozilla.debian.net/ wheezy-backports iceweasel-release deb http://linux.dropbox.com/debian wheezy main deb http://dl.google.com/linux/talkplugin/deb/ stable main
Paso 6
Clásico: actualizar la lista de paquetes.apt-get update
Paso 7
Instalar un entorno gráfico y los controladores de la placa de video. Para la interfaz gráfica hay varios metapaquetes que se corresponden a cada entorno de escritorio, los más conservadores son los siguientes: para Gnome, instalandognome-core alcanza; para KDE, instalen kde-plasma-desktop; para XFCE instalen xfce4; para LXDE instalen lxde; incluso pueden instalar Mate desde backports mediante el paquete mate.
Eventualmente puede ser necesario instalar un driver privativo, por ejemplo para placas GPU AMD/ATI suele ser necesario el paquete fglrx-driver, mientras que para placas GPU nVidia el paquete a instalar es xserver-xorg-video-nvidia. También hay versiones para chipsets más antiguos (aparecen como paquetes con el nombre legacy). Si tienen un chipset Intel, con lo que viene por defecto suele alcanzar.
Sobre el entorno gráfico, yo tengo predilección por el Gnome clásico.
apt-get install xorg xserver-xorg xserver-xorg-video-all \ gnome-core gnome-session-fallback
Superpaso 8
Instalar paquetes desde los repositorios oficiales. Como en la línea anterior, cada paquete está enlazado a su descripción en el sitio de Debian.Paso 8.1. Controladores y servicios útiles
apt-get install amd64-microcode dkms fail2ban \ intel-microcode libmtp-runtime ntfs-3g ssh \ uptimed
Paso 8.2. Herramientas útiles de línea de comando
apt-get install alsa-utils bash-completion clamav \ colordiff colortail curl flac hexedit highlight \ htop iotop less lftp libav-tools mc mlocate nano \ nmap netcat-openbsd os-prober p7zip p7zip-full pv \
qemu-kvm screen sshfs tshark unrar unzip vbindiff \
w3m wget zip
Paso 8.3. Lenguajes de programación, herramientas y documentación
apt-get install build-essential idle ipython python \ python-doc sqlite3 sqlite3-doc
Paso 8.4. Programas gráficos para fines variados (editores, reproductores, etc)
apt-get install audacious chromium chromium-l10n \ desktop-base file-roller filezilla \ flashplugin-nonfree fslint gedit gedit-plugins \ geeqie ghex gimp gksu gnome-specimen gnome-tweak-tool \ gpicview gstreamer0.10-ffmpeg hardinfo icedove \ icedove-l10n-es-ar keepassx leafpad meld mplayer-gui \ mplayer2 openbox sound-juicer sqlitebrowser synaptic \ totem transmission-gtk vlc wireshark \ xdg-user-dirs-gtk xterm apt-get -t wheezy-backports install geany geany-plugins \ pepperflashplugin-nonfree
Paso 8.5. Iconos y temas de escritorio
apt-get install clearlooks-phenix-theme dmz-cursor-theme \ gnome-colors human-icon-theme murrine-themes \ shiki-colors tango-icon-theme
Paso 8.6. Versión más moderna del kernel (3.16 para 64 bits)
apt-get -t wheezy-backports install firmware-linux \ linux-headers-amd64 linux-image-amd64 linux-doc
Paso 8.7. Versión más moderna de VirtualBox (4.3.14)
apt-get install libqt4-network libqt4-opengl libqtcore4 \ libqtgui4 apt-get -t wheezy-backports install virtualbox \ virtualbox-dkms virtualbox-qt
Paso 8.8. Versión más moderna de LibreOffice (4.3.2)
apt-get -t wheezy-backports install libreoffice \ libreoffice-gnome libreoffice-help-es \ libreoffice-l10n-es libreoffice-style-tango \ fonts-opensymbol
Paso 8.9. Versión más moderna de Iceweasel/Firefox (33)
apt-get -t wheezy-backports install iceweasel \
iceweasel-l10n-es-ar
Paso 8.10. Tipografías
apt-get install fonts-cantarell fonts-crosextra-caladea \ fonts-crosextra-carlito fonts-dkg-handwriting \ fonts-humor-sans fonts-droid fonts-font-awesome \ fonts-liberation fonts-roboto ttf-dejavu \ ttf-mscorefonts-installer
Paso 9
Instalar paquetes desde repositorios externos: dropbox, skype, google-talkplugin (pendiente de documentar)Paso 10
Listo, con eso les queda un sistema operativo de unos 5 GB, a mi juicio, casi perfecto. Todo lo documentado aquí está disponible en un sencillo script que instala Gnome y ejecuta estos pasos de un saque. Lo dejo aquí disponible por si les sirve: wheezy-powerup.shAlgunos consejos adicionales:
- Antes de iniciar sesión, conviene elegir la sesión "Gnome Classic" y establecerla por defecto.
- Una vez en el escritorio, cambien el tapiz y utilicen
gnome-tweak-toolpara habilitar los íconos en el fondo, cambiar la tipografía y los temas visuales. - Pueden añadir applets a las barras superior e inferior manteniendo presionada la tecla Alt y haciendo clic con el botón derecho del ratón sobre alguna de ellas. Si con Alt no funciona, prueben con Win+Alt
- Para tener la tipografía clásica en las terminales Fx, ejecuten
dpkg-reconfigure console-setupy en "Tipo de letra para la consola" seleccionen "No cambie la tipografía del arranque".
lunes, octubre 20, 2014
La RAE y su incorrecta acepción de hacker
hacker (Voz ingl.): m. y f. Inform. pirata informático.aclarando que la explicación de pirata informático tambien en rae.es:
Pirata informático: Traducción recomendada para la voz inglesa hacker, ‘persona con grandes habilidades en el manejo de ordenadores, que utiliza sus conocimientos para acceder ilegalmente a sistemas o redes ajenos’: "Un pirata informático logró jaquear los sistemas de seguridad" (Clarín@ [Arg.] 19.6.05).Por mi parte, continuaré utilizando la definición existente en el Jargon File, de Eric S. Raymond, que surge desde el propio movimiento hacker y es aceptada ampliamente por la comunidad de software libre, según la cual un hacker es, entre otras cosas:
hacker: n. A person who enjoys exploring the details of programmable systems and how to stretch their capabilities, as opposed to most users, who prefer to learn only the minimum necessary. RFC1392, the Internet Users' Glossary, usefully amplifies this as: A person who delights in having an intimate understanding of the internal workings of a system, computers and computer networks in particular. (Jargon File)
hacker: s. Una persona que disfruta explorando los detalles de los sistemas programables y cómo extender sus capacidades, a diferencia de la mayoría de los usuarios que prefieren aprender sólo el mínimo necesario. La RFC1392, el Glosario de los Usuarios de Internet, amplía eficazmente la definición como: Una persona que se deleita en tener un entendimiento profundo del funcionamiento interno de un sistema, de las computadoras y de las redes informáticas, en particular.Desconozco qué es lo que ha llevado a los editores de la RAE a tomar tan equivocada definición del término. Probablemente lo que apunta Raúl acerca de el uso habitual en los medios de comunicación tenga algo que ver, pero sin dudas me ha desilusionado sobremanera que la gente de la Real Academia haya incorporado esta acepción sin haber consultado previamente a los propios referidos por el término. Para decirlo sencillo: "un cirujano no es un asesino, por más que abra la gente al medio".
Actualización: Chema Alonso se suma a la protesta y ha iniciado una petición en Change.org para que se cambie la definición de hacker. Firmas aquí!
domingo, julio 06, 2014
Call for Charlas PyDay Luján 2014
Sobre el PyDay
PyDay es el nombre coloquial con el que se conoce a las jornadas de lenguaje Python de un día de duración.Este evento se presenta como una oportunidad de encuentro e intercambio de experiencias entre desarrolladores, programadores y usuarios del lenguaje en ámbitos que se extienden a la empresa, la academia, el arte y, desde luego, el ocio.
La temática del evento es el lenguaje de programación de propósito general Python, en niveles introductorios e intermedios tanto teórico (charla) como práctico (talleres), si bien también serán recibidas aquellas propuestas de temas más avanzados y afines.
Cada disertante dispondrá de 45 minutos para su exposición, incluyendo el tiempo para preguntas. Habrá unos 15 minutos de intermedio entre charlas. Además, el día del evento se se pondrá a disposición de los presentes un listado para recibir propuestas de Charlas Relámpago.
Envío de propuestas
Para acercarnos una propuesta de charla, ingrese a la sección "Charlas" en el sitio oficial del evento y complete el formulario de propuesta allí presente. El material de las presentaciones se hará disponible a los asistentes, por lo que solicitamos se brinde bajo una licencia que permita su libre distribución.Fecha límite
La recepción de propuestas finaliza el día 15 de agosto del corriente año a la medianoche. Las presentaciones fuera de plazo podrán ser considerados para su inclusión en la conferencia principal en caso de quedar espacio disponible. Una vez evaluadas las propuestas, se informará a los autores el resultado de la selección.Para contactarse en forma privada respecto a su propuesta, por ideas más generales o preguntas sobre el evento, por favor envíenos un correo electrónico a pydaylujan@gmail.com
Esperamos contar nuevamente con Uds. en la UNLu para compartir momentos memorables durante este PyDay.
Agradecemos la difusión de este llamado y del encuentro en sí.
viernes, junio 20, 2014
Indistinguible de la magia
Hoy, en el mismo equipamiento:
Todo gracias a la curiosidad del genial scener Jim Leonard (trixter), que redacta en su blog la complejidad de lograr tal hazaña en su demo 8088 Domination. Mierda, se me caen las lágrimas.
Vía OSNews
domingo, mayo 25, 2014
Haciendo puentes SSH entre distintos hosts con netcat
Editar (o crear, si no existiera) el archivo
~/.ssh/config e incorporar las siguientes lineas (reemplazando los nombres de host donde correspondan):Host buenvecino
User mauro
Hostname buenvecino.domain.net
Port 1022
Host www
User bitnegro
Hostname www.example.net
ProxyCommand ssh -q buenvecino nc -q0 www.example.net 4020
Host destino
User bitnegro
ProxyCommand ssh -q www nc -q0 192.168.57.215 22
Y con esto definido, es posible hacer directamente$ ssh destino mauro@buenvecino.domain.net's password: bitnegro@www.example.net's password: bitnegro@192.168.57.215's password: Last login: Fri May 16 20:31:01 2014 from www.example.net bitnegro@destino:~$ echo Success!!Pero la mayor utilidad de todo esto, la crème de la crème, es que es posible hacer SCP pasando archivos de un lado a otro sin tener que hacer las copias intermedias, por lo que esta alternativa de configuración es, a mi criterio, un go-la-zo.
Créditos al autor original, al que le debo una docena de facturas.
martes, mayo 20, 2014
El mejor consejo que recibí sobre programación
Por motivos que resultarán evidentes, yo no coincido con el consejo, sino con lo que afirma el autor en el último párrafo, que sin su permiso transcribo a continuación:
Años más tarde, en la medida que me encontré construyendo y gestionando equipos de desarrollo, advertí que había en aquel antiguo proyecto probablemente una docena de programadores que sabían por qué el sistema andaba tan lento, y cómo resolverlo. Lo sabían, pero se mantuvieron en silencio ya que en esa organización había ciertas cosas que eran más importantes que mejorar el sistema. [La frase] En el futuro, no te metas en el código ajeno* asume que habrá un futuro. Pero la mejor manera de tener un futuro es ser parte de un equipo que valora el progreso por sobre la política, las ideas por sobre el territorio y la iniciativa por sobre el decoro.Impecable.
* por no elegir una traducción más explícita.
viernes, mayo 16, 2014
Oh, la ironía... | Mozilla
Les dejo el aviso de prensa en inglés y en español, la posición de la EFF, y un comentario de Ian Hickson que me pareció interesante.
domingo, abril 06, 2014
FLISOL 2014 - Festival Latinoamericano de Instalación de Software Libre
Al igual que en ediciones anteriores, los integrantes del grupo instalarán Software Libre (GNU/Linux, Firefox, etc.) de forma gratuita y totalmente legal en los equipos informáticos que los asistentes acerquen al encuentro.
Durante la ejecución del mismo se ofrecerán charlas informativas y técnicas sobre diferentes aspectos relacionados con el Software Libre. Los invitamos a participar acercando sus equipos tanto para la instalación de Software Libre, la resolución de problemas sobre instalaciones existentes o simplemente para participar de una jornada distinta para intercambiar experiencias sobre Software Libre o compartir una tarde en un ambiente agradable.
Sobre el FLISOL
El Festival Latinoamericano de Instalación de Software Libre es un evento que se viene desarrollando de forma anual desde hace casi una década, donde se promueve el trabajo colaborativo ayudando a personas a conocer el mundo del Software Libre.Está organizado por varios grupos de usuarios de los países involucrados congregados alrededor de esta iniciativa que reúne participantes de Argentina, Bolivia, Brasil, Chile, Colombia, Cuba, Ecuador, El Salvador, Guatemala, Honduras, México, Nicaragua, Panamá, Paraguay, Perú, Uruguay y Venezuela, entre otros. En Argentina ya está confirmada la realización de FLISOL en distintas ciudades.
El encuentro está dirigido a todas las personas que desean conocer más sobre software libre, instalarlo y usar sus computadoras preservando sus libertades, en condiciones de legalidad y sin estar preocupados por virus y otros problemas comunes del software privativo. Durante la jornada, se realizan instalaciones en forma totalmente gratuita, mientras que en paralelo se ofrecen diversas charlas de divulgación para promover el uso y la filosofía del Software Libre.
Cronograma de Charlas
El cronograma de charlas se está actualizando constantemente. Revisa los sitios flisol.info/FLISOL2014/Argentina/Lujan o www.unlux.com.ar para estar al tanto de las novedades.Inscripción
Llenando este formulario, nos ayudas a estimar la asistencia de público y preparar mejor los espacios disponibles:http://eventosimple.net/event/sp/publication/flisol-unlu/register
Sin embargo, la entrada es libre y gratuita, no es necesario registrarse para asistir a las charlas. Si pensás traer un equipo para instalar o configurar, por favor registrate y lee detenidamente las aclaraciones y datos al respecto.
Sobre el UNLUX
El UNLUX es un grupo de usuarios y entusiastas del Software Libre, que existe desde el 2005 y realiza sus actividades en el marco de la Universidad Nacional de Luján. Participa en el FLISOL desde el 2006, instalando y difundiendo diferentes ventajas de usar el Software Libre en el ámbito Educativo, Social, Técnico, Profesional y Personal.Para conocer las vías de comunicación, podés empezar por www.unlux.com.ar y suscribirte a la lista de correo y el canal IRC.
En agenda
- Lugar: Universidad Nacional de Luján - Sede Central - Cruces de Ruta 5 y 7 - Pabellón 400
- Fecha: Sábado 26 de abril de 2014
- Hora: A partir de las 13:00 hs.
jueves, febrero 27, 2014
Fin de semana
Me pregunto... ¿cómo hace para meterse en mis pensamientos?
domingo, febrero 23, 2014
Analizando ejecutables de Windows con software libre
Haciendo uso de pefile, pygraphviz y principalmente pymsasid, con unas 400 líneas de python es posible partir de un ejecutable cualquiera y obtener un gráfico como el siguiente.
Desde luego este es un ejemplo extremadamente sencillo y trivial, analizando el binario autochk.exe de ReactOS 0.3.16, un sistema operativo binary-compatible con Windows. El gráfico de flujo de control para un ejecutable moderno crece rápidamente a raíz de los distintos caminos que el compilador debe generar para representar las instrucciones presentes en el código fuente original de la utilidad (autochk.c.
El diagrama siguiente fue construido a partir del ejecutable hideflag.exe, que es un código histórico en este blog. He marcado en amarillo el bucle principal que se puede apreciar en el código fuente de la aplicación (en pascal, esta vez).
Para el despliegue de los gráficos, dado que los visores en Debian se mambean con imagenes de varios megapíxeles (bugs 581891 y 163090 ya reportados en varios lugares), les recomiendo descargar los archivos .dot originales y visualizarlos directamente con la excelente utilidad xdot (también hecha en python, de paso).
En el diagrama, cada bloque básico inicia con un punto de entrada (primera instrucción a ejecutar, EIP, o destino de un salto) y finaliza con otro salto, una instrucción de retorno (ret), o bien abruptamente como resultado de un límite impuesto arbitrariamente por mí (esto último para evitar generar gráficos grandes con los cuales dot se marea, y créanme que algunos tardan más de diez minutos en desplegarse).
El bloque marcado en verde es comúnmente el primero en ejecutarse. Las flechas de colores indican, obviamente, el flujo de ejecución posible. Los códigos son los siguientes:
- Flechas azules ➞ salto incondicional;
- Flechas negras ➞continuación/fall-thru (instrucción que sigue directamente a la actual);
- Flechas violetas ➞ llamada a función (sólo la ida, se asume que la llamada a función retorna a la instrucción siguiente);
- Flechas verdes ➞ bloque a ejecutar en un salto condicional si la condición evaluada resulta verdadera;
- Flechas rojas ➞ bloque a ejecutar en un salto condicional si la condición evaluada resulta falsa;
- Flechas celestes ➞ callback al que apunta algún argumento del código (no implica que la función sea llamada en ese momento)
En algunas instrucciones, si el operador es una dirección de memoria válida y refiere a la sección de datos del ejecutable, el script añade el contenido de dicha dirección como comentario a la instrucción desensamblada (útil para ver cadenas de formato pasados como parámetro a llamadas a impresión en pantalla); si en cambio refiere a la sección de código, interpreta que se trata de un puntero a función utilizada como callback. De forma similar, trata de interpretar las llamadas a funciones de bibliotecas (resumiendo CALL y CALL-to-JMP) mediante información existente en la IAT si estuviera disponible.
Desde ya, el código que genera estos gráficos tiene innumerables errores y limitaciones (ej, evaluación de saltos indirectos, mejor detección de callbacks, interpretación de loop/loopX y muchas más cosas). En resumen, es sumamente borrador, por eso no lo puse en línea con esta entrada. En realidad lo estoy utilizando como preprocesador para una fase siguiente de decompilación. En cuanto lo tenga mas o menos prolijo lo subo a una cuenta de github, por si a alguno le interesa. También me va a servir a mí para acostumbrarme a usar ese servicio, hehe.
Lo curioso de todo es lo cómodo que resulta Debian para hacer análisis de ejecutables de Windows, jaj.
viernes, febrero 14, 2014
Traducción completa del manual del administrador de Debian
La traducción en español fue llevada a cabo por Matías Bellone, Adrià García-Alzórriz, Rene Saavedra y otros colaboradores.
El libro puede adquirirse en papel, en digital, consultarse gratuitamente en línea o leerse localmente instalando el paquete debian-handbook (en este último caso, en inglés).
martes, enero 28, 2014
Desensamblando binarios en línea
Online Disassembler es el sueño de todo hacker: un desensamblador en línea. ODA soporta una gran cantidad de arquitecturas y tiene las heurísticas necesarias para interpretar la estructura de muchos archivos binarios (PE, ELF, etc.). Permite subir uno o varios archivos, o bien escribir los bytes en el cuadro de texto para ver qué representan.
Probemos con esto. A qué código C correspondería la siguiente secuencia?
55 89 e5 d9 45 08 d8 45 0c d9 05 a0 84 04 08 de f9 5d c3Tips: la arquitectura es 32 bits, y en el valor almacenado en ds:0x80484a0 es 2.0 (en IEEE754 binary32). Facilísimo.
Pero ODA no es el único desensamblador en línea. Pym's es un proyecto similar, hecho en python y también permite subir un archivo, desensamblarlo y navegar el código, aunque es más limitado en cuanto a las arquitecturas y tipos de archivo soportados. Aún así, es otra opción a considerar.
Bien, solo eso por ahora. Happy reversing!
viernes, enero 24, 2014
Benchmark day 2: WD Caviar Red 1TB (WDC WD10EFRX-68JCSN0)
Modelo: WDC WD10EFRX-68JCSN0
Capacidad: 1 TB
Interfaz: SATA III
Caché: 64 MB
Velocidad: variable según la serie
Tamaño de sector: 4K físico, 512 lógico
# hdparm -I /dev/sda
ATA device, with non-removable media
Model Number: WDC WD10EFRX-68JCSN0
Serial Number: [REDACTED]
Firmware Revision: 01.01A01
Transport: Serial, SATA 1.0a, SATA II Extensions, SATA Rev 2.5, SATA Rev 2.6, SATA Rev 3.0
Standards:
Supported: 8 7 6 5
Likely used: 8
Configuration:
Logical max current
cylinders 16383 16383
heads 16 16
sectors/track 63 63
--
CHS current addressable sectors: 16514064
LBA user addressable sectors: 268435455
LBA48 user addressable sectors: 1953525168
Logical Sector size: 512 bytes
Physical Sector size: 4096 bytes
Logical Sector-0 offset: 0 bytes
device size with M = 1024*1024: 953869 MBytes
device size with M = 1000*1000: 1000204 MBytes (1000 GB)
cache/buffer size = unknown
Capabilities:
LBA, IORDY(can be disabled)
Queue depth: 32
Standby timer values: spec'd by Standard, with device specific minimum
R/W multiple sector transfer: Max = 16 Current = 16
DMA: mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 udma4 udma5 *udma6
Cycle time: min=120ns recommended=120ns
PIO: pio0 pio1 pio2 pio3 pio4
Cycle time: no flow control=120ns IORDY flow control=120ns
Commands/features:
Enabled Supported:
* SMART feature set
Security Mode feature set
* Power Management feature set
* Write cache
* Look-ahead
* Host Protected Area feature set
* WRITE_BUFFER command
* READ_BUFFER command
* NOP cmd
* DOWNLOAD_MICROCODE
Power-Up In Standby feature set
* SET_FEATURES required to spinup after power up
SET_MAX security extension
* 48-bit Address feature set
* Device Configuration Overlay feature set
* Mandatory FLUSH_CACHE
* FLUSH_CACHE_EXT
* SMART error logging
* SMART self-test
Media Card Pass-Through
* General Purpose Logging feature set
* 64-bit World wide name
* URG for READ_STREAM[_DMA]_EXT
* URG for WRITE_STREAM[_DMA]_EXT
* IDLE_IMMEDIATE with UNLOAD
* WRITE_UNCORRECTABLE_EXT command
* {READ,WRITE}_DMA_EXT_GPL commands
* Segmented DOWNLOAD_MICROCODE
* Gen1 signaling speed (1.5Gb/s)
* Gen2 signaling speed (3.0Gb/s)
* Gen3 signaling speed (6.0Gb/s)
* Native Command Queueing (NCQ)
* Host-initiated interface power management
* Phy event counters
* Idle-Unload when NCQ is active
* NCQ priority information
* unknown 76[15]
* DMA Setup Auto-Activate optimization
Device-initiated interface power management
* Software settings preservation
* SMART Command Transport (SCT) feature set
* SCT LBA Segment Access (AC2)
* SCT Error Recovery Control (AC3)
* SCT Features Control (AC4)
* SCT Data Tables (AC5)
unknown 206[7]
unknown 206[12] (vendor specific)
unknown 206[13] (vendor specific)
Security:
Master password revision code = 65534
supported
not enabled
not locked
frozen
not expired: security count
supported: enhanced erase
140min for SECURITY ERASE UNIT. 140min for ENHANCED SECURITY ERASE UNIT.
Logical Unit WWN Device Identifier: 50014ee209106fb8
NAA : 5
IEEE OUI : 0014ee
Unique ID : 209106fb8
Checksum: correct
# smartctl -x /dev/sda
smartctl 5.41 2011-06-09 r3365 [x86_64-linux-3.13.0] (local build)
Copyright (C) 2002-11 by Bruce Allen, http://smartmontools.sourceforge.net
=== START OF INFORMATION SECTION ===
Device Model: WDC WD10EFRX-68JCSN0
Serial Number: [REDACTED]
LU WWN Device Id: 5 0014ee 209106fb8
Firmware Version: 01.01A01
User Capacity: 1.000.204.886.016 bytes [1,00 TB]
Sector Sizes: 512 bytes logical, 4096 bytes physical
Device is: Not in smartctl database [for details use: -P showall]
ATA Version is: 8
ATA Standard is: Exact ATA specification draft version not indicated
Local Time is: Tue Jan 21 20:01:34 2014 ART
SMART support is: Available - device has SMART capability.
SMART support is: Enabled
=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED
General SMART Values:
Offline data collection status: (0x00) Offline data collection activity
was never started.
Auto Offline Data Collection: Disabled.
Self-test execution status: ( 0) The previous self-test routine completed
without error or no self-test has ever
been run.
Total time to complete Offline data collection: (13320) seconds.
Offline data collection capabilities:
(0x7b) SMART execute Offline immediate.
Auto Offline data collection on/off support.
Suspend Offline collection upon new command.
Offline surface scan supported.
Self-test supported.
Conveyance Self-test supported.
Selective Self-test supported.
SMART capabilities: (0x0003) Saves SMART data before entering power-saving mode.
Supports SMART auto save timer.
Error logging capability: (0x01) Error logging supported.
General Purpose Logging supported.
Short self-test routine recommended polling time: ( 2) minutes.
Extended self-test routine recommended polling time: ( 152) minutes.
Conveyance self-test routine recommended polling time: ( 5) minutes.
SCT capabilities: (0x30bd) SCT Status supported.
SCT Error Recovery Control supported.
SCT Feature Control supported.
SCT Data Table supported.
SMART Attributes Data Structure revision number: 16
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME FLAGS VALUE WORST THRESH FAIL RAW_VALUE
1 Raw_Read_Error_Rate POSR-K 200 200 051 - 0
3 Spin_Up_Time POS--K 138 133 021 - 4058
4 Start_Stop_Count -O--CK 100 100 000 - 47
5 Reallocated_Sector_Ct PO--CK 200 200 140 - 0
7 Seek_Error_Rate -OSR-K 200 200 000 - 0
9 Power_On_Hours -O--CK 098 098 000 - 1920
10 Spin_Retry_Count -O--CK 100 253 000 - 0
11 Calibration_Retry_Count -O--CK 100 253 000 - 0
12 Power_Cycle_Count -O--CK 100 100 000 - 47
192 Power-Off_Retract_Count -O--CK 200 200 000 - 21
193 Load_Cycle_Count -O--CK 200 200 000 - 25
194 Temperature_Celsius -O---K 112 105 000 - 31
196 Reallocated_Event_Count -O--CK 200 200 000 - 0
197 Current_Pending_Sector -O--CK 200 200 000 - 0
198 Offline_Uncorrectable ----CK 100 253 000 - 0
199 UDMA_CRC_Error_Count -O--CK 200 200 000 - 0
200 Multi_Zone_Error_Rate ---R-- 100 253 000 - 0
||||||_ K auto-keep
|||||__ C event count
||||___ R error rate
|||____ S speed/performance
||_____ O updated online
|______ P prefailure warning
SMART Extended Comprehensive Error Log Version: 1 (6 sectors)
No Errors Logged
SMART Extended Self-test Log Version: 1 (1 sectors)
No self-tests have been logged. [To run self-tests, use: smartctl -t]
SCT Status Version: 3
SCT Version (vendor specific): 258 (0x0102)
SCT Support Level: 1
Device State: Active (0)
Current Temperature: 31 Celsius
Power Cycle Min/Max Temperature: 27/37 Celsius
Lifetime Min/Max Temperature: 19/38 Celsius
Under/Over Temperature Limit Count: 0/0
SCT Temperature History Version: 2
Temperature Sampling Period: 1 minute
Temperature Logging Interval: 1 minute
Min/Max recommended Temperature: 0/60 Celsius
Min/Max Temperature Limit: -41/85 Celsius
Temperature History Size (Index): 478 (350)
SCT Error Recovery Control:
Read: 70 (7,0 seconds)
Write: 70 (7,0 seconds)
SATA Phy Event Counters (GP Log 0x11)
ID Size Value Description
0x0001 2 0 Command failed due to ICRC error
0x0002 2 0 R_ERR response for data FIS
0x0003 2 0 R_ERR response for device-to-host data FIS
0x0004 2 0 R_ERR response for host-to-device data FIS
0x0005 2 0 R_ERR response for non-data FIS
0x0006 2 0 R_ERR response for device-to-host non-data FIS
0x0007 2 0 R_ERR response for host-to-device non-data FIS
0x0008 2 0 Device-to-host non-data FIS retries
0x0009 2 33157 Transition from drive PhyRdy to drive PhyNRdy
0x000a 2 45 Device-to-host register FISes sent due to a COMRESET
0x000b 2 0 CRC errors within host-to-device FIS
0x000f 2 0 R_ERR response for host-to-device data FIS, CRC
0x0012 2 0 R_ERR response for host-to-device non-data FIS, CRC
0x8000 4 523088 Vendor specific
He resaltado el contador de ciclos de carga (Load Cycle Count) puesto que es un dato a tener presente ya que otras series de discos de WD, vale decir, los Caviar Green, han tenido problemas al utilizar una política de ahorro de energía demasiado agresiva que reduce el tiempo de vida de la unidad. En este disco, por suerte, el conteo de ciclos parece bastante normal.# hdparm -tT /dev/sda
/dev/sda: Timing cached reads: 26724 MB in 2.00 seconds = 13374.46 MB/sec Timing buffered disk reads: 422 MB in 3.01 seconds = 140.12 MB/sec
$ dd if=/dev/zero of=archivo.img count=1K bs=1M conv=fdatasync
1024+0 records in 1024+0 records out 1073741824 bytes (1.1 GB) copied, 9.80654 s, 109 MB/sLas pruebas de lectura con hdparm y con dd. Cuanto más velocidad indiquen, mejor, por supuesto.
palimpsest - Prueba de rendimiento de solo lectura (clic para agrandar)
Este gráfico representa la velocidad de lectura y el tiempo de acceso en distintas partes del disco, desde los sectores más externos al plato (parte izquierda) hasta los más cercanos al eje (parte derecha). La línea azul representa la velocidad de lectura (asociada a la escala izquierda), mientras que los puntos verdes representan los tiempos de acceso en distintas ubicaciones del disco (asociada a la escala derecha).
Es notable la diferencia en la velocidad de lectura que existe al operar con los primeros sectores respecto de los últimos: 155 MB/s contra 70 MB/s. Como curiosidad, a su vez, se puede advertir que los sectores del centro del plato tienen un tiempo de acceso ligeramente más uniforme.
$ bonnie++
Version 1.96 ------Sequential Output------ --Sequential Input- --Random-
Concurrency 1 -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
hc-maurom 16G 1229 95 114703 11 52129 4 6031 88 154671 7 102.4 2
Latency 8984us 2427ms 688ms 22552us 122ms 731ms
Version 1.96 ------Sequential Create------ --------Random Create--------
hc-maurom -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
16 26100 22 +++++ +++ 25978 16 +++++ +++ +++++ +++ +++++ +++
Latency 26012us 340us 771us 42us 9us 26us
Los resultados de bonnie++ son bastante completos. Además de hacer mediciones de entrada/salida sobre el disco, mide también operaciones sobre el sistema de archivos (que por ahora no reviso). Lo relevante son las tasas de escritura y lectura en bloques, la cantidad de búsquedas por segundo (más es mejor) y la latencia de las mismas (menos es mejor).Todas las pruebas fueron realizadas sobre una partición ext4.
Press START: sólo para nostálgicos
Esto ya es noticia vieja, pero no puedo dejar de republicarlo.
El usuario de YouTube NicksplosionFX se tomó el arduo trabajo de armar un video con la pantalla de inicio de casi todos los videojuegos desarrollados para el viejo sistema NES de Nintendo, que fue más conocido aquí con las consolas clones FamiCon / Family Game.
El video comprende más de 709 pantallas de inicio ordenados alfabéticamente por el título del juego, con su correspondiente música y animación, en un clip que dura casi tres horas. Buceando en algunos minutos pude cruzarme con varios de los grandes títulos que entretuvieron mi niñez, y estoy seguro de que muchos que están rondando los treinta reconocerán la música de apertura de sus títulos favoritos.
Va entonces, gráfica y sonido de 8-bits para todos aquellos nostálgicos como yo.
jueves, enero 23, 2014
Benchmark day 1: Seagate Barracuda 500GB (ST500DM002-1BD142)
La primera prueba va contra el disco de la estación de trabajo, siguen las especificaciones y más abajo los resultados por si a alguno le interesa. He remarcado los datos más relevantes.
Modelo: ST500DM002-1BD142
Capacidad: 500 GB
Interfaz: SATA III
Caché: 16 MB
Velocidad: 7200 RPM
Tamaño de sector: 4K físico, 512 lógico
# hdparm -I /dev/sda
ATA device, with non-removable media
Model Number: ST500DM002-1BD142
Serial Number: [REDACTED]
Firmware Revision: KC45
Transport: Serial, SATA Rev 3.0
Standards:
Used: unknown (minor revision code 0x0029)
Supported: 8 7 6 5
Likely used: 8
Configuration:
Logical max current
cylinders 16383 16383
heads 16 16
sectors/track 63 63
--
CHS current addressable sectors: 16514064
LBA user addressable sectors: 268435455
LBA48 user addressable sectors: 976773168
Logical Sector size: 512 bytes
Physical Sector size: 4096 bytes
Logical Sector-0 offset: 0 bytes
device size with M = 1024*1024: 476940 MBytes
device size with M = 1000*1000: 500107 MBytes (500 GB)
cache/buffer size = 16384 KBytes
Nominal Media Rotation Rate: 7200
Capabilities:
LBA, IORDY(can be disabled)
Queue depth: 32
Standby timer values: spec'd by Standard, no device specific minimum
R/W multiple sector transfer: Max = 16 Current = 16
Recommended acoustic management value: 208, current value: 208
DMA: mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 udma4 udma5 *udma6
Cycle time: min=120ns recommended=120ns
PIO: pio0 pio1 pio2 pio3 pio4
Cycle time: no flow control=120ns IORDY flow control=120ns
Commands/features:
Enabled Supported:
* SMART feature set
Security Mode feature set
* Power Management feature set
* Write cache
* Look-ahead
* Host Protected Area feature set
* WRITE_BUFFER command
* READ_BUFFER command
* DOWNLOAD_MICROCODE
SET_MAX security extension
* Automatic Acoustic Management feature set
* 48-bit Address feature set
* Device Configuration Overlay feature set
* Mandatory FLUSH_CACHE
* FLUSH_CACHE_EXT
* SMART error logging
* SMART self-test
* General Purpose Logging feature set
* WRITE_{DMA|MULTIPLE}_FUA_EXT
* 64-bit World wide name
Write-Read-Verify feature set
* WRITE_UNCORRECTABLE_EXT command
* {READ,WRITE}_DMA_EXT_GPL commands
* Segmented DOWNLOAD_MICROCODE
* Gen1 signaling speed (1.5Gb/s)
* Gen2 signaling speed (3.0Gb/s)
* Gen3 signaling speed (6.0Gb/s)
* Native Command Queueing (NCQ)
* Phy event counters
* unknown 76[15]
Device-initiated interface power management
* Software settings preservation
* SMART Command Transport (SCT) feature set
* SCT Long Sector Access (AC1)
* SCT LBA Segment Access (AC2)
* SCT Error Recovery Control (AC3)
* SCT Features Control (AC4)
* SCT Data Tables (AC5)
unknown 206[12] (vendor specific)
unknown 206[13] (vendor specific)
Security:
Master password revision code = 65534
supported
not enabled
not locked
frozen
not expired: security count
supported: enhanced erase
78min for SECURITY ERASE UNIT. 78min for ENHANCED SECURITY ERASE UNIT.
Logical Unit WWN Device Identifier: 5000c5005022a977
NAA : 5
IEEE OUI : 000c50
Unique ID : 05022a977
Checksum: correct
# smartctl -x /dev/sda
smartctl 5.41 2011-06-09 r3365 [x86_64-linux-3.13.0] (local build)
Copyright (C) 2002-11 by Bruce Allen, http://smartmontools.sourceforge.net
=== START OF INFORMATION SECTION ===
Device Model: ST500DM002-1BD142
Serial Number: [REDACTED]
LU WWN Device Id: 5 000c50 05022a977
Firmware Version: KC45
User Capacity: 500,107,862,016 bytes [500 GB]
Sector Sizes: 512 bytes logical, 4096 bytes physical
Device is: Not in smartctl database [for details use: -P showall]
ATA Version is: 8
ATA Standard is: ATA-8-ACS revision 4
Local Time is: Wed Jan 22 08:13:16 2014 ART
SMART support is: Available - device has SMART capability.
SMART support is: Enabled
=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED
General SMART Values:
Offline data collection status: (0x82) Offline data collection activity
was completed without error.
Auto Offline Data Collection: Enabled.
Self-test execution status: ( 0) The previous self-test routine completed
without error or no self-test has ever
been run.
Total time to complete Offline data collection: ( 600) seconds.
Offline data collection capabilities:
(0x7b) SMART execute Offline immediate.
Auto Offline data collection on/off support.
Suspend Offline collection upon new command.
Offline surface scan supported.
Self-test supported.
Conveyance Self-test supported.
Selective Self-test supported.
SMART capabilities: (0x0003) Saves SMART data before entering
power-saving mode.
Supports SMART auto save timer.
Error logging capability: (0x01) Error logging supported.
General Purpose Logging supported.
Short self-test routine recommended polling time: ( 1) minutes.
Extended self-test routine recommended polling time: ( 79) minutes.
Conveyance self-test routine recommended polling time: ( 2) minutes.
SCT capabilities: (0x303f) SCT Status supported.
SCT Error Recovery Control supported.
SCT Feature Control supported.
SCT Data Table supported.
SMART Attributes Data Structure revision number: 10
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME FLAGS VALUE WORST THRESH FAIL RAW_VALUE
1 Raw_Read_Error_Rate POSR-- 110 099 006 - 33944
3 Spin_Up_Time PO---- 100 100 000 - 0
4 Start_Stop_Count -O--CK 100 100 020 - 28
5 Reallocated_Sector_Ct PO--CK 100 100 036 - 0
7 Seek_Error_Rate POSR-- 073 060 030 - 22473249
9 Power_On_Hours -O--CK 094 094 000 - 5328
10 Spin_Retry_Count PO--C- 100 100 097 - 0
12 Power_Cycle_Count -O--CK 100 100 020 - 28
183 Runtime_Bad_Block -O--CK 100 100 000 - 0
184 End-to-End_Error -O--CK 100 100 099 - 0
187 Reported_Uncorrect -O--CK 100 100 000 - 0
188 Command_Timeout -O--CK 100 100 000 - 0
189 High_Fly_Writes -O-RCK 100 100 000 - 0
190 Airflow_Temperature_Cel -O---K 061 054 045 - 39 (Min/Max 26/41)
194 Temperature_Celsius -O---K 039 046 000 - 39 (0 16 0 0)
195 Hardware_ECC_Recovered -O-RC- 044 026 000 - 33944
197 Current_Pending_Sector -O--C- 100 100 000 - 0
198 Offline_Uncorrectable ----C- 100 100 000 - 0
199 UDMA_CRC_Error_Count -OSRCK 200 200 000 - 0
240 Head_Flying_Hours ------ 100 253 000 - 147261543683280
241 Total_LBAs_Written ------ 100 253 000 - 1601632265
242 Total_LBAs_Read ------ 100 253 000 - 3080541557
||||||_ K auto-keep
|||||__ C event count
||||___ R error rate
|||____ S speed/performance
||_____ O updated online
|______ P prefailure warning
SMART Extended Comprehensive Error Log Version: 1 (5 sectors)
No Errors Logged
SMART Extended Self-test Log Version: 1 (1 sectors)
No self-tests have been logged. [To run self-tests, use: smartctl -t]
SCT Status Version: 3
SCT Version (vendor specific): 522 (0x020a)
SCT Support Level: 1
Device State: Active (0)
Current Temperature: 39 Celsius
Power Cycle Min/Max Temperature: 26/41 Celsius
Lifetime Min/Max Temperature: 16/46 Celsius
Under/Over Temperature Limit Count: 0/0
SCT Temperature History Version: 2
Temperature Sampling Period: 1 minute
Temperature Logging Interval: 59 minutes
Min/Max recommended Temperature: 14/55 Celsius
Min/Max Temperature Limit: 10/60 Celsius
Temperature History Size (Index): 128 (77)
SCT Error Recovery Control:
Read: Disabled
Write: Disabled
SATA Phy Event Counters (GP Log 0x11)
ID Size Value Description
0x000a 2 19 Device-to-host register FISes sent due to a COMRESET
0x0001 2 0 Command failed due to ICRC error
0x0003 2 0 R_ERR response for device-to-host data FIS
0x0004 2 0 R_ERR response for host-to-device data FIS
0x0006 2 0 R_ERR response for device-to-host non-data FIS
0x0007 2 0 R_ERR response for host-to-device non-data FIS
# hdparm -tT /dev/sda
/dev/sda: Timing cached reads: 24824 MB in 2.00 seconds = 12423.12 MB/sec Timing buffered disk reads: 402 MB in 3.01 seconds = 133.65 MB/sec
$ dd if=/dev/zero of=archivo.img count=1K bs=1M conv=fdatasync
1024+0 registros leídos 1024+0 registros escritos 1073741824 bytes (1,1 GB) copiados, 9,96082 s, 108 MB/s
palimpsest - Prueba de rendimiento de solo lectura (clic para agrandar)
$ bonnie++
Version 1.96 ------Sequential Output------ --Sequential Input- --Random-
Concurrency 1 -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
soda 15808M 1105 96 112638 7 45472 4 4853 74 151543 6 271.5 4
Latency 10287us 436ms 1531ms 85189us 151ms 1255ms
Version 1.96 ------Sequential Create------ --------Random Create--------
soda -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
16 26311 22 +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++
Latency 57369us 312us 316us 292us 14us 77us
Todas las pruebas fueron realizadas sobre una partición ext4. Mañana van los resultados del otro disco.
viernes, diciembre 20, 2013
Adiós, Winamp
(y por los vuelos mentales con plugins de visualizaciones)
jueves, diciembre 19, 2013
Kernels nuevos en Debian Stable
Todas estas son directamente instalables sobre Debian GNU/Linux Wheezy 7.0 de 64 bits sin quilombo de dependencias. Cada directorio contiene los paquetes con la imagen del kernel, los encabezados, el firmware y la configuración utilizada en la compilación.
- http://maurom.com/kernel - Kernels disponibles
Actualización 2015: en función a la reciente publicación de la nueva versión estable Debian GNU/Linux 8.0 Jessie, y tras haber migrado los equipos que utilizo habitualmente, mantendré a los paquetes aquí publicados brevemente como históricos y luego -eventualmente- desaparecerán del repositorio. Para los que estén interesados en mantenerse al día con las últimas versiones, encontrarán nuevos paquetes del núcleo en el post dedicado a Kernels nuevos en Debian Jessie.









