<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
 
 <title>Things and such</title>
 <link href="http://www.letifer.org/" rel="self"/>
 <link href="http://www.letifer.org"/>
 <updated>2025-04-07T18:51:01+00:00</updated>
 <id>http://www.letifer.org</id>
 <author>
   <name>Jeremy Jones</name>
   <email>jeremyj@letifer.org</email>
 </author>

 
 <entry>
   <title>Installing Windows with cobbler</title>
   <link href="http://www.letifer.org/2014/03/26/cobbler-and-windows"/>
   <updated>2014-03-26T00:00:00+00:00</updated>
   <id>http://www.letifer.org/2014/03/26/cobbler-and-windows</id>
   <content type="html">
&lt;p&gt;When you run a dynamic data center environment, there are many tools that you use to ensure that everything runs smooth.  One of the most important tools you’ll use is your provisioning system.  In a dynamic environment, systems are spun up and down frequently, and having a proper set of tools to manage provisioning tasks keeps workloads low.&lt;/p&gt;

&lt;p&gt;There are many provisioning tools floating around out there.  From commercial products, like &lt;a href=&quot;http://www.microsoft.com/en-us/server-cloud/products/system-center-2012-r2/default.aspx&quot;&gt;SCCM&lt;/a&gt; and &lt;a href=&quot;http://www.ibm.com/software/tivoli/&quot;&gt;IBM’s Tivolli Suite&lt;/a&gt;, to various open source and free solutions.  One of my favorites is &lt;a href=&quot;http://www.cobblerd.org/&quot;&gt;Cobbler&lt;/a&gt;.  Cobbler works great for Linux and (most) other UNIX like systems, but doesn’t handle Windows so well.&lt;/p&gt;

&lt;p&gt;Fortunately, there is a way to use cobbler with windows, and even, integrate configuration management.  In this post, I’ll explore the steps required to provision Windows virtual and physical machines using cobbler.  Before we get too far, there’s a few things you’ll need:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;A Technician machine&lt;/p&gt;

    &lt;p&gt;This is the term that Microsoft uses to refer to a Windows system that is used to run the tools and other operations that are part of automated deployment.  This machine can be any version of Windows, so long as the WAIK tools can run.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;http://www.microsoft.com/en-us/download/details.aspx?id=5753&quot;&gt;The Windows Automated Installation Kit&lt;/a&gt; (AIK)&lt;/p&gt;

    &lt;p&gt;The Windows AIK is a set of tools for generating custom install CDs, manipulating &lt;a href=&quot;http://en.wikipedia.org/wiki/Windows_Imaging_Format&quot;&gt;Windows Image Format&lt;/a&gt;, or WIM, files, and creating Windows installation answer files.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;A Windows install CD or ISO image.&lt;/p&gt;

    &lt;p&gt;I used a Windows 7 Enterprise Edition (AMD64) ISO.  Since the installation files will still come from this CD, you’ll need the proper media for each Windows version you want to support.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Curl for windows&lt;/p&gt;

    &lt;p&gt;To my knowledge, WinPE doesn’t have any good way to get data via HTTP.  Curl is an easy way to add that functionality.  Note, be sure to use the version of curl that matches your architecture.  This example targets AMD64; the 32 bit compat layer will not be installed (to reduce image size).&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;A working Cobbler instance.&lt;/p&gt;

    &lt;p&gt;Obviously, you’ll need cobbler.  I highly recommend that you get cobbler working for Linux installs prior to attempting Windows.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Once all of your tools are installed and working, we should be ready to start.  The majority of the beginning steps will need to be performed on your technician computer.  It should be noted that, even in a Windows environment, I tend to rely on a command prompt (powershell) for the majority of my work.  As such, most of the examples will be given as commands to be executed in a command interpreter.  Be sure that your path is set up properly before beginning (beyond the scope of this tutorial).&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;Getting Started&lt;/p&gt;

