jedi4ever / veewee

Easing the building of vagrant boxes
MIT License
4.29k stars 779 forks source link

Windows XP does not use winnt.sif from virtual floppy drive #434

Open srr84 opened 11 years ago

srr84 commented 11 years ago

I automated the installation of Windows XP SP 3 with veewee. So far so good. But it only works for me when I include the winnt.sif together with the SATA Drivers in my XP Image.

When I try to use the winnt.sif on a virtual floppy but it does no use it to automate the installation.

Here is what my files look like:

definiion.rb

Veewee::Session.declare({ :os_type_id => 'WindowsXP', :iso_file => "WinLite.iso", :iso_src => "http://wb.dlservice.microsoft.com/dl/download/release/Win7/3/b/a/3bac7d87-8ad2-4b7a-87b3-def36aee35fa/7600.16385.090713-1255_x86fre_enterprise_en-us_EVAL_Eval_Enterprise-GRMCENEVAL_EN_DVD.iso", :iso_md5 => "62675A3B76D21815367F372961B71A56", :iso_download_timeout => "100000",

:cpu_count => '1',
:memory_size=> '512', 
:disk_size => '10280', :disk_format => 'VDI', :hostiocache => 'off',

:floppy_files => [
  "winnt.sif"
],

:boot_wait => "1", #ten minutes, ten seconds
:boot_cmd_sequence => [''],

:ssh_login_timeout => "10000",
# Actively attempt to winrm (no ssh on base windows) in for 10000 seconds
:ssh_user => "vagrant", :ssh_password => "vagrant", :ssh_key => "", 
:ssh_host_port => "59867", :ssh_guest_port => "22",

})

winnt.sif

;SetupMgrTag [Data] AutoPartition=1 MsDosInitiated="0" UnattendedInstall="Yes"

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

[GuiUnattended] AdminPassword="vagrant" EncryptedAdminPassword=NO AutoLogon=Yes AutoLogonCount=1 OEMSkipRegional=1 TimeZone=110 OemSkipWelcome=1

[UserData] FullName="Vagrant" OrgName="Vagrant" ComputerName=windowsXP ProductKey=XXXXX-XXXXX-XXXXX-XXXXX-XXXXX

[Display] BitsPerPel=32 Xresolution=1024 YResolution=768

[TapiLocation] CountryCode=49

[GuiRunOnce] Command0="ipconfig /all"

[Identification] JoinWorkgroup=WORKGROUP

[Networking] InstallDefaultComponents=Yes

[Branding] BrandIEUsingUnattended=Yes

[Proxy] Proxy_Enable=0 Use_Same_Proxy=0

jedi4ever commented 11 years ago

I'm by no means a windows specialist, but I recall you can include drivers on the floppy disk too?

On 26/11/12 13:24, srr84 wrote:

I automated the installation of Windows XP SP 3 with veewee. So far so good. But it only works for me when I include the winnt.sif together with the SATA Drivers in my XP Image.

When I try to use the winnt.sif on a virtual floppy but it does no use it to automate the installation.

Here is what my files look like:

definiion.rb

Veewee::Session.declare({ :os_type_id => 'WindowsXP', :iso_file => "WinLite.iso", :iso_src => "http://wb.dlservice.microsoft.com/dl/download/release/Win7/3/b/a/3bac7d87-8ad2-4b7a-87b3-def36aee35fa/7600.16385.090713-1255_x86fre_enterprise_en-us_EVAL_Eval_Enterprise-GRMCENEVAL_EN_DVD.iso", :iso_md5 => "62675A3B76D21815367F372961B71A56", :iso_download_timeout => "100000",

|:cpu_count => '1', :memory_size=> '512', :disk_size => '10280', :disk_format => 'VDI', :hostiocache => 'off',

:floppy_files => [ "winnt.sif" ],

:boot_wait => "1", #ten minutes, ten seconds :boot_cmd_sequence => [''],

:ssh_login_timeout => "10000",

Actively attempt to winrm (no ssh on base windows) in for 10000 seconds

:ssh_user => "vagrant", :ssh_password => "vagrant", :ssh_key => "", :ssh_host_port => "59867", :ssh_guest_port => "22", |

})

winnt.sif

;SetupMgrTag [Data] AutoPartition=1 MsDosInitiated="0" UnattendedInstall="Yes"

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

[GuiUnattended] AdminPassword="vagrant" EncryptedAdminPassword=NO AutoLogon=Yes AutoLogonCount=1 OEMSkipRegional=1 TimeZone=110 OemSkipWelcome=1

