Reinicios de Windows 8 nada más arrancar

Hace un par de días realicé una nueva instalación de Windows 8 Profesional, en un equipo que ya tenía un Windows 8 Enterprise  que funcionaba correctamente. Lo instalé en un disco duro nuevo, GPT, montado en una placa ASUS UEFI de última generación (ASUS Rampage IV Extreme, con un Core i7 3930K).


La instalación comenzó bien, y al primer reinicio, tras el menú de selección de sistema operativo, en cuanto aparecía la ventana azul el equipo se reiniciaba al instante. El problema añadido es que como el menú de arranque gráfico va iniciando Windows 8 al mismo tiempo, en el proceso se reiniciaba constantemente el equipo sin ni siquiera mostrar el menú de arranque. Un problema, pues no solo fallaba el nuevo sistema operativo, sino que tampoco podía acceder al existente. Ni siquiera apagando el equipo, pues al encenderlo directamente se reiniciaba en cuanto intentaba cargarse el menú de arranque.


A base de probar, una de las veces al arrancar intenté entrar en la BIOS (de tipo UEFI), lo que es un problema ya que con el inicio rápido de Windows 8 ni siquiera se muestra en pantalla la información del arranque inicial del sistema. Cual fue mi sorpresa cuando, al salir de la BIOS, sin ni siquiera guardar, apareció el menú de arranque y pude entrar en mi Windows 8 Enterprise de siempre.


El primer paso para arreglar el desaguisado fue cambiar el modo de menú de arranque gráfico por el menú de arranque en modo texto de toda la vida. Para ello, desde Windows 8 abrimos una ventana de comando con elevación y tecleamos lo siguiente:


bcdedit /set {current} bootmenupolicy Legacy


bcdedit /set {GUID del Windows 8 profesional} bootmenupolicy Legacy


El GUID del Windows 8 profesional lo obtenemos previamente tecleando tan solo bcdedit en la ventana de comando.


Con esto perdemos el menú de arranque gráfico, pero a cambio, el menú de arranque en modo texto no se ve afectado por fallos a la hora de iniciar el sistema operativo. Ya en otra instalación me pasó algo similar, causado en aquel caso por un driver de controladora de disco que impedía el arranque del sistema.


Con esta nueva situación podía arrancar el W8 Enterprise sin problemas, pero al lanzar el W8 profesional el equipo se reiniciaba, aunque al menos volvía al menú de arranque.


Vuelta a lanzar la BIOS durante un reinicio, y al salir y seleccionar que arranque W8 profesional veo que continua arrancando y por fin finaliza la instalación (me costó un par de reinicios entrando y saliendo de la BIOS).


Pensando en que el problema estaría en algún driver o relacionado con aquellas actualizaciones de WU mastodónticas que nos aparecen tras una instalación nueva, aproveché para instalar cuantos drivers disponía actualizados, y le pasé un WU para instalar todas las actualizaciones. El resultado, el problema persistía, y siempre podía arrancar W8 Enterprise pero el Profesional se reiniciaba, salvo que entrase y saliese de la BIOS, en cuyo caso el W8 Profesional arrancaba sin problemas.


Las sospechas comenzaron a centrarse en el inicio rápido de Windows 8 como causante del problema. Una buena novedad para reducir al máximo el tiempo de arranque del sistema, pero que en este caso resultó ser la causa del problema. En primer lugar deshabilité el inicio rápido, desde Panel de Control, Opciones de Energía, Elegir el comportamiento de los botones de Inicio/Apagado. El problema persistía. Deshabilité a continuación la hibernación completamente con el comando “powercfg -h off”. El problema seguía. ¿No era entonces el inicio rápido?


Por enésima vez volví a revisar las opciones de la BIOS UEFI, esta vez con lupa, y encontré una opción llamada Inicio rápido, que lo que hace, si está activada, es inicializar tan solo los dispositivos imprescindibles para el arranque del sistema, dejando que el sistema operativo inicialice el resto durante el arranque. Como estaba activada, la deshabilité, guardé valores y reinicié.


