Возник вопрос – как можно быстро развернуть 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.
Share the article with your friends in social networks, maybe it will be useful to them.
If the article helped you, you can >>thank the author<<