Linux Installation for Newbies (UNetbootin USB Flashdrive)

One of the main reasons to use Linux is that you want a more secure system that is less susceptible to virus, malware, and critical failure. Another great reason to use Linux is that you can accomplish things more quickly in a much more efficient way than with other platforms. An excellent way to install Ubuntu is with software that prepares a USB drive to be able to install Linux on another computer.

Install Ubuntu

Download the Installation ISO and create a bootable UNetBootIn Disk

The steps of this blog will show how to:

  1. Download the Ubuntu iso You want (I recommend 14.04)
  2. How to Find Out if Your Computer is 32bit or 64bit
  3. Prepare a USB disc for UNetBootIn and OS installation

In case you were wondering what an ISO (Eye-Ess-Oh) is; it basically is a way of designating a single file so that it can be used to boot or load complex media. An iso is a single file that represents many files that would be on a DVD disc (to be played as a movie originally.) This is a way of storing files on a DVD disc so that you can put it into a movie player and have the movie automatically load by that machine and start playing. It also is a way that you can put a DVD into a computer and have it automatically boot an operating system without having to initiate this process with any entered commands. It also turns out that this type of file can be loaded onto a USB drive to make a “Bootable Flashdrive.” Keep in mind that there are still some old motherboards out there that may not be able to boot from flashdrive without flashing the BIOS/firmware. There are software programs that you can install that will enable you to activate or manipulate iso files as well. A popular program for Windows that can do this is Daemon Tools. A truly free version can be found at Softronics. it is often represented as “.iso” which is a file extension. A way you may see this on a computer is “somefilename.iso” I highly encourage people to look into the inner workings of their iso files and see exactly what it is they are dealing with. There are many versions of software like this for Linux at the end of this article.

The version of Ubuntu that you choose is dependent on your hardware and the sort of system you want to run. If you are just getting started I recommend the Ubuntu client called Trusty Tahr 14.04 LTS. LTS stands for Long Term Support. This means that it is officially supported starting April of 2014, (hence the 14.04.) If you want a different Ubuntu installation iso other than the ones I recommend working with, you can check out Ubuntu’s releases page.

How to find out if my windows computer is 32 or 64 bit:

  1. Open the Start Menu
  2. Right Click on Computer (or My Computer for older versions)
  3. Left Click on Properties
  4. Look under System (if it says x64 then it’s 64 bit, if not; then it’s 32 bit)

How to find out if my Apple OSX computer is 32 or 64 bit:

  1. Click on the Apple icon in the Menu Bar
  2. Select About This Mac
  3. Click More Info
  4. Open the Hardware Section
  5. Find the Processor Name
  6. Compare to this list:
    1. Intel Core Duo or Solo = 32
    2. Intel Core 2 Duo = 64
    3. Intel Xeon = 64
    4. Intel Core i3 = 64
    5. Intel Core i5 = 64
    6. Intel Core i7 = 64

How to find out if my Linux computer is 32 or 64 bit:

  1. Open Terminal (Ctrl+Alt+T)
  2. Type in the terminal:

1 uname -m.png

    1. OR for more information

2 lscpu.png

    1. If i686 then 32-bit hardware and can only run 32-bit OSs
      1. Use uname –help for more info
    2. If x86_64 then 32 or 64-bit version of Linux can be installed

How to tell if my chipset/motherboard/hardware is 32-bit or 64-bit with no OS installed:

  1. Boot into the BIOS
    1. You may have to Google the procedure for this on a per/manufacturer basis. Each company/motherboard has its own procedure. Often you can read the text during bootup and look for commands to get you there.
  2. Find your processor information
  3. Reference your processor model at the manufacturer’s website
    1. Intel Processors
    2. AMD Processors
    3. Macintosh PowerPC Processors
  4. Sometimes you can save yourself some time by just looking at the processor if you are comfortable removing the heat sink. This is much more difficult with most laptops or tablets, so this is only recommended if you have a tower chassis.

If you are capable of running 64 bit, do so. If you are not, then you are stuck using a 32 bit version of the OS. This is generally considered much less secure, but will still be more resistant to virus and malware than any version of Windows. I will post the links again for ease of use:

 

Now that you have your iso, it is time to find some hardware to load on to. Your best options are a DVD disc, or USB/Thumb/Flash drive. This is how we get the OS installed onto a freshly formatted Hard Disk Drive or Solid State Drive.

  • Find a USB Flashdrive with more than 1Gb of space on it.
    • The most versatile flashdrives for OS installation are 2Gb and above.
    • At the time of this writing there is no need for a drive larger than 8Gb (2Gb – 4Gb would do for just about any common application)
  • Download UNetbootin

Type in these commands one after the other.

3 install Unetbootin.png

Create your bootable OS installation USB drive

  1. Open UNetbootin
    1. I prefer using terminal in Linux for this

4 open unetbootin.png

    1. Select the Diskimage radio button (Alt+i)

5 diskimage unetbootin.png

    1. Click the … button
      1. If you do not want to use a mouse
        1. Tab >> Tab >> Tab >> Spacebar
          1. You may have to select the program which can be used with the Tab+Alt hotkey. There is a subtlety with this command where you depress and hold the Alt key, and then tap the Tab key to cycle through all open programs that may be open.
      2. Find the iso image you downloaded in the previous steps
    2. In the Unetbootin Drive: dropdown menu (Alt+v)
      1. Find the USB drive you want to install your OS with
        1. It is safer to use a totally clean drive (freshly formatted)
          1. For detailed/comprehensive instructions for how to completely clear a flash drive and be certain there is no residual software on it, check out my instructions:
            “How to Completely Reformat a USB Drive”
    3. Click the OK button to create your installation disk