Et voilà, el problema con Windows 8 Profesional ha desaparecido. Ahora, siempre que reinicio o arranco el equipo muestra en pantalla la información de arranque del sistema, y en todo caso cuando selecciono uno u otro sistema operativo éste arranca correctamente. Y la verdad, salvo los cinco o seis segundos en que se muestra la información de arranque citada, no veo que Windows 8 tarde ni más ni menos que antes.


Está claro que la mencionada opción de la BIOS causaba un conflicto con la característica de inicio rápido de Windows 8, pues tan solo deshabilitando ambas logré que el Windows 8 profesional arrancase. Este problema puede ser específico de esta placa e instalación, pero no estará de más tener en cuenta esta solución en otros casos similares, buscando también opciones parecidas que puedan existir en otras placas.


Lo más raro de esto, y a lo que todavía no encuentro explicación, es por qué el Windows 8 Enterprise siempre ha arrancado correctamente, desde el primer día, con hibernación habilitada, inicio rápido (aunque estas dos cosas las deshabilité en su momento) y con el inicio rápido de la BIOS habilitado. Misterios de los bits. No estaría de más seguir investigando, pero ahora mismo prefiero aplicar el principio número uno de la Informática: si funciona no lo toques.

Server Core vs MinShell

Otra de las cosas que se resisten a muchos administradores es la instalación de servidores en modo Core, opción disponible desde Windows Server 2008. Como ya he comentado en otro post, a muchos administradores les da pavor la línea de comandos, y buscan en el entorno gráfico toda la administración de sus equipos.


Sin embargo, el hecho de tener un entorno gráfico (GUI, Graphical User Interface) instalado en la máquina, junto con su escritorio con el explorador, barra de tareas y área de notificación, Internet Explorer, etc., no solo supone una sobrecarga generalmente innecesaria en el uso de los recursos del equipo, sino que además nos va a suponer un trabajo adicional de parcheado para evitar vulnerabilidades y fallos diversos; a más software instalado en un servidor, vamos a obtener más posibilidades de problemas y menor rendimiento.


Pero si además nos ponemos en un entorno virtualizado, necesitamos que nuestras máquinas virtuales consuman la menor cantidad de recursos posible, y ahí es donde entra en juego las versiones Core. Si no necesitamos las funcionalidades que nos da un GUI completo (y generalmente tras la instalación inicial ya no las vamos a usar), ¿para qué tenerlas gastando recursos? Todo lo que nos ahorremos redundará en más recursos disponibles para el host y resto de máquinas virtuales.


Y ahí es donde entra Windows Server 2012. ¿Quién no ha corrido a instalar un Server 2012 y cuando se ha dado cuenta se le ha instalado un Server Core? Ahora es la opción que muestra por defecto la instalación del servidor, y está hecho así a propósito, de tal forma que seamos nosotros los que elijamos la instalación con GUI si de verdad la necesitamos.


Con Server 2012 ha aumentado el número de roles de servidor que funcionan en Server Core, y se incluye por defecto soporte para aplicaciones que use .NET Framework 4.5. De hecho, también podemos instalar un SQL Server 2012 en modo Core.


Seguimos teniendo el comando sconfig para realizar la configuración inicial, y asignar de forma sencilla nombre y configuración IP, así como unirlo a un dominio y otras tareas básicas, tal como podemos ver en la siguiente figura.


sconfig


Por otro lado, Server Core tiene habilitada por defecto la administración remota (WinRM) y PowerShell, por lo que en cuanto tenga conectividad IP podremos directamente administrar de forma remota el servidor. Esto quiere decir que si añadimos un Server Core a la consola del Administrador del Servidor de nuestro equipo de administración, podremos administrar y configurar prácticamente totalmente nuestro servidor Core remoto sin necesidad de entrar en su consola para nada.


Pero una de las novedades más interesantes en este área de Windows Server 2012 es que en cualquier momento podemos cambiar de un Server Core a un servidor con GUI de forma sencilla y sin necesidad de reinstalar el servidor, del mismo modo que podemos hacer la operación inversa. Además, Windows Server 2012 nos ofrece un paso intermedio, el MinShell, que nos facilitará en cierto modo la administración si nos conectamos a la consola del equipo.


MinShell (Minimal Server Interface) es una solución intermedia entre un Server Core y un servidor con GUI en el que conjugamos el ahorro de recursos que nos proporciona el Core con la facilidad que nos proporcionan las herramientas de administración gráficas. MinShell habilita la mayor parte de las herramientas gráficas, incluida la mmc, sin necesidad de tener cargado el Shell gráfico completo.


