Sounds like you're looking for Linux From Scratch then, where it isn't an option to not learn how everything works underneath.
However, I'd still consider keeping distros like Debian around, because while you can learn a lot from doing it that way, it's also not all that practical to have to manually track everything like that.
There needs to be another panel below this where spongebob goes super siyan 2 and it says: "Using a computer's motherboard CMOS/BIOS ROM boot terminal, with no operating system and then writing your own Linux distribution from there, using tips from Linux from scratch".
http://www.linuxfromscratch.org/lfs/view/6.6/chapter01/how.html
Depending on how you look at it this may be possible.
Here: http://www.linuxfromscratch.org/ Run through Linux from scratch and you’ll be able to build your own in days not months. Once you grasp how this works you can customize it and call it yours.
Putting together a distro is not that hard. The hard part comes when you are talking about package management on what you’ve built, packaging software, upgrades, etc. That’s the reason most people use a well established distribution.
The easiest way would be to follow a time-tested method like Linux From Scratch. But it is still quite hard, and most people who build a LFS do it for the learning experience and never actually use it in production.
I'd start by doing Linux from Scratch and seeing what parts of that you want to dig more into. http://www.linuxfromscratch.org/
Also consider checking out /r/homelab and building your own infrastructure for something interesting to you - maybe a Plex server, maybe hosting your own email server, that kind of thing.
The issue is that this is a solved problem but the developer in question didn't like the already existing/debugged solutions and decided to roll his own. Typical case of "Not invented here" (http://c2.com/cgi/wiki?NotInventedHere)
Practically all newb friendly distros make mounting happen "like windows" (read automatically, with friendly popups asking what you want to do). And I'm fairly certain they do it without setuid root crap too, instead using something like DBUS to ask HAL to do it (http://www.linuxfromscratch.org/blfs/view/cvs/general/hal.html).
Even newb-unfriendly distros have allowed the administrator to create a group which is allowed to mount specific devices, and configure those devices in /etc/fstab. I've been using Linux for the last 8 years, and I can't remember not ever being able to do this. Someone please speak up if you know about restrictions on older systems that I'm unaware of.
Beyond that though, if you are for some godawful reason writing a setuid program you restrict it heavily to avoid the issues calibre is having. Basic mistakes that shouldn't even happen but did here:
In general setuid root programs should: 1. Never trust user input 2. If they must call exec, do it on a string they built themselves so it is a known value limited to a finite number of options 3. Do one simple thing, very quickly and then get the fuck out of root access 4. Not exist
If you're going to write a setuid root program at least do your homework. Test it for basic command injection. And find somebody who knows what they're doing.
I somehow managed to get linux admin job by installing many vm's and setting up different services:
I got enough experience to get a small Linux job, and after I improved I moved to a hosting company which allowed me to powerlevel in Linux, now I'm working with Linux/FreeBSD services.
The good starting point will be getting a VDS and running your small site on it, no matter what content will be on it.
If you don't have any CLI experience, consider completing the following cource: http://cli.learncodethehardway.org/
Also I'd recommend you to complete "Linux from scratch" tutorial http://www.linuxfromscratch.org/lfs/, which will make you curse non-stop if you don't have any Linux knowledge, but just do it and hopefully light will switch on in your head. Just make yourself a virtual machine using VirtualBox, install Ubuntu into it and complete the damn tutorial. It will be painful, but is more than worth it, and hopefully it'll give you some understanding of what a Linux distribution consist of.
After you finish building your LFS, consider next one, vital course that is about regular expressions. You'll need them, I swear: http://regex.learncodethehardway.org/book/
After regex you may want to find and complete "Learn Python the Hard Way". Remember, after LFS and regex!
PM me if you'll need any help, I'll be glad to help.
Linux From Scratch isn't based on anything. It's Linux... From Scratch. No package manager. No extra fluff. You configure and build everything yourself. It's for those who Gentoo and Arch aren't enough for, and want to further their superiority complex.
Jokes that will get me slaughtered if anyone takes them serious aside, LFS always seemed like a fun project, and something you could learn a hell of a lot from. Though my knowledge of it is pretty limited. Check out this support page for LFS to see support materials, and the site itself will probably have extra details too: http://www.linuxfromscratch.org/support.html
No. Would you suggest for a 5 year old to be air dropped into the pacific on its own to learn how to swim? Would you give someone who wanted to learn Linux a LFS handbook and say "go to it?" See the point I'm trying to make?
Stick with Java for now, no need to learn a new language yet. Save your killer game idea for later, and stick with things like tic-tac-toe, pong, snake, etc. Learn the basics of game development first, don't just dive in the deep end head-first.
I know I'm being a little harsh, but trust me. You sound like (I don't mean any offence by this) someone who would end up giving up within a month. I've seen it happen many times. Please just start small and work your way up to your bigger ideas. You'll thank yourself, and anyone who plays your games will surely thank you. I'm sure you could hack together your game at this point, but I'm also sure it would feel like a game that was horribly hacked together by someone with very little experience.
just to clarify.
there is a project called "Linux From Scratch".
http://www.linuxfromscratch.org
often called 'LFS'
so your question/title could be confuseing if someone thinks you are asking how to start that specific 'tool/project'
you most likely are asking how to setup your own 'custom' setup.
Arch can do that, LFS can do that also.
have fun.
I mean if this can install 'Linux from Scratch' for me... I'd pay the 25$.
Edit. I am not linux noob. I just installed Arch yesturday. What I was referring to was this http://www.linuxfromscratch.org/ where you compile your system from source code.
It's just elogind. Highly likely that your DE uses it.
>elogind is the systemd project's "logind", extracted out to be a standalone daemon. It integrates with Linux-PAM-1.4.0 to know the set of users that are logged in to a system and whether they are logged in graphically, on the console, or remotely. Elogind exposes this information via the standard org.freedesktop.login1 D-Bus interface, as well as through the file system using systemd's standard /run/systemd layout.
http://www.linuxfromscratch.org/blfs/view/svn/general/elogind.html
I did LFS about a decade ago (2006 I think), and I do distinctly remember that it felt bit skimpy on the explanations. I think there were also bit more mystery patches etc back in the day than now.
Looking now, I think one issue with LFS is the bottom up package-by-package approach. For each package there is little explanation offered why that package is installed. Random example, XML::Parser. Why is it in base? Why is it built now, and not later? Same applies to the very next package, intltool. Sure, I can now (after a decade of experience) guess that they are dependencies for something, but LFS sure does not tell that, or even less about what is dependent of what.
>What is the difference between the Linux kernel, and the software LFS provides?
Pretty much...everything. The linux kernel is only one small part of the system LFS sets up...to be specific this chapter installes the kernel. There are a few others that have a relation to the kernel like the installing of the kernel headers in stage1 and stage2 or setting up grub...but that's pretty much it. Every other software LFS install sis NOT the linux kernel.
Edit: For the differences between a LFS and just a kernel. Only with a linux kernel you don't have a working system. The kernel doesn't provide any shell to allow you to make input as user or start programs. The linux kernel is just the layer in your system that talks to hardware...you as user almost never interact with the kernel at all. For a useful system lots of other programs are needed.
So for the why it took so long...a few reasons.
First you need already a linux system...LFS installs a system from an existing linux system. There are some crosscompiling guides but those came even later I think. So first we needed some distros.
And then...because it is actually pretty complicated to get the order of building the dependencies for a working system right. LFS didn't start out in a vaccum...it build already on experience gained by making distros.
And last....well, LFS is a luxury...not a necessity. Getting working linux systems for sure was a higher priority than documenting how to do it. In fact as far as I remember LFS was started exactly because such documentation was lacking..it was the result of building linux distros not their origin.
I wonder which is the Most Noob Unfriendly Distro ever recommended?
I still wonder at the logic from one CLI Maestro telling a Noob that the only distro they would ever need is Linux From Scratch.
Such a selling point; "Linux From Scratch (LFS) is a project that provides you with step-by-step instructions for building your own custom Linux system, entirely from source code."
The Noob just wanted a nice GUI and Rodent.
I think they're referring to the Linux From Scratch project, where you build your system entirely from the sources (which you'll also patch yourself as necessary) with no package manager (by default, you can add one in depending on your preferences, since the procedure is meant to give you a base system to customise as you like).
It's not hard as such, just kind of a long tedious haul (compared to Arch, Gentoo etc.). You learn quite a bit doing it, but personally I'd never actually run the results as a main personal/production system. More a spare old machine/virtual machine project for most people I think.
LFS = Linux From Scratch
Taught me a LOT, and if you want to build more than a basic system it has extended sections to build all sorts of things for Linux, from an office suite to various other packages.
Seems impossible, as nowadays /dev is usually mounted with a devtmpfs and contains all the devices nodes created by udevd when executing the init workers for all the specified corresponding rulesets and loading the suitable kernel drivers. /dev is not populated by permanent files, rather it resides in volatile memory; any troublewith /dev should be resolved by a simple reboot, unless hadrware's been compromised or udev rules have been messed.
Linux From Scratch is something I have been going through over the years. It is slow moving but very, very rewarding. It is slow moving because I will go deep and read things like the whole man hier
to learn about Linux system file structure/hierarchy, which is amazing to me. Did you know that the /usr/ folder is not the 'user' folder and the origin is actually debated. Some say it means "Unix System Resources" while many, do in fact call it the 'user' folder.
If you really like to learn 'how' things work and a little bit about 'why' then give it a go!
I don't get why you want to create a new distro and what the goal of it exactly is! There are plenty of distros which run on low spec computers and I don't see what would be different if it is "designed for educational purposes" (except for what all those distros already bring to the table).
Imagine the main difference in distros are the package manager and the packages it hosts. Gentoo for example has only source packages so if you want to/need to compile everything yourself, it's probably the best thing. If you have a certain amount of packages that will (almost) never change then maybe you could even go with LFS. If you want it to be just stable, take Debian, etc.
It seems to me that you don't really know what you want, so I would recommend you to first create a list of what you want to achieve. With this list, you'll probably already find a distro which fits your purposes without you having to create a new one..
Yes, of course you can.
In fact, the first indication that any compiler is approaching a version 1 quality level is the ability to compile itself.
In Linux From Scratch compiling GCC is one of the first steps.
In all seriousness, to give my personal opinion on why Arch community seems to be overly represented, I think Arch Linux is a distro that many long-time linux users eventually settle with. Many people will start from Ubuntu or Linux Mint and perhaps try Debian or Fedora, but the final destination for most users who seek more customization seem to end up at Arch Linux. Mind you, Arch Linux is far from the most customizable distro (refer gentoo or even LFS), but it seems to hit the perfect sweet spot between having a highly customizable linux distro vs. accessibility and not having to spend too much time on low-level stuff.
Real Linux: http://www.linuxfromscratch.org
And, no, I haven't done that, yet. Moving from Debian to Arch, myself. Real Linux....that would be a 0.8x kernel that requires use of a jump table? I see the rise of Ubuntu and Mint as proof that the goals of FOSS are thriving.
Well you could try Linux from scratch and see if that is able to obtain the tweaks your looking for. I've never went that route due to Arch having enough flexibility for my needs. Good luck
Keep in mind that the feedback received could just reflect one interviewers attitude on that particular day. He might be a perfectly good programmer, but if someone prefers to work a certain way, they'll prefer to hire people that work that way too.
These books (that other people have suggested) will ensure that he is writing good code, but it still won't ensure that he'll pass an interview with someone who prefers a certain paradigm of programming.
If he's familiar with the different paradigms, he should just ask, "How do you guys usually write your code? Object-oriented? Functional? Imperative?" It's usually object-oriented or functional these days, but most of the time you can mix and match the two. The issue with you asking on his behalf is that we can't tease the right questions out of him because he isn't behind the keyboard.
Generally speaking, coding challenges shouldn't involve catching exceptions. The interviewers usually prefer that you handle an edge-case explicitly instead of trying to deal with the aftermath of an exception being thrown. The problems are usually small enough that "Truly exceptional" events aren't things that need to be accounted for. Additionally, nesting if's are a bad thing. After 3 levels of indentation, you should break something into a function or at the very least, question if you've done something horribly wrong (Rule of thumb by the creator of a very popular operating system)
Making a distro is very much NOT EASY. It requires a lot of work to keep it patched and updated, and there will be lots of code which you have to write yourself, in order to provide package management.
However, if you're willing to go through all that work, you can try Linux From Scratch
I think the best way to learn stuff like this is to learn by doing. Reading information off a page can be satisfying, but the knowledge will fade. Install Arch a few times and in a few different ways, you'll start to appreciate the simplicity of the core commands.
You might enjoy the linux from scratch project.
I've been using linux/unix for 25 years or so, sometimes on and off, so that explains a small bare patch, but I can go full on mountainman within a week, that's why I go to /r/wicked_edge.
Hopefully one day I will find you there as well.
It could be your particular distro that's holding you back. For a long while I ran Debian, then switched to either Redhat or Fedora Core, but for the past 7+ years i've been doing Gentoo, and even compiling my own special version of Gentoo from the ground up LFS style with reproducible checksums for work... so that may have helped.
You might want to try http://www.linuxfromscratch.org/ if you want to learn the basic ins and outs... otherwise there's always Gentoo if you just wanna mess around and deal with problems as you update your system.
I'm a coder/developer/os guy though so I don't care about system up time -- if you do, might wanna try out debian.
I feel this might help you grow out your beard.
Oh and please remember, Linux is not an OS. It's the kernel. GNU are the tools that go along with it. I'd be fine if you called a particular distribution an OS though.
Oh and if you run Ubuntu or a variant thereof -- that's your problem with your beard right there.
Have you looked at this?
https://wiki.archlinux.org/index.php/Arch_compared_to_other_distributions#Gentoo.2FFuntoo_Linux
> If I don't care about compile times, should I really use Arch over gentoo
Unless you have a specific reason to compile everything from source (very specific hardware or software requirements) I don't really see that much use for it. Portage (the package manager in Gentoo) does the grand majority of the work when compiling packages, so if you're trying to gain a better understanding of how a *nix system is put together from scratch, I'd go with something like LFS.
I used a distro called Sabayon for a while that worked out well. It is a hybrid distro based on Gentoo that has a binary package manager as well. So in addition to being able to compile all the packages from scratch, you can also grab binaries from their servers if you're running short on time. Kind of the best of both worlds.
It's an original distro. From the official website: Linux From Scratch (LFS) is a project that provides you with step-by-step instructions for building your own custom Linux system, entirely from source code.
Then you're looking for one of these: LFS, Gentoo, Arch. But what you described is not really "coding". You're talking about configuring your distro and occasionally writing some scripts to automate things. It has nothing to do with software development.
Well the building a piano from scratch would be Linux From Scratch. Arch is more like "Building an IKEA piano"...not from scratch but from a lot of parts.
The Arch beginner's guide gives you everything you need to get started...I use it every time I have to install Arch on something.
So I wouldn't say it's "difficult", but "involved". It's a time- and brain-sink, so it's totally not for everyone.
Not really advice on how to build your own operating system from the ground up per se, but have you ever done Linux From Scratch?
http://www.linuxfromscratch.org/
this would probably give you a buttload of insight on how things fit together.
did anyone else get annoyed at
> Default Kernel is bloat / too main stream. Roll your own. http://www.linuxfromscratch.org
apart from the fact that pretty much any distro lets you roll your own kernel, building your own userland from scratch has nowt to do with it.
-Actually, this whole kernel bloat thing winds me up for a number of reasons :S
Have you tried Linux From Scratch? It isn't really a distro, but it may help you learn more of the innards of how Linux is put together. I've only started recently, so I really don't know how in depth it will go for what you are looking for, but from almost everyone I've talked to, it's a good way to learn Linux in a pretty in depth way, while making your own distro.
Recently a MS worker drone wrote on twitter that Firefox needs to go away.
His clown-handle is at:
https://twitter.com/auchenberg
Anyway. Here is his statement (partial quote):
"The web is dominated by Chromium, if they really cared about the web they would be contributing instead of building a parallel universe that's used by less than 5%"
Isn't this interesting how a MS worker drone, for an evil corporation that has tried to sabotage others from the get go, gave up on their rubbish joke of a browser (Internet Explorer, Edge), to join forces with Google against the end user here, is going critical about anyone else?
Hypocrisy is a thing.
While I myself am not happy with Mozilla at all (I stopped using Firefox when the Mozilla clowns made pulseaudio a requirement; and firefox is the only thing I still can not compile from source, being as terrible as its build system is http://www.linuxfromscratch.org/blfs/view/cvs/xsoft/firefox.html ), I most certainly DO NOT want Google and Microsoft to further dominate the web and abuse everyone else. So from this point of view it is good that not the whole world has become a troll such as this MS worker drone.
If you want to build a custom use computer, I would recommend Arch Linux. If you want to write the OS completely perhaps you will find what you want at Linux from Scratch
Honestly, they are both pretty similar, in terms of approach. As others have noted, the Arch Wiki is probably the greatest Linux resource out there today.
Personally, I think compiling everything from scratch is a waste of resources (heating up your components, using more power, etc.), and time.
If you need the minimal performance increase, it may be worth it, but personally, I've never seen the point in wasting 60 hours a week compiling the kernel (probably an exaggeration, dunno how long it really takes), so I'd say for long term usage, go with Arch.
If you really want to learn everything, you can always give Linux From Scratch a try.
That doesn't have package managers, doesn't install anything automagically for you, etc. You have to download, decompress, configure, and install pretty much everything from source, manually.
I did it once, ages ago, and it took me 2-3 days to install, and that is without an X server. Very informative, but also very time consuming.
When you install a Linux distribution like Ubuntu or Arch what you are actually doing is installing the Linux kernel(there is one and only one of these, ALL Linux distributions use it) along with a collection of other programs that work well together that ease the use of working with the Linux kernel and help provide a better user experience for the end user(programs like a desktop environment, file explorer, browser, text editors, etc..). So if you started writing your own kernel it's never going to be Linux because you made something else rather than use Linux.
You could make your own Linux distribution though by basically using the Linux kernel and bundling a bunch of other programs together to form a more complete operating system(this is by no means a drag n drop process but is doable).
If you are interested here are some other links that might interest you or help clear up some confusion
How about Linux From Scratch: The distro whose installation instructions are a literal book.
Who needs an install iso when you can spend a few hours manually compiling an environment where you can start to install.
Ok I am going to assume you know nothing about Linux. So first you need to read this How to ask a question the smart way If you don't follow those rules you can expect answers like "RTFM" or "STFN".
Now for education start at the The Linux Foundation There you will find a online 18 chapter course that will walk you through Linux and get you started. From there I am going to Linux From Scratch and plan on building a box from scratch. That should set you on your way.
I would suggest having a Linux box on hand. Personally I built a VM on my NAS and use that. VMWare Workstation is also a great help. What is your end goal? Mine is to build a OS in Linux that I can play one hand of online poker on. If that happens that is how I will measure success.
Honestly? Linux from scratch.
This is what I tell any new or Jr. sysop that wants to learn. Most of the time they are better off after that.
I started with Slackware, then Debian, moved to Gentoo then Arch, then actually migrated away to FreeBSD. Through that I played a RHEL during "work hours."
Learning the basics and fundamentals will allow you to manage RHEL/CentOS the same as you would any other box.
Picking up the mechanics of an OS and learning the various differing nomenclature and semantics of each distribution is the easy part anyway. If you actually want to learn how to understand it and administrate it, I'm not a big fan of baby steps in with a particular distro.
Try Linux From Scratch sometime, where getting to the point where you have working networking and graphical applications running is actually a huge achievement.
(Also it is a really fun learning experience :D)
I'd say that a distro "for beginners" will generally make more assumptions and offer less choices, particularly during the initial install. However, doesn't necessarily mean that using a "beginner-friendly" distro like ubuntu/fedora (or even a mac) makes someone a linux beginner. Some people want something that just works so they can get straight to working on actual useful work.
Also, on the flip side, jumping into a more difficult distro is an excellent way for a beginner to learn. The epitome of this is probably linux from scratch, which takes you through rolling your own system from the ground up.
Running a distro is really hard work, and it's only gotten worse as the stack as matured.
If you want an Idea of the work involved, head over to http://www.linuxfromscratch.org/ and run through the LFS and BLFS books, now add that you need to have some kind of package manager and a package distribution system set up and you start to get the picture.
Even Slackware isn't a one man band anymore (Patrick has some people to help him out).
I'm not really surprised that most people have found a way to tailor an existing distro to their needs rather than creating another one.
Linux From Scratch. If you can go through all of that, you are likely to learn enough about how everything operates that you might be able to create your own custom distro, if you had enough time to.
Everything else is just making it easier to maintain and manage once you get it going.
You can start learning Linux by skimming through Linux From Scratch or even following the whole routine. There's a good quick overview for a few packages that are quite important, but not all of them are essential to install a pre-compiled Linux distribution, some are necessary to build a toolchain and bootstrap your own compiled system. Also take a look at the Wikipedia article for LFS.
> Ahem: Google, Google Pictures, Google Play, Google Play Music, AppStore, iTunes, shall I continue.
Google, Google Pictures, Google Play, Google Play Music on your Google phone is not considered to be "bloatware" by the operational definition commonly used by the vast majority of people. It's sort of like claiming Microsoft Calculator to be bloatware on Microsoft Windows. Most people consider bloatware to be applications/software developed by third parties and then pre-installed on your system by some integrator down the line to fullfill some contractual obligation (e.g. McAfee anti-virus trial or superfish on your windows laptop, or Facebook app or Verizon Go90 app pre-installed, possibly as a system-app, on your smart phone, etc.)
REGARDLESS, pixels come out of the box with the bootloader fully unlockable. You can install/uninstall/run absolutely anything and everything you want.
TL;DR Unless you are specifically talking about something like LFS, your definition of "bloatware" is absurd.
Linux is just a kernel by itself.
It provides drivers to make your hardware functional and other things like built-in cryptography functions. That's pretty much it.
Think of it as a package full of drivers and tools that tell your system how to use each of its components. It doesn't actually tell them what to do it just sets them up ready to do something
Booting a linux kernel by itself simple turns your hardware power on and sets it up to get ready for use. That's it. You'll still have a black screen on your computer.
What you think of as a Linux Distro is generally a pairing of the GNU core utilities with a Linux kernel. (bash, ls, cd, and other things) as well as generally having some form of init system (like systemd).
For advanced further reading, see: Linux from Scratch
Certs? :/ I highly recommend pursuing a bachelors degree from RTFM university.
Linux From Scratch is a great way to learn about how Linux works and is put together. http://www.linuxfromscratch.org/
Yes, you can customise literally everything. It's open source. You can in theory obtain the source code for any element of your system and change it.
(This excludes things like drivers from certain vendors which are available under Linux but are binary blobs.)
Of course some changes are easier than others, and actually modifying the source code is usually unnecessary unless you want to do something that nobody else has ever thought to do before. In practice "customisation" is a combination of installing/uninstalling components and editing configuration.
If you're talking about the look and feel of your desktop, you can choose from a variety of environments and window managers. If you want to learn how to build an entire system from scratch, you may be interested in Linux From Scratch. I would suggest that you use Linux for a couple of years before you try that: it's a learning exercise, and you need to have some familiarity with Linux and building things in the shell to be able to follow what is going on.
Dude, you're hitting the limits of your understanding. That's frustrating, but it's also okay. So let's get at the root cause. Even better, if you're an embedded guy already (do you know how to set jump vectors? Are you practiced at the art of cross-compiling?), you've got all the tools you need and lots you won't.
I discovered a long time ago that I spent almost as much time reading blog posts and teasing out the relevant (and often, correct) bits as I would have just starting from scratch. In some cases, literal scratch. So if I were you, and I've been you, I'd do just that. Get familiar with... (drumroll please...) Linux from Scratch You can absolutely approach Linux like you would approach VXWorks or RTEMS or uC/OS-II.
Here is my own repo to get you started. Fire up that Vagrantfile, run the script as root, and an SD card image will magically appear. It won't be exactly what you need, of course, but it will be a good starting point for understanding how tutorials are sometimes broken and why dealing with distributions can have unexpected caveats. Once you grok how Linux really works in a "first, jump to 0x80000000" manner, you'll be well on your way.
I suggest you to fire up a virtual machine and do the LFS book http://www.linuxfromscratch.org/
I warn you, it will not be easy but if you finish this, you will gain good understanding of linux distros.
<Troll Face> As him what his LFS build looks like? http://www.linuxfromscratch.org/
Or better yet, build it yourself and ask him why he's not not running "real linux" himself. </Troll Face>
Then educate him in how one of the core tenants of libre software freedom to modify and distribute and that anyone who uses any linux at all should be praised for taking an important step in furthering the movement towards libre computing, regardless if you like their choice in disto.
BTW I'm an Manjaro/Arch user primarily. Solaris and Redhat at work. Ubuntu occasionally to test for cross distro deployments. Debian pure... not so much.
If you have a bit of time on your hand..and some patience: http://www.linuxfromscratch.org/
Do it in a virtual machine. It's not about understanding exactly every single step on how to build your own linux system but LFS throws a lot of useful shell commands at you in in a practical exercise. And you will end up with knowing a lot more about the configuration of a linux system and learn the basics about compiling and installing programs on your own (and also the consequences). Not to mention that doing this once will help you very, very much to understand the pleasures of having package manager.
Start by writing your own OS.
Just go do it. Right now. Doing it will teach you more than anything else. Along the way, as you encounter problems, you will have to research specifics, but I really mean this when I say it: If you want to program systems (OS's) then go program a system.
Start with Linux Mint or Gentoo or a similar project and work backwards from there. Once you can get Gentoo working, you can work your way backwards and start changing things to be how you think they should be. Once you feel comfortable with that, scratch the whole thing and write an OS from scratch. Don't be afraid to use other people's tools/code (GNU will be useful), but make sure that any code used was used because you brought it in, not because it was part of some standard library.
Also, write a C compiler. Then compile said C compiler with a different C compiler. Then compile somebody else's C compiler with your C compiler. If it's not working at that point, you messed up somewhere, or maybe the other guys did, either way, figure out why.
Lastly, to make sure you get some experience in small devices and embedded systems; I suggest the Arduino as an excellent platform: http://www.arduino.cc/
TL:DR; 1) Linux from scratch : http://www.linuxfromscratch.org/ 2) C compiler (Unix is just a C compiler with a directory structure, at the end of the day) : http://stackoverflow.com/questions/1669/learning-to-write-a-compiler 3) Your own OS (if you can write a C compiler and compile 'nix from scratch, you should be ready for this) 4) Adruino
1) Try Arch in a VM first. Walk around, configure a few things, get a feel for it. Because on a laptop install...
2) You will have to configure a lot of painful things to configure. Touchpad, video, sound, wireless, the whole gamut. This will be unpleasant.
3) You need a desktop environment. You are a comp sci student. You will have group projects. I'd hate you if you were the one guy in my group who refused to use eclipse because you want to code everything in vim.
4) The terminal is a powerful tool, not the only way to do things. Some of us like to think Linux is about doing things efficiently. Sometimes the terminal is more efficient, sometimes it's not. Also, try looking at reddit via links/lynx. Good luck.
5) If you wanna be hardcore, try http://www.linuxfromscratch.org/ however I don't know many people who can bring up LFS all the way to a desktop. I think I got halfway through compiling bintools before I gave up and now I feel I can truly appreciate Arch.
Linux From Scratch is probably the best place to start. From this you’ll learn all the things that you need to do, from there you can tweak it as you wish.
It is a fun project to do for learning, but it’s painful to use as a daily driver, though I know people that do so.
Compile your own from source - http://www.linuxfromscratch.org/blfs/view/svn/server/sqlite.html - being careful to not install it to anywhere centos expects things
Or bring up a quick debian vagrant VM since recent debian seems to have 3.8.x there....
Because gentoo is a mata-distribtuion. It's not like the usual linux distubution which is a system by itself but rather a building kit for making distributions. You can't really compare a gentoo derivative to a debian derivative. The later is a modified debian while the gentoo derivative is a own system that used the basic gentoo tools at the start to be created. So gentoo provides the "scripts" to start your own system and build the base. Once you have the base you can do whatever you want...including running your own package manager. ChromeOS is a gentoo derivative...but has not much in common any more with the base gentoo system, it doesn't even share the same package manager. That's what makes gentoo so interesting for making completely new distributions...if you want a fully customized system you can either use LFS and do everything by hand...or you use gentoo and have most of the work already done for you while you only pick what features you want in your system.
I think you should know how to think logically and do basic algebra before learning programming. For example, you should be able to think through a program and write down on paper how it's going to work through text or a flowchart.
We as programmers have done a pretty bad job of the whole "setting up environments" part. If you want to get started programming you should only have to download and install one thing. Python is the only environment that seems to be able to do this because it includes its own IDE and documentation built in.
I found that it took me about two years to be comfortable on the command line and one or two more until I preferred doing things on it; you just have to force yourself to use it until it feels right.
In a deeper comment you say that you'd like to know a little more about operating systems. If you feel up to it Linux from scratch gives you complete instructions to build your own Linux OS from source code. You don't have to learn any of the academic OS stuff but it'll take you through compiling a kernel, the filesystem structure, the bootloader, how the system gets going after it gets powered up, how the shell works with PATHs, and how Linux/Unix/BSD systems are structured (and by proxy OSX). Even better, it's mostly done on the command line, so you'll get step by step experience with that; I did it about five years ago and learned a lot.
I'm starting Linux From Scratch as well as watching videos for the RHCA/RHCE exam. I'd do LFS, then once you learn how to build/manage a single machine I'd start working on systems and services like Chef/Puppet/Ansible, Samba, DNS, DHCP, LDAP, Apache/Nginx, etc...
After you learn how to build/manage a single system, refer to this comment on becoming a Linux sysadmin: http://www.reddit.com/r/linuxadmin/comments/2s924h/how_did_you_get_your_start/cnnw1ma
> See here.
Oh wow, I can't believe I didn't know about "intents and purposes." That makes more sense that what I've been saying.
> Your distro looks pretty cool.
Thanks!
> I've been wanting to learn to build a system from 'scratch'. I think I'll try yours.
While I am certainly happy to having yet another person try out Bedrock Linux, I'm worried it may not be the best choice for someone whose goal is to learn to build a system from scratch. At some parts of the instructions I fall back to something along the lines of "go google more help elsewhere." Moreover, I make some really weird choices which could get you into bad habits. For example, static linking is heavily frowned upon by most general Linux distributions, and I use it quite a bit in Bedrock Linux.
I expect you've probably already heard of it, but I recommend Linux From Scratch for learning to, well, build a Linux system from Scratch. The resulting system is much more comparable to a traditional Linux distribution.
If you decide to stick with Bedrock Linux anyways, I'll be more than happy to assist you if you have trouble.
I learned an awful lot by building myself a Linux-From-Scratch system. If you're comfortable with computers and want a challenge, it's something that could well be interesting and you'll certainly get a good picture about how Linux works from the inside out.
It's really time consuming, and isn't all that easy to maintain once you're there. For day-to-day running on a desktop you're much better off with a distro with a package manager like Ubuntu, but for pure learning it's great - so long as you take the time to understand the commands you're running and not just copy-paste everything from the docs.
If you're really interested in the inner workings of linux, and have lots of time, I'd recommend trying Linux From Scratch. Boot a kernel, then build the utils from the ground up.
How .bashrc and .bash_profile are used vary with each distribution, but a good summary can be found in the LFS book section on bash shell startup files. Then you can inspect your particular distribution and find out where your aliases should go.
> Source doesn't even have a man page. Why is that?
Because source isn't a program. Instead, type
man bash / source
then keep pushing 'n' until you get to the part about the 'source' command.
it really depends on what you want to do. there certainly does get a point where such things might be beyond the efforts of an individual. most computer-science and ECE undergraduate programs offer an operating systems course (typically as a capstone course) but the things you'll make in the course of one (or even 2) semester would be hardly comparable to a modern OS.
something you could consider is doing the <strong>Linux From Scratch</strong> program as an educational exercise and then building off of what you make there. but then again, you'd have no commercial license over what you'd made and you'd still be heavily reliant on learning and incorporating the fruits of others' labors rather than assembling every line of code yourself.
Do you mean not backed by a large corporation? Debain would be first that comes to mind and what I use on anything I have the option to. Its also what Ubuntu and many others came from.
https://www.debian.org/intro/about
You could also create your own distro with linux from scratch. Its a goal of mine to do this just to learn about it all.
Here's a resource that you might really find enjoyable then: (Linux From Scratch.)[http://www.linuxfromscratch.org/] It's a guide to build your own Linux distro from the ground up, really helps you learn how the systems work
> I want to know this operating system like the back of my hand, not because I have to but because I want to.
There's a project specifically for you! You can do that in VM, no need for a physical installation. > however it was running very very hot
That's a complex problem and I don't think Desktop Environment is at fault here (Gnome is really fucking bad, but not that bad).
Based on my previous experience with laptops with dedicated video card on top of integrated graphics, it's probably because your dedicated gpu is being used instead of integrated graphics, and it causes increased power consumption. Unfortunately, I'm not aware of a current state of Optimus (the technology being used for GPU switching on Windows) on Linux, but Arch and Gentoo wikis seem to contain instructions on how to approach your problem.
This can be a pretty big challenge, but I highly recommend taking at least a cursory look into Linux From Scratch or LFS for short, if you haven't already.
Not a lot of people have the time to contribute to something like this, but you could get a team of interested friends together and make it happen. Do you have friends interested in computer science who might want to get involved?
What is your current skill level with GNU/Linux? Are you comfortable working on the command line? You'll need to become proficient with an interactive shell to accomplish your goals.
Now Gentoo is time consuming! That's one of the reasons why I prefer Arch over it.
One of these days I am going to attempt Linux from scratch, for no other reason than to say "I did it!". Haha.
> If you REALLY want to learn how the system works and install/use it by configuring everything yourself you should take a look at http://www.linuxfromscratch.org/lfs/ it teaches you how to build and entire linux system from scratch and how pretty much every single thing is handled.But be aware that it takes a long time by builnding your system from scratch.Another option would be to either run tinycore linux or slackware as they are a great learning way(thats just my opinion though).
Classic Linux Hardcore! :) <3
Although he said: "I am not afraid of the hard work that comes with learning a new OS, I know that there might be a steep learning curve too." He's not yet ready for LFS! LOL
Joking aside, generally none. Some distros are very tribal and you'll gain a lot of credit from that tribe by using their distro, you'll also gain a tribe that discredit you for using that distro, and everybody else probably won't care.
For building a Linux OS from 'scratch', you should complete the Linux From Scratch book.
Be warned however, that a completed LFS build is not really even a very usable daily linuix machine. It is very basic.
Next up from that I suppose is an Arch Linux install. The base system is very minimal (no desktop environment or window manager for example, just a command line), but at least you'll get a working system pretty quickly. You can then modify the Arch Linux install to your hearts content, and then some
If you're a soup-to-nuts kind of technical guy, and want to learn more about how Linux actually works, I'd suggest Linux from Scratch. It's a nifty little project that will keep you busy for a couple months as you build your own Linux distro (as advertised) from scratch. There is other better professional advice in the thread, but LFS was, for me, a key part of actually learning about Linux.
If you're feeling confident enough you could try getting into A Linux From Scratch project. It looks kind of daunting, but it's really not that bad. I'd agree with the other advice here, try living solely on Linux. Learn to unpack Tarballs (if you're not familiar already), try using programs solely from command line with no GUI, read hella man pages. Stuff like that.
It's great that you are learning about Linux. If you want to dive deeper into the Linux world, check out Linux from Scratch. This gets to the "guts" of the Operating System.
http://www.linuxfromscratch.org/ You want hardcore? Go hardcore. haha
And in answer to your question, Arch. Obviously. Because we're superior. And because you want to test the linux-ideapad kernel in the AUR.
And, yknow, because of every reason in the thread as well. You will learn all about how linux works without having to compile everything and take 3 days to build it.
And, all due respect to Slackers, but that's not hardcore. Slack works out of the box, and it's a great ready to run desktop. Not as easy as Ubuntu but....a hell of a lot easier to install than arch and gentoo.
http://www.linuxfromscratch.org/
Start there. You're dreaming too big right now. Get an understanding of the linux Kernel how to build it and how fix it. Build all your software from source. Then start to get into services.
Each distribution is more or less it's own operating system with its own set of rules. I agree standardizing does have a lot of benefitst. There is a lot of standardization in place between distributions, like the Free Standards Group. If you're looking in building a bare-bone system, I think you should look at Linux From Scratch
If you want to really learn how Linux works and become a Weapons Grade Sysadmin then Gentoo is a good thing to look at.
However, if you want to become a Thermonuclear Weapons Grade Sysadmin, the Linux from Scratch (LFS) is the right way to go. http://www.linuxfromscratch.org/
However, it would appear that you could use some time just getting used to driving a Linux desktop system. So, before diving into the heavy tech stuff, just drive Ubuntu for a while. Then, if and only if you want to get into the heavy tech end of things, pick up LFS and go to it.
you might want to just go through the 'linux from scratch' book/guide and build up your own Distro in a virtual machine.
If nothing else - its a good place to start and you will learn a lot of stuff. Even if its not Debian. http://www.linuxfromscratch.org/
Yeah. The KDE team gave up. QT moved into the Google monopoly world with their webkit (see http://www.linuxfromscratch.org/blfs/view/8.1/x/qtwebkit5.html for compile instructions; still work the same with the more recent qt).
It's unfortunate for the KDE team since they now depend on Google. Sort of taints the freedom meme they used ...
Aka, it is a mess.
http://www.linuxfromscratch.org/blfs/view/stable/general/freetype2.html
Note how if you want harfbuzz, you have to first build freetype without it, then build harfbuzz against that, then build freetype again against the harfbuzz you just built.
Who the fuck comes up with this?! Oh right, Gnome...
For Raspberry Pi, you'll want to compile the kernel (and everything, really) for ARM rather than x86_64. Older PCs running 32bit Intel or ATI chips will need software compiled for x86.
One thing to note: Compiling a kernel on a raspberry pi will take forever. A large part of the LFS time-requirement is just sitting and waiting for code to get turned into ones and zeroes, and that's true even with a high powered, multi core CPU. A dinky lil ARM chip on a Pi might take literally a day to finish You might want to cross-compile everything on a bigger box and use a VM to test, then use the usual r-pi install method to load it up on the actual device.
Hey thanks! I agree OP should give us more details about their background so we can better pinpoint as relevant as possible resources. :)
Honestly if they have time, my suggestion would be
1 - Do some basic DYI-electronics course to go from building a +-*/ calculator to an actual basic computer (able to store data using registers etc.)
It's so empowering to actually build the thing, like demystifying everything computer forever in your mind.
2 - Proceed with low level programmation (assembly, hex, all these good things...), just enough (few lectures should really be enough with a few hours hands on some FPGA) to see how it's done (translation of human-readable code to machine-readable instructions, the physics of going from words to electric signals).
At that point you see how a simple "if P then do X to Y" in code becomes electrons in a circuit, you have the whole chain exposed.
3 - Hop on some flavor of Linux From Scratch and here's a basic OS that you built yourself. Now your computer cannot do much, but what little it can do is the basis of everything that Google needs to build its marvels.
From there sky's the limit, but I bet these 3-6 months of education is life-long useful stuff in this century. I mean, at the very least Arch becomes second nature to you by that point, and Gentoo is just common sense. :)
Came here to ask a question about something totally unrelated. Ended up spending 20 minutes writing a blog about CS. Oh well! :p
You're joining the Linxu Master Race? Awesome!
There are a lot of ways to run Linux, for instance by running a distribution of Linux like Arch. As a starter you are not likely to distribute anything, and therefore don't need a distribution.
Download the latest Linuxkernel and compile it to install. If you need any further help, you can read the manual.
What's maintained, managed, and released is the Linux kernel moreso than the operating system itself. Before I can answer your question, you need to understand the difference:
The Linux kernel is part of an operating system. It's the lowest level component of the OS and is designed to manage things like device drivers, processes, memory, etc. It's what allows the software to communicate with the hardware. In addition to the kernel, the operating system includes the shell (user interface), and tools + services and applications included with it.
The Linux kernel is considered open source. Theoretically anybody could contribute to it, but everything is peer-reviewed and tightly controlled. The latest version of the Linux kernel is overseen by Linus Torvalds, the original creator of the Linux kernel, with some other people overseeing the maintenance of older versions. Only he, via support from The Linux Foundation can make an "official release" of the Linux kernel.
As for a Linux-based operating systems... technically anybody can create a linux distro. If you're so inclined you can make your own. Red Hat creates a Linux distro intended for enterprise servers called RHEL (Red Hat Enterprise Linux).
Red Hat is actually tied to a few distros of Linux. Fedora is run by Redhat but community driven. It's completely free and is the playground for new features and functionality. RHEL is based off of Fedora. It's run by RedHat and commercially released by RedHat at a cost (usually incl. support license too) and is built almost entirely for stability. CentOS is based off of RHEL but run by the community. It's RHEL minus the software cost or support network.
Depends, what kind of sysadmin are you thinking of being? Webhost? Work systems? etc.
Generally my job includes custom builds for clients that want something special (had a guy order an Arch Linux server), managing client's passwords and logins, email problem debugging, and anything else that's required to keep the production servers up and running.
With it comes the constant tweaking, testing, playing around in VM's, and the occasional dwarf fortress over ssh.
> I've read the bootcamp page and will be looking into some of the certificated and books you guys recommend but right now I'm looking for a more personalized answer if anyone is willing.
Genreally if you're going for linux I would recommend reading the Arch Linux Wiki, getting the Debain Administration Book, and the oft overlooked Linux From Scratch books.
Everything else depends on what you're looking for.
If it's linux related I could give you a few pointers on how to start playing around.
Windows stuff... Can't help you there, haven't used a windows machine for more than playing games that don't run on linux in the past 14 years.
Is that yovr idea ov a vndergrovnd OS? Kek. Arch Linvx ist so mainstream. I made my ovvn kvstom bvilt OS vvith LFS. There's only one copy ov it in the vvorld bvt the gvy vvho maintains it is a lazy asshole.
Linux from scratch is very good, and is as good of a place to start as any.
http://www.linuxfromscratch.org/lfs/downloads/stable/LFS-BOOK.pdf
Focuses more on building a linux distro from the ground up, after that, tenenbaum's book is good for core concepts.
I don't know why you specifically want a torrent. There is a wget list and also tarball containing all the necessary archives. If your internet connection is too shitty to download to tarball, you can still use the wget list since it will just ignore the downloaded files and resume the partial ones.
It's worth going to the site just to get their Essential Prereading List. The stuff you need to know to actually be able to build your own system. I downloaded The Unix and Internet Fundamentals HOWTO, as it seems to start at the beginning.
LFS (Linux From Scratch) taught me most of what I know about Linux, and how software is compiled and configured.
Ubuntu Rescue Remix is spectacular for doing non-physical data recovery.
Arch provides you with quite a minimal install. Then you install whatever you want.
If that's still too big, you may want to try Linux from scratch. Good luck... :)