Now that you have the OS iso on your USB drive; unmount your USB drive from the current machine and put your USB drive into the machine you want to install Linux on. Turn the new machine on and access the BIOS to ensure that you have USB boot option enabled. Do what it takes to boot from the USB drive (questions about this can be answered by looking up the specific BIOS, motherboard, or chipset that you have. Perhaps a search in google like; “Asus USB Boot instructions” would yield a good answer.) I recommend a complete and thorough reformat and full installation. Only do this if you are willing to wipe all files and programs from the HDD in question. I recommend this even if the HDD or SSD are fresh from the manufacturer out of the box.

Back to the alternate ISO manipulation programs:

Each of these programs has different strengths and weaknesses. I am basically listing them so that you can learn how to view, understand, and manipulate iso files.

CDemu

CDemu-terminal.png

After running the cdemu -h command you should see the CDemu program load in your Terminal and show this helpfilecdemu -h.png

The next ISO program is called Gmount-ISO.

Gmount-iso

gmount-iso-terminal.png

After installing gmountiso you can search for the program with Linux’ search feature found in the upper left corner. The icon looks like this:

Search Icon.png

Search for “Gmount” without the quotation marks and open the GUI to see the program like this Image

Gmount-iso.png

A 3rd program worth looking at is called ISOMaster

Type this command in Terminal to install ISOMaster

 

install isomaster.png

After installing isomaster you can start the program directly from the Terminal by typing isomaster. This will then load the GUI. Notice when “X’ing out of the program” that it then also closes the program in the Terminal as well resulting in the feedback “Quitting.”

load isomaster-terminal.png

ISOMaster GUI image.png

A 4th program is called Furius ISO Mount Tool

Furius Mount Tool Install-terminal.png

Furiusisomount GUI.png

 

 

Blog Writing in Google Docs (How to use the Linux Terminal Font)

While I am writing blogs about using Linux, it became quickly apparent that the font for the Linux Terminal would become useful. Every-time I make a post to show what command I enter into Terminal I wanted to show it exactly as it appears when I type it into terminal. This could avoid any issues of differences between i’s and L’s etc.

The first thing I did was install and activate the Extensis Font App by clicking the Add-ons tab and selecting the Get add-ons… In case this is tricky for you; this link may prove useful Extensis.

2 Google Docs Add Ons - Extensis.png

Search for and find the Extensis application and enable it.

3 Enable-Install Extensis.png

Once you click the + Free button you’ll have to allow all the permissions as you see fit. I’ll let you determine the best way for you to do that. I consider that to be a rather personal decision regarding your own information and privacy etc.

Once Extensis is installed and enabled for your Google Docs account, you may have to go back in and manage it. This is a rather deceiving thing to do, as Managing the App literally means deleting/removing it, or other technical things of that nature. I wanted to actually enter the app and enable more fonts. (later finding that is not necessary.)

** Unnecessary Step **

3 Enable-Install Extensis.png

If you are curious as I was; go ahead and select the Add-ons tab again and find the Extensis App that you installed.

4 Manage Extensis App.png

Once that loads on the right side of your screen you’ll want to select the font that is best for your application. I found that the scrollbar on the right did not work. I was able to work around this flaw by selecting the first font on the list and hold the down arrow until I found the fonts I was looking for.

5 Extensis - Alphabetical Sorting.png

Pleasantly surprised I found the Ubuntu font group. After playing around with them I found Ubuntu Mono to be precisely the font I was looking for. I wanted to enable all of the Ubuntu fonts just to be certain I had all the tools I would need to keep blogging about Linux. I realized then that this was merely a list of the fonts. There must be some other way to enable them. Back to my application for the font…

6 Extensis Scrolldown to Ubuntu.png

** A Possibly Necessary Step **

As a precautionary step; I re-enabled the English language, which supposedly would then enable different font packages. I found a discussion that some frustration over the topic, but also included a solution. So I just did it to be sure my font would be available.

1 Google Docs Fonts - Languages.png

Once I set the language to English (United States) I was then able to highlight text and change the font to an expanded list. Perhaps this refreshed or loaded my additional fonts? I’m not sure but I was able to select the font I wanted most after doing this.

** Back to Known Necessary Steps **

What I was trying to do was create a box with dotted lines around it as is rather customary in Linux forums to represent what is typed in a Terminal window for demonstration purposes. In that box I wanted to use that Linux Terminal font. The procedure to create this box that I use in Google Docs is as follows:

Insert Drawing:

7 Insert Drawing.png

In the next window you will want to create a rectangle to modify and give that distinctive look of a picture that adequately represents a Terminal Command.

8 Drawing Shapes Rectangle.png

This gives you a cross-hair which is used to click and drag to define the shape and size of your rectangle.

9 Click Drag - Make Rectangle.png

Once you’ve created a rectangle you can then modify its properties to make it just the way you want it. I think it looks rather good by changing the color to dark gray3:

10 Fill Color Dark Gray 3.png

Once the color of the rectangle is set, you can add dotted lines. I like the Pixel Weight px2 particularly well:

11 Pixel Weight px2.png

