You are on page 1of 26

7/22/12

CS50 Appliance 2.3 - CS50 Manual

CS50 Appliance 2.3


Select Language

This HOWTO is for version 2.3 of the CS50 Appliance. If following Fall 2011 (https://www.cs50.net/) of CS50, you should use this version of the appliance. If following Fall 2010 (http://cs50.tv/2010/fall/) of CS50, you should use version 2.1 of the appliance. If following Fall 2009 (http://cs50.tv/2009/fall/) of CS50, you should use version 1.4 instead. The CS50 Appliance is a virtual machine (http://en.wikipedia.org/wiki/Virtual_machine) (VM) that lets you "take" CS50, even if you're not a student at Harvard. It's based on Fedora (http://en.wikipedia.org/wiki/Fedora_(operating_system)) , a Linux (http://en.wikipedia.org/wiki/Linux) -based operating system (http://en.wikipedia.org/wiki/Operating_system) . It's an appliance (http://en.wikipedia.org/wiki/Computer_appliance) in the sense that we've preconfigured this VM for a specific purpose: CS50! In other words, even if you're not a student in CS50, you can still play along at home. The CS50 Appliance will let you compile source code from lectures (https://www.cs50.net/lectures/) and implement problem sets (https://www.cs50.net/psets/) without having to figure out how to configure GCC (http://en.wikipedia.org/wiki/GNU_Compiler_Collection) , etc. yourself. Moreover, the CS50 Appliance lets you run Linux inside of a window on your own computer, even if you're already running (some other version of) Linux, Mac OS, Solaris, or Windows! Incidentally, the appliance is always work in progress, so please forgive any bugs! We'll document known issues down below.

Contents
1 Cheatsheet 2 Instructions 2.1 How to Install Appliance 2.1.1 VirtualBox 2.2 How to Update Appliance 2.3 How to Use Appliance 2.3.1 How to Change Name 2.3.2 How to Change Password 2.3.3 How to Change Language
https://manual.cs50.net/CS50_Appliance_2.3 1/26

7/22/12

CS50 Appliance 2.3 - CS50 Manual

2.3.4 How to Change Keyboard Layout 2.3.5 How to Change Time Zone 2.3.6 How to Open a Terminal 2.3.7 How to SSH to Appliance 2.3.8 How to Release Keyboard and Mouse 2.3.9 How to Change Host Key 2.3.10 How to Install Guest Additions 2.3.11 How to Change Resolution 2.3.12 How to Change Volume 2.3.13 How to Enter/Exit Fullscreen Mode 2.3.14 How to Enter/Exit Seamless Mode 2.3.15 How to Use phpMyAdmin 2.3.16 How to Restore Snapshots 2.3.17 How to Synchronize Files with Dropbox 2.3.18 How to Transfer Files between Appliance and Your Computer 2.3.18.1 Windows 2.3.18.2 Mac OS 2.3.18.3 Linux 2.3.18.3.1 GNOME 2.3.18.3.2 KDE 2.3.18.3.3 Xfce 2.3.19 How to Access Appliance from Another Computer 2.3.20 How to Take a Screenshot 2.3.21 How to Share Control of Your Screen 2.3.22 How to Disable Automatic Login 2.3.23 How to Log Out of Appliance 2.3.24 How to Restart Appliance 2.3.25 How to Shut Down Appliance 2.3.26 How to Configure Appliance for a Proxy Server 2.4 How to Run Programs from Lectures 2.5 How to Do Problem Sets 3 Accessibility 4 Implementation Details 4.1 VMware 5 Troubleshooting 6 Forget a password? 6.1 I forgot John Harvard's password 6.2 I forgot the root password 6.3 I forgot John Harvard's (or root's) MySQL password 7 Known Issues 8 Changelog 9 Future Work 10 References 11 Acknowledgements

https://manual.cs50.net/CS50_Appliance_2.3

2/26

7/22/12

CS50 Appliance 2.3 - CS50 Manual

Cheatsheet
See instructions for much more detail. Your Name Your Username Your Password Superuser's Username Superuser's Password Appliance's IP Address Your Computer's IP Address Your MySQL Server (DB_SERVER) Your MySQL Username (DB_USER) Your MySQL Password (DB_PASS) Superuser's MySQL Username Superuser's MySQL Password Your Homepage
once you create p u b l i c _ h t m l , etc.

John Harvard jharvard crimson root crimson 192.168.56.50 192.168.56.1 localhost jharvard crimson root crimson http://192.168.56.50/~jharvard/ http://192.168.56.50/phpMyAdmin/ http://192.168.56.50:20000/ http://192.168.56.50:10000/ left-Command on a Mac; right-Control on any other OS

phpMyAdmin Usermin Webmin VirtualBox's Host Key

Instructions
How to Install Appliance
In order to install the appliance, you first need to install a program called a hypervisor (http://en.wikipedia.org/wiki/Hypervisor) that will let you run virtual machines (http://en.wikipedia.org/wiki/Virtual_machine) on your own computer, whether you run Linux, Mac OS, Solaris, or Windows. Unless you already own a hypervisor (e.g., Parallels, VMware Fusion, or VMware Workstation), CS50 recommends that you download and install VirtualBox because it's free and cross-platform. Once installed, it's not uncommon for the appliance to take 1 2 minutes to boot. But if, once at John Harvard's desktop, the appliance still feels unbearably slow, you might need to enable hardware virtualization on your computer if it's a PC running Windows or Linux. (Hardware virtualization should be
https://manual.cs50.net/CS50_Appliance_2.3 3/26

7/22/12

CS50 Appliance 2.3 - CS50 Manual

enabled by default on any Intel-based Mac manufactured in the past few years.) Even with hardware virtualization enabled, though, virtual machines might still feel slow if your computer is a few years old, has a CPU that's only 1GHz or so, or has only 1GB or so of RAM.

VirtualBox
Here's how to install the appliance using VirtualBox. 1. Install VirtualBox per these instructions. 2. Download the latest appliance at http://mirror.cs50.net/appliance/2.3/cs50-appliance-2.3-14-ovf.zip. Then unzip it. Do not double-click the files within. 3. Launch VirtualBox (as by single- or double-clicking its icon, wherever you installed it). 4. Select Import Appliance... from VirtualBox's File menu. Click Choose . Navigate your way to that unzipped cs50-appliance-2.3-14-ovf folder, highlight the cs50-appliance-2.3.ovf file within, and click Open. Then click Next. You should see a summary of the appliance's settings. Click Import. You'll then be prompted to agree to the appliance's license (http://creativecommons.org/licenses/by-nc-sa/3.0/) . If you click Agree , you'll see CS50 Appliance 2.3 in VirtualBox's left-hand menu after a few seconds or minutes. Click CS50 Appliance 2.3 to highlight it, then click Start. That's it! To learn how to use the appliance, see further instructions down below!

How to Update Appliance


The latest release of version 2.3 of the CS50 Appliance is 2.3-14. To check which version you have, open a terminal and execute:
r p m q u e r yc s 5 0 a p p l i a n c e

You should see output like the below, which indicates (between c s 5 0 a p p l i a n c e -and . i 3 8 6 ) the release that you have installed:
c s 5 0 a p p l i a n c e 2 . 3 1 4 . i 3 8 6

You can update the appliance to the latest release in either of two ways: Select Menu > Administration > Software Update , then click Install Updates if any updates are available. Open a terminal and execute:
s u d oy u mc l e a na l l;s u d oy u myu p d a t e

Input crimson if prompted for a password. Don't worry if you see

https://manual.cs50.net/CS50_Appliance_2.3

4/26

7/22/12

CS50 Appliance 2.3 - CS50 Manual

U p d a t i n g

:c s 5 0 a p p l i a n c e 2 . 3 1 4 . i 3 8 6

or similar on the screen for a minute or more; it takes a while to restart each of the appliance's services.

How to Use Appliance


The first thing you should see when the appliance boots up is John Harvard's desktop. (Oh, henceforth, you are John Harvard (http://en.wikipedia.org/wiki/John_Harvard_(clergyman)) . Your initial password is crimson. And here's what you look like (http://en.wikipedia.org/wiki/File:BostonTrip-91.jpg) .) Even though you might think of Linux as having only a command-line interface (http://en.wikipedia.org/wiki/Command-line_interface) , graphical user interfaces (http://en.wikipedia.org/wiki/Graphical_user_interface) do exist. We've installed Xfce (http://en.wikipedia.org/wiki/Xfce) , one of the most popular, for you. However, we installed as few programs as possible to keep the appliance small. You're welcome to install additional programs via Menu > Administration > Add/Remove Applications .

How to Change Name


As much as you might not like being called John, do not try to change John Harvard's name or username . Life will be simpler as John. With that said, if you'd really like to be yourself (or someone else altogether), you're welcome to create a new account. Open a terminal and execute
s u d oa d d u s e rc o m m e n t" J a n eH a r v a r d "g i ds t u d e n t sg r o u p sw h e e lj a n e h e c h oc r i m s o n|s u d op a s s w ds t d i nj a n e h e c h oe" c r i m s o n \ n c r i m s o n "|s u d os m b p a s s w dasj a n e h

where J a n eH a r v a r dis your desired name, c r i m s o nis your desired password, and j a n e his your desired username. Be sure not to overlook the \ nin the second command. If you'd also like to start logging into the appliance automatically under your new identity (instead of John Harvard's), execute
s u d on a n o/ e t c / g d m / c u s t o m . c o n f

and change j h a r v a r dto your own username. Then hit ctrl-x, then y, then Enter to save and quit.

How to Change Password


You can change your password in any of these ways: Select Menu > Preferences > Password and follow the on-screen prompts. Log into Usermin at http://192.168.56.50:20000/, select Login > Change Password at top-left, and follow the on-screen instructions. Open a terminal and execute:
https://manual.cs50.net/CS50_Appliance_2.3 5/26

7/22/12

CS50 Appliance 2.3 - CS50 Manual

p a s s w d

With that said, allow us to suggest that you not change John Harvard's password if your own computer is already password-protected. (Life will be simpler with crimson.) The appliance has been configured in such a way that only someone with access to your computer (e.g., you) can access the appliance. Even though the appliance can connect to the Internet, the Internet cannot connect to the appliance.

How to Change Language


This feature may require Internet access. If English is not your native language, you may want to change the appliance's default language. Some things will remain in English, but you might find yourself more at home nonetheless. Select Menu > Administration > Language , inputting your password if prompted. Select your preferred language from the list that appears, then click OK. If prompted, click Import key. You may need to wait for a bit as the language is installed. Then restart the appliance and log back in.

How to Change Keyboard Layout


If you have a non-U.S. (or non-standard) keyboard, you may want (or need!) to change your keyboard's layout. Select Menu > Administration > Keyboard. (To be clear, select Administration, not Preferences .) Select your preferred keyboard, then click OK.

How to Change Time Zone


If you don't live in Cambridge, Massachusetts, USA, you may want to change the appliance's timezone. Select Menu > Administration > Date & Time . Click the Time Zone tab, select the nearest city in your time zone, then click OK, leaving System clock uses UTC checked.

How to Open a Terminal


You can open a terminal in any of these ways: Select Menu > Programming > Terminal or Menu > Accessories > Terminal. You'll find yourself in your home directory (~ ). Click Terminal's icon (a black square) in the appliance's bottom-left corner. You'll find yourself in your home directory (~ ). Right-click anywhere on your desktop and select Open Terminal Here . You'll find yourself in ~ / D e s k t o p / . Select Menu > Programming > gedit or Menu > Accessories > gedit. You'll find yourself in your home directory (~ ) in gedit's bottom panel. No matter the approach you take, it's in the terminal window that you'll be able to type commands like cd, g c c ,l s , etc.

How to SSH to Appliance


https://manual.cs50.net/CS50_Appliance_2.3 6/26

7/22/12

CS50 Appliance 2.3 - CS50 Manual

If you'd like to SSH to the appliance from your own computer (as with Terminal on Mac OS or with PuTTY on Windows), you can SSH from your computer to 192.168.56.50, which is the appliance's static IP address. (The appliance actually has another IP address, obtained via DHCP, but it uses that IP to access the Internet.) If you'd instead like to SSH from the appliance to your computer (assuming your computer is running an SSH server), you can SSH from the appliance to 192.168.56.1, which is the static IP address that VirtualBox has secretly assigned to your computer. Note that, for security's sake, you can SSH to the appliance as j h a r v a r dbut not as r o o t .

How to Release Keyboard and Mouse


Once you click inside of the appliance, it "captures" your keyboard's keystrokes and your mouse's movements (unless you've installed guest additions and haven't selected Machine > Disable Mouse Integration. To release your keyboard and mouse from the appliance's clutches, hit VirtualBox's "host key": on a Mac, VirtualBox's host key is your keyboard's left-Command key; on any other OS, VirtualBox's host key is your keyboard's rightControl key. Once you hit that key, should be able to move your mouse anywhere on your screen.

How to Change Host Key


VirtualBox's "host key" allows you to release your keyboard and mouse from the appliance if they've been "captured," which happens when you click somewhere inside of the appliance's window (unless you have guest additions installed). On a Mac, VirtualBox's host key is your keyboard's left-Command key; to change it, select VirtualBox > Preferences... > Input. On any other OS, VirtualBox's host key is your keyboard's right-Control key; to change it, select File > Preferences > Input. In either case, be sure that VirtualBox's main window (where you can select the CS50 Appliance from a list) is in the foreground, not the appliance's own window, else the Preferences... and/or File menu might not appear.

How to Install Guest Additions


These instructions assume that you're using VirtualBox as your hypervisor. For VMware Fusion and VMware Workstation, you'll instead want to install "VMware Tools." "Guest Additions" are device drivers and system applications that come with VirtualBox that can improve the performance and usability of the CS50 Appliance. Those additions allow you to change the appliance's resolution, enter/exit fullscreen mode, enter/exit seamless mode, and share folders between the appliance and your own computer. They may also eliminate the need to release your keyboard and mouse via VirtualBox's "host key." To install them, select Install Guest Additions... from VirtualBox's Devices menu while the appliance is running. (This menu is outside of the appliance, not inside of it. You may need to release your keyboard and mouse first.) An icon of a CD may then appear on your desktop, but no need to double-click it. Instead, open a terminal and execute the commands below. Input your password if prompted. (For security, you will not see your password as you type it.)
s u d om o u n t/ d e v / s r 0/ m e d i a / s u d o/ m e d i a / V B o x L i n u x A d d i t i o n s . r u n
https://manual.cs50.net/CS50_Appliance_2.3 7/26

7/22/12

CS50 Appliance 2.3 - CS50 Manual

Once the software has been installed, execute the command below:
s u d ou m o u n t/ m e d i a /

Then select CD/DVD Devices > Remove disk from virtual drive from VirtualBox's Devices menu. (This menu is outside of the appliance, not inside of it. You may need to release your keyboard and mouse first.) Then restart the appliance and log back in.

How to Change Resolution


By default, the appliance's resolution for John Harvard is 800x600 (so that his desktop fits on most any computer's screen). To lower the resolution to 640x480 or increase the resolution to 1024x768, select Menu > Preferences > Display, select a new value to the right of Resolution, then click Close . To increase the appliance's resolution beyond 1024x768 and to enable auto-resize (whereby dragging VirtualBox's bottom-left corner will alter the appliance's resolution), you'll need to install install guest additions, if you haven't already.

How to Change Volume


1. 2. 3. 4. 5. 6. 7. Select Menu > Sound & Video > Mixer. Select Playback: Internal Audio Analog Stereo (PulseAudio Mixer) next to Sound card. Click Select Controls...". Check Master then click Close . Drag the sliders upward to increase the audio's volume. Click Quit. Visit http://webhamster.com/ in Firefox to test!

How to Enter/Exit Fullscreen Mode


For fullscreen mode to work, you'll first need to install guest additions if you haven't already. Thereafter, you can enter fullscreen mode in either of these ways: Select Switch to Fullscreen from VirtualBox's Machine menu while the appliance is running. (This menu is outside of the appliance, not inside of it.) Hit VirtualBox's "host key" and F together. (On a Mac, VirtualBox's host key is your keyboard's leftCommand key; on any other OS, VirtualBox's host key is your keyboard's right-Control key.) You can exit fullscreen mode in either of these ways: Move your cursor to the middle of the bottom of your screen, at which point a menu should appear. Click the second icon from the right (which resembles two squares). Hit VirtualBox's "host key" and F together. (On a Mac, VirtualBox's host key is your keyboard's leftCommand key; on any other OS, VirtualBox's host key is your keyboard's right-Control key.)

How to Enter/Exit Seamless Mode


https://manual.cs50.net/CS50_Appliance_2.3 8/26

7/22/12

CS50 Appliance 2.3 - CS50 Manual

Seamless mode lets you "extract" windows (e.g., a Terminal window) from the CS50 Appliance and position them right alongside your computer's own windows; in seamless mode, the appliance's windows are no longer confined to the appliance's own rectangular window. For seamless mode to work, you'll first need to install guest additions if you haven't already. Thereafter, you can enter seamless mode in either of these ways: Select Switch to Seamless Mode from VirtualBox's Machine menu while the appliance is running. (This menu is outside of the appliance, not inside of it.) Hit VirtualBox's "host key" and L together. (On a Mac, VirtualBox's host key is your keyboard's leftCommand key; on any other OS, VirtualBox's host key is your keyboard's right-Control key.) You can exit seamless mode by hitting VirtualBox's "host key" and L together. (On a Mac, VirtualBox's host key is your keyboard's left-Command key; on any other OS, VirtualBox's host key is your keyboard's right-Control key.)

How to Use phpMyAdmin


You can access phpMyAdmin in either of these ways: Visit http://localhost/phpMyAdmin/ or http://192.168.56.50/phpMyAdmin/ using Firefox within the appliance. Visit http://192.168.56.50/phpMyAdmin/ using your own computer's browser. No matter the approach you take, log in as jharvard (or, if necessary, root) with a password of crimson if prompted.

How to Restore Snapshots


Every 10 minutes, the appliance take "snapshots" of source code in / h o m ejust in case you accidentally delete something. (You can also mitigate accidental deletions by synchronizing with Dropbox.) Suppose that you just deleted ~ / p s e t 1 / h e l l o . c . Odds are you'll find it in the m i n u t e l y . 0or m i n u t e l y . 1 snapshot, depending on the current time, in which case you can recover it with
c p/ . s n a p s h o t s / m i n u t e l y . 0 / h o m e / j h a r v a r d / p s e t 1 / h e l l o . c~ / p s e t 1

or with
c p/ . s n a p s h o t s / m i n u t e l y . 1 / h o m e / j h a r v a r d / p s e t 1 / h e l l o . c~ / p s e t 1

in a terminal. If you need to recover an earlier version, you can go further back in time via m i n u t e l y . 2 , m i n u t e l y . 3 , or m i n u t e l y . 4 . If you'd instead like to go back an hour or so, you can start with h o u r l y . 0 , followed by h o u r l y . 1 ,h o u r l y . 2 , and so on. Below are all of the intervals you can try. Realize that the times only estimates, since the intervals' definitions depend on the current time.

https://manual.cs50.net/CS50_Appliance_2.3

9/26

7/22/12

CS50 Appliance 2.3 - CS50 Manual

m i n u t e l y . 0 m i n u t e l y . 1 m i n u t e l y . 2 m i n u t e l y . 3 m i n u t e l y . 4 h o u r l y . 0 h o u r l y . 1

10 minutes ago 20 minutes ago 30 minutes ago 40 minutes ago 50 minutes ago 1 hour ago 2 hours ago ... 23 hours ago yesterday 2 days ago ... 6 days ago 1 week ago 2 weeks ago ... 51 weeks ago

...
h o u r l y . 2 2 d a i l y . 0 d a i l y . 1

...
d a i l y . 5 w e e k l y . 0 w e e k l y . 1

...
w e e k l y . 5 1

To see which intervals are actually available to you, execute:


l s/ . s n a p s h o t s /

How to Synchronize Files with Dropbox


This feature requires Internet access. To make it easier to back up files within the appliance automatically as well as share them with your own computer(s), you can synchronize a directory in John Harvard's account with Dropbox (http://www.dropbox.com/features) . If officially enrolled in a course at Harvard, just take care to respect the course's policies on academic honesty. Here's how to configure the appliance for Dropbox. 1. Open a terminal. 2. Execute:
d r o p b o xs t a r ti

3. You should be prompted to "download the proprietary daemon" (i.e., software); click OK. The software
https://manual.cs50.net/CS50_Appliance_2.3 10/26

7/22/12

CS50 Appliance 2.3 - CS50 Manual

4.

5. 6. 7. 8. 9.

should proceed to download and unpack. You should then be prompted to set up Dropbox. If you don't already have a Dropbox account, leave I don't have a Dropbox account checked, then click Next. Create your Dropbox as prompted. If you already have an Dropbox account, check I already have a Dropbox account, then click OK. Log in as prompted. If prompted to upgrade your Dropbox, simply leave 2 GB checked (which is free) then click Next, unless you want to upgrade to a paid account. If prompted to Choose setup type , leave Typical checked, then click Install. If prompted to take a 5-step tour, click Skip Tour; its screenshots won't match what you'll see in the appliance. When informed That's it!, uncheck Open my Dropbox folder now, then click Finish. If prompted for your admin password, input crimson (unless you changed your root password to something else). Don't worry if you then see an error about "wrong password."

If you then execute


d r o p b o xs t a t u s

you should see:


I d l e

If you then execute


c d~ / D r o p b o x / l s

you should your dropbox's files. If you just created an account, among them will be Getting Started.pdf, Photos , and Public. You can browse those same files (and any others you create) at https://www.dropbox.com/login. You can even undelete files. Only those files and folders that you save in ~ / D r o p b o x /will be synchronized with your Dropbox account.

How to Transfer Files between Appliance and Your Computer


If you'd like to SFTP (http://en.wikipedia.org/wiki/SSH_file_transfer_protocol) to the appliance from your own computer (as with Cyberduck (http://cyberduck.ch/) on Mac OS or with WinSCP (http://winscp.net/eng/download.php) on Windows), you can SFTP from your computer to 192.168.56.50, which is the appliance's static IP address. (The appliance actually has a second IP address, obtained via DHCP, but it uses that IP to access the Internet.) Alternatively, you can "mount" John Harvard's home directory (via a protocol called SMB (http://en.wikipedia.org/wiki/Server_Message_Block) , otherwise known as CIFS (http://en.wikipedia.org/wiki/CIFS) ) in a window on your own desktop, to and from which you can drag and drop
https://manual.cs50.net/CS50_Appliance_2.3 11/26

7/22/12

CS50 Appliance 2.3 - CS50 Manual

files. Here's how, whether you run Linux, Mac OS, or Windows. Windows 1. Open any folder on your hard drive. 2. Click the address bar atop the folder's window and input \\192.168.56.50\jharvard, then click Enter. 3. If prompted for your name and password: 1. Input jharvard for User name . 2. Input crimson for Password. 3. Check Remember my credentials if you'd like. 4. Click Connect. John Harvard's home directory should then open in a new window. Mac OS 1. Select Connect to Server... from the Finder's Go menu. 2. Under Server Address:, input smb://192.168.56.50. (Click the + icon if you'd like to add the appliance to your Favorite Servers .) Then click Connect. 3. If prompted for your name and password: 1. Select Registered User. 2. Input jharvard for Name . 3. Input crimson for Password. 4. Click Connect. John Harvard's home directory should then open in a new window. Linux
GNOME

1. 2. 3. 4. 5. 6. 7. 8. 9. 10.

Select Connect to Server... from the Places menu. Input 192.168.56.50 for Server. Select Windows share for Type . Input jharvard for Share . Input / for Folder. Input CS50 for Domain name . Input jharvard for User name . Input crimson for Password. Check Remember this password if you'd like. Click Connect.

John Harvard's home directory should then open in a new window.


KDE

https://manual.cs50.net/CS50_Appliance_2.3

12/26

7/22/12

CS50 Appliance 2.3 - CS50 Manual

1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.

Open Dolphin (as via Computer > Network). Select Network. Click Add Network Folder. Select Microsoft Windows network drive , then click Next. Input appliance for Name . Input 192.168.56.50 for Server. Input jharvard for Folder. Check Create an icon for this remote folder if you'd like. Click Finish. Input jharvard for Username . Input crimson for Password. Check Remember password if you'd like. Click OK.

John Harvard's home directory should then open in a new window.


Xfce

1. Install g v f s s m bas r o o t(as via s u d o ) if not installed already, as with


y u myi n s t a l lg v f s s m b

if running CentOS, Fedora, or RedHat or with


a p t g e ti n s t a l lg v f s b a c k e n d s

2. 3. 4. 5. 6. 7. 8. 9.

if running Debian or Ubuntu. Launch Thunar (as via Applications Menu > System > Thunar File Manager). Select Open Location... from the Go menu. Input smb://192.168.56.50/jharvard/ for Location then click Open. Input jharvard for Username . Input CS50 for Domain. Input crimson for Password. Check Remember forever if you'd like. Click Connect.

How to Access Appliance from Another Computer


By default, you can access the appliance from your own computer via the appliance's static IP address, which is 192.168.56.50, because VirtualBox assigns your own computer a static IP address of 192.168.56.1, which is on the same "subnet." Those IP addresses only exist within VirtualBox, though, so, by default, it's not possible to access the appliance from other computers on your LAN (i.e., home network). However, the appliance also comes with a "bridged" network interface (e t h 2 ) that you can activate manually. So long as your LAN supports DHCP (http://en.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol) (which most home networks do), that interface will acquire an IP address on your LAN, at which point you can access the appliance via HTTP or SSH via that IP from any computer on your LAN.
https://manual.cs50.net/CS50_Appliance_2.3 13/26

7/22/12

CS50 Appliance 2.3 - CS50 Manual

However, for security's sake, you will not be able (from any computer besides your own, on which the appliance is running) to: access phpMyAdmin, at http://192.168.56.50/phpMyAdmin/ access Usermin, at http://192.168.56.50:20000/ access Webmin, at http://192.168.56.50:10000/ mount John Harvard's home directory in a window on your desktop You will be able to: access John Harvard's homepage at http://192.168.56.50/~jharvard/ SSH to the appliance at 192.168.56.50 Unfortunately, odds are e t h 2will not work on Harvard's campus because of Harvard's firewall. Before activating e t h 2 , you should first change John Harvard's password to something only you know for security's sake. To enable e t h 2temporarily, open a terminal and execute:
s u d oi f u pe t h 2

If your LAN indeed supports DHCP, you should see:


D e t e r m i n i n gI Pi n f o r m a t i o nf o re t h 2 . . .d o n e .

To find out which IP address was assigned by your LAN to the appliance, execute
i f c o n f i ge t h 2

and look to the right of inet addr (not inet6 addr). That's the address via which you can accessible the appliance from another computer on your LAN. Odds are it will start with 192.168.0 or 192.168.1 or 10.0.1, though other prefixes are possible. If you would like to enable e t h 2permanently: 1. 2. 3. 4. 5. 6. Select Menu > Administration > Network. Highlight eth2 in the window that appears, then click Edit. Check Activate device when computer starts , then click OK. Select File > Save , then click OK. Select File > Quit. Restart the appliance.

Just realize that each time the appliance starts, it may be assigned a different IP address on your LAN via DCHP, so you might need to re-run

https://manual.cs50.net/CS50_Appliance_2.3

14/26

7/22/12

CS50 Appliance 2.3 - CS50 Manual

i f c o n f i ge t h 2

each time to find out the current address. If your home router supports "DHCP reservations," know that you can find out the MAC (i.e., Ethernet) address of e t h 2by running
i f c o n f i ge t h 2

as well. Look to the right of HWaddr for the address. Alternatively, if you think it's safe to assign the appliance a static IP address on your LAN without your home router even knowing, select Menu > Administration > Network, highlight eth2 in the window that appears, click Edit, select Statically set IP addresses , and configure the interface as you see fit.

How to Take a Screenshot


It's sometimes helpful to take a screenshot of the appliance so that you can remember or share something you see on your screen. If officially enrolled in a course at Harvard, just take care to respect the course's policies on academic honesty. To take a screenshot inside of the appliance: 1. 2. 3. 4. 5. 6. Select Menu > Accessories > Screenshot. Check a Region to capture . Leave Capture the mouse pointer checked unless you'd like to hide it. Leave Delay before capturing at 1, unless you need more time. Click OK. You should then be prompted to decide on an Action. Leave Save checked and then click OK if you'd like to save the screenshot as a file; decide on a destination as prompted. You can then share that screenshot with someone if necessary, as by opening Gmail in Firefox and sending it as an attachment.

You can also share control of your screen if you need someone else to see more than a screenshot.

How to Share Control of Your Screen


This feature requires Internet access. So that you can help (and be helped by!) fellow learners on the Internet, the appliance comes with TeamViewer (http://www.teamviewer.com/) , which lets you share (control of) your screen with someone else (a "partner") on the Internet (and vice versa). If officially enrolled in a course at Harvard, just take care to respect the course's policies on academic honesty. To share your screen with some else: 1. Select Menu > Share Screen. A window should appear. 2. Tell your partner the ID and Password that you see. Once your partner inputs those values, your screen should be shared. Though if your own computer has a firewall, you might first be prompted to "allow incoming connections" or the like.
https://manual.cs50.net/CS50_Appliance_2.3 15/26

7/22/12

CS50 Appliance 2.3 - CS50 Manual

To see someone else's screen: 1. 2. 3. 4. Ask your partner for an ID and Password. Select Menu > Share Screen. A window should appear. Input the ID into that window, then click Connect to partner. When prompted, input the Password, at which point you should see your partner's screen.

If you would like to connect to someone else's appliance from your own computer (rather than from your own appliance) or from a mobile device, you can download TeamViewer for free for Android, iOS, Linux, Mac OS, or Windows from http://www.teamviewer.com/en/download/index.aspx.

How to Disable Automatic Login


By default, the appliance logs you in as John Harvard. To disable automatic login, open a terminal and execute:
s u d or mf/ e t c / g d m / c u s t o m . c o n f

Then restart the appliance. You should now see a login prompt instead of John Harvard's desktop.

How to Log Out of Appliance


To log out of the appliance, click in the appliance's bottom-right corner, then click Log Out.

How to Restart Appliance


You can restart the appliance in either of these ways: Click in the appliance's bottom-right corner, then click Restart. Open a terminal and execute the below, inputting your password if prompted:
s u d or e s t a r t

How to Shut Down Appliance


You can shut down the appliance in either of these ways: Click in the appliance's bottom-right corner, then click Shut Down. Open a terminal and execute the below, inputting your password if prompted:
s u d os h u t d o w n

How to Configure Appliance for a Proxy Server


If your own computer sits behind an HTTP proxy server, you might need to configure the appliance to route HTTP
https://manual.cs50.net/CS50_Appliance_2.3 16/26

7/22/12

CS50 Appliance 2.3 - CS50 Manual

traffic through that proxy as well. Here's how. 1. Open a terminal and execute the below, inputting your password if prompted:
s u d on a n o/ e t c / p r o f i l e . d / p r o x y . s h

2. Add the following line to that (otherwise empty) file, where e x a m p l e . c o mis the address of your proxy server and 8 0is its port number:
e x p o r th t t p _ p r o x y = h t t p : / / e x a m p l e . c o m : 8 0 /

3. Save and quit Nano by hitting ctrl-X, then y, then Enter. 4. Execute:
s u d oc h m o d6 4 4/ e t c / p r o f i l e . d / p r o x y . s h

5. Restart the appliance.

How to Run Programs from Lectures


See Fall 2011's HOWTO.

How to Do Problem Sets


See Fall 2011's HOWTO.

Accessibility
The CS50 Appliance comes pre-configured with Orca (http://live.gnome.org/Orca) , a screen reader. To enable Orca, select Menu > Accessories > Orca. Note that Orca does work with: Eclipse Firefox gedit (but not its built-in terminal window) Xfce's menu (in the appliance's bottom-left corner) Xfce's panel (along the bottom of the appliance's screen) But Orca does not work with: gedit's built-in terminal window Terminal Thunar, the appliance's file manager (via which you can open the Home and File System icons on the appliance's desktop)
https://manual.cs50.net/CS50_Appliance_2.3 17/26

7/22/12

CS50 Appliance 2.3 - CS50 Manual

However, if you have a screen reader installed on your own computer, you needn't rely on Orca alone. Instead, you can leverage your own screen reader for navigation by SSHing to the appliance from your computer and by mounting John Harvard's home directory on your own computer. If you have suggestions on how to improve the appliance's accessibility, please let sysadmins@cs50.net (mailto:sysadmins@cs50.net) know!

Implementation Details
Below are details on how we implemented the CS50 Appliance in case you're curious or would like to reproduce these steps yourself. You do NOT need to follow these directions to if you simply want to use the CS50 Appliance: you only need to follow the instructions above. We built the appliance using a combination of Kickstart (http://fedoraproject.org/wiki/Anaconda/Kickstart) and rpmbuild (http://fedoraproject.org/wiki/How_to_create_an_RPM_package) . It took us a while to figure everything out, but now that we (and you) know what we're doing, it only takes about 20 minutes to build the appliance (and most of that time is spent waiting for Kickstart to run). The CS50 Appliance's kickstart file can be found at http://mirror.cs50.net/appliance/2.3/cs50-appliance-2.3.ks. And the CS50 Appliance's spec file can be found at http://mirror.cs50.net/appliance/2.3/cs50-appliance-2.3.spec. The directions below assume familiarity with Fedora (http://en.wikipedia.org/wiki/Fedora_(operating_system)) and installation thereof as well as with VirtualBox (http://en.wikipedia.org/wiki/VirtualBox) . If you have questions, you may want to join CS50's Google Group at cs50.tv (http://cs50.tv/2010/fall/#l=psets&r=group) . 1. Download and install (on any OS) the latest version of VirtualBox from http://www.virtualbox.org/wiki/Downloads. 2. Download an ISO of the 32-bit Fedora 15 DVD from http://download.fedoraproject.org/pub/fedora/linux/releases/15/Fedora/i386/iso/Fedora-15-i386-DVD.iso (which is linked at http://fedoraproject.org/en/get-fedora-options#formats). 3. Launch VirtualBox and click New. 4. On the screen entitled Welcome to the New Virtual Machine Wizard!, click Continue . 5. On the screen entitled VM Name and OS Type , input a value below Name (e.g., CS50 Appliance ), select Linux next to Operating System, select Fedora (not Fedora (64 bit)) next to Version, then click Continue . 6. On the screen entitled Memory, input 768 MB, if not already present, then click Continue . 7. On the screen entitled Virtual Hard Disk, check Start-up Disk (if not checked already), select Create new hard disk (if not selected already), then click Continue . 8. On the screen entitled Welcome to the Create New Virtual Disk Wizard!, select VDI (VirtualBox Disk Image) (if not selected already), then click Continue . 9. On the screen entitled Virtual disk storage details , select Dynamically allocated (if not selected already), then click Continue . 10. On the screen entitled Virtual disk file location and size , leave the value under Location unchanged (assuming it's identical to the name you inputted earlier), input 32.0 GB under Size , then click Continue . 11. On the screen entitled Summary, click Create . 12. On the screen also entitled Summary, click Create .
https://manual.cs50.net/CS50_Appliance_2.3 18/26

7/22/12

CS50 Appliance 2.3 - CS50 Manual

13. In VirtualBox's lefthand list of VMs, single-click the VM you just created to highlight it, then click Settings . 14. Click Network. 15. Under Adapter 1, ensure that Enable Network Adapter is checked, that NAT is selected next to Attached to, and that (under Advanced), PCnet-PCI II (Am79C970A) is selected next to Adapter Type . 16. Click Adapter 2. Check Enable Network Adapter and select Host-only Adapter next to Attached to. Ensure that (under Advanced) PCnet-PCI II (Am79C970A) is selected next to Adapter Type . 17. Click Adapter 3. Check Enable Network Adapter and select Bridged Adapter next to Attached to. Ensure that (under Advanced) PCnet-PCI II (Am79C970A) is selected next to Adapter Type . 18. Click OK. 19. In VirtualBox's lefthand list of VMs, single-click the VM to highlight it, if not highlighted already, then click Start. 20. On the screen entitled Welcome to the First Run Wizard!, click Continue . 21. On the screen entitled Select Installation Media, click the folder icon under Media Source , navigate your way to the ISO you downloaded earlier (i.e., Fedora-15-i386-DVD.iso), click it once to highlight it, then click OK. You should then see Fedora-15-i386-DVD.iso under Media Source . Click Continue . 22. On the screen entitled Summary, click Done . 23. Immediately click inside of the VM's window (so that your cursor disappears). As soon as you see the screen entitled Welcome to Fedora 15!, hit Esc. You should then see a boot: prompt. 24. At the boot: prompt, type
l i n u xb i o s d e v n a m e = 0k s = h t t p : / / m i r r o r . c s 5 0 . n e t / a p p l i a n c e / 2 . 3 / c s 5 0 a p p l i a n c e 2 . 3 . k sk s d e v i c e = e t h 0s e l i n u x = 0

25. 26. 27. 28. 29. 30.

31. 32.

33.

then hit Enter. Kickstart will proceed to install Fedora 15 and CS50's own RPMs. Some number of minutes later (depending on the speed of your computer and Internet connection), the VM will power itself off. In VirtualBox's lefthand list of VMs, click the VM to highlight it, if not highlighted already, then click Settings . Click Storage . Under IDE Controller, single-click Fedora-15-i386-DVD.iso to highlight it. Then click the CD icon to the right of CD/DVD Drive and select Remove disk from virtual drive . Then click OK. In VirtualBox's lefthand list of VMs, single-click the VM to highlight it, if not highlighted already, then select Export Appliance... from VirtualBox's Devices menu. On the screen entitled Welcome to the Appliance Export Wizard!, single-click the VM once to highlight it, if not highlighted already, then click Continue . On the screen entitled Appliance Export Settings , click Choose... and navigate your way to a folder in which you'd like to save the exported appliance. Select Open Virtualization Format (*.ovf) next to Files of type , then input a filename (that ends in .ovf) for the appliance next to Save As (e.g., cs50-appliance2.3.ovf). Then click Save . Back on the screen entitled Appliance Export Settings , leave Write legacy OVF 0.9 and Write Manifest file unchecked, then click Continue . On the next screen also entitled Appliance Export Settings , input values for Name , Product, ProductURL, Vendor, Vendor-URL, Version, Description, and License . Then click Done . An inaccurate number of seconds later, you should find two files in the folder you created: cs50-appliance-2.3.ovf (which contain's the VM's configuration) and cs50-appliance-2.3.disk1.vmdk (which is the VM's hard disk). Open cs50-appliance-2.3.ovf with a text editor and delete:
19/26

https://manual.cs50.net/CS50_Appliance_2.3

7/22/12

CS50 Appliance 2.3 - CS50 Manual

the vbox:uuid attribute in the Disk element's tag; the entire Item element for ideController1 (i.e., everything between that IDE Controller's <Item> and </Item> tags); the entire vbox:Machine element (i.e., everything between <vbox:Machine ...> and </vbox:Machine>). 34. Add elements like the below as children of (i.e., inside) VirtualSystem:
< P r o d u c t S e c t i o n > < I n f o > M e t a i n f o r m a t i o na b o u tt h ei n s t a l l e ds o f t w a r e < / I n f o > < P r o d u c t > C S 5 0A p p l i a n c e2 . 3 < / P r o d u c t > < V e n d o r > C S 5 0 < / V e n d o r > < V e r s i o n > 2 . 3 < / V e r s i o n > < P r o d u c t U r l > h t t p s : / / m a n u a l . c s 5 0 . n e t / C S 5 0 _ A p p l i a n c e _ 2 . 3 < / P r o d u c t U r l > < V e n d o r U r l > h t t p : / / c s 5 0 . t v / < / V e n d o r U r l > < / P r o d u c t S e c t i o n > < E u l a S e c t i o n > < I n f o > L i c e n s ea g r e e m e n tf o rt h ev i r t u a ls y s t e m < / I n f o > < L i c e n s e > h t t p : / / c r e a t i v e c o m m o n s . o r g / l i c e n s e s / b y n c s a / 3 . 0 / < / L i c e n s e > < / E u l a S e c t i o n >

35. Create a folder called cs50-appliance-2.3-14-ovf and then move cs50-appliance-2.3.ovf and cs50appliance-2.3-disk1.vmdk into that folder. 36. Create a ZIP of that folder called cs50-appliance-2.3-14-ovf.zip, as with:
z i prn. v m d k c s 5 0 a p p l i a n c e 2 . 3 1 4 o v f . z i pc s 5 0 a p p l i a n c e 2 . 3 1 4 o v f /

This use of ntells z i pnot to compress c s 5 0 a p p l i a n c e 2 . 3 d i s k 1 . v m d k(since it's already compressed). 37. Distribute c s 5 0 a p p l i a n c e 2 . 3 1 4 o v f . z i p !

VMware
VirtualBox exports VMDK files in a "streamOptimized" (i.e., compressed) format that VMware's products do not support. However, it's possible to convert c s 5 0 a p p l i a n c e 2 . 3 d i s k 1 . v m d kto a "monolithicSparse" format that VMware's products do understand, as with:
m k d i rc s 5 0 a p p l i a n c e 2 . 3 v m x v m w a r e v d i s k m a n a g e rr/ p a t h / t o / c s 5 0 a p p l i a n c e 2 . 3 1 4 o v f / c s 5 0 a p p l i a n c e 2 . 3 d i s k 1 . v m d kt0c s 5 0 a p p l i a n c e 2 . 3 1 4 v m x / c s 5 0 a p p l i a n c e 2 . 3 d i s k 1 . v m d k

v m w a r e v d i s k m a n a g e rcomes with VMware Fusion (in / A p p l i c a t i o n / V M w a r e F u s i o n . a p p / C o n t e n t s / L i b r a r y / ) and

VMware Workstation (in C : \ P r o g r a mF i l e s \ V M w a r e \ V M w a r e W o r k s t a t i o nor C : \ P r o g r a mF i l e s( x 8 6 ) \ V M w a r e \ V M w a r eW o r k s t a t i o n \ ). You'll then want to create a text file called c s 5 0 a p p l i a n c e 2 . 3 . v m xin c s 5 0 a p p l i a n c e 2 . 3 1 4 v m x /with these contents:

https://manual.cs50.net/CS50_Appliance_2.3

20/26

7/22/12

CS50 Appliance 2.3 - CS50 Manual

# ! / u s r / b i n / v m w a r e c o n f i g . v e r s i o n=" 8 " d i s p l a y N a m e=" C S 5 0A p p l i a n c e2 . 3 " e t h e r n e t 0 . c o n n e c t i o n T y p e=" n a t " e t h e r n e t 0 . p r e s e n t=" T R U E " e t h e r n e t 1 . c o n n e c t i o n T y p e=" h o s t o n l y " e t h e r n e t 1 . p r e s e n t=" T R U E " e t h e r n e t 2 . c o n n e c t i o n T y p e=" b r i d g e d " e t h e r n e t 2 . p r e s e n t=" T R U E " f l o p p y 0 . p r e s e n t=" F A L S E " g u e s t i n f o . v m w a r e . p r o d u c t . c l a s s=" v i r t u a lm a c h i n e " g u e s t i n f o . v m w a r e . p r o d u c t . l o n g=" C S 5 0A p p l i a n c e2 . 3 " g u e s t i n f o . v m w a r e . p r o d u c t . u r l=" h t t p s : / / m a n u a l . c s 5 0 . n e t / C S 5 0 _ A p p l i a n c e _ 2 . 3 " g u e s t O S=" f e d o r a " i d e 1 : 0 . a u t o d e t e c t=" T R U E " i d e 1 : 0 . d e v i c e T y p e=" c d r o m r a w " i d e 1 : 0 . f i l e N a m e=" a u t od e t e c t " i d e 1 : 0 . p r e s e n t=" T R U E " i d e 1 : 0 . s t a r t C o n n e c t e d=" T R U E " m e m s i z e=" 7 6 8 " p o w e r T y p e . p o w e r O f f=" s o f t " p o w e r T y p e . p o w e r O n = " s o f t " You can then create a ZIP of that folder called cs50-appliance-2.3-vmx.zip, as with: p o w e r T y p e . r e s e t=" s o f t " p o w e r T y p e . s u s p e n d=" s o f t " p r i o r i t y . g r a b b e d = " n o r m a l " z i p r c s 5 0 a p p l i a n c e 2 . 3 1 4 v m x . z i pc s 5 0 a p p l i a n c e 2 . 3 1 4 v m x / p r i o r i t y . u n g r a b b e d=" n o r m a l " s c s i 0 : 0 . d e v i c e T y p e=" d i s k " s c s i 0 : 0 . f i l e N a m e=" c s 5 0 a p p l i a n c e 2 . 3 d i s k 1 . v m d k " Note the absence of nthis time, as the VMware-compatible VMDK is not itself compressed s c s i 0 : 0 . m o d e=" p e r s i s t e n t " by z i p . s c s i 0 : 0 . p r e s e n t=" T R U E " s c s i 0 : 0 . s t a r t C o n n e c t e d=" T R U E " s c s i 0 : 0 . w r i t e T h r o u g h=" T R U E " You can then distribute c s 5 0 a p p l i a n c e 2 . 3 v m x . z i pas well! s c s i 0 . p r e s e n t=" T R U E " s c s i 0 . v i r t u a l D e v=" l s i l o g i c " s o u n d . p r e s e n t=" T R U E " s o u n d . v i r t u a l d e v=" s b 1 6 " t o o l s . s y n c T i m e=" T R U E " t o o l s . u p g r a d e . p o l i c y=" u p g r a d e A t P o w e r C y c l e " u s b . g e n e r i c . a u t o c o n n e c t=" T R U E " u s b . p r e s e n t=" T R U E " If having trouble with VirtualBox or the CS50 Appliance, see VirtualBox and FAQs. v i r t u a l H W . v e r s i o n=" 7 "

and thus should be

Troubleshooting

Forget a password?
I forgot John Harvard's password
John Harvard's password is crimson by default. But if you changed it to something you do not remember, you can change it to something you know as follows: 1. Log out of the appliance if already logged in. 2. Log in as root with password crimson (unless you changed the superuser's password too). 3. Open a terminal, execute
p a s s w dj h a r v a r d

and input a new password for John Harvard (e.g., crimson) twice as prompted.
https://manual.cs50.net/CS50_Appliance_2.3 21/26

7/22/12

CS50 Appliance 2.3 - CS50 Manual

4. Log out of the appliance. You should then be able to log in as John Harvard again.

I forgot the root password


The superuser's password is crimson by default. But if you changed it to something you do not remember, you can change it to something you know as follows: 1. Shut down the appliance if it's already running. 2. Start the appliance, immediately click once inside of its window (so that your cursor disappears), and immediately hold Shift. Within a few seconds, you should see a GNU GRUB screen with Generic highlighted in white. If not, start over and try again. 3. Hit e , and you should see a screen with at least three options: root, kernel, and initrd. Highlight kernel and hit e again. You should then see a line of text that ends with q u i e t . Hit the space bar and add the word s i n g l eto the end of that line. Then hit Enter. You should find yourself back at the previous screen, with kernel highlighted in white. 4. Hit b to boot into the appliance in "single-user mode. You should soon see a terminal prompt. 5. Execute
p a s s w d

and input a new password twice (e.g., crimson) as prompted. 6. Execute


r e b o o t

to restart the appliance.

I forgot John Harvard's (or root's) MySQL password


John Harvard's password for MySQL is crimson by default, as is the superuser's. But if you changed either to something you do not remember, you can change both back to crimson by opening a terminal and executing the below:
s u d oy u myr e i n s t a l lc s 5 0 a p p l i a n c e

That command will restore the appliance to "factory defaults." It will not delete any code that you've written.

Known Issues
2.3-11 ncurses' F G _ Y E L L O Wand B G _ Y E L L O Wconstants do not display as yellow.
https://manual.cs50.net/CS50_Appliance_2.3 22/26

7/22/12

CS50 Appliance 2.3 - CS50 Manual

Changelog
1.4 2.0 2.1 2.2 2.3-1 Corrected c s 5 0 . r e p oto point to 2.3's repository instead of 2.1's. Fixed NFS-mounting of snapshots. Increased u p l o a d _ m a x _ f i l e s i z efrom 2M to 50M in p h p . i n i . Increased p o s t _ m a x _ s i z efrom 8M to 50M in p h p . i n i . Configured b r o w s c a pin p h p . i n ito use http://browsers.garykeith.com/stream.asp? PHP_BrowsCapINI. Added l y n x . Added p h p P H P M a i l e r . Added t r a c e r o u t e . Added p y t h o nexplicitly, even though it was already a dependency. Enabled fedora-debug and fedora-updates-debug repos. Installed debuginfo for g l i b c . Installed submit50. 2.3-3 Installed Orca for accessibility. 2.3-4 Removed outdated Fedora Accessibility Guide. 2.3-5 Added debuginfo for cs50-library-c, libncurses, and libcrypt. 2.3-6 Fixed problem whereby Trash icon wasn't appearing on desktop (by t o u c h ing files in / e t c / s k e l / . c o n f i g / x f c e 4 /in c s 5 0 a p p l i a n c eRPM). 2.3-7 Preconfigured appliance to use gedit as default editor for several datatypes. 2.3-8 Added b c . Added e v i n c efor PDFs. RPM now removes / h o m e / j h a r v a r d / . c a c h e / s e s s i o n s / *and / r o o t / . c a c h e / s e s s i o n s / *to fix x f w mcrashes. Renamed Menu > Share Screen to Menu > TeamViewer. 2.3-9 RPM no longer removes / h o m e / j h a r v a r d / . c a c h e / s e s s i o n s / *and / r o o t / . c a c h e / s e s s i o n s / *to fix x f w m 4crashes. John Harvard et al. now autostart these commands: x f v m 4r e p l a c e , to fix frameless windows (seemingly the result of an xfce4-sessions bug whereby ~ / . c a c h e / s e s s i o n s /results in x f w m 4dying) x f d e s k t o pr e l o a d , to ensure Trash icon appears (on login) and panel is properly drawn
https://manual.cs50.net/CS50_Appliance_2.3 23/26

7/22/12

CS50 Appliance 2.3 - CS50 Manual

(after RPM update) Appliance no longer allows / e t c / u d e v / r u l e s . d / 7 0 p e r s i s t e n t n e t . r u l e sto be created (and removes existing one), to avoid problems whereby virtual NICs' MAC addresses might be changed (by users). Firefox now automatically opens PDFs in Document Viewer without prompting. 2.3-10 Set t i m e s t a m p _ t i m e o u t = 1in / e t c / s u d o e r s . d / c s 5 0for John Harvard to eliminate password timeout. Added tunnel50. 2.3-11 Fixed bug whereby lock files (that protect files that would otherwise be overwritten by the c s 5 0 a p p l i a n c eRPM) were not being honored. Added support for . f o o . l o c kin addition to f o o . l o c k(which was introduced but broken in -10). Fixed bug whereby John Harvard's and superuser's panels are properly redrawn if ~ / . c o n f i g / x f c e 4 / p a n e l / * / *gets updated for either. Wrapped g e d i twith / u s r / l o c a l / b i n / g e d i tto force backgrounding (with b ) and to hide Gtk errors if run at command line. Altered / u s r / s h a r e / a p p l i c a t i o n s / g e d i t . d e s k t o pto invoke g e d i tb% F ; seems to ensure that g e d i tlaunches visibly when double-clicked. (Previously, 4 clicks were sometimes necessary, as the first 2 only spawned g e d i tin the background.) Altered / u s r / s h a r e / a p p l i c a t i o n s / g e d i t . d e s k t o pto have S t a r t u p N o t i f y = f a l s eto eliminate spinning cursor, based on http://ubuntuforums.org/showthread.php?t=1454332 and http://developer.gnome.org/integration-guide/stable/startup-notification.html.en. Added / u s r / l o c a l / { s b i n , b i n }to John Harvard's s e c u r e _ p a t hfor s u d o . 2.3-12 Added . c o n f i g / T e r m i n a l / t e r m i n a l r cto / e t c / s k e lto ensure ncurses' F G _ Y E L L O Wand B G _ Y E L L O Wconstants display as yellow. Updated Firebug, Live HTTP Headers, and Web Developer plugins for Firefox 7. Enabled persistent cookies for l y n x . Added CS50 Check. 2.3-13 Changed hostname from a p p l i a n c eto a p p l i a n c e . l o c a l d o m a i n . Imposed 4GB filesize limit on John Harvard. Imposed 16GB disk quota on John Harvard. Imposed 1M inode quota on John Harvard. Added snapshots of John Harvard's MySQL databases. Configured phpMyAdmin to hide MySQL's t e s tdatabase. Configured phpMyAdmin to no longer default to a specific database if only one exists. Cleaned up / e t c / p h p M y A d m i n / c o n f i g . i n c . p h p . Added / e t c / s k e l / . c o n f i g / x f c e 4 / h e l p e r s . r c(so that Menu > Run Program... would launch Thunar for sftp:// inputs). Changed E x e c = g e d i tb% fto E x e c = g e d i tb% Uin / e t c / s k e l / . l o c a l / s h a r e / a p p l i c a t i o n s / g e d i t . d e s k t o p(so that files on SFTP mounts would open in gedit when double-clicked). 2.3-14 [not yet released]
https://manual.cs50.net/CS50_Appliance_2.3 24/26

7/22/12

CS50 Appliance 2.3 - CS50 Manual

Added p h p t i d y . Enabled all O p t i o n sand O v e r r i d e sfor / v a r / w w w / h t m lin / e t c / h t t p d / c o n f / h t t p d . c o n f . Added / e t c / d h c p / d h c l i e n t e t h 0 . c o n fso that DHCP lease (and thus DNS servers) for e t h 0 renews every 300 seconds to ensure appliance detects change of networks within 300 seconds. Removed tunnel50 because hamachi-logmein's dependency on redhat-lsb impedes kickstart. Replaced / e t c / s k e l / . c o n f i g / a u t o s t a r t / { x f w m 4 , x f d e s k t o p } . d e s k t o pwith just c s 5 0 . d e s k t o p , which also restarts x f c e 4 p a n e l(to avoid an apparent Xfce bug whereby panel is sometimes empty).

Future Work
Below are features that may be included in some future version of the appliance. Configure g d mto boot at 800x600 resolution.

References
User Manual (http://www.virtualbox.org/manual/UserManual.html) for VirtualBox

Acknowledgements
Many thanks to everyone who's helped us improve the CS50 Appliance, including, but not limited to: Amir Darrin Ragsdale Dotty Federico Lerner James Lankford Kartikeya Srivastava Matthew Polega Matthew Roknich Mauro Braunstein Nobu Kikuchi Philip Durbin Rod Ruggiero Rolando Cruz Rory O'Reilly Sergio Prado Shaun Gibson Retrieved from "https://manual.cs50.net/CS50_Appliance_2.3" Category: HOWTO
https://manual.cs50.net/CS50_Appliance_2.3 25/26

7/22/12

CS50 Appliance 2.3 - CS50 Manual

https://manual.cs50.net/CS50_Appliance_2.3

26/26