Установка ОС из iso образа
Надёжность, доступная каждому

Установка ОС из iso образа

Установку ОС из iso образа можно произвести с помощью загрузчика grub и веб консоли. Для примера будет использоваться образ Ubuntu server 16.10.

1) Устанавливаем сервер с Ubuntu 16.04.
2) Увеличиваем объём оперативной памяти на размер iso образа.
3) Сохраняем содержимое следующих файлов и директорий.

 mkdir /backup
 cp -r /etc/udev/rules.d /backup
 cp /etc/network/interfaces /backup
 cp /etc/resolv.conf /backup
 cat /proc/cmdline > /backup/cmdline.txt

4) Загружаем образ в корень ФС.

 wget http://releases.ubuntu.com/16.10/ubuntu-16.10-server-amd64.iso -O /image.iso

5) Монтируем образ и находим расположение исполняемого файла ядра и образа initrd.

mkdir /mnt/iso_image && mount -o loop /image.iso /mnt/iso_image

find /mnt/iso_image/  -iname "*vmlinuz*"
 /mnt/iso_image/install/vmlinuz

find /mnt/iso_image/  -iname "*initrd*"
 /mnt/iso_image/install/initrd.gz

6) Добавляем в конец /etc/grub.d/40_custom

menuentry "Ubuntu Server 16.10" {
 set root=(hd0,2)
 loopback loop /image.iso
 linux (loop)/install/vmlinuz iso-scan/filename=/image.iso console=ttyS0,9600n8 noeject noprompt --
 initrd (loop)/install/initrd.gz
 }

и выполняем

update-grub

7) Перезагружаем сервер и в меню загрузчика (в веб консоли) выбираем пункт Ubuntu Server 16.10.

8) Следуем инструкциям инсталятора до момента подключения cdrom.

9) На вопрос Retry mount the CD-ROM отвечаем No -> Continue -> Execute a shell -> Continue.

10) Создаём рамдиск для хранения образа.

 mkdir /mnt/ramdisk && mount -t tmpfs -o size=700m tmpfs /mnt/ramdisk

11) Монтируем корневую ФС базового образа (Ubuntu 16.04) и копируем image.iso на рамдиск.

 mkdir /mnt/old_fs && mount /dev/vda2 /mnt/old_fs
 cp /mnt/old_fs/image.iso /mnt/ramdisk
#Копируем сохраненные ранее файлы конфигурации
cp -r /mnt/old_fs/backup /mnt/ramdisk

12) Монтируем image.iso в /cdrom.

 mount -o loop -t iso9660 /mnt/ramdisk/image.iso /cdrom

13) Отмонтируем /mnt/old_fs.

 umount /mnt/old_fs

Выходим из шела (exit) и выбираем пункт Detect and mount CD-ROM.

14) Далее установка может быть произведена обычным образом до момента вывода сообщения о необходимости конфигурирования пакетного менеджера.

Для сохранения возможности автоматического увеличения раздела необходимо повторить разметку установленной ОС

Затем необходимо установить grub (т.е. выбрать пункт Install the GRUB boot loader on a hard disk).

На данном этапе необходимо выбрать Go Back, затем Execute a shell -> Continue:

15) На данном этапе необходимо настроить передачу установленному ядру параметров net.ifnames=0 biosdevname=0 console=ttyS0,9600n8. Для этого необходимо:

15.1)

mkdir /mnt/new_root && mount /dev/vda1 /mnt/new_root
cp -r /mnt/ramdisk/backup /mnt/new_root

15.2)

 mount -o bind /proc  /mnt/new_root/proc
 mount -o bind /sys  /mnt/new_root/sys
 mount -o bind /dev  /mnt/new_root/dev
 chroot /mnt/new_root

15.3) В переменную GRUB_CMDLINE_LINUX файла /etc/default/grub необходимо добавить параметры net.ifnames=0 biosdevname=0 console=ttyS0,9600n8:

 GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0 console=ttyS0,9600n8"

15.4)

 update-grub
 cp /backup/udev/rules.d/* /etc/udev/rules.d
 cp /backup/interfaces /etc/network/interfaces
 exit
 umount /mnt/new_root/proc
 umount /mnt/new_root/sys
 umount /mnt/new_root/dev
 reboot

16) Логинимся через веб-консоль и выполняем следующие команды:

 cp /backup/resolv.conf /etc/resolv.conf
 echo "deb http://archive.ubuntu.com/ubuntu/ yakkety main" > /etc/apt/sources.list
 apt-get update && apt-get install openssh-server && service ssh start

17) Подключаемся к серверу по ssh и устанавливаем flops-mon-agent (отвечает за сбор статистики, изменение ключей и т.п.)

 wget http://repo.flops.ru/ubuntu/pool/free/f/flops-mon-agent/flops-mon-agent_1.2.2~2_i386.deb
 apt-get install libglib2.0-0
 dpkg -i flops-mon-agent_1.2.2~2_i386.deb
 service flops-mon-agent start