Project 0: Linux & VM Dabbling
CS-3013, C-term 2008 1
Project 0: Linux & Virtual Machine Dabbling
CS-3013, Operating Systems
Project 0: Linux & VM Dabbling
CS-3013, C-term 2008 2
In this project, we will …
• Install our virtual machines and learn how to use them– This is the place you will work during this course!
• Build and install the Linux kernel– With your name on it!
• Follow Linux naming & numbering conventions
• Turn in the project using web-based Turnin
Project 0: Linux & VM Dabbling
CS-3013, C-term 2008 3
In this project, we won’t …
• … try to change anything in the kernel yet• This is for next project
• … try to support more than one machine architecture
• However, 32-bit and 64-bit architectures are different at the kernel level!
• Your kernel is not portable from one to the other
Project 0: Linux & VM Dabbling
CS-3013, C-term 2008 4
Installing your Virtual Machinein the Fossil Lab
• Log into any Fossil Lab workstation• Your user ID• Your Fossil password (from TAs)
• Open VMware Workstation• Select “Open an existing Virtual Machine”• Navigate to
P:\cs3013\c08\VirtualMachine• Double click on SUSE Linux (a VMware Configuration File)
• Select “Clone this Virtual Machine”• Select Linked Clone• Choose snapshot = Template for clones• Save in your home directory on H drive
Project 0: Linux & VM Dabbling
CS-3013, C-term 2008 5
Starting your Virtual Machine
• Start your virtual machine
• When it starts• Click in virtual machine screen
• Use arrow keys to select OpenSUSE 10.3• Login is as student, password = CS-3013
• Switching between Host and Guest• Click in guest window to focus mouse and keyboard
• Type CTL-ALT to return focus to host
• …
Project 0: Linux & VM Dabbling
CS-3013, C-term 2008 6
Starting your Virtual Machine (continued)
• Full screen mode• Type CTL-ALT-Enter to switch to or from guest
full screen
• Interrupting• CTL-ALT-DEL always goes to host system
• Use VM menu command to “send CTL-ALT-DEL to guest”
Project 0: Linux & VM Dabbling
CS-3013, C-term 2008 7
KDE – a Linux GUI interface
• Looks and acts a lot like Windows or Mac GUI
• Many similar tools and applications
• “Start” menu is in lower left corner under the “Gecko” icon
• YaST, the SUSE administration tool• Select User and group administration
• Create new user identity for yourself• Log out, log in as new identity, delete student
Project 0: Linux & VM Dabbling
CS-3013, C-term 2008 8
YaST, the SUSE administration tool
• A much more efficient/effective way to manage your system
• Administer hardware, software, users, services, etc.
• Access via third tab under “Gecko” icon
• Use it to set up your own user ID• Delete student ID
Project 0: Linux & VM Dabbling
CS-3013, C-term 2008 9
Other Notes
• When input focus is in guest window• Inserted CD/DVD is recognized by guest OS
• Same for USB flash drive
• Snapshots• Makes a record of the state of your virtual machine
• Any subsequent changes are made in copy-on-write mode
• Shared folder with host operating system• Doesn’t work in this version!
Project 0: Linux & VM Dabbling
CS-3013, C-term 2008 10
/home and /home2 drives
• Intended to have only /home drive
• Due to miscalculation• /home2 added to provide enough space to build
Linux kernel• /home disabled but not deleted
• Disaster recovery• Re-clone the virtual machine
• Copy /home2 files from broken clone to new clone
Project 0: Linux & VM Dabbling
CS-3013, C-term 2008 11
Share your thoughts and experiences in the Fossil Lab with your colleagues
Use the class e-mail list!
Project 0: Linux & VM Dabbling
CS-3013, C-term 2008 13
To get started with kernel build
• Find kernel sources in /usr/src, i.e., a link to /home2/src
Current version is linux-2.6.22.13-0.3
• Clone kernel source tree by linked copy: –– In a command shell, docp –al /usr/src/linux-2.6.22.13-0.3 kernelSrc
– Creates a linked copy of original tree in new directory called kernelSrc
– Or whatever you wish to name it
Project 0: Linux & VM Dabbling
CS-3013, C-term 2008 14
Digression on Unix/Linux Hard Links
• Directory entries point directly to files• Two directory entries may point to same file!
• Same or different directories• Same or different name• Name attached to directory, not file• Permissions & attributes attached to file, not directory• Called hard links (as opposed to symbolic links)
• Modifications to file seen thru all hard links
• mv and rm commands change directories, not files!• File goes away when all directory entries (i.e., hard
links) to that file are deleted and file is closed.
Project 0: Linux & VM Dabbling
CS-3013, C-term 2008 15
Cloned Source Tree
• All directories are copied
• All directory entries in copy are hard-linked to files in original source tree
• I.e., only one copy of each file exists
• To modify a file:–• Unlink it (via mv or rm)
• Replace it with modified copy in your directory
• Original is preserved intact in original directory
Project 0: Linux & VM Dabbling
CS-3013, C-term 2008 16
To Modify a File
• mv file.c file.c~
• Edit file.c~ in your favorite editor• Save as file.c• (Eventually) rm file.c~
• EMACS and patch do this automatically
• Most other editors require you to do it manually
Project 0: Linux & VM Dabbling
CS-3013, C-term 2008 17
To Build Linux Kernel
• “Make configuration” step– As ordinary user
• Build kernel files and modules– As ordinary user
• Install modules, boot file, etc.– Need root privileges
Project 0: Linux & VM Dabbling
CS-3013, C-term 2008 18
To Build Linux Kernel (continued)
• Always build to a separate destination treemkdir ~/kernelDstmake O=~/kernelDst …
• Reason– Making the configuration generates a lot of
include files and other sources– If you don’t specify a destination, it fills up
your source tree– Your patch files grow to megabytes!
Project 0: Linux & VM Dabbling
CS-3013, C-term 2008 19
Making the Configuration
• In a command shell– cd kernelSrc
• Do one of:–– make O=~/kernelDst config
• Very long and tedious– make O=~/kernelDst menuconfig
• Still somewhat long and tedious; also hokey– make O=~/kernelDst xconfig
• Nicer; a reasonable GUI with very small print– make O=~/kernelDst gconfig
• Really nice; a better GUI; highly recommended
Project 0: Linux & VM Dabbling
CS-3013, C-term 2008 20
Make configuration (continued)
• Edit “General Setup” line to name your “Local version”
• No other edits necessary for this project.• Save and quit
• If need to rebuild, use•make O=~/kernelDst oldconfig
to reuse same configuration
Project 0: Linux & VM Dabbling
CS-3013, C-term 2008 21
To Build Kernel
• In a terminal window (i.e., a shell), do: – – cd kernelSrc– make O=~/kernelDst
• Takes• 30-40 minutes on dual-core 2.4 GHz Core Duo,
1 GByte RAM in VM (2 GByte real memory)
• Almost 1.25 hours on 3 gigahertz Pentium, 3 GByte
• Rebuilds after small edits are much faster
• Changing .h files causes longer rebuilds
Project 0: Linux & VM Dabbling
CS-3013, C-term 2008 22
Warnings
• Lots of warnings from files you never touched
• Not your problem
• No warnings allowed in your own code!• In this course
Project 0: Linux & VM Dabbling
CS-3013, C-term 2008 23
For Project Submission
• Redirect build output to a file
• Submit – A subset of that file (this project only)– Output of uname –a command
Project 0: Linux & VM Dabbling
CS-3013, C-term 2008 24
To Build Kernel on a Dual Processor
• Generally faster to do – cd kernelSrc– make –j2 O=~/kernelDst
– j = number of concurrent build “jobs”
• Sometimes, this is even faster– make –j4 O=~/kernelDst
• SUSE advice– 2 number of processors– Fossil Lab workstations have two processors (dual core)
Project 0: Linux & VM Dabbling
CS-3013, C-term 2008 25
To Install Kernel
• Requires root privileges– sudo make modules_install install– Root password = CS-3013– Note order of arguments!
• Puts kernel, initrd file, symbols in /boot– Changes links for vmlinuz, initrd
• Adds entries to /boot/grub/menu.lst– So your kernel shows up on boot screen– So you can select which kernel to boot
Project 0: Linux & VM Dabbling
CS-3013, C-term 2008 26
Running Your Kernel
• Restart your virtual machine
• Click in boot window
• Use arrow keys to select desired kernel or system
• To determine which kernel is running:–– uname -a
Project 0: Linux & VM Dabbling
CS-3013, C-term 2008 27
Submitting your Project
• From within your virtual machine, visit– http://turnin.cs.wpi.edu:8088/servlets/turnin.ss
• Log in
• Submit output of your build as Project 0
• This is to test the ability to submit projects from the virtual machine!
Project 0: Linux & VM Dabbling
CS-3013, C-term 2008 28
Project Due
• Due date:–– Tuesday, January 15, 5:00 PM
• Normally, projects are due the night before class, but this due date is extended to accommodate problems, questions, etc.