The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Раздел полезных советов: Автоматическая установка Debian с п..."
Отправлено auto_tips, 15-Фев-16 21:25 
Требовалось установить Debian с флешки или CD в полностью автоматическом режиме. Без доступа к Интернету. Софт- минимальный набор (Debian Jessie netinstall ISO). Архитектура - i686. После инсталляции необходимо установить дополнительные пакеты, произвести определенные настройки установленной ОС. Тоже в автоматическом режиме.

Установку Debian'a можно полностью автоматизировать путем создания файла со сценарием ответов на все вопросы инсталлятора. Интегрировав данный сценарий в инсталляционный образ получим полностью самоустанавливаемый Debian. Способ автоматической установки называется Debian Preseed. Созданный файл-сценарий ответов (preseed.cfg) пакуется его в initrd инсталляционного ISO-образа Debian. На выходе получаем обычный ISO-образ, готовый к автоматической установке.


Для создания собственного инсталляционного ISO-образа необходимо произвести ряд действий. А именно:

*** смонтировать оригинальный ISO;
*** "выудить" из него initrd, распаковать его;
*** скопировать в "корень" initrd созданный файл preseed.cfg и все необходимое для настройки устанавливаемой системы по завершении установки (см. ниже);
*** собрать обратно ISO образ.

Для автоматизации сборки образа сделаем скрипт makeiso.sh. Выполнять его необходимо с правами рута. Для работы скрипта нужны установленные пакеты rsync, syslinux, genisoimage, md5sum.
В директорию, где находится скрипт,  необходимо скопировать оригинальный Debian ISO и файл-сценарий preseed.cfg. Также необходимо создать директорию extra - в ней будут находиться пост-инсталляционный скрипт и все необходимое, для его работы.

cat makeiso.sh

   #!/bin/bash

   mkdir mnt
   mkdir irmod
   mkdir cd
   INISO=debian-8.3.0-i386-netinst.iso
   OUTISO=debian-preseed.iso
   mount -o loop $INISO mnt
   rsync -a -H --exclude=TRANS.TBL mnt/ cd
   umount mnt
   rmdir mnt
   # Pack custom initrd
   cd irmod
   gzip -d < ../cd/install.386/initrd.gz | cpio --extract --verbose     --make-directories --no-absolute-filenames
   cp -f ../preseed.cfg preseed.cfg
   find . | cpio -H newc --create --verbose | gzip -9 > ../cd/install.386/initrd.gz
   cd ../
   rm -fr irmod/
   # Fix md5 sum
   cd cd
   md5sum `find -follow -type f` > md5sum.txt
   cd ..
   # Copy custom postinst script to new ISO
   cp -Rf extra cd/
   # Create new ISO
   rm test.iso
   genisoimage -o $OUTISO -r -J -no-emul-boot -boot-load-size 4 -boot-info-table -b isolinux/isolinux.bin -c isolinux/boot.cat ./cd
   rm -rf cd
   isohybrid -o $OUTISO


При успешной отработке скрипта получим образ debian-preseed.iso (в формате hybrid iso), готовый для записи как на USB-носитель, так и на CD.

Записать образ на флешку можно, например, вот так:

   cat debian-preseed.iso /dev/sdX

где sdХ - флешка

Теперь, собственно, сам preseed-сценарий.

cat preseed.cfg

   d-i debian-installer/locale string ru_RU.UTF8
   d-i console-keymaps-at/keymap select ru

   ### Network configuration
   d-i netcfg/enable boolean false
   d-i netcfg/get_hostname string host_name
   d-i netcfg/get_domain string domain.name
  
   ### Mirror settings
   d-i mirror/country string enter information manually
   d-i mirror/http/hostname string http.us.debian.org
   d-i mirror/http/directory string /debian
   d-i mirror/http/proxy string
  
   ### Partitioning
   d-i partman-auto/method string regular
   d-i partman-auto/disk string /dev/sda
   d-i partman-auto/expert_recipe string \
   boot-root:: \
   1000 10000 1000000 ext4  \
   $primary{ } $bootable{ } \
   method{ format } format{ } \
   use_filesystem{ } filesystem{ ext4 }  \
   mountpoint{ / } \
    label{root} \
   \
   500 10000 1000000000 ext4 \
   $primary{ } \
   method{ format } format{ } \
   use_filesystem{ } filesystem{ ext4 } \
   mountpoint{ /var } \
   \
   128 2048 150% linux-swap \
   $primary{ } method{ swap } format{ } \
    
   d-i partman/confirm_write_new_label boolean true
   d-i partman/choose_partition select Finish partitioning and write changes to disk
   d-i partman/confirm boolean true

   d-i clock-setup/utc boolean true
   d-i time/zone string Europe/Moscow

   ### Apt setup
   d-i apt-setup/non-free boolean true
   d-i apt-setup/contrib boolean true
   d-i apt-setup/use_mirror boolean false
  
   # Additional repositories, local[0-9] available
   d-i apt-setup/local0/repository string deb http://mirror.yandex.ru  /debian jessie main
   d-i apt-setup/local0/source boolean true
   d-i apt-setup/local0/source string http://mirror.yandex.ru/debian   jessie main
   d-i debian-installer/allow_unauthenticated string true
  
   ### Account setup
   d-i passwd/root-login boolean true
   d-i passwd/root-password-crypted password MD5_password_hash
    
   d-i passwd/make-user boolean true
   d-i passwd/user-fullname string user
   d-i passwd/username string user
   d-i passwd/user-password-crypted password MD5_password_hash
  
   ### Base system installation
   d-i base-installer/kernel/linux/initramfs-generators string yaird

   ### Boot loader installation
   d-i grub-installer/skip boolean false
   d-i lilo-installer/skip boolean true
   d-i grub-installer/bootdev  string default
   d-i grub-installer/only_debian boolean true
   d-i grub-installer/with_other_os boolean true
  
   ### Package selection
   tasksel tasksel/first multiselect standard, ssh-server
   popularity-contest popularity-contest/participate boolean false

   ### Finishing up the first stage install
   d-i finish-install/reboot_in_progress note
   d-i preseed/late_command string cp -R /cdrom/extra/ /target/root/; \
   cd /target; \
   chmod +x /target/root/extra/postinst.sh; \
   in-target /bin/bash /root/extra/postinst.sh;

Пароль рута и пользователя задан в виде хеша. Хеш получаем командой:

   mkpasswd -m md5

Диск разбивается на 3 раздела: /, /var, и swap. ФС - ext4, Размер swap - не менее 128Мб, примерно 150% от объема установленной памяти. Остальные разделы - примерно пополам от объема диска.

После окончания установки в свежеустановленную (т.н. "target") систему копируется директория extra и в chroot-окружении запускается постинсталляционный скрипт postinst.sh. Что ему делать - решать вам. Например, доустановить дополнительный софт, произвести донастройку системы и т.п.
Все.


Литература
* [[https://wiki.debian.org/DebianInstaller/Preseed/EditIso How to modify an existing CD image to preseed d-i]]
* [[https://www.debian.org/releases/jessie/mips/apbs04.html.ru Автоматическая установка с помощью списка ответов]]
* [[https://www.debian.org/releases/etch/example-preseed.txt Example preseed]]
* [[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=712907 Bug #712907]]
* [[https://fak3r.com/2011/08/18/howto-automate-debian-installs-.../ HOWTO automate Debian installs with preseed]]


URL: http://l8sae-rexhn1.livejournal.com/13806.html
Обсуждается: http://www.opennet.ru/tips/info/2939.shtml

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру