Installing QEMU on Mac OS X El Capitan

QEMU is an open source computer emulator. Here I describe how I installed QEMU on Mac OS X El Capitan.

My goal was to learn more about building QEMU, and to boot Linux on QEMU, and to check if there were differences in the installation compared to when doing it on Mac OS X Yosemite.

I downloaded and unpacked QEMU 2.5.0 (this was the latest stable release at the date I did the download), by doing

wget http://wiki.qemu-project.org/download/qemu-2.5.0.tar.bz2
tar xvjf qemu-2.5.0.tar.bz2
cd qemu-2.5.0

Then, based on my earlier experiences, I used the configure command

./configure --enable-cocoa --target-list=i386-softmmu,arm-softmmu,x86_64-softmmu --disable-vnc

and it succeeded! Here I took advantage of my previous installation of rudix, and the use of rudix for installing glib, which I did using the command

sudo rudix install glib

This installation of glib prevented an error printout

ERROR: glib-2.22 gthread-2.0 is required to compile QEMU

The next step is building, which I did by simply typing make, but that did not succeed.

There were warnings, but also errors. I searched using google, using the error printout as search terms. This led me to this page with advice, which told me to add make targets, resulting in lines like

region_test_OBJECTS = region-test.$(OBJEXT) utils.$(OBJEXT)

and

scaling_helpers_test_OBJECTS = scaling-helpers-test.$(OBJEXT) utils.$(OBJEXT)

in the file

./pixman/test/Makefile

where the targets utils.$(OBJEXT) were added by me.

The errors went away, resulting in a successful build. Again, I was helped by my earlier experiences, where I learned how to prevent link errors by installing gettext using rudix, as

sudo rudix install gettext

I could then do make install to install my new QEMU.

Now I wanted to boot Linux! I looked at the QEMU Testing page, and decided to download and unpack a Linux image for ARM by doing

wget http://wiki.qemu.org/download/arm-test-0.2.tar.gz
tar zxvf arm-test-0.2.tar.gz

A Linux boot could then be done, by starting QEMU with the downloaded Linux image as argument, as

cd arm-test
qemu-system-arm -machine integratorcp -kernel zImage.integrator -initrd arm_root.img -nographic -append "console=ttyAMA0"

When done, QEMU can be shut down by doing Ctrl-A x.

Advertisements

Installing QEMU on Mac OS X Yosemite

QEMU is an open source computer emulator. Here I describe how I installed QEMU on Mac OS X Yosemite.

My goal was to learn more about building QEMU, and to boot Linux on QEMU.

I downloaded and unpacked QEMU 2.3.0 (this was the latest stable release at the date I did the download), by doing

wget http://wiki.qemu-project.org/download/qemu-2.3.0.tar.bz2
tar xvjf qemu-2.3.0.tar.bz2
cd qemu-2.3.0

Then, based on my earlier experiences, I used the configure command

./configure --enable-cocoa --target-list=i386-softmmu,arm-softmmu,x86_64-softmmu --disable-vnc

This command generated an error, telling me that

ERROR: glib-2.22 gthread-2.0 is required to compile QEMU

I tried my previous approach, where I installed the required glib version using sudo port install. I used the command

sudo port install glib-2.2

which resulted in

Warning: port definitions are more than two weeks old, consider using selfupdate
Error: Port glib-2.2 not found

I followed this advice, and did

sudo port selfupdate

but that led me into new troubles, with error messages telling me that my Xcode Command Line Tools were most likely not installed. I tried to install these tools but without luck

I was about to give up when I stumbled upon rudix. This turned out to be an attractive solution! I read at the rudix page that I should do

sudo python rudix.py install rudix

Then, from the rudix glib page, I learned that I should do

sudo rudix install glib

I did as told, and now the configure command

./configure --enable-cocoa --target-list=i386-softmmu,arm-softmmu,x86_64-softmmu --disable-vnc

succeeded. I followed it up by building, using make, but that did not succeed.

I looked at the build errors, which led me to this page with advice, which told me to add make targets, resulting in lines like

scaling_helpers_test_OBJECTS = scaling-helpers-test.$(OBJEXT) utils.$(OBJEXT)

in the file

./pixman/test/Makefile

where the last target had to be added by me. A similar change, in the same Makefile, was required, and resulted in the modified line

region_test_OBJECTS = region-test.$(OBJEXT) utils.$(OBJEXT)

The errors went away, but a new link error remained. The error printout was

LINK qemu-ga
ld: library not found for -lintl
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [qemu-ga] Error 1

I found this page with advice on how to solve it using brew (which was not applicable to my problem).

However, since I now had my rudix package, I chose instead to do

sudo rudix install gettext

This resulted in a successful build, and I could then also do make install to install my new QEMU.

Now I wanted to boot Linux! I looked at the QEMU Testing page, and decided to download and unpack a Linux image by doing

wget http://wiki.qemu.org/download/linux-0.2.img.bz2
bzip2 -d linux-0.2.img.bz2

A Linux boot could then be done, by starting QEMU with the downloaded Linux image as argument, as

qemu-system-i386 -hda linux-0.2.img