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

Ronald G. Minnich d196f113d5 vga: always rebuild libdraw and libmemdraw 8 tahun lalu
386 86a02ab099 vga: move to using a 386 ureg struct 8 tahun lalu
acme 701bd23990 Build the Acme tools. "acd" builds now but I don't have a machine with 8 tahun lalu
adm 91d8c86336 Plan 9 from Bell Labs 2013-01-25 11 tahun lalu
amd64 6ac65787a5 usb: get rc scripts out amd64/bin/usb 8 tahun lalu
cfg a5cd8682c5 add dhcp server and tftp server configs for harvey minicluster. 9 tahun lalu
cron efcafd388b ref #9: rm /cron/upas 8 tahun lalu
dist 83d6593e6c Plan 9 from Bell Labs 2013-05-01 11 tahun lalu
external_example b00f795547 fix #11: removed redundant warning options; use gcc-4.8 in travis-ci 9 tahun lalu
lib 3fa7ae7280 boot: start screenconsole as a service posted to #s/screenconsole, mount it from boot. 8 tahun lalu
mail 0bfbdf5a4c mv mail/box/glenda mail/box/harvey 8 tahun lalu
mnt 019032fcf3 Fix profile and make directories to make drawterm/rio work. 8 tahun lalu
rc 6ac65787a5 usb: get rc scripts out amd64/bin/usb 8 tahun lalu
sys d196f113d5 vga: always rebuild libdraw and libmemdraw 8 tahun lalu
usr 019032fcf3 Fix profile and make directories to make drawterm/rio work. 8 tahun lalu
util d49cc53a3d vendor: preserve write permissions in upstream, see #32 8 tahun lalu
web f9aa8a0fd7 Updsting Harvey's site, I forgot the index. 8 tahun lalu
.clang-format c44d06d87c clang-format for all you gophers 8 tahun lalu
.gitignore 701bd23990 Build the Acme tools. "acd" builds now but I don't have a machine with 8 tahun lalu
.gitmodules 3d1e3234bf Initial Travis-CI integration. 9 tahun lalu
.travis.yml 01fbc490a4 Merge "build: ensure we preserve shell-type independence" 8 tahun lalu
AUTH_HOWTO af46c7d1c3 Add auth bits 8 tahun lalu
BUGLIST e23170fd6a Add a BUGLIST file 9 tahun lalu
CONTRIBUTORS a7b7e7be4b Add a CONTRIBUTORS file 8 tahun lalu
LICENSE 25de748849 GNU General Public License 9 tahun lalu
LICENSE.afpl 58309a73b6 Plan 9 from Bell Labs 2003-06-29 21 tahun lalu
LICENSE.gpl 25de748849 GNU General Public License 9 tahun lalu
NOTICE 25de748849 GNU General Public License 9 tahun lalu
README.md 3c92a6253d Update README.md to say sys/src/9/amd64 instead of k10 8 tahun lalu
bootstrap.sh 10d4829b12 Fixing reviewers in bootstrap script 8 tahun lalu
build.json 701bd23990 Build the Acme tools. "acd" builds now but I don't have a machine with 8 tahun lalu
clean.json a09a392546 clean: remove libs in clean rule 8 tahun lalu
envsetup ba6fd53ef7 Fix environment setup 8 tahun lalu
l 4761d30948 Simple script to enable remote console 9 tahun lalu

README.md

Build Status Coverity Badge

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

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-

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 https://USERNAME@review.gerrithub.io/Harvey-OS/harvey

BUILD

You'll need to bootstrap everything the first time:

./bootstrap.sh

This will set up the git repo for code review and build the build tool. You should now be able to build everything by running

. envsetup
build

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

(cd sys/src/9/amd64 && 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/amd64 && 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 /