IThastobecool.com

Geeks have opinions too!

Browsing Posts tagged Cool!

Ok… I have been playing with Citrix XenClient for a while now, and I like it a lot!
Yes it has it’s quirks, bugs and issues, but what can we expect from a RC! So far I think Citrix has done an amazing job… to you XenClient developers, we salute you!

Ok, let’s get to the point.
This XenClient is awesome, but how are customers going to DEPLOY it to their systems? Using the CD was no option ofcourse!

So against all my geek instincts, I decided to read the XenClient manual. And b00m! They support installation using a PXELINUX server! Whooho!
But how many big enterprises, that are Windows houses have a PXELINUX server installed? Outside of universities I rarely see client deployment systems for Linux. Most of my customers use either MDT or SCCM to deploy their client machines. So I combined the steps in the XenClient manual, with my (very very very limited) knowledge of Linux systems. And came up with the following solution.

I created a script that will run from WindowsPE, install the necessary boot files onto a 100 mb fat partition. Inject your custom answerfile(s) and reboot the computer into the XenClient installation using the answerfile you have passed as an argument :)

VERY IMPORTANT. This script assumes that there is a 100mb (or more) FAT volume mounted to driveletter C: during the WindowsPE phase. Use the partitioning of MDT/SCCM to do this. Or create your own custom diskpart script, if you want to run it from Windows PE.

I use some free GNUWin / UnixTools for this script, which are not included in the download. But I provide the link where you can download them :)

So here are the instructions:

  • Copy the packages.main folder from the XenClient cd to a location on a http or ftp server.
    The parent location of the packages.main folder is inserted in the answerfile.
    In my case I have a webserver at http://10.0.0.12 in which I created a subfolder xenclient. In my answerfile I refer to http://10.0.0.12/xenclient as the source URL for the packages.

image

  • Creating the package
  1. Download and extract my zip file to C:\XCInstaller for example
  2. Download cpio for windows from http://sourceforge.net/projects/gnuwin32/files/cpio/ and extract cpio.exe to C:\XCInstaller\bin
    IMPORTANT, download version 2.4.2 (bin), because the commands I use in my script seem to be broken in higher versions
  3. Download UnxUtils from http://sourceforge.net/projects/unxutils/ and extract usr\local\wbin\gzip.exe to C:\XCInstaller\bin
  4. Download Syslinux from http://www.kernel.org/pub/linux/utils/boot/syslinux/ and extract win32\syslinux.exe to C:\XCInstaller\bin
  5. Insert your XenClient cd and copy all files from the boot directory of the XenClient cd to C:\XCInstaller\boot
  • Creating one or more answerfiles and place them in C:\XCInstaller\answerfiles

Here is an example of my answerfile

<interactive>false</interactive>
<mode>fresh</mode>
<source type=”url”>http://10.0.0.12/xenclient</source>
<primary-disk>sda</primary-disk>
<network-interface mode=”dhcp”></network-interface>
<password>somepassword</password>
<enable-ssh>true</enable-ssh>
<license-key></license-key>

For a full reference of the answerfile, please consult the XenClient User Manual.

  • Running the package

This script can be run from within WindowsPE, so this means that you can either use a vanilla WinPE boot image, or use MDT or SCCM to start this script. I will give an example for all three scenarios :)

NOTE: The .cmd file takes an answerfile name as a a parameter.
For example you have 2 answerfiles: fullunattend.txt and quickoptions.txt
If you want to install this machine using fullunattend.txt you can use InstallXenClient.cmd fullunattend.txt
If you do not specify a answerfile, the script will default back to the LAST answerfile found in the answerfiles directory. so if you have an answerfile called a.txt and an answerfile called z.txt and you did not specify the answerfile name, the script will default to z.txt

Vanilla Windows PE

  • Share the C:\XCInstaller folder so you can access it via the network (in my case I host it on my windows server: 10.0.0.140)
  • Start your target machine in Windows PE
  • Partition and format the disk using diskpart:
    select disk 0
    clean
    create partition primary size=100
    select partition 1
    format fs=fat quick
    assign letter=c
    exit

