COREMU is a scalable and portable parallel full system emulator built on Qemu. Currently, COREMU supports x86_64 and ARM (MPcore Cortex A9) target on x86_64 Linux host system. (Note that ARM support is not as stable as x86_64 now.)
COREMU is able to boot 255 emulated cores running Linux on our testing machine which has only 4 physical cores (Intel Core(TM)2 Quad CPU Q6600, with 2G memory).
2013.01.24: ReEmu code released
The prototype of deterministic replay on COREMU is released. Code is on reemu branch. There's some ruby script to help you record and replay guest Linux. Edit "coremu.rb" according to your settings before using these scripts.
2010.10.11: New git repository
We released two git repositories we used internally. One contains the coremu library source tree (COREMU src), the other is a clone of the QEMU source tree which we patched on (Patched QEMU src). We will no longer update the original repository.
2010.09.07: Release COREMU-0.1.1
In this version, we add the smart watch point and memory trace collection mechanisms in COREMU.The code also has been pushed to the git repository with a new branch "extra-features". Documents and examples are provided.
2010.07.17: Release COREMU-0.1
What you need:
Compile and install. (Run 'configure --help' for more options.)
cd <coremu source dir> ./configure --target=x86_64 --prefix=<install dir> <path to qemu source code> make make install
You can now use COREMU to start a Linux system. We provide several scripts to do this. Note that COREMU needs to be run as root, because we change thread priority during the execution.
cd scripts sudo ./x86_64-linux.sh <path to coremu> <path to image> <number of emulated cores>
sudo ./x86_64-linux.sh ../bin/bin/qemu-system-x86_64 debian.img 255
The sample images for both X64 and ARM Linux can be downloaded from: https://sourceforge.net/downloads/coremu/
The system may take a while to start booting, and it takes around 12 minitues to boot Linux with 255 emulated cores on a 4 cores machine, please be patient.
We also provide two system images which can be used directly:
IMPORTANT: COREMU rely on accurate nanosleep, so the host system's Linux kernel must have the option "High Resolution Timer" enabled.
You can check this by looking at the output of 'cat /proc/timer_list'. If the resolution is 1 nsecs, it should be OK.
COREMU currently does not support Mac OS X.
We put COREMU in a separate directory and build it as library, because we want to:
The Qemu source code we used are checked out from the official Qemu git repository. Since the stable branch does not support Cortex A9 very well, we started the development on the master branch. More specifically, we started from the commit: 54d7cf136f040713095cbc064f62d753bff6f9d2
Yufei Chen, Haibo Chen. Scalable Deterministic Replay in a Parallel Full-system Emulator. In Proceedings of the 18th ACM symposium on Principles and practice of parallel programming (PPoPP '13).
Shenzhen,China, February, 2013. PDF
Zhaoguo Wang, Ran Liu, Yufei Chen, Xi Wu, Haibo Chen Weihua Zhang and Binyu Zang. COREMU: a Scalable and Portable Parallel Full-system Emulator. ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming (PPoPP 2011). San Antonio, USA, February, 2011. PDF
For more information, please visit our project web site.
You can also take a look at our research group, maybe you will be interested in our other projects.
You can also subscribe to our mailing list: https://lists.sourceforge.net/lists/listinfo/coremu-list-devel