epoll: Error out if someone asks for one-shot
[akaros.git] / GETTING_STARTED.md
index 17a1af5..41ad619 100644 (file)
@@ -36,10 +36,10 @@ out of the box.
 2. Need Help?
 ---------------------
 First off, if you get stuck, email someone.  You can join our mailing list by
-sending an email to <akaros-request@lists.eecs.berkeley.edu>.  Once you've
-joined, send your messages to <akaros@lists.eecs.berkeley.edu>.  Or just email
-me (<brho@cs>), though the mailing list is a more scalable method in the long
-run.
+sending an email to
+[akaros+subscribe@googlegroups.com](mailto:akaros%2Bsubscribe@googlegroups.com)
+or visit the [group](http://groups.google.com/group/akaros).  Once you've
+joined, send your messages to <mailto:akaros@googlegroups.com>.
 
 Alternatively, you can poke your head in #akaros on `irc.freenode.net`.  I'm
 usually idling in there (alone), and if I'm at my computer, I'll respond.
@@ -49,6 +49,11 @@ usually idling in there (alone), and if I'm at my computer, I'll respond.
 ----------------------------
 I'll describe how to get x86 working.  RISCV is similar.
 
+To start off, make sure AKAROS_ROOT and AKAROS_XCC_ROOT are set in your
+environment.  AKAROS_ROOT is the Akaros repo directory.  AKAROS_XCC_ROOT is a
+directory of your choosing where the toolchain will be installed (more on that
+in Section 3.1 below).
+
 The first step is to configure the kernel.  Targets like `config`,
 `menuconfig`, and some of the other KBuild targets work.  Defconfig gives you a
 default configuration.  For example, to config for 64-bit x86:
@@ -92,6 +97,12 @@ template to work from.
 You need to set your `INSTDIRS` to some place where you want the cross compiler
 installed.  I have a directory named `akaros-gcc-glibc` for this.
 
+Additionally, you must set the environment variable `$AKAROS_XCC_ROOT` to point
+to the installation directory for your architecture.  For instance, my
+AKAROS_XCC_ROOT is:
+
+`/home/brho/classes/akaros/akaros-gcc-glibc/install-x86_64-ucb-akaros-gcc/`
+
 You also need to add `bin` directories to your `PATH` where the cross compiler
 will be installed.  This will vary based on your value for `INSTDIRS`.  For
 instance, my path contains:
@@ -136,7 +147,11 @@ architecture until a new `ARCH` is selected (i.e. via `make ARCH=xxx defconfig`
 etc.)
 
 ### 3.3 Userspace
-To build userspace and test programs:
+First, you'll need to build a few common applications and libraries:
+
+`$ make apps-install`
+
+Then you can build the tests and small utility programs:
 
 `$ make tests`
 
@@ -192,7 +207,7 @@ Now that you've changed KFS, don't forget to remake the kernel.
 
 ### 3.5 Building and Loading a Virtual Machine Image
 At this point, you probably have a runnable kernel with programs in KFS.  It
-should be sitting at `obj/kernel/akaros-kernel`.  When running in a VM, you can
+should be sitting at `obj/kern/akaros-kernel`.  When running in a VM, you can
 either run the kernel directly from `qemu`, or put it in a virtual machine
 image file.
 
@@ -246,7 +261,7 @@ Here is the command I use to run `qemu`/`kvm`.  It's evolved over the years,
 and it will vary based on your linux distribution.  Don't run it just yet:
 
 ```
-$ qemu-system-x86_64 -s -enable-kvm -cpu kvm64 -smp 8 -m 4096 -nographic -monitor /dev/pts/3 -net nic,model=e1000 -net user,hostfwd=tcp::5555-:23 -net dump,file=/tmp/vm.pcap -drive file=mnt/hdd.img,index=0,media=disk,format=raw
+$ qemu-system-x86_64 -s -enable-kvm -cpu kvm64 -smp 8 -m 4096 -nographic -monitor /dev/pts/3 -net nic,model=e1000 -net user,hostfwd=tcp::5555-:22 -net dump,file=/tmp/vm.pcap -drive file=mnt/hdd.img,index=0,media=disk,format=raw
 ```
 
 If you skipped making a virtual machine image or want to run the kernel
@@ -264,7 +279,7 @@ handle your inputs.
 spawning off a fake cpu crt/monitor.
 
 The command as written uses qemu's user networking.  It's emulated and a little
-slow.  The example I have alo forwards port `5555` on the host to port `23` on
+slow.  The example I have alo forwards port `5555` on the host to port `22` on
 the guest.  Customize it according to your needs.
 
 Another option for networking is to set up a tun/tap device.  I use this on