(openSolaris en ZFS + Ubuntu + ArchLinux) in my Laptop

Saludos amigos:

Aqui voy a mostrar como le hice para tener mi openSolaris en sobre ZFS. Es una tarea un poco compleja de mantener, sobre todo porque el instalador oficial no soporta ZFS ni es posible actualizar el sistema. Pero para los que queremos un buen rendimiento y tener lo ultimo de lo ultimo, va muy bien.

Paso -1

Tener instalado nuestros otros sistemas operativos en particiones logicas y dejar un espacio minimo al principio de unos 20~30 GBytes. En mi caso tengo, una particion extendida y en ella una particion ext2 para el /boot de mi Ubuntu, una ReiserFS para mi / de Ubuntu, luego una swap, y finalmente otro ReiserFS para ArchLinux. Tambien, para los que quieran intercambiar cosas entre todos los OSs recomiendo crear antes una particion vfat PRIMARIA, ya que Solaris solo lee particiones primarias y solo puede leer y escribir sobre tipos vfat. Luego creen sus particiones de Linux.
OTRA COSA IMPORTANTE: Creen su cargador de arrnaque en las particiones y no en MBR, ya que asi cada OS manejara automaticamente las lineas de Kernel para cada grub. Sin embargo, pueden usar el grub de openSolaris, ya que es plenamente compatible con Linux, pero mas dificil de mantener cuando actualizemos los kernels :-P.

Paso 0

Instalar openSolaris. Os recomiendo los ultimos builds (svn>75) que trane buen soporte para Xen. Cuando instalen, procuren crear una particion lo suficiente mente grande para despues clonar nuestra instalacion a ZFS, y logicamente al definir las slices, solo ocupar la mitad del espacio o menos y solo usar un punto de montaje(solo root, / y swap). Es recomendable crear inmediatamente la slice que sera posteriormente nuestra pool para ZFS, asignandole un punto de montaje no usado por el sistema (/zfsroot, por ejemplo)

Paso 0,9

