O CentOS 8 finalmente viu a luz do dia, gostemos ou não, em um futuro próximo, os seguidores do sistema operacional corporativo da comunidade terão que fazer amizade com ele.
Tendo decidido experimentar os oito "selvagens", descobri que meus provedores de hospedagem não tinham pressa em criar uma imagem de servidor virtual no CentOS 8. E a idéia com um "ISO nativo" e um "console VNC" não inspirava confiança devido às características modestas do VDS e da gula anaconda moderna (anaconda).
Restava copiar a imagem implantada do novo CentOS diretamente no disco rígido do VDS, baixando o servidor “pela rede”. O método não brilha com novidade; no entanto, por exemplo, não consegui encontrar instruções detalhadas e completas para sua implementação. Portanto, eu queria preencher rapidamente essa lacuna e falar sobre a instalação do CentOS 8 em um VDS:
KVM, 256 MB de RAM, HD de 2 GB, sem console e ISO

A propósito, você pode instalar ou reinstalar não apenas o CentOS e não necessariamente em um ambiente virtual.
0. Características do VDS
Como foi dito no começo do artigo:

A propósito, os provedores de hospedagem agora com suas tarifas mais orçamentadas oferecem ao VDS recursos mais poderosos. Deixe o CentOS 7. ser o sistema operacional pré-instalado. Acho que agora é possível para quase todos os provedores de virtualização.
1. Três arquivos valiosos
Antes de tudo, você precisa de um
“doador” - um servidor adicional com o CentOS 8. Embora isso não seja importante, mas se as características técnicas do doador corresponderem às do VDS, haverá muito menos problemas com a instalação.
A quantidade de memória e o tamanho do disco doador não são importantes, o principal é instalar um sistema operacional nele. Aconselho categoricamente a marcação do disco doador com uma partição raiz.
Como neste caso existe o KVM VDS, o doador pode ser preparado em casa - em qualquer distribuição Linux com
libvirt . Prefiro a configuração inicial mínima extra, que no contexto da tarefa será uma ajuda significativa.
Neste artigo, falei sobre a maneira padrão de criar uma pequena imagem do CentOS. Sob o spoiler, o arquivo kickstart correspondente e como usá-lo:
CentOS 8 Tinyinstall 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
Você pode colocar esse arquivo em qualquer recurso da Web disponível e especificá-lo no início da instalação:

Estou prestando atenção à senha de root: recomendo fortemente que você torne difícil o arqui para não ter problemas com hooligans que examinam a Internet nas próximas etapas em busca de entretenimento.
Depois de fazer o doador, você precisa levar todos os arquivos do disco para um único arquivo, por exemplo,
centos8.tgz . Você pode fazer isso de diferentes maneiras: conecte o disco doador a outra máquina virtual, monte-o no hipervisor ou empacote todos os seus arquivos no próprio doador, excluindo diretórios virtuais (/ dev, / proc, etc.)
Além disso, serão necessários mais dois arquivos do doador: o kernel (
vmlinuz ) e o ramdrive modificado (
initrd ). O kernel pode ser obtido no diretório / boot do doador (vmlinuz-something-there), e o ramdrive precisa ser especializado, incluindo a capacidade de inicializar pela rede a partir do servidor NFS. Para fazer isso, em um sistema operacional de doador, você precisa:
# dnf install dracut-network nfs-utils # echo 'add_dracutmodules+="nfs"' >> /etc/dracut.conf # dracut -f /initrd
e pegue o initrd necessário na raiz do disco.
Como resultado, três arquivos serão necessários no futuro:
- centos8.tgz - arquivo com todos os arquivos do CentOS 8 instalado
- initrd - um sistema de arquivos temporário com suporte a NFS
- vmlinuz - kernel do SO
# ls -l | awk '{print $9,$5}' centos8.tgz 320712609 initrd 21916741 vmlinuz 7876856
O doador não é mais necessário, embora possa ser útil (veja abaixo)
2. servidor NFS
Para baixar o VDS em uma rede sem usar um disco local, você precisará de um servidor com um recurso NFS. Esse servidor pode ser qualquer coisa, o principal é a disponibilidade da rede a partir do endereço IP do VDS. Você pode experimentar o equipamento doméstico (com um possível "encaminhamento de porta no roteador") ou qualquer outro VDS, feito, por exemplo, para um teste. Por fim, use o "doador" se você puder gerenciá-lo com o NFS (apenas brincando). Após a instalação do CentOS 8, o servidor NFS, como o doador, não será mais necessário.
O recurso NFS exportado deve conter o arquivo
centos8.tgz e seu conteúdo descompactado em sua raiz. Aqui está um guia rápido de produção usando o CentOS 7 como exemplo:
# 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 é, obviamente, o endereço IP do VDS no futuro CentOS 8.
3. Faça o download do VDS "pela rede" (NFSroot)
Primeiro, você precisa copiar os
arquivos ramdrive (
initrd ) e kernel (
vmlinuz ) obtidos na primeira etapa para a raiz do VDS. Em seguida, configure o GRUB:
/etc/grub.d/40_custom
200.200.200.200 - O endereço IP do servidor NFS.
/ etc / default / grub . . . GRUB_TIMEOUT=0 . . . GRUB_DEFAULT="NFSRoot" . . .
E reinicie o VDS:
# grub2-mkconfig --output=/boot/grub2/grub.cfg # reboot
Se tudo der certo, o VDS carregará o doador do CentOS 8 e a unidade local será completamente desmontada:

4. "Instalação" do CentOS 8
Agora você pode reformatar e formatar o disco VDS local, copiar os arquivos do SO para ele, instalar o carregador de inicialização e configurar a rede. Uma breve descrição das ações necessárias:
# 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
No VDS minúsculo, eu prefiro esta configuração de disco:
# 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
Formatar, excluir uma reserva e definir o valor UUID como "doador":
# 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
Copiando arquivos do sistema operacional e instalando o gerenciador de inicialização:
# 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.
Como o
Network Manager entende o
legado , você pode criar um arquivo ifcfg apropriado para configurar a rede. O nome da interface pode ser encontrado:
# 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
Isso é tudo, você pode reiniciar o VDS a partir de sua unidade local.
5. Conclusão
VDS com mínimo CentOS 8 instalado:

Links úteis:
www.kernel.org/doc/Documentation/filesystems/nfs/nfsroot.txtaccess.redhat.com/documentation