oriolrius.cat

Des del 2000 compartiendo sobre…

Tag: winxp

HTC Kaiser i Artermis en WinXP virtualizat (VMWare Workstation 6)

Reading time: 3 – 5 minutes

El sistema operatiu de treball o sistema operatiu de l’equip host que uso habitualment com ja sabeu és un Linux, concretament una Gentoo. Doncs bé, al instal·lar un WinXP com a sistema guest en una màquina virtual d’VMWare malgrat molts dels dispositius USB del meu portàtil es reconeixen directament. Per exemple, la webcam, lector d’empremta digital o modem 3G intern. Això no passa al connectar algún dels dos smartphones que tinc el HTC Kaiser o l’Artemis el VMWare em donava l’error: VMWare Workstation was unable to claim the device (No such file or directory).

error.png

Després de molt buscar per forums i d’altres similars vaig trobar un simple hack que em soluciona el problema (perdoneu però no recordo l’enllaç perquè era un comentari d’un forum). El motiu exacte de perquè això passa no l’acabo de tenir clar però l’enginy funciona. De forma que l’activesync o el pocket controller pro reconeixen perfectament el telèfon i em permeten controlar-lo i sincronitzar-lo des del WinXP virtual. Que per altre banda, tal com vaig comentar en l’article sobre com arrancar el WinXP de l’altre partició mentre estem en Linux em permet no haver de mantenir dos instal·lacions de WinXP en parl·lel sinó que la versió virtual i la que corre sobre el host son la mateixa.

Bé doncs, anem al gra el que heu de fer és localitzar on teniu connectat el vostre dispositiu. Fent un lsusb podeu veure algo semblant a:

# lsusb
...
Bus 005 Device 004: ID 0bb4:0b0b High Tech Computer Corp.
...

Ara ja sabem que es troba en el Bus 5 però encara no sabem en quin port ni a quina PCI esta connectat aquest bus. Desocbrim ID de la PCI on és el Busc 5:

# find /sys/devices/ -name "usb5"
/sys/devices/pci0000:00/0000:00:1d.0/usb5

Ja sabem la PCI i bus USB on és connectat el dispositiu, ara només cal saber en quin port usa. Per fer això el que farem és buscar el idProduct i l’idVendor del HTC Kaiser, això ho obtenim del lsusb són els números en hexadecimal separats per uns dos punts. Així doncs, el meu idProduct: 0b0b i el idVendor: 0bb4. Amb aquestes dades el que faig és posar-nos en el directori del bus que hem localitzat i llenço una búsqueda sobre els fitxers que contenen aquestes dades per localitzar en quin port del bus tenim connectat el dispositiu:

# cd /sys/devices/pci0000:00/0000:00:1d.0/usb5
# grep -ri 0b0b $(find . -name "idProduct")
./5-1/idProduct:0b0b
# grep -ri 0bb4 $(find . -name "idVendor")
./5-1/idVendor:0bb4

Com podem veure en els dos casos els fitxers que contenen aquesta informació són al directori 5-1, o sigui, que tenim connectat el nostre telèfon a /sys/devices/pci0000:00/0000:00:1d.0/usb5/5-1/. Directori on hi trobarem el fitxer bConfigurationValue que és completament buit. Doncs bé, l’únic que hem de fer és posar-hi un 1, per exemple així:

# echo 1 > /sys/devices/pci0000:00/0000:00:1d.0/usb5/5-1/bConfigurationValue

Després ens assegurem que tenim associat el dispositiu a la màquina virtual i veurem que el missatge d’error desapareix i el WinXP detecta el nou hardware connectat.

active-usb.png

Finalment aquí tenim l’enllaç funcionant:

connected.png

VMWare: arrencant el WinXP de l’altre partició del HD des de Linux

Reading time: 9 – 15 minutes

A aquestes altures tothom coneix l’VMWare, personalment fa força temps que uso al portàtil la versió workstation i a alguns clients tenen el server. Fora de les típiques coses que es poden llegir a la documentació oficial del producte i de productes complementaris com l’VMWare converter, que ja vaig comentar fa temps, es poden fer algunes altres filigranes amb aquest producte.