image

  • Connect to the XCInstaller share
    (in my case: net use \\10.0.0.140\XCInstaller)
  • Start the script
    \\10.0.0.140\XCInstaller\InstallXenClient.cmd
    NOTE: The .cmd file takes an answerfile name as a a parameter.
    For example you have 2 answerfiles: fullunattend.txt and quickoptions.txt
    If you want to install this machine using fullunattend.txt you can use InstallXenClient.cmd fullunattend.txt
    If you do not specify a answerfile, the script will default back to the LAST answerfile found in the answerfiles directory.
  • Reboot the machine and VOILA! Your xenserver installation is installing using your answerfile!

Microsoft Deployment Toolkit

  • Import the XCInstaller directory as an application in MDT

image

  • Create a new custom task-sequence called Install XenClient

image

  • Add the following steps to the task-sequence
    Fake a NEWCOMPUTER DEPLOYMENT TYPE, otherwise the diskpartitioning will fail.
    image
    Partition the disk to a 100mb fat partition
    image
    Start the InstallXenClient.cmd
    image
    Reboot the computer in the XenClient installation
    image

NOTE: It is very important that you do not use the Install Application step, but the custom command line step for the installation. The install application step will not run from within the WinPE phase of MDT. Point this command line to z:\Applications\YOURIMPORTDIRNAME\InstallXenClient.cmd (which is mounted by default by MDT to the distribution share)

SCCM
For SCCM the steps are almost identical as to MDT. Instead of importing an application > create a new package. For the SCCM task-sequence you only need 3 steps:

  • Format and Partition disk (make a 100mb fat partition)
  • Run Command Line (point it to run from package) InstallXenClient.cmd
  • Reboot Computer (in the target partition)

Et voila! Watch your target machine installing XenClient! Here are some“old-fashioned” screenshots, to prove I have it running. Seeing as XenClient requires VTx I couldn’t test it inside a VM and had to use a physical machine… (just an explanation for the photo’s)

IMG_0128

IMG_0129

IMG_0130

IMG_0133

IMG_0134

IMG_0135

IMG_0136

Download zip file

Have fun with this!
-Henk Hofs

Mark just gave me the heads up that he and Jeroen released VSI 2.0!!

I would like to congratulate Mark and Jeroen on this awesome achievement! You guys can be proud of yourselves!!!

The beta 3 was very well received, just a couple minor fixes were required, and we updated the documentation. In comparison to VSI 1.0 we made tremendous improvements in the overall quality and reliability of VSI.

Feel free to mention this on your website (if you think this is interesting of course). We do not have an official press release, but for your convenience we made a summary you can use:

Login Consultants releases the brand new and free VSI 2.0, a specifically designed benchmark for SBC and VDI environments. VSI loads the system with simulated user workload, and focuses on how much users can run on the system before it saturates. VSI is 100% platform and protocol independent, and VSI configuration is simplified and automated where possible. As a result, VSI is a turn-key benchmark solution: perform tests within days instead of weeks. No need to create the workloads first. VSI is intended to be used by VDI/SBC engineers/admins, a degree in testing methodologies is not required.

VSI 2.0 introduces new workloads, and an improved indexing method: VSImax. Overall, VSI 2.0 will be a much smoother experience in comparison to VSI 1.0, many best practices and lessons learned from project VRC are now included in this release. The free version is called “VSI 2.0 Express”, the advanced version is “VSI 2.0 PRO”.

The most important 2.0 features are:

  • Completely new, more realistic, medium workload
  • Support for IE8, Office 2010, Windows 7 and Windows 2008 R2
  • Highly improved robustness (even under extreme loads)
  • Improved response timer mechanism and index: VSImax
  • Over 100 fixes and usability improvements
  • Multilanguage Support (PRO only)
  • Other workloads such as: light, heavy and multimedia (PRO only)
  • External clock calibration and response time measurement (PRO only)
  • Customization Support (PRO only)

