Удаленная переустановка CentOS 7 по сети без CD-ROM, носителей USB и ISO образов
Раздел(ы): GNU Linux - CentOS / Debian, Программное обеспечение
Просмотры: 8093
Комментарии: 7
Для всех читателей блога представляю подробную инструкцию как удаленно переустановить 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 необходим сервер с Centos 7. Супер условие просто, зачем тогда устанавливать Centos 7 если уже есть.
Andryu, иногда, чтобы избавиться от «мусора» в операционной системе гораздо проще ее установить заново.
Например, от какого «мусора» в Centos7 Вы хотели избавиться? Может имело смысл найти и почистить «мусор» в операционной системе, а не использовать Windows подход — переустановку? Если речь шла о неконсистентности, о нарушении целостности операционной системы, то может лучше применить командочки yum reinstall, yum check, rpm -Va, yum distribution-synchronization? Не ломайте аптайм своих серверов и не портите репутацию RedHat переустановкой.
В статье рассказано как это сделать, а зачем каждый решает для себя сам.
не работает
Надо поправить строчки
linux16 /boot/vmlinuz-7
initrd16 /boot/initrd-7.img
На
linux16 /vmlinuz-7
initrd16 /initrd-7.img
Спасибо тебе, добрый человек!