Small Virtual Machines

From Lazarus wiki
Revision as of 22:30, 5 August 2015 by Pdbreneman (talk | contribs)
Jump to navigationJump to search

Overview

Shows how to create small ReactOS and Debian virtual machines using Qemu on Ubuntu, and then compile and run a Free Pascal program.

ReactOS virtual machine

Built (on Ubuntu 14.04 on 5 Aug. 2015) a minimal i386 VM with QEMU with ReactOS 0.3.17.

Download from ReactOS ReactOS-0.3.17-REL-iso.zip (88MB) and unzip to get ReactOS-BootCD.iso (103MB)

qemu-img create -f qcow2 reactos0317.img 2G
qemu-system-i386 -m 512 -hda reactos0317.img -cdrom ReactOS-BootCD.iso -boot d -net nic,model=rtl8139 -net user

For the install just press <Enter> for everything. When it reboots (twice) don't hit any key so it won't boot from the CD.

Shut down ReactOS. The QEMU image file is 294MB.

Restart:
qemu-system-i386 -m 512 -hda reactos0317.img -boot c -net nic,model=rtl8139 -net user

To see that networking is working, in the VM double-click on the Command Prompt and run ipconfig.

No, you don't want to use ReactOS for your desktop operating system, but it might be good enough to use for some specific things (like putting in a small VM).

Need to add instructions (similar to Debian below) to get the i386 Win32 HelloWorld zip, compile, and run.

Debian virtual machine

Built (on Ubuntu 14.04) a minimal i386 VM with QEMU with Debian (new version 8 release) Jessie.

Dowload from Debian debian-8.0.0-i386-netinst.iso (330 MB) and rename to debjes.iso

qemu-img create -f qcow2 debjes.img 2G
qemu-system-i386 -m 512 -hda debjes.img -cdrom debjes.iso -boot d

Networking worked without having to add other command line parameters! Remove the 2 default software collections (near the end of the install). The QEMU image file is 1.3 GB.

In the VM:

add sudo (There are instruction near the bottom of this page: Control Pascal PicoScope)

sudo apt-get clean
sudo dd if=/dev/zero of=/mytempfile (note that this is very slow as it fills the entire 2G)
sudo rm -f /mytempfile
sudo halt

After this the new img file is 635 MB:
qemu-img convert -O qcow2 debjes.img debjesnew.img

Archive with 7z and the file is now 143 MB. Not very big for a nice new Debian console VM.

Make a backup copy then start like this (for kvm):
kvm -m 512 -hda debjesnew.img -boot c -enable-kvm -net nic -net user

In the VM do (see http://turbocontrol.com/helloworld.htm if needed):
wget http://turbocontrol.com/HelloWorld-fpc-2.2.2.i386-linux.tar.gz
tar xzvf HelloWorld-fpc-2.2.2.i386-linux.tar.gz
./ppc386 hello
sudo apt-get install binutils
./ppc386 hello
./hello

This downloads a file (875240 bytes) but can't execute it (help needed):
wget https://github.com/LongDirtyAnimAlf/Reiniero-fpcup/blob/master/bin/i386-linux/fpcup_linux_x86?raw=true --no-check-certificate
mv fpcup_linux_x86?raw=true fpcup
chmod u+rx fpcup
sudo ./fpcup (Get No such file or directory error)

Notes

On Ubuntu kvm can be substituted for quem-system-i386 and things work much faster.

On qemu-img create the 2G could be larger but then on linux it will be much slower to minimize the size. Any suggestions?

Add instructions on how to do this on Windows (not just Ubuntu)?

Original forum message where this got started: [[1]]
Add instructions for OS X per discussion there?

Further Reading

Levinux is a small (~20 MB) QEMU download for x86 PCs (Windows, OS X, Linux) that provides a small Tiny Core Linux VM. I'd like to see something similar but with all the files and tools needed to pull the latest source code and cross-compile FPC (also with Debian instead of Tiny Core?).

 http://mikelev.in/ux/
 http://levinux.com (just a slideshow about it)

What is the most simple way to compile an ARM Embedded compiler for Teensy? See this forum message for more details on Teensy: [[2]]
Use fpcup? [[3]]

See also