&lt;p&gt;There are several ways to get a Windows installation started.  The method I chose integrates well with cobbler, and is easy to generate and manipulate.  Were are going to build a custom &lt;a href=&quot;http://en.wikipedia.org/wiki/Windows_Preinstallation_Environment&quot;&gt;Windows PE&lt;/a&gt; CD image that can be booted over the network, and used to start the install process.&lt;/p&gt;

&lt;p&gt;First we’ll need a working environment.  This is created with the copype utility from AIK.&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;copype amd64 c:\winpe
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;This will create the directories and files we’ll use to create our image, including a base Winpe.wim, which we’ll modify to get our install working.  Let’s go ahead and mount that WinPE image…  Again, AIK gives us the tool for the job:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;imagex /mountrw c:\winpe\winpe.wim 1 c:\winpe\mount
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;You could also use the dism tool.  Dism is a new utility that integrates many of the the AIK tools into a single application.  You’ll actually need to use dism if you need to add drivers or packages to your WinPE image.  I’m more familiar with imagex, so that’s what my examples will use.&lt;/p&gt;

&lt;p&gt;We want to maximize the amount of work that cobbler does, but there’s a few pre-install tasks that we’ll need in order to work around the limitations of the windows install system.  To make things easier when we need to make changes in the future, we’ll modularize as much as we can.  To start things off, we need to create a configuration file for &lt;a href=&quot;http://technet.microsoft.com/en-us/library/cc766156.aspx&quot;&gt;winpeshl&lt;/a&gt;.  The config file (in the example environment) will be &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;c:\winpe\mount\windows\system32\winpeshl.ini&lt;/code&gt;.&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;[LaunchApps]
wpeinit
%SYSTEMDRIVE%\local\init.cmd
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;This is a simple set of commands that &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;winpeshl&lt;/code&gt; will execute to start up the windows shell.  In this case, we’re calling &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;wpeinit&lt;/code&gt;, then a script, which will get our install started.  &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;wpeinit&lt;/code&gt; is a WinPE utility that initializes the Windows PE environment, including, loading any drivers that have been added to your WinPE image.  Now we’ll need a couple of scripts to finish setting up our environment.&lt;/p&gt;

&lt;p&gt;Unfortunately, I do not know of a way to pass command line options into WinPE, so this is the one place that we’ll need to hard code the host name of our cobbler server.  There are a couple of pieces of information that will be needed to get our install going properly.  These will be obtained in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;init.cmd&lt;/code&gt;.  To keep things separated, lets put everything in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;%SYSTEMDRIVE%\local&lt;/code&gt;.  &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;%SYSTEMDRIVE%&lt;/code&gt; is a windows environment variable that stores the drive letter of the  partition that the windows system is on.  In WinPE, this is almost always &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;X:&lt;/code&gt;, but to be safe, we’ll use the env var.  So let’s create a local scripts directory:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;mkdir c:\winpe\mount\local
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;and start creating our scripts.  We’ll start with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;setsysname.cmd&lt;/code&gt; (&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;c:\winpe\mount\local\setsysname.cmd&lt;/code&gt;):&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;@echo off

set COBBLER_SERV=cobbler.example.net
set COBBLER_MAC=

for /f &quot;tokens=1 delims= &quot; %%H in (&apos;nbtstat -n ^| find &quot;UNIQUE&quot;&apos;) do set COBBLER_HNAME=%%H
for /f &quot;tokens=4 delims= &quot; %%M in (&apos;nbtstat -a %COBBLER_HNAME% ^| find &quot;MAC Address&quot;&apos;) do set COBBLER_MAC=%%M
for /f &quot;tokens=1-6 delims=- &quot; %%a in (&apos;echo %COBBLER_MAC%&apos;) do set COBBLER_MAC=%%a:%%b:%%c:%%d:%%e:%%f