The Line Dash 3 also seems to make the box look distinctive in the blog, and seems somewhat standard in the Linux Blogging world. Anyways, I like it like that, so I choose the third one down:

12 Line Dash 3.png

The next step is to put something in that box. It is not really all that obvious at first how to put text in the box. I initially wondered if it was even designed to hold text. Perhaps I would have to add a text box on top of the image I just created… That is not the case. Google made this part simple for us. Just double click in the box and type away!

13 Double Click to put cursor in the box.png

Once you have some characters in the box, highlight them and we get to see if we can give it that special Ubuntu Mono font that we want so much.

14 Highlite Text.png

Now that you highlighted your text you want to change the font. The box is not labelled as such, but it is the 2nd box from the right. In the Image above it currently has the font title Arial. Select this box to get a dropdown menu. At the bottom of the menu you will look for “F+ More fonts…” Options at the bottom of that search menu.

15 Select Font Dropdown Box.png

The next window that opens up is basically a search app for fonts. In order to utilize the fonts we want, we first have to find them on a list and activate them.

16 Search Fonts Ubuntu.png

In this menu, I only had to type ubuntu in the search field to get exactly what I was looking for. Take note the check boxes next to the fonts.

17 Enable Fonts as Needed.png

Make sure to enable the fonts you would like to be able to use in your Google Documents. In my case, I enabled all 3 of the Ubuntu related fonts.

 

 

You still have to select the fonts one more time to actually change the font in the gray box you created.

18 After Enabled - Select Font.png

Back at your gray box with highlighted text, select the font drop down box, and notice that the fonts you enabled are now at the top of your list. This is really convenient for me, as I do not need to search for it in my list. It is right at the top.

19 Ubuntu Mono Font Activated.png

Now that I selected the Ubuntu Mono font, it changes the text in my box to look just as I want it. I opened a Terminal Window to compare, it was identical! Just what I wanted.

lblsk output.png

Completely satisfied with myself I hit Save and Close and finally have a box that looks just the way I want with that special font I was looking for. I now have the ability to write my blogs in Google Docs and include the images to represent Linux Terminal Commands in that characteristic manner I was looking for.

20 Google Docs Ubuntu Font.png

Why You Should Ditch the GUI

The Graphical User Interface (GUI) is probably right in front of you 80% of your day (not counting sleeping hours). If you use a smartphone, tablet, laptop, computer, gaming console, etc. then you have been using a GUI (pronounced goo-ee) and may not have known it. The GUI may seem like your friend. It is pretty, offering all sorts of entertaining imagery to tantalize your senses. This is the fun side of computing. There is a time and place for this distraction with the computing experience. Other reasons for using computers, are to conduct business, do research, run calculations, etc. Almost all other reasons to use a computer that do not have to do with entertainment, are done faster, more efficiently, and more effectively through what is known as the Command Line Interface (CLI). A shell is a more broad concept that contains both of these modes of interacting with data. The shell allows both GUIs and CLIs to access the Operating System (OS) files and programs. The goal of the shell is to create the best workflow possible for the intended task. When people reference “using Windows” to accomplish a goal while using one of the distributions of Microsoft Windows, they are often referencing either the Windows Shell or the visual desktop environment. If you were to ask yourself if your GUI creates the best possible workflow for your intended task, and you knew how to use the CLI with as great a degree of fidelity as you use the GUI, you would most likely say that the GUI holds you back. Some people actually do operate optimally with the GUI. It could be said that the GUI is optimal for a person in the early, most basic, learning stages of getting familiar with how a computer works. For those people, I recommend looking at the list of alternate shells or GUIs for Windows. (I personally love BlackBox (BB) with themes from DeviantArt and an active community. Check out also active fork binary BBZero, or Openbox for Linux users.) However wonderful these alternate GUI shells may be, most people would benefit greatly from learning how to ween themselves off of this addictive computing medium.  Just as it can be difficult to ween children off a milk bottle or sippy cup, it can be difficult to make ourselves accustomed to using the CLI. Challenge yourself to learn your favorite OSs CLI and you will be thankful you did.
My recommendation is to use only CLI terminal environment for 6-9 months until you are fully proficient in its use. Once you have it fully committed to muscle memory, and have reflexive conceptual processing capability while using computers with the CLI, then it would be appropriate to utilize both environments for greatest effect. It does not matter all that much if you use Windows, OSX, or Linux; though I recommend Linux as this notion is accepted throughout the Linux Community. As the notion is well respected and promoted among most Linux Users, they would understand your plight if you were ardently attempting to accomplish a goal solely through the CLI and were seeking help to that effect. If you asked for help in the OSX or Windows community, you may often have to win 3 or 4 successive arguments with people before they would help you accomplish your goal in the manner you hope to achieve it in. Simply put; by and large, the Linux community supports the ideals and understands the value of learning, or accomplishing things solely with the CLI.

Reasons:

Professionalism When someone asks you to accomplish something with a computer, if you are able to open a terminal, click on the keyboard for a few seconds/minutes, and explain that the task is finished; you have elevated yourself in that person’s eyes as competent, knowledgeable, and professional. They will know that in the future they can rely on you to get the job done. Effectively you have just worked computing magic in their eyes. The vast majority of people will find it amazing that you can accomplish things with such confidence, skill, and timeliness. Not to mention that you will be able to accomplish things you may never have done before in a fraction of the time it would take a computer Lehman to look it up, ask for help, and implement something in a step by step infantile manner. Furthermore, in the event that you do have to look something up, get advice, and implement a procedure; you will have a MUCH deeper understanding of what you are doing, or what your helpers are attempting to convey to you as you go about accomplishing your goal. All of this reflects on your professional demeanor, attitude, and image.