Si no definieron la particion con el resto del espacio, como lo hice yo :-(, no se preocupen, ahora vamos a asignar el espacio libre a una slice. Para esto, como root, tecleamos 'format'. Seleccionamos el numero de nuestro disco duro para luego ingresar el comando 'partition'. Dentro de esta seccion podemos definir los slices. Colocamos 'print' para ver los slices ocupados y disponible, asi como las dimensiones en cilindros. Luego, modificamos una slices sin asignar tecleando el nuemro de la slice. Luego ingresamos que va a ser 'alternates', aceptamos lo predeterminado en permisos. Cuando nos pregunte el cilindro de inicio, colocamos ell numero siguiente de cilindro ocupado por nuestra particion y como 'size' el ultimo numero de cilindro menos uno. Luego ponemos 'label', y aceptamos escribir los cambios. Aqui esta lo que hice yo:

partition> p
Current partition table (unnamed):
Total disk cylinders available: 3112 + 2 (reserved cylinders)

Part Tag Flag Cylinders Size Blocks
0 root wm 3 - 1405 10.75GB (1403/0/0) 22539195
1 swap wu 1406 - 1578 1.33GB (173/0/0) 2779245
2 backup wm 0 - 3111 23.84GB (3112/0/0) 49994280
3 alternates wm 1579 - 3014 11.00GB (1436/0/0) 23069340
4 unassigned wm 0 0 (0/0/0) 0
5 unassigned wm 0 0 (0/0/0) 0
6 unassigned wm 0 0 (0/0/0) 0
7 unassigned wm 0 0 (0/0/0) 0
8 boot wu 0 - 0 7.84MB (1/0/0) 16065
9 alternates wu 1 - 2 15.69MB (2/0/0) 32130

partition> help
Expecting one of the following: (abbreviations ok):
0 - change `0' partition
1 - change `1' partition
2 - change `2' partition
3 - change `3' partition
4 - change `4' partition
5 - change `5' partition
6 - change `6' partition
7 - change `7' partition
select - select a predefined table
modify - modify a predefined partition table
name - name the current table
print - display the current table
label - write partition map and label to the disk
! - execute , then return
quit

partition> modify
Cannot modify disk partitions while it has mounted partitions.

partition> 3
Part Tag Flag Cylinders Size Blocks
3 alternates wm 1579 - 3014 11.00GB (1436/0/0) 23069340

Enter partition id tag[alternates]:
Enter partition permission flags[wm]:
Enter new starting cyl[1579]:
Enter partition size[23069340b, 1436c, 3014e, 11264.33mb, 11.00gb]: 3015c
`3015c' is out of range
Enter partition size[23069340b, 1436c, 3014e, 11264.33mb, 11.00gb]: 3014c
`3014c' is out of range
Enter partition size[23069340b, 1436c, 3014e, 11264.33mb, 11.00gb]: 3112e
End cylinder 3112 is beyond max cylinder 3111
Enter partition size[23069340b, 1436c, 3014e, 11264.33mb, 11.00gb]: 3111e
partition>
partition>
partition> print
Current partition table (unnamed):
Total disk cylinders available: 3112 + 2 (reserved cylinders)

Part Tag Flag Cylinders Size Blocks
0 root wm 3 - 1405 10.75GB (1403/0/0) 22539195
1 swap wu 1406 - 1578 1.33GB (173/0/0) 2779245
2 backup wm 0 - 3111 23.84GB (3112/0/0) 49994280
3 alternates wm 1579 - 3111 11.74GB (1533/0/0) 24627645
4 unassigned wm 0 0 (0/0/0) 0
5 unassigned wm 0 0 (0/0/0) 0
6 unassigned wm 0 0 (0/0/0) 0
7 unassigned wm 0 0 (0/0/0) 0
8 boot wu 0 - 0 7.84MB (1/0/0) 16065
9 alternates wu 1 - 2 15.69MB (2/0/0) 32130

partition> help
Expecting one of the following: (abbreviations ok):
0 - change `0' partition
1 - change `1' partition
2 - change `2' partition
3 - change `3' partition
4 - change `4' partition
5 - change `5' partition
6 - change `6' partition
7 - change `7' partition
select - select a predefined table
modify - modify a predefined partition table
name - name the current table
print - display the current table
label - write partition map and label to the disk
! - execute , then return
quit

partition> label
Ready to label disk, continue? yes

Luego de esto ya tenemos lista nuestra slice para la picina de ZFS.

Paso 1

Desmontar y eliminar del archivo /etc/vfstab la entrada de punto de montaje para la particion reservada en la instalacion. Si no lo habiamos hecho, solo hay que crear un nuevo conjunto de almacenamoento con el comando:

zpool create rootpool c0d0sX, donde X es la slice definida anteriormente.

Si la slice la definimos en el proceso de instalacion, lo que hay que hacer es desmontarla y añadir el parametro -f para forzar la creacion, a pesar de que exista un sistema de archivos.

Paso 2

Crear el sistema de archivos ZFS para nuestro root con el comando:

zfs create rootpool/rootfs

, asignamos un punto de montaje generico:

zfs set mountpoint=legacy rootpool/rootfs

, lo montamos:

mkdir /zfsroot
mount -F zfs rootpool/rootfs /zfsroot

y lo agregamos a nuestro vfstab:

echo rootpool/rootfs - /zfsroot zfs – yes - >> /etc/vfstab

Paso 3

Hacer un vlocado de nuestro root en UFS a nuestro nuevo ZFS:

# cd /zfsroot/
# ufsdump 0f - / | ufsrestore -rf -
DUMP: Fecha de este volcado de nivel 0: 17 de noviembre de 2007 13:45:38 CLST
DUMP: Fecha del último volcado de nivel 0: el periodo
DUMP: Volcando /dev/rdsk/c0d0s0 (darkmovile:/) en salida estándar.
DUMP: Reasignación (Paso I) [archivos normales]
DUMP: Reasignación (Paso II) [directorios]
DUMP: Escribiendo registros de 32 Kilobytes
DUMP: 9832500 bloques calculados (4801,03MB).
DUMP: Volcando (Paso III) [directorios]
DUMP: Volcando (Paso IV) [archivos normales]
DUMP: 47,07% terminado, realizado en 0:11
DUMP: 98,60% terminado, realizado en 0:00
./export/home/ramoran/.mozilla/firefox/0n404u09.default/prefs.js: no se ha encontrado en el volumen
DUMP: 9833598 bloques (4801,56MB) en 1 volumen a 4020 KB/seg
DUMP: EL VOLCADO HA FINALIZADO

NOTA: Existe otro metodo, ocupando find, pero ese medoto no crea los archivos en /dev ni /devices, por lo que este es mas practico.

Paso 4

Actualizar nuestros zpool.cache en el ramdisk:

echo etc/zfs/zpool.cache >> /zfsroot/boot/solaris/filelist.ramdisk

, ajustar el sistema de archivos de nuestro conjunto de almacenamiento para el cual debe arrancar:

zpool set bootfs=rootpool/rootfs rootpool

NOTA: Este parametro se puede ajustar a nivel de grub tambien.

y actualizar el archivo de arranque:

/usr/sbin/bootadm update-archive -R /zfsroot

Paso 5

Ajustar nuestro nuevo grub y menu.lst y agregarlo al punto de montaje legacy:

mkdir -p /rootpool/boot/grub
cp /zfsroot/boot/grub/menu.lst /rootpool/boot/grub
cd /rootpool/boot/grub/
echo 'title Solaris ZFS' >> menu.lst
# Corregido!!!
echo 'kernel$ /platform/i86pc/kernel/$ISADIR/unix -B $ZFS-BOOTFS' >> menu.lst
echo 'module$ /platform/i86pc/$ISADIR/boot_archive' >> menu.lst

y ajustamos el nuevo punto de monje de root:

grep -v 'rootpool/rootfs' /etc/vfstab | awk '$3 == "/" { printf "rootpool/rootfs\t-\t/\tzfs\t-\tno\t-\n" } ; $3 != "/" { print $0 }' > /zfsroot/etc/vfstab

Paso 6

Instalar nuestro nuevo grub en el disco:

installgrub /zfsroot/boot/grub/stage1 /zfsroot/boot/grub/stage2 /dev/rdsk/c0d0sX

Donde X es la slice de nuestro ZFS root. Con esto estaríamos listo y deberíamos poder arrancar con ZFS

Pasos a seguir

Posteriormente podemos seguir editando nuestro grub, así como eliminar la slice UFS y agregarla a nuestro conjunto de almacenamiento.

Eso es todo amigos. Espero que os resulte. Mucha suerte. Ahora voy a ver si funciono :-P, si no, voy a tener que corregir este post. Byte!

CONFIRMADO: Funciono, asi que adelante amigos, prueben ZFS ya.




Mi ACER Aspire 5050

Holas!!

Escribo este post porque mucha gente me ha preguntado como lo he hecho con mi notebook. Actualmente cuenta con lo siguientes sistemas operativos:

  • Solaris 11 Nevada b76 en ZFS
  • Ubuntu 7.10 64bits en ReiserFS
  • ArchLinux 32bits en ReiserFS

Una partición de Fat32 para intercambio de datos entre todos los SOs.
Me ha costado echar a andar algunos componentes, de hecho, todavía me cuesta mucho, sobre todo con la red inalámbrica pero en general todo funciona bien en Linux. Ahora describo todos los problemas que tuve y como los soluciones:

Gráficos en ATI Radeon Xpress 1100

Este chipset es una GPU integrada, que ocupa el mismo Turion64 para procesar gráficas. El driver ATI oficial lo soporta sin problemas y el driver "ati" de xorg lo soporta sin aceleración, al igual que el driver gratuito "radeon". Lo que no he logrado hacer andar es la salida de TV o SuperVideo (tengo que buscar mas información sobre eso). En solaris no he tenido problemas, solo que sin aceleración 3D, e igual puedo usar la salida VGA. En Ubuntu mi salvación ha sido Envi, un proyecto de Alberto Milone, que me ha permitido instalar el driver 8.42.3permitiendo sacar 100 frames mas que con el driver anterior y mucha mejor estabilidad. El utilizar el driver propietario inhabilita la posibilidad de suspensión e hibernación del equipo, pero se puede solucionar usando algunos quirks, de lo que comentare mas adelante. En ArchLinux, nada que decir, hasta pude ehchar andar Compiz Fusion con AIGLX, ya que este driver, al igual que el que instale con Envi en Ubuntu, trae incorporada la extensión composite, permitiendo integrar graficas 3D en el escritorio. En general muy buen rendimiento la tarjeta en linux, aprox. 1800 fps con glxgears.

Wireless

Compre este equipo porque tenia integrada una tarjeta Artheros, pero para mi sorpresa, era tan nueva que los chicos de madwifi todavía no le dan soporte. En todo caso están trabajando en ello. Por mientras es posible ocupara usando el driver oficial que proporciona ACER con el famoso ndiswrapper. Para los que no sepan, este programa emula en windows un kernel de WindowsNT permitiendo emular nuestro driver wireless. Se han encontrado muchos problemas justo con este modelo de tarjeta wireless, pero que en la versión actual, la 1.49 han sido solucionados, tanto el problema de la mac 00:00:00:00:00:00 que me pasaba a mi en Ubuntu64, el kernel panic en Fedora y el bloqueo por un BUG CPU0 que sucede en cualquier distribución, pero esto tiene mucho que ver con la BIOS, de lo cual hago un comentario al final.
En Solaris no tengo wireless, ya que el ndiswrapper es muy experimental y se bloquea el sistema. En Ubuntu 64 bits y en ArchLinux no he tenido dramas, ya que estas versiones que tengo instaladas vienen con ndiswrapper 1.49.

Sonido

La Intel HDA funciona sin problemas en ambos linux. En solaris chicharrea un poco, pero igual suena :-P Es mucho pedir para un SO de servidores.

WebCam

Cuando tuve instalado Debian, no pude echar a andar la webcam y tampoco quise martirizarme tratando de investigar tanto, ya que en Ubuntu64 funciona de maravilla, salvo porque solo me funciona con Ekiga, pero este es un gran programa. En ArchLinux todavía estoy tratándose de echarla a andar. Mi lsusb es el siguiente:

Bus 003 Device 002: ID 064e:a100 Suyin Corp. -Webcam
Bus 003 Device 001: ID 0000:0000
Bus 001 Device 003: ID 046d:c50a Logitech, Inc. - Mouse Inalambrico
Bus 001 Device 001: ID 0000:0000
Bus 002 Device 001: ID 0000:0000

Los modulos en mi Ubuntu son los siguientes:

ramoran@darkmovile:~$ lsmod | grep video
video 21140 0
uvcvideo 52228 1
compat_ioctl32 11136 1 uvcvideo
videodev 31360 2 uvcvideo
v4l1_compat 15364 2 uvcvideo,videodev
v4l2_common 21888 3 uvcvideo,compat_ioctl32,videodev
usbcore 161584 6 ndiswrapper,uvcvideo,usbhid,ehci_hcd,ohci_hcd

Usando el ekiga de Solaris prende la luz de la WebCam pero ekiga solo muestra un cuadrado verde. Hay que investigar mas sobre ello.

Lector de Tarjetas

El lector de tarjetas se puede ocupar cargando un modulo llamado "yenta", que a partir del kernel 2.6.22 viene integrado, por lo que puedo ocupar mi lector de tarjeta en ambos linux, pero no en Solaris, ya que no hay modulo :-P

Modem

La verdad es que no me he interesado en echarlo a andar. Lo haré cuando tenga un tiempo libre.

ACPI

El PowerNow!, escalado de frecuencia funciona bien en ambos Linux, pero algunas otras características hay que ponerlas a mano. Para acceso via procfs de el control de brillo y encendido de la wireless hay un modulo muy interesante en GoogleCode que permite hacer esto. También me entere que hay paquetes para Ubuntu 32 y 64 bits.

Características

Modelo : Aspire 5050
Procesador : AMD Turion 64bits MK-38 2200 Mhz 512 Kb Cache L2
BIOS : v1.3303
Graficos : ATI Radeon Xpress 1100
Disco Duro : Hitachi "80" Gb XD

Ojala estos datos sirvan de algo. Saludos!!

Apoyando el Software Libre, a un mundo libre! - Designed by Posicionamiento Web