this post was submitted on 13 Sep 2023
91 points (96.0% liked)
Linux
48083 readers
816 users here now
From Wikipedia, the free encyclopedia
Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).
Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word "Linux" in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.
Rules
- Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.
- No misinformation
- No NSFW content
- No hate speech, bigotry, etc
Related Communities
Community icon by Alpár-Etele Méder, licensed under CC BY 3.0
founded 5 years ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
How linux works is a nice read, tells a bit about what's going on under the hood.
Hey, learning through book is great, but how is it better than installing gentoo, arch or through LFS. What would be the best way to actually understand how linux works
Well, the way I like to learn is: First read a book. And then get the actual thing and play around with it.
This way around you're doing it a bit more methodical. And more effective than just fooling around. But the experience and exercise with the thing itself is also super important. You'll get practical experience and this is often the time you understand why things are a certain way and really start to understand details.
In case of linux: Read the mentioned book. Install a distro without an automatic installer (arch, gentoo, ...). You'll need to read the documentation while doing this. Use Linux daily for a year. Install a webserver, fileserver, ... And if you want to dig down all the way, get through the Linux From Scratch process (but don't start with that, and I don't recommend it either. It's mostly hard work and boring details nobody needs to know.).
'read and then do'? How is it better than 'learn while you do'? It may save you some time when you read and then do, but I think you can learn more when you do and also learn in the process? Correct me, If I'm wrong. Are there any books or resources which are available for free of cost?
Well, generally speaking, if you start with some subject, you have no idea what's important and in which order to learn things. You can often do it yourself and just start somewhere. But it'll be more effective and quicker if you start with the basics first and then the details. And let someone who knows this stuff simply tell you.
Also sometimes you need to know some concepts to be able to understand something. For examples the maths, trigonometry before trying to program a robot arm that needs to move somewhere. If someone figured this out for you, you'll be faced with the assignments in the correct order and you'll have the background to start learning this topic. If they're a good teacher, this will be most effective and also make sure to keep you motivated. In this example you could figure it out yourself and see what background knowledge you now need to learn. But once it gets more complex, it won't be that easy. For example with programming, knowing about heap, stack, harvard architecture and memory protection will make it obvious for you why you can't change a C string, why you can't grow and shrink some objects but you can do it with others. Why some of your code just runs slow. And you probably won't know to look up 'heap' while looking at your code to deal with json-objects. You're more likely to memorize when to write 'new' something and learn lots of exceptions individually and not understand some things at all. While someone with a 'traditional' education will know the concept behind that.
And sometimes you'll get lost in details if you do it on your own and waste quite some time. Or you'll miss out on some important fact, because this case didn't occur in your practical experience.
But that's only part of the truth. People with a 'traditional' educations also sometimes don't know stuff, miss out on concepts and struggle with the same things. And self-taught people often have other beneficial character traits. And you should never underestimate their level of motivation and dedication to a subject. And you can learn how to learn. I - personally - think it's more important to do something with love and dedication, than to do it 100% the right way. And to have fun. But since you asked why it's better to read the book first, these are some reasons to do it that way round. And as I said, don't skip out on the actual experience. There are people who only have theoretical knowledge. And it's a difference to hypothetically know how something is done, and actually knowing about all the consequences and caveats in practice, because you've already done it 3 times.
I don't have any book recommendations. I also taught myself lots of stuff. Read computer magazines, distro-hopped for quite some time. Read most of the documentation while dealing with some problems during the years. Deleted all the files for shits and giggles and learned about the filesystem hierarchy on Linux. Ran a webserver with lots of services. Studied computer science... Read a few books from the library... I'm sure other people here have good recommendations on what to read as of today. If not, go to the library or bookstore and have a look at the books, see if you like the style of some book. Maybe a university or a free software organization has some course available or some bibliography.
Sure, you dont know what's important, how things work when you start out! But when you randomly explore, you're hit with blocks and in order to pass it you have to analyze, examine it. In the process, you better develop your intuition as you yourself explore it and understand it to the core.
Suppose, your end destination is some place, there is a forest before the place you need to reach. If you know the path(when someone teaches you), you can reach the destination effectively and quickly. But if you explore it yourself, it may take some time but you get to know the forest when you analyze and careful enough that you are not be lost.
I think, the goal that is learning linux has to do with everything that makes the linux, but it is a long and boring process, when one learns without knowing the basics or the philosophy behind it. I think that, I better get to know about forest(basics of linux) and then explore randomly when you know what you're doing.
I find a website, linuxjourney.com. Let me try and understand the basics of linux.
I'm just saying... The forest also contains difficult to overcome obstacles. And even traps. And now it's your job to stay motivated while breaking free or taking the detour around.... You could have been guided and told how the trap works.
And without knowing what to look for, you won't see the traps coming. Some are really difficult to overcome if you didn't see something alike before. And you're relying on chance with that.
I'm not saying you shouldn't do it. Nobody does it to that extreme. I think most people pick up a book at some time. Or watch an online course that has information processed for you.
And everybody learns differently. There just isn't one simple truth that applies to everyone.
Regarding my earlier replies: I think I was a bit harsh. 'Learn while you do' is perfectly alright. What I wanted to say is, read a book or a course or something that guides you during the most difficult steps. I don't care in which order you do it. I'm currently learning programming Rust. And I picked a book combined with assignments. And I like it. It is one short chapter with information and then you get to apply it right away. I think this is the most effective way to learn and remember things, for me. I'm trying to be a bit patient with the project I want to start. Because I could probably jump straight into the project and see how far my background knowledge from other programming languages will get me. But I'm sure this will lead to an amateurish result and bad design choices I'd need to face later. And it would take me longer all in all than being strict and learning 2 weeks and then doing the work after that, but much quicker.
That was more or less what I was trying to say.
Libgen.rs (books for free) By doing without reading you are at risk of not understanding the meaning of what you are doing.