GithubHelp home page GithubHelp logo

tintohill / harvey Goto Github PK

View Code? Open in Web Editor NEW

This project forked from harvey-os/harvey

0.0 2.0 0.0 116.39 MB

A 64 bit Operating System based on Plan 9 from Bell Labs and NIX, under GPL

Home Page: http://harvey-os.org/

License: Other

C 57.06% Shell 3.36% Protocol Buffer 0.02% Makefile 0.22% Groff 2.84% DIGITAL Command Language 0.31% xBase 0.01% Common Lisp 0.31% Crystal 0.01% C# 0.01% Erlang 0.01% NewLisp 0.01% Awk 0.03% PostScript 34.68% HTML 0.89% Fortran 0.01% Ruby 0.01% C++ 0.14% JavaScript 0.08% Cool 0.05%

harvey's Introduction

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 go
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://[email protected]/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 /

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.