Take the 2-minute tour ×
Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems.. It's 100% free, no registration required.

I'm just curious if it's possible to install the linux kernel alone, or if you need to use one of the flavours. If it were possible, how would you do it? I don't need a detailed tutorial. I just want to know how it would be done conceptually. I'm not good with low-level stuff, and wanna know how you get an OS into the computer. I imagine it has something to do with the MBR.

Oh and I noticed that a lot of the answers suggest a certain distro of some minimal Linux. I should have probably stated that I am not looking to install a minimal or bare bones Linux. This question is purely theoretical. Still, I really appreciate all the answers, and will refer to them immediately, if ever I would want to install a truly personalized Linux.

share|improve this question
    
What do you mean by "alone" and "flavors"? Linux is not an OS it is a kernel, what would a kernel without an OS be good for? Are you trying to figure out the boot loader sequence instead? –  Caleb Jul 21 '11 at 10:24
1  
If you want to understand how a kernel/OS is getting into the computer, here is the place to start. Just make sure not to ask "newbie" questions there, they will bite you, ask them on SO instead. –  Philomath Jul 21 '11 at 10:35
    
By alone, I mean just the kernel, minus the user interface and included programs like OpenOffice. By 'flavours', I mean the different distributions of linux, like ubuntu, redhat, debian, and mandriva. I have almost no idea of what I'm talking about. I was imagining that the Linux kernel had some basic bash capabilities like DOS. I think I may have my ideas of kernels and operating systems tangled up. –  cesar Jul 21 '11 at 10:47
2  
Yes you are them REALLY tangled up :) Bash is just a user-land program that runs as a process managed by the kernel. A kernel by itself gives you nothing except a platform to run other things on. The suggestion of LFS (Linux From Scratch) in Shadur's answer is right on target. You would learn a lot about what all the different pieces are and what makes a distro a distro and where the kernel ends and user-land begins by building a scratch system. –  Caleb Jul 21 '11 at 10:54
    
Thanks, philomath. I'll check it out. I think I got my ideas tangled up. –  cesar Jul 21 '11 at 10:54

5 Answers 5

up vote 17 down vote accepted

You can technically install just a bootloader and the kernel alone, but as soon as the kernel boots, it will complain about not being able to start "init", then it will just sit there and you can't do anything with it.

BTW, it is a part of the bootloader that is in the MBR. The kernel sits somewhere on the regular area of a disk. The bootloader is configured to know where that is, so it can load the kernel and execute it.

share|improve this answer
    
How would you put it into the MBR? –  cesar Jul 22 '11 at 6:07
    
Every bootloader comes with a tool for installing itself into the MBR. There are also friendlier tools like Boot-Repair (help.ubuntu.com/community/Boot-Repair). –  Shawn J. Goff Jul 22 '11 at 12:26
    
Well you could create an initramfs and embed it into the kernel image, and then you'd have a fully working system from just a kernel image file :-) –  Patrick Jul 27 '12 at 14:22

If you are asking if you can just install or upgrade a kernel "over" an existing system without installing a bunch of other programs?

The Linux kernel is a binary file usually named vmlinuz-x.x.x-x-name in the boot directory (which is usually a separate small partition at the beginning of the hard drive) where the x's are a version number. "name" is just a chosen name for the kernel that can be set at compile time, you can use it to identify what type of machine or architecture the kernel is for or any other reason.

It's loaded at boottime by a bootloader, typically GRUB which is invoked by boot code in the MBR which is invoked by the BIOS ROM. Once it's loaded it's not "held open" or protected specially. So you can replace that file with another working kernel. But, GRUB has a cool feature which lets you select multiple kernels to boot from. So it's pretty smart to add your additional kernel to that list, but keep the original known working kernel just in case things go wrong.

Almost all distributions I believe make a "modular" kernel where device drivers are in separate files. So most kernels need a filesystem containing drivers available to it at boot time and that is what an "initrd" (initial RAM disk) or "initramfs" is for. GRUB will load the kernel at a location in memory, and the initrd at a different location, and jump to the kernel telling it where the initrd is, starting Linux.

Drivers can also be "built into" the kernel and are therefore automatically loaded and available when the bootloader loads the vmlinuz image. Kernels that are meant to work on diverse systems (such as those of most distributions) usually minimize what is built into the kernel because available hardware will be scanned later in the boot process and only modules representing present hardware will be loaded.

There are tools to modify and create initrds. Debian has nice tools and I imagine other distributions do as well.

So, if you download a more recent kernel from kernel.org and compile it to create a new kernel binary image, you need to make or update an initrd with drivers that work with that kernel. The old initrd won't work because drivers have to match up with the version of the kernel that is running.

The initrd file is named initrd.img-x.x.x.x-name similarly to the kernel, and can be replaced after boot just like the kernel, and best practice would indicate you don't delete a known working initrd until you know you can boot into your new kernel+initrd successfully.

I hope that provides some context.

If you are looking for a "barebones" Linux install that has little to no additional programs installed with it, my favorite choice has always been installing the Debian netinst image. Pretty much you have only the most basic tools needed to run a command line text console and nano as a text editor.

share|improve this answer

Many distros provide "core" installs. This is what you want. See ubuntu-minimal, debian net-install, archlinux (default is just core).

The other answers are useful if you want to learn, but that might not be the case =p

share|improve this answer

I would like to second Shadur's suggestion you should make your hands dirty the Linux From Scratch way.
Also, something similar, try Pocket Linux.

The Pocket Linux Guide demonstrates how to build a small console-based GNU/Linux system using only source code and a couple of diskettes. It is intended for Linux users who would like to gain a deeper understanding about how their system works beneath the shroud of distribution specific features and tools.

share|improve this answer
1  
Although note that no one in their right mind recommends /either/ LFS or PocketLinux for any kind of important production task -- they're good for learning how stuff works, but there's a reason most distributions come with a full set of tools and frontends for most stuff. –  Shadur Jul 21 '11 at 14:30

I don't think you understand exactly what you're asking, but you might want to take a look at the Linux From Scratch project.

share|improve this answer
    
LFS would be a good idea to figure out how to build a minimum system. Or you could look at MINIX (and read the book). Or, for a different introduction (less work, but less informative), look at the packages tagged “essential” (aptitude search '?essential') on Debian or Ubuntu and understand what each does (there's a bit more than the bare minimum). –  Gilles Jul 21 '11 at 15:47

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.