Speed Typing is a must have skill for a computer user. This skill is largely being ignored as the smartphone and tablet takes over; literally leaving our electronics users without a keyboard. By this I mean a physical keyboard that is designed for two human sized hands to utilize in a proper typing manner. When a computer user reduces themselves to typing with only one finger; often their thumb, (at least they are using that evolutionary advantage) they are typing at approximately 40% their max potential speed. Compare your own speeds to see for yourself. On a more practical note pertaining directly to computer users equipped with keyboard and mouse; the user that has to take their hands off the keyboard to utilize the mouse is operating more slowly. In one study involving short time periods, the CLI user was 20% faster than the GUI user. Not only do typing skills affect your speed, but being able to operate without looking at things allows you to transcend the clumsy limitations of the physical realm and move into conceptual space. When your thoughts and actions are a result of utilizing both creative and logical capacities at the same time, you will find that you are able to solve problems that other people did not even know existed. When you achieve this state, you will expand your awareness of problems and solutions that allow you to operate at much higher speeds and participate in projects that only select few people will be able to participate in. As this somewhat unbiased article points out, you should employ the techniques that work best for you. I do beg the question however; if you have never tried to operate much more in the non-mousing way, and only ever used one method (the mousing way), then how could you know for sure which is best for you? It is worth expanding your horizons and learning a new set of skills and way of understanding ways to interface a machine you use for a significant portion of your life. You could elevate yourself to a higher state of computing. Some interesting studies on speed are the Keystroke Level Model (KLM), Goals Operators Methods and Selection (GOMS), or Model Human Processor (MHP). In a way that perhaps only I would see as associated; for years I have entertained a game notion that on certain mornings I should unclothe myself, wash, perform my morning routine, and clothe myself again with only my off hand. This exercise is both satisfying in regard to my ability to perform in the event that my good limb is injured, disabled, or removed; but also under the assumption that I derive value from being reminded of the humility that I am blessed to have full functioning capability and command of my normal resources. I observe some people in society perform tasks that make it apparent that they have disabilities. This observation reminds me that it is worth my while to retain an attitude of sympathy or empathy about their method of solving problems or accomplishing goals. I feel much the same way regarding people who do not have a more keen understanding about computers. It is worth retaining a notion of humility in entertaining even the more clumsy method of accomplishing computing goals. At least they are solving problems rather than creating them… maybe; we hope.

Knowledge There is something about using the CLI that warrants a greater understanding of the underlying programs, capabilities, and resources that you can draw on to get computing tasks done. Rather than tracing our eyes across the computer screen and clicking a mouse button to hunt and find a conclusion, a CLI user will often sit back, look up, and experience a Eureka moment followed by a flurry of motion and typing. A GUI user tends to ask a CLI user how to accomplish something when they get stuck. A CLI user tends to either research and look up a solution to mimic from someone else, write the code themselves, or possibly modify hardware to accomplish their goals. This results in faster recall, more thorough understanding, and a profound adaptability regarding a multitude of potential tasks. Not only can you know what to do before you do it, but you are also able to describe to someone else; how you have done it, how you will do it, or how one could go about doing it even if you have not done it before. Essentially what this means is that rather than asking someone else how to accomplish things all the time, or relying on them to do it for you; you can use your mind, look some things up, and develop a deeper understanding of how computers work and how you can control the computing environment in a fundamentally different level. The sort of knowledge that it takes to develop this deeper understanding of the computing environment could be described as Tacit Knowledge. On one hand, it could be said that all software that we use is a result of someone creating a solution or group of solutions to problems or desires. On another it could be said that we use software to solve problems or satisfy desires. Somewhere in that mix, someone thinks of a way to solve a problem. The person that invents a new way to solve a problem or satisfy a desire in the computer world is employing Tacit Knowledge. The person who employs software that was created by someone else, or utilizes a technique thought of by someone else is employing Explicit Knowledge skills. It could be said that a computer expert develops Tacit skills, while a Script Kiddie or novice user develops Explicit skills. Both are relevant ways to solve problems or accomplish goals… In the event that no-one has solved that problem before, or in the even that a person who has solved that same problem is not accessible for conversation or never documented their procedure for the world to see; a novice user would have no recourse and would just give up … or be forced to develop Tacit Knowledge about the computing environment. Even in the event that not a single person in the world has ever solved a particular problem before, an expert user with Tacit Knowledge of the computing environment would be able to persist and create a solution to accomplish their goal.

