URL: https://www.opennet.dev/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 106737
[ Назад ]

Исходное сообщение
"Раздел полезных советов: Автоматическая установка 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.dev/tips/info/2939.shtml


Содержание

Сообщения в этом обсуждении
"Автоматическая установка Debian с помощью preseed"
Отправлено VecH , 15-Фев-16 21:25 
А нельзя установить Debian в виртуалке и во время установки выдернуть/сгенерировать файл ответов для сохранения что бы описывать каждый параметр вручную?

"Автоматическая установка Debian с помощью preseed"
Отправлено myhand , 16-Фев-16 20:26 
Да можно, конечно.  Но ведь автору прочитать мануал по установке - влом.

https://www.debian.org/releases/jessie/amd64/apbs03.html.en


"Автоматическая установка Debian с помощью preseed"
Отправлено ACCA , 19-Фев-16 08:57 
Мануал недостаточен.

Сегодня хотел с одним preseed взлететь и поднять sshd, потом зайти по ssh, залить дополнение именно для этого хоста и продолжить debian-install.

В доках по preseed нет даже упоминания про debconf-set-selections. Спасибо парням с #debian, подсказали.


"Автоматическая установка Debian с помощью preseed"
Отправлено myhand , 19-Фев-16 14:45 
> В доках по preseed нет даже упоминания про debconf-set-selections.

Я что, простите, какие-то тайные "доки" процитировал?


"Автоматическая установка Debian с помощью preseed"
Отправлено Аноним , 16-Фев-16 00:37 
Осталось понять кому и зачем в 2016 году нужен образ сдрома.

"Автоматическая установка Debian с помощью preseed"
Отправлено Аноним , 16-Фев-16 03:21 
А как ещё установить ос на виртуалку под KVM например?

"Автоматическая установка Debian с помощью preseed"
Отправлено thresh , 16-Фев-16 19:12 
Руками уже давным давно никто не делает, как и не занимается странностями как это делает автор.

Откройте для себя https://www.packer.io/


"Автоматическая установка Debian с помощью preseed"
Отправлено Аноним , 17-Фев-16 09:45 
> Откройте для себя https://www.packer.io/

Спасибо, посмотрю.
Но честно говоря, я не доверяю всяким сторонним программам, сервисам и т.д.
Просто с точки зрения безопасности, кто их знает, что туда засунут. Может и не сами авторы, может их просто взломали.
Мой девиз: чем меньше деталей в инструменте тем он надёжнее.


"Автоматическая установка Debian с помощью preseed"
Отправлено myhand , 17-Фев-16 14:09 
В чем проблема просто класть ему preseed на флешке/дискете/SD/нужное подчеркнуть?

"Автоматическая установка Debian с помощью preseed"
Отправлено Аноним , 17-Фев-16 16:00 
Да в принципе не в чем. Вообще-то я писал про то, что iso образы мне актуальны для быстрого подъёма виртуальных серверов, без всяких заморочек и лишних телодвижений.
А автор написал как автоматизировать процесс установки ОС, за что ему спасибо, мне было интересно прочитать. Узнал кое-что новое для себя.



"Автоматическая установка Debian с помощью preseed"
Отправлено myhand , 17-Фев-16 16:44 
> Да в принципе не в чем. Вообще-то я писал про то, что
> iso образы мне актуальны для быстрого подъёма виртуальных серверов, без всяких
> заморочек и лишних телодвижений.

Так ковырять себе официальный iso, вместо того чтобы просто
указать инсталятору pressed.cfg (в вашем случае, наверно удобнее
всего с DHCP сервера файл указать) - разве не та самая, заморочка?

> Узнал кое-что новое для себя.

Вы все-таки почитывайте официальную документацию, хоть
изредка.  Узнаете куда больше нового, а главное - время на чтение
кулибиных не будет потрачено.


"Автоматическая установка Debian с помощью preseed"
Отправлено manofring , 17-Фев-16 20:43 
Недавно сдавал RHCSA, везде qemu, сделан явно руками, явно чуваками из РедХат...2-3 команды сделано, ниразу ни какой то пакет.Ыо, че вы тут трёте нам?

"Автоматическая установка Debian с помощью preseed"
Отправлено manofring , 17-Фев-16 20:40 
2author: Спасибо за статью, у самого руки недоходили до конца доделать самодостаточную исошку дебина, однозначно в закладки. Спасибо.

2myhand: Пы...ть не мешки ворочить, я чето не особео Вас заметил в афторах более менее нужной инфы, Тролим?


"Раздел полезных советов: Автоматическая установка Debian с п..."
Отправлено ACCA , 19-Фев-16 09:01 
Пароль нужно генерировать mkpasswd -m sha-512. А то выебут.

"Автоматическая установка Debian с помощью preseed"
Отправлено поле Name , 19-Фев-16 20:36 
> Записать образ на флешку можно, например, вот так:
>   cat debian-preseed.iso /dev/sdX

Разве так запишется?
Тут или ">" надо, или другую команду, типа dd:
    dd if=debian-preseed.iso of=/dev/sdX bs=1M


"Автоматическая установка Debian с помощью preseed"
Отправлено Аноним , 21-Фев-16 22:05 
откройте для себя debootstrap

"Автоматическая установка Debian с помощью preseed"
Отправлено Не представившийся , 01-Апр-16 17:03 
Говорит "Failed to process the preconfiguration file"...

"Автоматическая установка Debian с помощью preseed"
Отправлено Дмитрий , 19-Авг-16 12:52 
isohybrid -o
После параметра -о нужно указать номер раздела, иначе:

isohybrid: invalid offset "name.iso"