for /f &quot;delims= &quot; %%S in (&apos;curl -s http://%COBBLER_SERV%/cblr/svc/op/autodetect/HTTP_X_RHN_PROVISIONING_MAC_0/eth0%%20%COBBLER_MAC%&apos;) do set COBBLER_SYSNAME=%%S
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;setsysname&lt;/code&gt; will create an environment variable (&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;COBBLER_SYSNAME&lt;/code&gt;) with the system name based on the systems MAC address.  Note, this uses an unsupported feature of cobbler that could be removed in the future.  Again, we need to hard code the cobbler server hostname here.  With that done, let’s create our &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;init.cmd&lt;/code&gt; in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;c:\winpe\mount\local\init.cmd&lt;/code&gt;&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;@echo off

rem set COBBLER_SYSTEMNAME and COBBLER_SERV
%SYSTEMDRIVE%\local\setsysname.cmd

rem get the remainder of the init scripts
curl -s -o %TEMP%/mountmedia.cmd http://%COBBLER_SERV%/cblr/svc/op/script/system/%COBBLER_SYSNAME%/?script=mountmedia.cmd
curl -s -o %TEMP%/getks.cmd http://%COBBLER_SERV%/cblr/svc/op/script/system/%COBBLER_SYSNAME%/?script=getks.cmd
curl -s -o %TEMP%/runsetup.cmd http://%COBBLER_SERV%/cblr/svc/op/script/system/%COBBLER_SYSNAME%/?script=runsetup.cmd

rem run &apos;em
call %TEMP%\mountmedia.cmd
call %TEMP%\getks.cmd
call %TEMP%\runsetup.cmd
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Make sure you’ve added &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;curl&lt;/code&gt; to your wim.  From the curl binary zipfile, copy &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;dlls\\*.*&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;bin\\*.*&lt;/code&gt; to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;c:\winpe\mount\windows\system32&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;That should conclude our WIM modifications.  Unmount it:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;imagex /unmount c:\winpe\mount /commit
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;and copy it into the ISO directory:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;cp c:\winpe\winpe.wim c:\winpe\ISO\sources\boot.wim
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Now, let’s create a CD image.  This is done with the oscdimg tool:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;oscdimg -n -bc:\winpe\etfsboot.com c:\winpe\ISO c:\winpe\winpe_cobbler_amd64.iso
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;We have one final task that to do on the technician computer.  Fire up the Windows System Image Manager and create an answer file for your windows install.  How to do this is beyond the scope of this discussion, but &lt;a href=&quot;http://technet.microsoft.com/en-us/library/cc749317.aspx&quot;&gt;tutorials&lt;/a&gt; should be easy enough to find.&lt;/p&gt;

&lt;p&gt;Now that we’re done with the windows side, copy your custom WinPE ISO, your Windows 7 ISO, and answer file to your cobbler server, and store them in appropriate locations.  On my system (Ubuntu 13.10), I placed my answer file in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/var/lib/cobbler/kickstarts&lt;/code&gt;, my WinPE ISO in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/var/lib/cobbler/isos&lt;/code&gt;, and left my Win7 ISO in my homedir (we actually need to extract it).&lt;/p&gt;

&lt;p&gt;Mount the Windows 7 ISO someplace, and copy the contents to a location that you can share via &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;samba&lt;/code&gt;.  If you do not plan to use the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;pxe_just_once&lt;/code&gt; feature of cobbler, then there’s no need to extract the contents of the ISO.  Just mount it, and share the directory.  If it’s not already installed, install samba on your cobbler server, and add a share:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;[global]
security = user
guest account = nobody
map to guest = Bad User

[REMINST]
browsable = true
read only = no
guest only = yes
path = /var/windowsmedia
public = yes
available = yes
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Adjust as is appropriate for your environment.  Our server is joined to an AD domain (security=ads), so we ran into a few problems getting things working just right.  The above should work for most cases, though.  Restart samba, and test that your share is working.  Since we use this method for several different versions of Windows, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/var/windowsmedia&lt;/code&gt; has a sub-directory for each version of Windows we deploy via cobbler.  Now, add a new distro to cobbler, using syslinux’s memdisk as the kernel:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;cobbler distro add --name=windows7-x86_64 --kernel=/usr/lib/syslinux/memdisk --initrd=/var/lib/cobbler/isos/winpe_amd64.iso --kopts=&quot;raw iso&quot;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;and a profile&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;cobbler profile add --name=windows7-x86_64 --distro=windows7-x86_64 --kickstart=/var/lib/cobbler/kickstarts/win7-amd64-unattend.xml
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Edit your answer file, and replace any bits (such as ComputerName with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$system_name&lt;/code&gt;) with appropriate template variables.  Remember, the windows answer file will be passed through the same template engine used for kickstarts and preseeds.  This means that you can use ksmeta vars, built-ins, and  expressions (including snippets) like any other kickstart.&lt;/p&gt;

&lt;p&gt;We’ll also need a couple of supporting scripts.  These will go in your scripts directory (&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/var/lib/cobbler/scripts&lt;/code&gt; on my system).  The first is &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;mountmedia.cmd&lt;/code&gt;.  This script will mount your samba share, on the booted WinPE instance (it’s run by &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;init.cmd&lt;/code&gt; above)&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;@echo off

#set smb_srv = &apos;\\\\%s&apos; % ($http_server)

echo Mounting Network Drive...
net use Q: $smb_srv\REMINST &quot;&quot; /user:$http_server\nobody
set COBBLER_MEDIA=Q:
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Again, these are passed through cobbler’s template engine, so feel free to get creative.  Be aware, WinPE’s net use command expects a domain and username.  In my case, I used my cobbler server as my domain and nobody and the user, with no password.  Due to the “map to guest = Bad User” setting in our samba config, this will cause the share to be mounted as guest.  Of course, you can use real user names and passwords if you want.&lt;/p&gt;

&lt;p&gt;getks.cmd&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;@echo off

echo Retreiving unattend.xml
curl -s -o %TEMP%\unattended.xml http://%COBBLER_SERV%/cblr/svc/op/ks/system/%COBBLER_SYSNAME%
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;runsetup.cmd&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;@echo off

echo Starting setup...
call %COBBLER_MEDIA%\win7\setup.exe /unattend:%TEMP%\unattended.xml
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Now you’re ready to add a system as you normally would.  If you are not using &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;pxe_just_once&lt;/code&gt;, then you’re done.  There’s one final step that needs to be completed if you are using &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;pxe_just_once&lt;/code&gt;.  You need a post install script to disables PXE.  In the directory where you extracted your Windows7 ISO, create &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;sources/$oem$/$$/Setup&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;source/$oem$/$$/system32&lt;/code&gt;. Into &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Setup&lt;/code&gt;, place a copy of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;setsysname.cmd&lt;/code&gt; and rename it to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;setupcomplete.cmd&lt;/code&gt;.  Into &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;system32&lt;/code&gt; copy your curl, dlls, and executables.  Edit &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;setupcomplete.cmd&lt;/code&gt; to look like&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;@echo off

set COBBLER_SERV=cobbler.example.net
set COBBLER_MAC=

for /f &quot;tokens=1 delims= &quot; %%H in (&apos;nbtstat -n ^| find &quot;UNIQUE&quot;&apos;) do set COBBLER_HNAME=%%H
for /f &quot;tokens=4 delims= &quot; %%M in (&apos;nbtstat -a %COBBLER_HNAME% ^| find &quot;MAC Address&quot;&apos;) do set COBBLER_MAC=%%M
for /f &quot;tokens=1-6 delims=- &quot; %%a in (&apos;echo %COBBLER_MAC%&apos;) do set COBBLER_MAC=%%a:%%b:%%c:%%d:%%e:%%f

for /f &quot;delims= &quot; %%S in (&apos;curl -s http://%COBBLER_SERV%/cblr/svc/op/autodetect/HTTP_X_RHN_PROVISIONING_MAC_0/eth0%%20%COBBLER_MAC%&apos;) do set COBBLER_SYSNAME=%%S

%SYSTEMROOT%/system32/curl -s http://%COBBLER_SERV%/cblr/svc/op/trig/mode/post/system/$COBBLER_SYSNAME%
%SYSTEMROOT%/system32/curl -s http://%COBBLER_SERV%/cblr/svc/op/nopxe/system/$COBBLER_SYSNAME%
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;hr /&gt;

&lt;p&gt;Conclusions&lt;/p&gt;

&lt;p&gt;There’s still a few details that I’d like to work out.  First is how to pass command line options (aka kopts) to WinPE on boot.  Being able to do that would eliminate the need for hard coding the name of the cobbler server into setsysname.cmd.  I’m not as familiar with WindowsPE and the windows installer as I’d like to be, but there doesn’t seem to be a way to do it.  One possibility is creating a BCD for each profile/distro, and snagging that via TFTP during bootup (there seems to be a mechanism for using multiple BCDs during boot, but I’m not familiar with how to do it).  Using such a mechanism, I could retrieve everything else without doing a discovery step.&lt;/p&gt;

&lt;p&gt;There’s also a small catch with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;bootfix.bin&lt;/code&gt; in the WinPE iso image.  This service looks for a bootable partition on the hard drive, and presents the “press a key to boot DVD” message.  The windows install process involves several reboots, and all but the first must be from the hard drive.  If this is removed, then cobbler will restart the installer on each boot.  Obviously not what we want.  I could disable PXE earlier in the install, but that risks a bad install never restarting, again not a great option.  Of course, this only become a problem when the hard drive is already bootable (previous OS install).  In that instance, someone would have to be at the console to press a key on the first boot (starting the install for the first time).&lt;/p&gt;

&lt;p&gt;As always, if you have suggestions or comments (especially if you understand the Windows install process better than I), shoot me an email.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Hello</title>
   <link href="http://www.letifer.org/2014/01/02/testing"/>
   <updated>2014-01-02T00:00:00+00:00</updated>
   <id>http://www.letifer.org/2014/01/02/testing</id>
   <content type="html">
&lt;p&gt;Once again, I’m going to dive back into writting a bit.  We all know that writting is good for the brain, and, I believe, good for the soul.  Unlike previous attempts at writting, this time around I’m not oging to restrain myself to a single topic.  I’ll touch on life and family, some politics, maybe some sports (if only to celebrate my favorite teams), leadership, and, of course, technology.  Each of these topics hold special meaning to me in some way.&lt;/p&gt;

&lt;p&gt;Life and family are the core of my daily life, as is it to core of daily life for most people.  As one of my children enter adulthood, and the second enters high school, the meanning of family, and life within a very close family has faced interesting new stresses and anxieties.  This will server as a outlet to help cope with these changes.&lt;/p&gt;

&lt;p&gt;Politics (actually public policy) influences every aspect of living in the United States.  You may think politics are uninteresting of not relevant to you, but you’d be wrong.  With recent developments with the NSA, surging support for same-sex marraige, and gun contorl controversies, politics in America are becomming ever more important.  I don’t expect you’ll agree withh all of my views (maybe not any), but discussions on public policy, and awareness of the direction our political elite are pushing America have impact on the lives of all Americas, and in many cases the whole world.&lt;/p&gt;

&lt;p&gt;Finally, technology, who can forget that?  Tech is what I do.  It’s what I do for work, and it’s what I do for fun.  I tend to have strong opinions on technology (though they may not be what you think), especially where tech intersects with politics.  Of particular interest is women in tech.  While I’ve always found it to be an interesting subject, the real turning point came when my own (11 year old) daughter was told, by a teacher, that MIT was to difficult for a girl.&lt;/p&gt;

&lt;p&gt;Of course, I’m open to covering any topic you may want to hear about.  Again, just drop me a line, and I’ll see what I can do.  For now, enjoy the new year, and we’ll talk again in a week or two.&lt;/p&gt;
</content>
 </entry>
 
 
</feed>