Возник вопрос – как можно быстро развернуть 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.
