Please check out my future blogging activities at compsandbox.com
Please check out my future blogging activities at compsandbox.com
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.
Download the Installation ISO and create a bootable UNetBootIn Disk
The steps of this blog will show how to:
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:
How to find out if my Apple OSX computer is 32 or 64 bit:
How to find out if my Linux computer is 32 or 64 bit:
How to tell if my chipset/motherboard/hardware is 32-bit or 64-bit with no OS installed:
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.
Type in these commands one after the other.
Create your bootable OS installation USB drive
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.
After running the cdemu -h command you should see the CDemu program load in your Terminal and show this helpfile
The next ISO program is called Gmount-ISO.
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 for “Gmount” without the quotation marks and open the GUI to see the program like this Image
A 3rd program worth looking at is called ISOMaster
Type this command in Terminal to install ISOMaster
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.”
A 4th program is called Furius ISO Mount Tool
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.
Search for and find the Extensis application and enable it.
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 **
If you are curious as I was; go ahead and select the Add-ons tab again and find the Extensis App that you installed.
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.
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…
** 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.
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:
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.
This gives you a cross-hair which is used to click and drag to define the shape and size of your rectangle.
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:
Once the color of the rectangle is set, you can add dotted lines. I like the Pixel Weight px2 particularly well:
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:
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!
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.
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.
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.
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.
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.
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.
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.
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.
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.
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?
Windows – (Terminal Emulators)
attachmate Reflection (formerly WRQ)
TCC/LE (formerly 4NT)
cygwin (Linux like feel)
mintty (used with cygwin)
Linux- (Command Line Shells)
Google- (Internet Command Line Shell) ** unofficial**
OSX – (Terminal Emulators)
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:
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?”
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.
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.
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 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 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.
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 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.