Retention One of the ways that humans learn how to respond to new challenges is a 3 part equation called The Power Law of Practice. It roughly states that reaction time when performing a novel task is largely determined by practice iterations that were performed in the past with closely related skills. We could say that the computing environment (either CLI or GUI) are one of the constants each conveying their own benefits. Basically this makes Practice Time very important that lends well to a concept called Automaticity. A GUI user spends the bulk of their Practice Time learning to move their mouse around and depressing the mouse key when they think they are on the right track. A CLI user can think for a moment, then type exactly what they want to do, and it just happens. The CLI user also does not need to rely on visual evidence that their result was achieved. Often GUI users are confused by activities in the CLI environment because they are waiting for visual cues to affirm that their intended result has been carried out. A CLI user is more comfortable assuming that their will has been carried out. The CLI user does not need to practice needless movements of the mouse, nor are they bound to the resulting muscle memory that allows them to get tasks done. Because the movements on the keyboard are more standardized, than the necessary movements of the mouse; the muscle memory that is required to accomplish a task is more standardized for the CLI user than for the GUI user. A GUI user is often limited to their particular instance of the graphical environment, whereas if they were to begin using someone else’s slightly customized version of the same OS they would experience a loss of speed and confidence as they have to rely on their eyes to affirm that they are in the right place and clicking on the right thing. Not only does the CLI user get to rely on a more standardized and confident set of inputs, but often the CLI user is able to accomplish a goal from anywhere within the system; or accomplish many simultaneous or normally queued tasks with rapid fire succession without the need to slow down or pause. Any person with MUD gaming experience knows the astounding number of successive commands that can be entered and carried out in a short time. I highly recommend that someone new to CLI environments download a MUD client, find a favorite MUD, and become proficient at navigating that world with text commands. If these concepts resonate with you, then you most likely have a keen understanding of the subtleties of Psychomotor Learning.

Operate Conceptually Some tools allow us to accomplish tasks on a higher level. Automation is a wonderful concept that has special meaning in the computing world. We all know it is better to automate certain tasks, but few of us get to the point where we accomplish the goal of automating as many things as we could. Some would call Linux Automation tools like Murguu macro software. Some automation tools are described by their application, like this article from Unixmen. Some are specific to the GUI environment like Sikuli or trialware AutoMate. Other automation is exclusive for the CLI environment like code test software. Some of them are CLI programs designed to automate GUI actions, like freeware AutoIt. Others are specific for internet or web-browser application such as WebRecorder. Some allow automation with both CLI and GUI interaction, like WINSCP. Some automation software is designed for more business application with computers and the internet such as Drip. For Telephone VOIP dialing automation check out free NCH software. Looking for automated SMS text software? How about paying for Client served web applications like SocialFuse? Perhaps you like the idea of automating your home or office. Basically what it comes down to is: the more you know about computers, the easier your life can become. Make Command Line Interface skills a higher priority by becoming an expert yourself, or hiring someone who already is. Higher level thinking and operating can be applied to computers and the hardware that computers can interface with to make our lives easier.

For Definition’s Sake:

A System Console is a combination of hardware and software. It is comprised of a computer, keyboard, monitor, mouse. Other inputs such as a camera can be considered part of the console if it allows you to control the computer. Examples of inventive ways to control your computer are Microsoft Kinect for XBox, Sony Playstation Move controller, or the Nintendo Wii remote. The software layer of the console is evidence that your input has been entered, and feedback about what your input has accomplished for you.

A Terminal Emulator (tty) allows the user access to a text terminal and all the computer’s applications. This includes both CLIs and GUIs. A neat concept about the tty is that it can be affecting your local machine, or any remote machine that you can gain access to. This means that you can be affecting many computers at once in a very efficient way.
Text Based User Interface is another concept that is a sort of middle-ground between GUI and CLI. A famous version of this software is often used in banking, collections, or government application. You can play around with  AS400 for free. Some other things to be aware of with the AS/400 system are the languages associated with the system. Technically the AS400 is a hardware system with more emphasis on security, speed, and scalability as a server. AS400 and Report Program Generator (RPG) are actually difficult subjects to research. I presume it is because the financial systems of the world rest on the shoulders of this giant. If you were to read the wiki about RPG, you may not be able to discern that this Text Based User Interface software/hardware setup is the predominant computing force in the financial world. DB2 UDB/400 are the languages associated with this specific type of machine. Many of the underlying programs supporting these financial systems are written in COBOL. Suffice to say that knowledge about these things can make you wealthy.

A Console Application is a software program that runs on the System Console that is designed to require a text-only software interface, monitor, keyboard and the computer itself. Many of these programs are found in /bin in Linux, or C:\Windows\System32\ in Windows.

A Virtual Console is a concept that in practice looks much like Terminal Emulator, or a CLI running in a GUI environment. If you have a GUI running and you are working in only one Linux Terminal Window entering common Linux Console Application Commands, it could be said that “you are utilizing a Command Line Interface style of computing in a Linux ‘Bash‘ application window in the GUI environment.” Not many people would phrase it that way, but that is more precise terminology to express what is really going on. This particular Console Application called Bash is also known as a Unix Shell. If you have two such Bash programs open, and you are logged in to two different computers in each of those windows; it becomes more obvious what a Virtual Console is all about or why we have them. In one of your Bash Terminals, you may be running the telnet program and be executing commands on your computer in another room. In the other Bash Terminal you may be downloading, installing, or updating a program onto the computer you are currently touching, with the Advanced Package Tool (APT-get) program. If you open a third Virtual Console and run IpTraf you can begin monitoring the traffic on your network. When you have multiple of these windows open and you are performing tasks in multiple environments, Virtual Console functionality becomes incredibly valuable. You can cycle through them easily by using the Alt+F keys. This is wonderful when you find yourself operating in multiple user environments with different login requirements etc.

A Terminal Multiplexer allows you to interact with multiple Virtual Consoles in a single window. This makes it so that if you are not working in a GUI environment you can still easily have the advantage of multiple Virtual Consoles without having to cycle between them in a visual way. Many multiplexers offer functionality beyond this basic definition however. Some of them offer window re-sizing, and tiling options within a GUI, or even allowing you to complete complex functions like resume compiling over ssh after a network connection drops.

