Slashdot is powered by your submissions, so send in your scoop

 



Forgot your password?
typodupeerror
×
Linux Software

Learning More About Linux? 184

teh moges asks: "From an administrator point of view, I know a lot about Microsoft Windows: where files are stored, where settings are, which registry keys to edit, how to change drivers, and so on. I made the initial switch to Linux a year ago. I now feel capable enough with using Linux, from an end user's point of view, so that when things go wrong, I can fix them. I now want to become even more familiar with Linux. Are there any great resources, such as websites, wikis or books for someone that wants to find out exactly how Linux works and how to fix and modify it?"
This discussion has been archived. No new comments can be posted.

Learning More About Linux?

Comments Filter:
  • by 8-bitDesigner ( 980672 ) on Thursday April 19, 2007 @07:59PM (#18806483) Homepage
    I was in a similar situation about a year ago, and I found that the best way to learn about the guts of the system, so to speak, was to pick up Gentoo [gentoo.org], which is something of a "Roll your own" kind of Linux distribution.

    Now, by no means do I recommend this for day to day use. I love Gentoo, but it breaks. Frequently. And unless you know a fair bit about how the system works, you'll end up breaking it quite often yourself. This is a good thing, and introduces you to the various configuration files, locations of critical items, how everything slots together, and how to compile your own kernel. The Gentoo documentation is excellent, and if you go about it with a certain goal in mind (web server, router, media center) you'll end up learning a fair bit about Linux in the process.
  • Break It. (Score:5, Informative)

    by Tragek ( 772040 ) on Thursday April 19, 2007 @08:05PM (#18806523) Journal
    I've learnt oodles about all OSs by breaking them. Delete something. see how it changes the behaviour of the system. If it was somethign really important, you'll learn about system recovery, otherwise, trouble shooting.

    I'm serious.
  • by nschubach ( 922175 ) on Thursday April 19, 2007 @08:09PM (#18806557) Journal
    LFS [linuxfromscratch.org] (Linux From Scratch) is another way.

    Honestly though, like stated above, once you understand that Linux basically treats everything like a file... you can fix pretty much anything. As far as a good reference or tips site. Google [google.com]. 99% of the time, a quick cut and paste of an error will direct you to the right place. (That is if you don't understand it right away.)
  • Wiki (Score:2, Informative)

    by Shinsei ( 120121 ) <caledorn@CHEETAHfein.no minus cat> on Thursday April 19, 2007 @08:12PM (#18806575) Homepage
    I have found that http://gentoo-wiki.com/ [gentoo-wiki.com] is a great resource for knowledge about the basesystem itself of Linux. I do love my Gentoo of course, but you'll find resources on said wiki for Linux in general - and quite a few of them - and I've seen people from both the Debian and Ubuntu community also look to this Wiki from time to time.
  • Real men (Score:1, Informative)

    by Anonymous Coward on Thursday April 19, 2007 @08:14PM (#18806597)
    use Chilton's [chiltonsonline.com]
  • by twenex27 ( 1004369 ) on Thursday April 19, 2007 @08:16PM (#18806615) Homepage

    Linux is files. The entire OS is based on files. Things to run on startup? Files. Opening hard drives? Files. Drivers? Files. (kernel mods)
    Not quite true, of course. Networking breaks the "everything is a file model". Arguably, device drivers do too (witness the hundred and one interfaces to control different devices).
  • SOme input (Score:3, Informative)

    by TheRealMindChild ( 743925 ) on Thursday April 19, 2007 @08:25PM (#18806693) Homepage Journal
    Here is what I got, take it for what it is worth.

    See 'man Linux Filesystem Hierarchy'. In case for some reason that doesn't work on your system, here is a link -> http://tldp.org/LDP/Linux-Filesystem-Hierarchy/htm l/ [tldp.org]
  • by Ivan Raikov ( 521143 ) on Thursday April 19, 2007 @08:48PM (#18806909) Homepage
    First of all, you should have in mind that Linux is just a kernel, and what you are probably more interested in are all the userland programs that comprise your typical Linux distribution. I think it is best to start with a general Unix introductory text, because the fundamental principles have not changed in 25 years, and it is much better to understand the core Unix system utilities and how they plug together to accomplish complex tasks, rather than waste time with all the modern Windows-like interfaces that are fashionable in Linux distributions today.

    There is one "classic" Unix introduction book that I can strongly recommend, and that you can probably buy used for a dollar: Exploring the Unix System [amazon.ca] by Stephen Kochan and Patrick Wood. Make sure to get the paperback edition that is about 400 pages. Also, apparently the authors are going to release an updated version of that book -- check http://www.kochan-wood.com [kochan-wood.com] for updates.

    Once you learn the fundamentals of Unix systems, then you would be ready to learn the modern tools available in Linux distributions. Remember that is much more important to learn the principles and philosophy that Unix was built upon, rather than attempting to memorize arcane details.
  • Re:heres a few (Score:3, Informative)

    by drfrog ( 145882 ) on Thursday April 19, 2007 @09:16PM (#18807119) Homepage
    oops sorry

    it should be debuntu.org
  • by mollymoo ( 202721 ) on Thursday April 19, 2007 @09:58PM (#18807483) Journal
    Gentoo breaks as often as it does because portage's handling of dependancies is a bad joke. Actually, I don't know if it's portage itself or poor quality ebuilds, but "emerge --update world" breaks for me about 40% of the time (no, I'm not running the unstable ~x86). I'm not shitting you when I say it took me three days to bring a box which hadn't been updated for four months up to date. That wasn't all compile time, the damn thing just kept stopping. Portage apparently didn't know it would break before it started, despite the problems all being related to dependancies.

    When it breaks, portage doesn't tell you why, you basically have to search the Gentoo forums for an answer. In the inevitable thread(s) related to the problem I often find a response from a dev which says that you need to update X and Y together, so both X and Y block each other. Having the package management system manage packages for you is evidently too much to ask.

    I do like Gentoo's arrangement of config files etc. though. It's nice to work with, just shitty to update.
  • by Anonymous Coward on Thursday April 19, 2007 @10:05PM (#18807529)
    Not exactly, but it's a close enough first approximation.

    For the Ask Slashdotter: /bin stores essential programs. These tend to be very low level programs. /dev stores file-like interfaces to device drivers. You can read and write to them, just as you would a file. (Using C. You probably won't need to touch anything in there unless you're programming drivers. /etc stores configuration files. They're supposed to be text files. The syntax varies across them, so Google is your friend here. /home stores user directories. Each user gets a /home/ directory. /lib stores essential, low level libraries.

    There are a few others, but these guys are the important ones for what follows. There is also a /usr hierarchy, which has it's own bin, lib, (possibly etc). It's meant for "shareable, read only data". This is where globally installed programs usually go.

    GCC is your compiler. You probably won't have to play around with it much, but I'll talk about some tricks to give you more insight into Linux. Suppose there's a program you want to try. You create a dummy account called "dummy" for it (so your data won't be in harm's way if it's buggy). Now, when you compile the program, you'll probably have to write ./configure. But that sets up the compile so that it gets installed in the main hierarchy. That's not what you want. So instead, you use ./configure --prefix=/home/dummy/program. Now, when the program is done compiling, you issue the install command (make install) and make automatically generates /home/dummy/program/bin, /home/dummy/program/lib, and so on. You've basically just made a private /usr hierarchy. This can be very handy.

    Now, suppose you end up really liking the program, and you want to be able to use it from your account, but want to deny everyone else access. You can just mv /home/dummy/program to /home//program. Everything will (should, really) continue to work. Now you'll want to change the hierarchy's permissions so that only can run the program. You can do that with chmod -r 541 /home//program.

    Of course, you don't want to have to keep typing /home//program/bin/ to run it, so you have to add /home//program/bin/ to your PATH environment variable. You do this by issuing an export command of the form export PATH="/home//program/bin:/home//program/lib:$PATH"

    Now you can type the program's name from any location, and it will run. But only until you restart your shell. To make the change permanent, you'll have to edit your .bashrc or .bash_profile file. These are a lot like DOS batch files, but are written in "Bash", which is more flexible. Just stick the export command above in either of them, and the command will be run when you log in.

    There are a lot of magic numbers and constructs in my post. Think of it as an invitation to learn about what you're interested in.
  • by dru ( 4742 ) on Thursday April 19, 2007 @10:08PM (#18807555)

    When I was learning about Linux, back in the mid-90s, the most valuable resource I found was The Internals of the 4.3BSD Operating System by McKusick, Quarterman, Leffler and Karels. This book acquainted me with the design goals of unix-like operating systems, and the issues of implementing these patterns.

    Also, I'd pick either Aileen Frisch's Essential System Administration or UNIX System Administration Handbook by Evi Nemeth.

    Fast forward to the 21st century, I now spend the bulk of my time using FreeBSD.

    Linux is great, but remember that the thing that makes it great is that it's a unix-like OS. Learning the skills to be comfortable on Linux, Solaris, *BSD, HP-UX, AIX, or whatever the flavor of the day, will take you further than limiting yourself to just one.

    Good luck!

  • by pruneau ( 208454 ) <pruneau@ g m a i l .com> on Thursday April 19, 2007 @11:40PM (#18808265) Journal
    Well, for starters, never forget two things:
    • even if it's not documented, you _have_ access to the source
    • even if you do not have time to access/read the source, the problem are usually in the open, generally discussed by someone else you could easily locate. If you are the first one, someone is usually going to answer you.
    On linux, most of the configuration is done in _text_ files, and most of the system set-up is done by sh/bash shell script. Get familiar with shell scripting (it's a minimal requirement anyway), and you usually can read you way through. For example, it's a very good way to understand how the system starts, in details.
    Of course, RTFM/RTFMan is always a good idea, but usually, a " --help" gets you through most of the time.
    Now, of course, not everything is a shell script, and you do not have the time to study the manual pages or the documentation. Make sure that you have various tracing tools (system/network/etc):
    • strace : for system calls
    • lsof : for system calls and file/network access
    • tcpdump/wireshark : for network tracing
    • /procs : can do some of this all, but whithout real-time tracing.

    Using those tools on misbehaving/unknown programs is going to give you some insight on how they work, and _what_ exactly they are doing. Their output can really be intimidating, but once you get some minial knowledge about protocols and other inner workings
    And of course, having some basic idea in programming in the langague of you main applications is going to be helpful, but that really depend on how much time you want to devote to it and how programming-inclined you are.
    Never forget that the unix philosophy is not about monolythic applications, but rather distributing tasks to smaller utilities. So learn about all those funny commands that are displayed when you press any keyboard letter and . You are going to be surprised: did you know that linux has "cut" and "paste" has commands ?
  • by XenoBrain ( 719411 ) on Friday April 20, 2007 @12:36AM (#18808601)
    Is to take a class at your local college or University. That's better than any book you could buy or forum you could visit. It really makes you process and apply what you learn, as well as making sure your education is well rounded. The UNIX classes at my college have no prereqs, and cater to career professionals in atmosphere, attitude, and availability and applicability. I'm sure you can do just as well if you take a look.
  • by Eggplant62 ( 120514 ) on Friday April 20, 2007 @01:38AM (#18808903)
    Find and join your local Linux Users Group. Start here on GNU.org's List of Linux User Groups and see what you can find. Most of everything I know from Linux is either: [gnu.org]

    1. What I learned from my local LUG
    2. What I learned from my best friend, the Linux Guru
    3. What I learned from reading a multitude of books and websites
    4. Through classwork at the local business college with a Linux-friendly IT program

    Interact with people who know about Linux. Ask questions. Read HOWTOs. Get reference books and read them.
  • Tools are the key (Score:5, Informative)

    by simm1701 ( 835424 ) on Friday April 20, 2007 @02:59AM (#18809155)
    The real key to unix (any unix) is knowing how to use the tools that you get installed with the OS to make your life easier.

    First things first is the terminal (xterm, kterm whichever it doesn't matter) use it. Forget the GUIs, use the shell.

    That brings us onto the shell itself. Pick one and stick with it for a while. On linux most people prefer bash, its a good choice as even though its not on all unixes by default its not difficult to obtain (just don't try to set the root users default shell to bash on solaris)

    Learn the language of the shell, pipes, redirects, command line interpretation of special characters, handy tricks like tab complete, loops, variables, tests and use these all on one liners - progress to script files and also learn about functions - shell scripts are usually going to be fairly primitive tasks but they are the key to an easy life as an admin.

    Man is your friend - and should always be the first place you turn for help, then google, then forums.

    Learn the basic commands, ls, mv, cp, rm, learn their options and understand the justifications for using them (-i? -f?)

    Pick an editor and learn to drive it - this is a long process but well worth it. Don't bother with a GUI one, consider that later. On a default linux install you will probably have vim and emacs - try them both, see which you like and use it. Check out guides on how to customise them until they behave just how you want them (I have a 10 line .vimrc file I can create from memory that makes vi behave just as I like) - ok yes vim != vi, but to shock vi purists I like to be able to use the cursor keys while in insert mode!

    learn atleast the basics of the other important tools - at the very least find and grep. Awk and sed should certainly be on the list as you will encounter many scripts that use them, atleast some basic knowlege of perl would be handy (I prefer to use perl instead of awk and sed but thats my preference not everyone would agree)

    Set up services and experiment, run a webserver, database server, mail server and learn as much as you can stand to about iptables to secure your box.

    Keep backups, don't be afraid to break things, fixing what you broke (after finding out what you did to break it) is some of the best education yuo can have

    All in all

    Have fun!!
  • Re:Thanks (Score:3, Informative)

    by Budenny ( 888916 ) on Friday April 20, 2007 @03:36AM (#18809273)
    They are very good suggestions, but I would start somewhere a bit simpler.

    Scott Graneman Linux Phrasebook
    -- this isa fairly small but amazingly comprehensive and very clear book on using the command line. The OReilly Pocket Linux is also good but much more limited.
    Ward How Linux Works
    -- fairly discursive, but once you've read it, you understand how it all works and the detail will slot into place
    Schroder Linux Cookbook (or actually, anything she writes)
    -- well, she's brilliant, doesn't cover everything, but what is covered is clear, detailed and after you work through it, you can do it, and you understand it.
    Linux in a Nutshell
    -- this is a sort of paper version of man, Graneman's book is a subset with more examples. But if you have this you can find every option in every command in an instant. Have it for reference.

    I agree about slackware. Install slackware and work through their brilliant documentation. This is a good accompaniment to Ward's book.
  • by flotationIsGroovy ( 835554 ) on Friday April 20, 2007 @07:08AM (#18809993)

    How Linux Works [nostarch.com] describes the inside of the Linux system for systems administrators,
    whether you maintain an extensive network in the office or one Linux box at home.

    Some books try to give you copy- and-paste instructions for how to deal with every
    single system issue that may arise, but How Linux Works actually shows you how the
    Linux system functions so that you can come up with your own solutions.

    After a guided tour of filesystems, the boot sequence, system management basics,
    and networking, author Brian Ward delves into open-ended topics such as development
    tools, custom kernels, and buying hardware, all from an administrator's point of view.

    With a mixture of background theory and real-world examples, this book shows both
    "how" to administer Linux, and "why" each particular technique works, so that you will
    know how to make Linux work for you.

  • Some useful books (Score:1, Informative)

    by progprog ( 1016317 ) on Friday April 20, 2007 @10:23AM (#18811339) Homepage

    "Are there any great resources, such as websites, wikis or books for someone that wants to find out exactly how Linux works and how to fix and modify it?"

    Understanding The Linux Kernel [amazon.com] is a good resource. For more conceptual stuff, Modern Operating Systems [amazon.com] is great.

All great discoveries are made by mistake. -- Young

Working...