Складання власного образу за допомогою kickstart-файлу

Особисті інструменти

Редагування

Інструменти

Складання власного образу за допомогою kickstart-файлу

Матеріал з База знань проекту Ukrainian Fedora

Зміст

Встановлення необхідних пакетів

Встановлюємо пакет livecd-tools та готові набори kickstart-файлів:

Створення свого kickstart-файлу

Створюємо тимчасову робочу директорію та переходимо до неї:

Встановлений раніше пакет fedora-kickstarts додасть кілька варіантів файлів kikstart у каталозі /usr/share/spin-kickstarts. Переглянувши їх, можна визначитися з вибором шаблону для власного складання. В даний час там знаходяться файли kickstart як CD, так і DVD, з відмінністю не тільки в розмірах остаточної системи, а й у наборі програм, у тому числі робочих столів. Для прикладу скопіюємо kickstart-файл складання офісного пакету з Бразилії як шаблон:

Переглянемо та відредагуємо щойно скопійований kickstart-файл:fedora-livecd-my.ks

    зверніть увагу на опцію %include (англ.), задану з параметром fedora-livecd-desktop.ks, яка вказує на включення вмісту іншого файлу kikstart з fedora-kickstarts. Тут слід знати, що цей додатковий файл повинен бути доступний при складанні, а отже повинен або знаходитися в тому ж каталозі, що і виправлений fedora-livecd-my.ks, або шлях до fedora-livecd-desktop.ks повинен бути визначений . Варіантів виправити таку неприємність, коли файли, що використовуються при складанні, лежать у різних місцях, та ще й у таких неочевидних, як /usr/share/spin-kickstarts/ не так вже й багато. Наприклад, просто скопіюйте у свій робочий каталог

/works усі необхідні файли не змінюючи їм імена.

  • відкриваючи по черзі (починаючи зі стартовогоfedora-livecd-my.ks) і переглядаючи всі файли kikstart можна виявити всі необхідні відомості про необхідні саме ваші збірки файли. Дивіться параметри включення %include (англ.). Для обраного бразильського офісу, наприклад, знадобляться fedora-livecd-desktop.ks, fedora-live-desktop.ks, fedora-live-base.ks, fedora-live-minimization.ks.
  • якщо ви додаєте якийсь пакет, то простежте чи немає його видалення маскою в попередніх kiskstart-файлах, інакше ваш пакет не буде включений в збірку. І хоча ця заява в цілому є дуже сумнівною, але звучить правильно і її слід дотримуватися.
  • простий приклад нашої збірки, де в стартовому файлі kikstart fedora-livecd-my.ks (перейменованому fedora-livecd-broffice.org.ks) установкою пакетів java-1.6.0-openjdk і java-1.6.0-openjdk-plugin робиться підтримка java, а в fedora-livecd-desktop.ks, що підключається, ці пакети забороняються до встановлення, і в результаті виходить збірка з підтримкою java не дивлячись на заборони, може ввести в замішання. Але найкращим варіантом все ж таки було б уникати одночасних включень і виключень пакетів, нехай навіть і в різних файлах kikstart.
  • теж саме можна сказати і про опції встановлення мови (англ.), тимчасової зони (англ.), налаштуваннях selinux (англ.), які є в додатковому (включається) файлі fedora-live-base.ks; ці налаштування для чистоти експерименту краще видалити, хоча всі вони, зрозуміло, будуть проігноровані:
    • саме через те, що фактично вам доведеться виправляти не один файл kikstart, і щоб уникнути втрати початкового вмісту fedora-kickstarts, зробіть копію необхідних файлів з каталогу /usr/share/spin-kickstarts/ в робочий каталог. Так у вас завжди буде можливість швидко почати все спочатку, а не залежативід вашого провайдера, наприклад.
    • може статися так, що врешті-решт ви прийдете до оригінальної думки, що якщо і є у Fedora пакети сумнівної потреби, то їх кількість мізерно мала, а тому можна додати у свою збірку все (або майже все), а там вже розберемося, мовляв який зайвий. Буває, чи знаєте. Так ось, безумовно, досягнення сучасних технологій, коли флешка на 32 Gb вже не рідкість, дозволять вам зібрати вкрай насичену робочу збірку. Але при цьому вам обов'язково треба знати, що ніхто, крім вас, не вказує розмір кореневого каталогу. Завжди пам'ятайте про опцію part (англ.), яка неодмінно має бути вами скоригована для таких мега-складання. У нашому варіанті ви знайдете цю опцію все в тому ж додатковому файлі fedora-live-base.ks Про те, що буває, коли ви не звернете на цю увагу практично без відповіді запитують на форумі проекту Russian Fedora.
    • c прикладами файлів kikstart, всілякими варіантами реалізації тієї чи іншої зміни, що застосовується цілком до складання або до її складових можна ознайомитись у репозиторії spin-kikstart (англ.)

    Розділ %post файлу kikstart

    Налаштування екрана gnome у файлі fedora-live-desktop.ks

    І таке ж налаштування у файлі fedora-livecd-desktop.ks

    Пам'ятайте, що обидва ці файли вам потрібні, а дубляж. Що дубляж? Один файл складав один розробник, а інший файл – інший розробник. І обом розробникам припала до душі ця картинка. Нічого такого. Ви можете додати свій набір картинок і вказати десь "нижче" всіх. І будуть ваші картинки. Або видаляйте непотрібне, додаючи своє. На прикладі оформлення робочого столу, куди ви можете покласти свої улюблені зображення, пояснюється необхідність використання окремого розділу файлуkikstart %post --nochroot Якщо в розділі %post ви налаштовуєте систему, видаючи команди працюючи в ній самій, і не можете звернутися до зовнішніх ресурсів без особливих хитрощів, то параметр --nochroot вирішує цю проблему. Тут достатньо лише запам'ятати:

    На прикладах це так.

    • Втомно чекати десять (стандартних) секунд перед початком завантаження системи. Ви вважаєте, що достатньо було б двох секунд. Додайте до розділу %post --nochroot наступне:
    • Захотілося змінити зображення заставки при відліку стандартних 10 секунд перед завантаженням. Кладемо в робочий каталог

    /works нашої збірки свою картинку splash.jpg (тільки якщо хто ще не в курсі, це не jpeg, а png зі зміненим розширенням) і додаємо в розділ %post --nochroot наступне:

      Треба додати свої картинки на робочий стіл gnome замість стандартних. Збираємо всі картинки в окремий каталог

    /works/myshow/. Скористаємося послугами широко відомого скрипта builds wallpaper slideshow (англ.) для створення свого слайд-шоу, назвати його не як-небудь, а myshow.xml, і можна було б відразу скопіювати картинки та xml-файл з

    /works/myshow/ $INSTALL_ROOT/usr/share/backgrounds/myshow/ , але для проби непогано було б зберегти архів зі своїм слайд-шоу. Раптом у вас не вдасться скопіювати вміст каталогу разом з каталогом, або в системі ви випадково забули створити підкаталог myshow в /usr/share/backgrounds/, а для цього можна використовувати розділ %post без опцій, або щось не так вийшло з використанням скрипту від гугла – завжди є привід зберегти свою роботу, щоб розібратися на місці. Звичайно, тут важливий порядок, що за чим слідує і як саме робиться, адже варіантів, як виявляється, більше трьох, алеі тут вас можуть здивувати деякі моменти. Пропоную спочатку особливо не мудрувати, а стиснути весь каталог з картинками і файлом xml в архів. Скопіювати його в систему, що збирається, розархівувати там і поки не видаляти сам архів:

    І додати до kikstart-файлу:

    • дивно тут те, що розділ %post --nochroot слідує за розділом %post. І, на перший погляд, схоже, що ми намагаємося спочатку розархівувати архів, який тільки потім додаємо. Але це дійсно спрацює, якщо ви не намагатиметеся додати до розділу %post файлу kikstart свої "нововведення" попереду всіх попередніх і вже наявних налаштувань у вибраних вами шаблонах. Я ж роблю простіше, щоб не дуже голова хворіла через ймовірні невідповідності та порушення порядку. Для розділу %post --nochroot створюю окремий файл kikstart і підключаю його до основного файлу тією самою опцією %include (англ.)
    • Чесно кажучи, якщо скопіювати саме той код, що вказано вище, у вас нічого не вийде. Проблема в тому, що збирання здійснюється від імені привілейованого користувача. Зрозуміло, домашній каталог у нього відрізняється від домашнього каталогу того користувача, під яким ви намагаєтеся зібрати свій перший LiveCD. Замініть у всіх рядках файлу kikstart, де зустрічається

    /works на ваш повний шлях від кореня і все буде добре. Підкаталог

    /works вашого домашнього каталогу вказаний саме так з однією метою - дотримання спільності в порядку вказівки шляхів.

    Про користувачів у збираному LiveCD

    У пропонованих варіантах збірок, на основі файлів kikstart з пакета fedora-kickstarts, в системі є два безпарольні користувачі: root і liveuser. Комусь і так зійде. Мене це не влаштовує. По-перше, я абсолютно не наполягаю,але мені не подобаються безпарольні, які запускаються до глобальної мережі. Боязко якось і шкода якщо від стороннього, хай навіть випадкового втручання щось почне пропадати чи псуватися. Користувача liveuser я взагалі перейменовую і призначаю пароль, а root-у просто призначаю пароль. По-друге, робиться просто, то чому б і не використовувати?

    • замінюємо в fedora-live-base.ks всі згадки liveuser на "краще" ім'я GrigoriyEphimovichRasputin :
    • далі треба знайти в fedora-live-base.ks наступний епізод:

    і призначити йому хитрий пароль 1234:

    З root-ом роблять ще простіше. Для цієї мети є спеціальна опція rootpw (англ.), яку можна вказати відразу після налаштування мови, часу та ін. у стартовому файлі kikstart. Існує лише два варіанти. Або пароль у файлі kikstart треба друкувати таким, яким він має бути (--plaintext можна опустити), або із зазначенням --iscrypted, що пароль зашифрований. Вибирати вам, але не помиляйтесь у букво-цифрах, якщо шифруватиметеся в kikstart:

    • замінити liveuser на GrigoriyEphimovichRasputin треба буде і в fedora-live-desktop.ks. Там є і автоматична реєстрація користувача в системі:
    Я цю справу міняю на більш зрозуміле та просте:
    • заодно перевірте і всі інші файли kikstart щодо згадки liveuser:

    За ідеєю більше не зустрінеться. Хіба ви вже десь не підправили. Тому що:

    • якщо ви звикли, що простий користувач може підвищити свої привілеї, підправте файл sudoers на власний смак. Особисто мені завжди вистачає того, що користувач може лише монтувати пристрої:

    Можливо, з'явиться бажання тримати на LiveCD(DVD), флешці чи якомусь іншому носіїсервер. Можливо, серверів буде багато. І вам доведеться налаштовувати у збиранні firewall. Якщо ви прочитали все, що було надруковано вище або знаєте цю тему, то нічого особливо нового не дізнаєтеся. Але особисто мені, на жаль, і тут довелося попихкати. Вважаю гарною справою зберегти вам кілька хвилин, які запросто можете витратити прописуючи правила в опції firewall вашого файлу kikstart. Для налаштування дозволів для портів, що забезпечують роботу тих чи інших служб, сервісів та демонів, явно проглядаються три шляхи:

    • скласти правила для iptables та банально скопіювати ці файли (для ipv4 та ipv6) у $INSTALL_ROOT/etc/sysconfig , використовуючи розділ %post --nochroot ;
    • скористатися опцією firewall (англ.), за допомогою якої зробити необхідні дозволи в заголовку файлу kikstart, де час, мова, рутовий пароль, спосіб шифрування та ін. ;
    • підглянути в скрипті livecd-creator про те, що таке опція firewall (англ.) та у розділі %post прописати виконання lokkit з необхідними параметрами.
    • якщо необхідний доступ по ftp, ssh та http:

    Особисто мені трапився другий варіант, і він виявився тим самим шляхом, яким йти довелося дуже довго. Але тепер, знаючи про перший і особливо третій варіант, мені і другий здається досить простим. Вибирати вам.

    Складання свого LiveCD

    Збираємо свій liveCD (всі пакети в цьому liveCD будуть найновіші на момент збирання):