What are the Alternatives to the GUI?

Command Line Shells
Terminal Emulators – (with a note on security)

Windows – (Terminal Emulators)

cmd (default)
console2
consoleZ
powerCmd
power Shell
take Command
conEmu
fireCMD
attachmate Reflection (formerly WRQ)
vandyke’s SecureCRT
puttycyg
CMD++
win-bash
colorConsole
TCC/LE (formerly 4NT)
clink
terminator
cygwin (Linux like feel)
mintty (used with cygwin)

Linux- (Command Line Shells)

bash (default)
zsh
git
vim (makes developer’s lives easier)
fish
emacs
twin

Google- (Internet Command Line Shell) ** unofficial**

goosh

OSX – (Terminal Emulators)

terminal (default)
iterm2
xterm
macwise
securecrt
synchronet
terminator
zoc
zterm
macterminal
redryder  (coincidentally one of the first DonationWare programs)

Terminal Multiplexers

GNU screen & wiki
neercs
tmux
byobu (watch this video)
dvtm

 

Main Parts of a Linux Machine

Part of the power of Linux is that if you want to accomplish something in computing terms, you can do it with Linux. This is not to say that you can’t accomplish things with other OSs (Operating Systems), but it can be much easier to figure out, and accomplished more quickly with Linux than with other OSs.

Main Parts of Linux OS & Computer:

Software:
BIOS
     Basic Input/Output System (BIOS) software is known as firmware. It is the thing that starts hardware processes during the boot phase when starting a computer. It keeps runtime services for the OS and programs functional. BIOS software is the first software that runs when turning the power of a computer on. It also provides an abstract layer for hardware to communicate with software. There is another concept directly related to BIOS called the Unified Extensible Firmware Interface (UEFI.) Technically speaking, BIOS software is a sort of operating system that loads in order to handle low level tasks for the computer. 1 megabyte (MB) is the standard (or used to be) the amount of memory for the BIOS. Most BIOS systems are only able to allow 16-bit instruction, and support a Master Boot System (MBR) with a maximum of 2 terabytes (TB) of memory with only 4 partitions. The new UEFI allows up to 128 partitions and a maximum of 8 zettabytes (ZB) of harddisk (HDD) space. This is equivalent to 8 trillion gigabytes (GB). A hurdle that some Linux users may have to overcome is that they might have to manually add a new key to the UEFI database in order to install an OS. Adding a new key to a UEFI allows for what is known as a Secure Boot. Ubuntu has specific Secure Boot instructions. If you are working with more obscure versions of Linux you may want to check out more general guidance about how to make UEFI Secure Boot work for you.

Locking Down the BIOS?:
While setting an Administrator password in the BIOS will prevent people from enabling other hardware to boot from, it is easy to bypass if someone is determined to do so. If you are going to take this step, please also find a way to make it physically difficult for someone to open the computer case and/or access the motherboard of the machine. Most computers still require a CR2032 battery to power the CMOS. Computer Users who understand what it takes to boot from their USB, SSD, or Optical Drive know how to reach the motherboard’s battery that powers the BIOS. Removing this battery long enough will reset the BIOS and allow someone access. Often a jumper can be used to reset the BIOS as well. Another way for someone to affect the BIOS / Boot order of the machine is with a rootkit or user level software designed to allow access to BIOS functions. It is also possible to brute force into BIOS remotely if someone is determined. As it turns out, there are powerful viruses in the wild that can affect BIOS, but perhaps only compromising 32bit systems at this time. Who knows? Perhaps you like the idea of hacking your own BIOS. You could join a community of other BIOS hackers to learn some wonderful options about securing your BIOS. If you are wondering about the effects of running your computer without the CMOS battery take a look at these articles:

Seemingly unrelated fact:
The 2005 storm named Zeta broke a record as being the 28th named hurricane of the year in 2005. That was 7 more storms than the previous record made in 1933. This was the same year the famous Hurricane Katrina rocked New Orleans. Perhaps this is an indication that a “data/zeta storm is coming?”

BIOS Mod’ing:

Kernel
The Kernel communicates directly with computer hardware. This is what allows your keyboard and mouse to do what they do. Monitors, hard-drives, video cards, printers, and all sorts of things rely on the kernel. The kernel provides a layer between higher level programming and hardware. Code for a kernel or driver would require what is considered low level programming in contrast to something like Java for a video game server, or JavaScript for a website. Most kernel software is written in C. Types of kernels are Monolithic, Micro, Exo and Hybrid. The history of the Exokernel is interesting with its roots firmly planted at MIT in Cambridge just outside of Boston. Kernels can be specific for the operating systems they will support: Solaris, BSD, Linux, etc.. One neat aspect of the Kernel is that it is possible to specify precisely which hardware you want to use and compile the kernel to work exclusively with the hardware on your machine. Doing this would render that version of your kernel useless on any machine that did not have the exact same hardware. It would also make it very difficult to diagnose and fix your machine if it stopped working properly. The benefit of doing this would be that it would take far less time to boot the system and load all the supporting software that allows the hardware to do what it does. A main reason for compiling your own kernel is if you want to use hardware that is not supported by the OSs standard kernel. There is a chance that you can solve your problem more easily by finding the right drivers rather than messing with the kernel. To continue learning about the kernel, look into Linux-header packages. Another good reason to compile your own kernel is so that you can learn a lot about how Linux works.

