Skip to content

zeldovich/histar

Repository files navigation

# Quickstart Instructions to build/run HiStar on Ubuntu/Debian amd64/i386

# install required packages
sudo apt-get install git-core build-essential texinfo flex bison qemu autoconf automake

# get GNU tools
mkdir tools
cd tools
wget http://mirrors.kernel.org/gnu/gcc/gcc-4.1.2/gcc-core-4.1.2.tar.bz2 \
     http://mirrors.kernel.org/gnu/gcc/gcc-4.1.2/gcc-g++-4.1.2.tar.bz2 \
     ftp://sourceware.org/pub/binutils/snapshots/binutils-2.22.51.tar.bz2

# unpack them
for F in *.tar.bz2; do tar jxvf $F; done

# setup binutils
cd binutils-2.22.51
./configure --target=x86_64-jos-linux --prefix=/usr/local \
            --disable-nls --enable-64-bit-bfd
make
sudo make install
cd ..

# setup gcc
rm -r gcc-4.1.2/libstdc++-v3
cd gcc-4.1.2/
./configure --target=x86_64-jos-linux --prefix=/usr/local \
        --disable-nls --without-headers --with-newlib \
        --disable-threads --disable-shared --disable-libmudflap \
        --disable-libssp 
make
sudo make install
cd ..

# checkout histar
git clone http://www.scs.stanford.edu/histar/gitrepo/ histar

# configure histar
cd histar/conf/embedbin
cp default.mk local.mk
# edit local.mk and at your option comment out anything you don't want to
# compile, probably: development, demo, X11 graphics sections and also comment
# out usr/file and terminfo.tar
cd ../..
make
cp conf/sample-qemu.sh qemu.sh

# histar compiles in a directory called "obj.${git-branch-name}.${arch}"
# so edit the qemu.sh to run the version of histar you compiled
# the default case is the "master" branch for "amd64" so 
edit qemu.sh, change "obj" to "obj.master.amd64"

From here you should be able to run ./qemu.sh and you should be at the shell
of a working histar box.

== Instructions to build other tools that may be useful ==

* To configure bochs, you need --enable-x86-64:

./configure --enable-disasm \
        --enable-iodebug \
        --enable-4meg-pages --enable-pae --enable-global-pages \
        --enable-x86-64 \
        --enable-all-optimizations \
        --enable-x86-debugger \
        --with-x11 --with-nogui \
        --enable-instrumentation \
        --enable-pci \
        --enable-pnic \
        --enable-gdb-stub

For the internal debugger (doesn't disassemble AMD64 code very well),
replace --enable-gdb-stub with --enable-debugger:

./configure --enable-disasm \
        --enable-iodebug \
        --enable-4meg-pages --enable-pae --enable-global-pages \
        --enable-x86-64 \
        --enable-all-optimizations \
        --enable-x86-debugger \
        --with-x11 --with-nogui \
        --enable-instrumentation \
        --enable-pci \
        --enable-pnic \
        --enable-debugger

On bochs 2.2, --enable-instrumentation doesn't compile, but CVS
versions work.  Unfortunately, bochs doesn't seem to emulate AMD64
very faithfully.  For example, the OpenBSD 3.7 floppy won't boot.

* binutils

Download binutils from http://www.kernel.org/pub/linux/devel/binutils/

./configure --target=x86_64-jos-linux --prefix=/usr/local \
        --disable-nls --enable-64-bit-bfd

* GCC 4.1.2

unpack both gcc-core and gcc-g++
rm -r gcc-4.1.2/libstdc++-v3

./configure --target=x86_64-jos-linux --prefix=/usr/local \
	--disable-nls --without-headers --with-newlib \
	--disable-threads --disable-shared --disable-libmudflap \
	--disable-libssp 

We don't build libstdc++-v3, libmudflap, or libssp, because it
requires system headers and crt files for the target platform.

Note that for some versions of gcc, you may need to say "env
SHELL=/bin/sh gmake" if you have a different shell.

* GDB

./configure --target=x86_64-jos-linux --prefix=/usr/local \
        --disable-nls --enable-64-bit-bfd

* AMD64 assembly intro:

        http://www.x86-64.org/documentation/assembly

* Qemu

For qemu 0.9.0 and earlier, you must apply ./conf/qemu-cmpxchg8b.patch
to make the cmpxchg8b instruction restartable.

For qemu 0.8.2 and earlier, you must apply ./conf/qemu-movd.patch to
avoid 32-bit truncation for some MMX operations.

./configure --disable-kqemu --disable-sdl --disable-gfx-check \
	--cc=gcc34 --host-cc=gcc34 \
	--target-list='x86_64-softmmu i386-softmmu sparc-softmmu arm-softmmu'

* To boot HiStar for the first time:

    % gmake
    % cp conf/sample-qemu.sh qemu.sh
    % ./qemu.sh

About

HiStar operating system (not under active development)

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published