67

I often hear people refer to the Linux kernel as the Linux kernel image and I can't seem to find an answers on any search engines as to why its called an image.

When I think of an image I can only think of two things either a copy of a disk in or a photo. It sure as hell isn't a photo image so why is it referred to as an image?

1
  • 10
    It can be also copy of RAM region (which is IMHO the case with kernel) Jun 9, 2015 at 7:56

5 Answers 5

61

The Unix boot process has (had) only limited capabilities of intelligently loading a program (relocating it, loading libraries etc). Therefore the initial program was an exact image, stored on disc, of what needed to be loaded into memory and "called" to get the kernel going.

Only much later things like (de-)compression were added and although more powerful bootloaders are now in place, the image name has stuck.

4
  • 1
    Compression and decompression has nothing to do with something being called an "image." It's still loaded into a specific point in memory and called directly, just like the old days. The intervening boot loader has always existed as well. The kernel itself is still an image, loaded into a specific point in memory, and called directly.
    – phyrfox
    Jun 10, 2015 at 13:19
  • Exactly, that is why the OP was confused IMO. A compressed version of his image would not look like an image anymore (if looking at it uncompressed) and not be called an image. But the kernel is still called an image.
    – Anthon
    Jun 10, 2015 at 13:29
  • TBH not sure you're right about the origin of it, but your explanation makes so much sense that I have to upvote. IMHO compressed image is still an image. The way to retrieve image is irrelevant. It's an image. It makes clear what you're talking about and perhaps that's the most important thing. Jun 11, 2015 at 9:21
  • Interesting. So if I have a javascript file that contains the text of an object containing a bunch of kernel-like functions, and load it via XMLHttpRequest and eval it, on NodeJS side and use NodeJS server to interact with it via requests, I can call this javascript file a Kernel Image :O
    – Dmytro
    Oct 25, 2016 at 12:51
32

The word image also has a definition "A file that contains all information needed to produce a live working copy."

3
  • 3
    It's a nice unambiguous term, avoiding the need to fumble around with terms like "binary", "executable", "program", ... to refer to the actual image on disk.
    – Thomas
    Jun 9, 2015 at 12:59
  • 3
    An image is a snapshot of memory.
    – ikegami
    Jun 11, 2015 at 14:30
  • 2
    Not entirely -- I need enough information to (re)create the complete system state. If a memory dump is sufficient for that, then I have implicit knowledge (start address, initial system state); if it isn't sufficient, I wouldn't refer to the memory dump as an image. Jun 11, 2015 at 14:36
20

It doesn't mean an "image" is just a 1:1 copy of a disk. Just as a photograph represents the reality exactly as it was when shooting, an image of an executable program (or kernel) represents the program in a state, where it can be loaded (or unpacked) in the systems memory exactly as it is and then given control to it. That program can then start running from that state in a consistent manner. So the Linux kernel image is an image (a picture of the state) of the Linux kernel that is able to run by itself after giving the control to it.

Nowadays, the bootloader loads such an image from the hard disk’s filesystem (driver is needed), replaces itself with it and so gives the control to it. The booting process of a computer does that several times until the operating system finally runs. This is called chain loading. Or if a smaller program (chain-)loads a more complex one, it is called bootstrapping.

The BIOS loads the bootloader that is also an image, for example called boot.img in case of grub. That boot.img is not a file (if grub is installed); it is the name for the part that is in the Master Boot Record (MBR). If you dump that to a file it would then be an image in form of a file not rawly written to disk, but rawly written in a file. This is also a representation (image) of the earliest state where grub is able to load the rest of itself. grub then has its own mechanism how to fully load itself by loading other images. This is represented by the different stages in grub. After that, the bootloader loads the kernel image by replacing itself with the extracted contents of that file.

7

Ancient History. the term image comes from an old Digital Equipment Corporation term for the output from the compiler-> linker. the file is an image created by interpreting the code and so on through the linker to make an executable "Image" of your design.

2
  • 1
    I'd upvote if you added a reference link Jun 10, 2015 at 21:22
  • refer to Digital Equipment Corporation's "RSX-11M+ Systems Reference Manual" DEC 1981. since then it propagated through the industry
    – SkipBerne
    Jun 11, 2015 at 11:46
5

In math the kernel is the inverse image of a subset of the image of a some map, were the subset is equal to the identity element in the codomain. I'm certain these names derive from mathematical concepts as they are related significantly in various fields in mathematics. Considering Unix was derived in an academic environment it may be possible that it's use of these word's kernel and image are the same.

If you have a set which represents some level of information about the "complete" O.S., if that information also forms a group then you can define group homomorphism's on that set or basically maps to other sets having different sizes then the original set so long as they "respect" the orginal set's structure that made it a group. You can see it may be in one's favor to map the set to a smaller set or a subset of some set where the subset is smaller.

Image - The image of a group homomorphism and in general functions and maps, are just a subset of some set, who's elements actually get mapped to. The function may not map to every single element and those elements would not be included in the image.

Kernel - Basically just the elements from the original set that map to the image, but only map to the identity element in the image. Basically the elements that map to 0 like thing in the image.

If the image is smaller in size then the original set then we can see multiple items must map to one single element. So for example there may be multiple elements from the kernel that map to the image and we already know they all have to map to 0.

We can see that if we choose the original set to be finite sequences of binary or 1's and 0's and the codomain (set mapped to) to be also sequences of binary, then we can construct such things if and only if, a suitable group structure can be defined (this little bit in depth and unrelated to question asked).

So we see with complete certainty that "kernel" and "image" of an O.S. are completely defined and have mathematical meaning. Independent from perhaps other uses of the terms.

11
  • Basically the kernel may be a 'thinned' version of the os, or part of os that is important and can be 'abstracted' then provided the map was injective homorphism and is known, can work out the entire image with out having to tote around the entire image. Looks like a method of data comression is were the term's "kernel" and "image" stem from. But really they stem from well known mathematical concepts. Jun 9, 2015 at 21:21
  • 4
    Hi Marshal. It's better to improve your post by editing it rather than adding comments. Jun 9, 2015 at 21:38
  • 5
    I believe the computing use of kernel comes from the "The central (usually edible) part of a nut, especially once the hard shell has been removed." (see wiktionary) - it is the small, inner part of the operating system; after stripping all the "outer layers" (GUIs, command-shells, loadable drivers) it is the (roughly) minimum part needed to make/let the hardware operate in some useful fashion.
    – TripeHound
    Jun 10, 2015 at 8:17
  • 1
    Wow just wow. Speculation w/o basis. TripeHound got it right. marshal craft just guessed.
    – Joshua
    Jun 10, 2015 at 17:27
  • Revise your "fairly certain"ty :)
    – hobbs
    Jun 10, 2015 at 21:32

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .