Tuesday, July 31, 2012

Abbreviations of Computer Related Terms: Alphabet-L

L2TP—Layer two Tunneling Protocol
LAMP—Linux Apache MySQL Perl
LAMP—Linux Apache MySQL PHP
LAMP—Linux Apache MySQL Python
LAN—Local Area Network
LBA—Logical Block Addressing
LCD—Liquid Crystal Display
LCR—Least Cost Routing
LCOS—Liquid Crystal On Silicon
LDAP—Lightweight Directory Access Protocol
LE—Logical Extents
LED—Light-Emitting Diode
LF—Line Feed
LF—Low Frequency
LFS—Linux From Scratch
LGPL—Lesser General Public License
LIF—Low Insertion Force
LIFO—Last In First Out
LILO—Linux Loader
LISP—LISt Processing
LKML—Linux Kernel Mailing List
LM—Lan Manager
LOC—Lines of Code
LPC—Lars Pensjö C
LPI—Linux Professional Institute
LPT — Line Print Terminal
LSB—Least Significant Bit
LSB—Linux Standard Base
LSI—Large-Scale Integration
LTL—Linear Temporal Logic

Abbreviations of Computer Related Terms: Alphabet-K

K&R—Kernighan and Ritchie
KB—Knowledge Base
KDE—K Desktop Environment
KM—Knowledge Machine
KRL—Knowledge Representation Language
KVM—Keyboard, Video, Mouse

Abbreviations of Computer Related Terms: Alphabet-J

J2EE—Java 2 Enterprise Edition
J2ME—Java 2 Micro Edition
J2SE—Java 2 Standard Edition
JAXB—Java Architecture for XML Binding
JAX-RPC—Java XML for Remote Procedure Calls
JAXP—Java API for XML Processing
JBOD—Just a Bunch of Disks
JCE — Java Cryptography Extension
JCL—Job Control Language
JCP—Java Community Process
JDBC—Java Database Connectivity
JDK—Java Development Kit
JES—Job Entry Subsystem
JDS—Java Desktop System
JFC—Java Foundation Classes
JFET—Junction Field-Effect Transistor
JFS—IBM Journaling File System
JINI—Jini Is Not Initials
JMX—Java Management Extensions
JMS—Java Message Service
JNDI—Java Naming and Directory Interface
JNI—Java Native Interface
JNZ—Jump non-zero
JPEG—Joint Photographic Experts Group
JRE—Java Runtime Environment
JSON—JavaScript Object Notation
JSP—Jackson Structured Programming
JSP—JavaServer Pages
JTAG—Joint Test Action Group
JUG—Java Users Group
JVM—Java Virtual Machine
JWZ—Jamie Zawinski

Abbreviations of Computer Related Terms: Alphabet-I

I²C—Inter-Integrated Circuit
IANA—Internet Assigned Numbers Authority
iBCS—Intel Binary Compatibility Standard
IBM—International Business Machines
IC—Integrated Circuit
ICANN—Internet Corporation for Assigned Names and Numbers
ICE—In-Circuit Emulator
ICE—Intrusion Countermeasure Electronics
ICMP—Internet Control Message Protocol
ICP—Internet Cache Protocol
ICT—Information and Communication Technology
IDE—Integrated Development Environment
IDE—Integrated Drive Electronics
IDF—Intermediate Distribution Frame
IDL—Interface Definition Language
IDS—Intrusion Detection System
IE—Internet Explorer
IEC—International Electrotechnical Commission
IEEE—Institute of Electrical and Electronics Engineers
IETF—Internet Engineering Task Force
IFL—Integrated Facility for Linux
IGMP—Internet Group Management Protocol
IGRP—Interior Gateway Routing Protocol
IHV—Independent Hardware Vendor
IIOP—Internet Inter-Orb Protocol
IIS—Internet Information Services
IL—Intermediate Language
IM—Instant Messaging
IMAP—Internet Message Access Protocol
IME—Input Method Editor
INFOSEC—Information Systems Security
IP—Intellectual Property
IP—Internet Protocol
IPC—Inter-Process Communication
IPL—Initial Program Load
IPO—Inter Procedural Optimization
IPP—Internet Printing Protocol
IPS—Intrusion Prevention System
IPsec—Internet Protocol security
IPTV—Internet Protocol Television
IPX—Internetwork Packet Exchange
IR—Intermediate Representation
IRC—Internet Relay Chat
IrDA—Infrared Data Association
IRI—Internationalized Resource Identifier
IRP—I/O Request Packet
IRQ—Interrupt Request
IS—Information Systems
ISA—Industry Standard Architecture
ISA—Instruction Set Architecture
ISAM—Indexed Sequential Access Method
ISC—Internet Storm Center
iSCSI—Internet Small Computer System Interface
ISDN—Integrated Services Digital Network
ISO—International Organization for Standardization
ISNS—Internet Storage Name Service
ISP—Internet Service Provider
ISPF—Interactive System Productivity Facility
ISR—Interrupt Service Routine
ISV—Independent Software Vendor
IT—Information Technology
ITIL—Information Technology Infrastructure Library
ITL—Interval Temporal Logic
ITU—International Telecommunication Union
IVRS-Interactive Voice Response System

Abbreviations of Computer Related Terms: Alphabet-H

HAL—Hardware Abstraction Layer
HBA—Host Bus Adapter
HCI—Human Computer Interaction
HD—High Density
HDD—Hard Disk Drive
HCL—Hardware Compatibility List
HD DVD—High Definition DVD
HDL—Hardware Description Language
HDMI—High-Definition Multimedia Interface
HF—High Frequency
HHD—Hybrid Hard Drive
HID—Human Interface Device
HIG—Human Interface Guidelines
HIRD—Hurd of Interfaces Representing Depth
HLASM—High Level ASseMbler
HMA—High Memory Area
HPC—High-Performance Computing
HPFS—High Performance File System
HTC—High-Throughput Computing
HSM—Hierarchical Storage Management
HT—Hyper Threading
HTM—Hierarchical Temporal Memory
HTML—Hypertext Markup Language
HTTP—Hypertext Transfer Protocol
HTTPd—Hypertext Transport Protocol Daemon
HTX—HyperTransport eXpansion
HURD—Hird of Unix-Replacing Daemons
HVD—Holographic Versatile Disc

Abbreviations of Computer Related Terms: Alphabet-G

Gas—GNU Assembler
GCC—GNU Compiler Collection
GCJ—GNU Compiler for Java
GCR—Group Code Recording
GDB—GNU Debugger
GDI—Graphics Device Interface
GFDL—GNU Free Documentation License
GIF—Graphics Interchange Format
GIGO—Garbage In, Garbage Out
GIMP—GNU Image Manipulation Program
GIMPS—Great Internet Mersenne Prime Search
GIS—Geographic Information System
GLUT—OpenGL Utility Toolkit
GML—Geography Markup Language
GNOME—GNU Network Object Model Environment
GNU—GNU's Not Unix
GOMS—Goals, Operators, Methods, and Selection rules
GPG—GNU Privacy Guard
GPGPU—General-Purpose Computing on Graphics Processing Units
GPIB—General-Purpose Instrumentation Bus
GPL—General Public License
GPL—General-Purpose Language
GPRS—General Packet Radio Service
GPT—GUID Partition Table
GPU—Graphics Processing Unit
GRUB—Grand Unified Boot-Loader
GSM—Global System for Mobile Communications
GTK+—GIMP Toolkit
GUI—Graphical User Interface
GUID—Globally Unique IDentifier
GWT—Google Web Toolkit

Abbreviations of Computer Related Terms: Alphabet-F

FAP—FORTRAN Assembly Program
FASM—Flat ASseMbler
FAT—File Allocation Table
FAQ—Frequently Asked Questions
FBDIMM—Fully Buffered Dual Inline Memory Module
FC-AL—Fibre Channel Arbitrated Loop
FCB—File Control Block
FCS—Frame Check Sequence
FDC—Floppy Disk Controller
FDS—Fedora Directory Server
FDD—Floppy Disk Drive
FDDI—Fiber Distributed Data Interface
FDMA—Frequency-Division Multiple Access
FEC—Forward Error Correction
FEMB—Front-End Motherboard
FET—Field Effect Transistor
FHS—Filesystem Hierarchy Standard
FICON—FIber CONnectivity
FIFO—First In First Out
FIPS—Federal Information Processing Standards
FL—Function Level
FLAC—Free Lossless Audio Codec
FLOPS—FLoating-Point Operations Per Second
FLOSS—Free/Libre/Open Source Software
FMC— Fixed Mobile Convergence "Mobile UC or Unified Communications over
FOLDOC—Free On-line Dictionary of Computing
FOSDEM—Free and Open source Software Developers' European Meeting
FOSI—Formatted Output Specification Instance
FOSS—Free and Open Source Software
FP—Function Programming
FPGA—Field Programmable Gate Array
FPS—Floating Point Systems
FPU—Floating Point Unit   
FRU—Field Replaceable Unit
FS—File System
FSB—Front Side Bus
fsck—File System Check
FSF—Free Software Foundation
FSM—Finite State Machine
FTTC—Fiber To The Curb
FTTH—Fiber To The Home
FTTP—Fiber To The Premises
FTP—File Transfer Protocol
FQDN—Fully Qualified Domain Name
FUD—Fear Uncertainty Doubt
FWS—Folding White Space
FXP—File eXchange Protocol

Abbreviations of Computer Related Terms: Alphabet-E

