Unix на работе. Часть первая:  Качая железо

Открываю серию статей про реальное повседневное использование Linux и *BSD-систем в качестве основной ОС для работы. И начнем мы с общих принципов и выбора подходящего оборудования.

Мотивационная картинка из цитаты Эрика Реймонда, замечательного человека, который тоже немного понимает в компьютерах.

Мотивационная картинка из цитаты Эрика Реймонда, замечательного человека, который тоже немного понимает в компьютерах.

Вот уже более двадцати лет я каждый день использую Linux и BSD‑системы для работы. На реальном оборудовании и рабочих станциях, что несколько отличается от терминала удаленного сервера или виртуальной машины. Как это получилось, про мой долгий путь в мир Unix‑систем красочно и в деталях описано тут, поэтому повторяться не стоит.

Отмечу лишь, что хоть автор и успел поработать системным администратором и сетевым инженером, но все же основным видом деятельности была и остается разработка ПО.

Так что все описанное в статье — в первую очередь про рабочее место разработчика и задачи разработки.

Отвечая на сакральный вопрос «Зачем»

Существует определенный уровень компьютерных компетенций, выше которого «пользовательские» операционные системы становятся неудобны:

при наличии навыков, в текстовом терминале можно сделать кратно больше осмысленных действий за меньшее время, нежели таская мышкой кубики по экрану и кликая по иконкам.

Также существует огромное количество описанных узкоспециализированных практик, скриптов, руководств (да и просто специального ПО) для поиска неисправностей в сети, в работе оборудования и для разработки — которые либо вообще не существуют под «пользовательские» Windows или MacOS,  либо существенно ограничены по своему функционалу.

Классический пример — Wireshark, который долгое время работал только под Linux и *BSD, а его портированная Windows‑версия до сих пор имеет существенные ограничения.

Другими словами:

профессионально отлаживать, тестировать и разрабатывать сетевое ПО лучше из Linux или *BSD системы.

По моему скромному мнению, разумеется.

