ОС BSD: 23 роки на службі Мережі

У книзі історії BSD набагато більше сторінок, ніж в історії Linux. Беручи початок у далеких сімдесятих, BSD пережила епоху UNIX-мейнфреймів і розквіту найрізноманітніших UNIX-систем. Вона і до цього дня доводить свою вічність і затребуваність в особі сучасного покоління вільних, в дусі opensource-часу, дистрибутивів. Цієї осені виходить новий реліз FreeBSD 5.3, перший в стабільній гілці 5 і знаменує перехід на новий якісний рівень. Не за горами реліз NetBSD 2.0, що має приблизно таке ж значення. І те й інше – безумовно, справжня подія для всіх bsd "шників. Ця стаття – посвята легендарної операційній системі.


Професор з Берклі


Йшов 1973 рік. Час початку розквіту глем-року, в'єтнамської війни і операційної системи UNIX. Тієї самої, початкової, від AT & T (Bell Labs), яка встигла з моменту першого релізу 1971 року (UNIX Time Sharing System First Edition, або просто UNIX System V1) дорости до четвертої версії, випущеної в листопаді. І в листопаді ж, на симпозіумі «Принципи проектування операційних систем» в університеті Пурдью (Purdue) автори UNIX Кен Томпсон і Денніс Рітчі виступили зі свом першою доповіддю на тему нової ОС. На цьому симпозіумі був присутній професор Боб Фабрі з Каліфорнійського університету Берклі, якого настільки вразила краса операційки, що він відразу ж замовив копію дистрибутиву на магнітній стрічці для свого університету. Про комерційний застосуванні UNIX тоді не було й мови, AT & T вільно роздавала вихідні тексти своєї системи для вивчення в освітніх установах.


Для установки і вивчення UNIX спільними зусиллями факультетів комп'ютерних наук, математики і статистики університет Берклі придбав новий комп'ютер PDP-11/45 від DEC. І в січні 1974 року аспірант Кейт Стендіфорд вже вставляв свежеполученний стрічку з UNIX System V4 в зчитує привід терміналу. Як правило, в університетах, які отримали копію UNIX, установку системи виконував сам Кен Томпсон. Але в Берклі вирішили обійтися силами своїх студентів. Через якийсь час допомогу Кена все-таки знадобилася – система періодично аварійно валилася. Замість того, щоб відправитися в Берклі, Томпсон подзвонив Стендіфорду і вказав того з'єднати модем з телефоном, щоб мати можливість віддалено налагоджувати систему. З'ясувалося, що проблема була в драйвері дискового контролера – PDP-11/45 виявилася першою в практиці Томпсона машиною, яка мала два диски на одному контролері, на що драйвер не був розрахований. Так почалася співпраця Bell Labs і Каліфорнійського університету щодо вдосконалення UNIX.


Пізніше в університеті з'явився ще один комп'ютер під управлінням UNIX. Машини в Берклі, як і в інших вузах того часу, працювали суворо за розкладом – комусь був потрібен UNIX, комусь – RSTS, власна операційка від DEC, що ставилася тоді на все PDP. З 8 ранку до 4 вечора на комп'ютері працював UNIX, а потім до півночі – RSTS. Це дуже не влаштовувало професорів Юджина Вонга і Майкла Стоунбрейкера, яких настільки захопили можливості нової ОС, що вони захотіли швидше перенести на неї розробляється ними велику базу даних INGRES. Машинного часу постійно не вистачало, і навесні 1975 року в Берклі з'явився ще один DEC-11/40 під управлінням вийшла до того моменту UNIX System V5. До осені INGRESS під UNIX розійшлася в кількості декількох сотень екземплярів, в результаті чого Берклі отримав репутацію університету, в якому народжуються дійсно великі проекти.


Інтерес студентів до UNIX був воістину величезним, і восени 1975 р. Фарби зі Стоунбрейкера вирішили придбати нову модель PDP-11/70, яка була набагато могутніше попередніх. У цей же час Кен Томпсон, випускник Каліфорнійського університету, вирішив ненадовго відвідати свою альма-матер і захопив з собою саму останню на той момент версію UNIX – System V6, яку встановили на нову PDP-11/70.


Народження BSD


Отже, до 1976 році в Берклі було вже кілька машин під управлінням UNIX. Але про серйозну її доопрацюванні ніхто не думав, поки системою не зацікавилися два студенти, тільки що закінчили навчання, – Білл Джой і Чак Хейлі. Спочатку вони проводили дні і ночі за PDP-11/70, працюючи над компілятором та мовою Pascal, в результаті зробивши його кращим середовищем для навчання студентів програмуванню. Потім, після заміни текстових телетайпів на екранні термінали, Джой виявив, що текстовий редактор ed, що використовувався тоді, їх уже не влаштовує. І він приступив до роботи над своїм редактором, який назвав ex.


