Table of Contents

hpc2 Keywords

make/Makefile

Definition

make is a Linux program that updates parts of a large program when it is determined that those parts need to be recompiled. Once this happens, make will issue the commands needed to carry out the needed processes.

In order to use make, a makefile is needed. A makefile contains information that details how the parts of a program are related, and how they should be updated. make will search your directory for “Makefile” or “makefile.”

Demonstration

tyler@aleron ~/example $ ls
Makefile README examplesrc.c othersrc.c examplelib.h
tyler@aleron ~/example $ make

GRUB (Linux Bootloader)

Definition

GRUB, whose name is derived from Grand Unified Bootloader, is a bootloader with multiboot functionality, which means that it can load multiple different systems at start up. A bootloader is a program that runs at startup and loads the kernel of the operating system, which then loads the rest of the operating system.

GRUB is highly configurable, with many different options available. Basically, one can choose a specific operating system out of how ever many they have loaded on to their system. Even further, if one of these operating systems has multiple versions of kernels, you can choose which version you'd like to boot up with. Also, GRUB provides a simple command line like interface during boot up.

Demonstration

Below, GRUB running during boot up.

[Source: Wikipedia: GNU GRUB]

kernel.org

Definition

kernel.org is the Linux Kernel Archives, the website where one can find Linux kernels for download. The newest stable version, the newest unstable version, and past stable versions are available here. You can download installable patches, view changelogs, and download the full source code for each kernel, should you want to compile it yourself. It goes without saying that if one wished to manually update their Linux kernel, here would be a good place to start.

Demonstration

Added Repositories

Definition

The added repositories on your system are what your system draws on as software sources. They are used in the updating, repairing and installing of packages on your system. Mainline distributions of Linux have their on repository that installations of their distribution have installed by default, and often times, they have repositories from other distributions that their OS is based on (example: Ubuntu has repositories for Debian on their systems, and Mint has repositories from Ubuntu and consequently Debian). You can add (or remove) whatever repositories suit the needs of your system.

Demonstration

One can add or remove repositories through Synaptic Package Manager, as shown above. Go to Settings → Repositories.

Linux swap partition

Definition

During the initial partitioning of the hard drive during the installation of a system, a Linux swap partion (linux-swap) is needed. This swap partition is an extra amount of space on the hard drive that is set aside for the system to use when RAM is not readily available. Without such a thing, a system may become unstable, depending on its use. Use of this swap space will free up RAM for prominent tasks within the system, making for faster processing, while the tasks being used less at the time are put in to the swap partition, assuming it is taking up space in RAM. Conventional wisdom dictates that the amount of storage dedicated to swap should be twice as large as the amount of RAM you have, though this is by no means an objective standard.

Demonstration

This is reusing a picture, but you can plainly see the amount of memory allocated to swap in Gparted.

Now, this is how tasks are swapped:

Task 1 is being run, using memory in RAM
Task 1 is now in standby, not priority task in system, still taking up RAM
Task 2 is being run as a priority, needs more RAM than is currently easily available
Task 1 is swapped to the swap partition on the disk
Task 2 uses RAM to execute faster
etc. etc.

Software Package

Definition

A Software Package is a specific piece of software that a system can install and uninstall using a package management program such a Synaptic or Aptitude, as opposed to manipulation through a file manager. Packages are useful, because they contain metadata that can be read by your package management system such as description, version name, and the other packages needed in order for the given package to work. Ultimately, the use of packages makes updating and maintenance relatively simple and efficient.

Demonstration

A picture of GDebi, a package manager that deals with .deb packages, installing a package on Ubuntu.

[Source: Wikipedia: GDebi ]

Dependencies

Definition

Dependencies refer to the software packages a system needs in order to install and use a given package. Dependencies are often made known when the user prompts the system to install a given package, due to the metadata provided with it. Often times, a package management system can go and fetch the dependencies for a package when the installation prompt is made. Naturally, all of these situations use the repositories added to your system.

Demonstration

A window showing the dependencies needed for a selected package in Synaptic.

dpkg

Definition

dpkg is a low-level packaging tool found in Debian-based system. As is such, it is used from the command line and it manages .deb packages on the system. Being a lower-level tool, it is not used as often as often as tools like apt, which are much more user-friendly, but dpkg comes in handy when you need (and are able) to get your hands dirty within the system, so to speak.

Demonstration

Use of dpkg:

Install a package:

tyler@aleron ~ $ dpkg -i examplepackage.deb

Install a list of packages:

tyler@aleron ~ $ dpkg -l examplepackage.deb otherpackage.deb ohlookanotherdeb.deb

Remove a package:

tyler@aleron ~ $ dpkg -r examplepackage.deb

hpc2 Objective

hpc2 Objective: Demonstrate knowledge of Linux & Open Source

Definition

The only way to have true knowledge of the world of Linux and Open Source software and philosophy is to have hands-on experience with it. One must understand the importance of the availability of code that is free to use and modify.

Method

Well, shucks. Why don't I just talk about my experience with Linux and Open Source software for a bit, yeah?

Measurement

I've been using Linux since I began my time here at CCC, and I've been using open source software for longer, whether or not I realized the implications behind open source. First and foremost, from this, I've learned the utility of open source software, and the supreme convenience of having powerful, effective software that met my needs, and could be modified further to meet specific needs, provided I had the knowledge and the inclination. Many of these open source solutions provided a superior end product to their proprietary counterparts.

Linux has provided me with greater insight to the inner workings of a computer's operating system, along with an alternative, that is superior in various ways, to the same OS that has been forced on me for most of my life. It, too, allowed me to have a system which suited me best, and, more importantly, did not require a significant amount of technical knowledge to achieve that system. Through manipulating the system through a terminal, altering the packages on the system, stylizing and experimenting with various desktop environments, a greater understanding of Linux is gained, along with a better general understanding of computers. This is demonstrated in myself through my various Linux related troubleshooting projects and general discussions.

Analysis

I think my goal is met. At the very least, my laptop should be sufficient evidence of my knowledge on the subject.