It is worth noting that kernels of different types have common elements. In addition to listing the main sections, check out this really cool interactive map of a Linux Kernel or you can download it for free:

For comic relief, you may wish to view the official names of Linux Kernel Distributions. My personal favorite is version 2.6.30-rc4–2.6.30-rc6 known as Vindictive Armadillo. A close second is version 2.6.20-rc2–2.6.20– known as Homicidal Dwarf Hamster. Also quite funny is Linus Torvalds’ rant aimed at Andy Tanenbaum in early 1992. Of other importance, it is worth noting that Linus Torvalds is back to maintaining the Linux Kernel.

Kernel Mode
x86 CPU hardware provides for 4 levels of protection. Ring zero is Kernel Mode, while Ring 4 is User Mode. Considering the notion that the CPU hardware needs protection at all is worth a moment of reflection. Perhaps you think you know the difference between a Computer Virus and Malware. Kernel developers would beg to differ. Definitions of such things are getting blurred across all lines of defense. Some people even publish how to modify permissions to create Kernel Exploits. Katrina LaCurts at MIT has some solutions for this problem, but the development is not absolute. Suffice to say that this is a ripe area for development on all fronts. There is a lot of value that comes with computing permission on a large scale. If you decide to dive into the seedy world of kernel hacking, Proceed With Caution. << For this last link: advance through the website by modifying the numbers in the address bar rather than the “next” link at the bottom left of the pages.
User Mode
The less privileged mode or the 4th ring of the protection levels of your computer is where most of your software runs. Software, hacks, and exploits written for the User Mode have to be more discrete, or tactfully written so as to be less obvious to the actual user of the machine. If the software causes failures in the system, they will not cause the OS to crash in most cases. The trick with this level is hiding the fact that the software is running at all.

Kernel Modules
Kernel Modules load after the core kernel starts. Much of the functionality of the Linux OS is compiled as part of the Kernel, but many of these functions are performed by Kernel Modules that are loaded afterwards and are not considered native to the kernel code. One important distinction between drivers and kernel modules is that kernel modules add functionality to parts of the system that may not be considered hardware. Kernel modules can add functionality to ipv4, ipv6, security, and more.
Drivers
Drivers relate exclusively to hardware. They allow the software (which is running in RAM) to communicate with hardware to accomplish everything you may want to do on a computer. Drivers can exist in userspace, in kernel, or loaded as a module. Some drivers operate in multiple of these spaces at the same time.

System Library
The LSB is a standard that dramatically reduces costs to develop software for the many different distributions of Linux OSs. If you want to write code, or modify code that is run on any version of Linux, read about LSB and become familiar with the Charter. The different libraries throughout Linux serve different purposes. To understand them better you may want to look into Hooking DLL Injection though a conceptual overview can help before beginning software development. Of primary importance for the purpose of this article: understanding system calls will help you know how to change between execution mode of a program from user mode to kernel mode.

System Utility
System Utility is otherwise known as System Software is designed to provide services to other software like the operating system, game engines, or SaaS thin client software. If you are unfamiliar with the Thin Client concept, it’s worth understanding zero clients, thin clients, VDI, and … in terms of virtualization and how it can be utilized in a user environment.

Finally I will end this article with some intriguing machines that run Linux or other odd OSs.

 

Learning About Linux

What is Linux?              An open-source operating system modeled on UNIX

To understand what Linux is, you may want to glance at a few links. There are some fundamental concepts that are worth knowing about Linux and the huge community that comes with it.

  • Linus Torvalds                     Say hi to him here!       Google+
  • Open Source                         It’s a “thing,” perhaps a movement?
  • Python                                    Quickly, make it work; then make it better
  • Agile Software Dev             Do it a better way with others who agree
  • GitHub                                    Version control with others
  • Android                                   Linux in your pocket, Or Is It?
  • Raspberry PI                          Interface your world in crafty ways
  • Home Automation              Control your environment
  • Own Your Network             Know why your internet connection is slow
  • Security Conscious              Get in, get out, no trace
  • Hacking?                                Hacking is good

If you do not know much or anything about Linux, I would first like to describe why you should make it a goal to master the basics of Linux.

Benefits

  • Free(dom): Linux and most associated software is free to use. The software or projects that you may choose to pay for will most likely include a feeling of pride because you are contributing to something awesome.
  • Security: Linux is not prone to virus and spyware issues. You won’t have to spend a significant percentage of your time figuring out how to keep Linux working properly.
  • Control: Linux is powerful. Once you master the basics you will be able to do things with ease that would frustrate the most advanced Windows users.
  • Customization: You can make Linux look and behave precisely the way you want.
  • Peace of Mind: Linux is difficult to hack into even by a determined, knowledgeable person with malicious intent. You can lock down a Linux machine and make it very difficult for others to use it let alone break in.
  • Community: The Linux community fixes their broken software. Because the Linux community is so proactive you can jump into the process of reporting bugs, and become part of the solution if you decide that you’d like to contribute. With other systems, if something is broken, in many cases you just have to deal with it. Empower not only your computer hardware, but yourself with the ability to become part of the solution to problems.
  • Value: Breathe new life into old computers that you would normally consider to be obsolete. If you have legacy hardware, you can find a perfect Linux distribution to put on that hardware. Furthermore, you don’t have to worry if the software you install on old hardware will be outdated or insecure. Just look for Lightweight Linux Distributions.
  • KNOWLEDGE: Be powerful. The more you use Linux, the more you will learn about computers and what is possible out there. After months or years of using Linux you will invariably learn more about programming and the ways of the computing world than with other operating systems.
    • RANT: The app-centric software development community is having a negative effect on the software using population. People are becoming lazy and ignorant about hardware and software. It’s becoming so easy and convenient that people do not understand what they are using or doing. The Linux community is a wonderful fertile place to let the seeds of knowledge grow and become wonderful habits and abilities. Computer programmers are seen as wizards by many because people do not understand the language of computers. This by far is the best reason to learn Linux in my humble opinion. Generally good policy: If you’re going to spend hours using an electronic device, do something that will have a lasting effect on your knowledge of that device. Playing game apps on our phones will not accomplish this. Creating a simple game and then compiling it will. I recommend you do this and then share your creation with your friends.

