The Pedigree Operating System
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)
libmpcheaders (typically via
- genisoimage and/or mkisofs
Building Pedigree with Easy Build
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.
./easy_build_[target].sh to build Pedigree. Valid options for
- 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
.autogen.cache, and then run an Easy Build script.
Building Pedigree Manually
Alternatively, you can build manually.
Step 1: Cross-Compiler
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:
Step 2: Pedigree Base
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
$ 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
Step 3: Required Packages
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
Step 4: Final Build
Finally, build the rest of the kernel and userspace:
From now on, you can simply run
scons to build Pedigree.
build/pedigree.iso, with an attached disk for
You can also specify
createvdi=1 to create VMDK or VDI
disk images for your emulator. These options require
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.
$ ./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
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.