У 1976 році, після від'їзду Кена Томпсона Джой і Хейлі стали самостійно колупатися в нутрощах ядра UNIX. Результатом цього стали невеликі зміни в коді і кілька виправлень. Ці два хлопці стали першими Кернел-хакерами з Берклі.


У 1977 році Білл Джой, усвідомивши, що одними виправленнями не обійтися, почав робити свій дистрибутив. Так 9 березня 1978 з'явився «Berkeley Software Distribution» – перший реліз операційної системи Берклі. Він включав в себе горезвісну Pascal-систему з усіма вихідними текстами і редактор ex. Протягом наступного року за різними вузам розійшлося 30 копій нової ОС. Потім на PDP Берклі знов відновили пристрої введення, поставивши новенькі термінали ADM-3a, і Джой вирішив написати текстовий редактор, який використовував би всю візуальну потужність нових моніторів. Так народився великий і жахливий vi (visual editor). Крім того, Джой вирішив проблему сумісності виведення на терміналах різного типу, написавши не менш знамениту бібліотеку termcap. Все це увійшло в другій реліз ОС, «Second Berkeley Software Distribution», що вийшов 10 травня 1979. Пізніше ім'я скоротили до лаконічного 2BSD. Фінальна версія другого релізу, 2.11BSD, з поліпшеннями і доповненнями, зробленими в результаті обширного тестування системи в декількох університетах, була встановлена на сотні PDP-11 машин по всьому світу. По суті, відбулося перше серйозне клонування класичного UNIX. Дуже вдале клонування.


У 1978 році шестнадцатібітних PDP вже не задовольняли багатьох хакерів, їм на зміну прийшли VAX – нові потужні машини від DEC, що працюють під ОС VMS. Зрозуміло, в Bell Labs портіровалі свою, вже сьому версію UNIX на нові машини, проте їхня система не використала всіх переваг віртуальної пам'яті VAX. До вирішення цієї проблеми залучили Кернел-хакерів з Берклі на чолі з Біллом Джоєм. Джой був вражений можливостями нового заліза – ця система залишала PDP-11 далеко за бортом. Так він почав портувати 2BSD на VAX.


Поки його колеги Пітер Кесслер і Кірк Маккусік портували Паскаль, Джой переписав ex і vi, свою нову командну оболонку C shell і інші утиліти. У підсумку, в 1979 році Берклі випустила закінчену збірку 2BSD під VAX.


Одночасно з цією подією Bell Labs вирішила поставити UNIX на комерційні рейки і заснувала підрозділ з підготовки і випуску стабільних релізів. UNIX перестав бути дослідницьким проектом, представляючи тепер комерційний продукт AT & T. Роль центру розробки UNIX, що раніше належала Bell Labs, тепер перейшла до Берклі.


До 1979 року американська агенція передових оборонних розробок DARPA (Defence Advanced Research Projects Agency) зіткнулося з проблемою старіння багатьох комп'ютерів, складових її знамениту мережу ARPANET. У разі заміни знадобилося б перенести все програмне забезпечення на нові машини. Давалася взнаки різношерстість мережі – різні машини, різні операційні системи. Було ясно, що для подальшого масштабування і розвитку мережі необхідна стандартизація. Так як вибір єдиної апаратної платформи для побудови мережі представлявся важкореалізованих, стандартизацію вирішили провести на рівні ОС. Зрозуміло, в якості єдиної операційної системи був вибраний UNIX, який, здавалося, можна перенести на саме неймовірне залізо.


Восени 1979 року професор Фарби почув про інтерес DARPA до UNIX і запропонував послуги свого університету. Що вийшов в грудні того ж року реліз 3BSD підтвердив, що нова система як не можна краще підходила потреб військових, і в квітні 1980-го Берклі отримала півторарічний контракт DARPA. Під контрактні роботи була створена організація Computer System Research Group (CSRG) – відділення університету, куди входили студенти і професори, зайняті роботою над BSD. Результат не змусив себе чекати – в жовтні того ж року виходить 4.0BSD з поштовою системою, планувальником завдань і багатьма іншими поліпшеннями. DARPA залишилася задоволена результатом і продовжила контакт, збільшивши інвестиції майже в п'ять разів.


