Updated: 2013-12-03 10:59 EST
You must have your own CentOS virtual machine (with root permissions) running to do this lab. You cannot do the lab on the Course Linux Server because you do not have root permissions on that machine.
23h59 (11:59pm) Friday December 6, 2013 (end of Week 14)
WARNING: Some inattentive students upload Assignment #14 into the Assignment #13 upload area. Don’t make that mistake! Be exact.
This is an overview of how you are expected to complete this assignment. Read all the words before you start working.
Do not print this assignment on paper. On paper, you cannot follow any of the hyperlink URLs that lead you to hints and course notes relevant to answering a question. You also don’t get any of the later updates to the assignment. Do not print this assignment on paper.
Since I also do manual marking of student assignments, your final mark may not be the same as the mark submitted using the current version of the Checking Program. I do not guarantee that any version of the Checking Program will find all the errors in your work. Complete your assignments according to the specifications, not according to the incomplete set of mistakes detected by the Checking Program.
When you are finished the tasks, leave the files and directories in place as part of your deliverables. Do not delete any assignment work until after the term is over! Assignments may be re-marked at any time; you must have your term work available right until term end.
All references to the “Source Directory” below are to the CLS directory ~idallen/cst8207/13f/assignment14/
and that name starts with a tilde character ~
followed by a userid with no intervening slash. The leading tilde indicates to the shell that the pathname starts with the HOME directory of the account idallen
(seven letters).
Review course notes Booting and GRUB.
Use the on-line help (man
command) for the commands listed below for more information.
chkconfig
– display or change Run Level information and servicesgrub
– GRand Unified Bootloader (legacy version 0.9x - not the Version 2 GRUB numbered 1.9x). The man page is useless. See this instead: GRUB manualrunlevel
– display previous and current Run Leveltelinit
– change Run Levelsuname
– print system information: display system name, kernel release and version number, machine, processor, and O/S type/etc/inittab
– documentation on Run Levels; contains the default Run Level/boot/grub/grub.conf
– the GRUB Legacy (version 1) configuration fileMost of the commands in this assignment require root
privilege. Use the sudo
command to run individual commands as root
– don’t use a root
subshell.
If you start a root
subshell (not recommended – use sudo
instead), your prompt will tell you if you are the root
user by changing to include a #
character instead of a $
character. You can also use the commands id
or whoami
to show your current userid.
Some answers require you to record command lines. Do not include the shell prompt with your command lines. Give only the part of the command line that you would type yourself.
Make sure you know the difference between a command line (which is what you type into the shell) and command output (which is what the command displays on your screen). Pay attention to whether the question asks you to record the command line or the command output.
Take a snapshot of your virtual machine before you begin each section of this lab so that you can recover back to the snapshot if needed. You can delete the unused snapshots if everything works well.
Are you keeping an external backup copy of all your coursework (including your virtual machines) somewhere? You should be!
I recommend that once you have booted your CentOS VM, you connect to it and work using a remote login session (e.g. ssh
or PuTTY
) where copy-and-paste works and where you can have multiple simultaneous connections into the VM. The VMware console is not friendly.
answer.txt
IndexWhere you are required to record or save a command line or its output into The Answer File, do the command and then copy and record the command line or its output as a separate line into an answer.txt
file in your CentOS assignment14
directory. You will be told how many lines to save in the file.
If you can’t answer a question, leave a blank line in this answer file. (The vim
option :set number
may be useful to you as you edit.)
You can use either nl
or cat -n
to show the contents of a file with line numbers, to make sure each answer is on its correct line number.
Create your assignment14
directory on the CLS in the usual place.
Create your sysadmin account assignment14
directory on your CentOS VM in the usual place (not in the root
account!).
This CentOS directory is the base directory for all pathnames in this assignment. Store your files and answers here on CentOS.
Run the Checking Program to verify your work so far.
Review Booting and GRUB.
This section depends on a successful CentOS Virtual Machine installation, including a working GRUB menu.
To change a forgotten root
password or do maintenance on the system that requires it to be quiescent, you can boot your system in a restricted single-user mode that does not start many system daemons and goes directly into a root
shell prompt on the system console without requiring a password.
The system should not be left in single-user mode; many things are not started. You may not even be able to log-in remotely in single-user mode.
kernel
line in that file. Note all the options used on the kernel
line; you will see them again soon.
Record on Line 2 in The Answer File the kernel option keyword used in booting a machine single-user (maintenance mode). (one word)
Safely reboot your CentOS VM into the GRUB menu.
hiddenmenu
command in GRUB, you will boot directly to the GNU GRUB menu where you should see a one-line list of CentOS systems to boot and at the bottom a 30 second countdown in progress.
hiddenmenu
, when the countdown is interrupted your system should display the one-entry GRUB menu.)a
– just the letter key, no [Enter]
key!
a
you will see your cursor on a line that ends with the same kernel
arguments you viewed earlier in the configuration file.[Home]
key to zoom to the left end of the kernel options line, and the [End]
key to zoom to the right.root
shell prompt. (If you get a login
prompt, you didn’t use the right kernel option keyword. Reboot and try again.)
root
function at this prompt, including changing passwords (even the root
password).From the single-user shell, place a full list of all processes for all users, BSD format, text user name (not numeric UID), full wide listing (not truncated at all), into a psbsd-single.txt
file. (All assignment answer files must be saved in your sysadmin CentOS assignment14
directory.) The output should be approximately 52 lines and 4KB. All the processes will be owned by root
. The first two lines will look similar to this:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 2.5 0.5 2900 1368 ? Ss 16:35 0:01 /sbin/init
Use the command that displays the previous and current Run Level (two words on one line) and record this line of output as Line 3 in The Answer File.
login
prompt should appear on the console.
Log in as your sysadmin account (optionally use an SSH login, not the terrible console window) and repeat the command that displays the previous and current Run Level and save the output as Line 4 in The Answer File (two more words on one line).
Check your work using the Checking Program.
Review Booting and GRUB.
You can select a different GRUB configuration file at boot time.
Record the number of lines in a standard Linux boot menu entry as Line 5 in The Answer File (one number).
myconfig
in its same grub
directory.
myconfig
file:
title
line of the only boot menu entry in the file, change the word CentOS
to MY OWN CentOS
myconfig
file.Compare the current GRUB configuration file with the new myconfig
GRUB configuration file. The new file should have two more words. A file difference using the diff
command should show the one line change:
$ diff grub.conf myconfig
14c14
< title CentOS (2.6.32-358.el6.i686)
---
> title MY OWN CentOS (2.6.32-358.el6.i686)
You can preview much of a GRUB configuration file from multi-user mode without having to reboot the system to test it, but you can’t actually select a new kernel until you reboot.
myconfig
GRUB configuration file in its correct partition.
(xxx,x)/xxxxx
GRUB can be run as a shell-like utility that has many built-in commands. Start the command-line GRUB utility by running the command named grub
as root
from your shell without rebooting the machine. When you run this grub
command you will see a grub>
prompt:
$ sudo grub
Probing devices to guess BIOS drives. This may take a long time.
GNU GRUB version 0.97 (640K lower / 3072K upper memory)
[ Minimal BASH-like line editing is supported. For the first word, TAB
lists possible command completions. Anywhere else TAB lists the possible
completions of a device/filename.]
grub>
The comments about TAB completion don’t apply to this command-line version of GRUB. (Sorry – this is a bug!) TAB only works when GRUB is run at boot time as the boot loader.
help
at thegrub>
prompt to see a partial list of GRUB utility commands. You can also type help commandname
to get a bit more help on commandname
^C
will also terminate this GRUB utility.)Note (and try) which GRUB command will display partitions on a disk:
grub> geometry (hd0)
drive 0x80: C/H/S = 261/255/63, The number of sectors = 4194304, /dev/sda
Partition num: 0, Filesystem type is ext2fs, partition type 0x83
Partition num: 1, Filesystem type unknown, partition type 0x82
grub> geometry (hd1)
drive 0x81: C/H/S = 130/255/63, The number of sectors = 2097152, /dev/sdb
Partition num: 0, Filesystem type is ext2fs, partition type 0x83
Partition num: 1, Filesystem type is ext2fs, partition type 0x83
Partition num: 3, Filesystem type is fat, partition type 0xc
Partition num: 4, Filesystem type unknown, partition type 0x82
Partition num: 5, Filesystem type unknown, partition type 0x7
GRUB is not very intelligent about the file systems inside partitions. Above, it mistakes both ext3
and ext4
file systems as type ext2fs
. (You can actually mount both ext3
and ext4
file systems as type ext2
and the journalling feature will be disabled. Don’t do it!)
Note (and try) which GRUB command displays (and sets) the current partition/device prefix, and which command displays a text file:
grub> cat /etc/hosts
Error 1: Invalid device requested
grub> root
(fd0): Filesystem type unknown, partition type 0x0
grub> root (hd0,0)
Filesystem type is ext2fs, partition type 0x83
grub> root
(hd0,0): Filesystem type is ext2fs, partition type 0x83
grub> cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
127.0.0.2 cst8207b
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
myconfig
file name:
configfile
command you will need to specify both the partition and the pathname to the new GRUB configuration file you edited above.When you get the configfile
command and GRUB pathname to your myconfig
file right, you will see output similar to this:
GNU GRUB version 0.97 (640K lower / 3072K upper memory)
-------------------------------------------------------------------
0: MY OWN CentOS (2.6.32-358.el6.i686)
-------------------------------------------------------------------
Use the ^ and v keys to select which entry is highlighted.
Press enter to boot the selected OS, 'e' to edit the
commands before booting, 'a' to modify the kernel arguments
before booting, or 'c' for a command-line.
Ignore the information about which keys work – none of these keys work in this command-line version of GRUB. The keys only work after a reboot in the boot loader version of GRUB. We are only using GRUB in command-line mode to preview our GRUB menu to make sure it works.
MY OWN CentOS
menu, break out of (interrupt) the GRUB utility and return to the BASH shell prompt.
MY OWN CentOS
menu, edit and fix the myconfig
file until you do.MY OWN CentOS
menu entry, as shown above, you are ready to try your new file in the real GRUB boot process:
grub>
prompt.grub>
prompt, use the exact same configfile
line you used earlier to select your new myconfig
GRUB configuration file. (In this boot loader version of GRUB, TAB completion now works for both GRUB command names, disk names, partition names, and file names. Use TAB to help you type the correct GRUB command line.)MY OWN CentOS
menu entry, like this:Let the time out expire to boot your system, or use the [Enter] key.
Check your work using the Checking Program.
See the section on Legacy Run Levels and Services in the Booting and GRUB page. As with most system maintenance activities, you will need to use the sudo
command to run the privileged commands in this section.
root
) sysadmin account.
Use a command to list all services and all run level information into file chkconfig-before.txt
in your CentOS assignment14
directory. It should be approximately 22 lines. Two of the lines should look like this:
ntpdate 0:off 1:off 2:off 3:off 4:off 5:off 6:off
postfix 0:off 1:off 2:on 3:on 4:on 5:on 6:off
Use the same command name to enable (turn on) the NTP Date service only in Run Level 4 (a normally unused Run Level in CentOS).
Use the same command name to disable (turn off) the above Postfix Mail Service service in Run Level 4.
Save a second listing of all services and all run levels into file chkconfig-after.txt
in your CentOS assignment14
directory. It should still be approximately 22 lines. Two of the lines should now look like this:
ntpdate 0:off 1:off 2:off 3:off 4:on 5:off 6:off
postfix 0:off 1:off 2:on 3:on 4:off 5:on 6:off
Use the diff
command to compare the before listing file with the after listing file. Only two lines should have changed.
postfix
.
postfix.txt
file.Record as Line 9 in The Answer File the Linux absolute pathname of the system configuration file that gives the default Run Level for your CentOS system.
Record as Line 10 in The Answer File the one line from the above system configuration file that sets the default Run Level for your CentOS system. (Hint: It’s the only non-comment line in the file!)
Use a command to confirm that your current Run Level is the same as the CentOS default Run Level. (This should be true unless you are running in single-user mode, which you should not be.)
lvm2-monitor
service will complain that it is too dangerous to shut down.udev
event manager will retrigger some events.ntpdate
service will try to synchronize the time, and fail.Use the command that displays the previous and current Run Level (two words on one line) and record this line of output as Line 11 in The Answer File.
ntpdate
service did not work:
ntpdate
talks about a socket being in use.ntpdate
log message as Line 13 in The Answer File.postfix
userid.
postfix
userid will be found. (You might see a process run by you, searching for postfix
.)udev
event manager will retrigger some events.Use the command that displays the previous and current Run Level (two words on one line) and record this line of output as Line 14 in The Answer File.
Confirm that the postfix
processes are again running.
Check your work using the Checking Program.
See the section on Starting and Stopping Services in the Booting and GRUB page. As with most system maintenance activities, you will need to use the sudo
command to run the privileged commands in this section.
Make sure your system is running as the default CentOS Run Level.
postfix
service:
pid
of the service and say that it is running.pid
) as Line 15 in The Answer File.postfix
service:
Shutting down postfix: [ OK ]
postfix
service:
postfix
service:
Starting postfix: [ OK ]
ntpdate
service:
[FAILED]
Check your work using the Checking Program.
Your Linux kernel has a version number, as in “What version of the kernel are you running? I’m running version 2.6.32
”.
Unfortunately, the command that prints system information, including the kernel version number, calls the number a kernel release number, because it uses the option name version to stand for the kernel compile date. When using this system information command to display the kernel version number, you must use the option for release.
2
on CentOS.)3
on the CLS – the CLS runs a newer kernel than CentOS.)That is all the tasks you need to do.
Check your work a final time using the Checking Program and save the output as described below. Submit your mark following the directions below.
Summary: Do some tasks, then run the Fetch and checking program to verify your work as you go. You can run the Fetch and checking program as often as you want. When you have the best mark, upload the marks file to Blackboard.
The checking program resides on the Course Linux Server, but your work is on your CentOS Virtual Machine. There is a new Fetch program that you must download and use on your CentOS Virtual Machine to copy information from your CentOS Virtual Machine to your account on the CLS so that the checking program can check it on the CLS.
Once the Fetch program has fetched these files from your Virtual Machine to the CLS, you can run the checking program on the CLS to check what is saved in the files. When you make changes on your CentOS Virtual Machine, you need to run the Fetch program again on CentOS to update the saved files on the CLS.
Simply running the checking program on the CLS will not update the saved files on the CLS. You must run the Fetch program below on your CentOS VM when you make changes on your CentOS Virtual Machine.
Do all the following steps on your CentOS Virtual Machine. Read through the whole list before you start typing anything. An example of what to type is given below the descriptions that follow.
Log in to CentOS using your system administrator (non-root) account.
Change to your existing CentOS assignment14
directory containing all your answer files for this assignment.
curl
to get a copy of the Fetch program from the given URL into a file named do.sh
.
do.sh
in your assignment14
directory.#!/bin/sh
and contain a few shell comments and commands, including another curl
command.sudo
to run the do.sh
script you just downloaded to CentOS, with the USER
environment variable set to your own College/Blackboard/CLS account userid (do not use abcd0001
).
do.sh
script over and over to check your work.This Fetch program will connect from CentOS to the CLS using your account name. It will copy files from CentOS to your assignment14
directory on the CLS. It will then run the checking program on the CLS to check your work. You will need to answer one question about your IP address, and then wait and type in your CLS password.
It will look something like this (use your userid, not abcd0001
):
CentOS$ hostname
abcd0001
CentOS$ pwd
/home/abcd0001/CST8207-13F/Assignments/assignment14
CentOS$ echo "$USER"
abcd0001
CentOS$ curl -A mozilla http://teaching.idallen.com/cst8207/13f/notes/data/assignment14do.sh >do.sh
[... various download statistics print here ...]
CentOS$ sudo USER=$USER sh do.sh
---------------------------------------------------------------------------
abcd0001: FETCH version 2. Connecting to CLS as USER='abcd0001' using ssh
---------------------------------------------------------------------------
abcd0001: Use local Algonquin IP cst8207-alg.idallen.ca [y/N]? n
abcd0001: Please wait; using ssh to connect to user 'abcd0001' on cst8207.idallen.ca ...
*** COURSE LINUX SERVER ***
abcd0001@cst8207.idallen.ca's password: # enter your CLS password
---------------------------------------------------------------------------
idallen-ubuntu assignment14fetch_server.sh version 4 run by abcd0001.
Please wait; collecting info from abcd0001 Virtual Machine
---------------------------------------------------------------------------
VM files collected into CST8207-13F/Assignments/assignment14/abcd0001.tar.bz on CLS.
Now running checking program for abcd0001 on CLS:
[... checking program output appears here ...]
sudo
to run the do.sh
script over and over to check your work.curl
line once, to get the do.sh
script.assignment14
on the CLS..bashrc
file or world-writable files on the CLS). These errors are on the CLS, not on your CentOS machine.When you are done with your assignment, you need to run the checking program one last time on the CLS and submit the output file, as follows:
Do all this one last time on the Course Linux Server (not on CentOS):
There is a Checking Program named assignment14check
in the Source Directory on the CLS. Create a Symbolic Link to this program named check
under your new assignment14
directory on the CLS so that you can easily run the program to check your work and assign your work a mark on the CLS. Note: You can create a symbolic link to this executable program but you do not have permission to read or copy the program file.
Execute the above “check” program on the CLS using its symbolic link. (Review the Search Path notes if you forget how to run a program by pathname from the command line.) This program will check your fetched CentOS work, assign you a mark, and display the output on your screen. (You may want to paginate the long output so you can read all of it.)
Remember: The checking program does not fetch new files to the CLS from your CentOS VM. You must run the Fetch program on your CentOS VM to update the fetched files on the CLS so that the checking program can mark them on the CLS.
You may run the “check” program as many times as you wish, to correct mistakes and get the best mark. Some tasks sections require you to finish the whole section before running the checking program at the end; you may not always be able to run the checking program successfully after every single task step.
When you are done with checking this assignment, and you like what you see on your screen, redirect the output of the Checking Program into the text file assignment14.txt
under your assignment14
directory on the CLS. Use the exact name assignment14.txt
in your assignment14
directory. Case (upper/lower case letters) matters. Be absolutely accurate, as if your marks depended on it. Do not edit the file. Make sure the file actually contains the output of the checking program!
Transfer the above assignment14.txt
file from the CLS to your local computer and verify that the file still contains all the output from the checking program. Do not edit this file! No empty files, please! Edited or damaged files will not be marked. You may want to refer to your File Transfer notes.
Submit the assignment14.txt
file under the correct Assignment area on Blackboard (with the exact name) before the due date. Upload the file via the assignment14 “Upload Assignment” facility in Blackboard: click on the underlined assignment14 link in Blackboard. Use “Attach File” and “Submit” to upload your plain text file.
No word-processor documents. Do not send email. Use only “Attach File”. Do not enter any text into the Submission or Comments boxes on Blackboard; I do not read them. Use only the “Attach File” section followed by the Submit button. (If you want to send me comments about your assignment, use email.)
Your instructor may also mark the assignment14
directory in your CLS account after the due date. Leave everything there on the CLS. Do not delete any assignment work from the CLS until after the term is over!
Your instructor may also mark the files on your CentOS VM after the due date. Leave everything there on your CentOS VM. Do not delete any assignment work from the CentOS VM until after the term is over!
Use the exact file name given above. Upload only one single file of plain text, not HTML, not MSWord. No fonts, no word-processing. Plain text only.
Did I mention that the format is plain text (suitable for VIM/Nano/Pico/Gedit or Notepad)?
NO EMAIL, WORD PROCESSOR, PDF, RTF, or HTML DOCUMENTS ACCEPTED.
No marks are awarded for submitting under the wrong assignment number or for using the wrong file name. Use the exact name given above.
WARNING: Some inattentive students don’t read all these words. Don’t make that mistake! Be exact.
READ ALL THE WORDS. OH PLEASE, PLEASE, PLEASE READ ALL THE WORDS!