Ask HN: Is there a "learn Linux the hard way"?
11 コメント
When I got into Linux I bought one of those thick Red Hat Linux Bible, and read it from cover to cover... well maybe not every word but skimming each section gave me a very good insight on what the file system was, key programs, how the OS works with daemons, popular services Linux can run, etc. With having that background of what is what, it was much easier to poke around and not be too afraid of it all.
Also as a suggestion is set up Linux on a spare PC and beat on it... my first installs were usually the works, all the packages that sounded cool then filter down on subsequent re-installs as you get an Idea what you want.
If you want quick answers to your questions stick with popular distros like Ubuntu, Fedora, Suse, Debian - with most of those you can get what you need to know with a well phrased google query.
Also as a suggestion is set up Linux on a spare PC and beat on it... my first installs were usually the works, all the packages that sounded cool then filter down on subsequent re-installs as you get an Idea what you want.
If you want quick answers to your questions stick with popular distros like Ubuntu, Fedora, Suse, Debian - with most of those you can get what you need to know with a well phrased google query.
If you really don't mind getting your hands dirty, I recommend: https://wiki.archlinux.org/index.php/Beginners%27_Guide
My Linux skills have improved and I have really enjoyed using Linux as my desktop and dev environment since learning by using Arch.
My Linux skills have improved and I have really enjoyed using Linux as my desktop and dev environment since learning by using Arch.
Thanks for the tip! Ignoring the educational aspect altogether for a second, what does one lose by using less glamorous / widely popular distros of Linux such as the one you recommended? Is there generally a good reason to stick to something like Ubuntu, or does it really not matter?
I feel there is more freedom to choose exactly what system I want to create for my needs with Arch over Ubuntu. I love the Arch community and I enjoy using the forum system more than Ubuntu's. Also, I hang out in the #archlinux channel and people are super friendly and helpful!
Ubuntu tends to be recommended for novices coming from Windows or Mac who are also unsure of the command line. My brother installed it after he purchased a cheap laptop. He came from Mac OS X and fell in love. After learning more, he installed Mint and really enjoys it. He is programming now! Obviously Ubuntu is for advanced users also. It just so happens that it is accessible to beginners as well which is great!
When switching distros, say from Debian to Arch, you should embrace the idea that fundamentals are completely different. Package management, for instance, must be re-learned. And the way daemons and modules are initialized and configured is different and plenty of other things! You are going to lose context and that can be the most frustrating part of switching. If you can overcome that and succeed at the new tools, you will have gained more skills.
The great thing about Linux is that it is free software. I love to experiment with Virtualbox and lots of distros for fun. I would encourage you to try a few, a couple non debian based, and see if you enjoy them more.
Ubuntu tends to be recommended for novices coming from Windows or Mac who are also unsure of the command line. My brother installed it after he purchased a cheap laptop. He came from Mac OS X and fell in love. After learning more, he installed Mint and really enjoys it. He is programming now! Obviously Ubuntu is for advanced users also. It just so happens that it is accessible to beginners as well which is great!
When switching distros, say from Debian to Arch, you should embrace the idea that fundamentals are completely different. Package management, for instance, must be re-learned. And the way daemons and modules are initialized and configured is different and plenty of other things! You are going to lose context and that can be the most frustrating part of switching. If you can overcome that and succeed at the new tools, you will have gained more skills.
The great thing about Linux is that it is free software. I love to experiment with Virtualbox and lots of distros for fun. I would encourage you to try a few, a couple non debian based, and see if you enjoy them more.
One good reason to stick with Ubuntu( or Mint-which is essentially Ubuntu with few items different) is the availability of drivers. If you are using any hardware from known makers like dell,HP etc. chances are, you will see it working fine right out of the box. For example I have a all-in-one from HP it has drivers already available. Same way I have a USB wireless network adapter and it worked just fine. You can run the LiveCD make sure your system runs as it should and then dual boot or virtualize.If you are windows user and start with idea of learning the hard way, you may not take a full dive at all. I have been using Ubuntu almost for 2 years and still consider myself a newbie as I dont know how to do many things still.
You could try Ubuntu-GNOME for best driver support or Mint Linux GNOME
Back in the day I found installing Gentoo from stage 1 and going through the (now significantly obsolete) HOWTOs of The Linux Documentation Project to be very educational.
That's how I learned too! I haven't looked at it in ages, but assuming it's still maintained, got through the Gentoo Handbook at http://www.gentoo.org/doc/en/handbook/ and do all of it. Research anything you encounter that you don't undertand, rather than just following the directions blindly, and you'll end up knowing more than many casual linux users.
Try the Survival guide for Unix newbies
http://matt.might.net/articles/basic-unix/
and follow up with Settling into Unix
http://matt.might.net/articles/settling-into-unix/
Creating such a guide would be difficult since the Linux ecosystem is so large.
Here is a good blog post by one of the developers of Mono.
http://tirania.org/blog/archive/2011/Sep-06.html
You might be better off running Linux in a VM so that you don't have to ditch Windows completely. The command line is a better way to learn Linux as opposed to the GUI. How much have you really learned about Windows via the GUI?
First focus on getting the basics down. Even the basics can get not so basic once you get deeper into the command line tools.
Bookmark some good cheatsheets for commands and then make a point to pick up something new in a few areas every day. For example, you can pick up Vim in a couple of weeks but mastery is a lifetime journey. The way to get better with Vim is to spend time every day learning something different and incorporating that into your workflow. Otherwise you will never get far from being a beginner. Many Linux tools are like that.
Don't worry about getting crazy with building your environment with Arch or Gentoo until you have become strong with the basics. Also wait until you have a lot of time on your hands. It's not an easy journey. Better to start with something that you can be productive with right away.
Here is a good blog post by one of the developers of Mono.
http://tirania.org/blog/archive/2011/Sep-06.html
You might be better off running Linux in a VM so that you don't have to ditch Windows completely. The command line is a better way to learn Linux as opposed to the GUI. How much have you really learned about Windows via the GUI?
First focus on getting the basics down. Even the basics can get not so basic once you get deeper into the command line tools.
Bookmark some good cheatsheets for commands and then make a point to pick up something new in a few areas every day. For example, you can pick up Vim in a couple of weeks but mastery is a lifetime journey. The way to get better with Vim is to spend time every day learning something different and incorporating that into your workflow. Otherwise you will never get far from being a beginner. Many Linux tools are like that.
Don't worry about getting crazy with building your environment with Arch or Gentoo until you have become strong with the basics. Also wait until you have a lot of time on your hands. It's not an easy journey. Better to start with something that you can be productive with right away.
My tip would be to get VirtualBox or VMWare Workstation, and run your choice of Linux on it in fullscreen. There are two things that are annoying when learning Linux:
1) dealing with hardware issues
2) dealing with updates that break stuff
Virtualization solves both of those, at the cost of a little performance. The nice thing about VM's is that the virtual hardware is always the same and generally well tested (no hardware issues). And if you break stuff, you can roll back changes (VM snapshots). Both VirtualBox and VMWare have full screen modes and support for dual monitors out of the box.
Also, make sure you get a server as well and learn to administer it it from the command line. It's a great way to keep learning more.
1) dealing with hardware issues
2) dealing with updates that break stuff
Virtualization solves both of those, at the cost of a little performance. The nice thing about VM's is that the virtual hardware is always the same and generally well tested (no hardware issues). And if you break stuff, you can roll back changes (VM snapshots). Both VirtualBox and VMWare have full screen modes and support for dual monitors out of the box.
Also, make sure you get a server as well and learn to administer it it from the command line. It's a great way to keep learning more.
If you go with VirtualBox, take the time to read its download-able manual. It's well-written and it can help you make some configuration choices, e.g. networking setup so that VB-resident services are visible to the VB host (your windows machine) but not to the world.
I'll also mention that the Official Ubuntu Server book -- to the extent I've looked at it -- is well written, although you'll have to look further for the "nitty gritty" on particular topics. Note, this is the Server version of the "Official" line. My vague recollection is that I was somewhat less impressed with the desktop "Official" entry.
http://my.safaribooksonline.com/book/operating-systems-and-s...
I'll also mention that the Official Ubuntu Server book -- to the extent I've looked at it -- is well written, although you'll have to look further for the "nitty gritty" on particular topics. Note, this is the Server version of the "Official" line. My vague recollection is that I was somewhat less impressed with the desktop "Official" entry.
http://my.safaribooksonline.com/book/operating-systems-and-s...
If you were going to learn Linux the hard way, wouldn't you want to jump right in with a dual boot?
A VM is for most purposes identical to a dual boot setup, except for the part where you have hardware incompatibility issues and/or break your system. If you want, you can ignore the option of going back to a snapshot and stay in hardcore mode figuring out things, but you also get the option of reverting and learning from the experience. Less frustration = more fun = more motivation = more learning.
Linux From Scratch (probably the hardest reasonable way) http://www.linuxfromscratch.org/
I think the quickest way of learning it is to make something dependent on it. With newbie Linux installs, something is going to break on you, and you have to fix it. Whether that's flash player, a dependency hell, or messing up a critical config, something is going to go awry before you can do your normal work. Yes it takes longer, but you're learning.
In the year prior to really learning Linux I had tried to install Linux in a VM, dual boot, etc. It just didn't work out because I didn't have anything to "do" in it. It could be different that you're a software engineer, but while my friends were scripting the automatic download of their torrents or piping their TV tuner through a windows VM to feed it back into mplayer, I didn't have a use case. So find your use case and force yourself to context switch OS's. I did it when my job switched me from primary Windows admin to secondary *NIX admin
In the year prior to really learning Linux I had tried to install Linux in a VM, dual boot, etc. It just didn't work out because I didn't have anything to "do" in it. It could be different that you're a software engineer, but while my friends were scripting the automatic download of their torrents or piping their TV tuner through a windows VM to feed it back into mplayer, I didn't have a use case. So find your use case and force yourself to context switch OS's. I did it when my job switched me from primary Windows admin to secondary *NIX admin
tldr: rtfm!
(maybe read about the core principles of unix first. the links suggested by other commentators look good.)
learn how the documentation provided with your linux install is organized: man, info, apropos, whatis. the more comfortable you get with the built-in documentation, the more you'll find that most of your questions will be answered there. it takes a while to get used to it though. understanding the structure of the docs helps a lot with where to start reading. (did you know that the man page browser has a built-in string search?)
next step: dig into online documentation resources. start with the material curated by the distro project of your choice. don't forget wikipedia, some of their free software articles are nicely structured, concise and very well interconnected. you'll find plenty of useful links there, too.
third step: learn how to get the questions you can't answer yourself solved quickly by the community. "how to ask questions the smart way" by esr comes into mind. the way you asked your question here suggests that you might have read that already. anyway: for almost every question there are the right persons to ask and the right way to do so. mailing lists are good, but may not be fast enough. on the other hand, irc culture is a little rough sometimes, not everybody is a catalyst on freenode. look that up, there's a nice article about how to communicate on irc. if you know how to ask in which channel, irc is a fast resource.
when you get used to the culture of documentation and community, the gap between user and developer gets really small.
linux is transparent. learn how this transparency is organized and communicated.
that might sound easy, but it _is_ the hard way.
if you like the experience, consider writing on the web about your very own way of learning linux. or put some time into improving the resources you were using. that's a fun way to say thank you. :-)
have fun!
.~.
(maybe read about the core principles of unix first. the links suggested by other commentators look good.)
learn how the documentation provided with your linux install is organized: man, info, apropos, whatis. the more comfortable you get with the built-in documentation, the more you'll find that most of your questions will be answered there. it takes a while to get used to it though. understanding the structure of the docs helps a lot with where to start reading. (did you know that the man page browser has a built-in string search?)
next step: dig into online documentation resources. start with the material curated by the distro project of your choice. don't forget wikipedia, some of their free software articles are nicely structured, concise and very well interconnected. you'll find plenty of useful links there, too.
third step: learn how to get the questions you can't answer yourself solved quickly by the community. "how to ask questions the smart way" by esr comes into mind. the way you asked your question here suggests that you might have read that already. anyway: for almost every question there are the right persons to ask and the right way to do so. mailing lists are good, but may not be fast enough. on the other hand, irc culture is a little rough sometimes, not everybody is a catalyst on freenode. look that up, there's a nice article about how to communicate on irc. if you know how to ask in which channel, irc is a fast resource.
when you get used to the culture of documentation and community, the gap between user and developer gets really small.
linux is transparent. learn how this transparency is organized and communicated.
that might sound easy, but it _is_ the hard way.
if you like the experience, consider writing on the web about your very own way of learning linux. or put some time into improving the resources you were using. that's a fun way to say thank you. :-)
have fun!
.~.
Check out command line crash course by Zed shaw http://learncodethehardway.org/cli/book/
The hard way.
Hmm I would take one of the stripped down command line only distros and build it up from there so that you get into the nitty gritty stuff.
Something like this: http://distro.ibiblio.org/tinycorelinux/welcome.html
Put it on a 128meg usb stick and have at it.
Hmm I would take one of the stripped down command line only distros and build it up from there so that you get into the nitty gritty stuff.
Something like this: http://distro.ibiblio.org/tinycorelinux/welcome.html
Put it on a 128meg usb stick and have at it.
It'd like to address my comfort levels though, and perhaps make a permanent switch to the OS for everything but the Windows-only apps. As a software engineer I'm not too averse to learning things the hard way, and I love the nitty gritty technical details. I couldn't locate anything like a "learn the hard way" approach to Linux, and was hoping that you would be able to point me in the right direction.
Are there books / online tutorials / anything else that are great for people just starting out, but not afraid to get their hands dirty?
Thanks!!!