Blog de Fernando Machado Piriz

Artículos sobre transformación digital, arquitectura empresarial y temas relacionados

Desarrollando soluciones para SharePoint 2010 en un equipo portátil con Windows Server 2008 R2 con Hyper-V

with 2 comments

Si normalmente desarrollan soluciones para SharePoint Server 2010 desde un escritorio en una oficina de una empresa, es muy probable que tengan acceso un servidor completo, con todos los servidores (SharePoint Server, SQL Server, etc.) y las herramientas necesarias ya instaladas, o mejor aún si usan versiones o configuraciones diferentes de los servidores, probablemente tengan múltiples máquinas virtuales, cada una con todo el software requerido instalado. En tal caso, este artículo no es para ustedes.

Pero si tienen un escenario diferente, como en mi caso, porque necesitan trabajar desde diferentes lugares utilizando un equipo portátil, y necesitan tener diferentes instalaciones de los servidores y herramientas (diferentes versiones, diferentes idiomas, etc.), entonces necesitan usar máquinas virtuales en su equipo portátil.

Con Microsoft Office SharePoint Server 2007, tanto el sistema operativo anfitrión (sobre el que corre el software de virtualización) como el invitado (el que se instala en la máquina virtual) podían ser 32 bits, ya que era posible usar la versión de 32 bits de los servidores (SharePoint Server, SQL Server, etc.). Además, era posible utilizar un sistema operativo de escritorio (no servidor) como anfitrión, empleando Microsoft Virtual PC 2007 por ejemplo. Con SharePoint Server 2010 el sistema operativo de base debe ser de 64 bits, digamos por ejemplo Windows Server 2008 R2 x64. Esto es porque SharePoint Server 2010 sólo se ejecuta sobre un sistema operativo de 64 bits.

No es posible tener un sistema operativo de 64 bits en una máquina virtual usando Microsoft Virtual PC 2007 o el nuevo Windows Virtual PC de Windows 7; la única forma de tener un sistema operativo virtual de 64 bits es mediante el uso de un hypervisor: Windows Server 2008 R2 con el rol Hyper-V.

Resulta un poco extraño ejecutar un hypervisor en un equipo portátil, ¿no? Bueno, probablemente tengan razón, pero uno se acostumbra, créanme.

¿Qué cosas de las que estamos acostumbrados a tener en un equipo portátil se pierden al usar Windows Server 2008 R2 con Hyper-V como sistema operativo? Al usar la instalación predeterminada, ocurre lo siguiente:

  • No hay Audio y ni Windows Media Player. El servicio Windows Audio está desactivado en forma predeterminada y el reproductor de Windows Media no está instalado en un servidor. Generalmente no hay nadie escuchando música en la sala de servidores, es un entorno muy ruidoso.
  • No hay conectividad inalámbrica El servicio Wireless LAN Service no está instalado. Por lo general servidores están conectados a la red mediante cables.
  • No está disponible Aero. El servicio de Themes está deshabilitado de forma predeterminada para preservar los recursos del servidor.
  • No hay búsquedas disponibles. El servicio Windows Search está deshabilitado en forma predeterminada también para preservar los recursos del servidor.
  • No se puede suspender ni hibernar. Generalmente servidores están siempre encendidos y nunca se suspenden ni hibernan, e incluso nunca se apagan.
  • El molesto Event Tracker aparece al apagar el sistema. No se puede apagar el sistema sin explicar primero la razón.
  • La seguridad mejorada de Internet Explorer. Cada vez que se intenta visitar un sitio web aparece un mensaje indicando por qué no deberían navegar por la web desde un servidor.

Pero lo que es razonable en un servidor, no es razonable en el equipo portátil que utilizan para el trabajo de todos los días, ¿cierto? Ustedes como yo quieren escuchar música, necesitan las conexiones inalámbricas, necesitan buscar archivos y mensajes de correo electrónico (Microsoft Outlook también usa el servicio Windows Search), quieren el aspecto y funcionalidad de Aero, y no quieren llevar su equipo portátil de un lugar a otro con el disco duro girando.

Excepto por lo de suspender e hibernar, pueden tener audio, conectividad inalámbrica, búsqueda de archivos y de correo electrónico, y hasta el aspecto de un sistema operativo de escritorio (no servidor) en Windows Server 2008 R2 con Hyper-V. Desafortunadamente, tan pronto como agreguen la función de Hyper-V, perderán la capacidad de suspender o hibernar. Pero no son tan malas noticias, una vez agregado Hyper-V, podrán suspender o hibernar el equipo portátil deshabilitando temporalmente el hypervisor, sin necesidad de quitar el rol.

