MOVING!!!

Hey there, after several years of playing with Blogger and trying to get thing sorted out how I wanted, I finally decided to host my own domain so I could manage things easier. So this blog (which, admittedly, hasn't been updated much) is getting moved to my all-new site: DavisTobias.com/Linux. Also, to make it easier to transfer RSS feeds, this is the link to the new RSS feed. I'll leave this site and it's posts up, so I don't contribute to dead links on the internet, but I'm shutting off comments and won't post any more here.
Showing posts with label windows. Show all posts
Showing posts with label windows. Show all posts

April 18, 2009

Mounting an img disk

Hey there, this site has moved, so comments are disabled. Thankfully, you can go to the page, carefully linked for your satisfaction. Click here to go there.

When I set up Qemu and ran Windows XP inside, I had XP updated to Service Pack 2 from a cdrom. How to mount a cdrom in Qemu is available here, but I wanted to upgrade to Service Pack 3 and didn't want to download the SP3 file inside the virtual Windows since it is considerably slower. So I went to the Microsoft web-site and downloaded the necessary file, assuming I could just put it inside the "windows.img" file.

Well, I can, and I have to mount the file as a drive. But how do you do that? I didn't know, but now I do:

The essential command is this:
sudo mount -o loop,offset=32256 -t ntfs /folder/windows.img /media/windows

You will probably need to make the /media/windows directory first:
sudo mkdir /media/windows

Okay, here is the explanation of the directory making:
sudo : You can't be a normal user to do this, you have to be an administrator
mkdir : This is the command to make the directory
/media/windows : This is the folder you are making. You could also make it /mnt/windows

And here is the explanation of the mounting command:
sudo : See above
mount : This "connects" the fake drive to the computer
-o loop,offset=32256 : These are special commands, set using -o , like you can make the fake drive read-only, or other tricks. The loop flag is used for fake drives, aka, img files. Any other command is seperated with a comma, an example would be -o loop,rw,auto,noexec . I will explain the offset just below.
-t ntfs : This is the type of hard-drive that is faked. In this case, it is Windows, which typically uses the NTFS file structure. Other common ones are fat16 and fat32 .
/folder/windows.img : This is the folder where the fake disk, windows.img , is located.
/media : This is the folder to mount the fake drive. It is the one you made earlier.

Okay, so here is where the real trick is: The offset=32256 flag is what tells the "mount" program where to look in the file. See, the "windows.img" fake drive file has some other information at the start which confuses the "mount" program, so it needs to know where in the file to start reading the fake drive. If you made your fake drive like I made mine, or if you only have Windows on it, the value of "32256" should be fine, otherwise try the following.

You will need to find the numerical value of the offset. Run the "fdisk" command, just be careful because if you mistype it you can easily destroy EVERYTHING! Run it like this:
fdisk -l /folder/windows.img

fdisk : The fdisk command is the swiss army knife to poke at drives
-l : This lists the drive information
/folder/windows.img : This is the fake drive

It will probably print something like this:

You must set cylinders.
You can do this from the extra functions menu.

Disk /folder/windows.img: 0 MB, 0 bytes
255 heads, 63 sectors/track, 0 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x1ff71ff7

Device Boot Start End Blocks Id System
/folder/windows.img 1 * 1 1273 10225341 7 HPFS/NTFS
Partition 1 has different physical/logical endings:
phys=(1023, 254, 63) logical=(1272, 254, 63)


The two things to notice are the number which falls under the "Start". In mine, that is just 1. Note also the "63 sectors/track". The number to offset is: 1*63*512=32256

Now, once I mounted the "windows.img" I was able to poke around in the folders. I took the Windows Service Pack 3 file and copied it to my Desktop. Now I can install SP3 without having to download it in virtual Windows XP, this saves a lot of time!

For my next trick, I will pull a rabbit out of my hat:
Try mounting the Fake drive, and booting XP in Qemu together! (Mount first, then run Qemu) Rock on!

P.s. You may have trouble unmounting that fake drive? Type in df and see which thing on the left corresponds to the fake drive on the right. In my case it was /dev/loop0 . Now, you may have a trouble unmounting it still? In this case, you will need to exit any programs accessing the drive, I even had to exit the terminal I was in. Now go back and try again.

April 16, 2009

Guess what I am doing?

Hey there, this site has moved, so comments are disabled. Thankfully, you can go to the page, carefully linked for your satisfaction. Click here to go there.


After I completely torched my previous Windows install with a virus infected software, I decided to try another way and install Windows in a virtual computer on Ubuntu!

Here is what I did, although some more differenter instructions can be found here:

Go to the famous "Add/Remove..." and install "Qemulator". I don't know how well suited this will be for my purposes, but this is a test anyway, so no big deal.

Now we need a fake hard drive. Now, go to the beautiful terminal (I made a keyboard shortcut: ctrl+alt+t) and travel to somewhere convenient and make a drive with Qemu:
qemu-img create windows.img 10000M

qemu-image: The Qemu program which makes the fake drive
create: I wonder if there is a detroy function?
windows.img: This is the file, which is a hard drive image
10000M: This is 10 Gigs, I am going to install a large program on here, so...

Now lets boot the fake machine up!
qemu -boot d -cdrom /dev/scd0 -hda windows.img

qemu: The program virtualizing an entire computer!
-boot d: This tells qemu what drive to pretend to boot from, in this case the cd
-cdrom /dev/scd0: The cdrom is this device, make sure it's your actual cd*
-hda windows.img: This is the earlier created hard drive image

Now Qemu will boot up to whatever cd you previously mounted on your computer. What? You didn't mount the disk yet? Well, do that, type the above command, and come back here.

Okay, now Qemu should boot up into whatever the cd was, in my case it was the Windows XP installation guide. The setup was all plain-text, fine with me, and took maybe 8 minutes. Then Windows wants to restart. It will restart Qemu, but exit the program first.

What you need to do is start Qemu back up, this time with only slightly different commands:
qemu -boot c -cdrom /dev/scd0 -hda windows.img

These are the same as last time, except for this one:
-boot c: This tells Qemu to boot to what Windows wants to call the C:/ drive, which is your "windows.img" fake hard drive file.

Now Windows should boot into it's familiar black screen with that awesome graphic window-esque thing, and then it will want to install all the drivers, files, etc., just like a normal Windows installation.

It seems that, to get the internets to work inside Qemu, you have to tell it to pass network capabilities through. It virtualizes everything else, network and usb support as well. To do that, add -net nic to the end of the command, so it looks like:
qemu -boot c -cdrom /dev/scd0 -hda windows.img -net nic

Other instructions said use -net user, I don't know the difference very well, but -net nic was the only one that worked for me.

Once you are comfortable with your Qemu configurations, you probably want to make a shortcut of some kind so you don't have to remember this command all the time. I don't have any cool tricks up my sleeve on this one, just copy and paste the command into a hand-made shortcut.

One more thing: I installed Qemu by using the "Add/Remove..." in Ubuntu, but I found the GUI was not useful, and had enough interface glitches that running through the command line is much easier. If I can figure out the command line way to install I will let you know, it's probably really simple.


*To double check your cd drive, go to the terminal (after you put in your cd and can open it's folders) and type:
df
This will list all the mounted things, drives and memory are both "mounted" in Linux, look for one that says "/dev/scd0" or perhaps "/dev/cdrom", but on the right it will have the title of the cd, like "/media/X1APFPP_EN" or something similarly unintelligible.