Mirror of Harvey OS github repository http://harvey-os.org/

Ronald G. Minnich 5e9110f306 Clean up the json files 9 gadi atpakaļ
386 999e4ebda0 ANOTHER round of type fixes. 9 gadi atpakaļ
acme 999e4ebda0 ANOTHER round of type fixes. 9 gadi atpakaļ
adm 91d8c86336 Plan 9 from Bell Labs 2013-01-25 11 gadi atpakaļ
amd64 5e9110f306 Clean up the json files 6 gadi atpakaļ
arm 999e4ebda0 ANOTHER round of type fixes. 9 gadi atpakaļ
cfg a5cd8682c5 add dhcp server and tftp server configs for harvey minicluster. 9 gadi atpakaļ
cron 4db2188a5b Plan 9 from Bell Labs 2007-10-06 17 gadi atpakaļ
dist 83d6593e6c Plan 9 from Bell Labs 2013-05-01 11 gadi atpakaļ
external_example e86fb5ff9c Add an example of how to build Harvey programs outside the Harvey tree 9 gadi atpakaļ
lib 521dace85c Plan 9 from Bell Labs 2014-02-25 10 gadi atpakaļ
mail 372adb5430 Plan 9 from Bell Labs 2010-01-17 15 gadi atpakaļ
mips 999e4ebda0 ANOTHER round of type fixes. 9 gadi atpakaļ
power 999e4ebda0 ANOTHER round of type fixes. 9 gadi atpakaļ
power64 999e4ebda0 ANOTHER round of type fixes. 9 gadi atpakaļ
rc d1284cd04f rename case-sensitive files that need to be dealt with later (for MacOS) 9 gadi atpakaļ
sparc 999e4ebda0 ANOTHER round of type fixes. 9 gadi atpakaļ
sys 5e9110f306 Clean up the json files 6 gadi atpakaļ
usr 0eec6ff7a1 Plan 9 from Bell Labs 2006-01-29 19 gadi atpakaļ
util 8b8ac3f3e6 Preen files. Walk the tree, remove cflags, put things in order. 6 gadi atpakaļ
web 5ba4d8b469 Show new news in index. Minor style update to blockquotes. 6 gadi atpakaļ
.gitignore 7c0e118965 have mksys.go replace sys/src/9/mk/parse at large 9 gadi atpakaļ
.gitmodules 049de84c76 Add Ron's go9p and ufs as a submodule 9 gadi atpakaļ
BUGLIST e23170fd6a Add a BUGLIST file 9 gadi atpakaļ
BUILD d68d4e8697 Make BUILD fail when compilation fails. 6 gadi atpakaļ
BUILD.conf d68d4e8697 Make BUILD fail when compilation fails. 6 gadi atpakaļ
LICENSE 25de748849 GNU General Public License 9 gadi atpakaļ
LICENSE.afpl 58309a73b6 Plan 9 from Bell Labs 2003-06-29 21 gadi atpakaļ
LICENSE.gpl 25de748849 GNU General Public License 9 gadi atpakaļ
NOTICE 25de748849 GNU General Public License 9 gadi atpakaļ
README b0774b882e add hombrew gcc as a alternative to macports 6 gadi atpakaļ
RUN_ME_FIRST 7cf0b433f2 Add a simple script for the first checkout. 9 gadi atpakaļ
l 4761d30948 Simple script to enable remote console 9 gadi atpakaļ

README

This is Plan 9 for amd64 built with gcc (and soon, I hope, clang).

This file is a quick list of instructions to get you started quickly.


Prerequisites
=============

To build harvey and play with it, you need to have git, golang, qemu, gcc,
binutils and bison installed. On a Debian, Ubuntu or other .deb system,
you should be able to get going with

sudo aptitude install git golang build-essential bison qemu-system


GERRIT
======

We use gerrithub.io for code-review. If you want to submit changes, go to

https://review.gerrithub.io/#/admin/projects/Harvey-OS/harvey

and check out the repository from gerrithub rather than github. The clone
command will probably look something like this:

git clone ssh://USERNAME@review.gerrithub.io:29418/Harvey-OS/harvey

you'll need to run a few commands inside the top-level directory to get set
up for code-review:

cd harvey
curl -Lo .git/hooks/commit-msg http://review.gerrithub.io/tools/hooks/commit-msg
chmod u+x .git/hooks/commit-msg
git config remote.origin.push HEAD:refs/for/master

One last thing, we need to initialize any submodules:

git submodule init
git submodule update


If you are on a Mac, you should install macports (https://www.macports.org/) and do

port install x86_64-elf-gcc
port install x86_64-elf-binutils
port install qemu
export TOOLPREFIX=x86_64-elf-

or if you use homebrew (https://http://brew.sh/)

brew tap sevki/gcc_cross_compilers
brew install sevki/gcc_cross_compilers/x86_64-elf-gcc
brew install qemu
export TOOLPREFIX=x86_64-elf-

and you're now all set, you can build the whole thing just by running

export HARVEY=$(pwd)
export ARCH=amd64
./BUILD all

Once building is complete, you can try booting the kernel with qemu

(cd sys/src/9/k10 && sh ../../../../util/QRUN)

Next you should find a bug somewhere in harvey and fix it. In general, the
util/build tool "just works" in any subdirectory, so you can also build just
the stuff you are looking at, too, eg.

cd sys/src/cmd/aux
build aux.json

Let's say you found a bug and the files you needed to change were
sys/src/9/ip/tcp.c and sys/src/9/ip/ipaux.c. To submit this for review, you do

git add sys/src/9/ip/tcp.c
git add sys/src/9/ip/ipaux.c
git diff --staged # to check that the patch still makes sense
git commit -m 'your description of the patch'
git push

Note the lack of qualifiers in the last push command. It is important,
because it needs to be pushed to "origin HEAD:refs/for/master" for review
(and not to master). This will generate a code-review change request, others
will review it, and if it looks good we will merge it to the mainline repo
using gerrithub.io.

If your patch needs further work (you notice something wrong with it yourself,
or someone suggests changes), you can just edit the affected files and then
amend the change list as follows

git add sys/src/9/ip/tcp.c
git commit --amend
git push

More information on using Gerrit can be found on the gerrithub.io website.


Getting go9p to serve your files
================================

The currently recommended way of doing this is to run go9p/ufs as the
file server for harvey. It is provided as a submodule in util/third_party
and should be automatically compiled & copied to util/ when you run
'BUILD utils'.

Once it's built, you can run this:

(export HARVEY=$(pwd) && cd sys/src/9/k10 && sh ../../../../util/GO9PRUN)

to boot with ufs serving the harvey directory for your harvey instance. Once
harvey is up, you can telnet onto it with

util/telnet localhost:5555

Where 5555 is forwarded to the harvey instance. This gives you a prompt
without any security. Once you have the prompt, you can mount the harvey
directory as your root like this (10.0.2.2 is what qemu has as the host)

srv tcp!10.0.2.2!5640 k
mount -a /srv/k /