Unix is een familie van besturingssystemen die min of meer aan dezelfde standaarden voldoen. Ik meen dat je tegenwoordig een standaard genaamd POSIX hebt, waaraan alle moderne unix varianten proberen te voldoen. Als je dan als programmeur een programma maakt, zou je ervan uit moeten kunnen gaan dat het op al die systemen werkt.
OpenBDS, NetBSD, PcBSD, enz enz zijn allemaal afsplitsingen ('forks') van FreeBSD dacht ik. *BSD is dus geen linux omdat BSD zijn eigen kernel heeft. Mac OSX gebruikt dan weer wel een door apple aangepaste FreeBSD kernel
Dan heb je nog inderdaad een unix van sun, Solaris genaamd. Die heeft dus ook zijn eigen aparte kernel.
Dan heb je nog de GNU Hurd kernel en nog een heleboel andere unixen.
Dan heb je de linux kernel. Linux is dus eigenlijk geen besturingssysteem maar een kernel.
Als je als C programmeur een programma maakt, gebruik je standaard C bibliotheek. Deze bibliotheek 'vertaalt' standaard C functies zoals fopen om een bestand te openen naar een aanroep van de juiste kernel functie. Dus als er een standaard C bibliotheek en een kernel aanwezig zijn, kunnen normale C programma's draaien en is er sprake van een besturingssysteem.
De *BSD's hebben een eigen c bibliotheek. Linux niet. De C bibliotheek van linux was aanvankelijk ontwikkeld voor de GNU Hurd kernel. Dit is dus GNU stdlibc. Daarom spreek je officieel van GNU/Linux als je het over het besturingssysteem linux hebt.
Daarna zijn er nog allerhande bedrijven en clubs die alles wat dan weer boven op de linux kernel en de GNU C bibliotheek draait in elkaar schroeven. Dat zijn de linux distro's.