Часть 1 - Операционная система
Часть 2 - Преимущества
Часть 3 - Преимущества (+)
Часть 4 - Установка
Часть 5 - Настройка
Часть 6 - Установка дополнительного ПО
Часть 3.- Преимущества (+)
Так... ещё немного о перечислении достоинств...
5. Огромное количество ПО. Бесплатного ПО. На данный момент — это более 37000 пакетов, включая драйверы, прикладные библиотеки, языки программирования (в исходных кодах! для студентов, специалистов и программистов - это просто клондайк!) и прикладное ПО: офисные пакеты, базы данных, графические пакеты, пакеты обработки видео и прочее... Есть всё, что нужно и даже более - вы всегда, при наличии определённых знаний, можете разработать своё :). Более, того любой unix вся его среда обитания пользователя - это одна большая среда для программирования! Компиляторы, интерпретаторы, документация, готовые библиотеки и т.д. Всё, что нужно для изучения программирования, написания программ, на любом практически языке. От вас потребуется только время и желание.
А просто пользователю, просто пользоваться тем, что уже есть, как это обычно и бывает.
6. Полное документирование всей ОС, как ядра, так и ПО, доступность исходных кодов - для профессионала и не только. Это просто рай - любое нужное вам свойство операционной системы документировано и доступно к использованию без ограничений!
7. Как я уже упоминал, FreeBSD ко всему ещё и очень хорошо спроектирована и, как говорят приверженцы unix, она наиболее соответствует пути Unix - unixway. Это два довольно простых правила: "Всё - файл. (даже процессор)" и "Есть один язык, есть одна ОС" (второе - шутка, но язык С). Коллектив, разрабатывающий OS FreeBSD, строится по довольно жёсткой иерархической структуре, как об этом говорит наша (не)любимая WIKI: Существует около 4000 разработчиков, которые работают над системой на добровольной основе. Все они могут читать дерево репозитория, но не могут вносить изменения. Вместо этого разработчик обращается к коммитеру, который имеет право вносить изменение в код. Существует около 400 коммитеров. Разработчик может вырасти по социальной лестнице проекта и стать коммитером. Кандидатуру нового коммитера предлагает к рассмотрению ментор будущего коммитера. В зависимости от основной области деятельности, новый коммитер утверждается основной командой, portmgr@ или docmgr@. Основная команда является административным ядром проекта и состоит из 9 человек, которые выбираются на 2 года коммитерами из своего состава. Основная команда решает конфликты между коммитерами[55].
Участники проекта разрабатывают ветку CURRENT («текущая» версия) и несколько STABLE («стабильная», стабильность означает гарантию неизменности интерфейсов, как-то API, ABI и так далее).
Новый код помещают в ветку CURRENT, где он получает более широкое тестирование. Новые функции, добавленные в CURRENT, могут остаться в системе или от них могут отказаться, если реализация окажется неудачной. Иногда эта версия может оказаться в непригодном для использования состоянии. С началом использования perforce как вспомогательного репозитория, и с выделением projects/ области в svn, проект стремится гарантировать постоянную работоспособность CURRENT.
STABLE-версия содержит только те нововведения, которые прошли проверку в CURRENT. Тем не менее, эта версия тоже предназначена, в основном, для разработчиков. Не рекомендуется обновлять ответственные рабочие серверы до STABLE, предварительно её не протестировав. На основе STABLE регулярно создаются тщательно протестированные разработчиками, группой release-инженеров и более широким кругом пользователей RELEASE-версии.
После выпуска релизов создаются дополнительные ветви разработки для поддержки релизов, но в них вносятся лишь самые необходимые изменения, исправляющие серьёзные ошибки или проблемы с безопасностью системы. До четвёртой версии FreeBSD у стабильной и текущей веток был один и тот же старший номер версии. Затем текущей ветви был присвоен номер 5, а у стабильной остался номер 4.
Какие в настоящее время поддерживаются стабильные ветви можно посмотреть по этой ссылке: https://www.freebsd.org/releases/
Что это даёт: допустим, есть острое желание одного (талантливого) или большой группы людей (талантливых), включить что-то феерически полезное (на первый взгляд) и срочно в код ОС, но вряд ли это найдёт себе место в коде ОС, если этого не пожелает (фактически единогласно) подавляющее большинство ответственных лиц. Вот, если нововведение сочтут полезным, непротиворечивым, реально полезным и пр., то да будет добавлено. Это гарантирует стабильность, устойчивость и предсказуемость поведения ОС, как в новых версиях, так и совместимость со старыми подходами предыдущих версий, если таковые не признаны (большинством!) окончательно устаревшими или по какой-либо причине вредными или утратившими актуальность - их удалят (как недавно был удалён код относящийся к поддержке многих старых сетевых драйверов). С другой стороны - это приводит к затягиванию внедрения каких-то нужных или свежих технологий и решений, но как говорится - надо выбирать: либо железобетонная стабильность либо зоопарк в решении сходных или одних и тех же проблем, как это зачастую бывает в Linux и приводит к нагромождению каких-либо решений, казавшихся на каких-то этапах очень правильными, прогрессивными и за которые удалось сагитировать много разработчиков стороннего софта. Вот как часто бывает в Windows - сделали мега-хитрую технологию (ну например OLE) и давай её всюду применять и даже в ядро ОС. Потом оказывается: выглядит многообещающе, но технология в программировании крайне сложна, работает медленно, документация такова, что не сразу и поймёшь. Код реализации, как правило скрыт, а примеры в SDK (как и само SDK) туманны и обрывочны (как и сама документация). Через пару-тройку лет появляется что-то ещё более новое, а старое бросают - оставляют в лучшем случае, как есть и начинают работать по-новому - придумывая что-то новое (COM+ например, и всё заново думают как же это всё пропихнуть в массы). А старое уже имеет определённое хождение, много людей даже заплатили деньги за различные платные библиотеки, курсы, начали это всё использовать в своих продуктах и осуществляют поддержку - то есть просто так уже не выбросишь, но и смысла большого это держать нет. Windows довольно много имеет чего-то подобного. Просто посмотрите на размер свежеустановленной Windows: собственно, каталог Windows (и некоторого количества других каталогов, которые тоже так или иначе являются частью ОС) - его размер стал таким большим в том числе и по этой причине.
Необходимость поддерживать старые, зачастую плохо проработанные и устаревшие технологии присуща всем ОС, но не в таких же удручающих количествах (в прямом смысле слова: в гигабайтах)!
8. Приверженцы Linux с этим пунктом согласятся вряд ли, но я утверждаю, что конфигурирование FreeBSD устроено проще, логичнее и понятнее. Сама ОС организована классически для любого unix. Файловая система имеет строгую древовидную, классическую для unix, иерархию. Чётко разделена на системную, прикладную, пользовательскую. Так всё, что относится к системе и фактически не изменяется до момента обновления самой ОС - это "/" с соответствующим набором директорий. Прикладное ПО не являющееся частью ОС, но необходимое для работы и многие системные утилиты и так же, как правило неизменяемое до момента обновления системы, устанавливается в "/usr". Программы, устанавливаемые пользователем - а также любой прикладной софт, устанавливается в "/usr/local". Таких же правил придерживаются и для расположения конфигурационных файлов: для OC "/etc", несистемные и пользовательское ПО "/usr/local/etc".
В Linux же это всё обычно лежит в "/usr" и даже при условии использования одних и тех же продуктов - например, apache - одного из самых распространённых на планете ПО для организации веб-серверов - в Linux зачастую от версии к версии, от поставщика к поставщику, имеет довольно сильный разброс по компоновке в зависимости от принятых подходов к безопасности и сохранности данных, расположению конфигурационных файлов, взаимодействия компонентов (и т.п.) и может оказаться весьма замысловатым, даже в пределах одного дистрибутива и может сильно отличаться в разных дистрибутивах. В FreeBSD, к счастью системных администраторов и просто пользователей, придерживаются правила: если можно сделать просто - сделай просто. Если можно обойтись без нагромождения сущностей для решения какой-то задачи - не громозди и вообще не делай, если нет понимания, как решить задачу. Не предлагай решений, если нет полного понимания задачи или того, что тебя не понимают те, кто с тобой взаимодействует по этой задаче. К сожалению, опять же в Linux такое часто случается... иначе не было бы там разговоров типа: "Linux прост и понятен... был... пока там не порезвились Леннарт с Поттерингом" и такое "первым делом при пост-настройке Linux надо: снести пульсу, системд и вернуть инит". Как это было с pulseaudio и systemd - хоть Леннарт Поттеринг это и один человек, но его так было "много" в проекте Linux в разных местах, что многие думали, что его человек 10 :). Очень активный был товарищ, но вроде остепенился (кстати, сейчас работает в Микрософт)... и свой pulsesound и systemd довёл до нормального состояния и сейчас во многих вариантах Linux они являются стандартными и для звука и для инициализации системы (при этом не до конца решив проблемы старые и породил новые), шуму поэтому поводу было много... Вроде выводы были сделаны и вроде такое больше не повторяется... хотя думаю до времени. Ну да ладно - это не наша (FreeBSD) проблема. Своих хватает...
9. Хоть это и не патриотично по отношению к FreeBSD... но в FreeBSD имеется интересная подсистема. Называется она: линуксатор и, которая позволяет запускать приложения Linux без перекомпиляции. По-сути: запускать в родном для этих программ режиме - и это даже не эмулятор, а именно подсистема, позволяющая приложениям Linux чувствовать себя "как дома" посредством подмены FreeBSD-окружения на Linux-подобное на уровне системы, позволяя ядру FreeBSD и ПО Linux, осуществлять взаимные системные вызовы и осуществлять перетрансляцию соответствующих команд ПО, как это делает реальная Linux. Это позволяет использовать многое ПО не адаптированное для FreeBSD, но успешно работающее в Linux. И даже, говорят, написанный для Linux Oracle SQL Server, запущенный в FreeBSD, показывает большую производительность... говорят - лично не проверял. Кстати, в линукс проекте Debian есть интересный вариант сборки, где делается ещё больший, но обратный фокус: интеграция ядра FreeBSD в Linux-окружение. Ядро Linux полностью заменено на модифицированное, для осуществления взаимодействия с Linux-библиотеками и Linux-окружением, ядро FreeBSD. Зачем? Честно говоря, с первого взгляда непонятно, но видимо это попытка сделать некую систему с ядром FreeBSD - то есть использовать другое ядро, отличное от Linux, но использовать ПО и библиотеки предназначенные для Linux. Лично для меня, мотивация такого симбиоза является загадкой, но оно есть и работает... Хорошо ли вопрос другой, но факт такой есть :). Так же, что-то подобное есть и для другого проекта Linux - Gentoo, тоже неясно зачем, но тоже имеет место быть.
11. Репозитории. FreeBSD имеют один единый репозиторий. Есть его точные копии или зеркала (mirrors) - они все имеют одинаковое содержимое, любой имеющийся в FreeBSD софт будет на них присутствовать. В отличие от (и снова здарова) Linux, где Linux-дистрибутив имеет не только свой(свои) репозиторий (репозитории), есть репозитории, который вообще не относится ни к одному дистрибутиву и часто могут содержать софт для разных дистрибутивов. Есть (ещё одна проблема Linux) - несовместимость репозиториев - они имеют разные форматы в разных дистрибутивах! Основные это rpm, deb, yum, dnf - по типу первоначальной основы дистрибутива. (Red Hat, Debian, CentOS и т.д.) - "дух свободы" скажут некоторые... ага... Наверное такое кому-то нравится. Не возражаю. И даже не буду спорить. Но... равзые это удобно?
FreeBSD все официальные зеркала репозитория FreeBSD и неофициальные репозитории являются копиями официального и являются, как правило, идентичными.
Пожалуй 12-ю пунктами по достоинствам можно и ограничиться...
У FreeBSD есть, конечно и недостатки. И тоже не на один пункт. Один из них: недружелюбность к новичкам и начинающим - один наверное из самых неприятных, но он вполне преодолим... Главное немного терпения и интереса. И FreeBSD будет работать, работать и работать, даже, когда вы спите... Расскажу вам небольшую историю из моей практики. В конце 90-х, наверное в 1998 году, меня попросили в одной фирме организовать локальную сеть и для "бухгалтерской работы" файловое хранилище и, как водится, "сделать базу данных и электронный документооборот". "Железо" на тот момент у них было вполне приличное, софт куплен (ну как куплен... в наличии он был). Сейчас уже не помню точно, но по "железу" имелось что-то двухпроцессорное и даже памяти в ОЗУ было 1Гб (по 512Мб на CPU - это по тем временам, очень много) и дисковый массив примерно ~300Гб HDD в массив RAID10 - 8-ми дисков 73Gb легендарных Cheetah(!) 10к SCSI - по тем же временам - это просто так же очень много. Всё было настроено и файловым сервером и сервером базы данных стал FreeBSD 3.0. Всё было сделано аккуратно: система резервирования на ленточном хранилище, источник бесперебойного питания - присутствовали. Ну так и работало. Периодически приходил туда, что-то чинил, подкручивал. Потом, где-то в году 2003 звать перестали и я даже забыл о этой фирме. В 2008 году меня снова позвали. Они совершали переезд в новое здание и нужно было всё аккуратно выключить и прочее - и тут странное: они попросили найти этот сервер! Надо сказать, что здание, уже несколько раз было перепланировалось и перестраивалось, что я уже и забыл "где и как и что". Серверная была, но, где она располагалась не помню. Местные админы менялись и легенда видимо не дошла. А вот этот сервер так и остался (а специфика 90-х это та ещё тема, когда надо было базы данных прятать и от "органов" и от ... эээ ... конкурентов с паяльниками :)) в другом "секретном помещении" (лучше конечно вообще в параллельной вселенной, но это сложно...). Работал при этом он абсолютно исправно. Удалённо зайти было можно и всё было нормально. Ошибок мало, не критичные. Кроме полного незнания, где он физически, никаких других проблем. Время работы (uptime) его было 3164 дня (я эту цифру зафиксировал в блокнотике)! Это 8+ лет непрерывной работы! Умели же делать "железо"! Ну и был правильный ИБП! Рекламировать производителей не буду. И не в последнюю очередь FreeBSD! Сервер по "проводочкам" был обнаружен... в шкафу, в кладовке уборщиц, которая когда-то была серверной. Шкаф был завален какими-то старыми папками, бумагами, и прочим хламом... Шкаф был с хорошей вентиляцией - местный админ знал дело - всё было в принципе и к ядерной войне готово. Собственно, и фирма, и серверная фирмы, и эта комната, были частично, как раз в самом этом бывшем ядерном бункере, построенном на случай этой самой ядерной войны - ну арендовали и приспособили, делов-то. Зато и с ветиляцией и прочей окружающей средой нет проблем - задраил броне-двери и конкуренты со своими паяльниками хоть волком вой, хоть динамитом - двери-то на ядерный взрыв рассчитаны :). Вот как-то так, но FreeBSD (версии 3) на сервере проработала не выключаясь и без сбоев в системе более 8-ми лет! "Железо" тоже не подвело (правда, из рейда умер один диск). Сколько потом работал этот сервер, а его на новом месте точно включили - я ещё потом удалённо на нём работал года полтора периодически, не знаю... Связь утерялась. Слышно и о фирмочке и о сервере не стало и по старому адресу он уже не отвечает. Так, что более 8 лет непрерывной работы сервера FreeBSD я видел собственными глазами.
Так, что FreeBSD - это надёжно. Проверено лично.
Но добавлю, что стремиться к рекордам uptime не стоит. Обновлять ОС нужно. Всё, конечно, зависит от конкретной ситуации, но время от времени необходимо обновлять, как систему, так и ПО. FreeBSD редко требует полной перезагрузки, но при обновлениях ядра и модулей ОС без этого не обойтись.
Системы виртуализации
Виртуализация - это возможность в рамках операционной системы создать имитацию реального компьютера или среды исполнения, в которые можно установить, отличную от реального компьютера, другую операционную систему и даже операционную систему откомпилированную с отличной от оригинального (говорят хост-системы) системой команд - например, на хост-системе с CPU х86: установить ОС для процессора с набором команд MIPS или ARM. Как когда-то делала Apple в эпоху, когда у них основным процессором был PowerPC (RISС процессор с полностью отличным от Intel х86 набором команд): Apple использовала ПО виртуализации для запуска программ из мира Windows в режиме полной эмуляции процессора х86 и набора типичного PC. Зачем? У них банально не хватало софта для пользователей и они нашли такой выход - запускать программы Windows в режиме эмуляции РС. Такие виртуальные системы позволяют запустить и FreeBSD, имея виртуальную машину в Windows и наоборот. Это удобно для многих случаев. Особенно для нашего: можно, установить систему виртуализации и изучить нашу FreeBSD, не удаляя установленную у вас, к примеру, Windows.
Виртуальные машины вообще очень удобны для различных экспериментов с ОС будь-то для пользователя Linux или Windows. Многое будет удобно делать, особенно с целью "посмотреть и изучить", устанавливая ОС или ПО именно на виртуальные машины. А уже потом, когда всё стало ясно и понятно - ставить для работы на реальные "железные" машины. Системы виртуализации так же используются и для создания вполне себе рабочих сред - например, так поступают web-host-провайдеры, тестировщики ПО, разработчики ПО - виртуальные системы позволяют, как с имитировать нужное окружение, так и изолировать реальные системы от сбоев систем в виртуальных средах при каких либо критических событиях - вирусных или целенаправленных хакерских атак. При каких-то критических событиях или ошибках ПО при взаимодействие с ОС или с другим ПО: виртуальная система будет разрушена, а хост-система, как работала так и будет работать, если конечно, ПО виртуализации написано корректно и оно само не разрушит хост-систему :).
Системы виртуализации довольно разнообразны, но наиболее простые в использовании, на мой взгляд, две: Vmware и VirtualBox. Системы довольно просты в использовании и в принципе дают примерно одинаковые возможности в работе. VirtualBox и Vmware, существуют и для мира unix и для Windows и, что приятно - бесплатны. Vmware, правда, в варианте WorkStation Player. Vmware в полном варианте - только платная, бесплатный, же вариант, хоть и урезанный по возможностям вариант, не сильно проигрывает платному и имеет достаточный функционал для проверки, тренировки и работы, но только для личного и не коммерческого использования. Надо сказать, что в самой системе FreeBSD, имеется встроенная доморощенная система виртуализации bhyve, которая так же позволяет запускать либо ещё одну копию FreeBSD или любую ОС Linux или Windows. Это тоже рассмотрим. И вот тут чтобы начать рассмотрение "как и что" в FreeBSD надо принять решение какой дистрибутив взять для изучения. Я предлагаю начать с самого непростого в освоении и не буду оригинальным, если скажу, что мы всё будем рассматривать на основе... той самой оригинальной FreeBSD, скачав её с сайта http://freebsd.org
Кстати, вот ещё раз напомню ссылку о генеалогии семейства unix.