EAI—Enterprise Application Integration
EAP—Extensible Authentication Protocol
EBCDIC—Extended Binary Coded Decimal Interchange Code
EBML—Extensible Binary Meta Language
ECC—Elliptic Curve Cryptography
ECMA—European Computer Manufacturers Association
ECN—Explicit Congestion Notification
ECOS—Embedded Configurable Operating System
ECRS—Expense and Cost Recovery System
EDA—Electronic Design Automation
EDI—Electronic Data Interchange
EDO—Extended Data Out
EDSAC—Electronic Delay Storage Automatic Calculator
EDVAC—Electronic Discrete Variable Automatic Computer
EEPROM—Electronically Erasable Programmable Read-Only Memory
EFF—Electronic Frontier Foundation
ENIAC—Electronic Numerical Integrator And Calculator
EFI—Extensible Firmware Interface
EFM—Eight-to-Fourteen Modulation
EGA—Enhanced Graphics Array
EGP—Exterior Gateway Protocol
eID—electronic ID card
EIDE—Enhanced IDE
EIGRP—Enhanced Interior Gateway Routing Protocol
EISA—Extended Industry Standard Architecture
ELF—Extremely Low Frequency
ELF—Executable and Linkable Format
ELM—ELectronic Mail
EMS—Expanded Memory Specification
ENIAC—Electronic Numerical Integrator And Computer
EOF—End of File
EOL—End of Life
EOL—End of Line
EOM—End Of Message
EPIC—Explicitly Parallel Instruction Computing
EPROM—Erasable Programmable Read-Only Memory
ERP—Enterprise Resource Planning
ESCON—Enterprise Systems Connection
ESD—Electrostatic Discharge
ETL—Extract, Transform, Load
ESR—Eric Steven Raymond
EUC—Extended Unix Code
EULA—End User License Agreement
EXT—EXTended file system

Abbreviations of Computer Related Terms: Alphabet-D

DAC—Digital-To-Analog Converter
DAC—Discretionary Access Control
DAO—Data Access Objects
DAP—Directory Access Protocol
DARPA—Defense Advanced Research Projects Agency
DAT—Digital Audio Tape
DBA—Database Administrator
DBCS—Double Byte Character Set
DBMS—Database Management System
DCC—Direct Client-to-Client
DCCP—Datagram Congestion Control Protocol
DCCA—Debian Common Core Alliance
DCL—Data Control Language
DCMI—Dublin Core Metadata Initiative
DCOM—Distributed Component Object Model
DD—Double Density
DDE—Dynamic Data Exchange
DDL—Data Definition Language
DDoS—Distributed Denial of Service
DDR—Double Data Rate
DEC—Digital Equipment Corporation
DES—Data Encryption Standard
DFA—Deterministic Finite Automaton
DFD—Data Flow Diagram
DFS—Depth-First Search
DFS—Distributed File System
DGD—Dworkin's Game Driver
DHCP—Dynamic Host Configuration Protocol
DHTML—Dynamic Hypertext Markup Language
DIF—Data Integrity Field
DIMM—Dual Inline Memory Module
DIN—Deutsches Institut für Normung
DIP—Dual In-line Package
DIVX—Digital Video Express
DKIM—Domain Keys Identified Mail
DLL—Dynamic Link Library
DLNA—Digital Living Network Alliance
DLP—Digital Light Processing
DMA—Direct Memory Access
DMCA—Digital Millennium Copyright Act
DMI—Direct Media Interface
DML—Data Manipulation Language
DML—Definitive Media Library
DMR—Dennis M. Ritchie
DN—Distinguished Name
DNS—Domain Name System
DOCSIS—Data Over Cable Service Interface Specification
DOM—Document Object Model
DoS—Denial of Service
DOS—Disk Operating System
DP—Dot Pitch
DPC—Deferred Procedure Call
DPI—Deep Packet Inspection
DPI—Dots Per Inch
DPMI—DOS Protected Mode Interface
DPMS—Display Power Management Signaling
DRAM—Dynamic Random Access Memory
DR-DOS—Digital Research - Disk Operating System
DRI—Direct Rendering Infrastructure
DRM—Digital Rights Management
DRM—Direct Rendering Manager
DSDL—Document Schema Definition Languages
DSDM—Dynamic Systems Development Method
DSL—Digital Subscriber Line
DSL—Domain-Specific Language
DSLAM—Digital Subscriber Line Access Multiplexer
DSN—Database Source Name
DSN—Data Set Name
DSP—Digital Signal Processor
DSSSL—Document Style Semantics and Specification Language
DTD—Document Type Definition
DTE—Data Terminal Equipment
DTP—Desktop Publishing
DTR—Data Terminal Ready
DVD—Digital Versatile Disc
DVD—Digital Video Disc
DVD-ROM—DVD-Read Only Memory
DVI—Digital Visual Interface
DVR—Digital Video Recorder

Abbreviations of Computer Related Terms: Alphabet-C