Básicamente, el MinShell es una instalación de servidor completa al que se le quita lo siguiente:


  • Internet Explorer
  • Los componentes del Shell de Windows, como el escritorio y barra de tareas
  • El Explorador de Windows
  • La experiencia de usuario y multimedia
  • Soporte de aplicaciones Modernas (Metro), ni la pantalla de inicio.

O si lo queremos ver de otro modo, es un Server Core al que le hemos añadido el Administrador del Servidor, la mmc con las herramientas administrativas y algunas applets del panel de control.


Podemos pasar un servidor a MinShell añadiendo características desde un Core o quitándoselas a un servidor con GUI, y lo podemos hacer desde el asistente de Roles y Características o con PowerShell:


   > Install-WindowsFeature Server-Gui-Mgmt-Infra


 

Powershell 3 en Windows 8 y Server 2012

Hace unos días pregunté a los asistentes a una conferencia cuántos de ellos, IT pros la mayoría, usaban PowerShell en sus tareas de administración. No me llevé mucha sorpresa cuando ninguno levantó la mano, lo que me llevó a preguntarme el por qué;  la respuesta podría ser el miedo a lo desconocido, la comodidad de usar una herramienta gráfica en lugar de la línea de comandos. Y la verdad es que los administradores de más edad son mucho más abiertos a usar scripts y la línea de comandos que los más noveles.


Para ayudar a cambiar esta situación, PowerShell 3.0, la versión incluida en Windows 8 y Server 2012 trae muchísimas mejoras, gran parte de las mismas enfocadas a facilitar la curva de aprendizaje de los administradores que se acercan por primera vez a este lenguaje. Y me han sorprendido gratamente sus nuevas funcionalidades y mejoras de otras existentes que hacen que el trabajo con PowerShell se haga más cómodo que nunca.


Además de la propia ventana de comandos de PowerShell, tenemos una nueva versión del ISE (Integrated Script Environment), que hará las delicias de más de uno.


ISE 3.0 proporciona, además de la ventana de línea de comando, un panel de scripts donde podemos editar los mismos, y en ambas disponemos ahora de la funcionalidad “Intellisense”, que nos va a mostrar información sensible al contexto sobre los comandos que estamos escribiendo, permitiéndonos completarlos con los parámetros, propiedades y funciones que nos va proponiendo mediante listas desplegables que aparecen automáticamente. Además, tiene facilidades para la edición como la numeración de líneas y las regiones de código que se pueden contraer y expandir a voluntad.


También tiene la posibilidad de añadir estructuras de código predefinidas, pulsando la combinación de teclas CTRL-J, tanto para las estructuras de control clásicas (for, if, do-while,…) como para los nuevos “Workflows” de los que hablaré más adelante.


También se incluye a la derecha un panel de comandos, donde podemos consultar todos los disponibles (más de 2400 en esta versión), viendo sus parámetros y con la posibilidad de preparar de forma gráfica y sencilla el comando e insertarlo en nuestro código una vez completado, o ejecutarlo directamente en la ventana de comandos inferior.


ISE3.0


Una opción añadida de lo más interesante está en el menú Complementos – Abrir sitio web de herramientas de complemento, que nos lleva a una página en la que podemos encontrar diversos packs añadidos por la comunidad que proporcionan funcionalidad adicional a nuestro sistema, y en particular y proporcionada por Microsoft, el Script Explorer, que una vez instalado, nos da acceso a multitud de scripts y funciones de ejemplo, clasificadas por temas, que son totalmente funcionales, y que podemos adaptar a nuestras necesidades para a su vez construir nuestros propios scripts.


ScriptExplorer


Por lo que respecta al lenguaje en sí, PowerShell 3.0 incluye más de 2.400 cmdlets, en un total de 239 módulos, y que contemplan la mayoría de funcionalidades de Windows Server (Networking, Active Directory, Seguridad, DHCP, DNS, etc). Además, ya no es necesario cargar un módulo para usar los cmdlets definidos en el mismo, sino que se carga automáticamente al ejecutar el cmdlet.


