Installing Windows Drivers From A Network Share
Using TBOSDT included on the Image for Linux Boot Disk
Overview
This
tutorial covers installing a Windows storage driver from a network
share by using the Linux version of the TBOSDT program from
the Image for Linux (IFL) Boot Disk. The IFL Boot Disk can be created from
either Windows or Linux, and can be a CD/DVD, USB flash drive, or a set
of boot files for PXE network boot (from Linux only).
In addition to this tutorial, please refer to Application Example #2 near the end of the TBOSDT manual (tbosdt.pdf),
where you will find a description of the overall process.
Starting
Point
A typical scenario for using the procedure below would come about when
an existing Windows installation (for which an image exists) needs to be restored on a system where the
storage controller is not compatible with storage driver used on the original system. Such conditions
could occur when the motherboard or entire system has been replaced. Because the target system has a different
mass storage controller (for example, a SATA controller rather than an IDE controller), the restored image
will not boot because it lacks the correct driver. This is where TBOSDT comes in.
A Windows driver installation using TBOSDT takes
place in
two stages, and can be accomplished with Windows initially in an
unbootable
state. The first stage (Stage 1) takes place when the IFL Boot Disk is
booted
from and the TBOSDT Stage 1 script is executed. This installs the
driver to a
point where the Windows partition will boot. It also prepares the
Windows
partition to automatically execute the TBOSDT Stage 2 script the next
time it
is booted from. The Stage 2 script then completes the driver
installation.
The starting point for the procedure outlined below will be an image of a Windows XP partition that has been
restored to the boot drive (HD0) of the target system. Since the driver for the new hard drive controller has
not yet been installed, the Windows partition will not boot on the target system.
When restoring the Windows image, it is necessary to ensure that the restored partition is set active, and that
the standard MBR code has been installed. When restoring a single partition with any of the TeraByte
Unlimited image products, the Set Active and Write Standard MBR Code restore options can be used to ensure
those conditions. They are not needed or available when restoring an entire drive.
Driver Files
In general, to install any Windows driver with TBOSDT, you will need the individual
driver files (typically an INF, CAT, and SYS file). Ideally, you will have a floppy diskette
(or other media) supplied with the hardware that contains the driver
files. If not, you will need to obtain them from the hardware
manufacturer. Again, the driver files must in the form of individual
files, or extractable from a CAB file.
This tutorial will use the specific example of installing the driver for the
Intel SATA AHCI Controller on a restored image of Windows XP. This is the driver
most users require for Windows XP to run on a new SATA system. To locate
that driver, see the
Creating a Windows XP Slipstreamed Disc using nLite tutorial.
Software Requirements
Image for Linux (IFL)
TeraByte OS Deployment Tool Suite (TBOSDTS)System Requirements
A
Windows or Samba network share that can be accessed from the target system with read/write privileges over a wired
network connection.
If using a USB flash drive as boot media, the target system must support booting from a USB drive.
Step 1: Download and extract TBOSDTS
The
example TBOSDT scripts (drvins_1.run and drvins_2.run), as well as the
Windows version of TBOSDT (tbosdtw.exe) will be required to accomplish
the driver installation. These files can be obtained by extracting the
TBOSDTS zip archive (tbosdts_en.zip or tbosdts_pro_en.zip), so that the necessary files can
be copied to the network share.
Please note that the actual
TBOSDTS programs and support files are contained in the file
tbosdts.zip, which is a secondary zip file inside
of the downloaded zip file. To extract tbosdts.zip, you will need the
password contained in readme.txt, which will be found inside of
the downloaded zip file.
Once tbosdts.zip has been extracted, the following files and directories will be available:

Step 2: Copy the required files to the network share
It
is recommended that a separate folder/directory be created on the
network share to contain the files required to install the driver. This
tutorial will use a directory named 'tbosdtfiles', located in the root
of a share named 'demo', on a server named 'ubuntu810'.
The files required to be copied to the share are as listed below:
drvin_1.run and drvins_2.run:
Copy these 2 files from the tbosdts/scripts directory. These are
the Stage 1 and Stage 2 TBOSDT scripts, and these files will be edited
in Step 6.
tbosdtw.exe (Windows version):
Copy tbosdtw.exe from the tbosdts/win directory. This file is the Windows version of TBOSDT.
iaahci.inf, iaahci.cat, iastor.sys:
These are the specific driver files needed to install the Intel SATA
driver being used in this example. These files will be named
differently for other drivers.
After copying all required files, the contents of the directory on the network share should be as shown below:

Step 3: Create the IFL Boot Disk
The IFL Boot Disk can be
created from Windows or Linux as either a CD/DVD or a USB flash drive.
From Linux, there is also the option to create the boot disk as a set
of boot files for PXE network boot. A custom boot disk (which can
optionally be created from Linux) is not required.
To create the IFL Boot Disk from Windows, see the TeraByte Unlimited tutorial at the link below:
Image for Linux First Things First – Make a Boot DiskTo create the IFL Boot Disk from Linux, see the TeraByte Unlimited tutorial at the link below:
How To Create IFL Boot Media From A Linux DistributionStep 4: Boot from the IFL Boot Disk and mount the network share
Boot
the target system from the IFL Boot Disk (CD/DVD or USB flash drive).
To boot from a USB flash drive, the system BIOS must be set to boot
from that device. Some systems may have a key to press at boot that
will being up a menu of devices to boot from, rather than having to
enter BIOS setup.
Once boot completes, you will be at the IFL
Boot Disk main menu (welcome screen). Highlight the "Mount/Unmount
Samba/Windows shares" item as shown below, then press <Enter>:

The
"Mount/Unmount" menu item will detect the Windows/Samba servers
available, and will then list them on a screen similar to screenshot
below. On that screen, highlight the server containing the files
(UBUNTU810 for this example), and then press <Enter>:

After
selecting the server, type in the user name for the server/share you
need to access, then press <Enter>. For this example, the user
name is 'demo':

On the next screen, enter the password, then press <Enter> again:

The
next screen will list the shares available to mount on the server.
Highlight the share you need to access (demo for this example), and
then press <Enter>.

The
share should now be mounted, and that will be indicated by the mount
status changing from "UNMOUNTED" to "MOUNTED:(/net1)" as
shown below:

If
the share fails to mount (or is not listed on the share menu),
that will usually be due to an incorrect user/password being entered.
In that case, you can exit back to server menu, select the server, and
try entering the user name and password again.
The (/net1) in parenthesis is the mount point for the network
share. The mount point is the directory in the local file system where
the contents of the share can be accessed. The mount point will be used
when the Stage 1 script (drvins-1.run) is edited in Step 6 below. The
mount point will always be /net1 unless another network share has been
mounted first.
Choose
"EXIT MENU" to get back to the server screen. On this screen you should
now see a value of 1 for "Total shares currently mounted" as shown
below:

Select
"EXIT MENU" to exit back to the main boot disk menu. On that menu,
highlight "Exit to the Linux command prompt", then press <Enter>:

That menu selection will leave you at a Linux command prompt. To further
verify that the share is mounted, and that you can now access files on the
share, run the command 'ls /net1/tbosdtfiles'. That command will
list the files previously copied to the tbosdtfiles directory in Step 2
above, and should result in the output shown below:

The files copied to the share in Step 2 can now be seen in the listing of the tbosdtfiles directory on the mounted share.
Step 5: Determine the partition ID for the target partition
This
step is to determine the partition ID for the target Windows
partition. This value is used in step 1 of the Stage 1 script
(drvins_1.run) to ensure that the correct partition is mounted during
driver installation. The Stage 1 script will be edited in Step 6 below,
and the value determined here will be needed then.
To determine the partition ID, run the command 'tbosdt'
from the command prompt to start the TBOSDT program in interactive mode. Then, at the TBOSDT command prompt,
run the command 'list hd 0' to list partitions on drive HD0. That will
result in an output similar to the following:

In
this case, there is only one partition on the drive, and it has a
partition ID of 1, which is shown in parenthesis above as (01) in
the ID column. This value matches the partition ID in the default
copy of drvins_1.run. If the partition ID is something other than (01),
the partition ID value in drvins_1.run will need to be changed in Step 6.
Please
note that the partition ID is a hexadecimal number, and should be
entered in hexadecimal notation in drvins_1.run. For example, if the
partition ID is displayed as (0B) by TBOSDT, that value would be
entered as 0xB in drvins_1.run (the leading zero can be omitted). A
partition ID of (2C) would be entered as 0x2C.
Type 'exit' to quit the TBOSDT program, and return to the Linux command pompt.
Step 6: Edit the TBOSDT scripts on the network share
This
step is to make some necessary changes to the default TBOSDT
scripts (drvins_1.run and drvins_2.run) that were copied to the
network share in Step 2 above. The files will be edited using the
'nano' text editor included on the IFL Boot Disk.
To edit drvins_1.run, start the nano text editor with the command 'nano
/net1/tbosdtfiles/drvins_1.run', as shown in the screenshot below:

