=====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. {{http://upload.wikimedia.org/wikipedia/commons/1/12/GRUB_screenshot.png}} [Source: [[http://en.wikipedia.org/wiki/GNU_GRUB|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=== * {{http://kernel.org|Main website}} * {{http://kernel.org/faq|FAQ}} * {{http://kernel.org/mirrors/|List of mirrors}} ====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=== {{:opus:spring2012:tgalpin2:repositories.png}} 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=== {{:opus:spring2012:tgalpin2:gparted_ex.png}} 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. {{http://upload.wikimedia.org/wikipedia/commons/a/af/Gdebi.png}} [Source: [[http://en.wikipedia.org/wiki/GDebi|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. {{:opus:spring2012:tgalpin2:dependencies.png?direct&|}} ====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.