Linux is only a kernel, and if users want to use it, then they need a complete distribution. That being said, how were the first versions of Linux used when there were no Linux distributions?
In the early stages of Linux, Linus Torvalds released the Linux kernel source in an alpha state to signal to others that work towards a new Unix-like kernel was in development. By that time, as @RalfFriedi stated, the Linux kernel was cross-compiled in Minix.
As for usable software, Linus Torvalds also ported utilities to distribute along with the Linux kernel in order for others to test it. These programs were mainly
gcc, as described by LINUX's History by Linus Torvalds. Per the the Usenet post:
From: [email protected] (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: <[email protected]> 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 :-)
Linus distributed the kernel and core utility programs in a diskette format for users to try it and possibly to contribute to it.
Afterwards, there were H.J. Lu's Boot-root floppy diskettes. If this could be called a distribution, then it would gain the fame of being the first distribution capable of being installed on hard disk.
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 grew larger than the maximum size of a diskette.
MCC Interim Linux was the first Linux distribution to be used by people with slightly less technical skills by introducing an automated installation and new utilities such as
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.
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.
Other major distributors followed as we know them today, notably Slackware in July of 1993 (based on SLS) and Debian in December of 1993 until the first official version 1.1 release in December of 1995.
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. ;)
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.”
Edited: Removed embarrassing lack of understand of how kernels work and left the important part.
The GNU userland existed before the Linux kernel did.
Peter MacDonald is largely recognized as having created the first 'usable' GNU/Linux distribution.
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.
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.
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.