Open main menu

CDOT Wiki β

Changes

OPS235 Lab 3 - CentOS7

1,117 bytes added, 12:29, 24 September 2018
no edit summary
[[Category:OPS235]][[Category:OPS235 Labs]]
{{Admon/caution|THIS IS AN OLD VERSION OF THE LAB|'''This is an archived version. Do not use this in your OPS235 course.'''}}
= LAB PREPARATION =
== Purpose / Objectives of Lab3==
[[Image:software.png|thumb|right|300px|Installing software is an important task for computer system administrators. ]]
In this lab, you are going to identify potential problems such as not properly compressing VM image files when backing up VMs, or forgetting your root password. You will also learn to conserve hard disk space by learning how to compress and decompress files that are stored on your computer server. In addition, you will learn alternative methods of how to install applications (i.e. programs).
'''Topics include:'''<u>Main Objectives</u>
#*Learn to troubleshoot some common problems after installing VMs#*Create and extract '''archive''' files (tar and tar.gz)#*Install applications using various methods:::*'''Download''', '''decompress''' and archive file from the Internet, then '''compile source code''' in order to install an application.::*Use '''yum''' utility to install software from '''local source programs''' (on DVD drive)::*Use '''yum''' utility to install software from '''repositories''' (online storage areas)::*Learn how to '''add repositories''' (online software storage areas) to install less common applications.<olul><li value="4">Demonstrate the use of Bash Shell scripts to automate routine tasks (generate a customized software report)</li></olul>
'''A few common problems are:'''
*I Can't boot into Graphical Mode on my '''c7host''' machine*I Forgot My '''Regular User ''' Password*I Forgot My Root '''root''' Password
*I Can't Start My Virtual Machine
*I Can't start my host Host machine
*'''Asking Questions''' (eg. what was done recently prior to problem?)
*'''Eliminating ''' what the problem isn't''IS NOT'''
*'''Tenacity''' and '''patience''' (ability to focus on finding the cause of the problem)
If you cannot log graphically into your machine (first 3 common problems), there is a trick to boot your system into "'''single-user" ''' mode. This mode does not provide networking, graphics, or logging in as other regular users, but can connect to a text-based interface as the '''root''' user. This method will only work if a GRUB (<u>'''Gr'''</u>and '''<u>U</u>'''nified <u>'''B'''</u>oot-loader) password has not been set, or that you haven't forgotten the GRUB password.
[[Image:grub2_1.png|thumb|right|600px|Add the boot option '''single''' and then press '''ctrl-x''' to boot into single user mode]]
|}
#Boot-up your c7host'''centos1''' VM. As soon as '''when the Grub Boot menu appears''', press the letter '''<b><code><span style="color:#3366CC;font-size:1.2em;">e''' </span></code></b> (for "edit").#Using your arrow keys, scroll to next screen to '''linux16linux''' or '''linux-efi''' command and type the word '''<b><code><span style="color:#3366CC;font-size:1.2em;">single''' </span></code></b> as an argument after '''quiet''' (see diagram for reference) and then press '''<b><code><span style="color:#3366CC;font-size:1.2em;">ctrl-x''' </span></code></b> to boot.#The system should boot into text-based mode. Enter your '''root ''' password.#One thing to look at is partition space usage. Issue the command: '''<b><code><span style="color:#3366CC;font-size:1.2em;">df -h'''</span></code></b>#If you notice 0% free space in the '''/ ''' partition, then there is a problem. This most likely is caused by not following steps to create a <u>compressed</u> copy of the VM image. If that is the case, locate the large image backup and remove it. Do NOT remove the image in ''/var/lib/libvirt/images'' directory!#You can use the '''passwd''' command to reset your '''regular user ''' password (eg. <b><code><span style="color:#3366CC;font-size:1.2em;">passwd yourusernameregularuserid</span></code></b>). You can press '''ctrl-c''' if you wish to abort (i.e. not change password).#To restart in graphical mode, simply enter the command '''<b><code><span style="color:#3366CC;font-size:1.2em;">reboot'''</span></code></b>.
:Unfortunately, this method does not work if you forgot your '''root ''' password (see To reset your root password, refer to procedure below).
|- valign="top"
|
[[Image:grub2_3.png|thumb|right|600px|Add word '''single''' at the end of boot options, '''ENTERrw init=/sysroot/bin/sh''' as shown and then press '''bctrl-x''' to boot into single user no root password mode]]
|}
#The procedure to reset root's password is different than shown above. Press '''<b><code><span style="color:#3366CC;font-size:1.2em;">e''' </span></code></b> at the Grub boot menu.#Using your arrow keys, move to '''linux16linux''' or '''linux-efi''' command and replace the argument '''ro''' with the argument '''<b><code><span style="color:#3366CC;font-size:1.2em;">rw init=/sysroot/bin/sh''' </span></code></b> (see diagram for reference) and then press '''<b><code><span style="color:#3366CC;font-size:1.2em;">ctrl-x''' </span></code></b> to boot.
#The system should boot into text-based mode without prompting for root's password.
#Issue the command: '''<b><code><span style="color:#3366CC;font-size:1.2em;">chroot /sysroot'''</span></code></b><br><br>#Issue the command: <b><code><span style="color:#3366CC;font-size:1.2em;">passwd root </span></code></b> in order to change your root password(press '''ctrl-c''' if you wish to abort - i.e. not change password).#To restart in graphical mode, simply enter the command '''<b><code><span style="color:#3366CC;font-size:1.2em;">reboot'''</span></code></b>.
'''Catastrophic Boot Problems:'''
:Not being able to start your '''c7host ''' due to '''Kernel Panic ''' or some sort of "'''catastrophic disk failure" ''' is not as easy to fix. You might be able to boot from your '''Centos LIVE DVD, open a terminal and mount the partition ''' via command line and look for possible problems (setup files like '''/etc/fstab'''). '''Lab5 ''' will discuss more about mounting and the /etc/fstab file. The "worst-case scenario" would be to purchase a new hard disk, '''perform lab1 completely, perform lab2 to install and set-up virtualization software''', then '''restore your VM image and xml file backups ''' (eg. decompressing images, issuing virsh define commands for .xml files). That is why consistently '''performing backups of ALL of your VMS at the end of each lab is absolutely essential! You have been warned! '''
= INVESTIGATION 2: ARCHIVING FILES =
==Part 1: Creating a File Archive==
#Perform this part on your centos3 machine.
#Boot up your '''centos3''' VM.
#Change your working directory to <b><code><span style="color:#3366CC;font-size:1.2em;">'''/usr/share/doc/sudo*</span></code></b>'''#Use the tar (tape archiver) command to create an archive file named <b>'''/tmp/archive1.tar</b>'''
#*<b><code><span style="color:#3366CC;font-size:1.2em;">tar cvf /tmp/archive1.tar .</span></code></b>
|}
<ol>
<li value="4">What do the options '''c''', '''v''', and '''f ''' mean?</li>
<li>Record the archive file size.</li>
<li>Compress the file using <code>'''gzip</code>''':
<ul>
<li><b><code><span style="color:#3366CC;font-size:1.2em;">gzip /tmp/archive1.tar</span></code></b></li>
</li>
<li>Record the archive file size after compression.</li>
<li>Make sure you're still in <code>'''/usr/share/doc/sudo*</code> ''' and then create a compressed archive:
<ul>
<li><b><code><span style="color:#3366CC;font-size:1.2em;">tar cvzf /tmp/archive2.tgz .</span></code></b></li>
</ul>
</li>
<li>What does the <b><code><span style="color:#3366CC;font-size:1.2em;">''' z</span></code></b> ''' option do?</li> <li>Compare the sizes of <b><code><span style="color:#3366CC;font-size:1.2em;">'''/tmp/archive1.tar.gz</span></code></b> ''' and <span style="color:#3366CC;font-size:1.2em;">'''/tmp/archive2.tgz</span></code></b>'''. Why are they so close in size?</li>
</ol>
===Part 2: Restoring Files From an Archive===
#This section is to be performed Remain in your '''centos3 ''' VM.#Create the directory <b><code><span style="color:#3366CC;font-size:1.2em;">'''/tmp/extract1</span></code></b>'''#Change to the <b><code><span style="color:#3366CC;font-size:1.2em;">'''/tmp/extract1</span></code></b> ''' directory.#Move the file '''archive1.tar.gz ''' to your current directory.
#Unzip the first archive you created:
#*<b><code><span style="color:#3366CC;font-size:1.2em;">gunzip archive1.tar.gz</span></code></b>
#*<b><code><span style="color:#3366CC;font-size:1.2em;">tar xvf archive1.tar</span></code></b>
#Are all the files there?
#Compare <b><code><span style="color:#3366CC;font-size:1.2em;">'''/tmp/extract1/README</span></code></b> ''' and <span style="color:#3366CC;font-size:1.2em;">'''/usr/share/doc/sudo*/README</span></code></b>'''. Are they exactly the same? Why?#Create the directory <b><code><span style="color:#3366CC;font-size:1.2em;">'''/tmp/extract2</span></code></b>'''#Move the file '''archive2.tgz ''' to the <b>'''/tmp/extract2</b> ''' directory.
#Extract the files from the second archive:
#*<b><code><span style="color:#3366CC;font-size:1.2em;">tar xvzf /tmp/extract2/archive2.tgz</span></code></b>
#Note that this time a separate <b><code><span style="color:#3366CC;font-size:1.2em;">gunzip</span></code></b> command was not needed. Why?
#Repeat the previous command, leaving out the option "'''z"'''. Does it work? Why?#Compare the <b><code><span style="color:#3366CC;font-size:1.2em;">'''README</span></code></b> ''' file in this directory with the original file. Are they exactly the same?
'''Answer Part 2 observations / questions in your lab log book.'''
===Part 3: Practical Application - Compiling Source Code from Archive File===
{| width="40%" align="right" cellpadding="10"
|- valign="top"
|colspan="2"|{{Admon/note|Installing Development Libraries|In the future, remember the above procedure whenever installing software from source. Sometimes, you need to install additional tools or libraries in order to compile a particular software package}}
|}
Now that you know how to create and decompress "zipped tarball archives", we will demonstrate how to install applications from websites containing these types of archives. Although this method is not as "user-friendly" as using the yum or rpm command, this method is useful if the application is NOT contained in regular software repositories...
 
