LINUX.ORG.RU

Автоматизация устаноки grub-pc

 ,


1

2

Необходимо часто переустанавливать linux на устройство iRU Ergo 101. За основу была взята вот эта статья: http://habr.ru/p/147522/

Я автоматизировал сценарий установки linux почти полностью, только установка grub-pc остаётся интерактивной. Забивание базы debconf ответами не срабатывает; писал в скрипте что-то в роде этого:

DEBIAN_FRONTEND=noninteractive apt-get -y install grub-pc
echo "grub-pc grub-pc/kopt_extracted boolean true" | debconf-set-selections
echo "grub-pc grub2/linux_cmdline string" | debconf-set-selections
echo "grub-pc grub-pc/install_devices multiselect /dev/sda" | debconf-set-selections
echo "grub-pc grub-pc/install_devices_failed_upgrade boolean true" | debconf-set-selections
echo "grub-pc grub-pc/install_devices_disks_changed multiselect /dev/sda" | debconf-set-selections
dpkg-reconfigure -f noninteractive grub-pc
Пробовал и другие конструкции с бОльшим количеством ответов.

Пока что каждый раз появляется окно, в котором нужно нажать кнопку [OK] и за ним второе, в котором нужно выбрать место установки. Как правильно избежать этих вопросов при установке grub-pc, если место установки предопределено в /dev/sda?

★★

Ман разупорин; ман бэкап.

anonymous ()

Вариант перехода на дистрибутив без systemd, где переустановки не требуются, не рассматривается?

Lavos ★★★★★ ()
Ответ на: комментарий от Lavos

>где переустановки не требуются

К сожалению, на данный момент мне необходима именно возможность переустановки ОС из debootstrap, например, смена релиза с lucid на xenial в автоматическом режиме.

Возможно, это условие обеспечено тем, что я не работал с системами без systemd и просто не понимаю о чём была речь...

P.S.

На устройстве должны быть офис и рабочий скайп.

zzdnx ★★ ()
Последнее исправление: zzdnx (всего исправлений: 1)
Ответ на: комментарий от man_of_motley

Решено, хоть и криво.

DEBIAN_FRONTEND=noninteractive apt-get -y install grub-pc
debconf-set-selections <<< "
grub-pc grub-pc/kopt_extracted boolean true
grub-pc grub2/linux_cmdline string
grub-pc grub-pc/install_devices multiselect /dev/sda
grub-pc grub-pc/install_devices_failed_upgrade boolean true
grub-pc grub-pc/install_devices_disks_changed multiselect /dev/sda
" # end debconf-set-selections
grub-install /dev/sda
dpkg-reconfigure -f noninteractive grub-pc
zzdnx ★★ ()
Ответ на: Решено, хоть и криво. от zzdnx

У меня на ubuntu 14.04 работает так:

debconf-set-selections <<< "
grub-pc grub2/device_map_regenerated note
grub-pc grub2/kfreebsd_cmdline_default string quiet splash
grub-pc grub-pc/install_devices multiselect /dev/sda
grub-pc grub-pc/install_devices_empty boolean false
grub-pc grub-pc/install_devices_failed_upgrade boolean true
grub-pc grub-pc/postrm_purge_boot_grub boolean false
grub-pc grub2/linux_cmdline_default string
grub-pc grub-pc/timeout string 10
grub-pc grub-pc/install_devices_disks_changed multiselect
grub-pc grub-pc/mixed_legacy_and_grub2 boolean true
grub-pc grub-pc/chainload_from_menu.lst boolean true
grub-pc grub-pc/kopt_extracted boolean false
grub-pc grub2/linux_cmdline string
grub-pc grub2/kfreebsd_cmdline string
grub-pc grub-pc/hidden_timeout boolean false
grub-pc grub-pc/install_devices_failed boolean false
"
aptitude install -y grub-pc
Разумеется, пакеты, относящиеся к ядру, уже установлены, если нет, то последняя команда будет:
aptitude install -y linux-image-generic grub-pc

rumgot ★★★★★ ()
Ответ на: комментарий от rumgot

Прошу взять на заметку

Проверял на нескольких машинах (ОС убунту и минт).

Если тестировать приводимый выше код на рабочей системе (где GRUB и ядра уже установлены), то GRUB ругаться не будет.

А если тестировать в ChRoot-окружении, то при установке GRUB обязательно запустит grub-install, которому пофиг на ответы из DebConf...

Способ ПОЛНОЙ автоматизации:

# Принудительное отключение интерактива на время установки пакета:
DEBIAN_FRONTEND=noninteractive apt-get -y install grub-pc
# Установка загрузчика не происходит автоматически, поэтому ставим его сейчас:
grub-install /dev/sda
# Ниже подхватываются ответы из debconf, но они не провоцируют установку загрузчика.
dpkg-reconfigure -f noninteractive grub-pc

zzdnx ★★ ()
Последнее исправление: zzdnx (всего исправлений: 3)
Ответ на: Прошу взять на заметку от zzdnx

Я делал так:
- Загрузился с liveCd
- форматнул раздел, подмонтировал
- установил минимальную систему с помощью debootstrap в подмонтированный каталог(при этом grub еще не установлен)
- сделал chroot в данный каталог(нужно также позаботиться о монтировании каталогов sys, dev, proc)
- и теперь выполнил действия из предыдущего моего поста.
Проверял в вируалбоксе несколько раз. Все устанвилось без запросов.

rumgot ★★★★★ ()
Последнее исправление: rumgot (всего исправлений: 1)
Ответ на: комментарий от rumgot

