Carnegie Mellon
SCS logo
Computer Science Department
home
syllabus
staff
schedule
lecture
projects
homeworks
QA
 
 

15-412 Projects


This is the main page for project information and utility downloads.

Project Handouts

guy working

How to Boot Your Kernels on Real Hardware

Beginning with projet 2, you will be loading your kernels into Simics off a floppy disk image. Not only does this have the benefit of reducing the footprint of your project directory (1.4mb vs. a 10mb disk image), it makes it much easier to boot your kernel on real hardware.

To boot your project 1 kernel on real hardware, first copy the kernel into the bootfd.img. You can do this by issuing these commands:

echo "drive k:file\"$(PWD)/bootfd.img\"" > ~/.mtoolsrc
mcopy -o kernel K:/boot/

Then get a blank floppy and insert it. Issue this command:

dd if=./bootfd.img of=/dev/fd0

Then, simply reboot your machine with the floppy inserted. Do NOT attempt to boot your kernels on cluster machines. Also, since project 2 currently relies on a hard disk as well, do NOT attempt to boot your project 2 kernel on real hardware.

Important Project-Related Documents

This is the installation guide for the software we'll be using in this course. Also contained is a basic command guide for Simics.
15-412 Software Setup Guide

This is Virtutech's "user manual" for Simics. It covers many different things (perhaps the single most important piece of information is the existence of the 'help' command in Simics). In order to view it, you need to register with Virtutech (this is free and usually fast).
https://www.simics.net/mwf/simics-user-guide-unix/vh?index.html

These three Intel reference guides are extremely comprehensive and actually very well written. Do take the time to look over them, they will be useful in doing each of your projects. These documents are hundreds of pages - do NOT attempt to print them out (at least, not on a campus printer).

  • Intel architecture guide. Explains the basic organization of the processor and fundamental concepts like the execution environment, procedure calls and interrupts, and I/O.

  • Intel instruction set reference. A long volume documenting each x86 instruction.

  • Intel system programming guide. Probably the most interesting of the three documents. Explains privilege levels, segmentation and paging, how to handle interrupts and exceptions, and a host of other things.