For drvins_1.run, the following changes are required for this example:
1. Uncomment all lines starting with a single ";"
except the 3 lines in step 3b (16 lines)
2. In step 1, change the target partition ID to the value determined in Step 5 above (if necessary)
3. In step 3, adjust the path to copy the files from the network share (3 lines)
4. In step 4, adjust the path to copy the files from the network share (2 lines)
The
screenshot below shows drvins_1.run in the nano text editor after
making the changes listed above. The changes are circled and numbered
to correspond with the list.

To save changes to the file, use the <Ctrl + O> key combination (WriteOut), and then press <Enter>.
To exit the nano editor, press <Ctrl + X>.
To edit drvins_2.run, start the nano text editor with the command 'nano
/net1/tbosdtfiles/drvins_2.run'.
For drvins_2.run, the following change is required for this example:
1. In step 1, uncomment the line for 'add inf' command (1 line)
The
screenshot below shows drvins_2.run in the nano text editor after editing, with the change
circled:

To save changes to the file, use the <Ctrl + O> key combination (WriteOut), and then press <Enter>.
To exit the nano editor, press <Ctrl + X>.
Now that both TBOSDT scripts have been edited, the actual driver installation can begin.
Step 7: Execute the Stage 1 script (drvins_1.run)
To execute the Stage 1 script (drvins_1.run), run the following command from the Linux command prompt:
tbosdt /net1/tbosdtfiles/drvins_1.run
For the Intel SATA driver being installed in this example, the output from the script will look like the following:

When
the Stage 1 script is executed, observe
the output from TBOSDT on the screen and watch for any error messages.
Typically, TBOSDT will terminate the script execution when it
encounters an error condition, so that any error message(s) will
still be visible on the screen, even though some of the output may
scroll off. If
the output you want to see scrolls off the screen, you can scroll
back up by using <Shift + Page Up> one or more times, or the
output can be redirected to a file and then viewed a page at a time
with the 'more' command as follows:
tbosdt /net1/tbosdtfiles/drvins_1.run > filename
more filename
For
troubleshooting purposes, it can also be helpful to select the frame
buffer video mode (option 2 at the boot menu) when booting the IFL Boot
disk. That will make more text viewable without
scrolling.
Common causes for errors include:
1. Attempting to mount the wrong drive/partition (step 1 in drvins_1.run)
2. Failing to edit one or more commands for correct values in drvins_1.run (see Step 6)
3. Syntax and/or typing errors in drvins_1.run
The Stage 1 script must run without errors before booting from the target partition can be expected to be successful.
Step 8: Boot the target partition to execute Stage 2
Once
the Stage 1 script has executed successfully in Step 7, it should now
be possible to boot from the target partition. The following sequence
of steps is recommended:
1. Boot the system normally from
the target partition. On first boot, a terminal window will appear, and
the Stage 2 script (drvins_2.run) will be executed. After a typical delay of a few
seconds, the system should reboot automatically. (This will only happen
once, on the first boot).
2. On reboot, boot
Windows into Safe Mode as described in Step 3 below. Using Safe Mode allows
Windows to detect new hardware without hanging and/or other issues
that can arise due to certain types of new hardware, particularly video
adapters.
3. To get into the Windows XP Safe Mode:
As the computer is booting (just after the post), continuously tap the
"F8 Key" which should bring up the "Windows Advanced Options Menu". Use
your arrow keys to move to "Safe Mode" and press your Enter key.
If
you can't boot in to safe mode it may be due to the fact that the HAL
also needs to be replaced. While the details are outside the
current scope of this article, this is basically done by copying the
correct file to the \windows\system32\hal.dll. The HAL files
available (through Win2003) are HAL.DLL, HALAPIC.DLL, HALMPS.DLL,
HALACPI.DLL, HALAACPI.DLL, HALMACPI.DLL. The most common file
needed for modern systems is HALACPI.DLL, HALAACPI.DLL or HALMACPI.DLL
which can be found in the \windows\servicepackfiles\i386 folder.
You can use TBOSDT to mount the partition and copy the file needed.
4. Once up and running in Safe Mode, allow Windows to complete detection of the new hardware.
5. Reboot when prompted.
6. On reboot, allow Windows to boot normally. The driver installation should now be complete.
Please
note that WPA (Windows Product Activation) may be tripped because of
the new hardware detected, and if so, Windows will need to be reactivated.