VSI can be downloaded from Login Consultants download section: http://www.loginconsultants.com/index.php?option=com_docman&task=cat_view&gid=20&Itemid=149 .”

 

As Mark pointed out in his earlier post: The VMware Thinapp team really needs to wake up… it’s not acceptable (from my point of view) to still not have Windows 7 support for you application virtualization product!!

Mark pointed me to an alternative called Xenocode: This is looks a LOT like Thinapp/Thinstall and works on Windows 7 as well :)

Virtualizing Applications

To get started, first go to www.xenocode.com and download the Virtual Application Studio.
When you fire up the VAS you get a wizard which provides you with 3 ways of virtualizing your application:

image

The first option allows users to easily virtualize an application using a template. This template contains all the settings for virtualizing an application. It’s as easy as next next finish :) . This is really awesome for organizations where you want your application support team to virtualize the application, as they don’t have to know in-depth how application virtualization works :) .

The second option allows users to virtualize an application the way we know it from VMware Thinapp. It first takes a snapshot of the computer, then prompts the user to install the application /set configuration options etc and then takes another snapshot and does a diff on the snapshots to determine what files and registry settings should be in the virtual application.

The third option allows users to manually specify the files/folders and registry settings that are required for this application to run (really useful when virtualizing your in-house developed applications, seeing as the developers know exactly what file should go where, and you don’t get any clutter from background processes etc.)

After you captured your application, you can easily include common runtimes from the runtimes tab (such as the .NET frameworks, java, flash etc)

image

The toolbar on the left side of the screen gives us access to the various parts of the virtual application, such as File system, Registry etc.

image

I’ts also possible to generate a MSI package for the virtual application for easier deployment using SCCM/MDT/GPO/Whatever you use to deploy your software to your users.

image

For troubleshooting your virtual application Xenocode provides a checkbox to Generate diagnostic-mode executable. Basically what this does is create an executable that will output logging in 3 log files next to the application, so if something is not working in your application, you can easily troubleshoot :)

image

If you enabled it in your application settings (on by default) it’s also possible to pass command line switches to your application at startup time.

    • /XEnv=Variable Name=Value Specifies additional environment variables.  Multiple /XEnv arguments can be used to add additional environment variables.
    • /XLayerPath=Layer Path Adds the given xlayer file into the virtual environment.  Multiple /XLayerPath arguments can be used to add additional virtual layers.
    • /XSandboxPath=Sandbox Path Specifies the path to be used for the application sandbox.
    • /XShellEx=Command Specifies a shell execute command to be launched from within the virtual application environment.  This option overrides any startup files specified in the virtual application configuration.  Only one /XShellEx argument can be specified.
    • /XShellExVerb=Command Verb Specifies the verb to be used in conjunction with the XShellEx command.  The default verb is OPEN.
Middleware

When dealing with middleware, in Thnapp we could specify an applink and with App-V we can use dynamic suiting to allow for interbubble communications. In Xenocode you don’t make an application for your middleware, but make it a component, which you can import in your applications.

image

image

 
Deploying Virtual Applications

Deployment of the virtual applications is done through a tool called XReg. This allow the administrator to control how the application is published to the user.

image

 

This can be done from a startup/logon script. This area needs some more work in my perspective, there’s not a nice and nifty GUI management interface as with App-V.

Also the possibility to create MSI’s makes deployment a bit easier, just use your favorite deployment method for your virtual applications.

Pricing

Not the most fun part for us techies, but important for the ones who have to make the decisions about investments, and what application virtualization technology will be used.

The Xenocode Virtual Application Studio ISV Edition costs $1599

End-User licenses: $40 per seat.

 

Well that’s about it :) . As a final conclusion i think Xenocode is a real nice application virtualization product, it works easily and out of the box, users don’t have to know a lot about Windows and application when you just give them the right application templates :) . As with VMware Thinapp, the problem is how to distribute the applications to your clients, and how do you make sure that all users have the latest version of the virtualized application… well that’s something the Xenocode team needs to think about I guess.

The Release Candidate for MDT 2010 just went public!
This release promises a lot of bug fixes and is tested with pre-RC build of Config Manager 2007 SP2.

