-
Notifications
You must be signed in to change notification settings - Fork 0
OS written as part of course at Stony Brook University - Spring 2015
License
vishalnayak/SBUnix
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
Team Size: 1
Vishal Nayak
SBU-ID:
Email:
Project type: Premptive OS for 70 points
Scored: 64
--------------
Commands Supported: clear,exit,ls,ps,cat,echo,kill -9,pwd,cd,sleep,sbush,export.
Features: COW Fork. Auto-growing stack. SEGV handling. Shell with PATH,cd and '&'. Exec for ELF and '#!'.
--------------
INSTRUCTIONS:
1) A 'space' is required before '&' for background process
2) Handling of '&' is done in shell. Use the integrated shell to test this feature.
3) Pid 0 and Pid 1 cannot be killed
4) 'cat' command is terminated by ^c
5) Refer to the commands below. They are all working.
6) All the functional requirements of 70 point project are satisfied.
--------------
SAMPLE WORKING COMMANDS:
exit
clear
ps
kill -9 <pid>
pwd
ls
ls &
sleep 2
sleep 2 &
cat samplefile
cat samplefile &
cd bin
cat ../samplefile
cd ..
cat
helloworld
testing text
^c
cat script.sh
sbush script.sh
sbush script.sh &
ls | cat
echo hi
echo "hello world"
echo $PATH
echo $PS1
cd bin
cd ..
cd .
cd /
cd ././././../../../bin/../mnt/../lib/../././bin
ps
ls | cat | cat | cat
ps | cat
ps | cat | cat | cat
export PS1=[cse506]
export PATH=/bin:/
export PATH=/:/bin
sbush
exit
===============================================================================
------------
Warmup README
------------
Disclaimers:
1) Do not use double quotes while setting PATH and PS1 variables.
GOOD: $ export PATH=/usr/bin:/bin
BAD: $ export PATH="/usr/bin:/bin"
GOOD: $ export PS1=sbush:Test
BAD: $ export PS1="sbush:Test"
2) Do not use space/tabs while setting PS1 variables.
GOOD: $ export PS1=sbush:Testing_$_
BAD: $ export PS1=sbush:Testing $
3) Support pipeline upto 4 stages.(5 commands, 4 pipes)
If the command is bigger than that, the result of the first 5 will be displayed.
------------
Example commands:
cd <directory_name>
cat <filename>
cd ..
/bin/ls
/bin/ls -l
/bin/ls -l | /bin/grep bin
ls -l | grep bin | wc | wc | wc
export PATH=/bin:/usr/bin
export PS1=sbu_new_prompt_$
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
About
OS written as part of course at Stony Brook University - Spring 2015
Resources
License
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published