Hi ha diversos howtos (per exemple, Convert Physical Windows Systems Into Virtual Machines To Be Run On A Linux Desktop) que expliquen com convertir una partició de windows en un disc virtual que després es pot usar des de la màquina virtual de l’VMWare. Com ja apuntava fa un moment això es pot fer amb l’VMWare converter. Problemes lògics d’aquesta solució és que si la nostre partició de windows ocupa 40Gb obviament el disc virtual ocuparà el mateix. A més si la configuració del nostre windows canvia (noves configuracions, nous programes, actualitzacions, etc) el contingut del disc virtual obviament quedarà ràpidament obsolet o alrevés.

Doncs bé aquest diumenge passat vaig configurar l’VMWare perquè des de linux m’iniciés el WinXP que tinc a l’altre partició del disc dur del portàtil, tot això basant-me en un petit manual que vaig trobar a Run Existing Windows installation With Vmware Player (local). Com podeu veure la idea és molt atractiva i soluciona els problemes que comentava anteriorment derivats de tenir en el fons dos Windows al mateix PC. Obviament d’aquesta solució se’n deriva una altre dificultat la de mantenir dos configuracions de hardware (el de la màquina real i el de la virtual) en un sol WinXP. A continuació intentaré explicarvos-ho i també comentaré com l’he resolt jo.

A continuació repetiré els passos que descriu el manual anteriorment comentat perquè tingueu una referència totalment traduida de com fer això. Realment els passos per ajustar l’VMWare són realment senzills els problemes realment complexos són més de cara al Windows que no pas en el que es refereix en aconseguir que el VMWare arrenqui a partir de la partició WinXP. L’explicació del manual anterior l’adaptaré a la meva configuració ja que crec que és on puc aportar un valor diferencial.

Escenari

Al portàtil hi tinc les següents pariticons:

oriol@mini2 ~ $ /sbin/fdisk -l /dev/hda
Disk /dev/hda: 100.0 GB, 100030242816 bytes
255 heads, 63 sectors/track, 12161 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot      Start         End      Blocks   Id  System
/dev/hda1               1          63      506016   82  Linux swap / Solaris
/dev/hda2              64        4927    39070080   83  Linux
/dev/hda3   *        4928        8512    28796512+   7  HPFS/NTFS
/dev/hda4            8513       12161    29310592+   c  W95 FAT32 (LBA)

Com podeu veure i resumint, bàsicament tinc una partició linux de 39Gb, una Windows de 28Gb formatejada amb NTFS i una FAT32 de 29Gb que uso per guardar els fitxers. Bàsicament aquesta partició és per temes històrics de quan el suport NTFS des de linux es limitava a lectura. Avui en dia el suport NTFS des de linux ja és en lectura i escriptura, per tant es podria convertir a NTFS. Malgrat això la recomanació és que no ho feu, sobretot perquè en cas de desastre si haguéssim d’usar eines per recuperar el contingut de la partició aquestes eines per NTFS sempre són més limitades, o simplement hi ha menys eines al mercat que soportin la recuperació de dades per NTFS.

Pel que fa a la CPU i la RAM són 1.2GHz i de 1Gb respectivament. He de reconeixer que el sistema li costa lo seu arrencar, sobretot perquè a la màquina virtual d’VMWare (o sigui, el WinXP) li assigno 512Mb de RAM. Si a això li sumem, que jo sempre tinc la mania de tenir mil programes oberts a la vegada: FF2 amb mil finestres, evolution, openoffice, zend studio, etc. Obviament tot el sistema es torna molt pesat. Així doncs ja tinc un bon motiu per comprar-me un nou portàtil amb una bona CPU i moltíssima RAM.

Creant la màquina virtual d’VMWare

He creat un directori nou just on tinc la resta de màquines virtuals que uso per treballar a la partició de dades, o sigui, que partir d’ara tots els fitxers dels que parli per mi estan situats a /mnt/fitxers/vmware/winxp-mini2. Al directori hi copiem aquests dos fitxers: windows.vmdk i windows.vmx. El que ara ens cal és una eina com el parted per tal de coneixer algunes dades de les nostres particions i el disc dur:

Informació que hem de recollir del parted:

parted.png

Ara hem d’editar el windows.vmdk i hem de modificar les 4 dades que hi ha seleccionades a continuació:

vmdk.png

On posa # Extend description dues linies per sorta fixeu-vos que teniu el número de sectors que té el vostre disc, subratllats de color vermell doncs bé aquí heu de posar la dada que us dona el parted en el meu cas: 195371567s i abans de copiar-la li restem 63 que és el que ocupa l’MBR del disc, així doncs jo hi he de posar 195371504:

195371567 - 63 = 195371504

Les altres tres dades marcades en vermell en el fitxer windows.vmdk són els cilindres, capçals i sectors del vostre disc (cylinder,head,sector geometry) aquestes dades les podeu veure en el segon bloc de dades que li hem demanat al parted, en el meu cas: 12161,255,63.

Així doncs en el meu cas el fitxer windows.vmdk queda així:

# Disk DescriptorFile
version=1
CID=5aa3c828
parentCID=ffffffff
createType="fullDevice"
# Extent description
RW 63 FLAT "windowsxp.mbr" 0
RW 195371504 FLAT "/dev/hda" 63
# The Disk Data Base
#DDB
ddb.toolsVersion = "0"
ddb.adapterType = "ide"
ddb.virtualHWVersion = "4"
ddb.geometry.sectors = "63"
ddb.geometry.heads = "255"
ddb.geometry.cylinders = "12161"

Ja tenim llest l’VMWare perquè arrenqui la nostre altre partició amb el windows. Ara qui no esta preparat és el windows, ja que penseu que l’VMWare és una màquina virtual que lògicament no té el mateix hard que la vostre màquina. Per exemple, no usa la mateixa targeta gràfica, controladora de ratolí, controladores USB, contraladores de disc, etc. Per tal de deixar intacte la nostre partició de windows una bona idea és crear un nou perfil i en aquest nou perfil hi podem configurar el hard d’aquesta màquina virtual. A més li podem dir al windows que cada cop que intenti arrencar ens pregunti en quin perfil ho volem fer així segons si ho fem des del PC o des de la màquina virtual sempre es reconeixerà el hard automàticament.

Configurant el Windows perquè treballi amb dos perfils de hardware diferents

Dins del control panel cliquem sobre la incona system després anem a la pestanya hardware i cliquem en el botó hardware profiles:

perfils-01.png

Aquí copiem el perfil actual i seleccionem el segon radio button per poder escollir el perfil que ens interessi a l’hora d’arrencar el windows. Un cop fet això reiniciem la màquina i arrenquem seleccionant el nou perfil, en la meva captura podeu veure que aquest perfil l’he anomenat vmware també he fet una còpia de seguretat del perfil per defecte Perfil 1 i alguns altres perfils que uso per fer proves.

Un cop s’ha iniciat la màquina amb el perfil vmware un bon consell és que deshabiliteu tots els drivers de hard que creieu que puguin causar conflictes al iniciar-se amb la màquina virtual: controlador del disc dur, ratolí (driver synaptics a mi no em funciona), targeta gràfica, targeta de so, bluetooth, pcmcia, etc.

Com ja sabreu per fer això heu d’anar al control panel, cliqueu a la icona system, a la pestanya hardware i finalment al botó administrador de dispositivos. També és bona idea descarregar les VMWare Tools ja que inclouen alguns drivers que ja podeu actualitzar directament des d’aquí, fent el típic d’actualitzar el controlador i anant al direcotori on hi ha el driver de l’VMWare perquè així quan arrenquem amb la màquina virtual el dispositiu ja funcionarà correctament, ús recomano que feu això especialment amb el controlador del disc dur. Jo vaig tenir problemes i la solució la vaig trobar a Running a Windows 2000, Windows XP or Windows Server 2003 Virtual Machine from an Existing Multiple-Boot Installation i a Error INACCESSIBLE_BOOT_DEVICE (Raw Disk).

A mi personalment el que més problemes em va donar va ser el controlador synaptics de Dell que em provocava un pantallazo blau (BSOD) l’error no el vaig guardar, però deia algo d’IRQs. Si el trobo ja l’afegiré. Finalment vaig haver de desintal·lar el driver per Add/Remove software i ara treballo amb el touch pad com si fos un ratolí PS/2.