Sign up for it here: https://connect.microsoft.com/site/sitehome.aspx?SiteID=14

Don’t you just wish you could set all your clients to boot from network, and let the PXE server evaluate whether or not it should load the WinPE image to redeploy the computer? Well you can with SCCM using mandatory advertisements of course… but I’ve written a little script that will achieve the same functionality using native MDT, without the use of the SCCM infrastructure :)

Here’s how you do it:

  • Requirements:
    • MDT2010 (beta 2) /WDS installed on Windows Server 2008
    • Powershell enabled on the WDS server
    • MDT deployment share configured to use the database (i’m using an SQLEXPRESS instance configured on the same machine as MDT/WDS in this example)
    • SQL Server Management Studio or equal SQL server management tooling for editing the database.

Ok here we go and setting it up. First some simple stuff :)

  • Set your WDS server to admin approval mode

image

  • On the Directory Services tab, make sure you set the OU location in which the WDS server will create the temporary computer object for approved devices

image

  • Make sure your WDS server account has full control on the OU set in the WDS directory services

image

Ok, that was easy now wasn’t it?

Now let’s edit the MDT database to fit our needs. This assumes your already set up your database using the database wizard in the MDT Workbench.

  • Start the SQL Management Studio application and expand the MDT database (MDT_DB in this example)
  • Browse to Tables –> dbo.Settings –> Columns

image

  • Right click Collumns and select New Column

image

  • Give the new column the name of netBoot and type nvarchar(50)

image

  • Save and close the SQL management studio
  • Verify the database expansion was successful by opening the MDT Workbench and navigating to the database view > Computers > properties

image

  • Select the Details tab and browse all the way to the bottom to verify that the netBoot value is there

image

Ok, that was part 1 of the configuration. Now we have to know what to actually do with this extra field in the database. Well that’s where my script comes in. Here’s how you install it.

  • Run the following command as an administrator on the WDS/MDT server:
    • Server 2008: Powershell.exe –command “ & {Set-ExecutionPolicy Unrestricted } “
    • Server 2008 R2: Powershell.exe –command “ & {Set-ExecutionPolicy Bypass } “
  • Download the MDT-ZTI.ps1 file to your WDS/MDT server (in this example I’m using D:\MDT-ZTI.ps1)
  • Start Task Scheduler and Right click library > Create Task

image

  • Give the task a name of your liking. I’m using MDT-ZTI in this example.

image

  • On the triggers tab select: New

image

  • Begin the task: On an event

image

  • Log: Microsoft-Windows-Deployment-Services-Diagnostics/Operational
  • Source: Deployment-Services-Diagnostics
  • EventID: 4096
  • Click Ok and go to the Actions tab and select New

image

  • Add action

image

  • Start a Program
  • Program/Script: Powershell.exe
  • Add Arguments(optional): –command D:\MDT-ZTI.ps1

Ok the ZeroTouch “service” is almost ready to go. Now there’s another thing that we need to configure… we have expanded the MDT database to contain an extra column…  but how does the service know what database and what database server to use?. Well that is hardcoded in the top of the configuration of the MDT-ZTI.ps1 file. In the future I will be using params() from powershell, but for now just change it in the top of the script.

# //***************************************************************************
# // Configuration:
# // Notes: Set the database name and datasource for your environment here.
# // For SQLEXPRESS on the same server use "\SQLEXPRESS" as datasource  # //***************************************************************************
$Database = "MDT_DB"
$DataSource = ".\SQLEXPRESS"

 

 

Now how does the “service” know what computers are allowed to boot into WinPE and what computers should boot to the next boot device? That’s a simple 3 part answer:

  1. Every computer that is NOT in the MDT database will be rejected (pxeabort.com) by the ZTI.
  2. Every computer that IS IN the MDT database will be polled for the value of netBoot.
  3. If the value of netBoot does not equal FALSE it will approve the device so it will load the boot image, and then set netBoot to FALSE so the device won’t load the boot image on the next reboot :)