Detriments

  • Tricky: Linux has a learning curve. Linux can take a bit of getting used to. Doesn’t everything though? There are a few different ways of accomplishing things that can make Linux seem daunting at first, but these are easily overcome if you are willing to join a forum and ask a question or two. Perhaps forums are not your style? You can find many resources on Google to read articles about how to use Linux. I will create some of those in my blog.
  • Image: Linux users can be seen as geeky, nerdy, cheap, or pompous. Don’t epitomize these labels and you’ll find that your ability to help people with their computer problems will offset any negative image Linux may carry with it. Be cheerful!
  • Compatibility: Some Windows software will only run well natively on a Windows machine. There are ways around this in most cases by running the program in an emulator like Wine, or in a virtual installation of Windows as a guest OS with a program like Oracle VirtualBox. This way you can have your cake and eat it too! I consider my Windows XP installation in VirtualBox to be more secure than a Windows 7 native installation. Every-time I boot it up it is a fresh reset of the installation. Just save its state like a video-game.

Ways to Install

Today I am going to explain a few different ways to get started with Linux. There are 3 primary options to get your feet wet and begin using Linux regularly.

  1. Create a USB or DVD bootable version of Linux. This way you do not have to install the operating system. Basically you get to try it before you commit to it. This is also an excellent way to browse websites that may have a higher likelihood of putting not so desirable software on your Windows computer. Many computer technicians use this method to use Linux tools to diagnose and repair other machines.
  2. Install Linux on a hard-drive HDD/SSD on your computer. You do not need to delete or reformat your current operating system. You can install Linux as a virtual machine on your Windows or OSX installation. Alternatively you can use a secondary or tertiary HHD to install Linux on. You could also use partition software to install it on your primary HHD though I recommend using a dedicated HDD. You can even go so far as to use an alternate boot-loader. This would give you a prompt when booting your computer that asks which operating system you’d like to use. Some machines can tri-boot Windows, Linux, and OSX. This is no longer necessary with virtualization software. There are other more efficient options, but maybe you prefer the dua/tri-boot option.
  3. Install Linux on a machine that you leave at home or the office. Some people prefer to install Linux on a computer that is plugged in all the time. If you connect it to a high-speed internet connection then you can have access to Linux through the internet without having to install it on your laptop or carry a USB drive. Technically this would be a server function, but you don’t need to learn a ton of server stuff to make it really useful. There are lots of excellent reasons to do this even if you don’t necessarily like Linux. Host your own website by setting up some DNS redirect features with your domain host. Share files with friends and family from your personal machine at home.

USB Bootable Websites                                              Windows Downloads

  • UNetBootin                                                                    Download
  • Rufus                 (no installation required)              Download
  • WiNToBootic                                                                  Download
  • YUMI                                                                                 Download
  • LiLi            (no Windows reboot required)              Download
  • WinUSB Maker  (multi-OS & repair tool)             Download
  • RMPrepUSB   (partition USB like a HHD/SSD)    Download

 

Best versions of Linux

  • OpenBSD                           Security
  • Tails                                    Secure / Privacy Oriented
  • Ubuntu                               Easy
  • Debian                                A Standard
  • Lubuntu                             Slim / Light
  • UStudio                              Media Oriented – Create Audio / Video
  • Fedora                                Popular
  • Sugar                                  Fedora for children / education
  • SteamOS                            Gamers
  • SUSE                                   Cloud Leverage
  • Mint                                    Eye Candy  (recently hacked)
  • Gentoo                               Flexible
  • Arch Linux ARM              Installs on nearly anything
  • ClearOS                              Web Administration / Enterprise Server
  • Puppy                                 Slim / Light – Run from RAM
  • OpenHAB                          Home Automation
  • LinuxMCE                         Home Automation

Linux can also be used to diagnose hardware and fix software or operating systems when they fail. Check out this essential list of software that can help you recover your other broken machines.

  • Clonezilla Live                       Norton Ghost alternative (free)
  • RedoBackup&Recovery       Like Clonezilla, but more fun
  • Trinity Rescue Kit (TRK)     Fix Windows
  • Clam AV                                   Answer to viruses
  • AVG                                           Anti-virus
  • Rascatux                                  Passwords and more
  • System Rescue CD                Blind accessibility
    • (You can fix computers even if you cannot see with your eyes)
    • “You CAN fix what you cannot see.”

 

If I caught your attention with the hacking stuff on the top of this page, then you may want to check out this list of challenge sites that offer many alternative ways to look at hacking. Learning Linux will help you with all your H4x0Rz interests.