Virtualbox y Dispositivos USB.

GNU/Linux No Comments

Resulta que al usar Virtualbox con dispositivos USB, la maquina virtual (un windows xp, en mi caso) se apoderaba de mi memoria USB, lo que quiero decir es que, después de usar mi memoria USB en la maquina virtual no había forma de volver a trabajar con ella en Gentoo (maquina host), tenía forzosamente que apagar la maquina virtual y volver a re-conectar la memoria al puerto para que GNOME la auto-montara y pudiera trabajar tranquilamente.

Investigando un poco, dí con un mensaje en los foros de ubuntu (se!, ubuntu) que sugiere una solución al topic que se trataba en ese foro (que no es exactamente el problema que tengo) y entonces, se me ocurrió probarlo y funciona!. El mensaje dice:

[..............]

Con respecto al error de los USB’s, tengo entendido que es un problema actual del VirtualBox con el manejo de dispositivos USB en general, yo tengo el mismo problema y todavía no lo he logrado solucionar, pero te recomiendo que compartas carpetas entre tu maquina virtual y tu Ubuntu, yo tengo compartida la carpeta /media y así se montan las memorias usb que conecto. Revisate bien la documentación que trae el VirtualBox, esta muy claro, si no puedes avisame e intentaré explicartelo mejor.

[..............]

La solución temporal es esa, digo temporal, porque la forma correcta es que al desactivar el dispositivo en Virtualbox, éste, debería de pasar el control al host y no impedir su funcionamiento. Entonces, vamos a la configuración de la maquina virtual y en Directorios Compartidos, agregamos la carpeta /media, quedando:

Configuración de directorios compartidas.

Configuración de directorios compartidas.

Además desactivamos el filtro correspondiente a la memoria usb en la sección USB de la configuración, para que al momento de conectar el dispositivo al puerto (cuando la maquina virtual esté encendida) no la reconozca (la finalidad no es perder el soporte de virtualización de los dispositivos USB, por lo que filtramos sólo los dispositivos que nos interese. Por ejemplo, una webcam por USB no se puede compartir xD).

Filtros de dispositivos USB

Filtros de dispositivos USB

Ya hemos hecho el trabajo sucio y vamos a acceder a nuestra memoria usb desde la maquina virtual. Encendemos la maquina y para acceder nos dirigimos a Mis sitios de red > Toda la red > VirtualBox Shared Folders y desde ahí podremos acceder a todos los dispositivos montados en /media en nuestra maquina host.

Directorio compartido.

Directorio compartido.

Nota: Aún no se exactamente como trabaja respecto a los permisos, supongo que toma los permisos del usuario que ejecuta la maquina virtual (soullost, en mi caso). Por ejemplo, ya he probado y puedo editar los archivos en la memoria desde la maquina virtual. En mi caso, por medio de udev me monta las memorias usb con los siguientes permisos en /media:

soullost@UnderHouse ~ $ ls -lh /media
total 16K
drwxr-xr-x 27 soullost root 16K dic 31  1969 JORGE

Nos vemos.

Califica el tema:
1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading ... Loading ...

Usuarios de Gentoo en el mundo!

Gentoo 3 Comments

Gentoo GNU/Linux

En los foros de gentoo me encuentro con un tema sobre un nuevo proyecto bastante interesante. En Gentoo-user.org, con ayuda del API de Google Maps, se pueden localizar los usuarios de Gentoo regados por todo el mundo!. Si quieres dejar tu huella, basta con registrarse y llenar tu perfil con la correspondiente nacionalidad.

Datos curiosos que he observado:

- Hay hasta el momento sólo 3 usuarios de México (contando conmigo).

- El país con más usuarios hasta el momento es España (19 perfiles).

- Por ahora, hay un total de 80 perfiles creados.

- No sólo los usuarios de gentoo pueden registrarse, existen perfiles del tipo: Desarrollador, Traductor, Deseando utilizar algún día y Odiando a Gentoo.

Yo estaré revisando la página web para ver que nuevos datos interesantes voy encontrando, a todos los compatriotas (aprovechando el mes patrio), les recomiendo registrarse para tener presencia! :D .

Califica el tema:
1 Star2 Stars3 Stars4 Stars5 Stars (3 votes, average: 5 out of 5)
Loading ... Loading ...

Programar en ensamblador con TASM en Doxbox

GNU/Linux, Lenguaje Ensamblador, Programación 4 Comments

Dosbox