So if you have a computer which is not booting into winPE just clear the netBoot field in the database and on the next reboot it will boot into winPE.

IMPORTANT: Please be sure to test this first in a test environment first, it is not recommended to implement this in production directly.

Download:  MDT-ZTI

Well, I’m not going to re-invent the wheel here, seeing as Michael Niehaus (the lead engingeer on MDT) already wrote very very nice articles on the new features of MDT 2010 beta 2.

New features 1 to 11

New features 12 to 18

Yesterday I wrote about the Problem Steps Recorder and how it can help us lazy IT admins who have to screenshot some setups/manual actions for recipe files or documentation in general. When I was messing around with the PSR I found out one really annoying fact: the PSR window is always on top in all the problem report screenshots.. That’s not really nice for our documentation now is it? So I wrote this quick Auto-IT script that Starts PSR>start recording>wait until ESC key is pressed>stop recording>ask where to save file

Download the script from here

Here is the code (simple ofcourse ;) )

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Problem steps recorder script
;; V1.0 HHO Login Consultants
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
#include <Misc.au3>
Run("psr.exe")
WinActivate("Problem Steps Recorder")
WinWaitActive("Problem Steps Recorder")
Send("{ALTDOWN}a{ALTUP}")
WinSetState("Problem Steps Recorder", "", @SW_HIDE)
while 1
	if _IsPressed("1B") then ExitLoop
WEnd
WinSetState("Problem Steps Recorder", "", @SW_SHOW)
WinActivate("Problem Steps Recorder")
WinWaitActive("Problem Steps Recorder")
Send("{ALTDOWN}o{ALTUP}")

When you have to help out users with their problem, nothing is more frustrating then the users’ inability to clearly state what their problem is, and how they got to the point where it went wrong. Fortunatly, Windows 7 packs a really really really awesome tool that will get rid of those problem once and for all: the Problem Steps Recorder.


This nifty little tool records the users’ screen and outputs all relevant information in a MHTML document, which will contain all screenshots and steps needed by the helpdesk user. Thanks to Ment van der Plas for pointing this tool out to me :D

You can start Problem Steps Recorder by Start>Run>psr.exe and try it out :)

This tool is also very very very interesting for all us lazy IT guys, who don’t want to screenshot their installations for recipe files etc :)

In case you’ve missed all the blog entries about it, Microsoft Press has made available the full text of the Windows Vista Resource Kit book, downloadable as a PDF file.  See http://csna01.libredigital.com/?urws8un4p7 for the details.

Chapter 12 in this book is all about deploying with Microsoft Deployment Toolkit 2008. There are some nice examples on how to automate LTI deployments, as well as configuring ZTI deployments. In total there are 58 pages of MDT goodness in there :) .

There are plenty of familiar names in the acknowledgements section, including a few names (Michael Niehaus, Jerry Honeycutt, Tony Northup, Doug Steen, Dave Field) that have worked with the MDT team over the years on the MDT documentation.

Its, Monday morning so time for some fun!

 

A customer asked me if it was possible to install Internet explorer 8 beta, and still be able to use Internet explorer 7 for old applications (in their test environment). Of course I answered and immediately started testing. As you all know Microsoft app-v does not support sequencing internet explorer so the best thing to do was use VMware’s Thinapp. My base image is an Windows XP SP3 machine, SP3 does not install IE7 or IE7 updates unless you already installed IE7 before upgrading to SP3 (see Microsoft KB) To successfully sequence IE7 to work together with IE8 download the following files:

 

             WindowsXP-KB957095-x86-ENU

             WindowsXP-KB958644-x86-ENU

             Nlsdl.exe (microsoft)

             idndl.exe (microsoft)

             IE7-WindowsXP-x86-enu.exe

 

These downloads will definitely save you some time finding out exactly witch updates you need, after this the Thinapp part is pretty straight forward.

 

             Install updates

             Start capture

             Install IE7

             Stop capture

             Revert machine

             Install IE8

             Start the tests :)

 

Because this is a fast proof of concept test, I challenge you to drop some improvements in the comments to make it even better.