What are some of the best sites on the web you can recommend to help me learn Linux so I can finally ditch Windows?
December 15, 2010 1:31 AM   Subscribe

Linux Filter: What are some of the best sites on the web you can recommend to help me learn Linux?

Apologies in advance to anyone getting miffed at the large number of Linux related questions on AskMe. My goal in asking this question is to find other sites to ask Linux questions so I don't have to clog up AskMe with Linux questions. I saw many Linux related posts, but I didn't see any that asked specifically about other web resources for Linux. Sorry if I missed them.

I've been meaning to learn Linux for a long while now. I always seem to sputter out and fall back on Windows because it's what I know. I would love to hear any and all recommendations for some of the best sites/web resources out there for learning Linux. I've done enough to know about Live CDs and such. I'm not really interested in those since I have three unused PCs that I can install distros on and see how they interact etc. My biggest problem in learning Linux so far, I think, is that I'm overwhelmed by the sheer number of sites out there. I haven't found any really good communities for some reason.

Things I am especially interested in:

(In general)

- Primarily command line usage. I prefer this to using a GUI, although I recognize the GUI can be a lot easier many times, especially for newbs.

- Free or low cost online training courses. Again, command line preferred.

- Best web resources for bringing a semi-skilled XP guy up to speed on Linux. Where to go for help when needed without expecting hand holding.

(More specific.)
I'm just mentioning these as examples. I don't expect answers to these topics here on AskMe.

- Strategies for disk partitioning. When I need "extra" mount points (/usr, /var etc.) How to add or delete them later if I change my mind? What are the implications relating to this?

- Doing things like adding support for hardware (eg: a NIC driver) that is available from a manufacturer but is not supported by a distro I am trying to use. Building drivers from source.

- Understanding better the reasons for and perils of certain distros using older versions of applications. Sometimes it seems to take a long time for the newest application updates to make it into the Linux repositories. I'd like to know how to install cutting edge apps (especially for security patches) when I feel I need to and not shoot myself in the foot the next time I do an online update of a distro.

- Server vs. Workstation builds

- Linux networking. Intermingling Linux and Windows machines and network devices (printers, routers, etc.)
posted by InsertNiftyNameHere to Computers & Internet (27 answers total) 26 users marked this as a favorite
 
The best way to learn Linux is to install it, then break it, then fix it, and repeat. Do that and learn as you go.
posted by devnull at 1:33 AM on December 15, 2010 [3 favorites]


Something I found really useful when I started to play with Ubuntu was to grab a couple of books about it, and work through them. Mark Shuttleworth's stuff was particularly useful. You could either get them through Amazon, or I believe there might be copies out there on the web..

When I've run into difficulties with ubuntu, I generally find that googling "ubuntu (10.10) (nature of problem)" feeds me through to either ubuntu's documentation or their community forums. Both are generally enough to solve the problem. Otherwise asking the question on the forums gets the job done.
posted by Ahab at 2:51 AM on December 15, 2010


Your first choice is your distribution. A lot of things are the same across distros, but having a distribution gives you a go-to community for questions and in some cases a particular starting point (e.g., most distributions run their own package management, default configurations, etc.)

It sounds like you want to get under the hood a bit, so I would recommend Debian. It's a very large, mature, and well-supported project that doesn't set out to hide everything under a shiny, locked down GUI. I like Debian because it'll get you running about 30 minutes after you burn the install disk, and then you can play around to your heart's content.

One Debian caveat: it's not the most cutting-edge of distros. You will need to do some work to get the latest wireless drivers or what have you.

Even more customizable and educational is the approach taken by Gentoo and, worse, Linux from Scratch. The latter actually has you build your own distribution piece by piece; at the end, you're either a Linux guru or utterly mad. Meanwhile, distros like Ubuntu will make everything very user-friendly at the cost of separating you a bit from your own computer. I don't think, if your goal is to learn Linux rather than merely use it, that you should pick Ubuntu.
posted by d. z. wang at 3:21 AM on December 15, 2010 [1 favorite]


