Удаленная переустановка CentOS 7 по сети без CD-ROM, носителей USB и ISO образов

 25 декабря 2016      
 GNU Linux - CentOS / Debian / Программное обеспечение      
 Метки:        
 комментария 4      
 36

Для всех читателей блога представляю подробную инструкцию как удаленно переустановить CentOS 7, когда из всех подручных средств есть только доступ к серверу по SSH. В сети достаточно рекомендаций по этому поводу, но к сожалению ни одна из них не является самодостаточным руководством.

Ранее я уже описывал алгоритм удаленной переустановки CentOS 6 https://moonback.ru/page/centos-remote-install.

Условия для успешной установки CentOS 7

Должны быть выполнены следующие условия:

  • Сервер на базе CentOS 7;
  • У сервера должен быть доступ в интернет, как минимум к репозиториям CentOS;
  • У вас должен быть доступ к серверу по SSH протоколу (я использую SSH-клиент PuTTY) с правами привилегированного пользователя ROOT;
  • Вы должны знать сетевые настройки сервера: IP адреса сервера, шлюза, DNS и маску сети;
  • На рабочем компьютере должен быть установлен VNC клиент (UltraVNC, TightVNC).

Инструкция была протестирована на реальном виртуальном сервере в интернете и не содержит ошибок.

Необходимые файлы CentOS 7

Первое, что нам надо сделать, это скачать файлы ядра и RAM-диска нужного нам дистрибутива. Для этого подключимся к серверу по SSH и выполним следующее:

# cd /boot
# wget http://mirror.centos.org/centos/7/os/x86_64/isolinux/vmlinuz -O vmlinuz-7
# wget http://mirror.centos.org/centos/7/os/x86_64/isolinux/initrd.img -O initrd-7.img

Эта операция может растянуться на 5..10 минут, так как суммарный размер файлов превышает 40 МБ.

Настройка GRUB2

В CentOS 7 используется GRUB2 и правила хорошего тона говорят о том, что все опции по загрузке надо вносить в файл /etc/grub.d/40_custom в соответствии с новым синтаксисом, не забывая при этом, что файл должен заканчиваться пустой строкой и нумерация разделов жесткого диска сместилась на единицу — первый раздел теперь 1, а не 0.

Но я поступил иначе… сразу редактируем файл /boot/grub2/grub.cfg, ищем первый блок в секции ### BEGIN /etc/grub.d/10_linux ### начинающийся с menuentry ‘CentOS Linux…. У меня он выглядел так:

menuentry 'CentOS Linux (3.10.0-327.36.3.el7.x86_64) 7 (Core)' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-3.10.0-327.el7.x86_64-advanced-66f6066d-cca0-4062-a954-3f66545e66d2' {
        load_video
        set gfxpayload=keep
        insmod gzio
        insmod part_msdos
        insmod ext2
        set root='hd0,msdos1'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 --hint='hd0,msdos1'  66f6066d-cca0-4062-a954-3f66545e66d2
        else
          search --no-floppy --fs-uuid --set=root 66f6066d-cca0-4062-a954-3f66545e66d2
        fi
        linux16 /boot/vmlinuz-3.10.0-327.36.3.el7.x86_64 root=UUID=66f6066d-cca0-4062-a954-3f66545e66d2 ro crashkernel=auto rhgb quiet LANG=en_US.UTF-8
        initrd16 /boot/initramfs-3.10.0-327.36.3.el7.x86_64.img
}

Копируем этот блок в секцию ### BEGIN /etc/grub.d/40_custom ###
вставляя между строк:
# the ‘exec tail’ line above.
и
### END /etc/grub.d/40_custom ###

Затем, меняем название на NetInstall и редактируем последние строки. Должно получиться следующее:

### BEGIN /etc/grub.d/40_custom ###
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.

menuentry 'NetInstall' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-3.10.0-327.el7.x86_64-advanced-66f6066d-cca0-4062-a954-3f66545e66d2' {
        load_video
        set gfxpayload=keep
        insmod gzio
        insmod part_msdos
        insmod ext2
        set root='hd0,msdos1'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 --hint='hd0,msdos1'  66f6066d-cca0-4062-a954-3f66545e66d2
        else
          search --no-floppy --fs-uuid --set=root 66f6066d-cca0-4062-a954-3f66545e66d2
        fi
        linux16 /boot/vmlinuz-7 repo=http://mirror.centos.org/centos/7/os/x86_64/ vnc vncpassword=123456 ip=193.170.128.128 netmask=255.255.252.0 gateway=193.170.128.1 nameserver=193.170.128.2 noselinux headless xfs panic=120
        initrd16 /boot/initrd-7.img
}
### END /etc/grub.d/40_custom ###

небольшие пояснения:

  • vncpassword=123456 — пароль для подключения с помощью VNC клиента (используйте другой);
  • ip=193.170.128.128 — адрес вашего сервера;
  • netmask=255.255.252.0 — маска сети;
  • gateway=193.170.128.1 — адрес шлюза по-умолчанию;
  • nameserver=193.170.128.2 — DNS сервер (думаю можно использовать DNS от Google 8.8.8.8) .

Подготовка к перезагрузке

Укажем серверу, что при следующей перезагрузке он должен использовать наш пункт меню:

# grub2-reboot NetInstall

Перезагрузка и установка CentOS 7

Перезагружаем сервер и идем пить кофе…

# reboot

…так как объем загружаемых данных из репозитория CentOS составляет около 280 МБ, то не спешим и лишь минут через 15..20 пробуем подключиться VNC клиентом (UltraVNC, TightVNC) к нашему серверу по адресу: 193.170.128.128:1
centos-7-remote-install-1
вводим пароль, что указали в конфигурации меню загрузки…
centos-7-remote-install-2
…и выполняем установку в обычном режиме.
centos-7-remote-install-3
Но это уже совсем другая история…
centos-7-remote-install-4

Благодарности

При написании статьи были использованы следующие источники:

  1. https://lowendtalk.com/discussion/78509/tutorial-install-centos-7-remotely-through-vnc
  2. https://habrahabr.ru/post/207584/

Обсуждение: 4 комментария

  1. Andryu:

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

    Ответить
    1. Andryu, иногда, чтобы избавиться от «мусора» в операционной системе гораздо проще ее установить заново.

      Ответить
      1. Никто:

        Например, от какого «мусора» в Centos7 Вы хотели избавиться? Может имело смысл найти и почистить «мусор» в операционной системе, а не использовать Windows подход — переустановку? Если речь шла о неконсистентности, о нарушении целостности операционной системы, то может лучше применить командочки yum reinstall, yum check, rpm -Va, yum distribution-synchronization? Не ломайте аптайм своих серверов и не портите репутацию RedHat переустановкой.

        Ответить
        1. В статье рассказано как это сделать, а зачем каждый решает для себя сам.

          Ответить

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Нажимая кнопку "Отправить" я даю свое согласие на обработку введенной мной персональной информации в соответствии с Федеральным Законом от 27.07.2006 №152-ФЗ "О персональных данных", на условиях и для целей определенных политикой конфиденциальности.

Технический блог © 2017
SQL - 74 | 0,229 сек. | 10.45 МБ
Политика конфиденциальности