Resulta que a pesar de tener alternativas libres y más actualizadas para trabajar en lenguaje ensamblador (sintaxis de Intel), en la universidad, nos piden que trabajemos con TASM. Quiero creer que es porque el laboratorio que se asignó para la materia tiene computadoras IBM PC (no sé exactamente el modelo pero, creo son del año en que nací) bastante viejas con un flamante Windows 98. El caso es que, era una tontería (al menos para mi) arrancar la maquina virtual de Windows XP para trabajar en TASM, así que, terminé instalando TASM en Dosbox :P .

Dosbox según Wikipedia
:

DOSBox es un emulador que recrea un entorno similar al sistema DOS con el objetivo de poder ejecutar programas y videojuegos originalmente escritos para el sistema operativo MS-DOS de Microsoft en ordenadores más modernos o en diferentes arquitecturas (como Macintosh). También permite que estos juegos funcionen en otros sistemas operativos como GNU/Linux.

DOSBox es software libre, y está disponible para muchos sistemas operativos, como Linux, FreeBSD, Windows, Mac OS X, OS/2 y BeOS. Incluso recientemente ha sido adaptado a las consolas portatiles PSP y GP2X.

La versión de Dosbox que estoy utilizando es la 0.72. Cabe destacar que Dosbox utiliza un fichero de configuración que hay que crear con la siguiente instrucción: config -writeconf dosbox.conf, en la línea de comandos del MSDOS al arrancar Dosbox, esto, creará un archivo dosbox.conf en el directorio home de nuestro usuario (/home/soullost, en mi caso). Además del archivo de configuración de Dosbox, otra de las primeras cosas que tenemos que hacer es crear la Unidad C:\, ya qué, Dosbox por defecto sólo cuenta con una unidad virtual llamada Z:\, donde, dispone de los archivos elementales de un ambiente normal de DOS. Para tal motivo contamos con el comando mount, muy al estilo Unix (para más detalles, consultar el Wiki de Dosbox), procedemos a crear la unidad C:\ a partir de un directorio físico de nuestro disco: mount c /home/soullost/dos. Hay que tener en cuenta que el montaje sólo dura hasta que cerremos el programa, podemos, hacer que se cargue automáticamente al iniciar Dosbox mediante su archivo de configuración, especificamente en la sección [autoexec]. Quedando:


[autoexec]
# Lines in this section will be run at startup.
mount c /home/soullost/dos
c:

Ahora si, estamos listos para instalar programas en ambiente DOS. Yo instalé TASM y un IDE para programar en ensamblador:

El IDE Asm Edit lo pueden descargar de la siguiente dirección: http://www.o-love.net/asmedit/ae_down.html. Tiene un ambiente muy parecido al famoso Turbo C++, por lo que, podemos agilizar la tarea de compilar y ejecutar los programas que realizamos (eso de usar comandos para compilar cada programa que se realiza, es muy aburrido, además necesitaba un editor para crear los programas porque Dosbox no dispone de ninguno), también, se puede invocar al turbo debugger desde ahí y regresar al editor cuando terminemos de usarlo. Sólo tuve un único problema al configurar el Asm Edit y es que, los archivos DPMI16BI.OVL y RTM.EXE son incompatibles con la versión que instalé de TASM (5.0), basta entonces, con reemplazarlos por los archivos que se encuentran en la carpeta BIN de TASM (C:\TASM\BIN, no es necesario usar conmandos de DOS, se puede copiar desde nautilus, en caso de GNOME). Aqui algunas capturas de cómo he configurado el IDE:

Hay que cambiar los directorios donde instalamos el TASM (TASM.EXE, TLINK.EXE, TD.EXE). Ojo, para que queden grabadas para la próxima vez que se inicie el programa hay que seleccionar Options > Save [ASMEDIT.DSK]:

También, los directorios donde se guardarán los archivos generados durante la compilación:

Si todo está correcto, puede empezar a ejecutar sus programas en ensamblador:

.

Por último, les dejo mi archivo de configuración de dosbox para ganar un poco de velocidad al ejecutar Asm Edit (ya que se sentía lento, antes de hacer las modificaciones), claro, que he probado y me han funcionado a mi; y, el archivo fuente de Hola, que tal!. que se muestra en las capturas:

Archivo ASM.


;***************************************************************************

; Nombre del programa:   MENSAJE.ASM

;***************************************************************************

; COMANDO DE ENSAMBLE    : MASM MENSAJE;

; COMANDO DE ENLACE      : LINK MENSAJE;

; COMANDO DE EJECUCION   : MENSAJE [Enter]

;***************************************************************************

;

; Define el modelo de memoria

