COSC1133 Assignment 1
It is a common systems administration task to be able to install and configure an operating system.
While the process of installation of an operating system can be somewhat simplified by the fact that
the media you boot off is also the storage media for the system (on a server or a laptop / desktop,
these are different media), the considerations are not that different.
It is also common for system administrators to have to document the systems they create. For
example, how to create or use a particular kind of system. As such, the main deliverable for this
assignment is a pdf document that explains how to achieve these tasks, including adequate
screenshots, images, diagrams, writing or other media. You will also need to submit a Docker
container that contains a portable environment that can be deployed to many systems. Don’t worry
too much about the Docker container at this stage as this will be explained in the course material
closer to the due date.
Your pdf should contain clear instructions and diagrams / images that explain unambiguously how
to achieve each task. Note that all images must be clear and well labelled so they would be
unambiguous to someone learning about Linux.
Your documentation should be sufficiently detailed so that someone reasonably familiar with using
computers but has not used Linux or the raspberry pi before can follow your instructions.
Course Learning Outcomes
This assignment covers the following course learning outcomes:
CLO 1: Demonstrate knowledge of the role and responsibilities of a Unix system administrator
CLO 2: Install and configure the Linux operating system
CLO 3: Manage the resources and security of a computer running Linux at a basic level
CLO 4: Make effective use of Unix utilities, and scripting languages
CLO 5: Configure and manage simple TCP/IP network services on a Linux system
Referencing and Academic Integrity
All work submitted by you must be your own work and you are required to submit with each
assignment a reference list of ALL the references you have used with the assignment, including
courseware. We will check your report against other reports and online sources using the Turnitin
tool and any cases we are concerned about will be referred to the appropriate authority within the
school of Science for further action.
You are required to agree with the RMIT assessment declaration (available here) prior to submitting
your work. Any violations of this declaration will be pursued thoroughly.
Performing tasks such as writing to the SD card or installing software must be done using terminal
applications, editing configuration files, etc, whenever that is possible. You must use dd to write
images to a SD card and you must use vim or vi for editing of any configuration files. In the Unix
world, nano and emacs and other editors are not guaranteed to be installed but vi is largely
universal. This is in-line with standard Unix certifications. Eg: you cannot get your Redhat
certifications using any other editor than vi / vim. If you do not have a Linux desktop system at
home, we have provided a live disk you can boot off. The best way to do this is via the discussion
board set aside for tutor assistance. Although please be aware that your tutor is not there to do your
assignment for you and nor are your fellow students. There are intended issues and complexities
involved in solving each task in the assignment. It is up to you to find fixes and solve problems.
There is very little that is straight forward in systems administration.
Please note that if you have stumbling blocks along the way, do not claim that the assignment is
“not doable”. All tasks in this assignment are doable because we have done them. The point here is
to use the resources available to you to help you to solve the problems you come across.
Unix Survival Guide Quiz (5 Marks)
By the end of week 2 you must complete the Unix survival guide quiz. This quiz is set to be
completed earlier as this will set the base minimum you need to know coming into this course. If
you struggle with the quiz, then you will struggle with this course.
The link to the form that you need to fill in to complete this assessment is given in Canvas.
Setup the Environment on your Own Computer (15 Marks)
You are to setup the environment on your desktop / laptop machine that will make it easier to work
with your raspberry pi. In order to do this, you will need administrative access to the machine or
otherwise you won’t be able to complete the tasks.
For MacOS, you will need to install homebrew. Then you will
need to install via homebrew the packages for pv, nmap and tigervnc. You will also need to install
If on Windows 10, you will need to install a WSL (Windows Subsystem for Linux) distribution. We
don’t mind which you use but Ubuntu and Debian seem to be better tested than Fedora and so that’s
what we recommend.
If you are running a version of Windows prior to Windows 10, you will need to install cygwin
rather than WSL but the tasks you need to do will remain the same as below.
In either case, you will also need to download and install Xming or VcXsrv for graphical
connection with the Pi to work. Within WSL you will need to install tigervnc and nmap.
You will need to explain how to install the same software as above, being tigervnc and nmap. If
you’ve got a linux system up and running you’ve already shown some of the required learning for
this part of the assignment.
Install RaspberryPiOS on a Raspberry Pi 3B+ or 4 (10 Marks)
Retrieve the disk image for RaspberryPiOS (any of the desktop images will do – not lite) and install
it to your raspberry pi. This will be your computer for working on all exercises in this course until
the end of the study period. You should download whichever version of Raspberry Pi OS from you would prefer but please note that you
must not use the NOOBS version or any other operating system other than the ones listed on the
linked page. We would recommend the “Raspberry Pi OS (32-bit) with desktop and recommended
As part of this, complete the following tasks:
• Write the disk image to your Raspberry Pi (we want you to use dd – if you are on windows
you will need to use one of the provided isos to boot into first – details and support will be
provided in the week 3 lab)
• Once you have this installed on the Pi and restarted, you will want to verify the address of
your Pi on the network. Use nmap to do this using the instructions provided in the lab
• Connect to the pi and uninstall realvnc from the pi and install tigervnc.
• Start the vnc-server on the pi and enable it to run on each boot, ensuring a reasonable
graphical environment when connecting.
• Connect to the pi using the installed vnc viewer on your computer.
You’ll now be able to use either the terminal or vnc to login to your pi and do your work for the rest
of the semester.
Set Up a RAID Configuration (10 Marks)
Please note that for the following exercise you will need two USB keys. This activity will wipe the
two keys so ensure that any data you have on them is backed up.
Using two USB keys of the same size, connect these to your raspberry pi. You will set these up as a
RAID mirror using mdadm (RAID 1). Normally we only would make something a mirror if we
really care about what is on there so you should also follow the tutorial on setting up a basic shell
script to send pushbullet notifications for when one of the disks in the mirror fails.
Install Docker (5 Marks)
You must follow the official instructions provided on Docker’s website to install Docker
community edition to your Raspbian install (with small modifications). Your user must be able to
use Docker without typing “sudo”. If you do not show in your installation guide that you can run
Docker without being root, half the marks for this requirement will be deducted.
Please note that the rest of the tasks listed here are not required to be documented in your
Install the following packages in Docker (15 Marks)
Pull the official image for centos 8 as your base container. We have chosen Centos 8 here as the
commands are a little different to those in Raspbian. This is to give you some variety of experience
of different Linux distributions.
Please ensure you commit your container fairly often in case there are problems with your container
at any point. You should use yum in most cases to install a package unless it is not available in this
• wget (1 marks)
• man page support (1 marks)
• Install the latest clang for c and c++ programming. (1.5 marks)
• Install clang-format and clang-tidy (1.5 marks)
• vim (1 marks)
• nginx(1 mark)
• git (1 marks)
• nmap (1 marks)
• berryconda python install (version 3) (2 marks)
• rr (reverse and replay – custom debugger for c and c++) (1 marks)
• sshd (1 marks)
• zsh (you must compile this from source code – installation using a package manager will get
no marks for this requirement) (2 marks)
Berryconda must not be installed in root’s (or any other) home directory or any other home
directory. It must be globally accessible by all users and must be installed in a sensible standard
location. If you don’t know what that is, do some research and find out (it’s covered in the course
material). You may of course ask questions to the course staff about this.
Make the following Configuration changes in Docker (20 Marks)
Please note that this section is considered more difficult to get and may require you to do
additional research to figure out how to get them to work.
• Expose nginx so that if you connect with a browser using a port that is specified at image
creation, you will connect to port 80 in the Docker. (1.5 marks)
• Create a user called fred who has access to root commands via sudo. Their home directory
should be /home/fred. Please note that we don’t care about the password you use, as your
Docker container should drop me in as the default user (root) when I run your shell. The
user ‘user’ should have the Berryconda executables in its search path by default and their
default shell should be set to zsh. The user “user” must be able to use sudo to gain root
access. (2 marks)