DOS drivers for ATA DVD & HDD


[ Follow Ups ] [ Post Followup ] [ The EasyDOS Forum ] [ FAQ ]

Posted by Wolf H on July 31, 2009 at 04:37:32:

Altiris RDeploy v6.8 image not deploying to Lenovo ThinkCentre M58 from DVD

I hope you have a glass of wine handy, this post may take a while to read, and you may as well enjoy yourselves while reading it...

Here is the setup: I work for a large corporate in an environment where there are only Lenovo or Dell machines; but many models of each. For Dell (more common) we have Optiplex GX60, GX260, GX270, GX280, 745, 755 and 760’s. For Lenovo (less common) we have ThinkCentre M52 and ThinkPad T500 and W500 machines.

I have created a Windows XP load with all the bells, whistles and home-baked goodness that I need and then SYSPREP’d it.

Right, many machines and one image (to rule them all) that I will deploy to all machines (hey, rule them all actually works here!). The image contains all the required drivers and I have successfully deployed it many times to all the aforementioned makes and models (even the laptops, but they then require additional software to get the fingerprint readers to work, etc). I created a bootable DOS DVD where the AUTOEXEC ‘calls’ the IMAGE.EXE and deploys (fills the entire HDD) it to the local machine. It works; great actually, thanks for asking.

So now the sales people have delivered a shiny new ThinkCentre M58 machine to my desk, AFTER (need I even mention that it was after?) they bought a boat-load of them. Well, it’s not really ‘shiny’ - it’s the default Lenovo black, but you get the idea. It’s here and now I need to make it work.

Before we go further, the way I create and test images is by using Altiris. I use RDeploy (v6.8) to create IMAGE.EXE images which I then ‘run’ on machines. Instead of writing the image to DVD to test, I use a LAN share because the whole process is much quicker. The Altiris Boot Disc creator (v6.8) makes the LAN boot disc (DOS) that connects to a share where the DOS RDeploy.exe sits waiting (like a good minion) for me to run it.

So, to test, I LAN boot the M58, connect to the share and run the IMAGE.EXE to deploy to the new machine. It deploys successfully, does a sysprep’d mini-setup and loads the OS. I then check which drivers it needs, add the drivers using Altiris ImageExplorer (you guessed it, v6.8) to my IMAGE.EXE in the SYSPREP.INI file and to my Drivers folder and re-close the image. Then, again LAN boot the M58, connect and deploy the new IMAGE.EXE to the local machine and it works. The image deploys to the machine and completes successfully. It then reboots and the SYSPREP setup takes over, installs the drivers (etc) and bob’s your second cousin, the thing works. Lovely.

So now I write this new IMAGE.EXE to a bootable DVD where the AUTOEXEC is supposed to auto-deploy the image, and it still works on all my existing test boxes. Now we get to the M58. I hope you’ve enjoyed reading up until now, maybe it’s time for a second glass of wine...

The first issue I ran into (still have the bruise on my forehead) was that the bootable DVD would not see the image. The drivers required to get DOS to see the DVD drive were not available. So I summoned (much like magic) my old DOS skills, opened my trusty Google search engine and after some ‘detecting’ found GCDROM.SYS. I then added this to my CONFIG.SYS and updated the MSCDEX line in the AUTOEXEC.BAT as follows:

AUTOEXEC.BAT
LH MSCDEX.EXE /D:CDROM000 /D:CDROM001 /D:CDROM002 /D:CDROM003 /D:CDROM004 /D:CDROM005 /L:X

(Tells MSCDEX to use the detected CD/DVD drives and assign them letters starting with ‘X’)

CONFIG.SYS
DEVICE=GCDROM.SYS /D:CDROM000 /C0
DEVICE=GCDROM.SYS /D:CDROM001 /C1
DEVICE=GCDROM.SYS /D:CDROM002 /C2

The way I understand it (and I have confirmed it by moving the DVD cable to different ATA slot) is that the DEVICE loads the GCDROM device on ATA slot 1, 2 or 3 depending on which one is occupied. I may have the tech jargon wrong here, but the concept remains...

Right, new bootable DVD that correctly calls the ATA DVD driver and then AUTOEXEC calls the IMAGE.exe to deploy. My DVD boots to DOS, loads the X: as the DVD drive (where I can see the contents, confirmed after image fails). It calls the IMAGE.exe file but this then fails. I created a new DVD which contains the RDeploy file, and after the image deploy fails and the machine drops back into DOS, I run RDeploy and manually try to deploy the image. RDeploy then complains that it can’t detect the drive.

Summary time:

I have an executable image (IMAGE.EXE) that works
I have multiple machines that I can LAN boot and deploy images to/from
The M58 can LAN boot and I can deploy the IMAGE.exe to it
I have multiple machines that I can DVD boot and deploy the IMAGE.exe to
I have a M58 that I can’t do this to

I feel like Vader trying to convince Luke to join the dark side, and the little blighter just won’t listen. Darn his ‘good’ chipset!

Troubleshooting:

1. I have taken the 250 GB ATA HDD out of the M58 and put it into either the M52 or the Optiplex 760 and I can DVD boot and successfully deploy the image. [so problem is not with the HDD]
2. I have taken a smaller 40 GB ATA HDD from an older machine, put it into the M58. It boots from DVD correctly but RDeploy (the image) does not see the HDD.
3. I have taken the ATA DVD out of the Dell 760; put it into the M58 with the 250GB HDD. It boots from DVD correctly but RDeploy (the image) does not see the HDD.

This leads me to believe (that the force is strong in the M58) that the problem is the driver for the HDD controller or the chipset on the M58.

HOWEVER, when I LAN boot with the Altiris created disc I can deploy the IMAGE.exe to the M58 without any issues.

This then leads me to believe that the Altiris boot disc has the correct driver installed to see the chipset/controller/HDD.

Further Troubleshooting:

1. I have confirmed that the BIOS settings for AHCI are turned off on the working machines and then did the same on the M58. No-go.
2. I have confirmed that the IMAGE.EXE works fine off DVD, I just imaged another T500 without problems
3. I have taken GCDROM.SYS and added it to a FDD version of the Altiris LAN boot disk, disconnected the LAN cable and waited for it to fail and go to the DOS prompt. I then manually ran the image (I can ‘see’ the DVD drive contents) but it fails with the same message that it does not see the HDD.

Further Conclusions:

I assume that the GCDROM.SYS somehow interferes with the device drivers that the Altiris LAN boot disk uses. I have tried adding the GCDROM.SYS as the first device loaded in CONFIG.SYS and also as the last device loaded, both are no-go.

Right, so now I have to find the device driver on the Altiris boot disc that I can then use on my DVD boot disc so that I can deploy images using DVD. And, in case you are wondering why I don’t just simply use LAN to deploy the image, we have offices not connected to ‘my’ LAN in far out areas (like Tatooine) where the techies have to use DVD’s to image machines.

So here is my dilemma. My DOS skills (although better than some) are not equal to the task of finding which bleeding file the Altiris boot disc uses to load the DEVICE file I need to get the image to deploy successfully.

Or I need an alternative to GCDROM.SYS that will allow my DVD bootable disc to see the ATA DVD on the M58 and the ATA drive so that I can deploy the IMAGE.EXE

If anyone out there can help, honorary Vader kudos await.

Here is the ALTIRIS AUTOEXEC.BAT and CONFIG.SYS (yes, they’re long)

==============
=AUTOEXEC.BAT=
==============
@echo off
if not "%debug%" == "" echo on
if "%echo%" == "" set dbg=rem
if not "%echo%" == "" set dbg=

REM ==================================================
REM If rebooting from ram, skip ahead
REM --------------------------------------------------
if exist \ramdone.txt goto skip


REM ==================================================
REM Run the keyboard/screen lock utility
REM --------------------------------------------------
if exist \kbdsclk.exe \kbdsclk.exe -x


REM ==================================================
REM Altiris DOS startup code
REM Version=6.8 SP2
REM --------------------------------------------------
rem cls
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo Please wait while Altiris msdos (FLOPPY boot) loads...
echo.


REM ==================================================
REM Skip to here if rebooting from ram
REM --------------------------------------------------
:skip


REM ==================================================
REM Find the RAM drive (if we are using one)
REM
REM This will set the RAM_DRV environment variable to the
REM drive letter of the ram drive or to 'none' if no ram drive.
REM --------------------------------------------------
call \findramd.bat


REM ==================================================
REM Predefine Altiris environment variables to default values
REM User scripts in \prestart or \startup can redefine these
REM ALTIRIS_PREBOOT (will contain one of: msdos, freedos)
REM ALTIRIS_PROCESSOR (will contain x86)
REM ALTIRIS_BOOTDEVICE (will contain one of: USB, PXE, CDROM, DVD, HBW, EBW, FLOPPY)
REM ALTIRIS_BOOTTYPE (will contain one of: NETWORK, AUTOMATION)
REM ALTIRIS_BOOTDISK (will contain drive letter of original boot disk (including ":"))
REM ALTIRIS_SHARE (will contain drive letter for Deployment share (including ":"))
REM ALTIRIS_SHARE_ (will contain drive letter for Deployment share (excluding ":"))
REM ALTIRIS_VER (will contain version of DS that created boot image)
REM SHARE (defined for DS 6.5 backward compatibility)
REM --------------------------------------------------
set ALTIRIS_PREBOOT=msdos
set ALTIRIS_PROCESSOR=
set ALTIRIS_BOOTDEVICE=FLOPPY
set ALTIRIS_BOOTTYPE=NETWORK
set ALTIRIS_BOOTDISK=C:
set ALTIRIS_SHARE_=X
set ALTIRIS_SHARE=%ALTIRIS_SHARE_%:
set ALTIRIS_VER=DS6.8
set SHARE=%ALTIRIS_SHARE_%


REM ==================================================
REM Find the boot drive
REM
REM This will set the BOOT_DRV environment variable to the
REM drive letter of the boot drive. It will also set the NET
REM variable to the drive letter of the drive containing the
REM network folder.
REM --------------------------------------------------
call \findboot.bat
set ALTIRIS_BOOTDISK=
for %%i in (C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z) do if exist %%i:\atrsboot set ALTIRIS_BOOTDISK=%%i:
rem for %%i in (Z,Y,X,W,V,U,T,S,R,Q,P,O,N,M,L,K,J,I,H,G,F,E,D,C) do if exist %%i:\atrsboot set ALTIRIS_BOOTDISK=%%i:
if "%ALTIRIS_BOOTDISK%" == "" set ALTIRIS_BOOTDISK=%BOOT_DRV%:
if "%RAM_DRV%" == "none" echo Booting Drive %BOOT_DRV%:...
echo.

set net=%BOOT_DRV%
if not "%RAM_DRV%" == "none" if not "%RAM_DRV%" == "" set net=%RAM_DRV%
set TEMP=%net%:\TEMP
cd \


REM ==================================================
REM The following lines contain 'set' environment variables that
REM are used later in the program. You may wish to change them by
REM simply changing the values or REMing and unREMing them
REM --------------------------------------------------

REM ==================================================
REM Bootwork Variables/Switches
REM --------------------------------------------------
REM set BWDEBUG=-log%ALTIRIS_SHARE%\bootwork.log

REM ==================================================
REM Network and System Variables
REM --------------------------------------------------
set WATTCP.CFG=%net%:\net

REM ==================================================
REM See if bootworks should be run from the share
REM --------------------------------------------------
set agentdir=%BOOT_DRV%
if "" == "" set agentdir=%ALTIRIS_SHARE_%


REM ==================================================
REM Get PXE settings
REM --------------------------------------------------
rem This capability not available in DOS
if exist %BOOT_DRV%:\getpxe.bat call %BOOT_DRV%:\getpxe.bat

REM ==================================================
REM Set path
REM --------------------------------------------------
set PATH=%BOOT_DRV%:\;%net%:\;%net%:\dos;%net%:\net

REM ==================================================
REM Load user prestart applications from prestart folder
REM --------------------------------------------------
for %%f in (%BOOT_DRV%:\prestart\*.*) do call %%f

REM ==================================================
REM Run the detect utility for PCI cards
REM --------------------------------------------------
%net%:
cd %net%:\net
if exist %net%:\net\PCIdtect.exe echo Detecting network adapters...
if exist %net%:\net\PCIdtect.exe %net%:\net\PCIdtect.exe
if exist %net%:\net\PCIdtect.exe echo.
cd \

REM ==================================================
REM Cardsrvc.bat (optional) is manually created by the user and must be placed in the
REM correct driver folder (i.e. myConfig\net\myDriver). PCIdtect copies it to the
REM net folder (along with the appropriate protocol.ini, system.ini files).
REM The user must specify the name of the card bus services executable file inside cardsrvc.bat
REM and supply Boot Disk Creator with this executable file by adding it to the
REM "Additional files" folder or placing it in the "net" folder of the configuration.
REM --------------------------------------------------
if exist %net%:\net\cardsrvc.bat call %net%:\net\cardsrvc.bat

REM ==================================================
REM This call to bootworks simply configures the network with
REM information from the Windows client (only if bootworks is local)
REM --------------------------------------------------
if %ALTIRIS_BOOTTYPE%%agentdir% == AUTOMATION%BOOT_DRV% %agentdir%:\bootwork.exe -cfg -nodiag

REM ==================================================
REM Start the network (pass "echo" to display output from net commands)
REM (Authenticate to network)
REM (Map network drives)
REM (Find possible new mapping to the share)
REM Set working directory to the share
REM --------------------------------------------------
call %BOOT_DRV%:\startnet.bat echo
rem call %BOOT_DRV%:\startnet.bat
set SHARE=%ALTIRIS_SHARE_%
set PATH=%PATH%;%ALTIRIS_SHARE%\;%ALTIRIS_SHARE%\bootwiz\platfo~1\dos\%ALTIRIS_PREBOOT%\os
%ALTIRIS_SHARE%

REM ==================================================
REM Load user applications from startup folder
REM --------------------------------------------------
for %%f in (%BOOT_DRV%:\startup\*.*) do call %%f

REM ==================================================
REM Run user startup batch file
REM --------------------------------------------------
if exist %BOOT_DRV%:\startup.bat %BOOT_DRV%:\startup.bat

REM ==================================================
REM NETWORK or AUTOMATION boot?
REM --------------------------------------------------
if %ALTIRIS_BOOTTYPE% == AUTOMATION goto automation


REM ==================================================
REM NETWORK boot
REM --------------------------------------------------
:network
REM rdeploy.exe
rem REM %ALTIRIS_SHARE%\rdeploy\DOS\rdeploy.exe
goto end


REM ==================================================
REM AUTOMATION boot
REM --------------------------------------------------
:automation

REM ==================================================
REM Start bootworks
REM --------------------------------------------------
:reload2

if exist %net%:\bwscript.bat del %net%:\bwscript.bat >nul
rem cls
%agentdir%:\bootwork.exe %BWDEBUG%

if errorlevel 160 goto reload2
if errorlevel 100 goto boot_production
if not exist %net%:\bwscript.bat goto end
call %net%:\bwscript.bat
goto reload2

REM ==================================================
REM Production Boot for errorlevel 100.
REM Unload the LAN drivers (logout) then call the dreboot program
REM to quickly boot the local operating system.
REM
REM NOTE: Normal bootwork execution should not get to this
REM section of the batch file.
REM --------------------------------------------------
:boot_production
call %BOOT_DRV%:\stopnet.bat
%BOOT_DRV%:\dreboot.exe


REM ==================================================
REM Done
REM --------------------------------------------------
:end
set dbg=

============
=CONFIG.SYS=
============
DEVICE=\DOS\HIMEM.SYS
REM UMBPCI.SYS is an upper memory block driver for freedos
REM REM DEVICE=\DOS\UMBPCI.SYS
REM DEVICE=\DOS\EMM386.EXE NOEMS
DEVICEHIGH=\net\ifshlp.sys
REM DEVICEHIGH=\vdisk.sys /e 5760 512 512
switches = /f
REM switches = /n
DOS=HIGH,UMB
SHELL=command.com /f /p /E:2048
BUFFERS=20
FILES=20
STACKS=0,0
FCBS=1,0
LASTDRIVE=Z

And just so you know, here is my AUTOEXEC.BAT and CONFIG.SYS

==============
=AUTOEXEC.BAT=
==============
@echo off
prompt $s
set EXPAND=YES
SET DIRCMD=/O:N
cls
set temp=c:\
set tmp=c:\
path=a:\
LH MSCDEX.EXE /D:CDROM000 /D:CDROM001 /D:CDROM002 /D:CDROM003 /D:CDROM004 /D:CDROM005 /L:X
X:\image.exe -sz1:100p -nobw -nocancel -noprompt

============
=CONFIG.SYS=
============
DEVICE =himem.sys /testmem:off
DEVICE=GCDROM.SYS /D:CDROM000 /C0
DEVICE=GCDROM.SYS /D:CDROM001 /C1
DEVICE=GCDROM.SYS /D:CDROM002 /C2
DEVICE=OAKCDROM.SYS /D:CDROM003 /C3
DEVICE =btdosm.sys
DEVICE =flashpt.sys
DEVICE=BTCDROM.SYS /D:CDROM004 /C4
DEVICE =aspi2dos.sys
DEVICE =aspi8dos.sys
DEVICE =aspi4dos.sys
DEVICE =aspi8u2.sys
DEVICE=aspicd.sys /D:CDROM005 /C5
files=60
buffers=20
dos=high,umb
stacks=9,256
lastdrive=z


Follow Ups:



Post a Followup (use TAB key to move between boxes - NOT ENTER or RETURN)

Name:
E-Mail:

Subject:

Type your comments in the box below and SUBMIT:


[ Follow Ups ] [ Post Followup ] [ The EasyDOS Forum ] [ FAQ ]