Моят монетен двор
След първия опит в изграждането на моя собствена версия на Mint, започнах да се интересувам от тази тема. И по-специално реших да възстановя версията с работния плот на MATE - освен това, за практически цели, за инсталиране на моя преносим компютър, Cinnamon се оказа малко тежък за нея. В хода на това начинание аз (и, както се оказа, не само аз) срещнах непредвидени трудности, които ме принудиха да се поровя малко в вътрешностите на комплекта за персонализиране на Ubuntu (наричан по-нататък UCK). В резултат на това ровене се появи тази бележка.
Всеки, който някога е участвал в модифициране на съществуващо инсталационно изображение на дистрибуция, може да разбере основните стъпки, включени в този процес:
- монтиране на изображението като устройство за цикъл;
- внедряване на неговата файлова система - сега всички дистрибуции използват някакъв механизъм за компресиране, по-специално в ubuntoids това е SquashFS;
- монтиране в loop-системата като свързани (bind) такива спомагателни, но абсолютно необходими директории на родителската система, като /dev, /sys и, за всеки случай, /proc;
- извършване на chroot операция в директорията на цикъла, като по този начин става основната директория;
- извършване на необходимите действия в chroot средата за премахване на ненужните пакети и инсталиране на необходимите;
- напускане на chroot средата и преопаковане на директорията на цикъла;
- демонтиране на устройството за цикъл и създаване на стартиращ ISO образ от него с помощта на isolinux.
Интуитивно беше ясно, че UCK не прави нищо друго освен горното, той само автоматизира процеса, правейки стъпките му почти невидими за потребителя. При по-внимателно разглеждане се оказа, че е така.
Основните изпълними файлове на пакета uck (и има 16 от тях) се събират, разбира се, в директорията/usr/bin и са с префикс uck-*. Всички те са най-често срещаните shell скриптове и е лесно да се познае целта на всеки от техните имена. Главният скрипт, който стартира целия процес е /usr/bin/uck-gui - той е този, който се извиква чрез елемента от менютоАдминистриране ->Ubuntu Customization Kit - с опцията --wait-before-exit, която отговаря за изчакване на натискането наEnter преди излизане от програмата след нейното успешно завършване.
Между другото, ако не успее, тоест възникне грешка по някаква причина (например липса на място на целевото устройство), нищо не се случва, освен спиране на работата. Няма връщане, остава само да затворите главния терминален прозорец на програмата (много празния, който може да се види в предишната бележка на първата екранна снимка) и да започнете всичко отначало. Така че, предвид продължителността на разопаковането на SquashFS и някои други процедури, по-добре е да бъдете внимателни и да не правите грешки. Надявам се, че тази и следващите бележки ще помогнат на заинтересованите читатели да избегнат поне капана, в който стъпих.
Освен посочената, командата uck-gui (която се изпълнява като нормален потребител - паролата за достъп до административни привилегии се изисква само когато са необходими) има поне още две опции. Първият, -m , който кешира модифицирани части от изображението, не винаги работи, както казва man (1) uck-gui, и следователно не се използва в стандартната ситуация.
Втората опция също обикновено не е активирана, но може да е важна за потребителя. Това е опцията remaster-dir, която определя работна директория, която не е по подразбиране за UCK
/tmp. Последното не го използвах поради ред причинижелателно, така че последната команда за стартиране на UCK през менюто стана така:
В допълнение към стартирането на процеса, uck-gui скриптът е отговорен и за избора на типа работен плот - unity, gnome, kde или други. Опитите да направите промени тук (например попълване на списъка с налични настолни компютри) обаче няма да доведат до никакъв резултат. Тоест, добавените настолни компютри ще бъдат добавени към менюто на техния избор (вижте екранната снимка от), те няма да променят нищо (но тази тема ще бъде обсъдена в следващата бележка).
Защото всъщност освен изпълнимите скриптове в директорията /usr/bin, основният компонент на UCK е и директорията /usr/lib/uck/. И в него, наред с други неща, е файлът /usr/lib/uck/customization-profiles/localized_cd/customize , който е изпълним shell скрипт. Нека го запомним - именно той ще трябва да бъде редактиран в следващата бележка.
Първоначалната персонализация е свързана с избора на локал за медията на живо и инсталираната система - списък с всички налични се съдържа във файла /usr/lib/uck/langlist. Освен това се оказа, че противно на това, което беше направено при подготовката на последната бележка, не е необходимо да се дефинират никакви езикови гнева: дори и да се ограничим до знака ru box, в средата на живо локалът ще бъде en_US, а в инсталираната система локалът по подразбиране - да предположим български utf8
автоматично ще добави:
Вярно, за разлика от Ubuntu, никой от тях няма да изскочи в най-неподходящия момент - но това е съвсем друга история.
Следващата стъпка от персонализирането е изборът на работна среда. Всъщност той не дефинира средата, а терминалната програма, в която ще живее chroot средата. Когато избирате първите три опции, това ще бъде съответният обикновен терминал (Konsole, GNOME Terminal или Xfce Terminal), в случай на опциятачетвъртият, те ще бъдат просто изброени плюс LXTerminal от LXDE. Съответно този, който бъде намерен първи, ще бъде стартиран, така че избирането на елементаother ще работи в по-голямата част от случаите, независимо от работния плот, използван на изкормената медия на живо. И най-малкото е предвидено стартирането на XTerm, което изглежда е налично във всяка дистрибуция. Но в Mint не е в нито един сборник, което създаде сюжета на следващата бележка.
С избора на изходния образ на диска всичко е ясно, както и с последващите стъпки - до предложението за въвеждане на парола за достъп до администраторски права. Те са необходими за последващото монтиране на изходния образ, неговото разполагане и декомпресия на SquashFS, което отнема много време. Когато приключи, директорията, дефинирана като remaster-dir, ще изглежда така:
Очевидно build.log съдържа регистриране на напредъка на процеса, а директорията customization-scripts/ съдържа скриптове за персонализиране, генерирани от скриптове от /usr/lib/uck/. Директорията remaster-apt-cache/ ще съдържа локален кеш на инсталираните пакети, а самите те ще бъдат поставени в поддиректорията remaster-apt-cache/archives, която е аналогична на /var/cache/apt/archives на инсталираната система. По този начин изтеглените пакети не замърсяват нито корена на системата, внедрен от образа на живо (той се намира в директорията remaster-root/), нито освен това директорията за изграждане на новото изображение директно - remaster-new-files/ . В последния, след успешното завършване на цялото предприятие, ще се появи точно това изображение под името livecd.iso. Е, remaster-root/home, разбира се, е домашната директория на администратора (аналогично на /root в обичайната файлова йерархия).
След това се предлага да изберете елементаИзпълнение на конзолно приложение - това е изпълнението на същата командаchroot, който споменах по-рано. И е придружено от стартирането на същия терминал, определен на етапа на така наречения избор на работния плот.
Ако предишните етапи са завършени успешно, тогава започва най-важното: действителното изкормване на оригиналното изображение. Изисква се точност и последователност, чието нарушаване води до грешки, които, както казах, са крайно нежелателни. Затова предлагам един от вариантите, изпробван на собствената си кожа.
Първо свържете PPA хранилищата, ако възнамерявате да ги използвате. По-специално, включих ppa:andrew-crew-kuznetsov/crew , който съдържа пакета hunspell-ru-ie-yo (речник, който поддържа букватаЁ ), към бъдещото изображение за Notebook. И към изображението за голяма машина - също ppa:zfs-native/stable , защото по някаква причина бях смъртно разстроен от поведението на XFS, но повече за това друг път. Можете да направите това с помощта на mintsources , за който писах не толкова отдавна - именно заради него не трябва да отлагате този въпрос, след премахване на ненужни (за мен) програми, той започна да работи с грешки. Ако обаче прибягвате до стандартното add-apt-repository, тогава свързването на PPA хранилища може да бъде отложено.
Следващата стъпка е да премахнете ненужните пакети. Моят списък с пакети за премахване задължително включва:
Освен това, в зависимост от субстрата (изображение с канела или с MATE), са възможни вариации. Но за това ще говоря в съответните бележки. Междувременно "отделно, с голямо удоволствие" махнах шрифтовете - тайландски, кхмерски и други, също толкова необходими по нашите географски ширини:
Тук обаче е важно да не се увличате и да следите какво ще бъде премахнато като зависимости. Например опит за деинсталиране на жизненоважния за нас fonts-wqy-microhei (предназначен за CJK) ще доведе до разрушаване на почтина всички монетен двор.
След като премахнете пакетите, можете да добавите необходимите PPA хранилища с помощта на add-apt-repository (ако вече не е направено, чрез mintsources), и след това щракнете върху бутонаПриложи в Synaptic или изпълнете командата
за актуализиране на локалния кеш.
Сега бях силно изкушен да получа напълно актуализирана система, като издам командата
Първоначално се поддадох на това - и скоро се убедих, че е напразно: процесът на пълно надграждане доведе до грешка на етапа на актуализиране на ядрото и генериране на initrd. И както казах, в този случай трябва да започнете всичко отначало. Разбира се, това може да се избегне, като се забрани актуализацията на всички "почти до ядра" компоненти. Но бях твърде мързелив, за да се забърквам и затова следващия път, когато се опитах, направих без надграждане - би било по-лесно да го изпълня в инсталираната система. След като актуализирах кеша, започнах да инсталирам пакетите, от които се нуждаех. Списъкът с тях за бъдещото изображение с MATE, предназначено за Notebook, изглеждаше така:
Вариантът с Cinnamon (това изображение беше предназначено за голяма машина - ще ви разкажа за причините за преинсталиране на системата върху нея другаде) се отличаваше с липсата на офис пакет изобщо, защото все още не бях решил избора между Apache OpenOffice и LibreOffice. Освен това fbreader беше премахнат от списъка, но беше добавен калибър - не чета електронни книги на голяма машина, но ги правя. И разбира се, uck беше включен в образа на голямата машина.
Междувременно започнах да проверявам първото от получените изображения, базирано на работния плот на MATE - първо като го инсталирах във виртуална машина, за което ще стане дума в следващата бележка.