Наступний реліз BSD повинен був, за логікою, називатися 5BSD. Проте в AT & T визнали, що користувачі можуть сплутати 5BSD c їх поточним комерційним релізом, System V (5). З цієї причини Берклі вирішила ввести додаткову нумерацію релізів. Так, наступними були 4.1BSD і 4.2BSD.


Продовжений контракт з DARPA передбачав створення нової швидкої файлової системи (Fast File System), щоб ефективно використовувати можливості нових жорстких дисків, підтримку процесів з многогігабайтним адресним простором, створення механізму гнучкого між процесами взаємодії, а також єдиного інтегрованого стека мережевих протоколів для спілкування машин в ARPANET.


Джой зайнявся межпроцессное взаємодією (що згодом отримало назву UNIX sockets), реалізацію файлової системи взяв на себе Маккусік, а Роб Гурвіц реалізував TCP / IP, яку потім включили до ядро BSD. Тоді ж були написані мережеві утиліти для взаємодії через мережу: rcp, rsh, rlogin, rwho. Вийшла настільки гарна система, що розробники вирішили випускати її не тільки для DARPA.


Слідом за проміжними релізами 4.1a і 4.1b була випущена 4.2BSD. Популярність нового релізу виявилася приголомшуючою – за півтора року він розійшовся тиражем понад тисячу копій! Зі своєю новою файловою системою FFS і інтегрованою підтримкою мережі ОС з Берклі залишила UNIX System V далеко позаду. І хоча потім багато можливостей 4.2BSD були портіровани на System V, BSD довго залишалася лідером на ринку UNIX-систем.


Навесні 1982 року Джой, напевно, вважав, що основне вже зроблено, тому пішов у Sun Microsystems. Тим не менш, в системі ще багато що належало налагодити, про що свідчили тести продуктивності і багрепорти. Це нормальне явище, коли ОС стає популярною. Маккусік співтовариші залишилися в CSRG, займаючись очищенням багів і підготовкою нового релізу. 4.3BSD була випущена через довгі 4 роки в червні 1986. Багато користувачів за цей час повернулися до UNIX System V, встигла придбати підтримаю мережі і багато інших можливостей, що з'явилися в 4.2BSD. Так що новий реліз осі Берклі дозволив поправити її похитнулися позиції.


В кінці восьмидесятих ера VAX підходила до кінця. Передбачаючи це, Джой ще під час підготовки релізу 4.1 займався розподілом коду ядра на машинно-залежні та незалежні частини, щоб надалі їх було простіше адаптувати під нові процесори. Змінити VAX повинна була архітектура Power 6 / 32 від «Computer Consoles, Inc.", І в Берклі навіть випустили 4.3BSD під кодовою назвою «Tahoe», закінчивши роботу Джоя з розділення коду. Проте популярності нова платформа не здобула і незабаром померла. Як би там не було, саме вона стала каталізатором завершення робіт зі створення цієї портовану системи. Це згодом зіграло свою роль, коли BSD портували на безліч апаратних платформ.


Мережа, BSD-ліцензія і Великий Суд


Кінець вісімдесятих років – це розквіт всіляких юніксових ОС і мережевих технологій. До цього часу вже стало ясно, що без мережі далі нікуди, тому основна увага приділялася мережевим компонентів. Вгадай з трьох разів, у кого в ті роки була краща реалізація стека протоколів TCP / IP? Ось чому співтовариство було так зацікавлений у вільному використанні вихідних кодів операційки Берклі. CSRG, слідуючи традиціям дослідного духу, завжди випускав свою систему разом з исходниками, але, на жаль, не міг надавати право іншим організаціям використовувати їх для застосування у своїх продуктах. Цього не дозволяла ліцензія, по якій AT & T поширювала исходники свого UNIX. А BSD, хоч і була самостійною системою, грунтувалася на коді від Bell Labs. Так що будь-який користувач BSD був зобов'язаний купити ліцензію на UNIX у AT & T. Але стек TCP / IP для BSD був цілком розроблений в Берклі, тому влітку 1989 року приймається рішення випустити так званий «Networking Release 1», або 4.3BSD Net / 1 – по суті, шматок операційної системи, що містить код мережевого стека протоколів і супутніх утиліт. Код випустили під новою ліцензією, яку так і назвали – BSD License. Відповідно до неї будь-хто міг вільно завантажити вихідні тексти і використовувати їх у своїх цілях, у тому числі комерційних, без будь-яких відрахувань Берклі, лише тільки зберігши копірайти в тексті файлів і вказавши в документації до свого продукту, що він заснований на коді з Берклі.