En este artículo les mostraré cómo configurar una instalación predeterminada de Windows Server 2008 R2, para que se parezca y se comporte (casi) como un sistema operativo Windows 7 de escritorio. Este es el aspecto de mi equipo:

WS2008R2

Habilitar audio

Esto es fácil. Simplemente hagan clic en el botón Start y escriban “services” en el cuadro de búsqueda para abrir la consola Services. Busquen el servicio Windows Audio, hagan clic con el botón secundario y seleccionen Properties, y luego en el cuadro de diálogo Properties, cambien Start type de Disabled a Automatic.

O abran un símbolo del sistema con permisos de administrador y escriban sc \\[equipo] config audiosrv start= auto reemplazando [equipo] por el nombre de su equipo y luego escriban net start audiosrv. Noten que en el argumento start del comando sc hay un espacio en blanco luego del símbolo = y no hay un espacio en blanco antes.

Habilitar la red inalámbrica, Aero y la búsqueda

Instalen las funciones que faltan. Hagan clic en el botón Start y escriban “server” en el cuadro de búsqueda para abir la consola Server Manager. En el panel izquierdo hagan clic en Features y luego hagan clic en el vínculo Add Features en el panel de la derecha. En el asistente Add Feature Wizard seleccionen e instalen las características Desktop Search y Wireless LAN Service.

Una vez que estas características están instaladas, abran la consola Services nuevamente y busquen el servicio Themes, hagan clic con el botón secundario del mouse y seleccionen Propiedades, luego en el cuadro de diálogo Propiedades cambien Start type de Disabled a Automatic. Lo mismo con el servicio Desktop Window Manager Session Manager. Y lo mismo también con el servicio Windows Search, pero establezcan el tipo de inicio en Automatic (Delayed start).

O abran un símbolo del sistema con permisos de administrador y escriban for %%s in (uxsms themes) do (sc \\[machine] config %%s start= auto) y luego sc \\[machine] config wsearch start= auto y finalmente for %%s in (uxsms themes wsearch) do (net start %%s).

Habilitar suspender/hibernar

Supongamos que han instalado Windows Server 2008 R2 y luego agregaron el rol Hyper-V. Si abren un símbolo del sistema con permisos de administrador y luego ejecutan el comando bcdedit /enum {current} obtendrán una salida como esta:

clip_image003

bcdedit no es un editor “binario codificado decimal”, como probablemente podrían suponer, sino un editor del “almacén de datos de configuración de arranque” o “boot configuration datastore”. Noten la línea hypervisorlaunchtype asignada en Auto en la última línea. Noten también la descripción Windows Server 2008 R2; este es el texto que ven durante el inicio del equipo o durante la recuperación del sistema cuando varias configuraciones de arranque están disponibles.

Copien esta configuración de inicio a una nueva, escribiendo bcdedit /copy {current} /d “Microsoft Windows Server 2008 R2 (w/o Hyper-V)” en un símbolo del sistema con permisos de administrador. El texto entre las comillas es la descripción de la nueva configuración de inicio. Pueden elegir una descripción diferente a la mía.

Como resultado del comando anterior aparece un mensaje que incluye un GUID de la nueva configuración de inicio. Deshabiliten la función del hypervisor en la nueva configuración de arranque utilizando bcdedit /set {GUID} hypervisorlaunchtype off donde GUID es el GUID mostrado como resultado del comando anterior.

Ya está. Al iniciar el equipo podrán elegir la configuración con o sin hypervisor. Además, si desean cambiar la configuración de inicio predeterminada, o cambiar el tiempo durante el que se muestra la lista de configuraciones durante el inicio del equipo, pueden utilizar el comando bcdedit o el cuadro de diálogo Startup and Recovery en las propiedades del sistema.

Esta nueva configuración de inicio deshabilitará Hyper-V y les permitirá habilitar la suspensión o hibernación del equipo, aunque (obviamente) tendrán que reiniciar el equipo portátil para pasar a la configuración con Hyper-V habilitado. Esto es mucho más eficiente que eliminar completamente el rol de Hyper-V, lo que por cierto, también requiere reiniciar el equipo.

Para habilitar la hibernación después de reiniciar el sistema en la configuración sin Hyper-V, deben abrir un símbolo del sistema con permisos de administrador y ejecutar el comando powercfg –H (hache en mayúsculas).

Deshabilitar Event Tracking

Abran la consola Local Group Policy Editor, haciendo clic en Start y escribiendo “edit policy” en el cuadro de búsqueda. Luego expandan el nodo Local Computer Policy en el panel izquierdo, luego Computer Configuration, luego Administrative Templates, y finalmente System. En el panel de la derecha busquen Display Shutdown Event Tracker, hagan doble clic en él para modificar su configuración y luego elijan Disable.