Я пробовал Trusty и Xenial (14.04 LTS и 16.04 LTS)

В обоих случаях после установки базовой системы при установке пакета grub-pc стартовал grub-install со своей менюшкой.

Я тестировал не на VBox, а на реальном железе - iRU Ergo 101. Нужно будет самому попробовать на VBox...

zzdnx ★★ ()
Ответ на: Я пробовал Trusty и Xenial (14.04 LTS и 16.04 LTS) от zzdnx
# !!! Это не скрипт для выполнения,
# а последовательность команд для
# выполнения вручную !!!
#
# Проверил на реальном железе -
# ВСЕ РАБОТАЕТ, зпросов не отображается.
# Вот последовательность действий:
# 1) Загружаюсь с liveCD (linux mint 17 x64
# (та же ubuntu 14.04))
# (тут небольшая заметка: я установил в live системе
# openssh-server и все дальнейшие действия выполняю по ssh с другого ПК);
# 2) Разбиваю жесткий и создаю один раздел на root(ext4),
# вот схема разбивки(fdisk -l):
# Disk /dev/sda: 5368 MB, 5368709120 bytes
# 181 heads, 40 sectors/track, 1448 cylinders, total 10485760 sectors
# Units = sectors of 1 * 512 = 512 bytes
# Sector size (logical/physical): 512 bytes / 512 bytes
# I/O size (minimum/optimal): 512 bytes / 512 bytes
# Disk identifier: 0x22c2f136
# Device Boot      Start   End        Blocks   Id  System
# /dev/sda1        2048    10485759   5241856  83  Linux

# 3) Устанавливаю debootstrap в live системе:
aptitude install debootstrap

# 4) Монтирую созданный раздел в /mnt и
# выполняю debootstrap:
debootstrap --arch=amd64 trusty /mnt http://archive.ubuntu.com/ubuntu/

# 5) Далее монтирование /dev и chroot:
mount --bind /dev /mnt/dev
chroot /mnt /bin/bash

# 6) Смонтируем требуемые каталоги:
mount none -t proc /proc
mount none -t sysfs /sys
mount none -t devpts /dev/pts

# 7) Выполним минимальную настройку окружения:
export HOME=/root
export LC_ALL=C

# 8) Заполним fstab(и не забудем про
# дополнительный перенос строки в конце):
echo -e "/dev/sda1 / ext4 errors=remount-ro 0 1\n" > /etc/fstab

# 9) Заполним sources.list:
echo "deb http://archive.ubuntu.com/ubuntu trusty main restricted universe multiverse" > /etc/apt/sources.list
echo "deb http://archive.ubuntu.com/ubuntu trusty-security main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb http://archive.ubuntu.com/ubuntu trusty-updates main restricted universe multiverse" >> /etc/apt/sources.list

# 10) Обновим индексы и установим aptitude (он мне больше нравится):
apt-get update && apt-get -y install aptitude

# 11) Теперь ответы для пакета grub-pc:
debconf-set-selections <<< "grub-pc grub2/device_map_regenerated note"
debconf-set-selections <<< "grub-pc grub2/kfreebsd_cmdline_default string"
debconf-set-selections <<< "grub-pc grub-pc/install_devices multiselect /dev/sda"
debconf-set-selections <<< "grub-pc grub-pc/install_devices_empty boolean false"
debconf-set-selections <<< "grub-pc grub-pc/install_devices_failed_upgrade boolean true"
debconf-set-selections <<< "grub-pc grub-pc/postrm_purge_boot_grub boolean false"
debconf-set-selections <<< "grub-pc grub2/linux_cmdline_default string"
debconf-set-selections <<< "grub-pc grub-pc/timeout string 3"
debconf-set-selections <<< "grub-pc grub-pc/install_devices_disks_changed multiselect"
debconf-set-selections <<< "grub-pc grub-pc/mixed_legacy_and_grub2 boolean true"
debconf-set-selections <<< "grub-pc grub-pc/chainload_from_menu.lst boolean true"
debconf-set-selections <<< "grub-pc grub-pc/kopt_extracted boolean false"
debconf-set-selections <<< "grub-pc grub2/linux_cmdline string"
debconf-set-selections <<< "grub-pc grub2/kfreebsd_cmdline string"
debconf-set-selections <<< "grub-pc grub-pc/hidden_timeout boolean false"
debconf-set-selections <<< "grub-pc grub-pc/install_devices_failed boolean false"

# 12) И собственно установка:
aptitude install -y ubuntu-standard linux-image-generic grub-pc

# 13) Отмонтирование каталогов, выход, перезагрузка:
# параметр -l (lazy unmount) нужен, т.к. у меня было,
# что /sys был занят, а выяснять чем, не было желания
umount -l /dev/pts
umount -l /sys
umount -l /proc
exit
umount /mnt/dev
umount /mnt
reboot

# 14) Выполнил все в точности, все работает
# как надо, НИ ОДНОГО ЗАПРОСА ВЫВЕДЕНО НЕ БЫЛО,
# система загружается нормально.
rumgot ★★★★★ ()
Последнее исправление: rumgot (всего исправлений: 1)
Ответ на: комментарий от rumgot

Не пойму... к чему столько манипуляций.....

Тоже самое можно сделать одной командой. Загружаюсь с liveCD «debian_64.»

aptitude install grub-pc // Открываем терминал,установили.
// Установка,устанавливаем систему
//система загружается нормально.)

Dbeed ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.