Plugin the USB Drive
First, you need to figure out the device ID of the USB drive.
Most modern Linux distributions should automount the USB drive. If not, you can see what device ID it is assigned to by running df -h or mount.
Additionally, syslog can be monitored to find the device ID.
On Fedora, CentOS, and RHEL run sudo tail -f /var/log/messages.
On Ubuntu or Debian run sudo tail -f /var/log/syslog.
Once you figure out the USB drive’s device ID, be sure to unmount it before continuing:
sudo umount /dev/sdX
Be aware, the following steps will erase everything on the USB drive you are using. You are responsible for your own data.
Partition the USB Drive
Either fdisk or parted can be used to partition the USB drive. Use whatever command you are more familiar with.
Be aware, changes made using fdisk can be undone as long as those changes have not yet been written. Changes made using parted cannot be undone because they are applied in real time. In either case, be SURE you are making changes to the right device ID.
Partition the USB Drive with fdisk
Open the USB drive in fdisk:
sudo fdisk /dev/sdX
Once you are in the fdisk interactive menu, partition the USB drive with the following steps:
Type p and Enter to print the current partition table. I do this out of habit.
Delete all the current partitions by typing d then Enter for each partition.
Type n and Enter, then type p and Enter, then type 1, and then type Enter three times to create one new primary partition that uses all available space.
Type t and Enter (Partition 1 is automatically selected because it’s the only partition), then type 7 and Enter to change the type to HPFS/NTFS/exFAT.
Type a and Enter, then type 1 and Enter to turn on the Boot flag.
To verify everything worked, type p and Enter and make sure the Boot column has an asterisk (*) set and the Id column is set to 7.
Type w and Enter to write the changes.
Next, go to the section titled Format the New Partition on the USB Drive as NTFS.
Partition the USB Drive with parted
Open the USB drive in parted:
sudo parted /dev/sdX
Once you are in the parted interactive menu, partition the USB drive with the following steps (Make SURE you are using parted on the right device ID. Everything done using parted is applied in real time.):
(parted) mklabel msdos
(parted) mkpart primary ntfs 1 -1
(parted) set 1 boot on
(parted) quit
Next, go to the section titled Format the New Partition on the USB Drive as NTFS.
Format the New Partition on the USB Drive as NTFS
You will need the Linux NTFS userspace driver installed.
To install it on Fedora, CentOS, or RHEL run sudo yum install ntfs-3g.
To install it on Ubuntu or Debian run sudo apt-get install ntfs-3g.
Then, format the partition as NTFS:
sudo mkfs.ntfs -f /dev/sdX1
Install ms-sys
You will need ms-sys to write a Master Boot Record (MBR) to the USB drive.
In order to compile the source code, make sure you have installed the gcc, make, and gettext repository packages. The package names should be the same on Fedora, CentOS, RHEL, Ubuntu, and Debian.
Download the latest source code from http://ms-sys.sourceforge.net/#Download.
Un-tar the source code and change into the source code directory:
tar xvzf ms-sys-2.5.0.tar.gz
cd ms-sys-2.5.0
Compile and install the binary:
make
sudo make install
ms-sys will install to /usr/local/bin. Run the following commands if that path is not already in the root user’s environment PATH:
su –
export PATH=$PATH:/usr/local/bin
Write Master Boot Record (MBR) to the USB Drive
Now that ms-sys is installed, you will use it to write a Windows 7 Master Boot Record to the USB drive:
sudo ms-sys -7 /dev/sdX
Mount the USB Drive
Create or use an existing directory to mount the USB drive:
sudo mkdir -p /mnt/usb
sudo mount /dev/sdX1 /mnt/usb
Mount the Windows 7 ISO
Create or use an existing directory to mount the Windows 7 ISO:
sudo mkdir -p /mnt/iso
sudo mount -o loop /tmp/en_windows_7_professional_x64_dvd_X15-65805.iso /mnt/iso
Copy the Contents of the Windows 7 ISO to the USB Drive
Finally, copy the contents of the mounted Windows 7 ISO to the mounted USB drive (this could take some time depending on the speed of the USB drive):
sudo cp -av /mnt/iso/* /mnt/usb/
Unmount the USB Drive
Unmount the USB drive once the cp command is finished. However, I encountered several situations where the cp command completed before all I/O was written to the USB drive.
Because of this, sudo umount /mnt/usb will stall until all I/O has been written. As previously mentioned, depending on the speed of your USB drive, this could take sometime.
Use the iotop command to watch the I/O bandwidth of the USB drive in real time. Once you no longer see the USB drive at the top of iotop’s output, sudo umount /mnt/usb should successfully exit.
Boot from the USB Drive
Plug the USB drive into the computer you want to install Windows 7 on and boot from it.
Modern laptops and desktop motherboards typically have several USB boot options. You may be required to boot to USB-HDD, USB-ZIP, USB-FDD, or USB-CDROM.