;

     .MODEL    SMALL          		; Modelo de memoria

     .DATA                    		; Segmento de datos

      Mensaje DB 'Hola, que tal !.$' 	; Cadena a desplegar

     .STACK                   		; Se necesita una PILA.

     .CODE                    		; Area de codigo

Empieza:                      ; Etiqueta de comienzo de programa

     mov  Ax, @Data           ; Inicializa DS con la

     mov  Ds, Ax              ; direccion de @Data

     mov  Dx, Offset Mensaje  ; Direccion de Mensaje

     mov  Ah, 9               ; en Dx para poder desplegarlo

     Int  21h                 ; a traves de la Int 21 de MS-DOS.

     mov  ax,4c00h            ; Regresa a MS-DOS por medio de la

     int  21h                 ; funcion 4c.

     END  Empieza             ; Fin del programa

Archivo de configuración: Descargar.

Nos vemos.

Califica el tema:
1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading ... Loading ...

Programas para el control de logs de portage

Gentoo No Comments

A partir de portage 2.1 nos permite tener más control sobre los mensajes que arroja emerge (más en especifico, los ebuilds) con ayuda de elog. Elog nos permite guardar los tipo de mensajes definidos con la variable PORTAGE_ELOG_CLASSES en algún directorio definido por PORT_LOGDIR, esto es de gran ayuda pero, para tener un control (sobre todo si se guardan todos los tipos de mensajes) sobre ellos se vuelve bastante fastidioso, además algunos son irrelevantes, como los de tipo INFO. Aparte los creadores de ebuilds no se ponen de acuerdo, algunos los mensajes relevantes los ponen con “etiqueta” INFO, otro con WARN, etc. y como en todo, no somos adivinos para saber en que tipo de mensaje vienen algo relevante que no tendríamos que pasar por alto.

En la mayoría de las ocasiones cuando actualizo todo el sistema no me quedo a ver como se compilan los programas (aunque muchos dicen que es como poesía xD), así que no estoy en el momento preciso para enterarme de que algún programa (ebuild) arroja un mensaje de que hay que hacer un revdep-rebuild o que algún archivo de configuración cambió. Claro, ahí la importancia de usar elog para ver los mensajes posteriormente, pero imaginen una oleada de 200 paquetes para actualizar, alguien demasiado loco (con muchas paciencia?) podría mirar archivo por archivo en el directorio de logs?. Por eso me puse a investigar sobre programas para el manejos de elogs y encontré, dos programas bastante útiles: Elogv (consola en ncurses) y Elogviewer (gtk+).

Elogv. http://gechi-overlay.sourceforge.net/?page=elogv.

Elogv

Elogv


La alternativa para los que gustan de la consola, permite:

  • Ordenar por fecha.
  • Ordenar alfabéticamente.
  • Ordenar por tipo de mensaje.
  • Buscar.
  • Eliminar elogs.

Elogviewer. http://sourceforge.net/projects/elogviewer/.

Elogviewer

Elogviewer


Similar al anterior, tiene interfaz gráfica para GNOME (gtk+) o KDE. Algo que me incomodó es que por ser una herramienta de portage tienes que ejecutarla como root, para no ir a la consola y ejecutarla desde ahí, podemos hacer una modificación al icono en el menú de GNOME. Vamos a Sistema > Preferencias > Menú principal, en la sección de Herramientas del sistemas (que es donde está el icono de elogviewer), lo seleccionamos y vamos a las propiedades con clic derecho, ahí modificamos de la siguiente forma (anteponiendo gksu al comando):

Menú principal

Menú principal


Propiedades del lanzador

Propiedades del lanzador


De esta forma basta con ejecutarlo desde el lanzador y nos pedirá la contraseña de root (desde el mismo ambiente de GNOME).

Nos vemos.

Califica el tema:
1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading ... Loading ...

NVIDIA y AGP

GNU/Linux, Gentoo 2 Comments

Todo empezó por saber cómo demonios se activaba el soporte de Fast Writes en mi tarjeta Nvidia (nada del otro mundo, Geforce FX 5500 256 MB) y después (se nota que me gusta liarme con estas cosas?) me enteré que se puede usar el soporte AGP del kernel para que reemplace la implementación AGP de las propia Nvidia, aunque realmente, no tengo la menor idea si hay mejora en el rendimiento (en mi caso, es el mismo sin tener Fast Writes activado, ya que con él, mejora), aunque mi testeo ha sido poco.

Hago esto porque he visto muchas dudas al respecto en muchos foros, lo mismo sucede con la posibilidad de habilitar SBA y Fast Writes. Posiblemente piensen que hablo en chino, la descripción al respecto la pueden encontrar acá.

