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

З виходом нової "довгограючою" версії всіх відгалужень ОС Ubuntu (14.04 LTS, "довго підтримувана") відбулися деякі вельми цікаві зміни, малопомітні спостерігачеві "з вулиці". Косметичні зміни (яким я приділю увагу), істотне і дуже відчутне навіть візуально оновлення ядра ОС - все це без сумніву приємно і важливо (як індикатор живучості та хорошої керованості проекту), але воно не найголовніше в долі Ubuntu. Час як би зовсім не підходящий для оголошення "революційними" змін якихось кнопок інтерфейсу (або іншого само собою зрозуміле з області userspace). Головне, що сталося з Ubuntu (і з Xubuntu, само собою) - повноцінна інтеграція проектом стрімко набирає популярність Docker - універсальної як швейцарський ножик підсистеми підтримки "контейнерного" поширення, експлуатації та розробки програмного забезпечення. Втім, на все свій час.

Відразу врятую потенційного читача від спроб будь-яких паралелей між популярної зараз темою "з відходом Windows XP пора переходити на Linux" і цим циклом записів у блозі (де неодмінно буде і продовження тематики Java 8, я нічого не забув, але я живий і мені потрібен час щоб дізнатися щось до того рівня, коли я можу знаним ділитися, і це стає все важче). На мою думку (і хто мене читає давно, той знає, що це не голослівне твердження) "перехід на * nix-подібну ОС" ніяк не пов'язаний і не може бути пов'язаний з долею систем зі світу Windows. Занадто це різні світи, щоб кидатися з одного в інший тільки тому, що якась мертвонароджена гілка в одному з них нарешті де-факто припинила свої муки (і користувачів). Я не закликаю кудись переходити і робити як я. Боронь боже. Просто розповідаю, що роблю, як, і, по можливості, намагаюся пояснити - навіщо і чому саме так (останнє, здається, куди цінніше усього іншого).

Інсталяції Xubuntu я навіть не буду торкатися - вона давно нітрохи не складніше аналогів зі світу комерційного ПЗ (а в чомусь навіть і логічніше). Підтримку апаратних засобів мені важко оцінити - я використовую Xubuntu на машинах далеко не першої свіжості, з ними немає ніяких проблем (в порівнянні з попередньою версією сякі-такі дрібниці покращилися, наприклад, система стала "розуміти" розширені можливості тачпадів Synaptics після інсталяції "з коробки ", далі вибачусь за цей термін). Забігаючи вперед, можу обгрунтовано і підтверджених про якість підтримки апаратних засобів (і в цілому про якість дистрибутива системи) повідомити тільки дещо непряме. При цьому постараюся бути не голослівним. Одна з моїх цільових платформ для Xubuntu - старенький нетбук Samsung NB-30 (ну полюбив я цей добротний "танчик" світу нетбуків і не збираюся від нього відмовлятися, він же робить все, що мені потрібно). Ось що про нього повідомляє утиліта inxi :

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

Від Windows 7 і наступних нічого подібного (на цьому "залозі", звичайно) з таким же миттєвим перемиканням між віртуальними екранами і загальної працездатністю під навантаженням GUI-додатків домогтися неможливо, я перевіряв багато разів і досить наполегливо (до слова, саме тому ставлюся до анонсованого "чуду" безкоштовного розповсюдження Windows для пристроїв з малою діагоналлю екранів як до іміджевого непорозуміння - або виробники почнуть робити 7-8 дюймові Windows-планшети c 8 гігабайтів RAM, або все починання піде в нікуди, тому що Window s Дуже Любить Оперативну Пам'ять, і це факт).

Загалом, це працює і мене задовольняє. Але за це я чимось плачу. Вельми серйозно. Правда, оплата "в свою користь". Сказати, що щось суттєво втрачаю, важко - при малій діагоналі екрану і убогих параметрах "заліза", - фактично нічого не втрачаю, тому що в реальності великі програмні пакети, "стовпи" робочих станцій, на цьому нещастя і так працювати не можуть за визначенням. Все сказане ні в якому разі не означає, що * 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". Час нині такий, що дуже корисно займати себе чимось цікавим і реально корисним.

Відкланюється.


Ви можете підписатися на наш Telegram-канал для отримання найбільш цікавої інформації

Ну яка "коробка" в 2014 році, вибачте?
Чому і навіщо JDK?
Навіщо?