Skip to content

Commit

Permalink
Merge branch 'master' into master
Browse files Browse the repository at this point in the history
  • Loading branch information
glenux authored Jan 25, 2020
2 parents 46f98cd + ad48705 commit 45a5c10
Show file tree
Hide file tree
Showing 17 changed files with 592 additions and 246 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
.rvmrc
.vagrant
/ievms-control*
5 changes: 0 additions & 5 deletions Gemfile

This file was deleted.

29 changes: 0 additions & 29 deletions Gemfile.lock

This file was deleted.

181 changes: 108 additions & 73 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,103 +3,49 @@ Overview

Microsoft provides virtual machine disk images to facilitate website testing
in multiple versions of IE, regardless of the host operating system.
~~Unfortunately, setting these virtual machines up without Microsoft's VirtualPC
can be extremely difficult. The ievms scripts aim to facilitate that process using
VirtualBox on Linux or OS X.~~ With a single command, you can have IE6, IE7, IE8,
IE9 and IE10 running in separate virtual machines.

**NOTE:** As of Feb. 1st, 2013, the [MS images](http://www.modern.ie/virtualization-tools)
are fully compatible with Virtualbox, thanks to the [modern.IE](http://modern.IE)
project.
With a single command, you can have IE6, IE7, IE8,
IE9, IE10, IE11 and MSEdge running in separate virtual machines.

[![Click here to lend your support to ievms and make a donation at pledgie.com!](http://pledgie.com/campaigns/15995.png?skin_name=chrome)](http://pledgie.com/campaigns/15995)


Quickstart
==========

Just paste this into a terminal: `curl -s https://raw.github.com/xdissent/ievms/master/ievms.sh | bash`
Just paste this into a terminal:

curl -s https://raw.githubusercontent.com/xdissent/ievms/master/ievms.sh | bash


Requirements
============

* VirtualBox (http://virtualbox.org)
* VirtualBox > 5.0 (http://virtualbox.org), select 'command line utilities' during installation
* Curl (Ubuntu: `sudo apt-get install curl`)
* Linux Only: unar (Ubuntu: `sudo apt-get install unar`)
* Patience


Disk requirements
-----------------

A full ievms install will require approximately 37G:

Servo:.ievms xdissent$ du -ch *
5.7G IE10 - Win8-disk1.vmdk
2.6G IE10 - Win8.ova
2.5G IE10_Win8.zip
1.5G IE6 - WinXP-disk1.vmdk
724M IE6 - WinXP.ova
717M IE6_WinXP.zip
1.6G IE7 - WinXP-disk1.vmdk
15M IE7-WindowsXP-x86-enu.exe
1.6G IE8 - WinXP-disk1.vmdk
16M IE8-WindowsXP-x86-ENU.exe
10G IE9 - Win7-disk1.vmdk
4.7G IE9 - Win7.ova
4.7G IE9_Win7.zip
3.4M ievms-control.iso
4.6M lsar
4.5M unar
4.1M unar1.5.zip
37G total

You may remove all files except `*.vmdk` after installation and they will be
re-downloaded if ievms is run again in the future:

$ find ~/.ievms -type f ! -name "*.vmdk" -exec rm {} \;

If all installation related files are removed, around 21G is required:

Servo:.ievms xdissent$ du -ch *
5.7G IE10 - Win8-disk1.vmdk
1.5G IE6 - WinXP-disk1.vmdk
1.6G IE7 - WinXP-disk1.vmdk
1.6G IE8 - WinXP-disk1.vmdk
10G IE9 - Win7-disk1.vmdk
21G total


Bandwidth requirements
----------------------

A full installation will download roughly 7.5G of data.

**NOTE:** Reusing the XP VM for IE7 and IE8 (the default) saves an incredible
amount of space and bandwidth. If it is disabled (`REUSE_XP=no`) the disk space
required climbs to 74G (39G if cleaned post-install) and around 17G will be
downloaded.
**NOTE** Use [ievms version 0.2.1](https://github.com/xdissent/ievms/raw/v0.2.1/ievms.sh) for VirtualBox < 5.0.


Installation
============

1. Install VirtualBox (make sure command line utilities are selected and installed).
**1.)** Install [VirtualBox](http://virtualbox.org) and check the [Requirements](#requirements)

2. Download and unpack ievms:
**2.)** Download and unpack ievms:

* Install IE versions 6, 7, 8, 9 and 10.
* To install IE versions 6, 7, 8, 9, 10, 11 and EDGE use:

curl -s https://raw.github.com/xdissent/ievms/master/ievms.sh | bash
curl -s https://raw.githubusercontent.com/xdissent/ievms/master/ievms.sh | bash

* Install specific IE versions (IE7 and IE9 only for example):
* To install specific IE versions (IE7, IE9 and EDGE only for example) use:

curl -s https://raw.github.com/xdissent/ievms/master/ievms.sh | IEVMS_VERSIONS="7 9" bash
curl -s https://raw.githubusercontent.com/xdissent/ievms/master/ievms.sh | env IEVMS_VERSIONS="7 9 EDGE" bash

3. Launch Virtual Box.
**3.)** Launch Virtual Box.

4. Choose ievms image from Virtual Box.
**4.)** Choose ievms image from Virtual Box.

The OVA images are massive and can take hours or tens of minutes to
download, depending on the speed of your internet connection. You might want
Expand All @@ -121,7 +67,7 @@ Specifying the install path

To specify where the VMs are installed, use the `INSTALL_PATH` variable:

curl -s https://raw.github.com/xdissent/ievms/master/ievms.sh | INSTALL_PATH="/Path/to/.ievms" bash
curl -s https://raw.githubusercontent.com/xdissent/ievms/master/ievms.sh | env INSTALL_PATH="/Path/to/.ievms" bash


Passing additional options to curl
Expand All @@ -130,12 +76,73 @@ Passing additional options to curl
The `curl` command is passed any options present in the `CURL_OPTS`
environment variable. For example, you can set a download speed limit:

curl -s https://raw.github.com/xdissent/ievms/master/ievms.sh | CURL_OPTS="--limit-rate 50k" bash
curl -s https://raw.githubusercontent.com/xdissent/ievms/master/ievms.sh | env CURL_OPTS="--limit-rate 50k" bash


Disk requirements
-----------------

A full ievms install will require approximately 69G:

Servo:.ievms xdissent$ du -ch *
11G IE10 - Win7-disk1.vmdk
22M IE10-Windows6.1-x86-en-us.exe
11G IE11 - Win7-disk1.vmdk
28M IE11-Windows6.1-x86-en-us.exe
1.5G IE6 - WinXP-disk1.vmdk
724M IE6 - WinXP.ova
717M IE6_WinXP.zip
1.6G IE7 - WinXP-disk1.vmdk
15M IE7-WindowsXP-x86-enu.exe
1.6G IE8 - WinXP-disk1.vmdk
16M IE8-WindowsXP-x86-ENU.exe
11G IE9 - Win7-disk1.vmdk
4.7G IE9 - Win7.ova
4.7G IE9_Win7.zip
10G MSEdge - Win10-disk1.vmdk
5.1G MSEdge - Win10.ova
5.0G MSEdge_Win10.zip
3.4M ievms-control-0.3.0.iso
4.6M lsar
4.5M unar
4.1M unar1.5.zip
69G total

You may remove all files except `*.vmdk` after installation and they will be
re-downloaded if ievms is run again in the future:

$ find ~/.ievms -type f ! -name "*.vmdk" -exec rm {} \;

If all installation related files are removed, around 47G is required:

Servo:.ievms xdissent$ du -ch *
11G IE10 - Win7-disk1.vmdk
11G IE11 - Win7-disk1.vmdk
1.5G IE6 - WinXP-disk1.vmdk
1.6G IE7 - WinXP-disk1.vmdk
1.6G IE8 - WinXP-disk1.vmdk
11G IE9 - Win7-disk1.vmdk
10G MSEdge - Win10-disk1.vmdk
47G total


Bandwidth requirements
----------------------

A full installation will download roughly 12.5G of data.

**NOTE:** Reusing the XP VM for IE7 and IE8 (the default) saves an incredible
amount of space and bandwidth. If it is disabled (`REUSE_XP=no`) the disk space
required climbs to 95G (49G if cleaned post-install) and around 22G will be
downloaded. Reusing the Win7 VM on the other hand (also the default), saves
tons of bandwidth but pretty much breaks even on disk space. Disable it with
`REUSE_WIN7=no`.


Features
========


Clean Snapshot
--------------

Expand All @@ -146,6 +153,14 @@ you can simply revert to the `clean` snapshot to reset your VM to the
initial state.


Guest Control
-------------

VirtualBox guest additions are installed after each virtual machine is created
(and before the clean snapshot) and the appropriate steps are taken to enable
guest control from the host machine.


Resuming Downloads
------------------

Expand All @@ -159,15 +174,35 @@ Reusing XP VMs

IE7 and IE8 ship from MS on Vista and Win7 respectively. Both of these
images are far larger than the IE6 XP image, which also technically supports
IE7 and IE8. To save bandwidth, space and time, ievms will will reuse
IE7 and IE8. To save bandwidth, space and time, ievms will reuse
(duplicate) the IE6 XP VM image for both. Virtualbox guest control is used
to run the appropriate IE installer within the VM. The `clean` snapshot
includes the updated browser version.

**NOTE:** If you'd like to disable XP VM reuse for IE7 and IE8, set the
environment variable `REUSE_XP` to anything other than `yes`:

curl -s https://raw.github.com/xdissent/ievms/master/ievms.sh | REUSE_XP="no" bash
curl -s https://raw.githubusercontent.com/xdissent/ievms/master/ievms.sh | env REUSE_XP="no" bash


Reusing Win7 VMs
----------------

Currently there exists a [bug](https://www.virtualbox.org/ticket/11134) in
VirtualBox (or possibly elsewhere) that disables guest control after a Windows 8
virtual machine's state is saved. To better support guest control and to
eliminate yet another image download, ievms will re-use the IE9 Win7 image for
IE10 and IE11 by default. In addition, the Win7 VMs are the only ones which can
be successfully "rearmed" to extend the activation period.

**NOTE:** If you'd like to disable Win7 VM reuse for IE10, set the environment
variable `REUSE_WIN7` to anything other than `yes`:

curl -s https://raw.githubusercontent.com/xdissent/ievms/master/ievms.sh | REUSE_WIN7="no" bash


**NOTE:** It is currently impossible to install IE11 **without** reusing the
Win7 virtual machine.


Control ISO
Expand Down
28 changes: 18 additions & 10 deletions control/build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ install_packages() {
}

download_cross_compiler() {
url="http://landley.net/aboriginal/downloads/binaries/cross-compiler-i686.tar.bz2"
url="http://landley.net/aboriginal/downloads/binaries/cross-compiler-i686.tar.gz"
archive=`basename "${url}"`
log "Downloading cross compiler archive from ${url} to ${ievms_home}/${archive}"
if [[ ! -e "${archive}" ]] && ! curl -L "${url}" -o "${archive}"
Expand All @@ -31,9 +31,9 @@ download_cross_compiler() {
}

extract_cross_compiler() {
cross_compiler=`basename "${archive}" .tar.bz2`
cross_compiler=`basename "${archive}" .tar.gz`
log "Extracting cross compiler archive from ${archive} to ${ievms_home}/${cross_compiler}"
if [[ ! -e "${cross_compiler}" ]] && ! tar -jxf "${archive}"
if [[ ! -e "${cross_compiler}" ]] && ! tar -zxf "${archive}"
then
fail "Failed to extract ${archive} to ${ievms_home}/${cross_compiler} using 'tar', error code ($?)"
fi
Expand All @@ -46,7 +46,7 @@ download_kernel() {
if [[ ! -e "${archive}" ]] && ! curl -L "${url}" -o "${archive}"
then
fail "Failed to download ${url} to ${ievms_home}/${archive} using 'curl', error code ($?)"
fi
fi
}

extract_kernel() {
Expand All @@ -55,7 +55,7 @@ extract_kernel() {
if [[ ! -e "${kernel_src}" ]] && ! tar -jxf "${archive}"
then
fail "Failed to extract ${archive} to ${ievms_home}/${kernel_src} using 'tar', error code ($?)"
fi
fi
}

configure_kernel() {
Expand All @@ -82,7 +82,7 @@ download_iso() {
if [[ ! -e "${archive}" ]] && ! curl -L "${url}" -o "${archive}"
then
fail "Failed to download ${url} to ${ievms_home}/${archive} using 'curl', error code ($?)"
fi
fi
}

extract_iso() {
Expand All @@ -91,7 +91,7 @@ extract_iso() {
if [[ ! -e "${iso}" ]] && ! unzip "${archive}"
then
fail "Failed to extract ${archive} to ${ievms_home}/${iso} using 'unzip', error code ($?)"
fi
fi
}

unpack_iso() {
Expand All @@ -118,7 +118,15 @@ extract_initrd() {
copy_scripts() {
log "Copying scripts"
cp "/vagrant/control/stage2" "${initrd}/scripts/"
cp "/vagrant/control/ievms.reg" "${initrd}/scripts/"
cp "/vagrant/control/xpsw.reg" "${initrd}/scripts/"
cp "/vagrant/control/xpusr.reg" "${initrd}/scripts/"
cp "/vagrant/control/xpvboxga.bat" "${initrd}/scripts/"
cp "/vagrant/control/deuac.reg" "${initrd}/scripts/"
cp "/vagrant/control/reuac.reg" "${initrd}/scripts/"
cp "/vagrant/control/vboxga.bat" "${initrd}/scripts/"
cp "/vagrant/control/vsint.cer" "${initrd}/scripts/"
cp "/vagrant/control/ievms.xml" "${initrd}/scripts/"
cp "/vagrant/control/ievms.bat" "${initrd}/scripts/"
cp "/vagrant/control/isolinux.cfg" "${remaster_iso}/isolinux.cfg"
cp "/vagrant/control/isolinux.cfg" "${remaster_iso}/syslinux.cfg"
cp "${kernel}" "${remaster_iso}/"
Expand All @@ -138,7 +146,7 @@ compress_initrd() {
pack_iso() {
iso_out="/vagrant/ievms-control.iso"
log "Packing ievms ISO from ${remaster_iso} to ${iso_out}"
if ! genisoimage -o "${iso_out}" -b isolinux.bin -c boot.cat -p "ievms" -no-emul-boot -boot-load-size 4 -boot-info-table -V "IEVMS" -cache-inodes -r -J -l -joliet-long "${remaster_iso}"
if ! genisoimage -o "${iso_out}" -b isolinux.bin -c boot.cat -p "ievms" -no-emul-boot -boot-load-size 4 -boot-info-table -V "IEVMS" -cache-inodes -r -J -l -joliet-long "${remaster_iso}"
then
fail "Failed to pack ${remaster_iso} to ${iso_out} using 'genisoimage', error code ($?)"
fi
Expand All @@ -159,4 +167,4 @@ unpack_iso
extract_initrd
copy_scripts
compress_initrd
pack_iso
pack_iso
5 changes: 5 additions & 0 deletions control/deuac.reg
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System]
"EnableLUA"=dword:00000000
"ConsentPromptBehaviorAdmin"=dword:00000000
1 change: 1 addition & 0 deletions control/ievms.bat
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
if exist C:\Users\IEUser\ievms.bat C:\Users\IEUser\ievms.bat
Binary file removed control/ievms.reg
Binary file not shown.
Loading

0 comments on commit 45a5c10

Please sign in to comment.