The single most important thing for getting familiar with linux is picking one distribution and sticking with it. If your goal is to learn about it, instead of use it for common tasks with minimal hassle, it does not matter if the distribution you pick is the best for your needs or if it is especially windows-friendly. What matters is that you stick with one and, when something breaks or doesn't work as expected, keep at it until you understand what is really happening and find the solution to your problem.

It follows from this that the forum you need to be reading is the forum for your distribution of choice - I have been using arch for a while, and they have a reasonably complete wiki and good forums.

On to your more specific questions:

- Strategies for disk partitioning. When I need "extra" mount points (/usr, /var etc.) How to add or delete them later if I change my mind? What are the implications relating to this?

Have a look at the Filesystem Hierarchy Standard.

- Doing things like adding support for hardware (eg: a NIC driver) that is available from a manufacturer but is not supported by a distro I am trying to use. Building drivers from source.

Do you know any C? If you are going to muck about with this kind of thing, it pays to know, for example, what a header file is or what the error messages your compiler is spitting out might mean. You don't need to become a kernel hacker, just learn enough so you can write and compile a hello world program.

- I'd like to know how to install cutting edge apps (especially for security patches) when I feel I need to and not shoot myself in the foot the next time I do an online update of a distro.

This one is very distribution specific, I suggest you tackle it after you have settled down with a distro and feel comfortable keeping up with their bleeding-edge development packages.

- Server vs. Workstation builds

A server can be any number of things, from the boxes running google to a <>BSD toaster. The general principle is that a server must do only what it needs to do, because maintaining unwanted stuff on a system other people are depending on is both an unnecessary and a potential source of problems.

It's a pretty big subject to study in the abstract, since you have spare machines lying around a good idea would be to start a toy project, such as a personal file or web server.

- Linux networking. Intermingling Linux and Windows machines and network devices (printers, routers, etc.)

The good thing about networks is that, in an ideal world, nobody cares what system you are running. Familiarize yourself with basic networking concepts such as TCP/IP and the linux-specific stuff should come naturally.

AFAIK askme isn't running out of electrons, if you have any questions ask away.


posted by Dr Dracator at 3:22 AM on December 15, 2010 [2 favorites]


RUTE
posted by anadem at 3:27 AM on December 15, 2010 [2 favorites]


I learned as much as I know about Linux by just deciding one day that I'd had enough of Redmond's bullshit, I loathed the locked-in direction that Apple was heading in, and that I was just going to use Linux or not use the computer. Having had a bit of Unix experience at college helped some, but most of what I know has been acquired over time by the xkcd method.

The first Linux distro I played with was Red Hat 9, and I had a lot of fun running that into the weeds and then recovering from my mistakes.

I didn't persist with the Red Hat/Fedora family because I wasn't all that fond of the enterprise vs. personal development model, I didn't much like the "everything and the kitchen sink" feel of the default install, and never having had much fun with RPM package management was inclined to believe the rumours that Debian packaging shat upon it from a great height.

After a brief flirtation with Gentoo, I settled on Ubuntu for a while. I really enjoyed Ubuntu - it was lovely to see it get better and more polished by leaps and bounds every six months.

I did a couple of Dapper installs for people I knew who were also sick of Redmond's bullshit (mainly families with teenage Windows sysadmins who were tired of needing to un-bugger their computer every six months), and found that even then, the followup support required for those was less time-consuming and far more enjoyable than that for comparable Windows installs.

By the time Hardy came out, it was clear to me that Windows really was a complete waste of time on the desktop by comparison, at least for end uses not tightly tied to Windows-hosted proprietary apps like QuickBooks, and I started being rather more forward in promoting Ubuntu to customers. That paid off bigtime; about 90% of them ended up preferring it.

But Ubuntu jumped the shark with Lucid, and I've finally got around to using dear, sweet, patient old Debian on my own machines (including the old 733MHz, 3TB UPS-protected box being used as a headless server that chugs away 24/7 in the back room). I'm enjoying the same lovely package management Ubuntu got me accustomed to, and enjoying using a system that I feel has the right development balance between making stuff work well and making it look slick. I've done one Debian Squeeze desktop install for a customer (I'm also supporting another, that was done by somebody else), a couple of Squeeze server installs at work, and so far it's even less trouble than Ubuntu.