[UserData] FullName="Vagrant" OrgName="Vagrant" ComputerName=windowsXP ProductKey=XXXXX-XXXXX-XXXXX-XXXXX-XXXXX

[Display] BitsPerPel=32 Xresolution=1024 YResolution=768

[TapiLocation] CountryCode=49

[GuiRunOnce] Command0="ipconfig /all"

[Identification] JoinWorkgroup=WORKGROUP

[Networking] InstallDefaultComponents=Yes

[Branding] BrandIEUsingUnattended=Yes

[Proxy] Proxy_Enable=0 Use_Same_Proxy=0

— Reply to this email directly or view it on GitHub https://github.com/jedi4ever/veewee/issues/434.

srr84 commented 11 years ago

I know, but that won`t solve my winnt.sif problem. I just mentioned that, to ensure the SATA Driver works for me at the automated installation. Everything works beside winnt.sif on floppy. In the I386 folder included in the image it works.

mbrgm commented 11 years ago

After researching on the topic for a while I managed to complete an unattended Windows XP SP3 Professional (german) installation using Virtual Box the following winnt.sif on a virtual floppy drive (note that you have to insert your own product key, password and so on). You can look up the meaning for the different options here.

;SetupMgrTag
[Data]
    AutoPartition=1
    MsDosInitiated="0"
    UnattendedInstall="Yes"
    AutomaticUpdates=yes

[Unattended]
    UnattendMode=FullUnattended
    OemSkipEula=Yes
    OemPreinstall=No
    TargetPath=\WINDOWS
    Repartition=yes
    UnattendSwitch="yes"
    WaitForReboot="No"

[Display]
    AutoConfirm=1

[GuiUnattended]
    AdminPassword="somePassword"
    EncryptedAdminPassword=NO
    AutoLogon=Yes
    AutoLogonCount=1
    OEMSkipRegional=1
    TimeZone=110
    OemSkipWelcome=1

[UserData]
    ProductKey=<product key>
    FullName="John Doe"
    OrgName=""
    ComputerName=*

[RegionalSettings]
    LanguageGroup=1
    Language=00000407

[Identification]
    JoinWorkgroup=WORKGROUP

[Networking]
    InstallDefaultComponents=Yes

The crucial point was in creating the floppy image which contains the answer file. I first tried to create it using OSX's hdiutil, but the setup did not recognize the answer file. After reading the instructions on http://fatslowkid.blogspot.de/2010/09/installing-windows-xp-unattended-with.html I created the file in Ubuntu 12.10:

$ dd bs=512 count=2880 if=/dev/zero of=~/.VirtualBox/HardDisks/floppy01.img
$ /sbin/mkfs.msdos ~/.VirtualBox/HardDisks/floppy01.
$ mount -o loop .VirtualBox/HardDisks/floppy01.img /mnt
$ cp winnt.sif /mnt

Using this image the installation would finally recognize the file and setup the system without user prompt.

@jedi4ever: Maybe there is a way to have a working floppy image created by veewee with the above hints? I'm no Ruby expert but would love to see a full-fledged solution.

srr84 commented 11 years ago

@mabbl: Thanks for your reply I will give it a try!

troyfc commented 10 years ago

This is the diff I used on linux to get the boot floppy recognised by both windows xp and windows 7.

diff --git a/lib/veewee/provider/core/box/floppy.rb b/lib/veewee/provider/core/box/floppy.rb
index 342ffb7..86ba879 100644
--- a/lib/veewee/provider/core/box/floppy.rb
+++ b/lib/veewee/provider/core/box/floppy.rb
@@ -21,7 +21,13 @@ module Veewee
               env.logger.info "Removing previous floppy file"
               FileUtils.rm(floppy_file)
             end
-            command="java -jar \"#{javacode_dir}/dir2floppy.jar\" \"#{temp_dir}\" \"#{floppy_file}\""
+            #command="java -jar \"#{javacode_dir}/dir2floppy.jar\" \"#{temp_dir}\" \"#{floppy_file}\""
+            #shell_exec("#{command}")
+            command="dd bs=512 count=2880 if=/dev/zero of=\"#{floppy_file}\""
+            shell_exec("#{command}")
+            command="/sbin/mkfs.msdos \"#{floppy_file}\""
+            shell_exec("#{command}")
+            command="/bin/bash -c \"/usr/bin/mcopy -i #{floppy_file} #{temp_dir}/* ::\""
             shell_exec("#{command}")
           end
         end