Desactivar la seguridad mejorada de Internet Explorer

Hagan clic en el botón Start luego escriban “server” en el cuadro de búsqueda y abran la consola Server Manager. Seleccionen el nodo raíz en el árbol de la izquierda y luego hagan clic en el vínculo Configure IE ESC en el panel derecho. Seleccionen Off para desactivar la seguridad mejorada.

Comentarios finales

Ahora pueden usar su equipo portátil en dos escenarios: como un hypervisor o como un portátil normal. En el primer escenario, les recomiendo deshabilitar nuevamente los servicios como Windows Audio, Themes, Windows Search, etc. y desactivar los temas de Aero, con el fin de preservar los recursos del sistema. Además, si tienen otros servidores como SQL Server o incluso un servidor de SharePoint instalado en el sistema operativo anfitrión, les recomiendo también deshabilitarlos mientras utilizan el hypervisor.

Dado que es necesario apagar el sistema antes de mover el equipo portátil mientras se utiliza el hypervisor, y dado que es necesario reiniciar para cambiar de un escenario a otro, consideren la posibilidad de comprar una unidad de disco de estado sólido para la partición del sistema y así acelerar el apagado y puesta en marcha del equipo. Por cierto, con un disco así, reiniciar el equipo puede ser incluso más rápido que hibernar y restaurar desde una unidad de disco duro normal, sobre todo cuando el equipo portátil tiene mucha memoria, como debería tener para poder usar eventualmente múltiples máquinas virtuales simultáneamente con el hypervisor.

Para facilitar pasar del escenario de hypervisor al escenario de portátil normal, pueden utilizar los siguientes archivos de proceso por lotes y secuencias de comandos.

Utilicen este archivo por lotes search.bat para habilitar o deshabilitar el servicio de búsqueda escribiendo simplemente search on o search off en un símbolo del sistema con permisos de administrador. Este archivo por lotes no sólo detiene o inicia el servicio de búsqueda, sino que también lo activa o desactiva, por lo que se mantiene el estado configurado después de reiniciar el equipo.

@echo off

rem Enables and starts or stops and disables search services

rem Search services:
rem	Windows Search

set x=%1%#
if %x%==# goto usage
if %1%==on goto enable
if %1%==off goto disable

:usage

echo "Usage: search on|off"
goto end

:enable

rem Enables desktop services

for %%s in (wsearch) do (sc \\[machine] config %%s start= delayed-auto)
for %%s in (wsearch) do (net start %%s)

pause
goto end

:disable

rem Disables search services

for %%s in (wsearch) do (net stop %%s)
for %%s in (wsearch) do (sc \\[machine] config %%s start= disabled)

pause
goto end

:end

 

Pueden usar este otro archivo de procesamiento por lotes audio.bat para habilitar o deshabilitar los servicios relacionados con audio escribiendo audio on o audio off en un símbolo del sistema con permisos de administrador.

@echo off

rem Enables and starts or stops and disables audio related services

rem Audio services:
rem	Windows Audio
rem	Windows Audio Endpoint Builder

set x=%1%#
if %x%==# goto usage
if %1%==on goto enable
if %1%==off goto disable

:usage

echo "Usage: audio on|off"
goto end

:enable

rem Enables audio services

for %%s in (audiosrv audioendpointbuilder) do (sc \\[machine] config %%s start= auto)
for %%s in (audiosrv audioendpointbuilder) do (net start %%s)

pause
goto end

:disable

rem Disables audio services

for %%s in (audiosrv audioendpointbuilder) do (net stop %%s)
for %%s in (audiosrv audioendpointbuilder) do (sc \\[machine] config %%s start= disabled)

pause
goto end

:end

 

Para detener todos los servicios de servidor aquí hay otro archivo de procesamiento por lotes servermode.bat para detener y deshabilitar o habilitar e iniciar estos servicios escribiendo servermode off o servermode on en un símbolo del sistema con permisos de administrador.

@echo off

rem Enables and starts or stops and disables server related services