CA—Certificate Authority
CAD—Computer-Aided Design
CAE—Computer-Aided Engineering
CAID—Computer-Aided Industrial Design
CAI—Computer-Aided Instruction
CAM—Computer-Aided Manufacturing
CAPTCHA—Completely Automated Public Turing Test to tell Computers and Humans Apart
CAT - Computer-Aided Translation
CAQ—Computer-Aided Quality Assurance
CASE—Computer-Aided Software Engineering
cc—C Compiler
CD—Compact Disc
CDE—Common Desktop Environment
CDMA—Code Division Multiple Access
CDN—Content Delivery Network
CDP—Continuous Data Protection
CD-ROM—CD Read-Only Memory
CDSA—Common Data Security Architecture
CERT—Computer Emergency Response Team
CES—Consumer Electronics Show
CF—Compact Flash
CFD—Computational Fluid Dynamics
CFG—Context-Free Grammar
CFG—Control Flow Graph
CG—Computer Graphics
CGA—Color Graphics Array
CGI—Common Gateway Interface
CGI—Computer-Generated Imagery
CGT—Computational Graph Theory
CHAP—Challenge-Handshake Authentication Protocol
CIDR—Classless Inter-Domain Routing
CIFS—Common Internet Filesystem
CIM—Common Information Model
CISC—Complex Instruction Set Computer
CJK—Chinese, Japanese, and Korean
CJKV—Chinese, Japanese, Korean, and Vietnamese
CLI—Command Line Interface
CLR—Common Language Runtime
CM—Configuration Management
CM—Content Management
CMMI—Capability Maturity Model Integration
CMOS—Complementary Metal-Oxide Semiconductor
CMS—Content Management System
CN—Canonical Name
CN—Common Name
CNC—Computer Numerical Control
CNR—Communications and Networking Riser
COBOL—Common Business-Oriented Language
COM—Component Object Model
CORBA—Common Object Request Broker Architecture
COTS—Commercial Off-The-Shelf
CPA—Cell Processor Architecture
CPA—Converged Packet Access
CPAN—Comprehensive Perl Archive Network
CP/M—Control Program/Monitor
CPRI—Common Public Radio Interface
CPS—characters per second
CPU—Central Processing Unit
CR—Carriage Return
CRAN—Comprehensive R Archive Network
CRC—Cyclic Redundancy Check
CRLF—Carriage Return Line Feed
CRM—Customer Relationship Management
CRS—Computer Reservations System
CRT—Cathode Ray Tube
CRUD—Create, Read, Update and Delete
CS—Cable Select
CS—Computer Science
CSE—Computer Science and Engineering
CSI—Common System Interface
CSP—Communicating Sequential Processes
CSRF—Cross-Site Request Forgery
CSS—Cascading Style Sheets
CSS—Content-Scrambling System
CSS—Closed Source Software
CSS—Cross-Site Scripting
CSV—Comma-Separated Values
CT—Computerized Tomography
CTAN—Comprehensive TeX Archive Network
CTCP—Client-To-Client Protocol
CTI—Computer Telephony Integration
CTL—Computational Tree Logic
CTM—Close To Metal
CTS—Clear To Send
CTSS—Compatible Time-Sharing System
CUA—Common User Access
CVS—Concurrent Versioning System

Abbreviations of Computer Related Terms: Alphabet-B

BAL—Basic Assembly Language
Bash—Bourne-again shell
BASIC—Beginner's All-Purpose Symbolic Instruction Code
BBP—Baseband Processor
BBS—Bulletin Board System
BCD—Binary Coded Decimal
BCNF—Boyce-Codd normal form
BEEP—Blocks Extensible Exchange Protocol
BER—Bit Error Rate
BFD—Bidirectional Forwarding Detection
BFD—Binary File Descriptor
BFS—Breadth-First Search
BFT—Byzantine Fault Tolerant
BGP—Border Gateway Protocol
BINAC—Binary Automatic Computer
BIND—Berkeley Internet Name Domain
BIOS—Basic Input Output System
BJT—Bipolar Junction Transistor
bit—binary digit
Blob—Binary large object
Blog—Web Log
BMP—Basic Multilingual Plane
BNC—Bayonet Neill-Concelman
BOINC—Berkeley Open Infrastructure for Network Computing
BOM—Byte Order Mark
BOOTP—Bootstrap Protocol
BPDU—Bridge Protocol Data Unit
BPEL—Business Process Execution Language
BPL—Broadband over Power Lines
bps—bits per second
BRR—Business Readiness Rating
BSA—Business Software Alliance
BSB—Backside Bus
BSD—Berkeley Software Distribution
BSoD—Blue Screen of Death
BSS—Block Started by Symbol
BTAM—Basic Telecommunications Access Method
BYOD—Bring Your Own Device

Abbreviations of Computer Related Terms: Alphabet-A

AAT—Average Access Time
AAA—Authentication Authorization, Accounting
AABB—Axis Aligned Bounding Box
AAC—Advanced Audio Coding
AAL—ATM Adaptation Layer
AALC—ATM Adaptation Layer Connection
AARP—AppleTalk Address Resolution Protocol
ABCL—Actor-Based Concurrent Language
ABI—Application Binary Interface
ABM—Asynchronous Balanced Mode
ABR—Area Border Router
ABR—Auto Baud-Rate detection
ABR—Available Bitrate
ABR—Average Bitrate
AC—Acoustic Coupler
AC—Alternating Current
ACD—Automatic Call Distributor
ACE—Advanced Computing Environment
ACF NCP—Advanced Communications Function—Network Control Program
ACID—Atomicity Consistency Isolation Durability
ACK—Amsterdam Compiler Kit
ACL—Access Control List
ACL—Active Current Loop
ACM—Association for Computing Machinery
ACME—Automated Classification of Medical Entities
ACP—Airline Control Program
ACPI—Advanced Configuration and Power Interface
ACR—Allowed Cell Rate
ACR—Attenuation to Crosstalk Ratio
AD—Active Directory
AD—Administrative Domain
ADC—Analog-to-Digital Converter
ADC—Apple Display Connector
ADB—Apple Desktop Bus
ADCCP—Advanced Data Communications Control Procedures
ADO—ActiveX Data Objects
ADSL—Asymmetric Digital Subscriber Line
ADT—Abstract Data Type
AE—Adaptive Equalizer
AES—Advanced Encryption Standard
AF—Anisotropic Filtering
AFP—Apple Filing Protocol
AGP—Accelerated Graphics Port
AH—Active Hub
AI—Artificial Intelligence
AIX—Advanced Interactive eXecutive
Ajax—Asynchronous JavaScript and XML
AL—Active Link
AL—Access List
ALAC—Apple Lossless Audio Codec
ALGOL—Algorithmic Language
ALSA—Advanced Linux Sound Architecture
ALU—Arithmetic and Logical Unit
AM—Active Matrix
AM—Access Method
AM—Active Monitor
AM—Allied Mastercomputer
AM—Amplitude Modulation
AMD—Advanced Micro Devices
AMQP—Advanced Message Queuing Protocol
AMR—Audio Modem Riser
ANN—Artificial Neural Network
ANSI—American National Standards Institute
ANT—Another Neat Tool
AoE—ATA over Ethernet
AOP—Aspect-Oriented Programming
APCI—Application-Layer Protocol Control Information

API—Application Programming Interface
APIC—Advanced Programmable Interrupt Controller
APIPA—Automatic Private IP Addressing
APL—A Programming Language
APR—Apache Portable Runtime
ARC—Adaptive Replacement Cache
ARC—Advanced RISC Computing
ARIN—American Registry for Internet Numbers
ARM—Advanced RISC Machines
AROS—AROS Research Operating System
ARP—Address Resolution Protocol
ARPA—Address and Routing Parameter Area
ARPA—Advanced Research Projects Agency
ARPANET—Advanced Research Projects Agency Network
AS—Access Server
ASCII—American Standard Code for Information Interchange
ASG—Abstract Semantic Graph
ASIC—Application-Specific Integrated Circuit
ASIMO-Advanced Step in Innovative Mobility
ASLR-Address Space Layout Randomization
ASM—Algorithmic State Machine
ASMP—Asymmetric Multiprocessing
ASN.1—Abstract Syntax Notation 1
ASP—Active Server Pages
ASP—Application Service Provider
ASR—Asynchronous Signal Routine
AST—Abstract Syntax Tree
ASSP—Application-Specific Standard Product
AT—Advanced Technology
AT—Access Time
AT—Active Terminator
ATA—Advanced Technology Attachment
ATAG—Authoring Tool Accessibility Guidelines
ATAPI—Advanced Technology Attachment Packet Interface
ATM—Asynchronous Transfer Mode
AVC—Advanced Video Coding
AVI—Audio Video Interleaved
AWK—Aho Weinberger Kernighan
AWT—Abstract Window Toolkit

Thursday, July 26, 2012

Fine-Tuning Your Hardware

By:  Whitson Gordon  & Kevin Purdy

On some systems, Ubuntu and other Linux systems will install as if they they had always been right there on your system. Other times, there's a piece missing. Here's how to patch up the last piece (or two) of your system if not everything's working right off. 

Note: Like other sections of our Getting Started on Linux series, this guide is written from the perspective of a new Ubuntu user. But the knowledge is univerally helpful, many of the tips can be applied in other systems, and the last bit on troubleshooting is handy for any Linux newcomer.

