lunes, septiembre 11, 2006

Foto-Mosaicos con metapixel en Gentoo

Tengo en mi casa un poster de una foto de Yoda hecho con multiples fotos de la triologia original de la guerra de las galaxias y desde hace tanto tiempo como tengo el poster tenia ganas de hacer unas fotos de estas.... Me acuerdo cuando hace apenas unos años vi a un tipo por la tele (no recuerdo el nombre) que se japtaba de tener este software para desarrollar este tipo de posters... De las de aquella, para hacer un poster decente se tardaba un güevo y medio, pero hoy en dia tenemos varias soluciones libres para hacerlo y que con los micros de hoy en dia se tarda apenas unos segundos.

Ejemplo:


(hecho con solo 2700 fotos, a ver si subo una cuando tenga todas mis fotos en mi libreria)

Yo opte por metapixel

Para hacerlo funcionar solo necesitamos :

Descargarnos los ultimos fuentes de metapixel

Y tener una buena biblioteca de imagenes... (Cuantas mas mejor, 10.000 es un buen numero)

Descomprimimos, Compilamos he instalamos los fuentes de la ultima version de metapixel.

tar -xzf metapixel-version.tar.gz
cd metapixel-version
make
su
make install
exit


Ahora tenemos que recopilar muchas fotos, si las tenemos en un directorio del disco duro fenomenal, pero si teneis copias en dvds, tendreis que ir dvd a dvd generando una libreria con las fotos en pequeño para utilizarlas a posteriori. Imaginemos el primer caso. tenemos todas las fotos en /home/usuario/fotos , por otro lado crearemos un directorio donde almacenaremos las imagenes redimensionadas en /home/usuario/imagelib

mkdir /home/usuario/imagelib
metapixel-prepare -r /home/usuario/fotos /home/usuario/imagelib


Segun la cantadidad de las fotos que tengamos tardara mas o menos.
Si deseamos añadir mas fotos a la libreria bastara con cambiar el directorio /home/usuario/fotos por el nuevo, por ejemplo, unas que tengamos en un dvd

mount /dev/dvd /mnt/dvd
metapixel-prepare -r /mnt/dvd /home/usuario/imagelib


Esto te añadira las nuevas fotos.

No cometas el error de poner dos veces un directorio con las mismas fotos por que se te duplicaran en la libreria, es decir, no te valida si hay fotos que tienes...

Despues de añadir las fotos solo hace falta seleccionar una para la que quieras hacer un mosaico, por ejemplo /home/usuario/foto.jpg

metapixel --library /home/usuario/imagelib --metapixel /home/usuario/foto.jpg /home/usuario/foto-mosaico.png


En unos pocos segundos lo tendras hecho.

Es recomendable utilizar fotos grandes (dimensiones) para que el resultado sea decente, si por ejemplo tienes una foto de 120x120, lo que puedes hacer es redimensionarla a mayor tamaño con el gimp y despues convertirla en mosaico.

Si antes de --library le pones --collage te hara la foto a modo de collage poniendo unas encima de otras.

Por defecto al generar la libreria de imagenes te redimensiona las fotos a 128x128, normalmente las camaras no suelen hacer las fotos cuadradas, asi que, para que consigas un efecto de redimension sin deformacion deberias hacer la redimension a unos tamaños equivalentes, por ejemplo, para mi canon de 6 megapixels que saca las fotos en apaisado a 3456x2304 y pensando que queremos mantener la anchura de las imagenes de la libreria a 128, la altura correcta para fotos apaisadas seria de (2304 * 128) / 3456 = 85,34, asi que seria interesante añadir --width 128 --height 85 al metapixel-prepare. Hay que tener en cuenta que esto solo nos vale para fotos apaisadas, por lo que tendriamos que hacer una seleccion de las mismas, lo cual en 10.000 fotos puede ser un poquitin aburrido... ¿Convendria hacer algun script que mida dimensiones y haga la redimension consecuentemente?... a ver si se nos ocurre algo.

Hay mas parametros que pueden ser interesantes, pero a mi con estos por ahora me sobran.

Mas info sobre foto-mosaicos y otras herramientas en http://en.wikipedia.org/wiki/Photomosaic

Actualizacion masiva de awstats en Debian

Hace ya algunos meses que me instale el maravilloso awstats para asi controlar un poco el acceso que se hace a la mozleria ips, volumen de descarga, etc....

Cuando lo instale en mi servidorcete debian no vi la forma de actualizar las estadisticas de todos los logs, cogiendo incluso los que tengo almacenados asi que, despues de copiarme el fichero de configuracion de awstats y modificarlo a mi antojo hice este pequeño script para poder hacer estadisticas de todos los logs que tengo almacenados.

update-all-awstats.sh
#! /bin/bash

cd /var/log/apache
gunzip access.log.*

echo "" > access_temp_awstats.log

typeset -i i=0

# contamos los archivos que hay
for file in ls -lt access.log.*
do
    ((i=i+1))
done

typeset -i j=1

# creamos el bucle para que ejecute todo desde log.mayor hasta log.1
echo "Volcando antiguos logs a access_temp_awstats.log"
while test $j -le $i;
do
    echo "Volcando access.log.$i a access_temp_awstats.log"
    cat access.log.$i >> access_temp_awstats.log
    ((i=i-1))
done