rem Server services:
rem	Application Host Helper Service
rem	Distributed Transaction Coordinator
rem	Simple Mail Transfer Protocol (SMTP)
rem	IIS Admin Service
rem	Net.Msmq Listener Adapter (depends on Message Queuing)
rem	Message Queuing
rem	SharePoint 2010 Timer
rem	SharePoint 2010 Tracing
rem	SharePoint 2010 User Code Host
rem	SharePoint Foundation Search V4
rem	SharePoint Server Search 14
rem	SQL Full-text Filter Daemon Launcher (MSSQLSERVER)
rem	SQL Server Agent (MSSQLSERVER) (depends on SQL Server (MSSQLSERVER))
rem	SQL Server (MSSQLSERVER)
rem	SQL Server (SHAREPOINT)
rem	SQL Server (SQLEXPRESS)
rem	SQL Server Analysis Services (MSSQLSERVER)
rem	SQL Server Browser
rem	SQL Server Integration Services 10.0
rem	SQL Server Reporting Services (MSSQLSERVER)
rem	SQL Server VSS Writer
rem	Visual Studio Team Foundation Background Job Agent
rem	Visual Studio Team Foundation Build Service Host
rem	World Wide Web Publishing Service

set x=%1%#
if %x%==# goto usage
if %1%==off goto disable
if %1%==on goto enable

:usage

echo "Usage: servermode on|off"
goto end

:disable

rem Disables server services

for %%s in (apphostsvc SMTPSVC msdtc iisadmin NetMsmqActivator msmq sptimerv4 sptracev4 spusercodev4 spsearch4 osearch14 SQLSERVERAGENT MSSQLSERVER MSSQL$SHAREPOINT MSSQL$SQLEXPRESS MSSQLServerOLAPService SQLBrowser MsDtsServer100 ReportServer SQLWriter TFSJobAgent TFSBuildServiceHost W3SVC) do (net stop %%s)
for %%s in (apphostsvc msdtc SMTPSVC iisadmin NetMsmqActivator msmq sptimerv4 sptracev4 spusercodev4 spsearch4 osearch14 MSSQLFDLauncher SQLSERVERAGENT MSSQLSERVER MSSQL$SHAREPOINT MSSQL$SQLEXPRESS MSSQLServerOLAPService SQLBrowser MsDtsServer100 ReportServer SQLWriter TFSJobAgent TFSBuildServiceHost W3SVC) do (sc \\[machine] config %%s start= disabled)

pause
goto end

:enable

rem Enables server services

for %%s in (apphostsvc msdtc iisadmin NetMsmqActivator msmq sptimerv4 sptracev4 spusercodev4 MSSQLFDLauncher SQLSERVERAGENT MSSQLSERVER MSSQL$SHAREPOINT MSSQL$SQLEXPRESS MSSQLServerOLAPService SQLBrowser MsDtsServer100 ReportServer SQLWriter TFSJobAgent TFSBuildServiceHost W3SVC) do (sc \\[machine] config %%s start= auto)
for %%s in (msdtc) do (sc \\[machine] config %%s start= delayed-auto)
for %%s in (spsearch4 osearch14 MSSQLFDLauncher SMTPSVC) do (sc \\[machine] config %%s start= demand)
for %%s in (apphostsvc msdtc iisadmin NetMsmqActivator msmq sptimerv4 sptracev4 spusercodev4 spsearch4 osearch14 MSSQLFDLauncher SQLSERVERAGENT MSSQLSERVER MSSQL$SHAREPOINT MSSQL$SQLEXPRESS MSSQLServerOLAPService SQLBrowser MsDtsServer100 ReportServer SQLWriter TFSJobAgent TFSBuildServiceHost W3SVC SMTPSVC) do (net start %%s)

pause
goto end

:end

 

Como los servicios del hypervisor sólo son necesarios cuando inician el equipo con la configuración con Hyper-V, estos servicios son habilitados o deshabilitados en un archivo de procesamiento por lotes separado:

@echo off

rem Starts or stops Hyper-V related services

if %1%==off goto disable
if %1%==on goto enable
goto end

:disable

for %%s in (vhdsvc nvspwmi vmms hvboot) do (net stop %%s)
for %%s in (vhdsvc nvspwmi vmms hvboot) do (sc \\[machine] config %%s start= disabled)
pause
goto end

:enable

for %%s in (vhdsvc nvspwmi vmms) do (sc \\[machine] config %%s start= auto)
for %%s in (hvboot) do (sc \\[machine] config %%s start= demand)
for %%s in (vhdsvc nvspwmi vmms hvboot) do (net start %%s)
pause
goto end

:end

 

Como tengo que tener varios servidores instalados (SQL Server, SharePoint Server, Team Foundation Server, etc.) la lista de servicios en el archivo servermode.bat es grande. Pueden remover o agregar los servicios que ustedes necesiten. Si van a modificar estos archivos, tengan en cuenta lo siguiente:

  1. Dependencias. Pueden necesitar detener un servicio solamente después de haber detenido todos los servicios que dependan de él, para evitar que aparezcan mensajes de confirmación durante el procesamiento de archivo por lotes. Asegúrense de iniciar los servicios en el orden inverso.
  2. Tipo de inicio. Deshabilitar los servicios es fácil: hay solo un estado deshabilitado. Pero habilitaros es un poco más complicado, porque hay más de un tipo de inicio: automático, automático demorado, y manual. Asegúrense que retornan los servicios a su tipo de inicio original.

