`

СПЕЦИАЛЬНЫЕ
ПАРТНЕРЫ
ПРОЕКТА

Архив номеров

Как изменилось финансирование ИТ-направления в вашей организации?

Best CIO

Определение наиболее профессиональных ИТ-управленцев, лидеров и экспертов в своих отраслях

Человек года

Кто внес наибольший вклад в развитие украинского ИТ-рынка.

Продукт года

Награды «Продукт года» еженедельника «Компьютерное обозрение» за наиболее выдающиеся ИТ-товары

 

Андрей Зубинский

Xubuntu 14.04 + старый нетбук + планшет + Docker = рабочая лошадка

+1010
голосов

С выходом новой “долгоиграющей” версии всех ответвлений ОС Ubuntu (14.04 LTS, “долго поддерживаемая”) произошли некоторые весьма интересные изменения, малозаметные наблюдателю “с улицы”. Косметические перемены (которым я уделю внимание), существенное и очень ощутимое даже визуально обновление ядра ОС - всё это без сомнения приятно и важно (как индикатор живучести и хорошей управляемости проекта), но оно не самое главное в судьбе Ubuntu. Время как бы совсем не подходящее для объявления “революционными” изменений каких-то кнопок интерфейса (или прочего само собой разумеющегося из области userspace). Главное, что случилось с Ubuntu (и с Xubuntu, само собой) - полноценная интеграция проектом стремительно набирающей популярность Docker - универсальной как швейцарский ножик подсистемы поддержки “контейнерного” распространения, эксплуатации и разработки ПО. Впрочем, всему своё время.

Сразу избавлю потенциального читателя от попыток любых параллелей между популярной сейчас темой “с уходом Windows XP пора переходить на Linux” и этим циклом записей в блоге (где непременно будет и продолжение тематики Java 8, я ничего не забыл, но я живой и мне нужно время чтобы узнать что-то до той степени, когда я могу знаемым делиться, и это становится всё труднее). По моему мнению (и кто меня читает давно, тот знает, что это не голословное утверждение) “переход на *nix-подобную ОС” никак не связан и не может быть связан с судьбой систем из мира Windows. Слишком это разные миры, чтобы бросаться из одного в другой только потому, что какая-то мертворождённая ветка в одном из них наконец де-факто прекратила свои мучения (и пользователей). Я не призываю куда-то переходить и делать как я. Упаси бог. Просто рассказываю, что делаю, как, и, по возможности, пытаюсь объяснить - зачем и почему именно так (последнее, кажется, куда ценнее всего прочего).

Инсталляции Xubuntu я даже не буду касаться - она давно ничуть не сложнее аналогов из мира коммерческого ПО (а в чём-то даже и логичнее). Поддержку аппаратных средств мне трудно оценить - я использую Xubuntu на машинах далеко не первой свежести, с ними нет никаких проблем (по сравнению с предыдущей версией кой-какие мелочи улучшились, например, система стала “понимать” расширенные возможности тачпадов Synaptics после инсталляции “из коробки”, дальше извинюсь за этот термин). Забегая вперёд, могу обоснованно и подтверждённо о качестве поддержки аппаратных средств (и в целом о качестве дистрибутива системы) сообщить только кое-что косвенное. При этом постараюсь быть не голословным. Одна из моих целевых платформ для Xubuntu - старенький нетбук Samsung NB-30 (ну полюбил я этот добротный “танчик” мира нетбуков и не собираюсь от него отказываться, он же делает всё, что мне нужно). Вот что о нём сообщает утилита inxi:

Xubuntu 14.04 + старый нетбук + планшет + Docker = рабочая лошадка

Как видно из снимка экрана, компьютерчик по меркам 2014 года смешнее смартфона среднего класса. При этом - 64-битовость ОС и приложений, четыре виртуальных экрана, куча запущенных приложений (включая монстра NetBeans 8), и самое удивительное - в Xubuntu 14.04 всё это работает на такой смешной машинке реально быстро. Или даже лучше - нереально быстро. Не буду выдумывать, и просто покажу экраны этой самой смешной машинки во время написания текста (виртуальных экранов - 4, дань привычке):

Xubuntu 14.04 + старый нетбук + планшет + Docker = рабочая лошадка

Xubuntu 14.04 + старый нетбук + планшет + Docker = рабочая лошадка

Xubuntu 14.04 + старый нетбук + планшет + Docker = рабочая лошадка

Xubuntu 14.04 + старый нетбук + планшет + Docker = рабочая лошадка

От Windows 7 и последующих ничего подобного (на этом “железе”, конечно) с таким же мгновенным переключением между виртуальными экранами и общей работоспособностью под нагрузкой GUI-приложений добиться невозможно, я проверял многократно и довольно настойчиво (к слову, именно поэтому отношусь к анонсированному “чуду” бесплатного распространения Windows для устройств с малой диагональю экранов как к имиджевому недоразумению - или производители начнут делать 7-8 дюймовые Windows-планшеты c 8 гигабайтов RAM, или всё начинание уйдёт в никуда, потому что Windows Очень Любит Оперативную Память, и это факт).

В общем, это работает и меня удовлетворяет. Но за это я чем-то плачу. Весьма серьёзно. Правда, оплата “в свою пользу”. Сказать, что что-то существенно теряю, трудно - при малой диагонали экрана и убогих параметрах “железа”, - фактически ничего не теряю, потому что в реальности большие программные пакеты, “столпы” рабочих станций, на этом несчастье и так работать не могут по определению. Всё сказанное ни в коем случае не означает, что *nix системы целесообразны исключительно на “позавчерашнем железе”, я этого не говорил, не пытайтесь даже обвинить. Они целесообразны на “старье”, да. Но ничуть не больше, ничуть не меньше. Впрочем, это будет понятно далее.

Штатная “из имиджа” (ну какая “коробка” в 2014 году, извините?) система даёт какой-то там минимальный набор прикладных программ (честно скажу - я их разглядываю разве что ради удаления), разумно достаточный для весьма пожилого пользователя компьютера. И это хорошо. Дистрибутивы, напичканные “всем”, неизбежно будут подвергаться суровому обстрелу критиков. Точно так же, как пиратские “сборки” Windows, которые видели многие - в них есть что угодно, и всегда не то, что реально нужно именно вам именно когда нужно. Это несоответствие между потребностями и предложением открытого гигантского рынка, и разрешить его могут пытаться разве что наследники советского генплана, определяя кому, сколько и какого цвета носков нужно на год.

Главное в Xubuntu, что несущественно изменяется от версии к версии, - “среда десктопа” Xfce. Не буду пытаться утверждать, что она - совершенство, но. Она делает тот минимум, который должна делать (именно что минимум, например, из неё, пользуясь только её GUI, выяснить на что именно ссылаются иконки, можно не совсем очевидными способами), но делает его неплохо. Большего не требуется в 95% случаев (если серьёзно, то в оставшихся 5% уже вообще ничего не помогает).

Мне совершенно неинтересен, например, текстовый редактор AbiWord. Не потому что он плох. Он мне просто неинтересен. И я не настолько умалишённый, чтобы вынуждать себя писать тексты (не программ) в том же Vim. Мне нужен FocusWriter. Я привык к нему. И особенно привык к звукам печатной машинки, которые этот distraction free текстовый редактор потенциально умеет издавать. Потому что звук печатной машинки очень успокаивает и концентрирует (не знаю почему так, но я точно не один такой странный). FocusWriter - обязательная в моём списке программа. С инсталляции её и начинаются противные мелочи. Мне об этих мелочах трудно писать со 100%-й точностью (которая требует пошаговой проверки действий, а, следовательно, переустановки всего с “нуля”), но сразу и уверенно могу сказать - если мы соотечественники, и вы честно указали при установке системы какой-то город нашей родной Украины (что в терминах системы прозаично означает установку локали), подсистема управления пакетами ПО вашей копии ОС окажется настроенной на наше украинское зеркало пакетов проекта Ubuntu. И это не совсем хорошо. Не буду судить, почему так получается, что это не совсем хорошо, но рекомендую любым доступным способом (я предпочитаю модификацией файла /etc/apt/sources.list, можно с помощью GUI) перенастроить систему на зеркала из стран "первого мира". Потеря во времени загрузки пакетов будет минимальной, и существенной нагрузки на эти зеркала наша “армия” пользователей не создаст. Но доступ ко всем “свежим” пакетам у вас будет, а это главное.

Что же касается FocusWriter, его абсолютно обычная (в терминах механизмов системы) инсталляция (если она есть в репозитории пакетов) требует разве что минимального дополнительного поиска словаря проверки правописания для Open- или LibreOffice (файл с расширением .oxt для нужного языка) и подключения его с помощью GUI-настроек программы. Но настоящий эстет FocusWriter непременно захочет звуков печатной машинки, которые в любой Ubuntu-системе редактор издавать не может без инсталляции пугающей изобилием библиотеки SDL (нужный пакет для установки вроде минималистичен - libsdl-mixer1.2-dev, - но он “тянет” за собой всё, что может “утянуть”). После этой “добавки” FocusWriter работает так, как должен, ленивые могут поискать в интернете “focuswriter themes” и добавить готовые шаблоны оформления (zip-упакованные файлы .theme), я именно такой ленивый и предпочитаю пользоваться готовым, благо, его в достатке. 

Вторая важная для меня подсистема любой рабочей машины - JDK (Java Development Kit). И непременно “оригинальный” JDK, теперь от Oracle (когда-то это была Sun, лицензионные пуристы пусть даже не пытаются что-то писать в ответ, мне всё равно, мне нужна хорошая работа, а не чистота лицензий). Если вам не нужна Java - просто пропустите это необязательное. Есть два (точнее - три, третий - отдельно) способа инсталляции Oracle JDK в Ubuntu. Мне больше нравится “ручной” способ, потому что он концентрирует всё большое файловое дерево JDK под одним каталогом (по правилу умолчанию, которое нет  смысла нарушать - под /usr/local/java). Автоматизированный способ “размазывает” то же самое дерево JDK по и без того “размазанной” файловой системе Linux и вводит зависимость вашей инсталляции от третьих лиц, правда, весьма ответственно относящихся к своим “обязанностям”. Почему и зачем JDK? Потому что на Java написано море эталонных бесплатных программ, с годами не утрачивающих ценности, потому что Java - очень хороший (пусть и многословный) язык программирования, потому что JDK - основа для неисчислимого количества прекрасных готовых библиотек. Зачем? Кажется, я уже ответил на это в ответе на “почему”. Об инсталляции JDK детально будет позже.
К перечисленному фундаментальному я для себя отношу среды разработки на языках Go и Python. Причины примерно те же, что и для JDK. И, конечно, простой и удобный Bittorent Sync, давно заменивший мне в быту флеш-накопители.
Собственно, это весь мой базовый набор дополнительного ПО, прочее нужное повседневное или есть в дистрибутиве Xubuntu (браузер, файловый менеджер, вьювер pdf-файлов), или легко находится среди неисчислимых web-сервисов.

Теперь буквально совсем немного об обновившемся штатном в Xubuntu 14.04 (снимков экрана приводить не буду, они неинформативны). В списке существенных обновлений - появление нового пользовательского меню (аналог той самой кнопки “старт”) Whiskermenu. По сравнению с предыдущим аналогом, меню стало очень быстрым, доступ к системным настройкам вынесен в общее (независимое от просматриваемой подкатегории) поле.
К обновлённому штатному меню добавлен и новый интерактивный его редактор MenuLibre, легковесный (независимый от больших пользовательских окружений вроде Gnome), более чем употребимый и понятный. Несущественные обновления - наконец страшненький скринсейвер ушёл в прошлое (из-за этого были незначительные проблемы, но они уже устранены и у меня лично не проявляются), появился диалог редактирования профиля пользователя (для некоторых приложений), добавились новые “обои” и темы интерфейса.
Всё это в целом очень добротно “пригнано” и “вылизано”. Настолько, что никаких изменений в установленной системе делать не хочется, да и нет смысла.

Ну а теперь начнётся самое интересное. Раз уж Docker стал “естественным обитателем” Ubuntu, это неспроста и очень полезно.

Docker - по сути разработанная на языке Go надстройка над многоуровневым стеком механизмов ядра Linux по управлению возможностями групп процессов (process groups). Где-то глубоко, на самом нижнем уровне ядра ОС находится созданный специалистами Google механизм cgroups. Это сама по себе очень серьёзная разработка, прошедшая многолетнюю “обкатку” (разработка была начата в 2006 году). Cgroups вводит настраиваемые ограничения для иерархических групп процессов, что позволяет, например, ограничить доступ этих процессов к ресурсам ОС. Для управления cgroups предусмотрена и виртуальная файловая система, и утилиты, и системный демон. Забавно, что оригинальная статья, фактически анонсирующая проект cgroups, в названии уже содержала слово “контейнер”, которое будет использоваться в дальнейшем практически постоянно. Cgroups также косвенно связана с управлением “пространством имён” (namespace), любопытным для справки привожу только ключевые элементы этого механизма - системный вызов clone() и одноимённую “облатку” к нему в С-библиотеке glibc (clone() как бы аналог знаменитой функции fork(), но позволяющий дочернему процессу разделять часть контекста с родительским), а также утилиту unshare (позволяющую фактически высокоуровнево “отсоединять” фрагменты этого разделяемого контекста). Выше, над cgroups и управлением пространством имён, в иерархии стека Docker находится LXC (LinuX Containers) - интегрирующий механизм, объединяющий эти две возможности в цельное понятие “контейнера” - изолированного окружения приложений. Это не полноценная виртуализация, она не требует виртуальной машины и использует что реальное “железо”, что одно и то же ядро ОС, и даже при необходимости одни и те же библиотеки (это зависит от конфигурирования). Достоинства такого подхода очевидны - во-первых, и самое главное, - он легковесный. Для его реализации требуется несоизмеримо меньше любых системных ресурсов по сравнению с полноценной виртуализацией. К изолированным процессам, названным контейнерами, разработчики Docker добавили возможности файловой системы Aufs, высокоуровневые механизмы когерентного управления всем технологическим стеком и веб-сервис. Aufs, несмотря на страшное название (“слоистая файловая система”, layered filesystem), позволяет делать вполне очевидные и полезные вещи - группировать каталоги реальной файловой системы в отдельную развитую виртуальную с динамическим управлением, собственными правами доступа, логическими модификациями файлов и т.д. Синергетический эффект от объединения контейнеров и Aufs оказался именно тем, чего ждал мир Linux - легковесные изолированные процессы-контейнеры в комплекте с виртуальной гибкой файловой системой, позволяющей разделять отдельные каталоги между несколькими файловыми системами с собственными настройками в каждой, - серьёзный ответ на множество вопросов, объединяемых ёмким словом “software deployment”.

Как бы забегая вперёд поясню “на пальцах” - на уровне файловой системы Docker позволяет ”упрятать” то, что традиционно “размазывается” по файловой системе, в отдельные иерархии подкаталога /var/lib/docker (речь идёт о системах семейства Ubuntu). Процессам-контейнерам эти иерархии будут "видеться" полноценными каталогами в нормальной файловой иерархии ОС Linux, при этом хранения “всего” не требуется, только необходимого "персонально" процессу-контейнеру. Это означает и компактность, и возможность создания контейнеров для одного и того же процесса, например, но с разными версиями библиотек, и т.д. В общем, это означает мечту deployment-инженера, а также любого программиста или грамотного пользователя, любящего порядок. Контейнеры (пока не будем наводить порядок с довольно запутанной терминологией Docker) можно экспортировать в архивы, хранить и обмениваться ими локально или глобально, с помощью web-сервисов, в том числе и сервиса самого Docker.

Это была затянутая преамбула. Дальше мы "слепим" вручную (чтобы понять принципы) из комбинации Docker и Xubuntu контейнерный персональный "облачный" сервер для планшетов и прочего, и даже отдельный десктоп для удалённого доступа. А также вспомним обещанное "про Java 8". Время сейчас такое, что очень полезно занимать себя чем-то интересным и реально полезным.

Откланиваюсь.

+1010
голосов

Напечатать Отправить другу

Читайте также

Буквально сегодня проверял - в 12.04 LTS еще не видно в менеджере апдейтов предложения обновиться. Вы просто "с нуля" поставили дистрибутив Trusty Tahr? Вопрос не праздный, поскольку у того же TI до сих пор есть нужные SDK привязанные еще к 10.04LTS :-( Приходиться сначала ставить ее, потом SDK, править скрипты проверяющие версию, а потом апгрейдиться до ближайшей старшей LTS.

Спасибо за inxi. Удобная штука. Кому нужно на CentOS: лежит в репозитории EPEL.

Я понимаю, что времени прошло уже много, но третью статью из цыкла "Микроконтроллеры и embedded вообще" ждать уже нет сил)

Если бы люди разрабатывающие Linux имели практический опыт работы с коммерческими версиями Unix им бы не пришлось изобретать с нуля практически все что уже существует годами. Тот же Docker это жалкая реимплементация функционала Solaris Containers выпущенных в далеком 2005 году.

 
 
IDC
Реклама

  •  Home  •  Рынок  •  ИТ-директор  •  CloudComputing  •  Hard  •  Soft  •  Сети  •  Безопасность  •  Наука  •  IoT