La ayuda de PowerShell no está disponible al principio, salvo una ayuda básica que enumera los parámetros de cada comando. Para obtener la ayuda completa y actualizada se usa el comando Update-Help desde un equipo conectado a Internet. Este comando descarga la ayuda al equipo local, donde la podemos guardar posteriormente en una carpeta compartida con el comando Save-Help, de tal forma que después podremos ejecutar en otros ordenadores de nuestra red el comando Update-Help -SourcePath para descargar los archivos de ayuda desde esa carpeta compartida en lugar de desde Internet.


 Para facilitar la búsqueda de comandos disponemos del comando Get-Command, al que pasándole como parámetro el texto a buscar (incluyendo wildcards) nos va a mostrar la lista de comandos que cumplen con la expresión.


> Get-Command *-Net*


Una vez localizado el comando buscado, con Get-Help obtendremos ayuda detallada sobre el mismo.


> Get-Help  Disable-NetAdapter


Por fin, desde la ventana de comando de PowerShell también podemos acceder al panel de comandos (similar al del ISE), desde donde podemos rellenar y lanzar cualquier comando, salvo con la diferencia de que no podemos mantenerlo abierto constantemente, pues es necesario cerrarlo para poder continuar en la ventana de comando.


> Show-Command


En cuanto a mejoras del lenguaje, a los ya conocidos cmdlets, scripts y funciones, se añaden ahora los Workflows, que no son otra cosa que scripts preparados para ejecutarse durante largo tiempo y obtener información o realizar acciones en unos pocos o en cientos de equipos. Además, sus actividades (así se llaman los grupos de código que componen el Workflow) se pueden ejecutar en serie o de forma paralela, y si es necesario reiniciar un equipo durante la ejecución del Worlflow, éste puede esperar a que el equipo arranque, o a que tras el arranque esté disponible Windows PowerShell, la red o un servicio en particular, para continuar la ejecución del Workflow.


Otra de las nuevas características de PowerShell 3 es la Conectividad Robusta de Sesiones, que permite que una conexión PowerShell remota permanezca en estado de conexión durante pequeñas pérdidas de conectividad de red, hasta cuatro minutos. Los comandos continúan ejecutándose en el equipo de destino, y la sesión puede ser recuperada desde el mismo equipo (de forma automática o manual si se ha reiniciado el mismo) o desde otro equipo diferente. Si se sobrepasan los cuatro minutos sin que se haya restablecido la conectividad, la ejecución de comandos se suspende sin pérdida de datos y la sesión remota pasa a un estado desconectado, pudiéndose reconectar una vez restablecida la conectividad.


También se ha añadido nueva funcionalidad para realizar una programación avanzada para ejecución de scripts, mediante el uso de desencadenadores (triggers) para definir la periodicidad o causalidad de ejecución de los scripts (a una hora, diario, al inicio del equipo, etc).


Por fin, también como novedad disponemos de la característica “PowerShell Web Access”, instalable desde el asistente de roles y características, que nos va a permitir en el equipo en que la hayamos instalado publicar una página web desde la que tendremos acceso mediante PowerShell remoto a otros equipos de nuestra red. El escenario típico para usar esta característica es instalar este servidor en nuestra red perimetral, de tal forma que un usuario con los permisos adecuados pueda acceder a esa página PowerShell Web Access desde Internet, y a través de la misma administrar mediante PowerShell equipos de nuestra red interna.


Como hemos visto en este pequeño baño, PowerShell 3 incluye numerosas funcionalidades, gran parte de ellas encaminadas a hacer que los administradores se familiaricen con el lenguaje y se acostumbren a usarlo.

El nuevo Administrador del Servidor de Windows Server 2012

La administración de Windows Server tiene muchas características nuevas, así como mejoras sustanciales a otras ya existentes en versiones anteriores. El nuevo Administrador del Servidor (Server Manager) ha pasado de ser una herramienta útil prácticamente para la configuración inicial del servidor, a ser un punto centralizado de administración y seguimiento de todos los servidores de nuestra empresa u organización.