La yapa: si quieren que su instalación de Windows Server 2008 R2 luzca exactamente (bueno, casi) como una de Windows 7, con los temas de Aero, pueden usar estos archivos de procesamiento por lotes y secuencias de comandos. Adivinaron, el archivo de procesamiento por lotes se llama desktopmode.bat y los comandos son desktopmode on y desktopmode off.

@echo off

rem Enables and starts or stops and disables desktop related services

rem Desktop services:
rem	Windows Audio
rem	Windows Audio Endpoint Builder
rem	Windows Search
rem	Desktop Window Manager Session Manager
rem	Disk Defragmenter (stop only)
rem	Themes

set x=%1%#
if %x%==# goto usage
if %1%==on goto enable
if %1%==off goto disable

:usage

echo "Usage: desktopmode on|off"
goto end

:enable

rem Enables desktop services

for %%s in (audiosrv audioendpointbuilder uxsms defragsvc themes) do (sc \\[machine] config %%s start= auto)
for %%s in (wsearch) do (sc \\[machine] config %%s start= delayed-auto)
for %%s in (defragsvc) do (sc \\[machine] config %%s start= demand)
for %%s in (audiosrv audioendpointbuilder wsearch uxsms themes) do (net start %%s)
DesktopTheme.vbs

pause
goto end

:disable

rem Disables desktop services

for %%s in (audiosrv audioendpointbuilder wsearch uxsms defragsvc themes) do (net stop %%s)
for %%s in (audiosrv audioendpointbuilder wsearch uxsms defragsvc themes) do (sc \\[machine] config %%s start= disabled)
ServerTheme.vbs

pause
goto end

:end

 

Archivo DesktopTheme.vbs:

Set WshShell = WScript.CreateObject("WScript.Shell")

WshShell.Run "rundll32.exe %SystemRoot%\system32\shell32.dll,Control_RunDLL %SystemRoot%\system32\desk.cpl desk,@Themes /Action:OpenTheme /file:""C:\Windows\Resources\Themes\aero.theme"""

Wscript.Sleep 15000
WshShell.AppActivate("Desktop Properties")
WshShell.Sendkeys "%FC"
WshShell.Sendkeys "{F4}"

 

Archivo ServerTheme.vbs:

Set WshShell = WScript.CreateObject("WScript.Shell")

WshShell.Run "rundll32.exe %SystemRoot%\system32\shell32.dll,Control_RunDLL %SystemRoot%\system32\desk.cpl desk,@Themes /Action:OpenTheme /file:""C:\Windows\Resources\Ease of Access Themes\classic.theme"""

Wscript.Sleep 1000
WshShell.AppActivate("Desktop Properties")
WshShell.Sendkeys "%FC"
WshShell.Sendkeys "{F4}"

 

Una recomendación final: agreguen la carpeta donde hayan dejado estos archivos a la variable de entorno PATH.

Diviértanse.

PS: para ser completamente honesto, hay otras cosas que pueden dejar de tener si instalan Windows Server 2008 R2 en un equipo portátil. En primer lugar, los controladores de Bluetooth habitualmente no están disponibles para los sistemas operativos de servidor, por esto ténganlo en cuenta si dependen de dispositivos Bluetooth conectados al equipo portátil para el trabajo de todos los días. En segundo término, dependiendo del hardware que tengan, otros controladores de hardware pueden no estar disponibles para un sistema operativo de servidor. Los más frecuentemente faltan son los del lector de huellas y los del lector de smartcards. Pueden tratar instalar los de Windows 7, pero estos pueden funcionar o no. Por último, algunas herramientas de terceros detectan que no están sobre un sistema operativo de escritorio y no ejecutan o ni siquiera se instalan. Hasta ahora yo he sobrevivido a estas limitaciones, pero no pueden decir que no les avisé.

Written by fernandomachadopiriz

12/02/2011 a 18:03

Publicado en SharePoint

Tagged with ,

2 comentarios

Subscribe to comments with RSS.

  1. […] a comment » En un artículo anterior escribí acerca de cómo configurar un equipo portátil para actual alternativamente como servidor […]

  2. […] un comentario » En un artículo anterior escribí acerca de cómo configurar un equipo portátil para actual alternativamente como servidor […]


Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: