My adventures with:

Windows XP Installation

Email me at:

Jump to:

Sample unattended files
MBR track 0 / Master Boot Record
Various various

Norton Ghost 2003: commercial, about $50. Creates "images" of partitions or complete disks that can later be selectively restored / cloned to other disk drives. Also had various utilities to boot into PC-dos, either via a boot floppy that the utility makes, or straight to your hard drive (i guess it plays with the partition tables?). The boot floppy utility can also create so-called network boot disks so that you can boot from floppy to PC-dos and also connect up to a network share. It depends (obviously) on having a network card that the program understands -- it worked great for me with the Intel Pro/100b drivers. I also have burned the floppy image onto a bootable CD rom, to speed up the process. In this way I can have a "fileserver" on my Lan then when i want to Ghost a new machine or hard drive i just hook it up to the Lan and go. Addendum: there are multiple versions of Ghost 2003. sigh.

Ranish Partition Manager: runs in DOS only. Seems to handle drives at least as large as 137GB. Freeware. I use the so-called latest stable version 2.40. There are also a couple of newer ones that add some esoteric features (up to 31 primary partitions), but may be necessary to address above 128G drives? (partial answere: I got a 200G drive, and the 2.40 version seemed fine) See my sample. Update: this is now included as a multiboot option for the system rescue Cd project, very handy.

DOS: I usually use Windows 98 for DOS. Can be used to create EBD (emergency boot diskette) with DOS. I use the EBD image to make bootable CD's (I used linux to dd the raw floppy image to a file, then I create a bootable CD with Nero selecting the image file and floppy emulation). Other sources of DOS: Many CDs are bootable to PC-DOS -- e.g. Ghost, Seatools, Maxtor's disk utilities.

Linux: Lately I have had RedHat 9 loaded up on a partition on my extended partition (I works out to be the eighth partition, /dev/hda8 in linux-speak). Rather than fooling with Lilo or some other boot loader scheme, I just use LINLD.com (don't use loadlin.com anymore, it can only load kernels smaller than 1 megabyte -- it "broke" on RH9) which runs from DOS.

 

Partition signatures -- i stumbled onto this problem where I thought i was being clever by hiding (marking unusued) a data partition before doing the partition backup... the problem being that when i restored, XP would not boot up. The problem being that it turns out that XP when restored must be booted off the same drive letter as it thinks it is. See http://www.goodells.net/multiboot/ for a detailed discussion of this and more... So the moral to the story is XP is sensitive to shuffling partitions around, I tend to install Win98 on the first primary partition -- so that always works out to be drive C. I usually then partition the entire balance of the drive into one huge extended partition that I then can carve up as I please. Below is a sample of how I might divide up a 40GByte hard drive.

Linux name / Dos-Win name / file system / size (G Bytes) / usage :

/dev/hda1 C     FAT32     5  Win98 installation drive
/dev/hda2 n/a   Ext'd 
/dev/hda5 D     FAT32     5  Win XP installation drive (sometime i make it NTFS)
/dev/hda6 E     FAT32     5  Backup files
/dev/hda7 F     FAT32    20  Misc. Media files
/dev/hda8 n/a   Linux     5  Linux Redhat 9 Installation drive
/dev/hda9 n/a   Lin swap .5  Linux Swap drive

In this way the system is "quadruple" booted -- really double. From the microsoft boot menu I can select either Win98 (from which a quick F8 allows a quick boot to dos prompt), Windows XP on partition 2, and finally to boot Linux I boot dos and then run linld.com to boot me up to /dev/hda8

Installation order: Prepare a raw drive with something like Ranish and divide up the drive as above. Ordering is important because the microsoft scheme of multiple booting is sensitive to this. You must first install Win98. Then install Win XP (do a "fresh install", not an upgrade -- if starting it from win98, chose Advanced options / allow me to choose installation partitoin). Later on install Linux.

Sample Boot.ini (will be found in root of c:\ if following installation order as given above)
[Boot Loader]
Timeout=5
Default=multi(0)disk(0)rdisk(0)partition(2)\WINDOWS
[Operating Systems]
multi(0)disk(0)rdisk(0)partition(2)\WINDOWS="Windows XP Pro, 2" /fastdetect
C:\="Microsoft Windows 98"

 


Sample unattend files

Lots of unattend info here: http://unattended.msfn.org/beginner/winnt_sif.htm. I've never made an unattended CD installation, I've always just used batch files, as in the ones below. The scheme on a CD is if a file called winnt.sif is found it is used as an answer file.

unattend.bat
@rem SetupMgrTag
@echo off

rem
rem This is a SAMPLE batch script generated by the Setup Manager Wizard.
rem If this script is moved from the location where it was generated, it may have to be modified.
rem

set AnswerFile=.\unattend.txt
set SetupFiles=f:\XP-CD\I386

f:\XP-CD\I386\winnt32 /s:%SetupFiles% /unattend:%AnswerFile% /tempdrive:D:

rem the tempdrive should force the install to take place on D (the 2nd partition)

rem Here is an example of the DOS mode command. Note that options are shortened
rem  to 1 letter, and especially note that only 8.3 filenames are allowed!
rem  if you attempt a DOS install BE SURE TO HAVE smartdrv LOADED! otherwise it 
rem  will take HOURS to do the initial file copies.
rem 
rem f:\XP-CD\I386\winnt /s:%SetupFiles% /u:%AnswerFile%

rem other things to think about: I don't think the /tempdrive thing works to force
rem install on a particular partition(?). What I have been doing is creating a smallish
rem 1st partition, then when it tries to install it fails and allows manual intervention
rem after the partition is chosen, the unattended install takes place as usual.

unattend.txt

;SetupMgrTag
[Data]
; if no autopartition, then will go to partition where temp files are
;    AutoPartition=1
    MsDosInitiated="0"
    UnattendedInstall="Yes"

[Unattended]
;    UnattendMode=ProvideDefault
    UnattendMode=FullUnattended
    OemSkipEula=Yes
    OemPreinstall=Yes
    TargetPath=\WINDOWS

[GuiUnattended]
    AdminPassword="123456"
    EncryptedAdminPassword=NO
    OEMSkipRegional=1
    TimeZone=15
    OemSkipWelcome=1

[UserData]
; put your real key here
    ProductID=xxxxx-xxxxx-xxxxx-xxxxx-xxxxx
    FullName="yo"
    OrgName="yoco"
    ComputerName=yo

[TapiLocation]
    CountryCode=1
    Dialing=Tone
    AreaCode=480

[RegionalSettings]
    LanguageGroup=1
    Language=00000409

[SetupMgr]
    DistFolder=F:\XP-CD
    DistShare=whistlerdist

[Branding]
    BrandIEUsingUnattended=Yes

[Proxy]
    Proxy_Enable=1
    Use_Same_Proxy=0
    HTTP_Proxy_Server=10.1.1.101:8000
    Secure_Proxy_Server=10.1.1.101:8000
    Gopher_Proxy_Server=10.1.1.101:8000
    Socks_Proxy_Server=10.1.1.101:8000

[Identification]
    JoinWorkgroup=WORKGROUP

[Networking]
    InstallDefaultComponents=No

[NetAdapters]
    Adapter1=params.Adapter1

[params.Adapter1]
    INFID=*

[NetClients]
    MS_MSClient=params.MS_MSClient

[NetServices]
    MS_SERVER=params.MS_SERVER

[NetProtocols]
    MS_TCPIP=params.MS_TCPIP

[params.MS_TCPIP]
    DNS=No
    UseDomainNameDevolution=No
    EnableLMHosts=Yes
    AdapterSections=params.MS_TCPIP.Adapter1

[params.MS_TCPIP.Adapter1]
    SpecificTo=Adapter1
    DHCP=No
    IPAddress=10.1.1.100
    SubnetMask=255.255.255.0
    DefaultGateway=10.1.1.101
    DNSServerSearchOrder=10.1.1.101
    WINS=No
    NetBIOSOptions=0
 
Results of Linux fdisk and hdparm commands, on my Seagate 40G drive:
Disk /dev/hda: 40.0 GB, 40020664320 bytes
255 heads, 63 sectors/track, 4865 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/hda1 *  1  255  2048256  b Win95 FAT32
/dev/hda2  256 4854 36941467+ f Win95 Ext'd (LBA)
/dev/hda5  256 1020  6144831  b Win95 FAT32
/dev/hda6 1021 2040  8193118+ b Win95 FAT32
/dev/hda7 2041 4202 17366233+ b Win95 FAT32
/dev/hda8 4203 4789  4715046  83 Linux
/dev/hda9 4790 4854  522081   82 Linux swap

Model=ST340014A, FwRev=3.04, SerialNo=3JX09SX2
Config={ HardSect NotMFM HdSw>15uSec Fixed DTR>10Mbs RotSpdTol>.5% }
RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=4
BuffType=unknown, BuffSize=2048kB, MaxMultSect=16, MultSect=16
CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=78165360

 

Ranish Partition Manager Version 2.40.00 February 08, 2001
HD 1 (128) 38,166M [  4,865 cyls x 255 heads x 63 sects =  78,165,360 sects ]

                   File                Starting         Ending      Partition
   # Type Row   System Type         Cyl Head Sect    Cyl Head Sect  Size [KB]

   0  MBR   Master Boot Record        0    0    1      0    0    1          0 
   1  Pri   Unused                    0    0    2      0    0   63         31 
   2 >Pri 1 Windows FAT-32            0    1    1    254  254   63  2,048,256 
   3  Pri 2 VFAT Extended LBA       255    0    1  4,853  254   63 36,941,467 
   4  | Log Windows FAT-32          255    1    1  1,019  254   63  6,144,831 
   5  | Ext Extended              1,020    0    1  2,039  254   63  8,193,150 
   6  | Log Windows FAT-32        1,020    1    1  2,039  254   63  8,193,118 
   7  | Ext Extended              2,040    0    1  4,201  254   63 17,366,265 
   8  | Log Windows FAT-32        2,040    1    1  4,201  254   63 17,366,233 
   9  | Ext Extended              4,202    0    1  4,788  254   63  4,715,077 
  10  | Log Linux ext2fs          4,202    1    1  4,788  254   63  4,715,046 
  11  | Ext Extended              4,789    0    1  4,853  254   63    522,112 
  12  | Log Linux swap            4,789    1    1  4,853  254   63    522,081 
  13  Pri   Unused                4,854    0    1  4,865  144   63     92,925 

Partition table details:
                    Starting       Ending     Starting   Number of      Ending
  # Type R FS    Cyl Head Sct  Cyl Head Sct    sector     sectors      sector

   0  MBR   FF      0   0  1      0   0  1           0           1           0
   1  Pri   00      0   0  2      0   0 63           1          62          62
   2 >Pri 1 0B      0   1  1    254 254 63          63   4,096,512   4,096,574
   3  Pri 2 0F    255   0  1  4,853 254 63   4,096,575  73,882,935  77,979,509
   4  | Log 0B    255   1  1  1,019 254 63   4,096,638  12,289,662  16,386,299
   5  | Ext 05  1,020   0  1  2,039 254 63  16,386,300  16,386,300  32,772,599
   6  | Log 0B  1,020   1  1  2,039 254 63  16,386,363  16,386,237  32,772,599
   7  | Ext 05  2,040   0  1  4,201 254 63  32,772,600  34,732,530  67,505,129
   8  | Log 0B  2,040   1  1  4,201 254 63  32,772,663  34,732,467  67,505,129
   9  | Ext 05  4,202   0  1  4,788 254 63  67,505,130   9,430,155  76,935,284
  10  | Log 83  4,202   1  1  4,788 254 63  67,505,193   9,430,092  76,935,284
  11  | Ext 05  4,789   0  1  4,853 254 63  76,935,285   1,044,225  77,979,509
  12  | Log 82  4,789   1  1  4,853 254 63  76,935,348   1,044,162  77,979,509
  13  Pri   00  4,854   0  1  4,865 144 63  77,979,510     185,850  78,165,359

Partition records exactly as they appear in MBR (EMBR):
                   Starting          Ending        Starting   Number of
    #  HD  FS    Cyl Head Sect    Cyl Head Sect      sector     sectors
(0,0,1):
    1  80  0B      0    1    1    254  254   63          63   4,096,512
    2  00  0F    255    0    1    757  254   63   4,096,575  73,882,935
    3  00  00      0    0    0      0    0    0           0           0
    4  00  00      0    0    0      0    0    0           0           0
(255,0,1):
    1  00  0B    255    1    1  1,019  254   63          63  12,289,662
    2  00  05  1,020    0    1  1,015  254   63  12,289,725  16,386,300
    3  00  00      0    0    0      0    0    0           0           0
    4  00  00      0    0    0      0    0    0           0           0
(1020,0,1):
    1  00  0B  1,020    1    1  1,015  254   63          63  16,386,237
    2  00  05  1,016    0    1    105  254   63  28,676,025  34,732,530
    3  00  00      0    0    0      0    0    0           0           0
    4  00  00      0    0    0      0    0    0           0           0
(2040,0,1):
    1  00  0B  1,016    1    1    105  254   63          63  34,732,467
    2  00  05    106    0    1    692  254   63  63,408,555   9,430,155
    3  00  00      0    0    0      0    0    0           0           0
    4  00  00      0    0    0      0    0    0           0           0
(4202,0,1):
    1  00  83    106    1    1    692  254   63          63   9,430,092
    2  00  05    693    0    1    757  254   63  72,838,710   1,044,225
    3  00  00      0    0    0      0    0    0           0           0
    4  00  00      0    0    0      0    0    0           0           0
(4789,0,1):
    1  00  82    693    1    1    757  254   63          63   1,044,162
    2  00  00      0    0    0      0    0    0           0           0
    3  00  00      0    0    0      0    0    0           0           0
    4  00  00      0    0    0      0    0    0           0           0

 


 

Track 0 / Master Boot Record

Track 0 is normally considered the first 63 sectors of a disk -- nominally a (parallel) ATA / IDE hard disk. I don't know how/if this applies to Serial ATA drives, but I would suspect it does. Another way of referring to these sectors is using the C/H/S -- Cylinder/Head/Sector -- nomenclature. So the first 63 sectors is from 0/0/0 to 0/0/62.

The MBR -- Master Boot Record -- is the very first sector, or sector 0/0/0 in C/H/S terminology. This sector holds the partition table and the default microsoft bootstrap code.

There are any number of utilities for manipulation of the MBR/Partition table. When i need to get the job done ruthlessly, I usually resort to booting up a linux live cd (like Knoppix), and just dd'ing the sectors. Here are some examples (assumes the hard disk in question is the master on the primary IDE, i.e. /dev/hda). WARNING -- these commands could easily render you hard disk UNUSABLE...proceed at your own risk!:

dd if=/dev/zero of=/dev/hda bs=512 count=63     //zeroes out 63 512byte sectors of hda!
dd if=/dev/hda bs=512 count=1 of=filename       // saves first sector (the MBR) to a filedd if=/dev/zero of=/dev/hda bs=512 count=63     //zeroes out 63 512byte sectors of hda!
dd if=/dev/zero of=/dev/hda bs=512 count=62 seek=1     //zeroes out everything in track 0 after the MBR
dd if=/dev/zero of=/dev/hda bs=512 count=1 seek=32     //zero out sector 32
dd if=/dev/zero of=/dev/hda bs=512 count=1 seek=62     //zero out sector 63 (used by Norton Ghost to "mark" drive)

Sector 32 is used by Macrovision Safecast by certain applications to manage licensing. In particular Macromedia MX2004 flash, fireworks, etc. And more recently Adobe Photoshop CS. ERASING THIS WILL CAUSE ANY APPLICATION THAT RELIES ON THIS TO STOP WORKING! In olden times past (around 2000?) turbotax used a version of safecast that used sector 33. Some consider the use of reserved sectors to be a form of spyware.

Other sectors (above 1) are used by alternate boot loaders, e.g. GRUB in Linux

See http://www.goodells.net/multiboot/ for a detailed discussion of booting.

There are some clever freeware windows-based utilities at roadkil.net including a hard disk sector editor, and MBR tools.

To write new master boot record code with default Microsoft boot loader do the following, and note that there will be no further prompt or anything it will just do it and return to the dos prompt:

fdisk /mbr

This is often necessary to recover a failed grub installation -- say if you delete the partition that held the boot files.

 

Various

 

To mount an .iso file as a file system (it assigns a drive letter, and all) I used something called winxpvirtualcd.zip which apparently came from the microsoft beta program, it is one of those "unsupported" tools. It contains a readme that makes using it fairly self-explanatory. There are something else that does this called Daemon Tools that look like freeware that does this same function -- but i have never tried it.

 

 


Sc.exe (Service Controller)

I had occasion to need to start a service, and it was a hassle to get it going from the "Computer Management" snap in (compmgmt.msc). After some hunting around, I finally found what i wanted was the sc.exe, Service Controller, command. The command to start a service is very straightforward, e.g.:

sc.exe start TwonkyVision_Media_Server

Stuff to look into