View
228
Download
1
Tags:
Embed Size (px)
Citation preview
Project 0 -- Linux Dabbling
CS-3013 A-term 2009 1
Project 0 Linux & Virtual Machine Dabbling
CS-3013, Operating Systems
Project 0 -- Linux Dabbling
CS-3013 A-term 2009 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 Dabbling
CS-3013 A-term 2009 3
In this project, we won’t …
• … try to change anything in the kernel yet• This is for a future project
• … try to support more than one machine architecture
• However, 32-bit and 64-bit architectures are different at the kernel level!
• Hardware-level code for different processor families is organized differently in kernel source code!
• Your kernel is not portable from one to another
Project 0 -- Linux Dabbling
CS-3013 A-term 2009 4
Using your Virtual Machine
• Characteristics• Guest OS is openSUSE Linux 11.1
• Configured for projects of this course
• Configured to work with VMware
• Just the basic devices needed for this course
• You may use• Fossil Lab (VMware Workstation)
• Your own PC or Mac– VMware Player or VMware Fusion
Project 0 -- Linux Dabbling
CS-3013 A-term 2009 5
Starting your Virtual Machine
• See “cookbook” for how to clone or copy• Don’t waste too much time trying to figure it out on your own
• Start it• Click in virtual machine screen
• Use arrow keys to select OpenSUSE 11.1• 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 Dabbling
CS-3013 A-term 2009 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 Dabbling
CS-3013 A-term 2009 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 Dabbling
CS-3013 A-term 2009 8
YaST, the SUSE administration tool
• A much more efficient/effective way to manage your system
• Administer hardware, software, users, services, etc.
• Root password• CS-3013 (same as student password)
• Access via third tab under “Gecko” icon• Use it to
• Set up your own user ID and delete student ID
• Fix your network configuration
Project 0 -- Linux Dabbling
CS-3013 A-term 2009 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• Seems to work this term!
Usually!
If not, se
e VM menu
Project 0 -- Linux Dabbling
CS-3013 A-term 2009 10
Share your thoughts and experiences in the Fossil Lab with your colleagues
Use the class e-mail list!
Project 0 -- Linux Dabbling
CS-3013 A-term 2009 11
Questions?
Project 0 -- Linux Dabbling
CS-3013 A-term 2009 12
To get started with kernel build
• Find kernel sources in /usr/src– i.e., a link to /home/src– Current version is linux-2.6.27.25-0.1
• Clone kernel source tree by linked copy: –– In a command shell, docp –al /usr/src/linux-2.6.27.25-0.1 kernelSrc
– Creates a linked copy of original tree in new directory called kernelSrc
– Or whatever you wish to name it
Project 0 -- Linux Dabbling
CS-3013 A-term 2009 13
Digression on Unix/Linux Hard Links
• Directory entries point directly to files• Multiple directory entries may point to same file!
• Same or different directories (within same file system)• 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 Dabbling
CS-3013 A-term 2009 14
Cloned Source Tree
• All directories are copied
• All directory entries are hard-linked to files in original source tree
• I.e., only one copy of each file exists
• To modify a file:–• Unlink it in your directory (via mv or rm)
• Replace with modified copy in your directory
• Original still remains intact in original directory
Project 0 -- Linux Dabbling
CS-3013 A-term 2009 15
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 Dabbling
CS-3013 A-term 2009 16
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 Dabbling
CS-3013 A-term 2009 17
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 Dabbling
CS-3013 A-term 2009 18
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
• Really nice; a better GUI; highly recommended– make O=~/kernelDst gconfig
• Used to be better, but has not kept up with xconfig
Project 0 -- Linux Dabbling
CS-3013 A-term 2009 19
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 Dabbling
CS-3013 A-term 2009 20
To Build Kernel
• In a terminal window (i.e., a shell), do: – – cd kernelSrc– make –j4 O=~/kernelDst
• Takes• ~25 minutes on dual-core 2.4 GHz Core Duo,
1 GByte RAM in VM (2 GByte real memory)• Much more than one hour on 3 gigahertz Pentium, 3
GByte, hypterthreaded
• Rebuilds after small edits are much faster• Changing .h files causes longer rebuilds
Project 0 -- Linux Dabbling
CS-3013 A-term 2009 21
Note: building with multiple processors
• Generally faster to do – cd kernelSrc– make –j4 O=~/kernelDst
– j = number of concurrent build “jobs”
• SUSE advice– 2 number of processors– Fossil Lab workstations have two processors
(dual core)
Project 0 -- Linux Dabbling
CS-3013 A-term 2009 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 Dabbling
CS-3013 A-term 2009 23
For Project Submission
• Redirect build output to a file
• Submit – A subset of that file (this project only)
• E.g., first two dozen and last two dozen lines.
– Output of uname –a command
Project 0 -- Linux Dabbling
CS-3013 A-term 2009 24
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 Dabbling
CS-3013 A-term 2009 25
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 Dabbling
CS-3013 A-term 2009 26
Submitting your Project
• From within your virtual machine, visithttps://turnin.cs.wpi.edu:8088/
• Log in
• Submit output of your build as Project 0
• This is to test your ability to submit projects from the virtual machine!
Project 0 -- Linux Dabbling
CS-3013 A-term 2009 27
Project Due
• Due date:–– Tuesday, September 2, 11:59 PM
• When should projects be due:–– 6:00 PM vs. 11:59 PM?– Day before class vs. day of class– Other thoughts?
Project 0 -- Linux Dabbling
CS-3013 A-term 2009 28
Questions?