Новости

Linux Mint і його Cinnamon. Нариси применителей. Частина 11. Збірка свого образу

  1. Свій Mint: введення
  2. UCK: огляд
  3. UCK: процес
  4. «Потрошіння» способу
  5. Висновок

Олексій Федорчук 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:

«Головним», тобто запускає весь процес скриптом є / 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, яка займає чимало часу:

Слідом за цим відбувається монтування вихідного образу, його розгортання і декомпресії 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-бітному варіанті:

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.

І, нарешті, по-п'яте і останніх - цей образ може послужити основою для спеціалізованих збірок під деякі завдання, наприклад, пов'язані з цифровою картографією.

Зміст

Кому тільки цей вислів не приписували?
Питається, навіщо придумувати йому осмислене ім'я?

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

Или позвоните нам по телефонам: (048) 823-25-64

Организация (обязательно) *

Адрес доставки

Объем

Как с вами связаться:

Имя

Телефон (обязательно) *

Мобильный телефон

Ваш E-Mail

Дополнительная информация: