This site uses cookies to deliver our services and to show you relevant ads and job listings.
By using our site, you acknowledge that you have read and understand our Cookie Policy, Privacy Policy, and our Terms of Service.
Your use of Stack Overflow’s Products and Services, including the Stack Overflow Network, is subject to these policies and terms.

Join us in building a kind, collaborative learning community via our updated
Code of Conduct.

Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems. Join them; it only takes a minute:

The premise of your question is flawed. You don't need a distribution to use Linux. You need the Linux kernel, and some userland code. That's it. A "distribution" is simply what we call it when someone else puts them together for you, instead of you doing it yourself.
– Jörg W MittagAug 7 at 23:29

9

In reality, in the beggining was more a chicken-and-egg problem, for the lack of decent specific user land tools. Once the guy behind MCC Interim Linux cracked that egg, and wrote several tools himself, at least fdisk, the door was open for others to put forward their own Linux setup more easily.
– Rui F RibeiroAug 8 at 0:10

7 Answers
7

In the early beginnings of Linux, Linus released the Linux kernel source in an "unusable" state, reportedly for signalling to others some work was being done into developing a new Unix-like kernel. By that time, as @RalfFriedi correctly points out, the Linux kernel was being cross-compiled in Minix.

As for "usable" code, firstly Linus slapped a couple of utilities together with the Linux kernel in the very beginnings for others to test it out, namely bash and gcc:

From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
Newsgroups: comp.os.minix
Subject: What would you like to see most in minix?
Summary: small poll for my new operating system
Message-ID: <1991Aug25.205708.9541@klaava.Helsinki.FI>
Date: 25 Aug 91 20:57:08 GMT
Organization: University of Helsinki

Hello everybody out there using minix -

I'm doing a (free) operating system (just a hobby, won't be big and
professional like gnu) for 386(486) AT clones. This has been brewing
since april, and is starting to get ready. I'd like any feedback on things people like/dislike in minix, as my OS resembles it somewhat
(same physical layout of the file-system (due to practical reasons) among other things).

I've currently ported bash(1.08) and gcc(1.40), and things seem to
work. This implies that I'll get something practical within a few
months, and I'd like to know what features most people would want.
Any suggestions are welcome, but I won't promise I'll implement them
:-)

So Linus was "distributing" the kernel plus some core utility programs in a diskette image format for some more advanced users to try it out and possibly contribute.

Afterwards, there were H J Lu's Boot-root floppy disk images. Which, if it could be called a "distribution", would gain the fame of being the first one capable of being installed on disk, at least by power users.

These were two 5¼" diskette images containing the Linux kernel and the
minimum tools required to get started. So minimal were these tools
that to be able to boot from a hard drive required editing its master
boot record with a hex editor.

Eventually the number of utilities available started outgrowing by a long way the diskette boot/root diskette setup.

MCC Interim Linux was then the first Linux distribution ever released able to be used by (slightly) less technical inclined people, introducing automated installation and new utils such as fdisk.

MCC Interim Linux was a Linux distribution first released in February
1992 by Owen Le Blanc of the Manchester Computing Centre (MCC), part
of the University of Manchester.

The first release of MCC Interim Linux was based on Linux 0.12 and
made use of Theodore Ts'o's ramdisk code to copy a small root image to
memory, freeing the floppy drive for additional utilities
diskettes.[2]

He also stated his distributions were "unofficial experiments",
describing the goals of his releases as being:

To provide a simple installation procedure.

To provide a more complete installation procedure.

To provide a backup/recovery service.

To back up his (then) current system.

To compile, link, and test every binary file under the current versions of the kernel, gcc, and libraries.

To provide a stable base system, which can be installed in a short time, and to which other software can be added with relatively little
effort.

After the MCC percursor, SLS was the first distribution offering X Window System (May 1992). Notably, the competitor to SLS, the mythical Yggdrasil, went out later on (December 1992).

Then there came other major distributors more as we know them today, notably Slackware (July 1993 - based on SLS) and Debian (from December 1993 until the first "official" v1.1 release - December 1995).

It would be good to link to those email messages from the most basic original source, assuming they're archived online somewhere.
– WildcardAug 7 at 19:42

2

@Wildcard Found that email message on a site claiming to be a Linus Torvald's page.
– Rui F RibeiroAug 7 at 19:54

2

@slm Actually from earlier times, I moved home too many times, and storage at my parents' is limited. I used to have 386BSD/FreeBSD early diskettes, and a PCworld CD from 93-95 (maybe 95) with the whole diskette set of Linux (cant remember distro). I also used to have the complete set of SCO V installation disks with a valid key that I ran in my 486. I had very advanced hw specs for the time, I worked for a computer major supplier.
– Rui F RibeiroAug 8 at 9:12

20

"(just a hobby, won't be big and professional like gnu)" Hah.
– F. GeorgeAug 10 at 10:34

7

just a hobby, won't be big and professional like gnu oh boy, were you wrong
– AlvaroAug 10 at 19:04

In my case (c.1994) Linux came built as images suitable for 3.5" floppies (1.44MB), probably the follow-on to the 5 1/4" images mentioned above, and each has a specific set of drivers compiled in (network, VGA, etc.). So you had to know what you needed and sort of hope that you had suitable hardware.

After you booted, and could either connect to LAN or dialup via modem, then you went and found the software you needed (FTP, gopher, etc. -- this was right at the start of the "web" and search engines didn't really exist yet, so you had to know where to go or who to ask) and built it yourself.

I was ecstatic when I was able to boot my 486DX and dial into my university network (56k!) and mount an AFS share on machine at home...those were the days. ;)

Assuming you did all this in 1994, it was probably more like 28.8k... good times!
– GuitarPickerAug 8 at 12:02

In 1994 you didn't have to juggle with floppies. I started with Linux this same year but Slackware already had full distributions on CD.
– GáborAug 9 at 17:30

You had to buy a CD from a magazine. At the time CD burners were expensive. As for RH, I do remember downloading all the files via FTP over a weekend in a fantastic shared 256Kbps connection, building a CD image, and then burning the CD at work, maybe around 96.
– Rui F RibeiroAug 10 at 8:49

@GuitarPicker, that might have been optimistic. Many of us were on 1200,2400 still and in 1992 Linux generally came down an Academic Institution's pipe. Like Linus, our internet access was by dialup to a University. We had Usenet and Gopher but no graphical (Mosaic) WWW. In 1992 not everyone had a '386 either. I had an Olivetti M24 (AT&T) 8086 box with a Monochrome screen that ran Windows 1 (not well). Minix was a hobbyist or academic pursuit, and not free. Linux was regarded as a bandwidth hog, but it did get regular capacity hikes going. Linux was a big thing on Campus for programmers.
– mckenzmyesterday

The short version

At the time that Linus started his kernel, the Gnu project had a working Operating system, except for a working kernel. So when people looked around, they found all of the tools that they needed: gcc (and friend: binutils), bash (and friends gnu-utils), emacs, …

They would then build their own system, from the parts.

It is where this joke comes from “If MS-Windows was an aeroplane, it would climb to 10 thousand feet, and then explode killing everyone in side, but at least you don't have to build your own aircraft before you depart.”

And this is why most distributions are called GNU/Linux distributions, if you follow the GNU and FSF.
– NemoAug 8 at 17:29

No. GNU didn't have a good libc library. Linux on old days used different libc libraries. Only relatively late we had a good glibc library. At beginning the minix tools were used (partly produced by GNU).
– Giacomo Catenazziyesterday

@GiacomoCatenazzi true about libc. But it did have most of the user land tools. I remember in 1992 compiling GNU tools to run on Sun Solaris. (I did not start using Linux until it was mid transition to glibc.) Those tools had been around for a while (before Linux).
– ctrl-alt-delor6 hours ago

