The latest disk image is the most recent successful build of Pedigree from our Buildbot. There are no guarantees of stability or even functionality of these builds.
The nightly disk image is from nightly builds on our Buildbot, with the same disclaimer.
You'll need at least the following to build Pedigree and its compilers:
- SCons (>1.2.0)
libmpfr
,libgmp
, andlibmpc
headers (typically via-dev
packages)- SQLite3
- genisoimage and/or mkisofs
- perl
- autoconf
We highly recommend you first try one of our Easy Build scripts before you try
and run SCons manually. There's a little bit of work involved in setting up a
build of Pedigree for the first time, which the Easy Build script handles for
you. After that it's as easy as just running scons
at the command line.
Just run ./easy_build_[target].sh
to build Pedigree. Valid options for
target
include:
- x64
- arm
- hosted (for a version of the kernel that runs on Linux)
Dependencies and a cross-compiler will be installed and/or created, allowing you to jump straight into testing Pedigree.
To build Pedigree at any point after this, just run scons
. The build system
remembers the configuration the Easy Build specified for you.
To switch between architectures, just remove options.cache
and
.autogen.cache
, and then run an Easy Build script.
Alternatively, you can build manually.
To build a cross-compiler, in the root of the Pedigree tree, run:
$ ./scripts/checkBuildSystemNoInteractive.pl $TARGET-pedigree \ $PWD/pedigree-compiler
If you are building on OSX, you should also pass osx-compat
as the final
parameter to the script.
Valid targets include:
x86_64
armv7
Configure the Pedigree UPdater (pup) to start:
$ ./setup_pup.py amd64 # (or arm) && ./run_pup.sh sync
You'll need at least Pedigree's libtool
to continue:
$ ./run_pup.sh install libtool
Now, build an initial libc
and libm
:
$ scons CROSS=$PWD/pedigree-compiler/bin/$TARGET-pedigree- build/libc.so \ build/libm.so
With this complete, the compiler build process can be completed:
$ ./scripts/checkBuildSystemNoInteractive.pl $TARGET-pedigree \ $PWD/pedigree-compiler libcpp
Install necessary packages to build the full userspace:
$ ./run_pup.py install libpng
$ ./run_pup.py install libfreetype
$ ./run_pup.py install libiconv
$ ./run_pup.py install zlib
$ ./run_pup.py install bash
$ ./run_pup.py install coreutils
$ ./run_pup.py install fontconfig
$ ./run_pup.py install pixman
$ ./run_pup.py install cairo
$ ./run_pup.py install expat
$ ./run_pup.py install mesa
$ ./run_pup.py install ncurses
$ ./run_pup.py install gettext
$ ./run_pup.py install pango
$ ./run_pup.py install glib
$ ./run_pup.py install harfbuzz
$ ./run_pup.py install libffi
$ ./run_pup.py install gcc
Finally, build the rest of the kernel and userspace:
$ scons
From now on, you can simply run scons
to build Pedigree.
Boot from build/pedigree.iso
, with an attached disk for build/hdd.img
, to
run Pedigree.
You can also specify createvmdk=1
and/or createvdi=1
to create VMDK or VDI
disk images for your emulator. These options require qemu-img
.
The images/local directory allows you to use pup
, Pedigree's package manager,
to manage your hard disk image file set. If you ran the Easy Build script, pup
is already configured and ready to go.
Simply run:
$ ./run_pup.sh sync
to synchronise your local pup repository with the server.
Then you can run:
$ ./run_pup.sh install <package>
to install a package.
Visit http://pup.pedigree-project.org to see a list of all packages that are available and can be downloaded.
Remember to re-run scons
after installing a package to ensure your disk image
has the new package on it. You may need to rm build/hdd.img
if SCons doesn't
detect that the images directory has changed.
You can also add arbitrary files to the images/local directory to use them at
runtime. For example, you could create a directory under users
for yourself,
and add a .bashrc
and .vimrc
.
A utility script, scripts/manage_users.py
, is provided to add or remove users
from the database for use at runtime.
Report any issues on the project tracker at http://pedigree-project.org
You can find us in #pedigree on Freenode IRC.
We welcome contributions. The preferred mechanism for contributing is via pull requests. See the issue trackers at http://pedigree-project.org if you need ideas. Alternatively, come join us in our IRC channel on Freenode (see above).
We highly recommend working through a successful build and playing with some of Pedigree's features in a VM before leaping into contributing. This will help with understanding much of what you see in the code, and also potentially give you some more ideas about areas to contribute to.