Sobretot recordeu que heu de deshabilitar els controladors no eliminar-los, ja que sinó després quan entreu en el vostre perfil per defecte aquests s’hauràn de reinstal·lar. Arribats en aquest punt ja podeu sortir del windows i tornar al linux per iniciar la nova màquina virtual. Si surten pantalles blaves al iniciar no ús preocupeu, això només afecta al nou perfil que heu creat i heu d’intentar entrar com sigui, via safe mode, tornant a repetir els passos anteriors, etc. Un cop a dintre repasseu si teniu algún problema amb el hard tornant a la gestió de dispositius.

Experiencia

Fa una setmana que estic treballant amb el sistema i n’estic molt content, com comentava només trobo que vaig curt de RAM i de CPU però per la resta és realment genial disposar de tots els aplicatius de windows de forma tan ràpida des de linux. Sempre puc veure quins són els efectes que estan tenint els clients quan tenen un problema amb alguns dels meus aplicatius, sistemes o demes. A més no tinc els típics problemes del wine quan emula windows perquè pugui llençar aplicatius. A vegades calen clients que només existeixen per windows i d’altres sistemes propietaris que sempre obliguen a perdre molt de temps reiniciant la màquina i a més, almenys a mi, em fan perdre tota la meva forma de treballar ja que no tinc accés a les aplicacions que m’acompanyen usualment a l’escriptori.

Com a nota negativa comentar, que no sé si és culpa del invent o si no hi té res a veure però la partició de dades la vaig haver de reparar quan mai ho havia hagut de fer. Jo diria que és culpa de que tinc la mania de deixar la màquina virtual suspesa i continuar treballant amb la paritició de dades des de linux. Així doncs, els fitxers que tenia oberts des de windows i que no s’han alliberat correctament perquè el sistema s’ha suspès no pas apagat ha creat algún tipus de conflicte amb els canvis que he fet al sistema de fitxers des de linux. Així doncs, a partir d’ara apagaré sempre la màquina virtual a veure si no tinc aquests problemes d’incosistència amb la partició de dades. Jo diria que el raonament té molta lògica ara només cal que sigui cert.

Resumint doncs, estic contentíssim d’aquest enginy i animo a tothom que tingui aquesta necessitat a usar-lo. Això si recordeu que cal molta RAM i una CPU ràpida. Sinó la SWAP anirà de cul i tot plegat es farà molt lent i pesat d’usar.

Trick: Winsock del WinXP es queda tonto

Reading time: 1 – 2 minutes

En les versions antigues del windows quan la pila TCP/IP es quedava tonta era molt senzill reinstal·lar-la sobretot al 95 que cada 2×3 te la feia tornar a instal·lar. Però en la versió XP ja és més fotuda la cosa i quan el winsock2 es queda tonto és realment difícil reinicar-lo o reinstal·lar-lo.

Per resetejar-lo podeu usar l’ordre:

netsh winsock reset catalog

També podem eleminar dues entrades del registre per forçar una re-instal·lació de la pila winsock:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Winsock
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Winsock2

Re-iniciem la màquina i després anem a les propietats de l’interficie de xarxa i instal·lem de nou el protocol TCP/IP.

Si voleu més informació sobre ambdues solucions podeu anar a:

DiskPART – creant particions per windows des de la línia de comandes

Reading time: 1 – 2 minutes

Quan volem fer un deployment de software en windows potser el més difícil, almenys per mi, era saber com podia particonar els discos de forma automàtica i si és a través d’un batch process encara millor així ho podem automatitzar tot igual que en linux. Doncs bé des de fa un temps estic sindicat al blog Windows XP Embedded Team i a finals de l’any passant varen parlar d’aquesta eina i en van posar alguns exemples de funcionament, concretament l’article que parla del tema és: Using DISKPART to Improve Deployment Efficiency. Per cert, aquesta eina (DiskPART) la podeu trobar en el CD de WinXP Professional, així doncs no heu d’anar a buscar cap third party software i pagar per fer un deployment d’XP. A les pàgines de suport de M$ també podem trovar informació sobre aquesta eina concretament hi ha un manual interessant a A Description of the Diskpart Command-Line Utility.