Новости
Олексій Федорчук aka Alv
Останній нарис присвячується апофеозу знайомства з дистрибутивом Mint і його Cinnamon - збірці індивідуалізованої системи на його основі. Як сказав чи то один з прем'єр-міністрів Великобританії, то чи якийсь президент Франції (кому тільки цей вислів не приписували?):
Той, хто в (інформаційної) юності не мріяв зібрати свій дистрибутив Linux'а, не має серця. Той, хто продовжує мріяти про це в (інформаційної) зрілості - не має розуму.
Однак стосовно Linux Mint цілком можливо поєднувати сердечність і розумність навіть в похилому віці, бо зібрати свою индивидуализированную систему на базі цього дистрибутива і просто, і корисно.
Свій Mint: введення
Під час першого знайомства з з Mint у мене склалося враження, що в його інсталяції настільки мало зайвих програм, що не варто було й морочитися з їх видаленням. Однак при подальшому розгляді виявилося, що зайвих (для мене) додатків цілком достатньо - наприклад, вся мультимедіа. З іншого боку, ряд звичних для мене програм (наприклад, ті ж мультімедіний) доводилося доустанавливать. І виникла ідея виготовити свій установчий диск цього дистрибутива. На якому не було б нічого зайвого (повторюю, для мене). І, навпаки, були б всі програми, які мені так чи інакше довелося доустанавливать.
У мережі можна знайти згадки про кількох інструментах для виготовлення власного дистрибутива на базі Ubuntu і її похідних (а Mint, як відомо, належить до їх числа):
- oem-config-remaster - утиліта командного рядка, що дозволяє зробити снапшот встановленої системи;
- remastersys - утиліта для резервного копіювання встановленої системи і створення на її базі Live-носія; саме таким чином збирається, наприклад, дистрибутив Matuntu - вітчизняний варіант Ubuntu з MATE в якості робочого середовища;
- Ubuntu Builder- програма з графічним інтерфейсом, що дозволяє скомпонувати свій дистрибутив попакетно.
Однак перші дві здалися мені важкувато і надлишковими для моїх цілей, а остання, схоже, припинила свій розвиток - версії її для Ubuntu Trusty, на якій ґрунтуються поточні релізи Mint, в PPA-репозиторії не виявилося.
І в підсумку я зупинився на програмі Ubuntu Customization Kit (далі - UCK): гугленіе показало, що це приблизно те, що мені потрібно, бо спеціально призначається для корекції складу пакетів в першу чергу.
UCK: огляд
Програма UCK у вигляді однойменного пакета мається на офіційному репозиторії, і тому може бути встановлена будь-яким із стандартних способів. Після цього в секції Адміністрування головного меню Cinnamon з'являється пункт, який, як не дивно, називається Ubuntu Customization Kit, через який цю програму і можна запустити. Але перш ніж дивитися, що вона після цього робить, спробуємо уявити, що у неї внутрі.
Всякий, кому доводилося займатися модифікацією існуючого інсталяційного образу будь-якого дистрибутива, уявляє собі основні етапи цього процесу:
- монтування образу як loop-пристрої;
- розгортання її файлової системи - нині всі дистрибутиви використовують який-небудь механізм компресії, зокрема в убунтоідах це SquashFS;
- монтування в loop-систему як пов'язаних (bind) таких службових, але абсолютно необхідних каталогів материнської системи, як / dev, / sys і, про всяк випадок, / proc;
- виконання операції chroot в loop-каталог, що стає таким чином кореневих;
- виконання в chroot-оточенні необхідних дій по видаленню непотрібних пакетів та встановлення необхідних;
- вихід з chroot-оточення і зворотна запаковування loop-каталогу;
- Демонтується loop-пристрої і створення з нього завантажувального iso-образу за допомогою isolinux.
Інтуїтивно зрозуміло, що UCK не робить нічого іншого, крім перерахованого - він просто автоматизує описаний процес, роблячи його етапи майже непомітними для применителей.
Основні виконувані файли пакета uck (а їх 16 штук) зібрані, ясна річ, в каталозі / usr / bin і мають префікс uck- *. Всі вони є самими звичайними шелл-скриптами, причому за їхніми іменами легко здогадатися про призначення кожного. «Головним», тобто запускає весь процес скриптом є / usr / bin / uck-gui - саме він викликається через пункт меню Адміністрування -> Ubuntu Customization Kit:
А через редактор меню можна подивитися на його властивості:
За скриншоту можна здогадатися про присутність в рядку запуску опції --wait-before-exit, що відповідає за очікування натискання Enter перед виходом з програми після успішного завершення її роботи.
До речі кажучи, при неуспішному завершення, тобто виникненні помилки по будь-якої причини (наприклад, нестачі місця на цільовому пристрої), нічого не відбувається, окрім зупинки роботи. Ніяких повернень назад не передбачено, залишається тільки закривати головне термінальне вікно програми (про який далі) і починати все спочатку. Так що, з огляду на тривалість розпакування SquashFS і необхідність видалення утворилися в процесі файлів (а їх - багато десятків тисяч, що на файлової системи, наприклад, XFS затягується дуже надовго), краще діяти акуратно і по можливості не помилятися.
Команда uck-gui запускається від імені звичайного користувача - пароль для доступу до адміністративних привілеїв запитується тільки тоді, коли вони насправді потрібні. Крім зазначеної --wait-before-exit, вона має ще як мінімум дві опції. Перша, -m, що забезпечує кешування модифікованих частин образу, працює, як сказано в man (1) uck-gui, не завжди, і тому в стандартній ситуації не використовується.
Друга опція також штатно не задіяна, але вона може виявитися важливою для применителей. Це опція remaster-dir, що визначає робочий каталог для UCK, відмінний від умолчальне ~ / tmp. Через редактор меню Cinnamon я перевизначив цей каталог як ~ / data / my-mint, тому підсумкова команда для запуску UCK через меню набула такого вигляду:
uck-gui --wait-before-exit / home / data / my-mint
Крім запуску процесу, сценарій uck-gui відповідає, в тому числі, і за вибір типу десктопа - unity, gnome, kde, або others. Однак спроби вносити тут будь-які зміни (наприклад, поповнення списку доступних десктопів) ніякого результату за собою не спричинять. Тобто додані десктопи з'являться в меню їх вибору, але нічого не зміниться.
Тому що насправді крім виконуваних скриптів в каталозі / usr / bin, основним компонентом UCK є також каталог / usr / lib / uck /. А в ньому, крім усього іншого - файл / usr / lib / uck / customization-profiles / localized_cd / customize, що представляє собою виконуваний шелл-сценарій, який відповідає в тому числі і за виклик термінальної програми. Запам'ятаємо його - в деяких випадках він підлягає ручному редагування.
Втім, все сказане простіше продемонструвати на прикладі конкретної збірки свого варіанту дистрибутива, ніж ми зараз і займемося.
UCK: процес
Відразу після запуску UCK перед нами з'являється порожнє термінальне вікно і на тлі його - запрошення програми:
У ньому вказані системні вимоги, не являють собою нічого надприродного: 5 ГБ вільного простору в каталозі ~ / tmp (або його аналогу, певному вище) і доступ в Інтернет. Так що можна сміливо натискати OK і приступати до кастомізації, яка починається
з вибору локалі - спочатку для інсталятора:
Потім - для Live-носія:
І нарешті - для і инсталлированной системи:
Список всіх доступних міститься в файлі / usr / lib / uck / langlist. Причому, при бажанні мати русифіковану систему, можна обмежитися відміткою боксиков ru у всіх трьох випадках. Втім, в Live-середовищі локаль все одно залишиться en_US (про що програма чесно попереджає). Однак мова інсталлтора буде російським. А у встановленій системі локаль за замовчуванням визначиться як треба:
~ $ Locale LANG = ru_RU.UTF-8 ...
І до неї автоматично додадуться такі:
~ $ Locale -a C C.UTF-8 en_AG en_AG.utf8 en_AU.utf8 en_BW.utf8 en_CA.utf8 en_DK.utf8 en_GB.utf8 en_HK.utf8 en_IE.utf8 en_IN en_IN.utf8 en_NG en_NG.utf8 en_NZ.utf8 en_PH.utf8 en_SG.utf8 en_US.utf8 en_ZA.utf8 en_ZM en_ZM.utf8 en_ZW.utf8 POSIX ru_RU.utf8 ru_UA.utf8
Правда в Mint, на відміну від Ubuntu, жодна з численних англійських локалей НЕ буде спливати в самий невідповідний момент.
Наступний крок кастомізації - вибір робочого середовища:
Насправді він визначає не середу, а термінальну програму, в якій буде жити chroot-оточення. При виборі перших трьох варіантів її буде відповідний штатний термінал (Konsole, GNOME Terminal або Xfce Terminal), в разі варіанту четвертого будуть просто перебрані вони ж плюс LXTerminal з LXDE. Відповідно, запуститься той, що знайдеться першим, так що вибір пункту other підійде в переважній більшості випадків, незалежно від десктопа, використовуваного на потрошімом Live-носії.
На самий крайняк передбачений запуск XTerm, який, здавалося б, є в будь-якому дистрибутиві. Але ось в Mint'е ні в жодній офіційній редакції його якраз немає. Тому при складанні системи з десктопом MATE потрібно редагування того самого файлу / usr / lib / uck / customization-profiles / localized_cd / customize, який я раніше пропонував запам'ятати. Тобто в його секцію function run_console () слід вписати такі рядки:
if [ "$ CONSOLE_APP» = «»]; then CONSOLE_APP = `which mate-terminal` CONSOLE_APP_OPTIONS = (- t« UCK customization console »-e / bin / bash)
Я про всяк випадок дописав в нього також визначення для термінальних програм Sakura і Terminator, які часом використовую.
if [ "$ CONSOLE_APP» = «»]; then CONSOLE_APP = `which terminator` CONSOLE_APP_OPTIONS = (- t« UCK customization console »-e / bin / bash) fi if [" $ CONSOLE_APP »=« »]; then CONSOLE_APP = `which sakura` CONSOLE_APP_OPTIONS = (- t« UCK customization console »-e / bin / bash) fi
Теоретично тут можна перевизначити і командну оболонку (наприклад, / bin / zsh), але я цим заморочуватися не став.
Тепер потребовуется вибрати образ диска, який буде підданий патранню - через звичайне вікно відкриття файлу. Після чого майбутньому образу пропонується дати ім'я:
Втім, ім'я це, наскільки я зрозумів, в подальшому ніде не використовується, так що особливо напружувати свою фантазію не потрібно.
Далі йде серія питань - про бажання кастомизировать майбутній образ мануально:
Про видалення Windows-related файлів, типу autorun.inf (яких, втім, на установчому носії Mint і так немає):
Про створення гібридного способу - тобто придатного для запису як на OD, так і на USB:
На всі ці питання я, зі зрозумілих причин, відповідав позитивно, інакше і говорд городити б не коштувало.
Далі повідомляється, що вся необхідна інформація зібрана, по введенні пароля можна приступати до складання диска, який буде поміщений в path2 / remaster-new-files під ім'ям livecd.iso (питається, навіщо придумувати йому осмислене ім'я?):
А для початку процесу в вихідному термінальному вікні треба ввести пароль для доступу до адмнистративно привілеїв:
Слідом за цим відбувається монтування вихідного образу, його розгортання і декомпресії SquashFS, яка займає чимало часу:
Коли ж вона закінчиться, каталог, певний як remaster-dir, буде виглядати так:
ls [remaster-dir] build.log customization-scripts / remaster-apt-cache / remaster-new-files / remaster-root / remaster-root / home
Очевидно, що build.log містить протоколювання ходу процесу, а в каталозі customization-scripts / зібрані скрипти кастомізації, згенеровані за допомогою сценаріїв з / usr / lib / uck /. В каталозі remaster-apt-cache / буде поміщений локальний кеш встановлюваних пакетів, а самі вони в підкаталозі remaster-apt-cache / archives - аналогу / var / cache / apt / archives встановленої системи. Таким чином, викачані пакети не засмічують ні корінь розгорнутої з Live-образу системи (він розташований в каталозі remaster-root /), ні, тим більше, каталог для збирання вже безпосередньо нового образу - remaster-new-files /. В останньому після успішного завершення всього підприємства цей самий образ, під ім'ям livecd.iso, і виявиться. Ну а remaster-root / home, ясна річ, є домашнім каталогом адміністратора (аналог / root звичайної файлової ієрархії).
Далі пропонується вибрати »замовне» дію - Run console application або Continue building:
Вибір першого Пукто очевидний. Він тягне за собою виконання тієї самої команди chroot, про яку я говорив раніше, і запуск того самого терміналу, який був неявним чином визначений на стадії так званого вибору десктопа:
Звертаю увагу - командна оболонка в терміналі - Bash, запущена від імені адміністратора. Тобто в подальшому для установки / видалення пакетів та інших подібних заходів команда игвщ не знадобиться.
Якщо попередні стадії завершилися успішно, то починається найважливіше: власне патрання вихідного образу. Тут потрібно акуратність і послідовність, порушення якої тягне помилки, які, як я вже говорив, вкрай небажані. Так що в следуещем мініочерке процедура патрання буде розглянута докладно. А поки завершу опис основного процесу.
По завершенні патрання знову виникає панель з пропозицією вибрати «замовне» дію - і тепер є такою ж очевидною вибір другого з них:
Після чого начнается виконання сценаріїв кастомізації, плавно переходить в компресію системи у вигляді SquashFS - це буде найдовшим справою у всьому процесі:
Однак все коли-небудь закінчується - і упаковка SquashFS закінчиться повідомленням про успіх операції і нагадуванням про те, де і під яким ім'ям можна знайти її результат:
Прийнявши це до відома, я дізнався, що зібраний образ не вміститься на стандартний семісотмегабайтний CD:
Що, як з'ясувалося, соотвтетствовало дійсності, про що скажу в наступному мініочерке. А поки залишалося тільки натиснути OK, що спричинило закриття вікна збірки. А в першому терміналі - натиснути Enter, в результаті закриється і він:
А підсумковий образ, як уже говорилося, можна знайти в каталозі / home / data / my-mint / remaster-new-files під ім'ям livecd.iso.
«Потрошіння» способу
А тепер я повернуся назад і розповім про свій досвід «патрання» вихідного образу Cinnamon-редакції Mint. Не як приклад для наслідування або, тим більше, копіювання, але як варіант можливих дій. І собі на пам'ять - як шпаргалки, теж стане в нагоді.
«Потрошінні» піддався образ Cinnamon-редакції Mint 17.1 Rebecca в 64-бітному варіанті:
Для початку я підключив PPA-репозиторії, які припускав використовувати:
# Add-apt-repository -y ppa: mystic-mirage / komodo-edit && add-apt-repository -y ppa: zfs-native / stable && add-apt-repository -y ppa: andrew-crew-kuznetsov / crew
Нагадую, що командна оболонка запущена від імені адміністратора, що сімволізіуется видом запрошення командного рядка у вигляді решітки #.
Підключення репозиторіїв можна виконати і за допомогою mintsources, запустивши його з командного рядка. І тут тільки не слід зволікати з цією справою - після видалення непотрібних (мені) програм він може працювати з помилками. Якщо ж вдатися до стандартного add-apt-repository, то цієї проблеми не виникає, і підключення PPA-репозиторіїв можна відкласти.
Як завжди, підключення репозиторіїв треба завершити оновленням кешу пакетів:
# Apt update
І тепер, здавалося б, саме час виконати загальне оновлення системи. Однак - на жаль: у мене воно жодного разу не проходило ні через mintupdate, ні через apt upgrade ні в яких випадках: ні з відключенням Менеджера оновлень в хост-системі в першому випадку, ні з ручною фіксацією версій пакетів, які не оновлюються mintupdate - у другому . Так що спроби ці я залишив, переходячи відразу до видалення пакетів, які вважаю зайвими - Libreoffice, GIMP, все мультимедійні, Thunderbird і всякі дрібниці, типу Tomboy:
# Apt purge tomboy gimp thunderbird libreoffice * banshee brasero totem vlc gimp-data libgimp2.0
Далі настала черга шрифтів - видалення піддалися кхмерские, влада Таїланду і інші шрифти, такі необхідні в наших широтах:
# Apt purge fonts-kacst fonts-kacst-one fonts-khmeros-core fonts-lao fonts-lklug-sinhala fonts-nanum fonts-sil-abyssinica fonts-sil-padauk fonts-takao-pgothic fonts-thai-tlwg fonts-tibetan -machine fonts-tlwg-garuda fonts-tlwg-kinnari fonts-tlwg-loma fonts-tlwg-mono fonts-tlwg-purisa fonts-tlwg-sawasdee fonts-tlwg-typewriter fonts-tlwg-typist fonts-tlwg-typo fonts-tlwg -umpush fonts-tlwg-waree ttf-indic-fonts-core ttf-punjabi-fonts
І наостанок - видалення драйверів відеокарт, останні представники яких були списані в утиль багато років тому:
# Apt purge xserver-xorg-video-cirrus xserver-xorg-video-mga xserver-xorg-video-neomagic xserver-xorg-video-openchrome xserver-xorg-video-qxl xserver-xorg-video-s3 xserver-xorg-video -savage xserver-xorg-video-siliconmotion xserver-xorg-video-sis xserver-xorg-video-sisusb xserver-xorg-video-tdfx xserver-xorg-video-trident xserver-xorg-video-ati xserver-xorg-video- mach64 xserver-xorg-video-vmware xserver-xorg-video-vmware
Масове видалення пакетів по традціі слід завершувати командою
# Apt autoremove
Вона видаляє «осиротілі» залежності, від яких більше нічого не залежить. Втім, в моєму випадку таких не виявилося.
Тепер настав час збирати каміння встановлювати пакети. Яких виявилося не так багато:
# Apt install zsh gprename hunspell-ru-ie-yo mc mdadm uck shutter komodo-edit komodo-edit-ru gnumeric abiword gnome-mplayer asunder lame flac terminator tilda yagf system-config-lvm f2fs-tools nilfs-tools btrfs-tools ubuntu -zfs google-earth-stable virtualbox-4.3
Вдаватися до пояснень, чому саме ці пакети, вважаю тут недоречним. Ну а порядок їх перерахування в строк - абсолютно випадковий, і утворився в міру спогади.
Наостанок була встановлена нова Opera, попередньо скачана і поміщена в каталог path2 / remaster-root / tmp:
# Apt deb path2 / remaster-root / tmp
Після установки пакетів залишилися останні штрихи - забезпечити «ненудні шпалери» деякі дрібниці. Перше завдання було вирішено лобовим копіюванням з хост-системи (і в її середовищі) каталогу з моїми улюбленими фоновими картинками в каталог path2 / remaster-root / usr / share / backgrounds. І створенням (уже в chroot-оточенні) символічного посилання:
# Ln -s ../linuxmint-alv/Mount_of_the_Rising_Sun.jpg default_background.jpg
Далі, з хост системи же були перенесені конфігураційні файли:
мої конфіги для Zsh - ~ / .zshrc і ~ / .zshenv - в каталог / etc / zsh під іменами newuser.zshrc.recommended і zshenv, відповідно;
файлу customize, що описує доступні для UNC термінали - в каталог path2 / remaster-root / usr / lib / uck / customization-profiles / localized_cd / (з тим же ім'ям);
файлів словника для російського Спеллінга в Komodo Edit (ru_RU.aff і ru_RU.dic) - в калалог path2 / remaster-root / usr / lib / komodo-edit / mozilla / dictionaries.
І тепер Залишайся только війт з chroot-оточення и дочекатіся Закінчення складання нового образу. ОБСЯГИ которого Склаві Тисячі чотіреста вісімдесят Чотири МБ - проти Тисячі чотіреста сімдесят Вісім МБ образу віхідного. Але я і не ставив собі за мету його зменшення.
Одержаний образ був скопійований куди треба, отримав нормальне ім'я alv-rebecca.02.iso і контрольну суму командою
$ Md5sum alv-rebecca.02.iso> alv-rebecca.02.md5
Після цього образ піддався перевірці спочатку в Live-режимі, а потім був встановлений у віртуальній машині - перевіряти його на реальному залозі мені в даний момент ніде. Проте, оскільки всі попередні досліди такого роду закінчувалися успішно, я вирішив поділитися своїм способом з народом - раптом кому стане в нагоді. Так що скачати його можна з Яндекс.Діск .
Висновок
На закінчення цього нарису скажу пару слів про те, навіщо все це робилося і робиться - хтя, можливо, з цього випливало почати. Бо питання це виникає виникає досить часто. Правда, я зазвичай відповідаю на нього не цілком політкоректно:
Якщо ви не знаєте, навіщо це - значить, вам це не потрібно.
Але можна спробувати відповісти й інакше. Збирав я образи, зрозуміло, в першу чергу для себе, коханого, щоб мати можливість встановлювати Mint з його Cinnamon в тій комплектації, яка влаштовує мене на 146%.
По-друге, з цього образу система буде встановлюватися на машини моїх товаришів, які не мають, здебільшого, сформованих препочтеннейшій за частиною прикладного софту.
По-третє, образ може бути використаний для не зовсім стандартних інсталяцій, наприклад, з підключенням softRAID, що штатно його інсталятором не підтримується, на файлову систему Ext4 з відключеним журнал (що до недавнього часу пропагувалося Google як найшвидше вирішення), для підключення існуючого пулу ZFS або створення нового.
По-четверте, просто для експериментів з дисковими розділами і файловими системами, в тому числі і з відносно екзотичними, такими, як f2fs або nilfs2.
І, нарешті, по-п'яте і останніх - цей образ може послужити основою для спеціалізованих збірок під деякі завдання, наприклад, пов'язані з цифровою картографією.
Зміст
Кому тільки цей вислів не приписували?Питається, навіщо придумувати йому осмислене ім'я?