Una gran diferencia del nuevo Administrador del Servidor respecto del de Server 2008 R2 es que, mientras que éste está diseñado con un enfoque de conexión a un servidor, y entonces configuramos sus roles y características, el Administrador de Servidor de Windows Server 2012, sin perder la posibilidad de seguir usando este enfoque, usa por defecto un enfoque por rol, mostrándonos para cada tipo de rol el estado de cada uno de los servidores en que lo tengamos instalado. La ventaja de este nuevo diseño es que, en función de nuestras necesidades en cada momento, podemos usar una u otra forma de trabajar, siempre a nuestro gusto.


Hasta ahora, si queríamos administrar otros servidores, o nos conectábamos directamente a la consola del servidor, o establecíamos una conexión RDP al mismo, y trabajábamos en la sesión remota. Ahora con Windows Server 2012, esto ya no es necesario. En cualquier momento podemos añadir a nuestro Administrador del Servidor otros servidores de nuestra empresa, y automáticamente pasan a estar administrados desde nuestra consola, sin necesidad de establecer conexiones remotas.


Por otro lado, una vez hayamos añadido los distintos equipos a nuestro Administrador del Servidor, éste nos da la posibilidad de definir grupos de servidores, de tal forma que además de las distintas vistas por roles instalados, podemos ver así mismo nuestros equipos organizados según la estructura de nuestra empresa, ubicación física, sistema operativo o cualquier otro criterio que se ajuste a nuestras necesidades.


Otra novedad que nos ofrece es el nuevo asistente de instalación de roles y características, que ahora ya no se instalan por separado, sino que el mismo asistente nos permite configurar roles y características en un solo paso. Además, podemos realizar esta instalación no sólo en un servidor de los que tenemos conectados, sino también en un disco virtual sin necesidad de poner la máquina virtual online. El asistente tiene una apariencia muy similar a la que ya hemos visto en sistemas operativos anteriores, pero las modificaciones en este caso van por dentro. Para poder soportar esta instalación en discos vhd o vhdx, el asistente omite parte de la configuración realizada durante el propio asistente para que se ejecute una vez levantamos la máquina virtual.


Por otro lado, desde el Administrador del Servidor vamos a tener acceso a todo tipo de herramientas administrativas necesarias para administrar nuestros servidores.  Bien de forma contextual o desde el menú superior podemos lanzar las mismas para administrar cualquiera de los servidores conectados con el rol correspondiente.


En la siguiente figura podemos ver la pantalla principal del Administrador del Servidor, en la que podemos observar como el panel izquierdo está dispuesto por roles, de tal forma que al pinchar en cada uno de ellos veremos a la derecha información de estado referente a los servidores administrados que tengan instalado ese rol. El panel derecho, además de darnos acceso directo a las tareas de agregar servidores que administrar (de 2003 en adelante), crear grupos de servidores y lanzar el asistente de instalación de roles y características, nos muestra de forma resumida el estado por roles de todos los servidores administrados, y como podemos ver en rojo en la imagen, si en alguno de ellos se ha producido algún error o si está requiriendo atención para realizar alguna acción sobre el mismo.


ServerManager


En las siguientes imágenes vemos como al seleccionar un rol o un grupo de servidores (en este caso el grupo “Infraestructura para SharePoint”) nos muestra a la derecha gran cantidad de información, sobre el estado de los mismos (no olvidéis desde el nombre del servidor iniciar los contadores de rendimiento), eventos producidos en los servidores seleccionados, estado de los servicios, resultados del analizador de procedimientos recomendados que podemos ejecutar desde allí mismo, gráficos de rendimiento de los servidores y un resumen de los roles y características instalados.


ServerManagerGrupoInfraSharepoint


ServerManagerGrupoInfraSharepoint2


En resumen, si antes gran parte de los administradores usaban el administrador del servidor tan solo para la configuración inicial del equipo y poco más, deshabilitando a continuación el arranque automático de la aplicación, ahora vemos que el valor añadido que se le ha incorporado va a hacer las delicias de más de uno, por el grado de centralización de la administración que nos proporciona.


 Por otro lado, aunque se pueden instalar en un cliente las herramientas administrativas, no vamos a poder disponer de parte de las funcionalidades, como la instalación de roles y características desde el equipo de administración, por lo que es más que recomendable seleccionar un servidor Windows Server 2012 como equipo de administración con la consola del Administrador del Servidor y configurarla para que administre todos los servidores de nuestra organización.