Вы здесь

Как сделать кастомный диск Alt Linux с автоматической установкой системы


Как сделать кастомный диск Alt Linux с автоматической установкой системы

Возник вопрос – как можно быстро развернуть Alt Linux на большое количество компьютеров. Ответ напрашивается сам – нужно что-то придумать с автоматической установкой. Предвкушая комментарии в духе – гораздо проще снять образ диска с работающей системой, каким-нибудь Acronisом, или простым dd – отвечу, так сделать можно, но только в том случае, если железо на всех компьютерах у вас будет абсолютно одинаковым, иначе могут быть самые неожиданные проблемы, по этому всё же лучше установка системы. Как это сделать - написано ниже.

Копируем содержимое диска с дистрибутивом куда-нибудь:

mkdir /mnt/disk
cp -ar /run/media/test/cusotmAlt/* /mnt/disk/
cd /mnt/disk/Metadata

Создадим файл ответов:

nano autoinstall.scm

Содержимое файла – примерно такое:

; установка языка операционной системы (ru_RU)

("/sysconfig-base/language" language ("ru_RU")  action "write" lang ("ru_RU"))

; установка переключателя расладки клавиатуры на Ctrl+Shift

("/sysconfig-base/kbd" language ("ru_RU") action "write" layout "alt_sh_toggle")

; установка часового пояса в Europe/Moscow, время в BIOS будет храниться в UTC

("/datetime-installer" action "write" commit #t name "RU" zone "Europe/Moscow" utc #t)

; автоматическая разбивка жёсткого диска

("/evms/control" action "write" control open installer #t)

("/evms/control" action "write" control update)

("/evms/profiles/workstation" action apply commit #f clearall #t exclude ())

("/evms/control" action "write" control commit)

("/evms/control" action "write" control close)

; установка пакетов операционной системы

("pkg-init" action "write")

; установка только базовой системы (дополнительные группы пакетов из pkg-groups.tar указываются по именам через пробел)

("/pkg-install" action "write" lists "workstation/libreoffice workstation/scanning workstation/smartcard workstation/ganttproject workstation/gtk-dictionary workstation/3rdparty workstation/mate-usershare workstation/pidgin workstation/raccess workstation/vlc workstation/emulators  workstation/freecad workstation/scribus workstation/evolution" auto #t)

;("/pkg-install" action "write" lists "" auto #t)

("/preinstall" action "write")

; установка загрузчика GRUB в MBR на первый жёсткий диск

("/grub" action "write" device "/dev/sda" passwd #f passwd_1 "*" passwd_2 "*")

; настройка сетевого интерфейса на получение адреса по DHCP

("/net-eth" action "write" reset #t)

;("/net-eth" action "write" name "eth0" configuration "dhcp" default "" search "" dns "" computer_name "c245")

("/net-eth" action "write" name "eth0" configuration "dhcp" default "" search "" dns "")

; настройка сетевого интерфейса на статический IPv4

; ("/net-eth" action "write" name "eth0" configuration "static" default "192.168.1.1" search "localhost.com" dns "192.168.1.1" computer_name "c245" ipv "4" ipv_enabled #t)

; ("/net-eth" action "add_iface_address" name "eth0" addip "192.168.1.2" addmask "24" ipv "4")

("/net-eth" action "write" commit #t)

; установка пароля суперпользователя root '123'

("/root/change_password" language ("ru_RU") passwd_2 "123" passwd_1 "123")

; задание первого пользователя 'test' с паролем '123'

("/users/create_account" new_name "test" gecos "" allow_su #t auto #f passwd_1 "123" passwd_2 "123")

 ("/postinstall/firsttime" run "sleep 30 && curl ]]>http://media.loc/post1.sh]]> -o /root/post1.sh && /bin/sh /root/post1.sh")

В этом файле могут со временем измениться параметры, посмотреть список актуальных можно в файле /root/.install-log/wizard.log, после обычной установки системы. Или во время уствновки - /tmp/wizard.log

В целом думаю вопросов к файлу возникнуть не должно, все интуитивно понятно.

Необходимые пакеты добавляются в секции pkg-install. Названия можно посмотреть в файле pkg-groups.tar, который находится той же папке, куда мы помещаем конфиг. По иерархии – lists/workstation/имя, соответственно имя будет, например workstation/evolution. Имена вводятся через пробел.

Что бы добавить дополнительный пакет, которого изначально нет на диске необходимо распаковать pkg-groups.tar и внести изменения:

tar xf pkg-groups.tar

К примеру, добавим evolution.

nano lists/workstation/evolution

Содержимое файла – каждый нужный пакет – с новой строки:

evolution

evolution-ews

nano groups/workstation/evolution.directory

[Desktop Entry]

Encoding=UTF-8

Type=Directory

Name=Evolution mail client

Name[ru_RU]= Почтовый клиент, поддерживающий MS Exchange

X-Alterator-Parent=workstation/20-networking

X-Alterator-PackageList=workstation/evolution

X-Alterator-Required=yes

После внесенных изменений, пакуем папки обратно:

tar cf pkg-groups.tar groups lists

Если на прошлом шаге были добавлены пакеты отсутствующие в репозитории на диске, необходимо все нужные пакеты добавить в репозиторий вручную. Важно добавлять абсолютно все нужные пакеты, включая зависимости, зависимости зависимостей и т.д., иначе не будут установлены ни какие пакеты, помимо базовых, даже те, которые были на диске изначально. Проще всего сделать так – на абсолютно голой минимальной системе установить нужные пакеты. Зависимости стянутся сами, и будут находится в папке /var/cache/apt/archieve.

Если хочется хардкора, можно посмотреть зависимости вручную командной:

apt-cache depends evolution evolution-ews

Если пакет уже есть в системе, но отсутствует в кэше, можно скачать так:

apt-get install --reinstall --download-only evolution

Не забываем про зависимости зависимостей.

Все нужные пакеты копируем в папку ALTLinux/RPMS.main:

cp /home/test/rpms/*.rpm /mnt/disk/ALTLinux/RPMS.main/

/home/test/rpms – директория, куда я копировал нужные пакеты из кэша.

Устанавливаем apt-repo-tools:

apt-get install apt-repo-tools

Чтобы команда обновления репозитория не ругалась, ей нужна папка:

mkdir /mnt/disk/SRPMS.main

Обновление репозитория:

genbasedir --topdir /mnt/disk ALTLinux main

Последняя строка в autoinstall.scm говорит запустить постустановочный скрипт во время первого запуска ОС, что позволяет относительно просто сделать начальные настройки настройки. В моём примере я стягиваю скрипт с веб сервера, и после этого запускаю его. Обратите внимание, что перед началом скачивания скрипта я торможу процесс на 30 секунд. Это нужно для того, чтобы успела инициализироваться сеть, иначе скрипт стягиваться не будет.

Чтобы установка проходила в полностью автоматическом режиме, необходимо отредактировать файл:

nano /mnt/disk/syslinux/isolinux.cfg

В разделе с загрузкой установщика нужно добавить в конец строки ai:

label linux

  kernel alt0/vmlinuz

  append initrd=alt0/full.cz changedisk fastboot automatic=method:cdrom ramdisk_size=372041 showopts vga=normal quiet splash ai

Тут же меняется порядок меню при загрузке с диска.

Последний шаг - пакуем папку обратно в ISO:

mkisofs -o /home/test/custom2.iso  -b syslinux/isolinux.bin -c syslinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -J -R -V "customAlt" /mnt/disk/

Также можно пользоваться сетевой установкой. Суть там, вродебы такая же, за исключением того, что не нужно перепаковывать ISO.

3 1

Поделитесь статьей с друзьями в соц. сетях, возможно, она будет им полезна.


Если вам помогла статья, вы можете >>отблагодарить автора<<