In order to build software from source code, you must have the appropriate software development tools (such as make and gcc) and libraries (such as GTK) installed. The required tools will vary depending on the computer languages used in the software being built.
# Part is to be performed in your '''centos2 ''' VM.# Issue the following command to install a basic set of development tools and libraries:<br /><b><code><span style="color:#3366CC;font-size:1.2em;">yum groupinstall "Development Tools" "Development Libraries"</span></code></b><br><br>
 
{| width="40%" align="right" cellpadding="10"
|- valign="top"
|colspan="2"|{{Admon/note|Installing Development Libraries|In the future, remember the above procedure whenever installing software from source. Sometimes, you need to install additional tools or libraries in order to compile a particular software package}}
 
|}
<ol>
<li value="3">Go to the directory <code>'''/tmp</code>'''</li>
<li>Use the <b><code><span style="color:#3366CC;font-size:1.2em;">wget</span></code></b> command to download the "tar ball" that contains the source code for the NLED text editor. <code>wget</code> is a command-line tool to download files from the web using the http or ftp protocols.
<ul>
</ul>
<li>Reissue the <b><code><span style="color:#3366CC;font-size:1.2em;">make</span></code></b> command. Where you successful? What does <code>make</code> do?</li>
<li>Issue the command as root: <b><code><span style="color:#3366CC;font-size:1.2em;">yum list ncurses</span></code></b>. What do you see? Issue the command at root: <b><code><span style="color:#3366CC;font-size:1.2em;">yum search ncurses</span></code></b>. What do you observe?</li> <li>In this case, you need to install the ncurses development libraries as well. Issue the following command as root: <b><code><span style="color:#3366CC;font-size:1.2em;">yum install ncurses-devel.x86_64</span></code></b>. Now issue the command: <b><code><span style="color:#3366CC;font-size:1.2em;">make</span></code></b></li>
<li>Some software distributed as source code can automatically install itself. Try this command:
<ul>
</ul>
</li>
<li>Test Run <b><code><span style="color:#3366CC;font-size:1.2em;">nled</span></code></b> from the current directory to make sure that it works. To exit this application, press '''ESC''', then type the letter '''q''' at the command prompt as the bottom left-hand corner and then press '''ENTER'''.</li>
<li>Why did copying the nled executable to '''/usr/local/bin''' allow the nled command to be run by name anywhere in the command prompt?</li>
</ol>
|}
#Perform this section in your '''c7host''' machine.#Issue the command: <b><code><span style="color:#3366CC;font-size:1.2em;">yum install elinks</span></code></b>#Now issue the command: <b><code><span style="color:#3366CC;font-size:1.2em;">yum info elinks</span></code></b>
#How can you tell if the elinks package has been installed?
#To remove the elinks package issue the command: <b><code><span style="color:#3366CC;font-size:1.2em;">yum remove elinks</span></code></b>
# Verify that the elinks package has been removed.# Use the same command to remove Also verify that the package application called : '''xchat''' and verify that the xchat package was removedis not installed.
# Place your Centos7 Full Install DVD into the DVD drive of your hostmachine.
# View the contents of the DVD drive using the file manager application (called '''nautilus'''). Change to the Packages subdirectory. What does this subdirectory contain?
# Use a graphical file manager to view the contents of the DVD in your machine.<br><br>'''TIP:''' If you are having problems locating pathname to your DVD, open a terminal, login as '''root''', issue the command: '''mount''', and look for a path-name containing your Centos Install DVD and use that path-name when required later in this section.<br><br># Open a shell terminal and use the Linux command '''cd ''' to change to the '''Packages''' subdirectory sub-directory (hint: similar pathname path-name as USB, but use "'''Centos 7 x86_64/Packages" ''' and use '''quotes ''' " " around absolute pathname full path-name since there are spaces within the pathname).
{| width="40%" align="right" cellpadding="10"
<ol>
<li value="911">Within the '''Packages ''' subdirectory of the Centos '''Centos7 Full Install DVD''', locate the '''rpm ''' file that contains the '''xchat ''' application(note the full path-name of the file). What do you think is the purpose of the numbers also contained in the filename?</li> <li>Issue the command: <b><code><span style="color:#3366CC;font-size:1.2em;">yum localinstall absolute_pathname_to_xchat_rpm_file"full_pathname_to_xchat_rpm_file"</span></code></b></li>
<li>Verify that the '''xchat''' command has been installed.</li>
</ol>
<ol>
<li value="1214">Use the yum command We will now look at how we can add different repositories to install the package called "x"our '''c7host''' machine. Were you able to install the file?</li><li>As root, issue the following command: <b><code><span style="color:#3366CC;font-size:1.3em;">more /etc/yum.confrepolist</span></code></b></li><li>Take a few moments to view the contents of the file. Do you see which repositories are used by the '''yum''' command? Write down the repositories in your lab logbook.</li><li>Before adding a repository to the yum.conf file, you need to see which repositories you want to add, and obtain the appropriate URL for those repositories. View the following link to see a general listing of repositories:<br>[ [http://wiki.centos.org/AdditionalResources/Repositories Available Repositories for Centos] ].</li><li>After viewing the To add this repository list, why should you be cautious with adding just any repository into your yum.conf file?issue the command:<br><b></licode><lispan style="color:#3366CC;font-size:1.3em;">Obtain the URL for the repositorywget https: '''SerNet Samba Repository'''//dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-6. You will use in the next command (see below)noarch.rpm</span></code> </lib><libr>To add the repositoryOr if you receive a error message, issue try the command: <br><b><code><span style="color:#3366CC;font-size:1.3em;">yuminstall epel-config-manager --add-repo URL_of_SerNET_Samba_Repositoryrelease</span></code></b></li><li>To enable the repository in yum, issue the following command: <br><b><code><span style="color:#3366CC;font-size:1.3em;">yuminstall epel-configrelease-manager 7--enable repository_name6.noarch.rpm</span></code></b></li><li>To clean-up the repository list (including downloading new applications in added repositories), issue the command: <b><code><span style="color:#3366CC;font-size:1.3em;">yum clean all</span></code></b></li><li>To verify that you have added the repository, you can issue the command: <b><code><span style="color:#3366CC;font-size:1.3em;">yum repolist</span></code></b></li><li>Now use the yum command to install the package called "x". Were you successful, and if so, why?</li><li>Perform a NetSearch to compare compiling source code vs using the yum command. What are the three major features that the '''yum''' command has that '''compiling source code''' doesn't?</li><li>Unused and unneeded software can present a security risk and ties up disk space needlessly. Find '''at least 4 other packages ''' to remove on your c7host machine(for example: '''sound & video''', '''games''', etc) that you're not using on your system, and remove them. Be careful to ensure that removing those packages does not also remove other software that you do need.</li>
</ol>
'''Answer Investigation 3 observations / questions in your lab log book.'''
 
= INVESTIGATION 3: LOOKING AHEAD =
We will continue with using shell scripts to create a Software Information Report that manipulates output generated by the '''rpm''' command. The '''sed''' and '''awk''' commands are very useful tools in shell scripting to manipulate text. In this lab, we will be using ''sed'' to allow the user to select certain portions from the rpm command (options -qi).
If you require <u>'''additional practice'''</u> in creating shell scripts using the "sed" utility, run the following command in your '''Matrix''' account: <ul><libr>'''/home/murray.saul/scripting-4'''</libr></ulbr# Perform the following steps in your '''c7host ''' machine:for this section.
# Open a Bash shell terminal and login as root.
# Use a text editor (such as <b><code><span style="color:#3366CC;font-size:1.2em;">vi</span></code></b> or <b><code><span style="color:#3366CC;font-size:1.2em;">nano</span></code></b>) to create a Bash Shell script called: <b><code><span style="color:#3366CC;font-size:1.2em;">backupVMpackageInfo.bash</span></code></b> in /root's home directory.
# Enter the following text content into your text-editing session:
<code style="color:#3366CC;font-family:courier;font-size:.9em;margin-left:20px;">
&#35; packageInfo.bash<br>
&#35; Purpose: Generates a report to displaying specified information of installed software<br>
&#35;<br>&#35; USAGE: ./packageInfo.bash[application-name]<br>
&#35;<br>
&#35; Author: *** INSERT YOUR NAME ***<br>
&#35; Date: *** CURRENT DATE ***<br>
<br>
if [ $HOME != "/root" ] # only runs if logged in as root<br>
then<br>&nbsp;echo "You must be logged in as root." >&2<br>
&nbsp;exit 1<br>
<code style="color:#3366CC;font-family:courier;font-size:.9em;">
&#35; Clear screen and use Here Document to display select on report items to read into variable<br>
clear<br>
cat &lt;&lt;+<br>
Available Package Information Items:<br>
<br>
cat &lt;&lt;+<br>
File "/root/package-info.txt" can has been created<br>
+<br>
</code>
<ol>
<li value="8">Save, set permissions, and then run that shell script for the application '''gedit'''. Did it create that report? Try running the script without an argument - What did it do? <li>Use the <b><code>wget</code></b> command to download, study, and run the following shell scripts on-line:<blockquote><b><code><span style=" pointer-events:none;cursor:default;color:#3366CC;font-size:1.2em;">https://scs.senecac.on.ca/~murray.saul/packageInfoGraphical.bash</span></code></b></blockquote></li><li>Try to understand what this Bash Shell script does.</li><li>#You have completed lab3. Proceed to Completing The Lab, and follow the instructions for "lab sign-off".</li></ol>
'''Answer Investigation 3 observations / questions in your lab log book.'''
 
= LAB 3 SIGN-OFF (SHOW INSTRUCTOR) =
{{Admon/important|Time for a new backup!|If you have successfully completed this lab, make a new backup of your virtual machinesas well as your host machine.}}
'''Arrange evidence for each proof of these items the following on your the screen, then ask your instructor to review them and sign off on the lab's completion:'''
::<ol><li><span style="color:green;font-size:1.5em;">&#x2713;</span> '''centos3''' VM:<blockquote><ul><li> '''Archived ''' files created::<span style="color:green;font-size:1.5em;"/li></ul>&#x2713;</spanblockquote> Unnecessary</unused packages have been deleted (list at least 4, and show that they are no longer installed).::li><li><span style="color:green;font-size:1.5em;">&#x2713;</span> 2 '''c7host''' Machine:<blockquote><ul><li> '''Four unnecessary packages removed'''</li><li> '''xchat''' package installed with yum command::<span style="color:green;font-size:1.5em;"/li>&#x2713;</spanli> 1 '''One repository added ''' for yum::<span style="color:green;font-size:1/li><li>Creation of your bash shell script called '''packageInfo.5em;"bash'''</li></ul>&#x2713;</spanblockquote><li> License of the nautilus package::<span style="color:green;font-size:1.5em;">&#x2713;</span> Creation of your bash shell script called '''packageInfo.bashLab3'''log-book filled out.</li></ol>
==Preparing for Practice For Quizzes, Tests, Midterm &amp; Final Exam ==
#What is the purpose of booting into single-user mode?