Operating Systems 2015F: Tutorial 5

From Soma-notes
Revision as of 17:42, 20 October 2015 by Soma (talk | contribs) (→‎Hints)

In today's tutorial you will be getting your own virtual machine set up in OpenStack. Your tasks are as follows:

  1. Connect to the SCS Openstack web portal at https://openstack.scs.carleton.ca
  2. Login using your MyCarletonOne username and the default password (your username and student number) or the password you have set.
  3. Create an instance based on the snapshot "comp3000-base-snap"
    • You don't need an ssh keypair
    • Set the name of the instance to be your username-1. Thus if your username is janedoe, then call your instance janedoe-1.
  4. Assign a floating IP address to your instance.
  5. Check that your instance is running; if not, start it. Then log in to the console using the standard student account.
  6. For regular work, ssh to the floating IP address assigned to your instance. Make sure you specify "student" as the username. The password is "tneduts!", same as the Virtualbox VMs. (If you used one of the standard cloud ubuntu images and set up a keypair, the username is "ubuntu" and the account has no password.)
  7. Change the hostname of your machine to be whatever you want by editing /etc/hostname. Also change the hostname in /etc/hosts.
  8. Edit /etc/default/grub, and make sure the following variables have the values below. These settings enable a countdown that, if you hit a key during it, you can select which kernel to load.
    • GRUB_DEFAULT=0
    • GRUB_HIDDEN_TIMEOUT=5
    • GRUB_HIDDEN_TIMEOUT_QUIET=false
    • GRUB_TIMEOUT=5
  9. Run "sudo update-grub" to update the grub configuration.
  10. Configure your kernel by running "make menuconfig"
  11. Build the kernel by running "make bzImage"
  12. Build the modules by running "make modules"
  13. Install the kernel by running "sudo make install"
  14. Install the modules by running "sudo make modules_install"
  15. While waiting for your kernel to build, try tracing various kernel events in /sys/kernel/debug/tracing as detailed in Lecture 11. Try to trace:
    • entry to the chdir system call
    • entry into the fork system call
    • all system calls
    • other functions in the kernel

Hints

  • You can configure a kernel an existing config file by copying it to .config and running "make oldconfig". A minimal config that works in the class VM is here. Save it as ".config" in the top level of the kernel source directory.
  • Note this configuration has no modules; however, previously the following modules were loaded (see below). However, the kernel works fine without them. Which of these modules need to be built and loaded? Why or why not?
Module                  Size  Used by
ppdev                  20480  0 
kvm_intel             151552  0 
kvm                   483328  1 kvm_intel
serio_raw              16384  0 
parport_pc             32768  0 
parport                45056  2 ppdev,parport_pc
autofs4                40960  2 
crct10dif_pclmul       16384  0 
crc32_pclmul           16384  0 
ghash_clmulni_intel    16384  0 
aesni_intel           172032  0 
aes_x86_64             20480  1 aesni_intel
lrw                    16384  1 aesni_intel
gf128mul               16384  1 lrw
glue_helper            16384  1 aesni_intel
ablk_helper            16384  1 aesni_intel
cryptd                 20480  3 ghash_clmulni_intel,aesni_intel,ablk_helper
psmouse               118784  0 
floppy                 77824  0