Вчинок хлопців з Берклі викликав виключно позитивну реакцію. Кілька великих компаній виклали вихідні коди на свої ftp-сервера для вільного доступу, в університет, крім подяк, надійшло безліч пожертвувань грошових коштів на подальший розвиток ОС.


І незабаром Берклі випустив вже другу версію своєї мережевої релізу. У ньому з'явилися кардинальні зміни в підсистемі віртуальної пам'яті (код взятий з проекту Mach університету Карнегі-Мелона) і нова мережева файлова система (NFS). В обох випадках використовувалися готові напрацювання дружніх університетів, що показало вигоду і цінність BSD-ліцензії – замість того щоб писати щось з нуля, можна використовувати те, що написали інші, у відповідь надаючи їм свої напрацювання. Таким чином не було потреби винаходити велосипед, і час витрачався на нові розробки.


Новий реліз BSD повинен був мати порядковий номер 4.4, проте в Берклі вирішили спочатку протестувати зміни, випустивши на початку 1990 року реліз 4.3BSD-Reno.


Незабаром після цього один з розробників BSD Кейт Бостік згадав про вдалий досвід з мережевим релізом і зазначив, що непогано б випустити й іншу частину системи під BSD-ліцензією. Однак для цього треба було б переписати величезна кількість утиліт з бібліотек, що прийшли в BSD з AT & T UNIX. Ведучі на той момент розробники Кірк Маккусік і Майк Карельс скептично сприйняли ідею – аж надто великий був обсяг роботи. Але Бостік не здавався. Він зважився на експеримент, який в якійсь мірі потім був повторений Лінус Торвальдс і став основою розвитку систем з відкритими кодами. Бостік закликав BSD-хакерів з усієї мережі переписати UNIX-утиліт, керуючись лише інструкціями того, що ті повинні робити. 18 місяців практично всі утиліти і бібліотеки були переписані. У Берклі тепер була дійсно своя система. Залишалося переписати ядро, яке до того часу вже значною мірою було своїм. І Маккусік, Карельс, Бостік, закинувши всі справи, взялися рядок за рядком вивчати файли ядра, що залишилися з часів AT & T UNIX. У підсумку залишилося всього шість файлів, які, на думку розробників, так просто переписати б не вдалося. Їх вирішили залишити на місці і в червні 1991 року Берклі випустила «Networking Release 2 »(4.3BSD Net / 2). Тепер практично вся система (крім шести файлів ядра) була абсолютно доступна всім бажаючим під найбільш дружньою у світі BSD-ліцензією. Це і визначило майбутнє вічне життя BSD.


У дев'яностих роках IBM PC остаточно захопила нішу недорогих комп'ютерів. Через півроку після другого мережевого релізу, Білл Джоліц почав портіровать Net / 2 на архітектуру i386, переписавши відсутні 6 файлів. Він назвав свою роботу 386/BSD і розповсюдив її по мережі. Витівка виявилася вдалою, і незабаром групи користувачів 386/BSD зайнялися написанням патчів і удосконаленням системи. Так стартували сучасні проекти NetBSD та FreeBSD.


Сам Джоліц разом з деякими членами CSRG пішов просувати BSD у комерцію, заснувавши компанію BSDI (Berkeley Software Design, Inc.). Благо, код, випущений під BSD-ліцензією, дозволяв продавати дистрибутив без вихідних кодів. BSDI активно рекламувала свою нову систему BSD / OS як UNIX, і всім зацікавленим пропонувалося телефонувати 1-800-ITS-UNIX. Однак компанію AT & T обурив такий крок, і вона в особі Unix System Laboratories (USL), підрозділи з продажу та розробці UNIX, зажадала негайно припинити рекламувати продукт BSDI як UNIX і прибрати номер телефону. Умови були виконані, і BSDI навіть змінила рекламу свого продукту, пояснюючи, що це не UNIX. Однак USL цього було мало, і вона подала до суду на BSDI, звинувативши компанію в продажу коду, що належить Bell Labs. У відповідь BSDI надала докази, що її система – це не що інше, як копія продукту, вільно поширюваного університетом Берклі плюс шість додаткових файлів, написаних програмістами компанії. За код Берклі BSDI, ясна річ, відповідальності не несла, так що перемога в суді була за нею.


USL не вгамовувалася і подала до суду на Каліфорнійський університет в особі CSRG. Після місяців довгих розбирань було вирішено безпосередньо звірити код операційних систем, щоб знайти в BSD шматки коду USL. У результаті з Net / 2 були видалені 3 файли, що залишилися з часів UNIX System V5, і ще в 70 файлів були додані копірайти USL. Все інше на той час уже було переписано хакерами з CSRG в рамках підготовки Net / 2. Вільна система зберегла свободу!


За підсумками судових розглядів остаточна версія релізу BSD вийшла під назвою 4.4BSD-Lite влітку 1994 року, під тією ж ліцензією, що і Net / 2. Важливим рішенням суду був той факт, що USL не мала права судити будь-яку організацію, що використовує 4.4BSD-Lite в якості бази для своєї ОС. Тому всі розробники, вже випускали свої релізи на основі Net / 2 (а до того часу вже існували NetBSD і FreeBSD, що базувалися на 386/BSD), були змушені перейти на нові вихідні тексти. Що вони і зробили за найкоротший час.


4.4BSD-Lite2. BSD is dead, Long Live BSD!


2 червня 1995 вийшла 4.4BSD-Lite Release 2 з невеликими поліпшеннями і доповненнями. Після цього останнього релізу група CSRG університету Берклі оголосила про свою відставку. За 20 років BSD з клона UNIX перетворилася на самостійну ОС, подарувавши світові надійну файлову систему, еталонну реалізацію стека TCP / IP, систему друку LPD і, що найголовніше, свободу. Після розпуску CSRG BSD не думала вмирати. FreeBSD до того часу стала лідируючою unix-like ОС на intel-машинах, NetBSD портували на безліч платформ, BSD / OS пропонувала відмінні комерційні рішення. Берклі виконали свою місію, пустивши UNIX у вільне плавання по мережевому океану, і плавання це буде тривати вічно.


Відмінності BSD та Linux


Якщо ти прочитав статтю, ти, напевно, сам зможеш відповісти на це питання. BSD – це ціла операційна система з 30-річною історією, тоді як Linux – всього лише ядро, саме по собі до вживання не придатне. Тому, кажучи про дистрибутиви Linux, коректніше називати їх GNU / Linux – операційна система GNU з ядром Linux. GNU – це фонд програмного забезпечення, який з'явився у 80-ті роки з метою створити вільний UNIX, поширюваний під GPL-ліцензією. Батько GNU і GPL – Річард Столлман.


Якщо говорити про технічну сторону справи, то в BSD, на відміну від класичної UNIX System, немає поняття рівня запуску (runlevels), а є тільки два режими – однокористувацький (single user) і розрахований на багато (Multi user). Відповідно, є різниця в розташуванні керуючих скриптів і в поведінці деяких утиліт. Нарешті, BSD має історично сформовану ієрархію файлової системи, набору сервісів і скриптів, тоді як в Linux все згадане скаче від дистрибутива до дистрибутива, як розробники побажають.


Нікси


За аналогією з неофіційним терміном «* nix», що позначає всі UNIX-системи, існує термін «xBSD», який вживається у випадку, якщо мова йде не про конкретний проект, а про сімействі дистрибутивів в цілому.


BSD-ліцензія


BSD-ліцензія, напевно, сама ліберальна за всю історію. Її вимоги можна сформулювати у трьох пунктах:


– Не затверджуй, що ти написав це. Зберігай наші копірайти у вихідних текстах. Якщо поширюєш свій продукт тільки в бінарному вигляді – вказуй в супровідній документації, що він використовує код з Берклі.


– Не використовуй наше ім'я для просування свого продукту. Те, що ти зробив, засноване на коді BSD, але не має права називатися BSD. Наша марка не може використовуватись в рекламних цілях.


– Не пред'являй претензії, якщо щось не запрацює. Немає ніяких гарантій, код надається AS IS, на свій страх і ризик.


BSD Daemon


Всі знають, що символ BSD – симпатичний демон. З'явився він у 1988 році з легкої руки Кірка Маккусіка, що придумав талісман для 4.3BSD. Зрозуміло, той, первісний демон виглядав не зовсім так, як сучасний, символізує FreeBSD. Ознайомитися з його історією в картинках можна за адресою www.mckusick.com / beastie / index.html. Еві Немет у своїй класичній хрестоматії «Unix System Administration Handbook »так пояснює походження цього талісмана:« Багато людей лякаються і думають, що демон у даному випадку – це щось сатанинське. Однак це не demon, а daemon, в грецькій міфології означає приблизно те ж, що нинішній ангел-охоронець, добрий дух ». Як же звуть цього Красуньку? Маккусік стверджує, що у демона немає імені, і це є предметом його особливої гордості, але якщо ти хочеш, можеш називати його Beastie.

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*