echo "Borrando anteriores datos de awstats"
rm /usr/lib/cgi-bin/*.txt

echo "Ejecutando la actualizacion de los accesos desde el temporal"
perl /usr/lib/cgi-bin/awstats.pl -config=/etc/awstats/moz.servebeer.com.conf -LogFile=/var/log/apache/access_temp_awstats.log -update

echo "Borrando temporal"
rm access_temp_awstats.log

echo "Zipeando antiguos logs"
gzip access.log.*

echo "Terminado"
exit 0


Hecho esto, no hay mas que ponerlo como tarea del cron y listo.

cd /etc/crond.d/
cp awstats awstats-moz.servebeer.com
nano -w awstats-moz.servebeer.com
# cambiamos con la configuracion de nuestro awstats
crontab awstats


Si alguien tiene una solucion un poco mas elegante no tiene mas que postearla.

Salud3!

miércoles, julio 05, 2006

Enviar archivos por bluetooth de pc a movil o viceversa en Gentoo

Llevo un poco parao mis descubrimientos con linux, mas que nada por las vacas y la cantidad de curro que tengo, este post lo empece a escribir el 5 de julio de 2006 y ya por fin hoy he terminado (10 de septiembre de 2006)....

Salud3!

Bueno, comentaros que con la pagina siguiente todo solucionado :

Guia de Bluetooth en gentoo

Voy ha hacerme un pequeño resumen para que no se me orvide.

Basicamente si utilizas genkernel los modulos ya los tienes instalados menos el protocolo RFCOMM.

Como se trata de un modulo y pensando que ya tienes el kernel generado con # genkernel all hacemos lo siguiente como root

cd /usr/src/linux
make menuconfig


y seleccionamos

Networking --->

<*> Bluetooth subsystem support --->

--- Bluetooth subsystem support
<M> L2CAP protocol support
<M> SCO links support
<M> RFCOMM protocol support
[*] RFCOMM TTY support
<M> BNEP protocol support
[*] Multicast filter support
[*] Protocol filter support
<M> HIDP protocol support


Salvamos y salimos y por que no, hacemos una nueva copia de la configuracion al /boot/

mount /boot/
cp .config /boot/.config-version-con-net-bt


Compilamos los nuevos modulos he instalamos

make modules
make modules_install


Si todo ha ido bien, enchufamos el bluetooth/usb y hacemos un dmesg

dmesg


El dmesg deberia devolvernos algo como esto :

ohci_hcd 0000:00:02.0: wakeup
usb 2-6: new full speed USB device using ohci_hcd and address 2
usb 2-6: configuration #1 chosen from 1 choice
Bluetooth: Core ver 2.8
NET: Registered protocol family 31
Bluetooth: HCI device and connection manager initialized
Bluetooth: HCI socket layer initialized
Bluetooth: HCI USB driver ver 2.9
usbcore: registered new driver hci_usb


Tambien nos puede dar una idea ejecutar lsusb

lsusb


Si lo cogio bien el lsusb deberia devolvernos algo como esto

Bus 002 Device 002: ID 0db0:1967 Micro Star International Bluetooth Dongle
Bus 002 Device 001: ID 0000:0000
Bus 001 Device 001: ID 0000:0000


No se como ira si tienes el bluetooth integrado, pci o otras pajas, pero imagino que no debe ser muy distinto

Una vez que ya vemos que el bluetooth esta soportado en nuestro kernel, necesitamos alguna aplicacion para comunicarnos con otros dispositivos bluetooth, en el wiki que puse al principio nos recomienda BlueZ, que funciona mu bien al menos para lo que yo quiero.

emerge -va net-wireless/bluez-libs net-wireless/bluez-utils


Arrancamos el servicio bluetooth

/etc/init.d/bluetooth start


cambiamos el pin, por defecto 1234 por otro que queramos
nano -w /etc/bluetooth/pin


Ahora probaremos que funciona, para probar voy a poner de ejemplo mi telefono movil, enciendo el bluetooth del movil y escaneamos a ver si vemos el mismo desde el ordenador, con hcitool scan, escaneamos dispositivos bluetooth encendidos.

hcitool scan


El resultado sera algo como esto :

Scanning ...
00:E0:03:64:16:75 Mozvil


Al ver que encuentra el dispositivo Mozvil, instalamos unas valiosas herramientas para hacer los envios de forma mas sencilla, gnome-bluetooth, entre otras, nos instalara:
gnome-obex-send (para enviar archivos del pc al movil)
gnome-obex-server (para recibir archivos del movil en el pc)

USE="bluetooth" ACCEPT_KEYWORDS="~amd64" emerge -va gnome-bluetooth


El ACCEPT_KEYWORDS para los usuarios que como yo tienen amd64

Probamos a enviarnos algo, un mp3 para poner un tono chanchi lerendi al mozvil.

gnome-obex-send fihcero.mp3


Le damos al boton de actualizar para ver el dispositivo al que vamos a enviar y listo.

Para enviar del movil al pc. tan simple como ejecutar el gnome-obex-server

gnome-obex-server


Y desde el movil enviar el archivo y seleccionar el pc como destinatario tecleamos el pin que pusimos y listo.



Algunas cosas interesantes para el tema de los mp3s.
mp3splt, para partir el mp3 en un cacho pequeño (que nos mole para el tono del movil, toda una cancion puede ser una locura), para extraer un cacho de la cancion se le invoca con 3 parametros, nombre de fichero mp3, tiempo desde donde empieza, tiempo donde acaba en el formato minutos.segundos, por ejemplo :

mp3splt fichero.mp3 0.0 0.6


Nos extraera en un nuevo archivo llamado fichero_0.0_0.6.mp3 los primeros 6 segundos de la cancion.

Ademas si soys unos pijoteros que os bajais los mp3s en calidad decente (192 Kbps) seria recomendable que recodificarais con un sonido un poco peor... (total es para que os llamen no para dar un concierto).

El lame tiene un present para moviles que te reduce bastante la calidad (en consecuencia el tamaño) y es tan facil de usar como lame --preset phone fichero-a-recodificar.mp3 fichero-de-salida.mp3

lame --preset phone fichero_0.0_0.6.mp3 fichero-pal-movil.mp3


Como siempre todos los comentarios seran bien recibidos.

Pasando la live de gentoo a usb

Como ya decia en el anterior post, el tema de hacer la live era para probar a hacer una live que cargara desde un usb-stick. Pues bien, nada mas facil si habeis conseguido hacer la livecd con los pasos que os indique teneis que hacer estos sencillos pasos.

Para empezar tenemos que compilar el kernel con soporte para usb-storage incluido en el propio kernel y no como modulo (que es como normalmente se suele poner y te pone por defecto el genkernel)

# hacemos el chroot
cd ~/livecd/source
mount -o bind /proc proc
mount -o bind /dev dev
mount -o bind /sys sys
mount -o bind /usr/portage/distfiles usr/portage/distfiles
cp /etc/resolv.conf etc/resolv.conf
# Para sistemas de 32 bits desde 32 bits
chroot . /bin/bash --login
# Para sistemas de 32 bits desde 64 bits
linux32 chroot . /bin/bash --login
env-update
source /etc/profile
genkernel --gensplash=livecd-2006.0 --menuconfig all

# En el menuconfig buscamos estas opciones de configuracion para ponerlas en el kernel por defecto
# No se si son necesarias todas ellas pero para mi usb-stick con estas ha funcionado
Device Drivers --->
  USB support --->
    <*> USB Mass Storage support
      [ ] USB Mass Storage verbose debug
      [*] Datafab Compact Flash Reader support (EXPERIMENTAL)
      [*] Freecom USB/ATAPI Bridge support
      [*] ISD-200 USB/ATA Bridge support
      [*] Microtech/ZiO! CompactFlash/SmartMedia support
      [ ] USBAT/USBAT02-based storage support (EXPERIMENTAL)
      [*] SanDisk SDDR-09 (and other SmartMedia) support (EXPERIMENTAL)
      [*] SanDisk SDDR-55 SmartMedia support (EXPERIMENTAL)
      [*] Lexar Jumpshot Compact Flash Reader (EXPERIMENTAL)
      [ ] Olympus MAUSB-10/Fuji DPC-R1 support (EXPERIMENTAL)
# Salvamos la configuracion y esperamos a que termine de compilar el nuevo kernel

# Salimos del chroot
exit
env-update
source /etc/profile



Borramos el contenido total del usb-sitck y la particion (contamos que el usb es /dev/sdd, si no tienes disco duro sata es casi seguro que sea /dev/sda, pero ten mucho cuidado por que te borraras el contenido del usb-stick)

# Para ver que particiones tenemos
sfdisk -l /dev/sdd
# Borramos el contenido
dd if=/dev/zero of=/dev/sdd
# Esto tardara un ratito, se paciente


Una vez borrado el contenido y las particiones del usb creamos unas nuevas, esto es igual que particionar cualquier disco duro, asi que si no sois neonatos en el tema no os deberia costar demasiado, yo lo voy a relatar para el sistema mas sencillo que se me ocurre que es una particion con todo el contenido del usb-stick en sistema de ficheros ext2.

# Como ya hemos comentado, con esto particionamos con sfdisk el /dev/sdd para crear una nueva particion con todo el contenido del usb-stick.
sfdisk -q /dev/sdd << EOF
0,,L,*
;
;
;
EOF
# Yo siempre he utilizado fdisk, esto es el ejemplo que venia en el wiki, pero supongo que podras utilizar el que mas te apetedca.

# Formateamos con ext2
mke2fs -m0 /dev/sdd1
fi


Despues de formatear, montamos el usb-stick y copiamos el directorio donde tenemos la live, podemos copiarla integramente o copiar solo la parte que mas nos convenga, aqui os pongo un ejemplo de rsync contando que el directorio donde montamos se llame /mnt/usbstick y el directorio donde tenemos la live sea el /root/livecd/source/, y excluyendo los archivos inecesarios para el uso de la distro.

# montamos
mount /dev/sdd1 /mnt/usbstick
# copiamos
rsync -a --delete --progress --exclude "*.h" --exclude "etc/bootsplash" --exclude "usr/tmp" --exclude "var/cache/*" --exclude "var/db/*" --exclude "var/log/*" --exclude "var/tmp/*" --exclude "usr/portage" --exclude "usr/share/doc" --exclude "usr/src" /root/livecd/source/ /mnt/usbstick/

# limpiamos cosillas por si las moscas
cd /mnt/usbstick
rm -rf var/tmp/*
rm -rf var/run/*
rm -rf var/lock/*
rm -rf var/cache/*
rm -rf var/db
rm -rf tmp/*
rm -f etc/mtab
touch etc/mtab
rm -rf var/log
mkdir var/log
mkdir var/lib/
mkdir var/lib/dhcpc
rm -rf usr/portage
rm -rf etc/portage
rm -rf usr/share/doc
rm -rf usr/src/
rm root/.bash_history


Si venimos de la live del post anterior para cd hay que modificar un par de archivos, el grub.conf y el /etc/fstab

# Configs del grub
sed 's/(cd)/(hd0,0)/g' /mnt/usbstick/boot/grub/menu.lst > /mnt/usbstick/boot/grub/menu.lst-tmp && mv /mnt/usbstick/boot/grub/menu.lst-tmp /mnt/usbstick/boot/grub/grub.conf
# Metemos el real_root (reemplazandolo por el cdroot)
sed 's/cdroot/real_root=\/dev\/sda1/g' /mnt/usbstick/boot/grub/menu.lst > /mnt/usbstick/boot/grub/menu.lst-tmp && mv /mnt/usbstick/boot/grub/menu.lst-tmp /mnt/usbstick/boot/grub/grub.conf
# quitamos la paja del squashfs
sed 's/looptype=squashfs//g' /mnt/usbstick/boot/grub/menu.lst > /mnt/usbstick/boot/grub/menu.lst-tmp && mv /mnt/usbstick/boot/grub/menu.lst-tmp /mnt/usbstick/boot/grub/grub.conf
sed 's/loop=/livecd.squashfs//g' /mnt/usbstick/boot/grub/menu.lst > /mnt/usbstick/boot/grub/menu.lst-tmp && mv /mnt/usbstick/boot/grub/menu.lst-tmp /mnt/usbstick/boot/grub/grub.conf
# hacemos el link de grub.conf a menu.lst (ext2 admite links :D)
rm /mnt/usbstick/boot/grub/menu.lst
cd /mnt/usbstick/boot/grub/
ln -sf grub.conf menu.lst

# cambiamos completamente el fstab
echo "/dev/sda1 / ext2 noatime 0 0" > /mnt/usbstick/etc/fstab
echo "none /proc proc defaults 0 0" >> /mnt/usbstick/etc/fstab
echo "none /dev/shm tmpfs defaults 0 0" >> /mnt/usbstick/etc/fstab


Por ultimo instalamos el grub en el mbr del usb-stick

grub-install --root-directory=/mnt/usbstick /dev/sdd --recheck


Y eso es todo amigos... Supongo que en el caso de que tengamos discos duros sata habra que poner otro real_root en el grub, pero lo desconodco por que no lo he probado.

Si sabeis de alguna forma que se pueda arrancar parecido estableciendo el root como usbroot que te lo coja automaticamente no estaria de mas que me lo contarais :D


Aqui dejo un pequeño script con la ejecucion de todo para posteriores pasos y actualizaciones.

Lo unico que no hace es el tema del kernel que lo teneis que hacer a mano.

#!/bin/bash
# 02-copiar-a-usb.sh
# ==================
LIVECD=~/livecd
TARGET=${LIVECD}/target
TARGET_SOURCE=${TARGET}/files/source/
SOURCE=${LIVECD}/source

#USB settings
USBDEV=/dev/sdd
MNTDIR=/mnt/usbstick

echo -n "Desea particionar el usbstick y formatearlo (solo es necesario la primera vez) [y/N] : "
read yn
echo ""

if test x"$yn" = xy -o x"$yn" = xY; then
#USB
echo "Warning!!! Estas a punto de borrar el contenido de ${USBDEV}!!!"
echo "Las siguientes particiones se sobreescribiran :"
sfdisk -l ${USBDEV}
echo "Estas seguro de que es tu intencion?"
echo "Presiona ENTER para continuar o CTRL-C para salir."
read user_reply
echo "Espera, preparando ${USBDEV} . . ."
dd if=/dev/zero of=${USBDEV}
sfdisk -q ${USBDEV} << EOF
0,,L,*
;
;
;
EOF
mke2fs -m0 ${USBDEV}1
fi

mkdir ${MNTDIR}
mount ${USBDEV}1 ${MNTDIR}

echo -n "Desea copiar el contenido del directorio ${SOURCE} a ${MNTDIR} (toda la informacion que contenga el directorio se borrara) [Y/n] : "

if test x"$yn" = x -o x"$yn" = xy -o x"$yn" = xY; then
    echo "Borrando el contenido de . . . "
    cd ${MNTDIR}
    rm -rf *
    echo "Copiando ficheros a ${MNTDIR} . . ."

    rsync -a --delete --progress --exclude "*.h" --exclude "etc/bootsplash" --exclude "usr/tmp" --exclude "opt/enemy-territory/etmain/video/*" --exclude "var/cache/*" --exclude "var/db/*" --exclude "var/log/*" --exclude "var/tmp/*" --exclude "usr/portage" --exclude "usr/share/doc" --exclude "usr/src" ${SOURCE}/ ${MNTDIR}/

    echo "Limpiando la nueva live"
    cd ${MNTDIR}
    rm -rf var/tmp/*
    rm -rf var/run/*
    rm -rf var/lock/*
    rm -rf var/cache/*
    rm -rf var/db
    rm -rf tmp/*
    rm -f etc/mtab
    touch etc/mtab
    rm -rf var/log
    mkdir var/log
    mkdir var/lib/
    mkdir var/lib/dhcpc
    rm -rf usr/portage
    rm -rf etc/portage
    rm -rf usr/share/doc
    rm -rf usr/src/
    rm root/.bash_history
fi

echo -n "Vienes de una live iso? (Esto es para cambiar el contenido de algunos archivos como el fstab para que te monte los archivos como dios manda y el config del grub para que te arranque desde el usb) [Y/n] : "

if test x"$yn" = x -o x"$yn" = xy -o x"$yn" = xY; then
    # Configs del grub
    echo "Modificando el fichero ${MNTDIR}/boot/grub/menu.lst . . ."
    # Si viene de la generacion de un cd de arranque
    sed 's/(cd)/(hd0,0)/g' ${MNTDIR}/boot/grub/menu.lst > ${MNTDIR}/boot/grub/menu.lst-tmp && mv ${MNTDIR}/boot/grub/menu.lst-tmp ${MNTDIR}/boot/grub/grub.conf
    # Metemos el real_root (reemplazandolo por el cdroot)
    sed 's/cdroot/real_root=\/dev\/sda1/g' ${MNTDIR}/boot/grub/menu.lst > ${MNTDIR}/boot/grub/menu.lst-tmp && mv ${MNTDIR}/boot/grub/menu.lst-tmp ${MNTDIR}/boot/grub/grub.conf
    # quitamos la paja del squashfs
    sed 's/looptype=squashfs//g' ${MNTDIR}/boot/grub/menu.lst > ${MNTDIR}/boot/grub/menu.lst-tmp && mv ${MNTDIR}/boot/grub/menu.lst-tmp ${MNTDIR}/boot/grub/grub.conf
    sed 's/loop=/livecd.squashfs//g' ${MNTDIR}/boot/grub/menu.lst > ${MNTDIR}/boot/grub/menu.lst-tmp && mv ${MNTDIR}/boot/grub/menu.lst-tmp ${MNTDIR}/boot/grub/grub.conf
    # hacemos el link de grub.conf a menu.lst
    rm ${MNTDIR}/boot/grub/menu.lst
    cd ${MNTDIR}/boot/grub/
    ln -sf grub.conf menu.lst

    # fstab
    echo "/dev/sda1     /     ext2     noatime         0 0" > ${MNTDIR}/etc/fstab
    echo "none         /proc     proc     defaults        0 0" >> ${MNTDIR}/etc/fstab
    echo "none         /dev/shm    tmpfs     defaults        0 0" >> ${MNTDIR}/etc/fstab
fi

echo -n "Desea instalar grub en el arranque de ${USBDEV} (solo es necesario la primera vez) [y/N] : "
read yn
echo ""

if test x"$yn" = xy -o x"$yn" = xY; then
    echo "Instalando Grub . . ."
    grub-install --root-directory=${MNTDIR} ${USBDEV} --recheck
fi

echo "Desmontando ${MNTDIR} . . ."
umount ${MNTDIR}

echo "Tu usb auto-arrancable esta listo."

sábado, junio 24, 2006

Creando una live de gentoo desde gentoo

Desde hace unos años queria hacer una live como servidor dedicado de juegos fps (campus de 2004) y como voy a volver este año a la campus me puse las pilas para ver que tipo de live podia hacer.

Buscando por la red encontre este wiki al que doy gracias a su creador y posteadores ya que este post es basicamente una traduccion obviando las cosas que no he utilizado en mi live y agregando alguna que he utilizado que no aparece en el wiki.

Captura del boot splash


Todos los paso comentados son para ejecutarse como root y el directorio elegido que contendra la livecd se ubicara en /root/livecd

Hay que tener en cuenta que segun las cosas que instalemos vamos a necesitar un minimo de 200 Gb (o mas) para compilar etc... asi que df -h para ver el espacio que hay en /root/

Requerimientos :
emerge -va squashfs-tools cdrtools qemu


Sitio de instalacion del original :
cd ~
mkdir -p ~/livecd/source


Cogiendo packetes basicos
# cd ~/livecd
wget [YOUR FAVORITE MIRROR]/releases/x86/current/stages/stage2-x86-2006.0.tar.bz2
wget [YOUR FAVORITE MIRROR]/snapshots/portage-latest.tar.bz2


Extrayendo el stage
cd ~/livecd/source
tar jxvpf ~/livecd/stage2-x86-2006.0.tar.bz2
mkdir newroot


Extrayendo el portage
cd ~/livecd/source/usr/
tar jxvf ~/livecd/portage-latest.tar.bz2


Preparandonos para hacer el chroot
cd ~/livecd/source
mkdir -p proc dev
mount -o bind /proc proc
mount -o bind /dev dev
mount -o bind /sys sys
mkdir usr/portage/distfiles
mount -o bind /usr/portage/distfiles usr/portage/distfiles
cp /etc/resolv.conf etc/resolv.conf


chroot al nuevo entorno
cd ~/livecd/source

Normalmente
chroot . /bin/bash --login

Pero si deseas generar una iso compatible con x86 desde 64 bits seria...
linux32 chroot . /bin/bash --login


Actualizacion del entorno
env-update
source /etc/profile


Obligatorioamente hay que bajarse el systema base
emerge -va system

Por si se ha actualizado algo durante el emerge system (por ejemplo gcc)
emerge -uva world

Yo siempre paso de hacerlo (no por que sea un machote sino por que soy un vago)

Editamos el mapa de caracteres del teclado (/etc/conf.d/keymaps)
Para el tipico español
KEYMAP="es"
SET_WINDOWKEYS="yes"


Muy importante editar el /etc/fstab para dejarlo como sigue
echo "" > /etc/fstab
echo "/dev/loop0 / squashfs ro,defaults 0 0" >> /etc/fstab
echo "none /proc proc defaults 0 0" >> /etc/fstab
echo "none /dev/shm tmpfs defaults 0 0" >> /etc/fstab
echo "none /dev/pts devpts defaults 0 0" >> /etc/fstab
echo "" >> /etc/fstab


Zona horaria de la peninsula iberica
ln -sf /usr/share/zoneinfo/Europe/Madrid /etc/localtime


Modificamos el resto de ficheros en /etc/ que te interese

Instalamos lo que te interese, algunos recomendados son :
emerge -va memtest86+ localepurge genkernel dhcpcd mingetty nano

No tan necesario pero recomendable es el coldplug y nada necesario ni recomendable pero super-chuli es el splashutils con algun tema que os apetedca, eso ya depende de cada uno

Emerge de juegos fps basados en el engine de quake3 (Esto es totalmente necesario :o)
USE="dedicated" emerge -va quake3 quake3-alliance quake3-alternatefire quake3-bfp quake3-brainworks quake3-cpma quake3-data quake3-defrag quake3-matrix quake3-nsco quake3-osp quake3-ra3 quake3-ruinhunters quake3-teamarena quake3-threewave quake3-tremulous quake3-truecombat quake3-urbanterror quake3-wop enemy-territory enemy-territory-etpro enemy-territory-fortress enemy-territory-truecombat


NOTA : localepurge es para limpiar de ficheros sobre configuracion de idioma que no usas el mingetty es para hacer autologin y las splashutils son para arrancar con el framebuffer superchuli que nos tiene acostumbrados las instalaciones de gentoo (es posible que tu lo supieras pero yo no :o)

Modificamos otra vez los /etc/ que nos interese

Actualizamos los servicios requeridos para el arranque red, gdm... depende de lo que os hayamos instalado
rc-update add net.eth0 default


Compilando el kernel genkernel forever
emerge gentoo-sources
genkernel all

Si queremos meterle el gensplash (splashutils)
genkernel --gensplash=[theme] all


Configurando grub
Borramos el link de menu.lst a grub.conf (los sistemas de archivo iso no admiten links) y editamos /boot/grub/grub.conf

Salvo excepciones lo podemos dejar algo parecido a esto
default 0
timeout 30
splashimage=(cd)/boot/grub/splash.xpm.gz

title=LiveCD
root (cd)
kernel (cd)/boot/kernel-genkernel-x86-2.6.16-gentoo-r9 vga=791 root=/dev/ram0 init=/linuxrc looptype=squashfs loop=/livecd.squashfs udev nodevfs cdroot dodmraid
initrd (cd)/boot/initramfs-genkernel-x86-2.6.16-gentoo-r9

title=LiveCD NO-FB
root (cd)
kernel (cd)/boot/kernel-genkernel-x86-2.6.16-gentoo-r9 root=/dev/ram0 init=/linuxrc looptype=squashfs loop=/livecd.squashfs udev nodevfs cdroot dodmraid
initrd (cd)/boot/initramfs-genkernel-x86-2.6.16-gentoo-r9

title=Memtest86+
root (cd)
kernel (cd)/boot/memtest86plus/memtest.bin


Si hemos utilizado gensplash, debemos añadir un par de parametros al kernel
splash=silent,theme:livecd-2006.0 CONSOLE=/dev/tty1 quiet

Asi que la linea de LiveCD del grubconf quedaria algo asin:
title=LiveCD
root (cd)
kernel (cd)/boot/kernel-genkernel-x86-2.6.16-gentoo-r9 vga=791 root=/dev/ram0 init=/linuxrc looptype=squashfs loop=/livecd.squashfs udev nodevfs cdroot dodmraid splash=silent,theme:livecd-2006.0 CONSOLE=/dev/tty1 quiet
initrd (cd)/boot/initramfs-genkernel-x86-2.6.16-gentoo-r9


Copiamos grub.conf como menu.lst
cp /boot/grub/grub.conf /boot/grub/menu.lst


Si utilizamos mingetty debemos editar el archivo /etc/inittab y reemplazar
c1:12345:respawn:/sbin/agetty 38400 tty1 linux

por
c1:12345:respawn:/sbin/mingetty --autologin root --noclear tty1


tambien editaremos el archivo /sbin/rc y reemplazar
if [ -f "/sbin/livecd-functions.sh" -a -n "${CDBOOT}" ]
then
  ebegin "Updating inittab"
  livecd_fix_inittab
  eend $?
  /sbin/telinit q &>/dev/null
fi

por
if [ -f "/sbin/livecd-functions.sh" -a -n "${CDBOOT}" ]
then
  ebegin "Updating inittab"
  /bin/true #livecd_fix_inittab
  eend $?
  /bin/true #/sbin/telinit q &>/dev/null
fi

si no lo utilizamos, deberiamos poner password al root al menos ejecutando passwd


Nos salimos del chroot con exit

Para generar la iso, ejecutamos el script 02 que he puesto al final que hace mas o menos esto:

Desmontar unidades y actualizar el entorno
cd ~/livecd/source
umount sys proc dev usr/portage/distfiles
env-update
source /etc/profile



Copiar la live a un directorio temporal para limpiarla
rm -rf ~/livecd/target
mkdir ~/livecd/target
cp -a ~/livecd/source/boot ~/livecd/target/
mkdir -p ~/livecd/target/files/source
rsync -a --delete --progress --exclude "var/cache/*" --exclude "usr/portage" --exclude "usr/share/doc" --exclude "usr/src" ~/livecd/source/ ~/livecd/target/files/source/
cd ~/livecd/target/files/source/
rm -rf var/tmp/*
rm -rf var/run/*
rm -rf var/lock/*
rm -rf var/cache/*
rm -rf var/db
rm -rf tmp/*
rm -f etc/mtab
touch etc/mtab
rm -rf var/log
mkdir var/log
mkdir var/lib/
mkdir var/lib/dhcpc
rm -rf usr/portage
rm -rf etc/portage
rm -rf usr/share/doc
rm -rf usr/src/
rm root/.bash_history



Crea el sistema de archivos squash y la iso
cd ~/livecd/target/files
time mksquashfs source/ ~/livecd/target/livecd.squashfs
touch ~/livecd/target/livecd
rm -rf ~/livecd/target/files
cd ~/livecd/

time mkisofs -R -udf -b boot/grub/stage2_eltorito -no-emul-boot -boot-load-size 4 -boot-info-table -iso-level 3 -hide-rr-moved -c boot.catalog -o ~/livecd/livecd.iso ~/livecd/target/


Por ultimo, para probar el iso sin necesidad de hacer posavasos
cd ~/livecd/
nice -n 2 qemu -m 512 -cdrom livecd.iso


El -m 512 le dice al qemu que utilce hasta 512 Mb de memoria lo pongo por que al cambiar a la version con gensplash requeria mas que los 128 que te pone por defecto

Cada vez que queramos actualizar cosas o instalar nuevos paquetes he generado dos scripts que son mu sencillos de usar.

Ejecutas el 01-entrar-livecd.sh que te ejecuta los pasos hasta el chroot y ejecutas
env-update
source /etc/profile

(Esto se debe a que no se como continuar la ejecucion del script una vez hecho el chroot)

Haces lo que te venga en gana emerge -va world, emerge nuevos paquetes etc

Te sales del chroot con exit y por ultimo ejecutas el script 02-limpiar-y-crear-livecd.sh


Los dos scripts los pongo a continuacion

# 01-entrar-livecd.sh
# ===================
cd ~/livecd/source
mkdir -p proc dev
mount -o bind /proc proc
mount -o bind /dev dev
mount -o bind /sys sys
mount -o bind /usr/portage/distfiles usr/portage/distfiles
cp /etc/resolv.conf etc/resolv.conf

echo -n "Vas a generar una live compatible con x86 desde un entorno de 64 bits? [Y/n] : "
read yn
echo ""

echo "No te olvides de ejecutar :"
echo "env-update"
echo "source /etc/profile"
echo ""
echo "Despues de hacer esto ya puedes hacer emerges y demas chorradas"
echo ""
echo "Si es la primera vez que entras en tu live (source) tendrias que hacer emerge como poco de system"

echo ""
echo "Cuando termines y salgas 'exit' ejecuta el paso 02-limpiar-y-crear-livecd.sh"
echo ""


if test x"$yn" = x -o x"$yn" = xy -o x"$yn" = xY; then
linux32 chroot . /bin/bash --login
else
chroot . /bin/bash --login
fi



# 02-limpiar-y-crear-livecd.sh
# ============================
echo -n "Desea desmontar unidades y actualizar el entorno (solamente es necesario si se hico el chroot) [Y/n] : "
read yn
echo ""

if test x"$yn" = x -o x"$yn" = xy -o x"$yn" = xY; then
echo "Desmontar unidades y actualizar entorno"
cd ~/livecd/source
umount sys proc dev usr/portage/distfiles
env-update
source /etc/profile
fi

echo -n "Desea copiar la nueva live? (esto borrara la live anterior -target-) [Y/n] : "
read yn
echo ""

if test x"$yn" = x -o x"$yn" = xy -o x"$yn" = xY; then
echo "Borrando la live anterior -target-"
rm -rf ~/livecd/target
mkdir ~/livecd/target
cp -a ~/livecd/source/boot ~/livecd/target/
mkdir -p ~/livecd/target/files/source

echo "Copiando la nueva live -desde source a target-"
rsync -a --delete --progress --exclude "var/cache/*" --exclude "usr/portage" --exclude "usr/share/doc" --exclude "usr/src" ~/livecd/source/ ~/livecd/target/files/source/

echo "Limpiando la nueva live"
cd ~/livecd/target/files/source/
rm -rf var/tmp/*
rm -rf var/run/*
rm -rf var/lock/*
rm -rf var/cache/*
rm -rf var/db
rm -rf tmp/*
rm -f etc/mtab
touch etc/mtab
rm -rf var/log
mkdir var/log
mkdir var/lib/
mkdir var/lib/dhcpc
rm -rf usr/portage
rm -rf etc/portage
rm -rf usr/share/doc
rm -rf usr/src/
rm root/.bash_history
fi

echo -n "Desea crear la nueva live (iso)? [Y/n] : "
read yn
echo ""

if test x"$yn" = x -o x"$yn" = xy -o x"$yn" = xY; then
echo "Creando el live"

echo "Creando el sistema squash"
cd ~/livecd/target/files
time mksquashfs source/ ~/livecd/target/livecd.squashfs

touch ~/livecd/target/livecd
rm -rf ~/livecd/target/files
cd ~/livecd/

echo "Creando el iso"
rm -rf /root/livecd/livecd.iso
time mkisofs -R -udf -b boot/grub/stage2_eltorito -no-emul-boot -boot-load-size 4 -boot-info-table -iso-level 3 -hide-rr-moved -c boot.catalog -o ~/livecd/livecd.iso ~/livecd/target/
fi

echo -n "Desea probar la nueva live (iso) con qemu? [Y/n] : "
read yn
echo ""

if test x"$yn" = x -o x"$yn" = xy -o x"$yn" = xY; then
echo "Probando live..."
nice -n 2 qemu -m 512 -cdrom ~/livecd/livecd.iso
fi

echo "Finish..."

martes, mayo 23, 2006

Primeros pasos con svg

Estaba yo buscando un icono vectorizado de firefox para hacer una cosilla y al poner vectorial + firefox en google me aparecieron varias cosas que me llamaron la atencion (por supuesto aun no he encontrado el icono vectorizado de firefox).

Por lo visto a partir de la version 1.5 de firefox no solo entiende svg, un estandard para definir dibujos e interfaces bidimensionales, sino que ademas es capaz de jugar con el.

Con inkscape el hacer dibujos vectoriales es un juego de niños y francamente me parece que es una herramienta increible. Ignoro como seran las herramientas de pago como Adobe ilustrator, Freehand, etc... pero os aseguro que para mi, inkscape forever...

Ayer me tire toda la tarde haciendo chorradillas con el inkscape y me lo pase teta... A ver si ahora aprendo un poco de como interactuar con el desde javascript y monto alguna pruebecilla, aun asi debajo teneis un par de enlaces para que os entretengais.

Links de interes :
Dibujo vectorial en firefox
Especulando sobre firefox 2.0
Open Clip Art Library

Solo firefox 1.5 o superior :
Can you put the moon in orbit?
AJAX Drawing 2.0
Lexa-moz667 (mi adorado lexatin)
Oskar The mummy (Un proyecto en mente...)

jueves, abril 27, 2006

Alta definicion con mplayer

Hace poco en casa del pedrin me estuvo enseñando algun video que se habia bajado en alta definicion.... me quede flipadisimo con el tema hasta el punto que para quitarle merito me tuve que beber el 50% de las cervezas que habia en su casa.

Para probar que tal funcionaba el asunto me baje un video que casualmente es un concurso de bikinis en alta definicion.

Lo puse y la calidad es impresionante (tanto del video como de las fembras que aparecen en el) pero se veian unas molestas rayas en las zonas en movimiento... una pequeña putada que no pueda resolver el forero del pedrin.

Si os pasa lo mismo probar con los siguientes parametros para lanzar las pelis :

# mplayer -pp 0x20007f peli
# mplayer -vop pp=fd:c peli
# mplayer -vop lavcdeint peli


A mi el que mejor resultado me ha dado es el -vop lavcdeint el primero me seguia dejando rayas aunque se notaba menos y el segundo te bajaba considerablemente la calidad de la imagen.

Muchas gracias pedrin!!! mi novia no te lo agradece tanto pero yo encantado de poder contarle los pelos a las tias en bikini

Pintar imagenes en c con gtk y con vb en mono

En la Arousa-party que estuvimos hace un par de semanas, "Party intima" donde las haya... mi amigo palomo me enseño este programilla que estaba empezando ha hacer para recuperar la soltura en c que le caracteriza... es un ejemplo pequeñin utilizando las gtk para sacar por pantalla una imagen. Me parecio muy interesante sobre todo por que como ahora me ha dado por monear me va a resultar util para un jueguecin que estoy haciendo... segun tome forma posteare algo sobre el por ahora solo decir que es un wargame basado en reglas de un conocido wargame... (espero no violar los derechos de propiedad intelectual...)

El ejemplo es el que sigue.

Abre una ventana con gtk y pinta una imagen en un widget (o argo asin...)

#include <gtk/gtk.h>
#include <gdk-pixbuf/gdk-pixbuf.h>

int main (int argc, char **argv) {
  GtkWidget *window,*imagen;
  GdkPixbuf *pixbuf;
  GdkPixmap *pixmap;
  GdkBitmap *mask;

  gtk_init (&argc, &argv);

  pixbuf = gdk_pixbuf_new_from_file("parodius.png");
  gdk_pixbuf_render_pixmap_and_mask (pixbuf, &pixmap, &mask, 0);
  imagen = gtk_pixmap_new( pixmap, mask );

  window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
  gtk_signal_connect (GTK_OBJECT (window), "destroy", gtk_main_quit, NULL);
  gtk_widget_show(imagen);
  gtk_container_add (GTK_CONTAINER (window), imagen);

  gtk_widget_show (window);

  gtk_main ();

  return 0;
}


Simplificando un poquitin saque la forma de hacerlo con mono (ya sabiendo que clases utilizar asin cualquiera ^_^)

Imports System
Imports Gtk

Public Class MainClass
  Public Shared Sub Main ()
    Application.Init ()
    new MainWindow ()
    Application.Run ()
  End Sub
End Class

Public Class MainWindow
  Inherits Window

  Public Sub New ()
    MyBase.New("Mozlot")
    Me.SetDefaultSize (400, 300)
    AddHandler MyBase.DeleteEvent, AddressOf OnMyWindowDelete
    Dim wgImage As Gtk.Widget = New Gtk.Image("imagen.png")
    Me.Add(wgImage)
    Me.ShowAll ()
  End Sub
  Private Sub OnMyWindowDelete (ByVal sender As Object, ByVal a As DeleteEventArgs)
    Application.Quit ()
    a.RetVal = true
  End Sub
End Class

jueves, abril 20, 2006

Por que el rename de mi gentoo es distinto al de mi debian?

Escena 1 (Habitacion de informatico lleno de ordenadores, monitores y diversas fricadas como mascara de darth vader, figuritas de final fantasy, naruto)

Narrador : Erase una vez y una vez que se era un informatico feliz y contento que queria compartir nuevos conocimientos adquiridos.

Jaime : Hey tios, habeis utilizado el comando rename alguna vez para renombrar con patrones?

Pedro y Palomo (al unisono) : No, siempre renombramos a pelo con mv fichero por fichero

Jaime (voz en off) : ¡¡¡Jajajajaja!!! hace unos años esperaba este momento, poder enseñarles una cosa nueva que he aprendido y es util a mis dos senseis de linux... he de saborear este momento....

Jaime (frotandose las manos) : Pues bien, el otro dia tenia multitud de ficheros en el servidor (debian) y como no me apetecia ir uno a uno renombrando con mv se me ocurrio mirar el man del rename. Imaginaros todos estos ficheros

Narrador : (Jaime crea una carpeta con 5 archivos en su ordenador de ocio, gentoo inestable por voluntad propia que le ha llevado mas de una vez al borde de la locura)

Jaime : Es tan sencillo como utilizar regular expresions (como me estoy tirando el moco!!. Llevo años intentando entender las regular expresions y ni pa dios, si lo descubri fue por que lo ponia en el man y a base de ensayo y error) de perl en el primer parametro del rename entre comillas simples y como segundo parametro el patron para seleccionar ficheros.

Narrador : (Jaime teclea rename 's/texto a reemplazar/texto reemplazado/' *.txt ; Y no ocurre nada)

Jaime : mmm debo haber escrito algo mal voy a mirar un documento que tengo en el servidor en el que lo apunte

Narrador : (ssh al servidor mira el documento y esta bien escrito. No obstante vuelve a intentarlo y nada)

Jaime : eeee, a mi me funciono ayer... lo juro por Carmack y por que no saque ningun juego mas de violencia sin sentido jamas

Narrador : (cientos de intentos despues se le ocurre mirar man de rename en la gentoo)

Jaime : JODER!!! es distinto al de debian

Narrador : (Jaime con ganas de llorar, Pedro le arrebata el teclado lee un poco el rename de gentoo y dice...)

Pedro : Si es mas facil rename "texto_a_reemplazar" "texto_reemplazado" *.txt

Narrador : (Logicamente funciono... asi que Jaime dandose de cabezazos jura que a partir de ahora probara las cosas en el equipo de presentacion antes de tirarse un moco como tal :D)

FIN

Vuelta a la normalidad avatares en gaim

Seguro que desde hace la hueva que se pueden utilizar avatares en gaim, pero como yo soy un cazurro de narices me di cuenta hace poquito.
Por ahora solo he visto para cambiar las de las cuentas de msn, pero es bien sencillo, nos diseñamos un avatar tan potito como este :


Ya se que no os va a quedar igual ... es que uno es un dandi ;)

Abrimos gaim y seleccionamos herramientas / cuentas.

Seleccionamos la cuenta msn a la que queremos meter el avatar.

Y donde pone icono de amigo, pulsamos abrir y seleccionamos nuestro maravilloso avatar.

Si alguien sabe como meter el avatar para jabber dentro de gaim que me lo haga saber. Que yo npi.

Espero que os haya servido de alguna utilidad (no hay nada mas importante que dar buena imagen en la red ;)

jueves, abril 13, 2006

Requiem

Ayer por la noche murio mi tia abuela Juanita. Una mujer que siempre nos quiso a todos, ayudaba a sus vecinos, sobrevivio a la guerra civil, siempre tenia buen comer y la verda, era muy coqueta.

Ella siempre rezaba por mi, yo soy ateo nunca se lo dije para no darla el disgusto, pero ahora que se ha ido ya nadie rezara por mi.

Tia espero que me equivoque, que exista dios y que hayas pasado a una mejor vida por que si alguien en el mundo se la merece eres tu.

La vida es una treta para que todos acabemos en el mismo sitio, a veces damos importancia a cosas que no las tienen y desde luego es corta de cojones.

domingo, abril 02, 2006

Sollozos con gentoo o el problema al actualizar a Xorg 7.0

Niños y niñas, leidis an yendermans, giks and giikas...

Soy vuestro buen amigo moz y hoy vamos a aprender la diferencia entre sacrificar horas de tu vida para compilar un sistema inestable de forma cazurra y pensar las cosas... :P

Si no te quieres leer todo esta historieta la forma rapida seria algo asin:

Problemas al actualizar el sistema por que no te encuentra -lGL, -lGLU, -lGLUT o el include glxproto.h?. Es posible que sea por que te intenta instalar un paquete (xorg-server en mi caso) antes que las nvidia-glx (o lo que sea lo que utilizan los usuarios de ati), pues bien

meter esto en el make.conf

INPUT_DEVICES="keyboard mouse"
VIDEO_CARDS="nv nvidia vesa"


y emerge con una pequeña actualizacion del entorno (por si fuera vuestra primera instalacion con drivers de nvidia)

# emerge -Ova nvidia-glx
# eselect opengl set nvidia
# env-update
# emerge -va world


Si todavia teneis problemas con alguna de ellas probrar a hacer lo siguiente

# LIBRARY_PATH=/usr/X11R6/lib/
# env-update
# emerge -va world


La historia que sigue a continuacion esta basada en echos reales, los nombres no han sido ocultados para mostrar lo ceporra que puede ser la gente.... niños no consumais drogas que hay pocas y somos muchos.

AVISO : He puesto casi todo de memoria si teneis algun problema por que no funciona algo postearlo y lo resolvere segun pueda...




Bueno, todo empezo hace una semana, se acercaba la arousa party y habia que tener el sistema lo mas actualizado posible (es la forma de alardear de los frikis informaticos parecido al rebuznar de los asnos para atraer a las hembras asnas, solo que en el caso de los frikis informaticos no hay hembras para seducir).

Despues de mandarnos un par de mails los goleguillas que vamos, y eso me lleva a decir que yo fui el precursor de la idea, para que tuvieramos el sistema estable he instalado y asi poder tirarno, toda la party jugando (cosa que jamas ocurre...) bueno pos resulto que para mi alegria y algorozo todo el mundo lo tenia actualizado (menos yo), despues de mis batallas anteriores con el emerge world las cuales terminaron con dominio total del hombre sobre la maldita maquina (con algun sollozo y cara de haber envejecido prematuramente) me dispuse a actualizar mi sistema, pense que despues de la ultima trifulca el resultado seria un ¡¡¡toma ja puta, te he actualizado sin problemas!!! y no....

# emerge sync
# emerge portage
# emerge -va world


Empezaron a darme problemas algunos paquetes innecesarios como las xorg-server, ... quieto parao. Eso es lo que me permite ver mi apreciado porno, digo... las maravillosas noticias de barrapunto y jugar a mis juegos de violencia sin sentido, digo... compilar aplicaciones y enriquecer mi espiritu gnu... Bueno no te alarmes moz, seguro que si no compilo fue por un problema raro, haz otro sync y vuelve a empezar

(no era un problema raro, no encontraba el include glxproto.h, pero claro yo segui compilandolo una y otra vez)

# emerge sync
# emerge -va world


No puede ser... otra vez lo mismo seguro que si lo vuelvo a intentar (ley principal de la estupided moz, Si no funciona la primera vez puede que la 40 funcione, y de verda tios, si no funciona no sigais haciendo lo mismo o lo unico que conseguiras sera quemarte mas aun)

40 emerges despues de lo mismo y con los mismos resultados hice lo que hago cuando no me funciona algo en linux, ponerme a llorar.

Llame al genio de la lampara (aka forero aka ipconfig), el resultado de la llamada fue.

- Seguro que se te ha instalado mal el portage y prueba reinstalarlo
- o las glibc
- o el gcc
- o utiliza el --deep
- o las USES que usas (esto se lo dije yo XD)

Bueno, los resultados de llamar al genio a preguntar siempre son los mismos, es una persona como yo, en vez de hacerme caso busca en su corrupto ser alguna respuesta que le apetedca para que deje de darle la brasa...

40 emerges despues variando world con --deep con glibc gcc quitando uses el caso seguia igual

Empece a razonar (raro en mi) si le falta un include donde estara... llamandose glxproto.h lo buscare por inet a ver que sale... y encontre una maravillosisima pagina que te explicaba como poner en tu sistema las Xorg 7.0 y bastante actual para mi asombro... la verda es que no me ayudo en mucho para mi problema pero leyendola aprendi un par de cosas asi que os dejo el link para los aburridos que no tengan nada mejor que hacer:

futuro link a la pagina de wikihowtoxorgmodular

una de ellas meter esto en el make.conf

INPUT_DEVICES="keyboard mouse"
VIDEO_CARDS="nv nvidia vesa"


Despues de descubrir que internet es una mierda cuando mas lo necesitas y que si buscas tetas en google te saca 100000000000000000 de resultados con tetas de verdad y si pones glxproto.h te sacan divagaciones de gente que no tiene nada mejor que hacer que poner paridas en la red, mese ocurrio (si mese) que podria estar directamente relaccionado con nvidia-glx (soy un sherlok holmes en potencia), mire la ayuda del emerge para ver si habia alguna forma de pasarse por el forro de los cojones las dependencias y asi lo encontre -O .

# emerge -Ova nvidia-glx
# eselect opengl set nvidia
# env-update
# emerge -va xorg-server


y milagrosamente funciono, (el eselect y el env-update es posible que no os haga falta si teniais el sistema con nvidia anteriormente instalao, pero por si las flys)

Too contento emergee el world

# emerge sync
# emerge world


y me empezo a dar problemas en algunos paquetes de que no encontraba -lGL y alguna mas que no recuerdo

Blender, buah, ya lo instalare despues

# emerge -C blender

Fileroller, (este a dia de hoy me sigue sin instalar) paque, me lo desinstalo y paso a otro (con lo divertido que es descomprimir desde la terminal... )

# emerge -C file-roller

y asi varios mas...

Me instale unas xlight y poco mas pero ya todo funciono, claro, menos los paquetes que me daban los errores de -lGL...

Otra vez mi estupidez me llevo a compilarlos una y otra ve y a buscar por inet....

Bueno despues de desesperarme un poquito mas me mire la ayuda de gcc a ver que leches era eso de -lGL
-lXXXX utiliza la libreria XXXXX para linkar al compilar....

interesante, por que no las encontrara?

Varios emerges despues de nvidia-kernel. nvidia-glx, opengl volvi a mirar la ayuda de gcc para buscar alguna variable de entorno para establecerle la ruta de las librerias (esto para mas jodienda con mis conocimientos de gcc sabia que existia, pero no se me ocurrio hasta el ultimo momento)

# LIBRARY_PATH=/usr/X11R6/lib/
# env-update
# emerge -va blender


y too correcto...

En resumen, piensa y razona antes de liarte a hacer emerges, no hagas como yo :D

Salud3!

domingo, marzo 05, 2006

Grabar dvds de datos desde la linea de comandos

Es el primer sh que programo que tiene mas de dos lineas asi que espero que seais comprensivos por mi cutre forma de programarlo....

Casi todo lo he deducido de otros scripts de gentoo y alguna instalacion con sh de por ahi.

Salud3!


#!/bin/sh
# Basicamente es grabar dvds a partir de estos dos comandos :
# mkisofs -joliet-long -allow-lowercase -allow-multidot -volid DATADVD -o datadvd.iso dvd
# cdrecord -v -dao -dummy speed=4 dev=/dev/cdroms/cdrom0 datadvd.iso
#
# Usalo bajo tu resposabilidad etc, etc...
#
# Exits :
#    0, Todo OK
#    1, iso existente y no queremos borrarlo
#    2, parametro desconocido
#

VERSION="Alpha"

MKI_NOM_LARGOS="-joliet-long"
MKI_NOM_MINUS="-allow-lowercase"
MKI_NOM_VARIOS_PUNTOS="-allow-multidot"
MKI_VOLID="DATADVD"
MKI_ISO="$HOME/datadvd.iso"
MKI_DIR_DATOS="$HOME/dvd"

DEV_GRABADORA="/dev/dvdrw"
NUM_COPIAS=1
SOLO_PROBAR="-dummy"
VELOCIDAD="4"
BORRAR_ISO="N"
ABRIR_BANDEJA="N"

WIZARD="ASK"
TIPO_COPIA=0

fncHelp () {
    echo "Moz Grabame un DVD please v.$VERSION"
    echo "Realizado por moz667 at gmail dot com"
    echo "Gracias infinitas a todo la finka linux"
    echo ""
    echo "Modo de uso :"
    echo "    moz-graba-dvds.sh [-h] [-t Numero] [Parametros extra]"
    echo ""
    echo "1) Parametros basicos"
    echo "    --help, -h : Imprime esta ayuda"
    echo "    --tipo Numero, -t Numero: tipo de grabacion"
    echo "        1 : DVD para casi todos los reproductores de DIVX"
    echo "        2 : DVD backup (nombres largos, minusculas, espacios, etc...)"
    echo ""
    echo "        N : Proximamente... (DVD Pelicula, DVD copy, DVD PS2... lo que vaya copiando)"
    echo ""
    echo "2) Parametros extra"
    echo "    --no-joilet-long, -njl : NO permite nombres largos (joilet)"
    echo "    --no-allow-lowercase, -nal : NO permitir minusculas"
    echo "    --no-allow-multidot, -nam : NO permitir varios puntos en los nombres"
    echo "    --max-iso9660-filenames, -mif : OBLIGAR compatibilidad de nombres iso9660 esto siginifica que omite los tres anteriores"
    echo "    --volid Nombre, -vi Nombre : etiqueta del dvd. [$MKI_VOLID]"
    echo "    --iso-name Nombre, -in Nombre : nombre de la imagen a generar. [$MKI_ISO]"
    echo "    --data-dir Directorio, -dd Directorio : nombre del directorio con datos. [$MKI_DIR_DATOS]"
    echo "    --dev-writer Dispositivo, -dw Dispositivo : nombre del dispositivo grabador. [$DEV_GRABADORA]"
    echo "    --num-copys Numero, -nc Numero : numero de copias a hacer con la imagen. [$NUM_COPIAS]"
    echo "    --no-dummy, -nd : NO probar (hasta que no este bastante probado el script por defecto solo prueba"
    echo "    --speed Numero, -s Numero : Velocidad de grabacion. [$VELOCIDAD]"
    echo "    --rm-iso, -rs : Borrar imagen despues de la grabacion. [No]"
    echo "    --eject, -e : Abrir bandeja de la grabadora automaticamente. [No]"
    echo "    --wizard, -w : Iniciar el asistente automaticamente. [Pregunta si lo deseamos iniciar]"
    echo "    --no-wizard, -nw : No iniciar el asistente automaticamente ni preguntar. [Pregunta si lo deseamos iniciar]"
    echo ""
    exit 0
}

fncTipoCopia() {
    case "$TIPO_COPIA" in
        1)
            MKI_NOM_LARGOS="-max-iso9660-filenames"
            MKI_NOM_MINUS=""
            MKI_NOM_VARIOS_PUNTOS=""
        ;;
        2)
            MKI_NOM_LARGOS="-joliet-long"
            MKI_NOM_MINUS="-allow-lowercase"
            MKI_NOM_VARIOS_PUNTOS="-allow-multidot"
        ;;
        *)
        ;;        
    esac
}

# Lectura de parametros :
while true
do
    case "$1" in
    -h | --help)
        fncHelp
        exit 0
        ;;
    --tipo | -t)
        TIPO_COPIA=${2:-.}
        shift 2
        fncTipoCopia
        ;;
    --no-joilet-long | -njl)
        MKI_NOM_LARGOS=""
        shift
        ;;
    --no-allow-lowercase | -nal)
        MKI_NOM_MINUS=""
        shift
        ;;
    --no-allow-multidot | -nam)
        MKI_NOM_VARIOS_PUNTOS=""
        shift
        ;;
    --max-iso9660-filenames | -mif)
        MKI_NOM_LARGOS="-max-iso9660-filenames"
        MKI_NOM_MINUS=""
        MKI_NOM_VARIOS_PUNTOS=""
        shift
        ;;
    --no-dummy | -nd)
        SOLO_PROBAR=""
        shift
        ;;
    --rm-iso | -rs)
        BORRAR_ISO="Y"
        shift
        ;;
    --eject | -e)
        ABRIR_BANDEJA="Y"
        shift
        ;;
    --wizard | -w)
        WIZARD="AUTO"
        shift
        ;;
    --no-wizard | -nw)
        WIZARD="NO"
        shift
        ;;
    --volid | -vi)
        MKI_VOLID=${2:-.}
        shift 2
        ;;
    --iso-name | -in)
        MKI_ISO=${2:-.}
        shift 2
        ;;
    --data-dir | -dd)
        MKI_DIR_DATOS=${2:-.}
        shift 2
        ;;
    --dev-writer | -dw)
        DEV_GRABADORA=${2:-.}
        shift 2
        ;;
    --num-copys | -nc)
        NUM_COPIAS=${2:-.}
        shift 2
        ;;
    --speed | -s)
        VELOCIDAD=${2:-.}
        shift 2
        ;;
    -*)
        echo "Parametro desconocido : $1"
        echo ""
        fncHelp
        exit 2
        ;;
    *)
        break ;;
    esac
done

if test x"$WIZARD" = xASK; then
    echo "Iniciar el asistente de copia [Y/n] : "
    read yn
    echo ""
elif test x"$WIZARD" = xNO; then
    yn="N"
else
    yn="Y"
fi

if test x"$yn" = x -o x"$yn" = xy -o x"$yn" = xY; then
    # maravilloso wizard :
    echo "Iniciando maravilloso asistente..."
    echo ""
    echo "Permitir nombres largos (joilet) [Y/n] : "
    read yn
    if test x"$yn" = xn -o x"$yn" = xN; then
        MKI_NOM_LARGOS=""
    else
        # para evitar problemas con el max-iso9660
        MKI_NOM_LARGOS="-joliet-long"
        MKI_NOM_MINUS="-allow-lowercase"
        MKI_NOM_VARIOS_PUNTOS="-allow-multidot"
    fi
    
    echo "Permitir minusculas [Y/n] : "
    read yn
    if test x"$yn" = xn -o x"$yn" = xN; then
        MKI_NOM_MINUS=""
    fi

    echo "Permitir varios puntos en los nombres de los ficheros [Y/n] : "
    read yn
    if test x"$yn" = xn -o x"$yn" = xN; then
        MKI_NOM_VARIOS_PUNTOS=""
    fi
    
    if test x"$MKI_NOM_MINUS" = x -a x"$MKI_NOM_LARGOS" = x -a x"$MKI_NOM_VARIOS_PUNTOS" = x; then
        MKI_NOM_LARGOS="-max-iso9660-filenames"
        echo "Permitir nombres largos (iso9660) [Y/n] : "
        read yn
        if test x"$yn" = xn -o x"$yn" = xN; then
            MKI_NOM_LARGOS=""
        fi
    fi    
    
    echo "Etiqueta del volumen [$MKI_VOLID] : "
    read yn
    if test x"$yn" != x; then
        MKI_VOLID="$yn"
    fi

    echo "Nombre del archivo de imagen [$MKI_ISO] : "
    read yn
    if test x"$yn" != x; then
        MKI_ISO="$yn"
    fi
    
    echo "Directorio donde se encuentran los datos para grabar [$MKI_DIR_DATOS] : "
    read yn
    if test x"$yn" != x; then
        MKI_DIR_DATOS="$yn"
    fi    

    echo "Dispositivo de grabacion [$DEV_GRABADORA] : "
    read yn
    if test x"$yn" != x; then
        DEV_GRABADORA="$yn"
    fi        
    
    echo "Velocidad de grabacion [$VELOCIDAD] : "
    read yn
    if test x"$yn" != x; then
        VELOCIDAD="$yn"
    fi    


    echo "Numero de copias [$NUM_COPIAS] : "
    read yn
    if test x"$yn" != x; then
        NUM_COPIAS="$yn"
    fi
    
    echo "Borrar imagen al finalizar la grabacion [y/N] : "
    read yn
    if test x"$yn" = xy -o x"$yn" = xY; then
        BORRAR_ISO="Y"
    fi
    
    echo "Abrir la bandeja de la grabadora automaticamente [y/N] : "
    read yn
    if test x"$yn" = xy -o x"$yn" = xY; then
        ABRIR_BANDEJA="Y"
    fi
fi

if test x"$SOLO_PROBAR" = x-dummy; then
    echo "Solo probar (recomendable si no se ha probado antes el script) [Y/n] : "
    read yn
    if test x"$yn" = xn -o x"$yn" = xN; then
        SOLO_PROBAR=""
    fi
fi

if test -e $MKI_ISO; then
    echo "El archivo de imagen '$MKI_ISO' ya existe, desea borrarlo [y/N] : "
    read yn
    if test x"$yn" = xn -o x"$yn" = xN; then
        echo "Desea no generar un nuevo iso y utilizar el existente '$MKI_ISO' [y/N] : "
        read yn
        if test x"$yn" = xn -o x"$yn" = xN; then
            echo "No se puede continuar con el proceso de grabacion."
            echo "Mueva el archivo '$MKI_ISO' o seleccione otro nombre utilizando el asistente."
            exit 1;
        fi
    else
        rm $MKI_ISO
    fi
fi

if test -e $MKI_ISO; then
    echo "No se generara un nuevo archivo iso, utilizando el existente '$MKI_ISO'"
else
    echo "Generando iso..."
    echo "Usando : mkisofs $MKI_NOM_LARGOS $MKI_NOM_MINUS $MKI_NOM_VARIOS_PUNTOS -volid $MKI_VOLID -o $MKI_ISO $MKI_DIR_DATOS"
    mkisofs $MKI_NOM_LARGOS $MKI_NOM_MINUS $MKI_NOM_VARIOS_PUNTOS -volid $MKI_VOLID -o $MKI_ISO $MKI_DIR_DATOS
fi

i=1
while [ "$i" -le "$NUM_COPIAS" ]
do
    if test x"$ABRIR_BANDEJA" = xY; then
        eject $DEV_GRABADORA
    fi

    echo "Mete el dvd virgen en la grabadora y pulsa Intro"
    read yn

    echo "Grabando copia [$i de $NUM_COPIAS]..."
    echo "Usando : cdrecord -v -dao speed=$VELOCIDAD $SOLO_PROBAR dev=$DEV_GRABADORA $MKI_ISO"
    cdrecord -v -dao speed=$VELOCIDAD $SOLO_PROBAR dev=$DEV_GRABADORA $MKI_ISO
    i=$(( $i + 1 ))
done

if test x"$BORRAR_ISO" = xY; then
    rm $MKI_ISO
fi

if test x"$ABRIR_BANDEJA" = xY; then
    eject $DEV_GRABADORA
fi

echo ""
echo "Proceso finalizado!!!"
echo "Esperamos que haya sido de su agrado!!!"
echo ""

miércoles, febrero 08, 2006

Otro mail del pedro - Linea de comandos en linux

Este mail es anterior al de dts con mplayer pero lo pongo por que me resulta bastante gracioso, ademas como no tengo contenidos pal blog pos asi relleno.

Salud3!





Hola, soy coco y hoy vamos a aprender un poco sobre la linea de comandos y un par de utilidades:

Empiezo con copy&paste indiscriminado porque primero he escrito la parte de screen y me he cansado ~_^:

Tips de consola (xterm, konsole o lo que sea):

<ctrl> + a # Move cursor to the beginning of the line.
<ctrl> + e # Move cursor to the end of the line.

<alt> + d # Cut the word under the cursor to a buffer.
<ctrl> + y # Insert content of buffer (see <alt> + d).

<ctrl> + u # clears actually typed line from beginning of line to current position
<ctrl> + k # clears actually typed line from current position end of line
<ctrl> + w # Deletes the word before the cursor or if you are in a word it deletes the beginning of it.

<ctrl> + s # pause console output. The process keeps running.
<ctrl> + q # Resume console output paused with <ctrl> + s

<ctrl> + z # suspend current process and send it into background
# bg
# If the program should run in background, you'll have to "unsuspend" it with `bg

# fg
# to get the program back to foreground

<ctrl> + r # To get reverse pattern search in your last used commands. Then type in what you are looking for. This function is "search as you type". To cycle through the found commands, press
<ctrl>+r continuously.

<ctrl> + l # Will clear the whole display,


Para Palomín que está ripeando mucho últimamente. Para ver la info de videos y demás zarandajas:


Versión kutre, file:

Ejemplo1:

# file /mnt/datos/Peliculas/Doom\ UNRATED\ -\ VOSE\ -\ CD1.avi
/mnt/datos/Peliculas/Doom UNRATED - VOSE - CD1.avi: RIFF
(little-endian) data, AVI, 720 x 304, 23.98 fps, video: XviD, audio:
Dolby AC3 (6 channels, 48000 Hz)


Ejemplo2:

# file /mnt/datos/Peliculas/Entre\ Copas.img
/mnt/datos/Peliculas/Entre Copas.img: ISO 9660 CD-ROM filesystem data
'ENTRE_COPAS'


Cojo-versión, midentify:

Ejemplo1:

# midentify /mnt/datos/Peliculas/Entre\ Copas.img
ID_AUDIO_ID=129
ID_AUDIO_ID=128
ID_AUDIO_ID=130
ID_AUDIO_ID=131
ID_AUDIO_ID=23


Ejemplo2:


# midentify /mnt/datos/Peliculas/Doom\ UNRATED\ -\ VOSE\ -\ CD1.avi
ID_VIDEO_ID=0
ID_AUDIO_ID=1
ID_FILE_SUB_ID=0
ID_FILE_SUB_FILENAME=/mnt/datos/Peliculas/Doom UNRATED - VOSE - CD1.srt
ID_FILENAME="/mnt/datos/Peliculas/Doom UNRATED - VOSE - CD1.avi"
ID_VIDEO_FORMAT=XVID
ID_VIDEO_BITRATE=1116360
ID_VIDEO_WIDTH=720
ID_VIDEO_HEIGHT=304
ID_VIDEO_FPS=23.976
ID_VIDEO_ASPECT=0.0000
ID_AUDIO_CODEC=hwac3
ID_AUDIO_FORMAT=8192
ID_AUDIO_BITRATE=448000
ID_AUDIO_RATE=48000
ID_AUDIO_NCH=2
ID_LENGTH=3736


Screen:

Es un programita que te permite tener dentro de una terminal muchas terminales. Además puedes desconectarte o cerrar sesión o lo que te salga de las pelotas y screen seguirá kurrando hasta que vuelvas ^_^.

Esto es tremendamente util para conectarte por ssh si tienes un proceso corriendo y no quieres que se corte cuando reinicies las X.

En bulma hay un kutre manual que no vale ni para tomar por kulo, pero os lo dejo por si no pillais mi prosa ~_^:

http://bulma.net/body.phtml?nIdNoticia=1120

1º lo instalamos: apt-get / emerge screen

Y lo ejecutamos desde un terminal:


tarugo@mimakinamola $ screen


Ya estamos dentro de screen, ahora os digo unas teclas últiles para moveros por las terminales:

Lo explico para lerdos: Presionamos control + a y luego la tecla que nos interese xDDD


<ctrl> +a + c # Crea un nuevo terminal
<ctrl> +a + n # Vamos al siguiente terminal
<ctrl> +a + p # Vamos al anterior terminal
<ctrl> +a + nº # Vamos a ese número de terminal
<ctrl> +a + " # Lista las terminales que tengamos abiertas dentro del screen
<ctrl> +a + d # Salimos de screen, pero los terminales siguen ahí esperando que volvamos. De hecho esperando no es correcto, porque siguen igual que antes.
<ctrl> +a + ? # La consabida ayuda


Para volver a la sesión de screen que teníamos abierta y de la que nos habíamos ido, volvemos con:

tarugo@mimakinamola $ screen -r


Pero si no la hemos cerrado y queremos que, estando abierta en otro lado acceder e todas formas lo hacemos con:

tarugo@mimakinamola $ screen -x


De hecho esto es muy util para que puedas manejar las sesiones desde distintios sitios a la vez.

Ejemplo:

Moz se ha vuelto a cargar el soporte para grabadora en su ordenador, y yo estoy hasta las pelotas de que el chaval no se implique y no aprenda. ¿que hacer?


## Me conecto por ssh y ejecuto screen:

el_puto_amo@maquina_del_puto_amo $ ssh -l moz moz.servebeer.com
moz@maquina_de_moz $ screen

## Me creo una terminal:

<ctrl> +a + c

## Empiezo a bajarme su porno y juankearle el mplayer para que cualquier video que vea se lo mande por email a su madre

maquina_de_moz # scp $(find / -iname *.mpg) \ el_puto_amo@maquina_del_puto_amo:/mnt/cosas_conseuidas_ilicitamente/

## Ahora el super-juankeo xDDDDD

moz@maquina_de_moz $ su
moz@maquina_de_moz $ mv /usr/bin/mplayer /usb/bin/mplayer_old
moz@maquina_de_moz $ touch /usr/bin/mplayer
moz@maquina_de_moz $ echo "#!/bin/sh" > /usr/bin/mplayer
moz@maquina_de_moz $ /usr/bin/mplayer_old "$1"
moz@maquina_de_moz $ mail -s "Esto es lo que hace tu hijo" \ mami_de_moz@hotmail.com < "$1"
moz@maquina_de_moz $ chmod 777 /usr/bin/mplayer

## Creo un tercer terminal y sigo haciendo el mal

<ctrl> +a + c

## Empiezo una escabechina!!!
moz@maquina_de_moz $ su
moz@maquina_de_moz $ rm -Rf $(find / -iname *.jpg)

## Mientras mis malvados actos se desarrollan, le llamo y le digo que habra un terminal y ejecute:

moz@maquina_de_moz $ screen -x

## Ahora iré a la primera terminal para fingir que intento arreglarselo
<ctrl> +a +0

## Mwajajajajaja!!!


PD: Tengo que dejar de leer tiras de Raulito xDDDDD

martes, febrero 07, 2006

MPlayer con dts

Ayer recibi un correo de mi colega pedro explicandome como poner dts en mplayer, aqui os dejo el contenido del email pal que pueda interesar.

Ya tocaba y hoy por fin he realizado un par de busquedas en google.

Pero vamos, no te hagas muchas ilusiones porque lo que a mi me gusta es que el mplayer se esté quietecito y le deje el kurro al ampli ^_^

Te paso la poca info que he visto por si te sirve de ayuda:

libdca - a free DTS Coherent Acoustics decoder.

Es lo que usa el mplayer y el ffmpeg cuando tienen que decodificarlo. Pero dicen que está verde todavía.

Creo que la USE de gentoo corresponde a este codec, pero no lo he comprobado.

Los parametros que hay que pasarle para escucharlo. No sé si tambien valdrá para extraerlo. Espero que sí

To enable passthrough on the command line:
* For AC3 only, use -ac hwac3
* For DTS only, use -ac hwdts
* For both AC3 and DTS, use -afm hwac3

To enable passthrough in the MPlayer configuration file:
* For AC3 only, use ac=hwac3,
* For DTS only, use ac=hwdts,
* For both AC3 and DTS, use afm=hwac3

Sacado de la peich de mplayer


Saluditos!


domingo, febrero 05, 2006

Comandos en linux (para gentoo)

Estos comandos son cosillas que voy aprendiendo en mi viaje hace los conocimiento linuxerescos, logicamente como buen noob tendran fallos y habra mejores formas de hacerlo asi que no me hago responsable de que se os pete el ordenador ni cosas parecidas. Os puede orientar a los que como yo llevais poco tiempo con estos maravillosos sistemas, pero os recomiendo que antes de hacer alguna cosa de las que acontinuacion resumo os empolleis el man de cada comando y reviseis las opciones.

Salud3!

Añadir al usuario moz667 al grupo games

$ gpasswd -a moz667 games

Arrancar el doom con una config

$ doom3 +set in_tty 0 +set sys_videoRam 256

Problema de sonido en quake 3, oss
Solucionado con la nueva version compilada
(¡gracias o dios Carmack por liberar el quake 3!)

$echo "quake3.x86 0 0 direct" > /proc/asound/card0/pcm0p/oss

Asignar dhcp a eth1

$ dhcpcd eth1

Grabar un iso

$ cdrecord -v -dao speed=1 dev=/dev/cdroms/cdrom0 name.iso

Montar una unidad de windows con samba

$ mount -t smbfs -o username=windowsuser,password=lapassword //Maquinawindows/DirectorioCompartido /mnt/directoriopamontar/

$ smbmount //Maquinawindows/DirectorioCompartido /mnt/directoriopamontar/

Crear una iso desde un cd/dvd

$ growisofs -Z /dev/dvdrw=nombrefichero.iso

Grabar una iso

$ cdrecord-wrapper.sh -v -dao speed=1 dev=/dev/cdroms/cdrom0 fichero.iso
$ cdrecord -v -dao speed=4 dev=/dev/cdroms/cdrom0 fichero.iso

Nota : -dummy para probar sin copiar y no joder asi muchos dvds

Crear una iso a partri de un directorio que se llame dvd

$ mkisofs -max-iso9660-filenames -volid NARUTO -o naruto2.iso dvd/*
$ mkisofs -joliet-long -allow-lowercase -allow-multidot -volid NOMBREDELVOLUMEN -o fichero.iso dvd/*

Parametros del hdparm para la grabadora

$ hdparm -d1 -X sdma1 /dev/hdc

Buscar un archivo con find (mejor con slocate)

$ find /etc -iname '._cfg????_*'

Nota : Este ejemplo ademas es para buscar ficheros de configuracion que te falten por actualizar en gentoo (el etc-update funciona mu bien)

Montar una iso en /mnt/cdrom/

$ mount -o loop fichero.iso /mnt/cdrom/

Arrancar el everquest y que no te parchee

$ cedega eqgame.exe patchme

Permisos y propietarios

$ chmod 700 [directorio o fichero] -R
$ chown usuario:grupo [directorio o fichero] -R

Nota : -R para hacer recursion en subdirectorios

Para hacer un emerge world

$ emerge sync
$ emerge portage
$ emerge world
$ ect-update

Mas o menos con esto valdria.

grep con expresiones regulares

$ egrep 'hola|adiós' *

Nota : busca en los ficheros del directorio actual archivos que contengan hola o adiós

Para montar imagenes con cue

$ modprobe cdemu
$ cdemu 0 file.cue
$ mount -t iso9660 /dev/cdemu0 /mnt/cdrom

Para desmontarlas cues y quitar el modulo

$ umount /mnt/cdrom
$ cdemu -u 0
$ rmmod cdemu

Reproducir un asx desde mplayer

$ mplayer -playlist http://64.12.46.210/thewb/us/content/mJc3Y2_SM513-trl_300.asx