Skip to content

pacampbell/cse506

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Michael Salerno  108512298
Paul    Campbell 108481554

This is the 60 pt OS final project.

How to test binaries:
  1) make sure the binary is in the rootfs/bin/ folder
  2) go into the sys/kmain.c and call the binary by using
        void exec_tarfs_elf_args(const char *path, int argc, char *argv[], char *envp[])
        or
        void exec_tarfs_elf(const char *path)

Included binaries:
  - args [arg1] [arg2] ...
      This program tests that args are placed on the stack correctly
  - malloc
      Attempts to test the malloc
  - open
      It asks for a file name in tarfs and then writes out its contents
  - ps
      lists all of the processes running on the os
  - kill
      kills a process
  - echo
      echos text passed as arguments


Working system calls:
  - fork
    * Bug with using exec after forking.
  - execve
  - sleep
  - open 
  - read
  - write
  - lseek
  - close
  - brk
  - exit
  - getpid
  - getppid
  - kill
  - getcwd
  - chdir

Other noteable features:
  - fast syscall and sysretq are used
  - on demand malloc
  - auto growing stack

The provided Makefile:
  1) builds a kernel
  2) copies it into rootfs/boot/kernel/kernel
  3) creates an ISO CD image with the rootfs/ contents

To boot the system in QEMU, run:
  qemu-system-x86_64 -curses -cdrom $USER.iso -drive id=disk,file=$USER.img,if=none -device ahci,id=ahci
  -device ide-drive,drive=disk,bus=ahci.0 -net nic -net user,hostfwd=tcp::10080-:80 -net user,
  hostfwd=tcp::10023-:23 --no-reboot -gdb tcp::9998

  Explanation of parameters:
  -curses         use a text console (omit this to use default SDL/VNC console)
  -cdrom x.iso    connect a CD-ROM and insert CD with x.iso disk
  --no-reboot     exit when guest reboots
  -gdb tcp::9998  listen for "remote" debugging connections on port 9998

  connect a hard drive with x.img disk:
  -drive id=disk,file=$USER.img,if=none -device ahci,id=ahci -device ide-drive,drive=disk,bus=ahci.0
  connect a NIC and forward local port 10080 into port 80 and local port 10023 to port 23
  -net nic -net user,hostfwd=tcp::10080-:80 -net user,hostfwd=tcp::10023-:23

When using the -curses mode, switch to the qemu> console with ESC-2.

To connect a remote debugger to the running qemu VM:
  gdb ./kernel
  target remote localhost:9998