Para empezar hay que saber que chipset’s se llevan con la implementación de Nvidia de AGP (NVAGP), hay un descripción por aqui: ftp://download.nvidia.com/XFree86/Linux-x86/1.0-8174/README/32bit_html/appendix-f.html. Ahí dice que los chispset’s que se llevan bien con NVAGP son las siguientes:

Supported AGP Chipsets
Intel 440LX
Intel 440BX
Intel 440GX
Intel 815 (”Solano”)
Intel 820 (”Camino”)
Intel 830M
Intel 840 (”Carmel”)
Intel 845 (”Brookdale”)
Intel 845G
Intel 850 (”Tehama”)
Intel 855 (”Odem”)
Intel 860 (”Colusa”)
Intel 865G (”Springdale”)
Intel 875P (”Canterwood”)
Intel E7205 (”Granite Bay”)
Intel E7505 (”Placer”)
AMD 751 (”Irongate”)
AMD 761 (”IGD4″)
AMD 762 (”IGD4 MP”)
AMD 8151 (”Lokar”)
VIA 8371
VIA 82C694X
VIA KT133
VIA KT266
VIA KT400
VIA P4M266
VIA P4M266A
VIA P4X400
VIA K8T800
VIA K8N800
VIA PT880
VIA KT880
RCC CNB20LE
RCC 6585HE
Micron SAMDDR (”Samurai”)
Micron SCIDDR (”Scimitar”)
NVIDIA nForce
NVIDIA nForce2
NVIDIA nForce3
ALi 1621
ALi 1631
ALi 1647
ALi 1651
ALi 1671
SiS 630
SiS 633
SiS 635
SiS 645
SiS 646
SiS 648
SiS 648FX
SiS 650
SiS 651
SiS 655
SiS 655FX
SiS 661
SiS 730
SiS 733
SiS 735
SiS 745
SiS 755
ATI RS200M

Para saber que chip tienes ejecuta lo siguiente:

UnderHouse ~ # lspci | grep -i agp
00:01.0 PCI bridge: Intel Corporation 82865G/PE/P PCI to AGP Controller (rev 02)

Como ven yo tengo una Intel 865G que figura en la lista. Pasemos a ver como se activa NVAGP o AGPGART (el módulo de AGP del kernel de linux) si no se encuentra en la lista anterior. Nota: Estos pasos son realizados en Gentoo GNU/Linux, podría ser similares en otras distribuciones, pero, están advertidos.

Activar AGP del kernel de linux con NVIDIA.

Hay que activar AGP en el kernel como módulo (escoge tu chipset correspondiente).

Device Drivers  --->
  Graphics support  --->
    <m> /dev/agpgart (AGP Support)  --->
      <m>   Intel 440LX/BX/GX, I8xx and E7x05 chipset support

Para ver si ya lo tienes integrado:

UnderHouse ~ # modprobe -l | grep -i agp

Si te aparecen la ubicación donde se encuentran los módulos, lo tienes correcto.

En gentoo hay que re-instalar los drivers de NVIDIA para que tomen la dependencia de AGPGART, ya que al parecer revisa la configuración del kernel al compilar. Prueba de esto:

UnderHouse ~ # modinfo nvidia
filename:       /lib/modules/2.6.24-gentoo-r3/video/nvidia.ko
license:        NVIDIA
alias:          char-major-195-*
alias:          pci:v000010DEd*sv*sd*bc03sc02i00*
alias:          pci:v000010DEd*sv*sd*bc03sc00i00*
depends:        agpgart,i2c-core

La línea que describe las dependencias del módulo: depends: agpgart,i2c-core. Por lo que se ha preparado a NVIDIA para usar el AGP del kernel. En otras distribuciones generalmente se hace la instalación mediante el paquete oficial de NVIDIA o mediante el gestor de paquetes de dicha distribución, no sé si funcione igual, pero sería mejor investigar al respecto (aunque modprobe debería funcionar de la misma forma).

Hay que agregar/modificar la siguiente línea en la configuración de Xorg en la sección Device (donde se coloca las opciones de tu tarjeta gráfica).

    Option      "NvAGP"  "2"

Reiniciamos el sistema y el módulo de NVIDIA debería cargar correctamente usando AGPGART:

soullost@UnderHouse ~ $ cat /proc/driver/nvidia/agp/status
Status: 	 Enabled
Driver: 	 AGPGART
AGP Rate: 	 8x
Fast Writes: 	 Disabled
SBA: 		 Enabled
soullost@UnderHouse ~ $ lsmod
Module                  Size  Used by
nvidia               7104708  24
intel_agp              25748  1
agpgart                35016  2 nvidia,intel_agp

