Autor: vejeta

  • Emacs: Grabar ficheros en UTF-8

    La fuente que me dió la solución fué esta:    http://hacks.catdancer.ws/emacs-utf8.html

     

    En el trabajo no puedo trabajar con GNU/Linux como en casa. Pero si uso emacs para mis desarrollos, combinado con FTPDrive para acceder a los ficheros ftp remotos como si fueran una carpeta local (al estilo de curlFTPfs de GNU/Linux).

    Al crear un fichero desde emacs en ese directorio y luego abrirlo en el navegador no se visualizaban las tildes, eñes, etc…

    Como solucionarlo:

    1. Escribe M-x customize-variable RET auto-coding-alist RET
    2. Pulsa en el primer botón “INS” (arriba en la página).
    3. En “File name regexp”, introducir \.php\'
      (Barra-invertida punto P H P  barra-invertida comilla-simple).
    4. En “Coding system”, introducir utf-8
    5. Pulsar el botón “Save for Future Sessions”.

    Como manera alternativa de hacerlo podrías añadir esto a tu fichero .emacs:

     (setq auto-coding-alist
       (cons '("\\.php\\'" . utf-8) auto-coding-alist))
    

    Otro consejo de zoperman

  • 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
    1. Modalidad
      1. Charla
      2. Taller
      3. Mesa redonda
      4. Póster
      5. Exposición
      6. Reunión coordinación
      7. Performance
      8. Otros
    2. Nombre del/a dinamizador/a, autor/a, coordinador/a
    3. Título(s)
    4. Resumen
    5. Palabras clave
    6. Conocimientos recomendados para los participantes
    7. Estructura/contenido
    8. Metodología: exposicion, discusión, cacharreo, etc.
    9. Duracion
    10. Lecturas recomendadas. Para la gente que quiera entrar en el tema antes de entrar en el nodo.
    11. Navega-acción copirata: cómo podría integrarse el nodo en la manifestación?
    • Información para coordinar:
    1. Material necesario (incluyendo tipo de espacio por si hace falta un espacio abierto sin sillas o lo que sea).
    2. Preferencias de horarios
    3. Seguridad de asistencia (del 1 al 10)
    4. 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/hackmeeting

    Má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:

    http://sindominio.net/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
    1. Modalidad
      1. Charla
      2. Taller
      3. Mesa redonda
      4. Póster
      5. Exposición
      6. Reunión coordinación
      7. Performance
      8. Otros
    2. Nombre del/a dinamizador/a, autor/a, coordinador/a
    3. Título(s)
    4. Resumen
    5. Palabras clave
    6. Conocimientos recomendados para los participantes
    7. Estructura/contenido
    8. Metodología: exposicion, discusión, cacharreo, etc.
    9. Duracion
    10. Lecturas recomendadas. Para la gente que quiera entrar en el tema antes de entrar en el nodo.
    11. Navega-acción copirata: cómo podría integrarse el nodo en la manifestación?
    • Información para coordinar:
    1. Material necesario (incluyendo tipo de espacio por si hace falta un espacio abierto sin sillas o lo que sea).
    2. Preferencias de horarios
    3. Seguridad de asistencia (del 1 al 10)
    4. 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/hackmeeting

    Má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:

    http://sindominio.net/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 1
    
    

    En 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
    # ./INSTALL

     

    Añadir las siguientes variables de entorno a vuestro profile.

        PLAN9=/usr/local/plan9 
        export PLAN9
        PATH=$PATH:$PLAN9/bin
       export PATH

     

    Para 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.net

    Sin 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 parrot
    

    Una 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 && make
    

    Una 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 html
    

    Pues 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:1234
    

    Simple, 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 &&make
    

    Siguiendo 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.pbc
    

    Y 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.

     

  • Se anuncia la publicación de Parrot 1.0.0

    Se anuncia la publicación de Parrot 1.0.0.

    El anuncio oficial en: http://www.parrot.org/news/2009/Parrot-1.0.0

    Parrot 1.0.0 con nombre en clave «Haru Tatsu» ya está disponible desde el 17 de Marzo de 2009.
    Parrot es una máquina virtual diseñada para compilar y ejecutar bytecode para lenguajes dinámicos. Parrot soporta actualmente un número de implementaciones de lenguajes en diferentes grados de madurez, entre los que se incluyen Tcl, Javascript, Ruby, Lua, Scheme, PHP, Python, Perl 6, APL y un traductor de bytecode de .NET.

    You’re packing a suitcase for a place none of us has been
    A place that has to be believed to be seen
    You could have flown away
    A singing bird in an open cage
    Who will only fly, only fly for freedom…

    What you’ve got they can’t deny it
    Can’t sell it, can’t buy it
    Walk on…

    — U2, «Walk On»

     

    Parrot 1.0.0 puede conseguirse en El sitio FTP de Parrot, o siguiendo las instrucciones de descarga. Para aquellos a los que les gustaría desarrollar en parrot, o ayudar a desarrollar el mismísimo Parrot, se les recomienda usar Subversion en el repositorio de código fuente para así tener acceso al último código disponible

    Novedades en Parrot 1.0.0:

    - Documentation
      + New user documentation for exceptions.
      + Updates to Chapters 4 & 5 of the Parrot book.
      + Improved and expanded generated HTML documentation, as
        the input for http://docs.parrot.org.
      + Added Compiled HTML Help (.chm) version of documentation.
      + Cleanups and fixes.
    - Languages
      + Pynie
        - left the nest and is now at
          http://pynie.googlecode.com/
      + Cardinal
        - left the nest and is now at
          http://github.com/cardinal
      + APL
        - left the nest and is now at
          http://paraplegic.googlecode.com/
      + ABC, Squaak, and Befunge moved to examples/.
      + All remaining languages moved to
        https://svn.parrot.org/languages/
    - Tools
      + Support for language builds from an installed Parrot.
      + Expanded language shell generator for new languages.
      + 'parrotbug' utility repurposed for the Trac interface.
    - Deprecations
      + Removed deprecated Tqueue and Closure PMCs.
      + String, Key, NCI, LexPad, Iterator, Sub, Continuation,
        RetContinuation, ExceptionHandler, ParrotLibrary,
        ParrotInterpreter, ParrotThread, ParrotRunningThread,
        Rational, FixedPMCArray, ResizablePMCArray, and GDBMHash
        PMCs now use declared attributes (ATTR), in place of the
        deprecated UnionVal.
    
    
Creative Commons License
Except where otherwise noted, the content on this site is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.