20

Being new to Linux, maybe this is a stupid question! I don't quite understand how this distro thing all works, is Raspbian just compiled packages with source code taken from the individual repositories of the respective packages? Are there source code changes required to make a distribution, if so is there a branch or GitHub repository for instance? And lastly how does it relate to the 'linux' here github.com/raspberrypi/linux?

Dog Ears
  • 2,027
  • 6
  • 19
  • 28
  • No question is a stupid question! I haven't got time to give a full answer, but the repo you have linked to is the patched Linux kernel, whereas Raspbian is a Linux distribution. – Alex Chamberlain Jul 23 '12 at 14:00
  • Just the process of asking the question has helped my understanding, a small amount! I look forward to a your answer. Cheers Ears. – Dog Ears Jul 23 '12 at 14:06
  • The primary problem is that the Debian Linux distribution does not support the CPU in the Pi in their ARM version - (think 486 versus Pentium) - so the system needs to be recompiled by volunteers to work on the Pi. – Thorbjørn Ravn Andersen Jul 28 '12 at 16:30

2 Answers2

27

Raspbian is a Linux Distribution. Anything that is built on top of the Linux Kernel can be called a Linux Distibution.

Rather than a brand new OS, Raspbian is a modified version of the popular Debian Squeeze Wheezy distro (which is currently in stable testing). It runs on a patched version of the Linux Kernel, which is what can be found on the Raspberry Pi GitHub. This version adds several Raspberry Pi optimisations to the kernel sources.

is Raspbian just compiled packages with source code taken from the individual repositories of the respective packages

The most important difference of Raspbian is that it is built with Hard Floating Point support, which drastically improves performance. Packages tend to be provided as source, and can be compiled with any compiler, in this case each package (apparently currently in the region of 35000), has had to built especially for the Raspberry Pi using a hard float compiler (and some other optimisations).

Are there source code changes required to make a distribution, if so is there a branch or GitHub repository for instance?

Are you interested in making a distribution? You could start by reading the processes that the Raspbian developers went through when starting out. Here is an interesting post on the forums that is worth reading. And then consider taking a couple of days to get to grips with a Linux From Scratch project.

Jivings
  • 22,538
  • 11
  • 90
  • 139
  • 1
    It is a port of the debian version wheezy (testing) and not squeeze(last final stable). With that it is up2date, but not beta software (that would be sid). Stable means here, that there is a complete software freeze and only security/bugfix releases are updated. – keiki Jul 23 '12 at 17:54
  • @darrenjw I keep mispelling the name everywhere. Corrections made. Thanks. – Jivings Jul 23 '12 at 22:58
  • So is that kernel on Github the only port for the RPI? I guess that has to be done by the foundation because of the closed source binaries? Do all the other distros like qtonpi and arch use the same kernel source? Would that be the source I'd need if I were to experiment with the LFS? – Dog Ears Jul 24 '12 at 22:25
  • @DogEars Yes to all of those questions. I'm not sure about the other distros, as they will each have their own take on the kernel configurations. But I expect they are based on that source. – Jivings Jul 24 '12 at 23:09
  • @Jivings - My last question about source code changes to make the distribution, like build flags and such still remains unanswered, I'm working through long Raspbian thread but can't seem to see any mention of a (source code) repository, where do these changes go? – Dog Ears Jul 26 '12 at 08:38
  • @DogEars Everything will be built with the already optimised gcc that they have compiled. So that's all you need to find information about. – Jivings Jul 26 '12 at 09:13
  • @Jivings - but some code (or config) changes have been made, e.g. some reduced optimisation levels to get working binaries, where are these changes committed to? The original source repositories? are these changes committed to a make file or something similar, so they are specific to the armv6 HF target? – Dog Ears Jul 26 '12 at 10:48
  • @DogEars What sort of changes do you mean? Would you like to continue this in [chat]? – Jivings Jul 26 '12 at 10:51
  • @Jivings - http://chat.stackexchange.com/rooms/4254/what-is-debian Done! – Dog Ears Jul 26 '12 at 13:20
  • @DogEars unless you have plenty of spare time, it is much more efficient to simply adapt an existing solution. – Thorbjørn Ravn Andersen Jul 28 '12 at 16:32
  • 35000 Packages! That's crazy! – ACarter Jan 08 '13 at 16:46
6

Linux is technically just the kernel which is the core software that provides low-level access to the hardware - things like sending data over the network, displaying graphics, sound output, starting and stopping programs, reading and writing files and so on.

Obviously you need a lot more software than that to have something useful. You need things like a shell (Command Terminal in Windows), a GUI, programs to list and copy files, then there's all the stuff like a file manager, web browser, media players, compiler, whatever. All of that, together with the kernel is a 'distribution'. In the linux world, people tend to put everything in distributions. Like, every piece of software ever written.

It's frankly the wrong way to do it, but nobody has come up with a better way yet, and the reason is simple: different distributions are inconsistent about how things work, so often software will have to be changed a bit to work on different distros. For example, they may store configuration files in different directories, or name libraries differently, or all manner of other changes, some good, some idiotic.

One of the biggest ways distros vary is how they handle including every piece of software ever written. Obviously you can't install all that crap onto your computer - instead it is stored on some servers somewhere, and you use something called a package manager to get what you want (basically like Apple's app store but way more powerful and way less user friendly, and slightly less reliable).

The two most popular package managers are APT (Advanced Package Tool I think), which is used by the very popular distro Debian, and also Ubuntu which is derived from Debian (they share a lot of stuff), and RPM (Red Hat Package Manager one would guess), which is used by Red Hat. That is more popular in the corporate world.

So anyway, getting back to the point, Raspbian is a modified version of Debian, optimised to work on the Raspberry Pi. The optimisations are basically different compiler options so that it runs faster. Oh and it includes all the closed source drivers and things necessary for the RPi's graphics card. GPU. Whatever.

You can basically think of it as like Linux's version of Windows RT.

Hope that helped. Sorry if it was too simple!

Tim
  • 61
  • 1