Command line: start here.

This is my preferred partitioning scheme for desktop Linux installations.

Support for recent hardware: path of least resistance is to use the most up-to-date pre-built kernel release your preferred distro can offer you. Next is building a recent kernel from source. Only if your hardware is still not supported that way will you need to add specific driver code to your kernel source.

Linux native support for wireless NICs is now very extensive; most of the time, the driver you need will already be in the kernel. But if you have an inflexible requirement to use an unsupported one for which only a Windows driver exists, you will probably be able to use the Windows driver in Linux via ndiswrapper.

Putting Linux and Windows boxes on the same network and figuring out good ways to give them the use of each other's facilities is indeed a really good way to teach yourself a lot of stuff very quickly. The single most essential tool is wireshark, an excellent cross-platform network packet analyzer.

There are many, many ways to share files between *nix and Windows boxes over a network. Most of what you'll find on the net pertains to using Samba to support the Windows file serving protocols on Linux. Samba is mature, complete, and huge, but IPP works better for sharing Linux-hosted printers, and for simple file sharing jobs I've recently started installing this neat little SSH/SFTP server on any Windows box I want remote access to.

Learn about ssh tunneling if you're not already using it regularly. In fact, learn about ssh in general. It's an absolute Swiss army knife for doing damn near anything remotely. If you find yourself setting up a weird and baroque collection of daemons and clients to get just about any networking job done, have a bit of a look around and see if the same thing can be done just by throwing a few command line options at a ssh client. You will be impressed by how often it can.

I know of no better way to learn any complex system than just committing to using it and taking the time to solve problems as they arise. If you think about it, I'm sure you'll find that you acquired most of what you know about Windows in exactly that way.

Also, I've personally found AskMe to be an excellent resource for helping me sort out my own Linux-related problems. It's generally where I'll end up whenever my eyes! the Googles do nothing!
posted by flabdablet at 4:16 AM on December 15, 2010 [5 favorites]


Linux Questions has answered any random obscure question I ever had as I embarked upon the trial and error method. If you can face it, I recommend setting up a Gentoo system by following the guide (it's very very detailed) and by the end you'll have a good introductory knowledge and have a system you built your way etc...
posted by dougrayrankin at 4:43 AM on December 15, 2010 [2 favorites]


I'd also recommend picking up a book and using it in conjunction with learning your O/S.

I think also your distro is going to depend on what you need it for; I'm working on Red Hat, so I have CentOS installed at home. But reading a cert guide like an RHCE guide or maybe A+ might be helpful because of the comprehensiveness of the material.

The rest is just fuck around, get an error, try to figure it out yourself, cry, get mad, give up, google it, spend hours looking up the solution's new commands in the man pages, then implement.

Oh, Linux. You beautiful bastard.
posted by mckenney at 5:10 AM on December 15, 2010 [1 favorite]


My own Gentoo experience showed me that a system I built my way turned out to be almost completely useless because none of my choices were sufficiently well-informed.

One of the things I really, really enjoy about Debian is the obsessive care that's clearly been put into making all its pieces Just Work, whichever order you choose to put them together in. The default installation is small by comparison with any other distro except the deliberately tiny ones like Damn Small, and it Just Works until you need to do something it doesn't do at all; at which point you simply aptitude install the package containing the missing functionality and then that Just Works as well.

Making a vast collection of disparate software work together harmoniously actually requires a tremendous amount of work. It's my considered opinion that the Debian community has done more of that kind of work than any other and has well and truly got the hang of it, and that I would be both foolish and arrogant to assume that I could do better at it on my own.

Yes, it's occasionally fun to tweak and fiddle. But I've found that it's more fun to own a no-brainer fully functional computer that lets me concentrate on extending other skills in new directions, rather than spending most of my time reinventing software integration wheels.

Of course, being able to tweak and fiddle when necessary is one of the major points of difference between using open-source software instead of the proprietary mystery meat. For ecample, there's simply no way I could have got my most recent customer's weird-ass LCD TV* working as well with Windows as it does on Linux; Linux lets me add modelines to xorg.conf to get really fine-grained control over what the video output signal looks like, which is something that's simply not possible with the proprietary Windows video drivers.

*It's a Wintal 27" widescreen thing - I believe its native panel resolution to be 1280x720, but for some bogus reason it refuses to display anything at all via its VGA input if the signal doesn't conform to standard 640x40, 800x600 or 1024x768 timings for 60Hz or 75Hz frame rates. If I generate 60Hz frames with 720 visible scan lines, it displays either a blank blue screen or a letterboxed re-scaling into a virtual 768-line frame depending on how fat I make the vertical blank part. So I've bodged up a 1368x768 modeline that makes the TV think it's still seeing 1024x768, just by multiplying the pixel clock and all the horizontal timing numbers from the 1024x768 modeline by 1368/1024. Linux now behaves as if it were feeding a proper 1368x768 panel with square pixels, the TV does the same semi-competent scaling violence horizontally as vertically, and looks as good as it ever did when fed 1024x768 but without all the fat heads. Ah, the joys of analog video.
posted by flabdablet at 5:31 AM on December 15, 2010


IMO, the best way to 'learn linux' is to build something useful with it-- for example, try to wordpress up and running on it, or a file server.
posted by empath at 5:54 AM on December 15, 2010 [1 favorite]


for everyday use, Debian or Ubuntu are hard to beat, but for truly learning about how Linux works from the ground up, doing a gentoo install from stage1, or following the linux from scratch directions are invaluable. Once you've finished banging your head against that wall, Debian or Ubuntu will be a breeze :)
posted by jrishel at 7:29 AM on December 15, 2010


My goal in asking this question is to find other sites to ask Linux questions so I don't have to clog up AskMe with Linux questions.

SuperUser.com is probably a good one. It's a sister site (spinoff, really) of the more well-known site ServerFault and Stack Overflow.

ServerFault is for, as the name implies, server related questions, Stack Overflow is for programming / code questions, while SuperUser is for usage and administrative questions.

I've often found that by searching across those sites that I can find answers to questions without actually having to ask them. (Make sure to search ServerFault even if your question is end-user-related, as prior to the creation of SuperUser, ServerFault got a lot of 'power user' non-server questions. They are a bit less tolerant of that now.)

I always used to advise anyone interested in Linux to go down into the basement, or into the closet, or wherever hardware goes to die in your house, and drag out some old box and install Linux on it. This can still be really instructive, particularly if you don't concentrate too hard on 'getting it right' the first time. Set up a system, mess around with the disk partitioning, use it a little bit, and then wipe and redo it once you've realized the things you did wrong. I'd try a couple of distros ... I used to be a big fan of Ubuntu but in the past couple of releases I've gotten less enthused about it and more excited about Fedora. YMMV.

It's not clear to me that this is really required anymore. I certainly wouldn't do it if you don't have a spare PC sitting around, or if you're not in need of an electric space heater.

You can go, right now, and get a free "micro" tier cloud instance from Amazon, and play with it for a year. That's pretty awesome, and to be honest I think the experience of working with a cloud-based service (one you can scale up and down) is probably more useful than knowing how to do a lot of partitioning magic.

Of course if you are looking to get rid of Windows you'll want to eventually have a desktop system, but if you just want to play around with Linux, a cloud instance could work pretty well.
posted by Kadin2048 at 8:31 AM on December 15, 2010


Apologies in advance to anyone getting miffed at the large number of Linux related questions on AskMe. My goal in asking this question is to find other sites to ask Linux questions so I don't have to clog up AskMe with Linux questions.

Personally, I like Linux questions on the green, and don't see anyone apologizing for too many Windows and Mac questions. Of course, there are specific questions better asked in forums specific to the technology.

Debian's a fine choice. But under the hood, Ubuntu's a Debian and if you do a "command-line only" installation from Ubuntu's Alternate Install CD, you're left with a system very much like a base Debian installation, with more up-to-date packages than Debian Stable or Debian Testing, and, it is to be hoped, more stability than Debian Testing or Debian Unstable (nothing's more stable than Debian Stable.) But today's Debian Testing is neither excessively outdated (which it has been at some points in the past) nor egregiously unstable -- I'd be entirely willing to consider it for daily desktop use. But for now I'm still an Ubuntu 10.04 (aka Lucid) user -- it's not the latest release, but it's a long-term support (LTS) release and will have security updates for 3 years. And I didn't find anything compelling in the latest release.

If you want to concentrate on the command-line, consider running without a desktop environment at all (Gnome and KDE are the big names, XFCE the next biggest.) GUI-eschewing command-line lovers often like keyboard-centric tiling window managers like Awesome, Ratpoison, or Xmonad, or lightweight keyboard-friendly GUI window managers like Openbox. (I use Ratpoison myself.)

The Ubuntu wiki and forums and other sources can be very Gnome-centric, and KDE-centric when they're not Gnome-centric, and if you look for a solution for your problems there, you'll often find it only in terms of clicking through menus you don't have. The Arch wiki and forums are full of command-line-centric users and I often find them more useful to me.

Read up on your shell. In nearly all Linux distros, this means Bash by default, but some folks prefer Zsh. From Bash to Z Shell is a pretty good book.

commandlinefu and shell-fu provide zillions of examples of how people are using their shells and command lines.

Command-line users should know a general text-munging tool -- one of Perl or Ruby or sed & awk together. I'd suggest Perl or Ruby which can be highly useful outside of just munging streams.

Read up on your distro's package management tool. For Debian and Debian derivatives like Ubuntu, this means apt-get.

Strategies for disk partitioning

Logical volume management gives you considerable flexibility in manipulating virtual partitions.

Doing things like adding support for hardware (eg: a NIC driver) that is available from a manufacturer but is not supported by a distro I am trying to use. Building drivers from source.

NICs are pretty well handled, and you probably won't run into this exact case. But it's useful to be able to compile things from source.

I'd like to know how to install cutting edge apps (especially for security patches)

Well-supported distros will generally take care of the security patches for you. It's the cutting edge part you're more on your own with. The more you avoid doing an end-run around your distro's package management, the easier your life will be. You'll find lots of "how to build from source" articles on the web that end "now run make install as root." That's setting you up for pain. So learn how to wrap your hand-built things in a package the package manager recognizes. In Debian, checkinstall makes it quick and easy.

In the Ubuntu world, odds are someone else has already built the cutting-edge app in a PPA. But I'm chary of adding PPAs to my list of sources -- the possibility for abuse is too high.

Server vs. Workstation builds

Some distros offer different choices of kernel optimized for one or the other. The rest is just what you have running on it. Servers are less likely to have the X window system. Workstations are less likely to have a web server.

As you make particular choices of tools, look for the canonical sources of info for them -- subscribe to their website's RSS feeds or their mailing lists, check out their wikis.
posted by Zed at 9:51 AM on December 15, 2010 [1 favorite]


Read up on your distro's package management tool. For Debian and Debian derivatives like Ubuntu, this means apt-get.

It used to mean apt-get. If apt-get isn't part of your muscle memory I think you're better off using aptitude instead; it has a somewhat cleaner command structure and a much more flexible dependency resolver.
posted by flabdablet at 10:14 AM on December 15, 2010


Also, anything you do install independent of the package manager should go somewhere in the /usr/local tree; the package manager won't ever put stuff in there, so your own stuff won't conflict. I keep all my handy admin scripts in /usr/local/bin.
posted by flabdablet at 10:17 AM on December 15, 2010


Reddit has a Linux4noobs forum, that's very helpful when you get stuck, and because simple-to-moderate questions have already been answered.
posted by IAmBroom at 10:30 AM on December 15, 2010 [1 favorite]


It used to mean apt-get.

Debian proper has deprecated apt-get in favor of aptitude, yeah; Ubuntu still recommends apt-get. (I use wajig as a front end, myself.)
posted by Zed at 11:14 AM on December 15, 2010


Response by poster: Wow! Loads of info here!

Thanks very much to everyone who replied. I can see I've now got LOADS more resources than before I asked the question. I promised myself that finally learning linux would be this year's winter project, so now I'll get going.

Thanks again, everyone!
posted by InsertNiftyNameHere at 3:48 PM on December 15, 2010


Working with Linux is like playing a musical instrument. It's not really something you "finally learn"; it's something you just keep getting better at with practice.

Enjoy!
posted by flabdablet at 7:08 PM on December 15, 2010 [2 favorites]


Learning the Shell.
Graphical user interfaces (GUIs) are helpful for many tasks, but they are not good for all tasks. I have long felt that most computers today do not use electricity. They instead seem to be powered by the "pumping" motion of the mouse! Computers were supposed to free us from manual labor, but how many times have you performed some task you felt sure the computer should be able to do? You ended up doing the work by tediously working the mouse. Pointing and clicking, pointing and clicking.
posted by benzenedream at 10:37 PM on December 15, 2010


Response by poster: mckenney: "The rest is just fuck around, get an error, try to figure it out yourself, cry, get mad, give up, google it, spend hours looking up the solution's new commands in the man pages"

I have definitely mastered this much.
posted by InsertNiftyNameHere at 10:38 PM on December 15, 2010 [1 favorite]


Response by poster: Kadin2048: "You can go, right now, and get a free "micro" tier cloud instance from Amazon, and play with it for a year. That's pretty awesome"

OMFG!! That is insanely cool! It's stuff like this that makes me wonder what the "mainstream" tech press (if there is even such a thing) is doing with their time. How can stuff like this be occurring and yet be unheard of by guys like me who enjoy tech and do my best to keep my eyes and ears open? I'm certainly not reading the right sites, I guess. Thanks!
posted by InsertNiftyNameHere at 10:44 PM on December 15, 2010


InsertNiftyNameHere: Concomitant to learning linux, you cannot spend enough time learning to use a text editor. Vi or Emacs, doesn't matter (so long as it's not nano/pico).

Mastery of any *nix is largely mastery of manipulating text, because almost everything in a *nix system is configured via text-based configuration files, and true mastery of linux only comes when you can configure things without resorting to GUI configuration tools (although the exception to this rule might be CUPS. CUPS is like herpes - once you've got it, it's damn-near impossible to get rid of, and every once in a while it flares up and causes problems.)
posted by namewithoutwords at 6:14 AM on December 16, 2010 [1 favorite]


Response by poster: namewithoutwords: "InsertNiftyNameHere: Concomitant to learning linux, you cannot spend enough time learning to use a text editor. Vi or Emacs, doesn't matter (so long as it's not nano/pico). "

An excellent point, and one that gives me hope for my future with the *nix world, because I actually arrived at that conclusion myself already (not tooting my own horn or anything). I have my copy of "Learning the vi and Vim Editors" by Robbins, Hannah, and Lamb right here in front of me. It didn't take me too long to realize that my transition to linux would go much more smoothly if I took the time to learn an editor that was appropriate for that world. Now I simply have to gather the nerve to jump into the deep end of the pool. Thanks!
posted by InsertNiftyNameHere at 8:02 PM on December 16, 2010


Response by poster: namewithoutwords: "CUPS is like herpes - once you've got it, it's damn-near impossible to get rid of, and every once in a while it flares up and causes problems."

Haha!! I like that one. I may have to borrow that in the future.
posted by InsertNiftyNameHere at 8:04 PM on December 16, 2010


Actually, Windows is more like herpes. It's irritating and weakens your resistance to other problems so you're better off without it, but most people you know probably already have it and common relationship practices make avoiding it virtually impossible.
posted by flabdablet at 9:07 PM on December 16, 2010 [1 favorite]


Response by poster: flabdablet: "Actually, Windows is more like herpes. It's irritating and weakens your resistance to other problems so you're better off without it, but most people you know probably already have it and common relationship practices make avoiding it virtually impossible."

Even better!
posted by InsertNiftyNameHere at 11:24 PM on December 16, 2010


« Older Open back studio headphone recommendations please   |   I'm awake, I swear... Newer »
This thread is closed to new comments.