CentOS 8 наконец-то увидела свет и, хотим мы того или нет, в ближайшем будущем приверженцам корпоративной операционной системы из сообщества придется с ней подружиться.
Решив протестировать восьмерку в натуре, я обнаружил, что мои хостинг-провайдеры не спешат создавать образ виртуального сервера на CentOS 8. А идея «своего ISO» и «VNC-консоли» не воодушевила доверие из-за скромных характеристик VDS и прожорливости современной анаконды.
Оставалось только скопировать развернутый образ новой CentOS прямо на жесткий диск VDS, загрузив сервер «по сети».
Метод не блещет новизной, но подробной и полной инструкции по его реализации, например, мне найти не удалось.
Поэтому мне хотелось быстро восполнить этот пробел и рассказать об установке CentOS 8 на этот VDS:
KVM, 256 МБ ОЗУ, 2 ГБ жесткого диска, без консоли и ISO
Кстати, таким способом можно установить или переустановить не только CentOS и не обязательно в виртуальной среде.
0. Характеристики VDS
Как сказано в начале статьи:
Кстати, хостинг-провайдеры сейчас предлагают VDS с более мощными характеристиками в своих самых бюджетных тарифах.
Пусть предустановленной операционной системой будет CentOS 7. Думаю, что это сейчас возможно практически со всеми провайдерами виртуализации.
1. Три заветных файла Прежде всего, вам понадобится "донор" — дополнительный сервер с установленной CentOS 8. Хотя это и не важно, если технические характеристики донора совпадают с VDS, то мороки с настройкой будет гораздо меньше.
Объем памяти и размер диска-донора не важны, главное – установить на него операционную систему.
Настоятельно советую разбить диск-донор на один корневой раздел.
Так как в данном случае стоит KVM VDS, донор можно пропечь дома - на любом дистрибутиве Linux с libvirt .
Я предпочитаю дополнительную минимальную начальную настройку, которая будет существенным подспорьем в условиях поставленной задачи.
В Эта статья Я рассказал о стандартном способе создания крошечного образа CentOS. Под спойлером соответствующий файл кикстарта и способы его использования: CentOS 8 крошечный
Вы можете разместить этот файл на любом доступном веб-ресурсе и указать его в начале установки:install text url --url=" https://mirror.yandex.ru/centos/8/BaseOS/x86_64/os/ " eula --agreed firstboot --disable keyboard --vckeymap=us --xlayouts='us' lang en_US.UTF-8 timezone Africa/Abidjan auth --enableshadow --passalgo=sha512 rootpw --plaintext very-strong-password-see-below #ignoredisk --only-use=vda zerombr bootloader --location=mbr clearpart --all --initlabel part / --fstype="ext4" --size=1 --grow network --bootproto=dhcp --hostname=localhost --onboot=on --activate #reboot poweroff %packages --nocore dnf NetworkManager openssh-server %end %addon com_redhat_kdump --disable %end
Хочу обратить ваше внимание на пароль root: настоятельно рекомендую сделать его максимально сложным, чтобы на последующих этапах у вас не возникло проблем с хулиганами, сканирующими Интернет в поисках развлечений.
После изготовления донора нужно собрать все файлы с его диска в один архив, скажем, centos8.tgz .
Сделать это можно разными способами: подключить диск-донор к другой виртуальной машине, смонтировать его в гипервизор или запаковать все его файлы в сам донор, исключая виртуальные каталоги (/dev, /proc и т.д.) Далее донору понадобятся еще два файла: ядро ( вмлинуз ) и модифицированный прямой привод ( initrd ).
Ядро можно взять из донорского каталога /boot (vmlinuz-что угодно), а рамдрайв нужно сделать специальным, включая возможность загрузки по сети с NFS-сервера.
Для этого на работающей операционной системе-доноре необходимо запустить: # dnf install dracut-network nfs-utils
# echo 'add_dracutmodules+="nfs"' >> /etc/dracut.conf
# dracut -f /initrd
и берем необходимый initrd из корня диска.
В результате есть три файла, которые понадобятся в дальнейшем:
- centos8.tgz - архив со всеми файлами установленной CentOS 8
- initrd - временная файловая система с поддержкой NFS
- вмлинуз - ядро ОС
# ls -l | awk '{print $9,$5}'
centos8.tgz 320712609
initrd 21916741
vmlinuz 7876856
Донор теперь уже не нужен, хотя может пригодиться (см.
ниже) 2. NFS-сервер Для загрузки VDS по сети без использования локального диска вам понадобится сервер с ресурсом NFS. Такой сервер может быть каким угодно, главное — его доступность в сети с IP-адреса VDS. Можно попробовать домашнее оборудование (с возможной «проброской портов на роутере») или любой другой VDS, взятый, например, на тестирование.
Наконец, используйте «донор», если можете на нем NFS (шутка).
После установки CentOS 8 сервер NFS и донор больше не понадобятся.
Ээкспортированный ресурс NFS должен содержать файл в корне centos8.tgz и его распакованное содержимое.
Вот краткая инструкция изготовления на примере CentOS 7: # mkdir /nfsroot
# cp .
/centos8.tgz /nfsroot
# tar xzf /nfsroot/centos8.tgz -C /nfsroot
# yum install nfs-utils
# systemctl enable rpcbind nfs-server
# echo '/nfsroot 100.100.100.100/32(rw,sync,no_root_squash,no_all_squash)'>/etc/exports
# systemctl restart rpcbind nfs-server
100.100.100.100 — это, конечно же, IP-адрес VDS с будущей CentOS 8.
3. Загрузка VDS «по сети» (NFSroot)
Первым делом необходимо скопировать файлы рамдрайва в корень VDS ( initrd ) и ядра ( вмлинуз ), полученное на первом этапе.
Затем настройте GRUB: /etc/grub.d/40_custom #!/bin/sh
exec tail -n +3 $0
# 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 "NFSRoot" {
linux /vmlinuz root=/dev/nfs rw nfsroot=200.200.200.200:/nfsroot \
ip=100.100.100.100::100.100.100.1:255.255.255.0:::off
initrd /initrd
}
200.200.200.200 — IP-адрес NFS-сервера.
/etc/default/grub .
.
.
GRUB_TIMEOUT=0 .
.
.
GRUB_DEFAULT="NFSRoot" .
.
.
И перезагружаем VDS: # grub2-mkconfig --output=/boot/grub2/grub.cfg
# reboot
Если все пройдет без ошибок, VDS загрузит донорскую CentOS 8, а локальный диск полностью размонтируется:
4. «Установка» CentOS 8.
Теперь вы можете переразбить и отформатировать локальный VDS-диск, скопировать на него файлы ОС, установить загрузчик и настроить сеть.
Краткое описание необходимых действий: # dnf install parted tar
# parted /dev/vda unit s print free
Model: Virtio Block Device (virtblk)
Disk /dev/vda: 4194304s
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
63s 2047s 1985s Free Space
1 2048s 526335s 524288s primary linux-swap(v1)
2 526336s 4194303s 3667968s primary xfs boot
# dd if=/dev/zero of=/dev/vda count=3000
На крошечных VDS я предпочитаю такую конфигурацию дисков: # parted /dev/vda unit s print free
Model: Virtio Block Device (virtblk)
Disk /dev/vda: 4194304s
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
2s 2047s 2046s Free Space
1 2048s 4194303s 4192256s primary boot
Форматирование, удаление брони и установка значения UUID «донор»: # mkfs.ext4 /dev/vda1
# cat /etc/fstab | grep UUID
UUID=1f944e86-c590-4af7-b651-3c1783c15d79 / ext4 defaults 1 1
# tune2fs -m 0 -U 1f944e86-c590-4af7-b651-3c1783c15d79 /dev/vda1
tune2fs 1.44.3 (10-July-2018)
Setting reserved blocks percentage to 0% (0 blocks)
Setting UUID on a checksummed filesystem could take some time.
Proceed anyway (or wait 5 seconds to proceed) ? (y,N) y
Копирование файлов операционной системы и установка загрузчика: # mount /dev/vda1 /mnt
# tar xzf /centos8.tgz -C /mnt
# grub2-install --boot-directory=/mnt/boot /dev/vda
Installing for i386-pc platform.
Installation finished. No error reported.
Потому что Сетевой менеджер понимает наследие , то вы можете создать соответствующий файл ifcfg для настройки сети.
Имя интерфейса можно найти: # ls /sys/class/net/
enp1s0 lo
# cat > /etc/sysconfig/network-scripts/ifcfg-enp1s0 << EOF
> DEVICE=enp1s0
> NAME=enp1s0
> TYPE=Ethernet
> ONBOOT=y
> BOOTPROTO=none
> IPADDR=100.100.100.100
> NETMASK=255.255.255.0
> GATEWAY=100.100.100.1
> EOF
Вот и все, можно перезагружать VDS с его локального диска.
5. Вывод
VDS с установленной минимальной версией CentOS 8:
Полезные ссылки: www.kernel.org/doc/Documentation/filesystems/nfs/nfsroot.txt access.redhat.com/документация
Теги: #Системное администрирование #Настройка Linux #centos #nfsroot
-
Карцевский Сергей Иосифович.
19 Oct, 24 -
Генератор Неслучайных Чисел
19 Oct, 24 -
Внешнее Соединение В Linq
19 Oct, 24 -
Поиск По Сайту - Сообщения Из Ленты
19 Oct, 24 -
Моя Гибкая Светящаяся Клавиатура
19 Oct, 24 -
Я Поставил Php На Iphone
19 Oct, 24