История Berkeley Software Distribution началась в 1970-х годах, когда Калифорнийский университет в Беркли получил копию Unix . Профессора и студенты университета начали добавлять программное обеспечение в операционную систему и выпускать ее как BSD для избранных университетов. Поскольку она содержала проприетарный код Unix, изначально ее приходилось распространять по лицензиям AT&T. Затем программное обеспечение от AT&T было переписано и выпущено как свободное программное обеспечение по лицензии BSD . Однако это привело к судебному разбирательству с Unix System Laboratories, дочерней компанией AT&T, ответственной за Unix. В конце концов, в 1990-х годах окончательные версии BSD были публично выпущены без каких-либо проприетарных лицензий, что привело к появлению множества потомков операционной системы, которые поддерживаются и по сей день.
Самые ранние дистрибутивы Unix от Bell Labs в 1970-х годах включали исходный код операционной системы, что позволяло исследователям в университетах модифицировать и расширять Unix. Операционная система прибыла в Беркли в 1974 году по просьбе профессора компьютерных наук Боба Фабри , который был в программном комитете Симпозиума по принципам операционных систем , где Unix был впервые представлен. Для запуска системы была куплена PDP-11/45 , но по бюджетным причинам эта машина использовалась совместно с группами математики и статистики в Беркли, которые использовали RSTS , так что Unix работала на этой машине только восемь часов в день (иногда днем, иногда ночью). Более крупная PDP-11/70 была установлена в Беркли в следующем году на деньги из проекта базы данных Ingres . [1]
Также в 1975 году Кен Томпсон взял академический отпуск в Bell Labs и приехал в Беркли в качестве приглашенного профессора. Он помог установить версию 6 Unix и начал работать над реализацией Pascal для этой системы. Аспиранты Чак Хейли и Билл Джой улучшили Pascal Томпсона и реализовали улучшенный текстовый редактор, например . [1] Другие университеты заинтересовались программным обеспечением в Беркли, и поэтому в 1977 году Джой начал компилировать первый Berkeley Software Distribution (1BSD), который был выпущен 9 марта 1978 года. [2] 1BSD была дополнением к версии 6 Unix, а не полноценной операционной системой. Было разослано около тридцати копий. [1]
Второй дистрибутив программного обеспечения Berkeley (2BSD), выпущенный в мае 1979 года, [3] включал обновленные версии программного обеспечения 1BSD, а также две новые программы Джоя, которые существуют в системах Unix по сей день: текстовый редактор vi ( визуальная версия ex ) и оболочка C. Билл Джой разослал около 75 копий 2BSD. [1] Еще одной особенностью был сетевой пакет Berknet , разработанный Эриком Шмидтом в рамках его магистерской диссертации , который мог подключать до двадцати шести компьютеров и обеспечивал электронную почту и передачу файлов. [4]
После выхода 3BSD (см. ниже) для линейки компьютеров VAX новые выпуски 2BSD для PDP-11 по-прежнему выпускались и распространялись через USENIX ; например, 2.8.1BSD 1982 года включала в себя набор исправлений проблем производительности в версии 7 Unix , [5] а более поздние выпуски содержали переносы изменений из выпусков BSD на базе VAX обратно в архитектуру PDP-11. 2.9BSD 1983 года включала в себя код из 4.1cBSD и была первым выпуском, который представлял собой полноценную ОС (модифицированную V7 Unix), а не набор приложений и исправлений.
Самый последний релиз, 2.11BSD , был впервые выпущен в 1991 году. [6] В отличие от предыдущих релизов, он требовал разделения пространства инструкций/данных , чтобы вместить постоянно растущий размер его служебных программ. В 21 веке обновления обслуживания от добровольцев продолжались: патч #482 был выпущен 27 сентября 2024 года. [7]
В 1978 году в Беркли был установлен компьютер VAX, но порт Unix на архитектуру VAX, UNIX/32V , не использовал возможности виртуальной памяти VAX . Ядро 32V было в значительной степени переписано аспирантом Беркли Озалпом Бабаоглу , чтобы включить реализацию виртуальной памяти, а полная операционная система, включающая новое ядро, порты утилит 2BSD на VAX и утилиты из 32V, была выпущена как 3BSD в конце 1979 года. 3BSD также альтернативно называлась Virtual VAX/UNIX или VMUNIX (для Virtual Memory Unix), а образы ядра BSD обычно назывались /vmunix
до 4.4BSD.
Успех 3BSD стал важным фактором в решении Агентства перспективных исследовательских проектов Министерства обороны США (DARPA) финансировать Группу исследований компьютерных систем в Беркли (CSRG), которая должна была разработать стандартную платформу Unix для будущих исследований DARPA в рамках проекта СБИС .
4BSD (ноябрь 1980 г.) предложила ряд усовершенствований по сравнению с 3BSD, в частности управление заданиями в ранее выпущенном csh , delivermail (предок sendmail ), «надежные» сигналы и программную библиотеку Curses . В обзоре релизов BSD 1985 г. Джон Куортерман и др . писали: [8]
4BSD была операционной системой по выбору для VAX с самого начала и до выпуска System III (1979–1982) [...] Большинство организаций покупали лицензию 32V и заказывали 4BSD в Беркли, даже не потрудившись получить ленту 32V. Многие установки внутри Bell System работали на 4.1BSD (многие до сих пор так делают, а многие другие работают на 4.2BSD).
4.1BSD (июнь 1981 г.) был ответом на критику производительности BSD по сравнению с доминирующей операционной системой VAX, VMS . Ядро 4.1BSD систематически настраивалось Биллом Джоем до тех пор, пока оно не стало работать так же хорошо, как VMS на нескольких тестах. Релиз должен был называться 5BSD , но после возражений со стороны AT&T название было изменено; AT&T опасалась путаницы с UNIX System V от AT&T . [9] Было обнаружено несколько лент, все с этикеткой, на которой указано 4.1BSD, однако различия между лентами присутствуют. [10] Разработка программного обеспечения, которая привела бы от 4.1BSD к 4.2BSD, финансировалась из таких источников, как ARPA, номер заказа 4031, контракт N00039-82-C-0235, который действовал по крайней мере с 15 ноября 1981 года по 30 сентября 1983 года. [11] [12]
4.2BSD (август 1983) потребовала более двух лет для внедрения и содержала несколько крупных изменений. До ее официального выпуска вышло три промежуточных версии: 4.1a от апреля 1982 года [13] включала измененную версию предварительной реализации TCP/IP BBN ; 4.1b от июня 1982 года включала новую Berkeley Fast File System , реализованную Маршаллом Кирком МакКьюсиком ; и 4.1c от апреля 1983 года была промежуточным выпуском в течение последних нескольких месяцев разработки 4.2BSD. Вернувшись в Bell Labs, 4.1cBSD стала основой 8-го издания Research Unix , а коммерческая поддерживаемая версия была доступна от mt Xinu .
Для руководства разработкой 4.2BSD Дуэйн Адамс из DARPA сформировал «руководящий комитет», в который вошли Боб Фабри , Билл Джой и Сэм Леффлер из UCB , Алан Немет и Роб Гурвиц из BBN, Деннис Ритчи из Bell Labs , Кейт Ланц из Стэнфорда , Рик Рашид из Carnegie Mellon , Берт Холстед из MIT , Дэн Линч из ISI и Джеральд Дж. Попек из UCLA . Комитет заседал с апреля 1981 по июнь 1983 года.
Помимо Fast File System, были приняты несколько функций от внешних разработчиков, включая дисковые квоты и управление заданиями. Sun Microsystems провела тестирование на своих машинах Motorola 68000 перед выпуском, что улучшило переносимость системы. [8] Поддержка оборудования Sun отчетливо видна в артефактах BSD 4.1c в CSRG ISO. [14]
Официальный релиз 4.2BSD состоялся в августе 1983 года. Он был примечателен тем, что стал первой версией, выпущенной после ухода Билла Джоя в 1982 году, чтобы стать соучредителем Sun Microsystems; с этого момента Майк Карелс и Маршалл Кирк МакКьюсик взяли на себя руководящие роли в проекте. На более легкой ноте, он также ознаменовал дебют демонического талисмана BSD на рисунке Джона Лассетера , который появился на обложке печатных руководств, распространяемых USENIX .
4.3BSD был выпущен в июне 1986 года. Его основные изменения были направлены на улучшение производительности многих новых вкладов 4.2BSD, которые не были так сильно настроены, как код 4.1BSD. До выпуска реализация TCP/IP в BSD значительно отличалась от официальной реализации BBN. После нескольких месяцев тестирования DARPA определило, что версия 4.2BSD была лучше и останется в 4.3BSD. (См. также Историю Интернета .)
После 4.3BSD было решено, что BSD отойдет от устаревшей платформы VAX. Платформа Power 6/32 (кодовое название "Tahoe"), разработанная Computer Consoles Inc., казалась многообещающей в то время, но вскоре после этого была заброшена ее разработчиками. Тем не менее, порт 4.3BSD-Tahoe (июнь 1988 г.) оказался ценным, поскольку привел к разделению машинно-зависимого и машинно-независимого кода в BSD, что улучшило будущую переносимость системы.
Помимо переносимости, CSRG работала над реализацией стека сетевых протоколов OSI , усовершенствованиями системы виртуальной памяти ядра и (совместно с Ван Якобсоном из LBL ) новыми алгоритмами TCP/IP для адаптации к росту Интернета. [15]
До этого все версии BSD включали в себя проприетарный код AT&T Unix и, следовательно, подпадали под действие лицензии на программное обеспечение AT&T. Лицензии на исходный код стали очень дорогими, и несколько внешних сторон выразили заинтересованность в отдельном выпуске сетевого кода, который был разработан полностью вне AT&T и не подпадал бы под действие требований лицензирования. Это привело к появлению Networking Release 1 ( Net/1 ), который был доступен нелицензиатам кода AT&T и свободно распространялся в соответствии с условиями лицензии BSD . Он был выпущен в июне 1989 года.
4.3BSD-Reno появился в начале 1990 года. Это был промежуточный релиз в ходе ранней разработки 4.4BSD, и его использование считалось «азартной игрой», отсюда и название в честь игорного центра Рино, штат Невада . Этот релиз явно перешел к соответствию POSIX . [15] Среди новых функций были реализация NFS от Университета Гвельфа , клавиша состояния («Ctrl-T») и поддержка серии компьютеров HP 9000 , происходящая из порта «HPBSD» Университета Юты . [16]
В августе 2006 года журнал InformationWeek оценил 4.3BSD как «Величайшее программное обеспечение, когда-либо написанное». [17] Они прокомментировали: «BSD 4.3 представляет собой самую большую теоретическую основу Интернета».
После Net/1 разработчик BSD Кейт Бостик предложил, чтобы больше не-AT&T разделов системы BSD были выпущены под той же лицензией, что и Net/1. С этой целью он начал проект по повторной реализации большинства стандартных утилит Unix без использования кода AT&T. Например, vi , который был основан на оригинальной версии ed для Unix , был переписан как nvi (новый vi). В течение восемнадцати месяцев все утилиты AT&T были заменены, и было установлено, что в ядре осталось только несколько файлов AT&T. Эти файлы были удалены, и результатом стал выпуск в июне 1991 года Networking Release 2 , также известного как Network(ing) 2 или Net/2 , почти полной операционной системы, которая распространялась свободно.
Net/2 стала основой для двух отдельных портов BSD на архитектуру Intel 80386 : свободного 386BSD Уильяма Джолитца и проприетарного BSD/386 (позже переименованного в BSD/OS) Berkeley Software Design (BSDi). Сама 386BSD просуществовала недолго, но стала исходной кодовой базой проектов NetBSD и FreeBSD , которые были начаты вскоре после этого.
BSDi вскоре оказалась в затруднительном положении с дочерней компанией AT&T Unix System Laboratories (USL), тогда владельцами авторских прав System V и торговой марки Unix. Иск USL против BSDi был подан в апреле 1992 года и привел к запрету на распространение Net/2 до тех пор, пока не будет определена обоснованность претензий USL на авторские права на исходный код.
Иск замедлил разработку свободного программного обеспечения потомков BSD почти на два года, пока их правовой статус был под вопросом, и в результате системы на основе ядра Linux , которые не имели такой юридической двусмысленности, получили большую поддержку. Хотя 386BSD не был выпущен до 1992 года, разработка предшествовала разработке Linux. Линус Торвальдс сказал, что если бы 386BSD или ядро GNU были доступны в то время, он, вероятно, не создал бы Linux. [18] [19]
В августе 1992 года была выпущена 4.4BSD-Alpha . В июне 1993 года 4.4BSD-Encumbered была выпущена только для владельцев лицензий USL.
Иск был урегулирован в январе 1994 года, в основном в пользу Беркли. Из 18 000 файлов в дистрибутиве Беркли только три должны были быть удалены, а 70 изменены для отображения уведомлений об авторских правах USL. Еще одним условием урегулирования было то, что USL не будет подавать дальнейших исков против пользователей и дистрибьюторов кода, принадлежащего Беркли, в предстоящем выпуске 4.4BSD. Маршалл Кирк МакКьюсик резюмирует иск и его результат: [20]
Предполагалось копирование кода и кража коммерческой тайны. Фактический код, нарушающий авторские права, не был идентифицирован в течение почти двух лет. Судебный процесс мог бы затянуться гораздо дольше, если бы Novell не купила USL у AT&T и не добивалась урегулирования. В конце концов, три файла были удалены из 18 000, составлявших дистрибутив, а в другие файлы был внесен ряд незначительных изменений. Кроме того, университет согласился добавить авторские права USL примерно к 70 файлам с условием, что эти файлы будут продолжать свободно распространяться.
В марте 1994 года была выпущена версия 4.4BSD-Lite , которая больше не требовала исходной лицензии USL, а также содержала множество других изменений по сравнению с исходной версией 4.4BSD-Encumbered.
Последним релизом из Беркли стал 4.4BSD-Lite Release 2 1995 года , после чего CSRG была распущена, а разработка BSD в Беркли прекратилась. С тех пор поддерживалось несколько вариантов, основанных прямо или косвенно на 4.4BSD-Lite (таких как FreeBSD , NetBSD , OpenBSD и DragonFly BSD ).
Кроме того, разрешительный характер лицензии BSD позволил многим другим операционным системам, как свободным, так и проприетарным, включать код BSD. Например, Microsoft Windows использовала производный от BSD код в своей реализации TCP/IP [21] и объединяет перекомпилированные версии сетевых инструментов командной строки BSD с Windows 2000. [ 22] Также Darwin , система, на которой построена macOS от Apple , является производной от 4.4BSD-Lite2 и FreeBSD. Различные коммерческие операционные системы Unix, такие как Solaris , также содержат различное количество кода BSD.
BSD была основой большого количества операционных систем. Наиболее примечательными среди них сегодня являются, пожалуй, основные BSD с открытым исходным кодом : FreeBSD, NetBSD и OpenBSD, которые все произошли от 386BSD и 4.4BSD -Lite различными путями. И NetBSD, и FreeBSD начали свою жизнь в 1993 году, изначально произошли от 386BSD, но в 1994 году перешли на кодовую базу 4.4BSD-Lite. OpenBSD была ответвлена в 1995 году от NetBSD. Ряд коммерческих операционных систем также частично или полностью основаны на BSD или ее потомках, включая SunOS от Sun и macOS от Apple Inc.
Большинство текущих операционных систем BSD имеют открытый исходный код и доступны для бесплатной загрузки по лицензии BSD , наиболее заметным исключением является macOS . Они также обычно используют монолитную архитектуру ядра , за исключением macOS и DragonFly BSD, которые используют гибридные ядра . Различные проекты BSD с открытым исходным кодом обычно разрабатывают ядро и пользовательские программы и библиотеки вместе, исходный код управляется с помощью единого центрального репозитория исходного кода.
В прошлом BSD также использовалась в качестве основы для нескольких фирменных версий Unix, таких как SunOS от Sun , Dynix от Sequent , NeXTSTEP от NeXT , Ultrix от DEC и OSF/1 AXP (теперь Tru64 UNIX ). Части программного обеспечения NeXT стали основой для macOS , одного из самых коммерчески успешных вариантов BSD на общем рынке.
В число значимых версий Unix и Unix-подобных операционных систем, произошедших от BSD, входят:
Похоже, не было единого официального образа ленты выпуска 4.1BSD.
Поддержка оборудования Sun была временно добавлена в 4.1BSD, а затем удалена перед выпуском 4.2BSD.