Learning More About Linux?
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?"
Linux is files. The entire OS is based on files. Things to run on startup? Files. Opening hard drives? Files. Drivers? Files. (kernel mods)
No magical black box registry, windows drivers, etc. Once you understand this, other things will come easier.
Sure thing.
Get yourself a Haynes manual for your model vehicle.
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, 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.
LFS
Check out http://www.linuxfromscratch.org/livecd/ and http://www.linuxfromscratch.org/lfs/
Try creating a distro of your own and you should get a handle on the mysteries of the OS. If you don't have spare hardware check out virtualbox.org and try creating your lfs distro on a virtual x86 computer
http://nyamenation.org/
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.
Really. Just use it. Like many other things, the best way to become familiar with Linux is to use it for your daily tasks for a while, and find out how to fix any problems you run into. I've used a dual-booted machine for some time, and about 6 months ago I made the decision to switch my main OS over from WinXP to Linux, and relitively painlessly went from dabbling to a being well versed pro user in a few months.
I dont have one magic answer.
Forums are good for getting and sharing information on specific problems as long as the "google it yourself" crowd havent invaded. (how else would you have found the forum?). http://www.linuxquestions.org/ is a good start.
There are varias wiki's specific to certian subjects.
And I dont mean to sound rude with this, but please read the man page first. Weather or not you understand it at the time.
On a side note the best way I have found to learn about something is to break it first. but maybe thats just me.
09 F9 11 02 9D 74 E3 5B D8 41 56 C5 63 56 88 C0
XXX#######
I have found that http://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.
God does not play dice - Albert Einstein
Here is what I got, take it for what it is worth.
m l/
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/ht
"When life gives you lemons, don't make lemonade. Make life take the lemons back!" -- Cave Johnson
http://tldp.org/
this is the linux doc proj the one place i found indispensable while learning slackware back in the day
lately http://www.debuntu.com/ is a god send as well
and of course , unlike windows software, most linux software readme files are actually filled with useful information
othjer than that either a quick google on a specific question or jump onto irc will usually get you some help
back in the day we didnt have no old school
I fancied myself a Windows "power user" and then GNU/Linux was foisted upon me because of a hardware crash. My backup system wasn't good enough to run XP, so I tried Red Hat 9. It certainly was a bitch, but I leaned GNU/Linux by doing the same thing I did when I was learning Windows: poke and prod at the system and see what changed. Doing is the best way of learning.
Don't really worry too much about a specific distro. I went from RH9 to Fedora Core to Ubuntu to Debian over the span of about 4 years. Once you learn enough, you can pick up any distro without too much hassle.
My best advice is to pick a distro and dual boot with XP/Vista. Every day try to use your GNU/Linux distro a bit more each day. Be sure to try to fiddle with settings. Just make sure you have a backup ready for any important data. For awhile there, I was reinstalling the OS weekly. Don't be afraid to experiment.
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 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 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.
Bush Lies Watch
Bzzt! Real men use both. Sometimes pictures/illustrations/explanations are better in one than the other.
Your best bet is to start with Slackware 11, it's a manual distribution which will force you to actually get involved with it and learn how things work under the hood.
a re-11.0-iso/)
For example, you have to write your own iptables firewall script. But by doing this, you'll be able to understand the output of "iptables --list" on any distro out there and see what it's doing behind the scenes (for instance, amusingly, what holes does it leave open if any?).
You can download the distro here, for free:
http://www.slackware.com/
(my favorite mirror is: http://slackware.cs.utah.edu/pub/slackware/slackw
There's a good book on it available here: http://www.slackbook.org/
Think of it this way (using a car analogy like the other guy, but more seriously):
If you learn to drive in a car with a five speed stick and a clutch, you'll be able to drive almost any wheeled vehicle on Earth with very little futzing around. It's almost like having a superpower.
But if you start out driving an automatic, you'll ONLY be able to drive automatic until somebody teaches you manual. And you won't have any reason to learn it, so you'll miss out on a potentially important skill.
It's better to start out with something challenging and switch to the easy stuff later.
Go Slackware, be a nerd like us! You'll thank me later.
NO CARRIER
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!
There are probably some good books out there, and I hope you get some recommendations for them, but there is one key thing that you should learn about Linux that will get you 99% of everything you'll ever need to know about how your system works: How it boots.
If you understand how everything gets started you'll understand how it all fits together, and, even better, you'll have the starting point you need for tracking down anything else you need to figure out. And the great thing is that it's simple enough to described reasonably completely in one brief slashdot post.
The boot process consists of the following steps:
That's it. All you have to do is go read that shell script and you'll find out how absolutely everything running on your system gets started, from the file systems that are mounted to the network devices that are configured to the graphical user interface. Of course, along the way, you'll run across dozens of commands and hundreds of configuration files that you'll have to look up, but with 'man' and a little persistence you will gain an understanding of each major component, where it lives, what it does, how it gets started, restarted, killed and modified.
Even better, you don't have to worry about understanding it all at once. Once you find the /etc/init.d/rc script, and see how it executes all of the other scripts in /etc/init.d, you'll be well equipped to track down the answer to any question you have about how your system works. Sometimes getting an answer will mean traipsing through a few levels of indirection, but all the information is there. No magic, nothing hidden, all there for your perusal and/or modification.
Note to ACs: I usually delete AC replies without reading them. If you want to talk to me, log in.
- 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):
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 ?
[Pruneau
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.
From time to time I'll visit http://librenix.com/, a "linux tutorial" aggregator site where people collect various tips about Linux and its various applications. This is often how I will hear about various applications, methods to secure your computer, tricks for administering Linux, etc. For example, as of this writing, among the first page list of articles we have a tutorial on installing VirtualBox in Linux, emacs essentials, how to install dual monitors, etc. Most articles are good, although the styles can vary since Librenix just points to various web pages; they weren't created for Librenix itself.
Recommended.
404555974007725459910684486621289147856453481154 in hex is "You sank my Battleship?"
[GPG key in journal]
I wish I could have modded this insightful AND off-topic! ;)
BOOKS:
m l
H andbook-3rd/dp/0130206016/ref=pd_bxgy_b_text_b/104 -2587738-8696715?ie=UTF8&qid=1176522696&sr=1-1
i nistration/dp/0201702711/ref=pd_sim_b_4/104-258773 8-8696715?ie=UTF8&qid=1176522696&sr=1-1
i n-Mako/dp/0132435942
Essential System Administration By Æleen Frisch
http://www.oreilly.com/catalog/esa3/index.html
Unix Power Tools By Shelley Powers, Jerry Peek, Tim O'Reilly, Mike
Loukides
http://www.oreilly.com/catalog/upt3/index.html
Running Linux By Matthias Kalle Dalheimer, Matt Welsh
http://www.oreilly.com/catalog/runlinux5/index.ht
The UNIX Systems Administration Handbook by Evi Nemeth, Garth Snyder,
Scott Seebass, Trent R. Hein, et al.
http://www.amazon.com/UNIX-System-Administration-
The Practice of System and Network Administration by Thomas A.
Limoncelli, Christine Hogan
http://www.amazon.com/Practice-System-Network-Adm
Martin F. Krafft: The Debian System: Concepts and Techniques
http://debiansystem.info/
Benjamin Mako Hill, Jono Bacon, Corey Burger, Jonathan Jesse, Ivan
Krstic: The Official Ubuntu Book
http://www.amazon.com/Official-Ubuntu-Book-Benjam
"When I first heard Daydream Nation it quite frankly scared the living shit out of me." -- Matthew Stearns
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:
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.
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.
.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!
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
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!!
$_="Slashdotter";$syn="OTT";s;..;;;sub _{print shift||$_};s!ash!Perl !;s=$syn=ack=i;tr+LLEd+BLAH+;_"Just Another ";_
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.
If it ain't broke, break it. Fix it. Understand it.
Here's some things to try:
Compile mplayer. Build a firefox package for your distro. Download, patch and compile a kernel. Add a cronjob to delete some files at random. Forget about it. Try and restore them. (ext2 does not delete file pointers in inodes). Create an LVM group. Siphon disk space between disks and partition. Try a file system written by someone suspected of murder. Post on a linux-devel list and join Linus in slagging off Gnome. Try KDE and XFCE and decide no-one needs a desktop environment. Try some ultra minimal *box window manager. Live in the terminal for a week. Log in to your computer using SSH from afar and wonder why when you play music you can't hear it. Rsync something. Write your own superior syncing script. Write some perl scripts. Python. Add a RAID. Try an old 2.4 kernel..