Sistemas operativos en el espacio de usuario: vx32 y 9vx (2ª parte)

By | October 11, 2008

Dónde obtener 9vx

En el artículo anterior anunciamos la aparición de una distribución del sistema operativo Plan 9 de Bell Labs que podia correr como un proceso de usuario, siendo a todos los efectos un sistema operativo invitado en GNU/Linux, FreeBSD o MacOS X, gracias a la capa de emulacion de las librerías vx32.

La distribución junto con los binarios se encuentran en http://swtch.com/9vx/

[Actualización 9 Marzo 2011]:

Copias más actualizadas se encuentran en los repositorios de mercurial:

https://bitbucket.org/yiyus/vx32/

https://bitbucket.org/rminnich/vx32/

Se recomienda la última. En el futuro acabará siendo integrada en la versión de Russ Cox.

hg clone https://bitbucket.org/rminnich/vx32

Instalación de 9vx

A todo aquel que haya intentado instalarlo, puede haberse encontrado con algunos problemas. Uno de ellos era que la distribución no contenia todos los ficheros que trae el CD de instalación de Plan 9 original, ocasionando por ejemplo que pull, el script que podemos lanzar para actualizar en línea Plan 9, fallaría al no encontrar el archivo plan9.db que contiene la lista de ficheros.

Russ Cox, el creador de 9vx, informaba en la lista de 9fans, sobre esto:

If you give 9vx a full Plan 9 distribution, you can use
pull to update it just like any other distribution.

Early copies of 9vx had a /dist/replica/client/plan9.db
but it didn't match all the files I'd deleted to cut the
size of the archive down.  In 0.12 I deleted the plan9.db
too, so that pull wouldn't try to run.

If you want to run pull, you should start with a full tree.
I have posted one at http://pdos.csail.mit.edu/~rsc/plan9.tar.bz2
You should be able to run pull successfully if you use
that tree as your root.

You can also start with a stock Plan 9 CD, if you know how
to extract it into your local file system, but you will need
to populate /dist/replica/client appropriately and also
copy /dist/replica/network from a 9vx tree, since I haven't
gotten those changes back into the distribution yet.

En resumen, cuenta que 9vx podría usar una distribución completa de Plan 9, en lugar de la recortada, con la que podriamos volver a utilizar pull para actualizar.

Tenemos 2 opciones para poder hacerlo.

  1. Usar una copia del “árbol completo” publicada aqui: http://pdos.csail.mit.edu/~rsc/plan9.tar.bz2
  2. Usar el CD de plan9 original http://plan9.bell-labs.com/plan9/ pero teniendo en cuenta que habría que tener un /dist/replica/client apropiado y copiar /dist/replica/network de la distribución de 9vx (la del paso 1, o el artículo anterior, por ejemplo).

Llegados a este punto,  en mi caso opté por la opción 1, y me encontré que al descomprimir el fichero con tar en  Debian GNU/Linux los permisos de los ficheros no eran correctos, lo cual da posteriormente problemas al ejecutar Plan9 con 9vx.

La solución es descomprimirlo con bsdtar (apt-get install bsdtar), o con la versión de tar incluida en plan9port (p9p).

P9P o Plan 9 from User Space es un conjunto de utilidades y comandos de plan9 para sistemas GNU/Linux, *BSD, SunOS o Mac OS X. Con estas herramientas no habrá problemas de permisos de ficheros al descomprimir con:

 

$ 9 bunzip2 < plan9.tar.bz2 | 9 tar xv

 

Y por fin podemos ejecutar Plan9 como proceso de usuario con:

9vx.Linux -u glenda

 

Nota:

Como comentario adicional, Andrey Mirtchovski publicó en la lista de correo de 9fans (http://plan9.bell-labs.com/wiki/plan9/mailing_lists/) la manera de descomprimirlo con GNU tar (el que suelen traer las distribuciones GNU/Linux).

 

$ tar jxvf plan9.tar.bz2 plan9/mnt/cons plan9/mnt/exportfs --mode 755
> /dev/null

[messages about ignored headers]

$ tar jxvf plan9.tar.bz2 --exclude plan9/mnt/cons --exclude

plan9/mnt/exportfs > /dev/null

[messages about ignored headers]

 

Y si ya habiamos descomprimido los archivos sin tener en cuenta los pasos indicados en este artículo, para reparar los archivos, hasta que sean reparados en la distribución de Russ Cox:

 

$ find plan9 -not -perm -200 -print0 | xargs -0 chmod u+w

Leave a Reply

Your email address will not be published. Required fields are marked *