Yeah. I also started with Solaris, preferring GNU tools than the Sun ones. From there I wanted more so I went to Linux (and my first distribution didn't have any X systems. Red Hat clients could use a commercial X. Only later we had XFree86. The transition to true free (and mostly GNU) system took many years (kernel was just one step, but the most "democratic" step [computer + basic unix were finally for everyone (or better for students)).
– Giacomo Catenazzi5 hours ago

In his book "Just For Fun" Linus Torvalds mentioned that the Linux kernel was initially a simple terminal emulator for connecting to remote Unix machine through a modem:

So ultimately I was able to change the two threads, the
AAAAAAAA and BBBBBBB, so that one read from the modem
and wrote to the screen, and the other read from the keyboard and
wrote to the modem. I had my own terminal emulation program.

When I wanted to read news, I would put in my floppy and
reboot the machine, and I would read news from the university
computer using my program. If I wanted to make changes to
improve the terminal emulation package, I would boot into Minix
and use it for programming...

And because I wanted to save files to my Minix file system — and because the Minix file system was well-documented anyway — I made my file system compatible with the Minix file system...

By the time I did this it was clear the project
was on its way to becoming an operating system. So I shifted my
thinking of it as a terminal emulator to thinking of it as an operating system.

From memory of some discussions I had with him: Peter was working as a Unix systems administrator for the government and going to the University of Victoria for a Masters Degree. Peter wanted a way to work from home, but the Unix desktop license costs were prohibitive. He was already familiar with the GNU userland tools so when he saw Linus Torvalds' message on the University network he took full advantage and wired GNU tools to the new kernel. So really, the initial problem was the reverse of your question: The userland already existed and all that was needed was a kernel.

Some other historical tidbits:

Peter did not distribute SLS Linux and did not charge a fee for the software. SLS was distributed by his wife Colleen and the fee was for the expensive and time consuming process of burning CDs to mail out.

Peter made a number of huge contributions to the kernel that have never been acknowledged including dynamic module loading and improved memory management.

The software was 'buggy' because he was working, going to school, raising two children and trying to keep Linux users happy. We all know how easy it is to keep Linux users happy...

Peter has no recollection of the 'argument'/'disagreement' over installer scripts that others have claimed caused a rift that started Slackware and Debian.

If you can load a kernel into memory and execute the image, it will panic because it can't execute /sbin/init. init is already a userland tool. Any program in C to use the kernel API is a userland program.
– RalfFriedlAug 9 at 21:10

D'oh! Good point. I was trying to say that the tools users usually interact with are not required for the kernel to run. I'll re-think and update...
– DinsdaleAug 10 at 22:59

While it is pretty well documented Peter was neither the first or second distributing the kernel + user land utils, we as the Linux community own in a lot into putting an effort into shapping the Linux distributions into something similar as we know today.
– Rui F Ribeiroyesterday

Linux was first started as an enhanced replacement for Minix and to understand protected mode programming on a i386. Minix came with source, and at the time there were the GNU userland utilities and the BSD userland utilities. Both were available with source. Linux tried to be POSIX compatible, so porting was not that difficult. One of the first steps was to run bash on Linux. You can consider the early days of Linux as cross compilation, the kernel had to be compiled on another system.

The kernel was being cross-compiled in Minix.
– Rui F RibeiroAug 7 at 17:39

17

To say that Linux was "started as an extension to Minix" is misleading. Yes, it's true that Linus was using Minix at that time, but Linux does not share a single line of code with Minix, and also follows a different design philosophy (microkernel vs. monolithic). Minix was also not officially available for the 386 at that time, whereas the Linux kernel was written for the 386 from the start. Linux's first filesystem was the Minix filesystem, because of compatibility, but this was also a complete reimplementation.
– Johan MyréenAug 8 at 6:56

10

Linus, and the author of Minix, both agree that it is not Minix or based on it.
– ctrl-alt-delorAug 8 at 10:53

@JohanMyréen Of course any short text is not the whole truth. Even Wikipedia contains only a short introduction. And I know that Linux was started because of the shortcomings of Minix. If there had been a Minix for i386, there might be no Linux today. On the other hand, Linux was inspired by Minix, and the first file system supported was Minix. But I agree extension is not the correct work, I changed the sentence.
– RalfFriedlAug 9 at 5:49

First let’s clarify something what is really important. If we talk about any OS (Linux and DOS) they where primary created to allow file manipulation on storage media (hard disk and floppy).

So if you asked: "Linux is only a kernel, and if users want to use it they need a complete distribution.", the answer would be that, with kernel you can do file manipulation and disk / computer management and if you want additional functions you need some utilities.

Today we have these modern OSes that are more interfaces to hardware and hardware features, and we forget the primary function of operating systems.

You are talking about DOS, Disk Operating System. DOS, and its predecessor CPM, were mainly for files on storage media. UNIX, its predecessors, and Linux, on the other hand, are real operating systems, and have a broader scope, and interface to hardware is of course a primary function of Operating Systems.
– RalfFriedlAug 9 at 5:32

Usually I try to throw an up-arrow to the wayward folks in the down-arrow oblivion, but your answer is truly terrible and deserving of this fate.
– Darth Egregiousyesterday