Categoría: Uncategorized
-
GNU emacs
Este artículo está obsoleto, las capturas de pantalla han desaparecido.
Recomendamos visitar el Blog sobre emacs en castellano: http://www.blackhats.es/wordpress/
Buenas, este es mi primer post en Taringa y como vi algunos GNUeros quisiera hablar de un programa GNU que es para mi uno de los más brillantes paquetes que dio el software libre. El post es bastante nerd y más que nada está destinado a programadores que les gustan esos programas complejos y casi infinitos.
Bueno, empecé a usar Emacs hace unos 6 o 7 años. Por ese entonces estaba metiendóme en el mundo de GNU/Linux, y casi todas las distribuciones traían tal programa. Poco a poco lo fui usando e investigando, atraído por lo mítico de la historia (el primer programa libre que diseñó Richard Stallman) y porque estaba comenzando a programar.
Hay un montón de recursos para aprender GNU/Emacs, en mi opinión los mejores son su manual oficial, su ayuda interna, y el Emacs Wiki. Por eso no me quiero poner denso con cosas que van a encontrar en otros lados, prefiero hablarles de las características que tiene y que más me gustaron de este editor y que en general no se encuentran en otros editores (o al menos no todas juntas).
Aplicaciones
Emacs tiene miles de aplicaciones desarrolladas por la comunidad de usuarios. Uno podría pensar ingenuamente que hablamos de aplicaciones sencillas tratándose de un editor, y es verdad que esa era la idea original de su lenguaje de extensión, escribir programas que ayuden a la tarea de edición. Pero el lenguaje de extensión y el zarpado diseño de Emacs eran tan convenientes que la comunidad empezó a escribir programas de todo tipo en el lenguaje Emacs Lisp.
El resultado es increíble, en Emacs tenemos varios clientes de correo, calculadoras programables, sistemas de algebra, clientes de grupos de noticias, navegadores web, clientes de chat (IRC, jabber, MSN), juegos, lectores RSS, manejadores de archivos, visualizadores de imagenes y de PDF,editores de video, de sonido e infinidad de wrappers o modos para montones de aplicaciones comunes de consola (debuggers, compiladores, etc).
Programacion
Acá es quizá en dónde Emacs más se luce. Emacs tiene todas las características tradicionales de un buen editor para programación: resaltado de sintáxis, identación automática, búsqueda y reemplazo de expresiones regulares, macros, etc. Pero además cuenta con un arsenal de modos (aplicaciones) para cada lenguaje particular. Sin duda, los que más herramientas tienen son el lenguaje C y Lisp.
Para C podemos bucear el programa mediante tags, debuguear interactivamente (como en Eclipse o Visual Studio), obtener información sobre prototipos de funciones, conocer los errores de sintáxis en tiempo real con Flymake, autocompletado, interactuar con versionadores como CVS o SVN, elegir entre montones de estilos de indentación (KERNEL hacker, GNU hacker, K&R, etc.), aplicar parches, comparar archivos con wrappers para diff, y bocha de cosa más.
Pero además Emacs trae o pueden conseguir en su wiki modos para casi cualquier lenguaje con el que se crucen: PHP, Haskell, Smalltalk, C++, Java, Cobol, Python, JavaScript, SQL, o lenguajes de marcado como HTML, Latex, TeX y un larguísimo etecetera.
En los lenguajes interprétados casi siempre los modos nos permiten evaluar las expresiones desde el lugar de edición muy parecido a como trabajan la mayoría de IDEs de Smalltalk.
Además Emacs cuenta con un interprete interno de Lisp que es el corazón de tanta extensibilidad, un 90% o más del editor se programa y se extiende con este lenguaje que es interactivo.
Edición
Acá Emacs se zarpa, siempre que tengo que cambiar de editor en el laburo lo que más extraño es la cantidad de comandos de edición de Emacs que tengo grabadisimos en mi columna vertebral.
Cuando pasaste unos meses editando con Emacs, lo primero que te das cuenta es la agilidad y velocidad con la que uno se mueve por el archivo. Todos los comandos de movimiento y navegación se distribuyen en el centro del teclado, la filosofía es que ir hasta las flechitas, page up o page down es una cagada de perdida de tiempo. Y tenes comandos para cualquier tipo de movimiento que se te ocurra, avanzar una palabra, retroceder, un párrafo, una página, una línea, una función, una expresión, fin del documento, inicio, sentencias, y sin duda la búsqueda incremental (tipo Firefox) también se lleva las palmas como comando de navegación por el documento. Cuando lo dominas pareces una bolita de pinball moviendote a todo lo que da por los textos.
La edición rectangular y las macros son otras dos funciones increíbles mientras editamos. La edición rectangular te permite cortar textos tabulados en columnas (como lo hace UltraEdit o Excel). Al principio uno no se da mucha idea de la cantidad de utilidades que tienen, pero si trabajan con lenguajes de marcado onda HTML bocha de veces se van a encontrar necesitando esta característica. Y las macros lo mismo, uno comienza a grabar con F3, trabaja sobre una línea (haciendo búsquedas de expresiones regulares, editando o lo que se te ocurra), termina de grabar con F4, y listo podes aplicarlo a todas las líneas del documento. Con solo saber eso lo usas en bocha de situaciones, pero también podes usar númeradores, registros y boludeces que hacen al sistema de macros impresionante para evitarte cualquier tarea repetitiva. A veces en el laburo quedan todos como boludos mirando como macreo archivos de datos de clientes en un toque con Emacs y antes lo hacían a mano o tardaban todo un día haciendo algún programa Perl.
También tenemos un editor de dibujos ASCCI al mejor estilo paint con todas sus funciones (círculos, cuadrados, líneas, lapiz libre, etc). Puede parecer un programa caprichoso y al pedo, pero a la hora de programar uno puede embeber en los comentarios de los programas, el dibujo de estructuras de datos como colas, listas, de diagramas de flujo simples que hacen a secciones del programa muchísimo más simples de comprender.
Uno puede pensar que son bocha de cosas para aprender, sobre todo si quiere programar sólo en algún lenguaje particular, y es verdad. Lo que pasa que lo que aprendas para un lenguaje particular te va a servir para miles de lenguajes más y cada vez que cambies de lenguaje (aunque sea para editar un bash script) te vas a seguir sintiendo infinitamente más productivo y cómodo en tu editor que si por ejemplo tuvieses que cambiar otra vez a un IDE de un lenguaje específico X.
La ayuda
El sistema de documentación y de ayuda de la distribución GNU de Emacs es una de los más rigurosos que se encuentran. Todo está documentado, y es accesible de montones de maneras. Uno puede navegar el manual oficial (que está en formato Info) desde adentro de emacs. Consultarlo mediante querys, preguntar por funciones, preguntar que hace un atajo de teclado particular, o cual es el atajo para tal comando. Ni bien entras a Emacs también se te ofrece un excelente tutorial que te explica lo esencial para moverse por un documento, buscar archivos, y todas las operaciones básicas de edición.
Comprender el sistema de ayuda y aprovecharlo a fondo es uno de las primeras cosas que deberían hacer quienes se quieran meter a usar Emacs. Es quizá la primera complejidad con la que se van a cruzar, pero después de dominar todas las opciones de la ayuda te haces muy auto suficiente, incluso rara vez vas a recurrir a internet para preguntar algo, casi todo lo vas a encontrar dentro del Emacs.
Como un demonio
En la última versión de Emacs del CVS, se lo puede arrancar como un demonio (servicio). Eso significa que podemos tener una única versión corriendo sin estar attacheada a ningún cliente y abrir al toque diferentes clientes que comparten toda la sesión que tengamos abierta, a mi me pasa que a veces corro la misma sesión de emacs durante 1 mes y accedo desde el laburo o desde la notebook.
Fin
Bueno presenté un subconjunto pequeño de las miles de cosas que se pueden hacer con Emacs y sobre todo las que más me gustan. Más adelante voy a tratar de ir agrandando un poco el post, para comentar otras cosas interesantes. Más que nada hablé de características técnicas, pero si investigan un poco van a ver la cantidad de mística e historia que tiene este editor (por ejemplo que una de las primeros editores de tipo emacs fue programado por el creador de Java, o uno de los forks más importantes del editor fue escrito por el que después crearía el navegador de Netscape, o que es el editor favorito del autor del Arte de Programar Donald Knuth).
En fin espero por lo menos enganchar a alguno y que el post anime a usar este excelente programa.
Saludos!
Fuente: http://www.taringa.net/posts/linux/2138611/GNU_Emacs-especial-para-nerds.html
-
Llamada a la participación en el hackmeeting 2009
Temas
Estos son algunos de los temas que se han tratado en otros
hackmeeting o sobre los que nos gustaría compartir en el
próximo. Pero no son los únicos. Buscamos nuevos puntos de
vista y descubrimientos que os interese mostrar, debates que
queráis coordinar, ideas y técnicas que queráis compartir:Inciando…
- Iniciación a GNU/Linux (instalación, administración, redes, etc.)
- Programas libres: GNU/Linux, Debian, etc.
- Ciberpunk
- Acceso universal a la red, al conocimiento y a la técnica
- Filosofia hacker
HumanWare
- Reality hacking, DIY, autogestión
- Copyleft, procomún, acceso libre y abierto, FLOK. etc.
- Copyfights: Defensas frente al copyright, restricción de acceso, etc.
- Hacktivistas.net, situación actual y proyecto.
- Gobiernos en la red: Paquete «Telecom» de la UE, ley ADOPI, etc.
- Corporaciones en la red: copyright, patentes, espionaje, lobbies, monopolios …
- Hacktivismo y desobediencia civil electrónica, presente, pasado, futuro
- Hacktivistas.net, situación actual y proyecto.
- Educacion y nuevas tecnologías (plan educación 2.0, etc.)
- Redes sociales, marketing viral: La red social para movimientos sociales N-1,
- Bases de datos distribuidas e integración con herramientas de movimientos sociales: webs, listas, wikis, etc
- Hacklabs
- Fabricación digital, fabbing, software, conocimiento libre, conexiones con cultura hacker
- Redes P2P (defensa, clientes, protocolos, organización, servidores, …)
- Caso «the pirate bay»
- Hacking jurídico
- Geo-wiki-cartografía: hibridando el espacio y el ciberespacio
- Espacio público y flujos electrónicos; espacios creative commons; arquitectura flos; wikiplaza
- Mesas redondas sobre libros ciberpunk o cualquiera de los otros temas de esta lista
- ¿es posible crear una internet totalmente autogestionada? ¿problemas? ¿alternativas?
- Virtualización o cómo se vive en las empresas el «software libre».
- La HackNET, ¿existe? ¿qué protocolo seria el más adecuado?
Comunicación
- Artivismo, guerrilla de la comunicación
- Redes inalámbricas (wireless) autogestionadas
- Comunicacion sin cable a largas distancias.
- Ampliar la red telefónica InterHacklabs ???
- Guifi.net
- Comunicacion urbana. Conexiones a internet seguras y gratuitas en una ciudad cualquiera del mundo.
- kit para hacer stream desde una mani.
- Telemática y (contra)información alternativa
- Guerrilla Hertziana: Un taller de construcción de un emisor FM.
- Intervención en onda analógica. Reaprovechamiento de ese espacio frecuencial para nuestros beneficio.
- Packet Radio.
- Mediactivismo: Edición de vídeo y audio con herramientas y formatos libres
- Taller de video. Report*hack*es.
- Servidores autónomos, ISPs alternativos, data centers alternativos
- Privacidad, anonimato, pseudonimato en la red
- Encriptacion. Arquitecturas de seguridad en sistemas de red. Anonimato online: Tor, proyecto Anonymous.
- Asterisk, telefonía publica, comunicaciones por la patilla, Piratel.
- Experimentación con TDT. Demostración en directo de ello?.
NerdCore
- Criptografía, esteganografía
- Phreak, Hack, Crack
- Virus, inteligencia artificial, vida artificial, cibernética
- Tarjetas inteligentes, firma digital, e-DNI
- Seguridad
- Tecnoliberación (RFID, DRM…)
- Taller Latex avanzado: taller práctico de maquetación avanzada con Latex.
Hardware y robótica
- Reciclaje de hardware
- Trucos (sacar energía del teléfono, montar una mesa de PC con materiales reciclados, etc)
- Talleres de antenas, radios, bicihacking, etc.
- Ensamblaje de motores
- Arduino avanzado.+
- pinguino project basado en el 18F2550, con IDE en Python.
- Fabrica tu propia caja fuerte con cerradura por contraseña o por proximidad de dispositivos bluetooth. ¿Arduino?
- Proyectos de robots grafiteros con gnu/linux. camion, con cuerdas desde pared)en otras plataformas.
- Musica colectiva mediante wifi o bluetooth.
- Drum’n Bass + Visual scene
- Energias: energia solar para las máquinas, aerogeneradores, motor de aceite, motor de hidrógeno
- reciclaje de hardware.
- Dispositivos de altura sin cables: Fabricar globo.
Además de las modalidades presenciales, el HM también admite
participación virtual, serán bienvenidos texto, vídeo, audio
que será colgado en la red (así como cualquier otra cosa que
se os ocurra en formato digital).Cómo proponer un nodo
Todas las propuestas de nodos se comentan en la lista de
correo del HM (hackmeeting @ sindominio.net), recomendamos,
por tanto, que te suscribas a la lista en
http://listas.sindominio.net/mailman/listinfo/hackmeeting
para empezar a participar en el nodo que propongas y ver el
proceso que sigue tu propuesta.En cualquier caso para proponer un nodo sigue las instrucciones del wiki:
O envía un mensaje con el encabezamiento «[nodo] nombre_propuesta» a estas dos
direcciones:- hackmeeting @ sindominio.net
- charlas @ sindominio.net (ésta última encargada de coordinar los horarios de las actividades-nodo del HM).
En el cuerpo del mensaje proponemos que rellenes el siguiente
formulario (o lo modifiques a tu gusto o exigencias de tu
propuesta):- Información para el público/participantes
- Modalidad
- Charla
- Taller
- Mesa redonda
- Póster
- Exposición
- Reunión coordinación
- Performance
- Otros
- Nombre del/a dinamizador/a, autor/a, coordinador/a
- Título(s)
- Resumen
- Palabras clave
- Conocimientos recomendados para los participantes
- Estructura/contenido
- Metodología: exposicion, discusión, cacharreo, etc.
- Duracion
- Lecturas recomendadas. Para la gente que quiera entrar en el tema antes de entrar en el nodo.
- Navega-acción copirata: cómo podría integrarse el nodo en la manifestación?
- Información para coordinar:
- Material necesario (incluyendo tipo de espacio por si hace falta un espacio abierto sin sillas o lo que sea).
- Preferencias de horarios
- Seguridad de asistencia (del 1 al 10)
- Documentos o archivos del nodo (si la hay, para colgar en la web: transparencias, textos, programas, etc.)
Otras formas de participación
Otras formas de participación aparte de los nodos de
actividades (como aportar material, participar en las
asambleas, coordinar actividades, hacer streaming,
traducciones, etc.) son bienvenidas y necesarias. Para
más información y coordinación la asamblea del HM se reúne
virtual y permanentemente en la lista de correo hackmeeting @ sindominio.net. Podéis suscribiros en: http://listas.sindominio.net/mailman/listinfo/hackmeetingMás información
El primer hackmeeting se hizo en Florencia el 1998 y desde
entonces se han ido repitiendo anualmente en Italia (la web
http://hackmeeting.org recoge el último HM celebrado en
Italia y enlaces a todos los anteriores). El 2000 se celebró
el primer hackmeeting hispanoparlante en Barcelona y hemos ido repitiendo el encuentro todos los años.Para más información nos podeis escribir a la lista de correo
hackmeeting @ sindominio.net o visitar directamente la página
web del hackmeeting: -
Hackmeeting 2009
Temas
Estos son algunos de los temas que se han tratado en otros
hackmeeting o sobre los que nos gustaría compartir en el
próximo. Pero no son los únicos. Buscamos nuevos puntos de
vista y descubrimientos que os interese mostrar, debates que
queráis coordinar, ideas y técnicas que queráis compartir:Inciando…
- Iniciación a GNU/Linux (instalación, administración, redes, etc.)
- Programas libres: GNU/Linux, Debian, etc.
- Ciberpunk
- Acceso universal a la red, al conocimiento y a la técnica
- Filosofia hacker
HumanWare
- Reality hacking, DIY, autogestión
- Copyleft, procomún, acceso libre y abierto, FLOK. etc.
- Copyfights: Defensas frente al copyright, restricción de acceso, etc.
- Hacktivistas.net, situación actual y proyecto.
- Gobiernos en la red: Paquete «Telecom» de la UE, ley ADOPI, etc.
- Corporaciones en la red: copyright, patentes, espionaje, lobbies, monopolios …
- Hacktivismo y desobediencia civil electrónica, presente, pasado, futuro
- Hacktivistas.net, situación actual y proyecto.
- Educacion y nuevas tecnologías (plan educación 2.0, etc.)
- Redes sociales, marketing viral: La red social para movimientos sociales N-1,
- Bases de datos distribuidas e integración con herramientas de movimientos sociales: webs, listas, wikis, etc
- Hacklabs
- Fabricación digital, fabbing, software, conocimiento libre, conexiones con cultura hacker
- Redes P2P (defensa, clientes, protocolos, organización, servidores, …)
- Caso «the pirate bay»
- Hacking jurídico
- Geo-wiki-cartografía: hibridando el espacio y el ciberespacio
- Espacio público y flujos electrónicos; espacios creative commons; arquitectura flos; wikiplaza
- Mesas redondas sobre libros ciberpunk o cualquiera de los otros temas de esta lista
- ¿es posible crear una internet totalmente autogestionada? ¿problemas? ¿alternativas?
- Virtualización o cómo se vive en las empresas el «software libre».
- La HackNET, ¿existe? ¿qué protocolo seria el más adecuado?
Comunicación
- Artivismo, guerrilla de la comunicación
- Redes inalámbricas (wireless) autogestionadas
- Comunicacion sin cable a largas distancias.
- Ampliar la red telefónica InterHacklabs ???
- Guifi.net
- Comunicacion urbana. Conexiones a internet seguras y gratuitas en una ciudad cualquiera del mundo.
- kit para hacer stream desde una mani.
- Telemática y (contra)información alternativa
- Guerrilla Hertziana: Un taller de construcción de un emisor FM.
- Intervención en onda analógica. Reaprovechamiento de ese espacio frecuencial para nuestros beneficio.
- Packet Radio.
- Mediactivismo: Edición de vídeo y audio con herramientas y formatos libres
- Taller de video. Report*hack*es.
- Servidores autónomos, ISPs alternativos, data centers alternativos
- Privacidad, anonimato, pseudonimato en la red
- Encriptacion. Arquitecturas de seguridad en sistemas de red. Anonimato online: Tor, proyecto Anonymous.
- Asterisk, telefonía publica, comunicaciones por la patilla, Piratel.
- Experimentación con TDT. Demostración en directo de ello?.
NerdCore
- Criptografía, esteganografía
- Phreak, Hack, Crack
- Virus, inteligencia artificial, vida artificial, cibernética
- Tarjetas inteligentes, firma digital, e-DNI
- Seguridad
- Tecnoliberación (RFID, DRM…)
- Taller Latex avanzado: taller práctico de maquetación avanzada con Latex.
Hardware y robótica
- Reciclaje de hardware
- Trucos (sacar energía del teléfono, montar una mesa de PC con materiales reciclados, etc)
- Talleres de antenas, radios, bicihacking, etc.
- Ensamblaje de motores
- Arduino avanzado.+
- pinguino project basado en el 18F2550, con IDE en Python.
- Fabrica tu propia caja fuerte con cerradura por contraseña o por proximidad de dispositivos bluetooth. ¿Arduino?
- Proyectos de robots grafiteros con gnu/linux. camion, con cuerdas desde pared)en otras plataformas.
- Musica colectiva mediante wifi o bluetooth.
- Drum’n Bass + Visual scene
- Energias: energia solar para las máquinas, aerogeneradores, motor de aceite, motor de hidrógeno
- reciclaje de hardware.
- Dispositivos de altura sin cables: Fabricar globo.
Además de las modalidades presenciales, el HM también admite
participación virtual, serán bienvenidos texto, vídeo, audio
que será colgado en la red (así como cualquier otra cosa que
se os ocurra en formato digital).Cómo proponer un nodo
Todas las propuestas de nodos se comentan en la lista de
correo del HM (hackmeeting @ sindominio.net), recomendamos,
por tanto, que te suscribas a la lista en
http://listas.sindominio.net/mailman/listinfo/hackmeeting
para empezar a participar en el nodo que propongas y ver el
proceso que sigue tu propuesta.En cualquier caso para proponer un nodo sigue las instrucciones del wiki:
O envía un mensaje con el encabezamiento «[nodo] nombre_propuesta» a estas dos
direcciones:- hackmeeting @ sindominio.net
- charlas @ sindominio.net (ésta última encargada de coordinar los horarios de las actividades-nodo del HM).
En el cuerpo del mensaje proponemos que rellenes el siguiente
formulario (o lo modifiques a tu gusto o exigencias de tu
propuesta):- Información para el público/participantes
- Modalidad
- Charla
- Taller
- Mesa redonda
- Póster
- Exposición
- Reunión coordinación
- Performance
- Otros
- Nombre del/a dinamizador/a, autor/a, coordinador/a
- Título(s)
- Resumen
- Palabras clave
- Conocimientos recomendados para los participantes
- Estructura/contenido
- Metodología: exposicion, discusión, cacharreo, etc.
- Duracion
- Lecturas recomendadas. Para la gente que quiera entrar en el tema antes de entrar en el nodo.
- Navega-acción copirata: cómo podría integrarse el nodo en la manifestación?
- Información para coordinar:
- Material necesario (incluyendo tipo de espacio por si hace falta un espacio abierto sin sillas o lo que sea).
- Preferencias de horarios
- Seguridad de asistencia (del 1 al 10)
- Documentos o archivos del nodo (si la hay, para colgar en la web: transparencias, textos, programas, etc.)
Otras formas de participación
Otras formas de participación aparte de los nodos de
actividades (como aportar material, participar en las
asambleas, coordinar actividades, hacer streaming,
traducciones, etc.) son bienvenidas y necesarias. Para
más información y coordinación la asamblea del HM se reúne
virtual y permanentemente en la lista de correo hackmeeting @ sindominio.net. Podéis suscribiros en: http://listas.sindominio.net/mailman/listinfo/hackmeetingMás información
El primer hackmeeting se hizo en Florencia el 1998 y desde
entonces se han ido repitiendo anualmente en Italia (la web
http://hackmeeting.org recoge el último HM celebrado en
Italia y enlaces a todos los anteriores). El 2000 se celebró
el primer hackmeeting hispanoparlante en Barcelona y hemos ido repitiendo el encuentro todos los años.Para más información nos podeis escribir a la lista de correo
hackmeeting @ sindominio.net o visitar directamente la página
web del hackmeeting: -
Aventuras con DragonFlyBSD y GRUB2
INTRODUCCIÓN
DragonFlyBSD es el novedoso derivado de FreeBSD con el sistema de ficheros Hammer, el cual incluye como caracteristicas principales: recuperación de fallos, chequeo de la integridad de los datos, control del historial de los ficheros, así como la posibilidad de hacer un mirror hacia otros volúmenes.
GRUB2, aunque aún en desarrollo, ya permite mucho más que su predecesor Grub 0.97.
En nuestro caso, Grub2 nos permitió arrancar un sistema operativo, DragonFlyBSD, instalado en un disco no reconocido por la BIOS, y que por lo tanto, no podía ser arrancado con los gestores de arranque tradicionales.
CONSIDERACIONES INICIALES
El ordenador utilizado es un viejo ordenador sin controladora de discos SATA, y ninguna opción en la BIOS para reconocer esos discos duros. Recientemente se le añadido una controladora PCI para discos SATA, pero eso no cambia el hecho de que no es reconocida por la BIOS.
Entonces tenemos:
- 1 disco IDE con Debian GNU/Linux instalado.
- 1 disco SATA no reconocido por la BIOS.
INSTALACIÓN DE DragonFlyBSD
Bajamos el LiveCD de DragonFly de http://www.dragonflybsd.org/download/ y lo grabamos en un CD.
Arrancó el ordenador con el LiveCD, el cual al final del arranque, nos permite entrar como root para probar el sistema operativo, o como installer, Al entrar como installer se inicia el proceso de instalación, el cual SI reconoce el disco duro SATA, e instalo DragonFly en él, El proceso es muy sencillo y lineal. Elijo el sistema de ficheros Hammer, en lugar del tradicional UFS.
Ya tenemos DragonFly instalado, pero aún no puedo arrancarlo, ya que la BIOS no lo reconoce…
Así que antes de reiniciar entramos como root en el LiveCD y copiamos el kernel de DragonFly en la partición de Debian donde estará grub2.
mkdir /tmp/ad0s1 mount_ext2fs /dev/ad0s1 /tmp/ad0s1 mkdir /tmp/ad0s1/boot/dragonfly cp /boot/kernel /tmp/ad0s1/boot/dragonfly/ umount /tmp/ad0s1
Cambiar ad0s1 por la particion de tu disco duro que contenga grub. Puedes ayudarte de dmesg, mount y fdisk para saber cual es.
Es hora de reiniciar y arrancar Debian desde el primer disco IDE.
INSTALACIÓN DE GRUB
Desde Debian, instalamos grub2. Puedes usar tu gestor de paquetes favoritos (synaptic, aptitude, etc…) En mi caso.
# apt-get install grub2 grub-common grub-pc grub-splashimages
Estas son las versiones de los paquetes que se instalarón:
ii grub-common 1.96+20090603-1 GRand Unified Bootloader, version 2 (common files) ii grub-pc 1.96+20090603-1 GRand Unified Bootloader, version 2 (PC/BIOS version) ii grub-splashimages 1.2.3 a collection of great GRUB splashimages ii grub2 1.96+20090603-1 GRand Unified Bootloader, version 2 (dummy package)
En Debian, nos sale el siguiente mensaje:
Los scripts de actualización han detectado en /boot/grub una configuración heredada de una versión anterior de GRUB. Para reemplazar la versión anterior de GRUB en su sistema, se recomienda que se ajuste /boot/grub/menu.lst para que cargue en cadena a partir de su configuración preexistente de GRUB. Este paso debería hacerse ahora de forma automática. Antes de instalar GRUB 2 directamente en el MBR («Master Boot Record») se recomienda que acepte cargarlo en cadena desde el menu.lst y que verifique que puede utilizar la nueva configuración de GRUB 2. En cualquier caso, cuando quiera que GRUB 2 se inicie directamente desde el MBR, puede hacerlo usando (como root) la siguiente orden: upgrade-from-grub-legacy ¿Desea realizar la carga en cadena desde menu.lst?
Recomendamos aceptar la sugerencia de Debian, lo cual viene bien para probar hasta asegurarnos de que grub2 ha quedado perfectamente configurado, y que nos quiere decir es que grub2 se cargará encadenado desde grub-legacy.
Si cometemos algun error en la configuración de grub2 siempre podremos seguir arrancando desde grub, y una vez que verifiquemos que grub2 está perfecto, podremos instalar grub2 en el MBR con el comando: upgrade-from-grub-legacy.
De momento, continuemos.
INSTALANDO GRUB2 CON EL MÓDULO ATA
Puedes saltarte la parte de modificar grub-install si tu ordenador reconoce sin problemas a los discos duros SATA.
GRUB2 tiene un diseño modular, y al instalarlo podemos elegir que modulos queremos que se instalen.
Copiamos todos los módulos en /boot/grub
cp /usr/lib/grub/i386-pc/*.mod /boot/grub
Aplicamos este parche a /usr/sbin/grub-install. Puedes usar la herramienta patch, o modificarlo manualmente.
Elminando las lineas que comienzan por «-» y añadiendo las que comienzan por «+».Con este parche le indicamos a grub2 que use siempre el módulo ata para
detectar todos los discos duros (SATA incluidos) saltandose lo que le
haya indicado la BIOS.--- grub-install.old 2009-06-04 09:02:32.000000000 +0200 +++ grub-install 2009-06-11 15:51:43.000000000 +0200 @@ -254,7 +254,7 @@ # The order in this list is critical. Be careful when modifying it. if [ "${target_cpu}-${platform}" = "i386-pc" ] ; then - modules="$modules biosdisk" + modules="$modules ata" else modules="$modules ata" fi @@ -267,7 +267,7 @@ else install_drive="`$grub_probe --target=drive --device ${install_device}`" fi - grub_drive="`$grub_probe --target=drive --device ${grub_device}`" + grub_drive="`$grub_probe --target=drive --device ${grub_device}|sed -e 's/h d/ata/'`" # Strip partition number install_drive="`echo ${install_drive} | sed -e s/,[0-9]*[a-z]*//g`" @@ -291,7 +291,9 @@ modules="$modules fs_uuid" fi else - prefix_drive=`$grub_probe --target=drive --device ${grub_device}` + uuid="`$grub_probe --target=fs_uuid --device ${grub_device}`" + prefix_drive="(UUID=${uuid})" + modules="$modules fs_uuid" fi relative_grubdir=`make_system_path_relative_to_its_root ${grubdir}` || exit 1En futuras versiones de Grub2 se incluirá el parámetro «–disk-module», con lo que se evitará tener que parchear grub-install.
Modificamos /etc/grub.d/40_custom y añadimos la entrada para poder arrancar DragonFlyBSD.
menuentry "DragonFlyBSD" { set root=(ata3) # chainloader +1 #No se usa. No hacemos chainload porque la BIOS no reconoce ese disco freebsd (ata0,1)/boot/dragonfly/kernel set FreeBSD.vfs.root.mountfrom=hammer:ad6s1a }Notas:
(ata0,1)
hace referencia a la primera partición del primer disco duro. Donde esta instalado grub2, y donde anteriormente copiamos el kernel de DragonFly.
(Este valor lo obtuvimos porque en nuestros experimentos durante arranques anteriores vimos que grub2 permite hacer «ls» en su prompt para listar los discos duros, o incluso el contenido de los discos duros. Una maravilla.
ataX,X es la nomenclatura de los discos cuando se usa el modulo ata de grub2
)
hammer:ad6s1a
hace referencia a montar el disco ad6s1a (según la nomenclatura de DragonFlyBSD) con el sistema de ficheros hammer.
(Este valor lo obtuvimos tras instalar DragonFlyBSD con el LiveCD, desde el LiveCD supimos como reconoce DragonFlyBSD al segundo disco SATA)
Es hora de instalar GRUB2, en la primera partición del disco duro IDE, con los módulos que a nosotros nos dieron resultado. Lo instalamos en la primera partición del disco duro IDE (Debian) /dev/hda1 en lugar del MBR, ya que como hemos dicho conservaremos grub-legacy hasta confirmar que grub2 puede arrancar todos los sistemas operativos.
Esto debe ejecutarse en una sola línea.
grub-install --modules="date pc ata boot ls gpt raid ext2 ufs fat echo cpio gzio gfxterm video aout pcpart extcmd help reboot blocklist fs_uuid sh parttool linux fshelp dm_nv datehook jpeg test bsd cmp memdisk acpi elf affs xfs cpuid crc play mdraid sleep search chain lua memrw ata_pthru configfile linux16 raid5rec hello vga_text vbeinfo gptsync bufio hdparm bitmap terminfo hfs lsmmap png tar lspci tga scsi lvm raid iso9660 raid6rec udf vbe handler raid6rec halt read multiboot xnu normal loopback sfs jfs vbetest cat afs hexdump loadenv minicmd drivemap font vga" /dev/hda1
Esto generará el archivo /boot/grub/grub.cfg con todas las líneas que permiten arrancar nuestros sistemas operativos. Vemos que aparece tambien la línea para arrancar DragonFlyBSD, ya que grub-install se encargá de añadir
/etc/grub.d/40_custom a grub.cfg.
Ya podemos reiniciar el ordenador. Nos saldrá la ventana tipica de Grub-Legacy, con una opción de hacer Chainload hacia Grub2, junto con las demás lineas para arrancar nuestros sistemas operativos.
Si elegimos arrancar Grub2, veremos las opciones de Grub2.cfg y podremos arrancar DragonFlyBSD.
A disfrutar.
-
Instalar programas de plan9 en linux
Plan9 From User Space fue desarrollado por Russ Cox y podemos descargarnos el ultimo snapshot de plan9port
o bajarnos las fuentes con el sistema de control de versiones «mercurial» (recomendado)
Instalamos los paquetes de debian necesarios.
# echo Instalamos las librerias necesarias en Debian
# apt-get install mercurial libxt-dev libx11-dev x11proto-xext-dev libxext-dev
# cd /usr/local
# hg clone http://code.swtch.com/plan9port plan9
# cd plan9
# ./INSTALLAñadir las siguientes variables de entorno a vuestro profile.
PLAN9=/usr/local/plan9
export PLAN9
PATH=$PATH:$PLAN9/bin
export PATHPara ejecutar los comandos de plan9, podemos invocarlos de la manera habitual bajo la línea de comandos.
En el caso de que haya programas de plan9 que tengan el mismo nombre que su equivalente en GNU/linux, hay una manera de diferenciarlos, y es ejecutandolos añadiendo «9» antes ejecutarlos.
Ejemplo.
9 ls #Ejecutaría la versión de ls de plan9
9 acme #Ejecutaría uno de los editores de plan9
9 sam #Otro editor de plan9
9term #Como no existe alternativa en GNU/linux, podemos ejecutar indistantemente «9term» o «9 9term»
9 man 1 intro # Ver la pagina de manual intro de la sección 1 de las paginas de manual de plan9
Tambien podriamos poner «rio» como nuestro window manager por defecto.
Para cualquier duda podeis consultar http://swtch.com/plan9port/man/man1/install.html
Tambien podeis preguntar en la lista de correo 9fans o en el canal #plan9 del servidor de irc: irc.freenode.net
-
Victoria parcial en el parlamente europeo: la lucha sigue
Más información:
¿Que significa esto?
Significa un NO rotundo del Parlamento Europeo a cualquier
posibilildad de corte de servicio sin que lo decida un juez. Con eso se
acaban las pretensiones de crear una entidad por parte de las gestoras
de derechos de autor con la que cortar el acceso a los internautas.
Significa que los ciudadanos han hecho prevalecer sus derechos por
encima de las presiones de los lobbies gracias a la campaña realizada
por Blackouteurope y Hacktivistas.netSin embargo, se abre la veda para que los operadores quieran acabar
con la neutralidad de la red para favorecer sus propios productos.
Aprobar esta directiva tendrá consecuencias incalculables en cuanto a
retrocesos de libertad y libre acceso a la cultura para la ciudadanía
europea. Será un retroceso a la innovación, ya que los productos y
contenidos pertenecientes al operador tendrán prioridad sobre los de la
competencia, aunque estos sean técnicamente superiores. La red ya no
será de los internautas sino exclusivamente de ellos. A partir de
ahora, y más cuando se intenten desarrollar leyes que lo amparen,
tendremos que hacer una fuerte presión social para evitar que las
presiones de los lobbies se impongan sobre nuestros derechos. En
definitiva, el resultado de la votación del parlamento significa que
tenemos que seguir luchando por nuestros derechos y que queda un largo
camino que recorrer.¿Que haremos ahora?
El siguiente paso es exigir a los candidatos a europarlamentarios
españoles y Europeos que nos demuestren que política van a seguir
respecto a la neutralidad en la red y la libre distribución de cultura
en caso de ser elegidos por nuestros votos.Tendremos también que avisar a los operadores, de que cualquier
cambio en su servicio que rompa con la neutralidad de la red,
significará nuestra baja automática de su servicio (estamos trabajando
en una herramienta para darse de baja automáticamente), así como en
caso de que se produzca cualquier pacto con las entidades de gestión de
derechos de autor que suponga una amenaza a nuestra privacidad.Por todo esto os animamos a participar en la manifestación que tendrá lugar el día 24 de Mayo frente al Ministerio de Cultura, para defender la neutralidad y universalidad de la red, así como los derechos civiles en la red.
-
INTERNET NO SE TOCA, LOS CIUDADANOS EN PIE DE GUERRA A LO LARGO Y ANCHO DE LA COMUNIDAD EUROPEA
Nos hacemos eco de la campaña de hacktivistas.net
Para enviar un correo a todos los parlamentarios ve directamente aquí
http://xmailer.hacktivistas.net/es/message
Para más información, sigue leyendo:
*Esta campaña incluye:*
1 – Web informativa donde se explica en que consiste el así llamado
«Paquete de telecomunicaciones» que está a punto de ser votado, porqué
es tan peligroso para el futuro de los ciudadanos y de su economía
diaria y todas las iniciativas que está tomando la sociedad civil
europea al respecto:
http://blackouteusp.wordpress.com/
http://www.blackouteurope.eu/2 – Una carta a los europarlamentarios que está siendo enviada por
cientos de organizaciones y ciudadanos (uno de los europarlamentario
habla de la recepción de unas 200 al día):
http://blackouteusp.wordpress.com/carta-a-parlamentarios/3 – Un sistema automático para que cualquier ciudadano pueda enviar la
carta directamente a todos los europarlamentarios:
http://blackouteusp.wordpress.com/envio-directo-a-parlamentarios/4 – Un sistema para vigilar su voto al respecto:
http://blackouteusp.wordpress.com/controla-su-voto/y
5 – Un Casting Europeo de Abuelas para la creación de un video viral
intereuropeo:
fortheinternet.wordpress.com/about/PARTICIPA 🙂
/»Abuela, ayúdales que no saben lo que están haciendo.» Con motivo de la
próxima votación en el parlamento europeo del paquete Telecom el día 5
de Mayo, se ha convocado un video-concurso a través de youtube para
explicarle a nuestros parlamentarios que necesitan nuestro voto en junio
y que Internet todavía nos proporciona las herramientas para ver y
juzgar lo que hacen. Y así tiene que seguir siendo./Infórmate:
¡No dejes que el Parlamento de la U.E. privatice Internet! No habrá
vuelta atrás! ¡Actúa ahora! Mañana será tarde!
PODEMOS HACER PRESIÓN.- LE HEMOS DADO NUESTRO VOTO – volvemos a
reelegirlos en junio. DILES A LOS PARLAMENTARIOS QUE VOTEN NO!»*PÁSALO*
Y aquí algo más sobre la respuesta ciudadana a los lobbies en España:
http://la-ex.net/que-es/la-avaricia/carta-a-sinde
http://www.facebook.com/group.php?gid=76826011168
http://sindemocracia.net/
http://www.internautas.org/html/5512.html -
Creación de un servidor HTTP «personal» en Parrot
Bueno, como en el anterior artículo sobre Parrot nos centramos en Perl6 y hay quien ha comentado si solo sirve para ello, vamos a ver otro ejemplo de lo que se puede hacer : un servidor http personal.
Antes de nada, si estamos en Debian, instalamos PerlDoc:
apt-get install perl-doc
Como estamos de pruebas, pues nos vamos a ir al directorio /tmp para no tenernos que preocupar del espacio de disco (/tmp sólo se borra en los reinicios) y allí descargaremos parrot desde el svn de Parrot.
cd /tmp svn co https://svn.parrot.org/parrot/trunk parrotUna vez hemos descargado el fuente directamente nos vamos a configurar y compilar Parrot. En esta ocasión no nos descargamos ningún lenguaje ya que el ejemplo que vamos a probar está en Pir (Parrot Intermediate Representation) una especie de ensamblador de alto nivel.
cd parrot perl Configure.pl && makeUna vez que tenemos compilado Parrot, vamos a generar la documentación en HTML, algo tenemos que servir en nuestro servidor y la documentación de Parrot es lo ideal 🙂 Para ello simplemente haremos un make html, que se encargara de ir por todos los fuentes que tengan información en formato pod (Plain Old Documentation) y la pasará a HTML.
make htmlPues ya casi acabamos. Sin salirnos del directorio ejecutamos Parrot con el código que le permite comportarse como un servidor http.
./parrot examples/io/httpd.pir &Y ya estamos, lanzamos nuestro navegador favorito contra nuestra IP local por el puerto 1234.
mozilla 127.0.0.1:1234Simple, no ? Bueno, pues ya tenemos acceso a un montón de información que podemos leer cómodamente. El servidor http es sólo un ejemplo que viene con Parrot y que tiene algunas opciones de configuración, recomiendo leer el código ya que es bastante sencillo y esta muy claramente implementado.
-
Creación de un ejecutable Perl6 con Rakudo (perl6 en Parrot)
Rakudo – Perl6 en Parrot
Creación de un ejecutable Perl6 con Rakudo (perl6 en Parrot)
Bueno, como ayer se anuncio Parrot 1.0, es posible que ya haya gente que este interesada en probarlo, pero quizás no sepa muy bien como hacerlo. Voy a describir como crear un ejecutable a partir de un pequeño ejemplo hecho por Patrick Michaud en Rakudo. Para ello vamos a instalar de forma local tanto Parrot como Rakudo, ya que la instalación de forma permanente todavía no la veo muy ‘fina’.
El ejemplo que vamos a usar es una calculadora RPN (Reverse Polish Notation) hecha en Perl6, que viene de una implementación anteriormente hecha en Perl5, el articulo lo podéis ver aquí, vale la pena leerlo para darse cuenta como esta evolucionando Perl6 (a pmichaud le faltaba un metaoperador, asi que no se corta, y va y lo implementa 🙂 )
Bueno, comenzamos descargando y compilando Rakudo/Parrot, para ello hacemos lo que nos indica en su repositorio git.
En Debian necesitariamos los paquetes: git-core, perl, make, gcc y subversion.
cd /tmp git clone git://github.com/rakudo/rakudo.git cd rakudo perl Configure.pl --gen-parrot &&makeSiguiendo este procedimiento, siempre tendremos un compilador de Perl6 con una maquina virtual Parrot que se supone que funciona. También tened en cuanta que lo he puesto en el directorio /tmp, con lo cual en un reinicio de la maquina se perdería, si queréis tenerlo permanentemente, hay que ponerlo en cualquier otro directorio.
Bueno, cogemos el código ejemplo de la web anteriormente indicada y la volcamos a un fichero de texto llamado: «calc.p6»
my %op_dispatch_table = { '+' => { .push(.pop + .pop) }, '-' => { .push(.pop R- .pop) }, '*' => { .push(.pop * .pop) }, '/' => { .push(.pop R/ .pop) }, 'sqrt' => { .push(.pop.sqrt) }, }; sub evaluate (%odt, $expr) { my @stack; my @tokens = $expr.split(/\s+/); for @tokens { when /\d+/ { @stack.push($_); } when ?%odt{$_} { %odt{$_}(@stack); } default { die "Unrecognized token '$_'; aborting"; } } @stack.pop; } say "Result: { evaluate(%op_dispatch_table, @*ARGS[0]) }";Una vez tenemos nuestro ejemplo en el fichero, sólo lo tenemos que ejecutar y listo, nuestro primer programa en Perl6, y no es un simple ‘hello world’.
./perl6 calc.p6 '5 6 +'Pero ahora queremos hacer algo más interesante: crear un ejecutable de ese código Perl6. No hay problema, tenemos las herramientas adecuadas. Primero le vamos a decir a Rakudo que el código que genere sea pir, que es el ensamblador que entiende la máquina virtual Parrot, y luego mediante Parrot, lo compilamos a bytecode, y a partir de ahí creamos un ejecutable de la siguiente forma:
./perl6 --target=pir calc.p6 > calc.pir ./parrot/parrot -o calc.pbc calc.pir ./parrot/pbc_to_exe calc.pbcY ya lo tenemos. Este proceso se automatizará mas adelante, posiblemente se le ponga un switch a la linea de comandos de Rakudo para que genere el ejecutable sin que tengamos que hacer todos eso. Bueno, ya solo nos queda confirmar que tenemos un ejecutable, y probarlo.
file calc ./calc '5 6 +'Hay que tener en cuenta que Parrot 1.0 supone la salida de Parrot con un API estable para usuarios (usuario es el desarrollador de lenguajes, no el que usa un lenguaje). Por lo tanto queda todavía bastante camino por delante. Aun así, con el anterior ejemplo se puede ver que algo como Perl6 sobre Parrot es los suficientemente funcional como para ya realizar aplicaciones, y ya hay gente creando aplicaciones de cierta envergadura. Espero que os haya gustado y alguno más se anime con Parrot, Rakudo, o cualquier otro lenguaje, cooperar es tan simple como descargarserlo periódicamente, probarlo, y si se ve algún fallo, reportarlo.