Usar NVAGP de NVIDIA.

Si tu chipset se encuentra como compatible con NVAGP, es recomendable usarlo. Para esto hay que desactivar el soporte de AGP en el kernel (en gentoo). En otras distribuciones he visto que se bloquean los módulos al iniciar en /etc/modprobe.d/blacklist o en grub con agp=off (habrá que investigarlo).

En gentoo al compilar sin soporte AGP del kernel, modinfo no nos muestra la dependencia de AGPGART:

UnderHouse ~ # modinfo nvidia
filename:       /lib/modules/2.6.24-gentoo-r3/video/nvidia.ko
license:        NVIDIA
alias:          char-major-195-*
alias:          pci:v000010DEd*sv*sd*bc03sc02i00*
alias:          pci:v000010DEd*sv*sd*bc03sc00i00*
depends:        i2c-core

Por lo que el módulo de NVIDIA implementará su propio driver de AGP. Editar el xorg.conf con la siguiente opción:

    Option      "NvAGP"  "1"

Podemos ver la información de /proc.

soullost@UnderHouse ~ $ cat /proc/driver/nvidia/agp/status
Status: 	 Enabled
Driver: 	 NVIDIA
AGP Rate: 	 8x
Fast Writes: 	 Disabled
SBA: 		 Enabled
UnderHouse ~ # lsmod
Module                  Size  Used by
nvidia               7102020  24

Test de glgears:

soullost@UnderHouse ~ $ glxgears
9382 frames in 5.0 seconds = 1876.342 FPS
9394 frames in 5.0 seconds = 1878.656 FPS
9350 frames in 5.0 seconds = 1869.923 FPS

Activar Fast Writes y SBA.

Antes que nada hay que saber si tenes la posibilidad de habilitarlo, de nuevo, con ayuda de /proc.

soullost@UnderHouse ~ $ cat /proc/driver/nvidia/agp/card
Fast Writes: 	 Supported
SBA: 		 Supported
AGP Rates: 	 8x 4x
Registers: 	 0x1f000e1b:0x1f004312
soullost@UnderHouse ~ $ cat /proc/driver/nvidia/agp/host-bridge
Host Bridge: 	 PCI device 8086:2570
Fast Writes: 	 Supported
SBA: 		 Supported
AGP Rates: 	 8x 4x
Registers: 	 0x1f004a1b:0x00000b12

Correcto, tenemos soportado tanto Fast Writes y SBA tanto en el driver de NVIDIA para mi tarjeta gráfica como por medio del chipset de AGP de mi tarjeta madre (motherboard).

En general para hacer esto hay que pasar las opciones al módulo de NVIDIA, en gentoo, existe la siguiente guía: http://gentoo-wiki.com/HARDWARE_Nvidia_Driver_AGP_FastWrite_and_Side_Band_Addressing, que es bastante enredosa y sobre todo, había cosas que no entendía para que se hacían (prefiero no hacerlas si desconozco). Yo lo que hice fue agregar lo siguiente: NVreg_EnableAGPFW=1 NVreg_EnableAGPSBA=1 al archivo /etc/modprobe.d/nvidia, quedando de la siguiente forma:

alias char-major-195 nvidia
alias /dev/nvidiactl char-major-195

options nvidia NVreg_DeviceFileMode=432 NVreg_DeviceFileUID=0
NVreg_DeviceFileGID=27 NVreg_ModifyDeviceFiles=1 NVreg_EnableAGPFW=1
NVreg_EnableAGPSBA=1

Y hacer un update-modules para re-generar el archivo /etc/modprobe.conf.

update-modules

Si el módulo de NVIDIA se encontraba cargado antes de hacer la modificación, hay que salir del servidor X totalmente (parar GDM) y desactivar el módulo, para después volverlo a cargar (si prefieres no hacerte bolas, reiniciar el sistema xD).

1. Salir de GNOME/KDE/?.
2. Matar KDM/GDM/?.
3. modprobe -r nvidia
4. modprobe nvidia
5. startx

Veremos si ha sido correctamente configurado en /proc.

soullost@UnderHouse ~ $ cat /proc/driver/nvidia/agp/status
Status: 	 Enabled
Driver: 	 NVIDIA
AGP Rate: 	 8x
Fast Writes: 	 Enabled
SBA: 		 Enabled

Parece que es todo, nos vemos.

Califica el tema:
1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading ... Loading ...

« Previous Entries