The Biggie: Get Wi-Fi Working
You might load in an Ubuntu CD or USB drive and have your Wi-Fi working right away, as if it was built for this Linux stuff. Or you might spend an annoying bit of time searching out Windows drivers and re-jiggering them for Linux use. It's hard to tell, but it's very annoying to encounter Wi-Fi problems right off—since, you know, you can't go online to find a solution, or download the right fixes. If you'd like to know where your wireless card stands, check out HJ Heins' gigantic If your WI-Fi card is listed in the green, you're likely good to go, and most distributions can work with it. If not, the second place to check is Ubuntu's community documentation, where owners of certain finicky cards have posted their solutions for all to follow. Beyond that, you can turn to this basic troubleshooting guide, along with the help available through Google, the Ubuntu Forums, and other community resources (our tips on doing so are a bit further down).
When all else fails, use your wireless card's Windows driver. Odd-sounding, sure, but you can use a tool to "wrap" the Windows driver for use in Linux. If you want to jump in, download the Windows driver for your WI-FI hardware, un-pack them, then install the ndisgtk package in Ubuntu (either with a temporary ethernet cable, or with offline means). Launch the app from the System->Administration menu ("Windows Wireless Drivers"), then load the INF files from your Windows package with the "Install New Driver" button.
Luckily, the How-To Geek has walked through the process, step by step, in Ubuntu, and it's a
great resource.
Proprietary Drivers
While many hardware manufacturers, like Intel, make their drivers free and open source, others (like Nvidia, ATI, Broadcom, and others) don't.This means that, as an open source operating system, most Linux distributions aren't allowed to package these closed source drivers with themselves—which means you have to install them manually.
For what it's worth, open source drivers for some of these peripherals do exist. Nouveau, for example, is an open source Nvidia driver that comes with many Linux distributions. It'll give you some pretty good support, but if you want the best 3D and high quality graphics your card has to offer, you'll have to install the proprietary drivers.  
This is pretty different on every distro. Ubuntu has a very nice proprietary driver manager under System > Administration > Hardware Drivers, which will tell you the drivers available for your system and let you install them with the press of a button. Other distributions will require a bit more work. You'll have to search out the instructions for your specific distro on Google or that distro's documentation (for example, Mint has their own instructions for installing Nvidia's proprietary drivers, as does SUSE).

This isn't just for graphics cards, either. If you have a particular Wi-Fi card or other piece of hardware that doesn't have open source drivers, you'll need to use this method for them too. Generally, this is the first thing I do whenever I install a fresh copy of Linux—check what proprietary drivers are available and enable them.
Proprietary Stuff: DVDs, MP3s, Video
Formats, and More
Ubuntu is not the most puritanical of Linux distibutions when it comes to open software, but it doesn't go so far as to build in access to MP3s, DVDs, licensed fonts, and other items that you probably take for granted on most computers, but which require tricky licensing. But getting access to the good stuff has become remarkably easy. So easy, in fact, it's basically two steps now:
Step One: If you're in Ubuntu right now, click here to install ubuntu-restricted-extras. If you're not in Ubuntu at the moment, you could bookmark this page and click that link when you get into Firefox. You could also grab an installer from Ninite, or head to the Ubuntu Software Center (found in the Applications menu in the upper-left desktop corner) and search for "ubuntu restricted," then install the ubuntu-restricted-extras result.
Step Two: Open up a Terminal (Applications->Accessories->Terminal), then enter this line and press Enter:

sudo /usr/share/doc/libdvdread4/install-css.sh 

Now you've got support for MP3s, commercial DVDs, most of the video and audio formats you'll come across, Java, Windows-specific fonts, and everything else you might encounter. And it didn't hurt at all, did it?

Other distributions usually offer a similar kind of "restricted goods" package in their repositories, or app offerings. Search your installer package (YUM, Synaptic, or another offering from the main menu) for things like "mp3," "avi," "Windows media" and the like.

Extra Mouse or Keyboard Buttons
By default, your mouse probably works just fine—left click, right click, scrolling, and even sometimes forward and back buttons work out of the box in Linux. However, if you want to remap your fancy mouse's extra buttons, you'll need to do so manually. There are a ton of different methods, but I've always found xbindkeys to be the easiest program. It's quite intimidating but fear not—it's actually remarkably simple. For this demonstration, I'm going to map my mouse's hidden thumb button to Ctrl+T, so I can open new tabs in Firefox with ease.

To start, we want to figure out the names of the buttons on our mouse. Each button is numbered, but it's hard to tell which button is which just by looking at it. So, to find out, run the following command:


This will open up a small white window with a box in it. Place your cursor in the white window, but outside of the box and press the button you want to remap. In this case, we're pressing the thumb button. Xev will give you a few lines of code in the terminal, like:

ButtonPress  event,  serial  33,  synthetic  NO,  window  0x4e00001, root  0x142,  subw  0x0,  time  568329,  (93,19),  root:(96,714), state  0x0,  button  10,  same_screen  YES

See on the last line, where it says button  10? That's what we're looking for. Looks like our thumb button is button #10 on our mouse. Hit Ctrl+C to exit xev, make a mental note of your button's number and move on to the next step.

Next, we'll need to install two programs: xbindkeys and xautomation. In Ubuntu, that means running the following command:

sudo  apt-get  install  xbindkeys  xautomation

After that, you'll want to create a config file for xbindkeys. To do this, run:

                              xbindkeys  --defaults  >  /home/your-user-name/.xbindkeysrc
Replacing your-user-name with your username. This command should be the same on all flavors of Linux. Next, we'll want to edit that file, so open up your file browser, head into your home folder, and go to View > Show Hidden Files. You should see the .xbindkeysrc file show up at the bottom of the list. Double-click on it, and add the following lines of text to the end of the file (but before the  #  End  of  xbindkeys  configuration  # line):

#  Thumb  Button  =  Ctrl+T 
"xte  'keydown  Control_L'  'key  T'  'keyup  Control_L'"

Xte is a program that's part of the xautomation package that we downloaded earlier, and it simulates keypresses. In this case, we're simulating pressing the left Control key down, hitting T, and then releasing the control key. b:10 corresponds to the button number we found earlier. See? Not that difficult. You can now go back to xev and figure out your other mouse button numbers, and remap them as you see fit. If you need to know the names of other keys on your keyboard, xte's manual page lists some useful ones.
You can do a whole lot of things with xbindkeys, and we won't dig into it here—this should get you started on at least getting a bit of functionality out of your mouse—but check out Ubuntu's Keyboard Shortcuts guide for more info. I'd also highly recommend googling xbindkeys and the name of your mouse, or what you want to do. You'll find some pretty neat tutorials out on the net. Good luck!

Where to Get More Help
Obviously, this is just the tip of the iceberg. Because Linux is so endlessly configurable, there are a lot of things you can do—and a lot of hardware you can do it with. Luckily, there are also a lot of great places to get help, including:

Ubuntu's Community Documentation: This is a great place for frequently sought-after info. You can find out about things like mapping your mouse buttons (which we discussed above), and even search for a specific laptop or netbook model to see what tweaks you'll have to make to get all your hardware working. In fact, if you're running Linux on a laptop or popular desktop computer, the first thing I'd recommend doing is searching the Community Documentation for your model—you'll find almost all the info you need to get your hardware up and running.

The Arch Linux Wiki: While it's designed for Arch Linux users, it's still one of the best Linux wiki's I've ever seen. You'll need to keep in mind the distro you're using when you read it (for example, when they tell you to install a package with pacman, you'll need to remember to run the command using apt-get, or whatever your distro's package manager is), but other than that, it's a great resource, especially when it comes to command line tools and getting hardware working.
The Ubuntu Forums: It's one of the biggest Linux forums out there, so if you  have a problem, chances are someone's already asked about it on the Ubuntu Forums. Google the problem you're having (using the tips below), and if you don't find anything grab an account at the forums and ask it yourself—trust me, as a beginning Linux user, you'll be spending a lot of time here. You might as well get an account now.
Google: Frankly, the best way to find what you're looking for is to search Google. The above resources are all great, but what I usually do is Google my problem, then look for a result from the top three sources—if they exist, it's likely they'll contain the solution to my problem. Make sure your search terms are good, too—try using the word "solved" in your search terms, or if you see the name of a program on one page hat you think does what you want it to do, try googling for tutorials on that program.
Lifehacker: We've got quite a few Linux-savvy readers here at Lifehacker, so if you're looking for advice, our weekly open thread is a great place to find it. Your fellow readers may not be able to answer super-specific questions ("I'm trying to do X with program Y and it's giving me this error code. What do I do?"), but they'll be a wealth of knowledge when it comes to the general stuff ("What's the best way to remap my mouse's button to open a new tab in Firefox?").

Installing Linux on Your Computer

By:  Whitson Gordon  & Kevin Purdy 

So you've decided to give Linux a shot, and you've found a distribution that suits you. But how do you actually get it installed? Here, we'll show you how to create a live CD or USB drive, boot into Linux, and install it on your system.Whether you've played around with live CDs and drive partitioning before or this is your first time, this guide will get you up and running with Linux in just a little bit of time. It isn't the most straightforward process, but if you're reading this, you're probably experienced enough with a computer to pull this off—it just takes a bit of legwork. 

Note: If you're installing Linux on a Windows computer, the process shouldn't be too difficult
(though you may want to brush up with our previous installation guide while you're here). If
you're installing on a Mac or Hackintosh, however, you'll need to perform a few extra steps,
so definitely check out our triple booting guide for Macs and Hackintoshes, even if you aren't
triple booting.
Burning a Live CD or USB Stick

There are a few different methods for installing Linux on your computer, but generally, the
most popular way is by downloading and burning a live CD (which has its own uses besides
just installing Linux). I'll show you how to do both here. The live CD method is probably
easier, so go that route unless you're on a netbook, or otherwise can't burn a CD.
The Live CD Method
You'll have to get your live CD from the net, so head to your distribution's home page (like Ubuntu's)and look for a downloads section. Most will make it pretty easy to find. In addition, many sites will even host BitTorrent downloads of their distribution too, which will be a little faster—so if you see a link for "alternative downloads", check that out. Otherwise you can probably download it directly from the site.
You'll probably have a few different choices when you download. For example, some distributions have netbook-optimized versions, while others (like Ubuntu) will offer different versions based on the desktop environment they come with. And, most will have 32- and 64-bit versions available as well (if you don't know which one's right for you, we've written a handy guide to help you out). Generally, it shouldn't be too hard to figure out which one you want. When in doubt, just go with the 32-bit desktop version (sometimes labeled "i386").
Once your .ISO file is done downloading, open up your favorite burning program and burn that sucker to a blank CD. It's pretty easy to do on Windows 7. Once it's done burning, restart your computer. Wait for the "press any key to boot from CD" prompt, and then press a key. Once the CD boots up, it'll give you the option to try out Linux or install it. Go ahead and click install. If you want to try it out, though, go for it—you'll be able get a pretty good feel for what the desktop is like. When you're ready to install, you can usually launch the installer right from the desktop.

The Live USB Method

The Live USB method requires previously mentioned Unetbootin for Windows. All you need to do is download it, start it up, and you can manage everything from right inside the program. Pick your distribution from its list (remember to pick the right version, as described above), pick the drive letter that corresponds to your thumb driveat the bottom, and hit OK. If Unetbootin doesn't list your distribution, you can still download an ISO as described in the live CD method and point Unetbootin to that file instead.
Booting from your USB drive will take a few extra steps over the live CD method. While your computer is probably set to check your CD drive for bootable discs, it probably isn't set to check your USB ports. So, with your newly created live USB stick plugged in, restart your computer and enter your BIOS setup (usually by hitting a key like Delete when you first start up—your computer's splash screen will let you know when you first turn on your computer). Head over to the "Boot" section of your BIOS and find the section for changing your PC's boot order. You'll want to move your USB hard drive to the top of the list. Save your settings and exit the BIOS. When your computer reboots, it should take you to the Unetbootin menu, from which you can boot into your Linux live session (as described in the live CD method).
The Installation Process

The installation process will be slightly different for every distro, but in general setup should guide you through the necessary steps pretty easily. Assuming you're installing Linux alongside another OS like Windows, though, there are a few things you'll want to pay attention to.

Partitioning Your Drive  
When the installer asks you where you want to install Linux, you'll have to partition your drive. We've gone through how to do this a few times before, and it's usually pretty simple to add new partitions from the free space on your drive.
Ubuntu's installation should partition the drive for you automatically, and unless you have any special needs (like if you're on a Mac), you can breeze right through the installation with no problems. If not, you may be given a more advanced partitioning tool, and you'll have to create the partitions yourself. If this is the case, you'll actually want to create two new partitions. One is for the operating system itself, which I'd format as Ext4. Give it at least 10 GB of space, and set the mount point as /. You'll want to create the second partition for what's called swap space. This essentially helps your computer manage memory more effectively and keeps it running fast. If you have a small amount of ram (one or two GB), you'll want your swap partition to be twice as large as the amount of RAM you have. If you have 3 GB or more, you can probably just make a swap partition that's the same size as the amount of RAM you have.
GRUB and Other Bootloaders

Linux is going to install a new bootloader for you called GRUB. It's going to replace your normal bootloader and give you the option to choose between Windows and Linux at startup. In general, you shouldn't have to do anything here—most distros will install GRUB by default, and it should work correctly out of the box. Just note that Mac users will want to install GRUB on the Linux partition itself, and Windows users will need to be careful since if you reinstall Windows, you'll lose GRUB and have to reinstall it yourself. Of course, if you prefer something a little prettier, you can mess around with previously mentioned Burg, but we'd recommend doing that after you get your Linux installation up and running.
That's it! To boot into your newly installed Linux partition, you just need to restart your computer. When you do, it'll take you to the GRUB menu, which will let you choose whether to boot into Linux or Windows. From there, you can play around with your new Linux installation. It'll probably come with quite a few apps installed, some you'll recognize and some you won't, and you can poke around in the settings and see what's available to you. If you're lucky, most of your hardware will work. If you're unlucky, you'll have a few quirks with your hardware, and if you're really unlucky, your Wi-Fi won't work out of the box and you'll have to work just to get connected to the internet. Luckily, we'll be talking all about getting your hardware working  in next chapter.

Wednesday, July 25, 2012

Pick the Right Linux Flavor for You

By:  Whitson Gordon  & Kevin Purdy

Pick the Right Linux Flavor for You

If you've decided to give Linux a go, maybe for the second time, it's time to pick out a system and at least load it onto a "live" USB stick. If you're new to the Linux world, here are the distributions we recommend trying out.

Note: We could publish our own Wikipedia about all the different distributions, or "flavors" in our headline speak, of Linux out there. Instead, we're going to simply make a pitch for four different systems Lifehacker editors have been known to use. You can try out all of them (except Arch, perhaps) from a live CD or USB image you can download from each of their sites—and we'll show you how to do that tomorrow.
Ubuntu: The Go-To Option For Most
Ubuntu is a lot younger, and different, than a lot of Linux distributions. It was founded by a man with a good chunk of money and a dream of making a kind of mainstream Linux: a distribution of, as the tag goes, "Linux for Humans." There are Linux flavors that are lighter on resources, or easier for beginners, or more robust in certain aspects. But Ubuntu is where you can find a distribution designed for usability, supported by a huge community of enthusiasts, and moving forward at a pretty rapid clip.
Because of all that community support and attention, it's where we recommend newcomers start off with Linux. It's the best shot you've got at 100% hardware support, and it's honestly the most Google-able distribution when you want to learn or tweak something.

There are also a host of Ubuntu "variations" you can turn to. They're basically the same core
system with a different or customized desktop environment (and Here's what that actually
means). So try a KDE desktop (Kubuntu), the lower-spec-friendly XFCE (Xubuntu), a flavor
specific to your tiny little computer (Netbook Edition), or the many other options. 
Linux Mint: Even More Beginner-Friendly

Linux Mint owes more than a little of its core software, and inspiration, to Ubuntu, but it's a successful branch into a more cohesive, and even more beginner-friendly realm. All the stuff you'd expect to find on an OS, like MP3, DVD, and Flash, are included by default, the menu is more Start-like, and the system has a cohesive feel and a lot of smart choices made for newcomers. Blogger Jeff Hoogland makes a richer case for Mint over Ubuntu, and his points are good ones. Mint is a good pick for those tired of playing around with text files (though you're still able to do that, of course).
Fedora: The Solid Alternative
Fedora is the personal desktop offshoot of enterprise Linux firm Red Hat. The team puts out a robust operating system that updates regularly, they incorporate cutting-edge Linux developments at a rapid pace, and they support a variety of hardware, even extending an olive branch to PowerPC users. Using Fedora doesn't feel entirely different from Ubuntu, but one main difference comes in the package installer—the app you use to quickly install apps from the distribution's own servers. Overall, it's a good pick, and really a matter of preference.
Arch Linux: The Starting-from-Scratch Project

Don't try to set up Arch Linux during a lunch break. Do dig into Arch Linux if you want to learn way more about Linux, get a system at just the right size and configuration for your needs, and want a crash course in how to tweak a Linux system for better performance.