То что сегодня для разработки хватает даже любительских знаний — вопрос уже для другой статьи, а пока замечу, что поскольку большая часть современной разработки ПО так или иначе касается сетевой работы — выбор Linux/*BSD в качестве основной ОС становится вполне обоснованным для широкого круга разработчиков, а не только для отдельных религиозных фанатов.

Все это помимо сетевых инженеров, системных администраторов и DevOps, для которых навыки работы (как мининимум) с Linux являются обязательными.

UNIX

Так получилось, что практически с самого начала карьеры я использовал в реальной работе и Linux и *BSD и «большие» коммерческие UNIX‑системы вроде Solaris, в том числе на рабочей станции.

С тех лет был накоплен большой обьем практических знаний о эксплуатации UNIX‑систем, который я собрал и систематизировал в серию статей, первая из которых — перед вами.

Хотя описанные принципы являются общими для любой UNIX‑системы, которую вы захотите использовать на рабочей станции, в отдельных местах будут пояснения для конкретных операционных систем, поскольку даже «святая троица» BSD (FreeBSD/OpenBSD/NetBSD) в работе довольно сильно отличаются.

Linux is not Unix

Очень не хочется касаться даже десятиметровой палкой сего древнего спора про «трушность» линукса, поскольку к повседневной работе это никакого отношения не имеет.

Если у вас нет опыта ни с линуксом ни с юниксом — начинать стоит все же с линукса. Если опыт есть — будет и Unix и Linux и Windows в multiboot (упрощая) — из‑за известных «особенностей» ведения бизнеса крупными производителями ПО и текущих реалий в ИТ.

Работать постоянно и исключительно в одной только ОС Linux/*BSD у вас скорее всего не получится (без ухода в религиозный фанатизм) и пусть лишь ради 5% работы, но придется переключаться в Windows или использовать виртуализацию.

b1d7e2d3dc2bec064a286823e1cbabfa.jpeg

Оборудование

Уже нет смысла ориентироваться на стационарные компьютеры — ноутбуки стали очень производительными и с запасом покрывают любые запросы как сетевого инженера так и разработчика ПО, обеспечивая при этом мобильность и занимая существенно меньше места.

Мой последний стационарный рабочий компьютер остался в далеком 2011 м году, с тех пор использую исключительно ноутбуки.

Поэтому о ноутбуках и пойдет речь.

Думаю не открою «великую тайну бытия» сказав, что как Linux так и *BSD‑системы (скромно молчу о Solaris) критически зависят от правильного выбора оборудования.

Есть производители, которые официально и откровенно дружат с юниксами (Lenovo и Dell), есть те кто хотя-бы в курсе что их ноутбуки используют юниксоиды (HP), но к сожалению основной массе производителей оборудования глубоко фиолетово на таких необычных пользователей и их пожелания:

Acer, Asus, Fujitsu, Toshiba, Samsung, MSI — тысячи их.

Дружба = поддерживаемые чипы внутри девайса, к которым есть драйвера и прошивка, как минимум для Linux. Поэтому шанс нарваться на неподдерживаемый чип сильно выше в оборудовании от Asus и Acer чем от Lenovo или Dell.

К сожалению даже на 2024й год это именно шанс, а не абсолютная гарантия:

Если в недавнем прошлом получалось как‑то ориентироваться по наименованиям чипов (вроде AC 9560), то ныне чипов стало слишком много, еще и с разными модификациями.

Поэтому остается лишь уповать на удачу: если производитель не заявляет официально поддержку Linux своими устройствами — 100% гарантий работоспособности ожидать не стоит.

Ниже небольшие примечания по поддержке оборудования конкретными ОС.

FreeBSD

На 2024й год поддержка клиентского оборудования (прежде всего ноутбуков) в FreeBSD — вторая после Linux, поэтому можно с чистой совестью написать:

Если на ноутбуке заработал Linux — заработает и FreeBSD.

Есть досадные исключения, есть проблемные модели — прежде всего редкие, игровые или «профессиональные», но в общем случае все будет работать. Отдельного упоминания стоит поддержка современных WiFi-чипов, для которой существует весьма необычное решение.

NetBSD

У команды NetBSD свой особый взгляд на работоспособность:

As the project’s motto («Of course it runs NetBSD» ) suggests, NetBSD has been ported to a large number of 32- and 64-bit architectures. These range from VAX minicomputers to Pocket PC PDAs. 

К сожалению дальше самого факта запуска, работоспособность NetBSD мало кого волнует, поэтому бывает что порт забрасывается сразу после реализации или используется лишь парой фанатов. Так что для правильного выбора оборудования для самой банальной x86-архитектуры стоит ориентироваться на HCL (где в основном продукция Lenovo) и форумы разработчиков.

У автора в данный момент NetBSD работает на Lenovo T440.

OpenBSD

OpenBSD всегда имела, имеет и будет иметь проблемы с поддержкой оборудования — из‑за фиксации этой системы на безопасности. Поэтому что 20 лет назад что сегодня, что в ближайшем будущем выбор клиентского оборудования под нее стоит производить их тех моделей ноутбуков, которые используют сами разработчики OpenBSD.

Некоторые примеры работающих моделей ноутбуков, взятые из блогов разработчиков.

Solaris

После сворачивания проекта OpenSolaris и общей стагнации его официального коммерческого продолжения Oracle Solaris, фактически единственным вариантом использования этой ОС простыми пользователями остается проект OpenIndiana.

Поддержка пользовательскогоо оборудования очень и очень слабая, поэтому в случае этой ОС ориентироваться точно стоит на официальный HCL и внимательно читать комментарии.

У автора есть опыт более-менее успешной эксплуатации OpenIndiana на ноутбуке Lenovo Z580, но до описания особенностей установки и работы пока не дошли руки.

Проверка оборудования

Существует один отличный способ проверить совместимость до покупки ноутбука:

записать USB-флешку с образом Ubuntu и попросить в магазине с нее загрузиться.

В общем случае вы сможете сразу же оценить возможные проблемы, убедившись что работает WiFi, на экране есть картинка без визуальных артефактов и в основном разрешении, а также отрабатывает suspend/resume (засыпание) без зависаний и перезагрузок.

Три этих фактора являются максимально показательными: если что‑то из этих трех не заработает — про покупку лучше забыть.

Если разумеется у вас нет желания своими силами отлаживать ACPI или заняться исправлением драйверов устройств.

87151614bef9ac16831789b434f51f92.jpeg

Рабочая лошадка

У каждого производителя ноутбуков обязательно есть линейка «для работы» — такие серые рабочие лошадки, без особых изысков. Именно такие машины и являются оптимальными для повседневного использования Linux или *BSD.

Обращайте внимание на количество слотов под память — фактически самый важный критерий при выборе.

Память в большом количестве жизненно необходима для виртуальных машин, запуска контейнеров и сред разработки, которые становятся только прожорливее с каждым годом.

Дальше следует сделать небольшой «тюнинг»:

Необходимо докупить и установить максимально доступное количество памяти (что называется «на всю котлету»), а также обязательно сменить все диски на SSD.

Сейчас такое делают сразу при покупке в крупных интернет‑магазинах, в качестве дополнительной опции: продавец самостоятельно установит для вас дополнительную память и диски внутрь ноутбука, заклеит коробку и отправит вам.

Крутятся диски

Термин «SATA» в случае машины для разработчика стоит забыть и никогда больше не вспоминать, несмотря на разницу в стоимости и объеме.

Никаких SATA‑дисков на такой машине быть не должно совсем, ни вторым ни третим диском — во всех современных ОС и средах разработки обязательно есть полнотекстовый поиск, который для своей работы производит индексацию файлов, что порождает сильную нагрузку на диск. Как только такой индексатор доберется до данных на SATA диске — немедленно начнутся тормоза, зависания и прочие спецэффекты в самых неожиданных местах.

Вообще говоря вся современная разработка — про перемещение большого количества файлов:

за один запуск сборки может быть создано 5000 файлов, которые затем еще будут упакованы в несколько вложенных архивов, с наложением цифровой подписи или контрольных сумм.

Думаю несложно догадаться насколько сильно будет влиять медленный диск на эффективность работы в такой ситуации.

Ультра, альфа и омега

Не рекомендую брать для работы «ультрабуки» — сверхтонкие, сверхлегкие и так далее:

Все ультрабуки сильно ограничены по возможностям расширения, часто память и даже CPU впаяны в материнскую плату без возможности их замены.

А также «игровые»:

запуск игр на линуксе (тем более *BSD) — отдельная номинация специальной олимпиады.

К работе в каком‑либо виде это отношения не имеет, поэтому практический смысл в выборе такого ноутбука теряется.

Половина мощности и примерно треть цены подобного игрового устройства приходятся на дискретную видеокарту, которая при отсутствии игр будет простаивать.

Понимаю, что как минимум часть читателей — приличные молодые люди, серьезные бизнесмены и криптоинвесторы, не ограниченные в кредитном бюджете, но с желанием продемонстрировать свою успешность окружающему миру.

Тем не менее даже в таком (эксклюзивном) случае не советую брать стильную серебристую железку c геймерской клавиатурой за безумные по меркам обывателя деньги.

В первую очередь потому что любые устройства ломаются, даже самые крутые.

bfcbeb28bf3f246d475fd2ea5cd95c45.jpg

Ремонтопригодность

Не стоит забывать, что ноутбук это в первую очередь рабочий инструмент, а не средство самовыражения, поэтому важнее его ремонтопригодность и возможность последующей замены компонентов чем цветовая раскраска и «стильность».

Ниже небольшая статистика по отказам отдельных компонентов, чтобы вы понимали примерный объем последующих затрат:

Компонент

Время жизни (в годах)

Цена (тыс. рублей)

Батарея

2

5

Клавиатура

3

15

БП и кабель питания

2

2

Вентилятор и система охлаждения

4

5

Корпус

4

20

Это означает, что через два года активной эксплуатации придется менять батарею, через три — клавиатуру и так далее.

Как минимум батарея и клавиатура заменялись на всех моих ноутбуках, без исключений.

Статистика собрана по итогам эксплуации ~20 ноутбуков различных моделей за последние 15 лет, цены примерные и усредненные — разумеется точная цена сильно зависит от модели ноутбука и доступности деталей.

Думаю очевидно что заменить большую часть из этого списка своими силами не выйдет — нужны как минимум специальные инструменты (для того чтобы ноутбук разобрать) и хоть какие‑то компетенции в ремонте чтобы получилось собрать обратно.

У автора, для примера, всегда оставались лишние болтики — после каждого такого самостоятельного ремонта.

Соответственно, чем более редкая и дорогая у вас модель нотбука — тем сложнее, дольше и дороже будет ее починить. Кстати стоит рассказать и про сроки ремонта:

рассчитывайте на выпадание ремонтируемого устройства из вашей работы минимум на неделю. Новая клавиатура для редкой модели может только ехать службой доставки пару месяцев, а все это время вам надо как‑то работать.

Что приводит к вполне логичной мысли о необходимости иметь под рукой запасной ноутбук, с полностью настроенным рабочим окружением.

bc07360e540f1fe24cb706f186600ca4.jpeg

Apple Mac для работы

Да это тоже можно сделать:

возможно запустить и линукс и *BSD на оборудовании Apple.

Остается лишь ответить на очевидный вопрос «зачем».И адекватного ответа у меня нет, поскольку оборудование от Apple нормально работает только в сочетании с операционной системой от Apple.

Это как Инь и Янь, Солнце и Луна или «корпускулярно-волновая теория света» — неразрывно связанные вещи.

Поэтому серьезно обсуждать выбор мака в качестве железа для линукса или BSD — с моей точки зрения не стоит.

Есть у вас есть Mac — работайте в MacOS и будет вам счастье, но разумеется на свете есть отдельные энтузиасты, запускающие всякое на оборудовании Apple:

OpenBSD и Apple M2, FreeBSD и Mac Pro, NetBSD и Macbook.

У самого автора нет практического опыта эксплуатации «чужих» ОС на оборудовании Apple, поэтому добавить тут нечего.

5b306ce60b1c8d0219f2db5c578913c8.jpeg

Размеры, диагональ и автономность

За все время удалось попробовать в работе ноутбуки самых разных размеров: от 11' и до 17.3' и могу сказать что самое лучшее для работы — средние 14'.

Не 17-ти дюймовый «гроб», с трудом перемещаемый даже в пределах офиса, но и не 9-ти дюймовое «чудо», в экран которого можно смотреть только одним глазом и прищурившись:

14' ноутбук спокойно влезает в любую сумку или рюкзак, не стесняет при переездах и перелетах.

При этом такого размера экрана вполне достаточно для любых сред разработки, ничего никуда не уедет и не скроется, как с 11' и тем более 9' «крохами».

На любое декларируемое время автономной работы можно спокойно забить:

Реальная разработка — с компиляцией, с тяжелыми средами разработки, с работой в браузере и мессенджерах, а тем более — с запущенной виртуализацией, сжирает за пару часов абсолютно любую батарею.

Для примера, новый и современный (на 2012й год) Fujitsu‑Siemens Lifebook U775, декларировал 12 часов автономной работы, обходя по этому показателю практически все остальные ноутбуки. Но стоило только заняться реальной разработкой и все сразу же скатилось до 5–6 часов.

Поэтому стандартные 8 часов нормальной полноценной разработки возможны только при подключении к розетке и каком-то подобии рабочего места:

стол, стул, WiFi и кофе.

Пересобирать проект на Scala или Kotlin, постоянно косясь одним глазом на индикатор заряда батареи — мягко говоря непродуктивно.

To be continued…

В следующей части расскажу про типичные проблемы пользователей, возникающие при работе с Unix и доступность прикладного ПО: что есть в наличии, чего нет и где брать.

Это обновленная версия моей статьи, оригинал которой доступен в нашем блоге.

0×08 Software

Мы небольшая команда ветеранов ИТ‑индустрии, создаем и дорабатываем самое разнообразное программное обеспечение, наш софт автоматизирует бизнес‑процессы на трех континентах, в самых разных отраслях и условиях.

Оживляем давно умершее,  чиним никогда не работавшее и создаем невозможное — затем рассказываем об этом в своих статьях.

© Habrahabr.ru