Не сомневаюсь, что благородные доны — администраторы Linux — стремятся максимально минимизировать набор устанавливаемых на сервер пакетов. Это экономичнее, безопаснее и вселяет в администратора ощущение полного контроля и понимания происходящих процессов.

Поэтому типичный сценарий начальной установки операционной системы выглядит как выбор минимального варианта, а далее — наполнение необходимыми пакетами.



Однако, минимальный вариант, предлагаемый установщиком CentOS, оказывается не совсем минимальным. Есть способ уменьшить размер начальной установки системы стандартным документированным способом.

Используя операционную систему CentOS в работе рано или поздно открываешь для себя автоматизацию ее установки при помощи механизма Kickstart. Я давно уже не инсталлирую CentOS стандартным установщиком. За время работы накопился достаточный арсенал настроечных kickstart файлов, позволяющих в автоматическом режиме разворачивать системы, в том числе на LVM, крипто разделах, с минимальным GUI и т.п.

И вот, в каком-то из релизов 7-ой версии RedHat добавила удивительную опцию в Kickstart, позволяющую еще более минимизировать образ устанавливаемой системы:

--nocore

Disables installation of the Core package group which is otherwise always installed by default. Disabling the Core package group should be only used for creating lightweight containers; installing a desktop or server system with --nocore will result in an unusable system.
RedHat честно предупреждает о возможных последствиях применения этой опции, однако годы использования мною в реальном окружении подтверждает ее стабильность и применимость.

Ниже представлен пример kickstart файла минимальнейшей установки. Отважные могут исключить из него yum. Будьте готовы к сюрпризам:

install
text

url --url="http://server/centos/7/os/x86_64/"

eula --agreed
firstboot --disable

keyboard --vckeymap=us --xlayouts='us'
lang en_US.UTF-8
timezone Africa/Abidjan

auth --enableshadow --passalgo=sha512
rootpw --plaintext ***

ignoredisk --only-use=sda

zerombr
bootloader --location=mbr
clearpart --all --initlabel

part /boot/efi --fstype="efi" --size=100 --fsoptions="umask=0077,shortname=winnt"
part / --fstype="ext4" --size=1 --grow

network --bootproto=dhcp --hostname=localhost --onboot=on --activate

#reboot
poweroff

%packages --nocore --nobase --excludedocs
yum

%end

%addon com_redhat_kdump --disable

%end


Хочу заметить, что CentOS/RedHat лояльнее Fedora в интерпретации опции. Последняя настолько сильно выхолостит систему, что потребуется повторная установка с добавлением жизненно важных утилит.

В качестве бонуса приведу «заклинание» по установке минимального графического окружения в CentOS/RedHat (7-ой версии):

yum -y groupinstall x11
yum -y install gnome-classic-session
systemctl set-default graphical.target

Как минимальный образ операционной системы, так и минимальное графическое окружение опробовано мною и работает на реальных системах.

Комментарии (9)


  1. IgorPie
    26.06.2019 13:01

    Скрипт минимальной установки — это прекрасно. А итоговый размер какой?
    Куда кликать, чтобы попасть в кикстарт? (привет от Commodore Amiga, заодно)


    1. aliend Автор
      26.06.2019 20:03

      Итоговый размер не столь впечатляющий, как может показаться, но он сделан стандартным и документированным способом. Все-таки это не конкурс на самую минимальную инсталляцию, а вполне себе рабочее решение, которое я применяю на практике:


      df -h / = 712M, du -hs / = 684M.


      А куда «кликать»: если инсталлировать с ISO, то: «стрелка вверх, TAB, Backspace,.. ., inst.ks=.. .»


  1. vtolstov
    26.06.2019 13:38

    Статья ни о чем на мой взгляд. Если хочется минимальную систему, то это не единственная опция.
    И не очень понятно это система для чисто контейнера или что, если для контейнера зачем efi?


    1. aliend Автор
      26.06.2019 20:03

      Инсталляцию по сети с использованием сценариев Kickstart и механизм установки минимально возможного первоначального образа я использую в том числе и для развертывания/переформатирования тонких клиентов, которые находятся за тридевять земель, каналы связи куда — убоги и ненадежны.


      А без efi партиции сейчас становится все труднее с каждым днем: более/менее шевелящиеся SoC-системы без UEFI вообще не работают, в них просто уже нет Legacy.


      1. vtolstov
        26.06.2019 20:32

        Тогда лучше не использовать кикстарт вообще, а разворачивать из предподготовленого образа.
        Во первых гораздо надежнее, во вторых на порядки быстрее.


        1. vtolstov
          26.06.2019 20:32

          Но в целом теперь хотя бы понятна мотивационная часть статьи.


        1. NeuroHunter
          27.06.2019 08:35

          Так kickstart можно использовать, в том числе, для создания образа, который затем уже развертывается


  1. mikeus
    27.06.2019 09:51

    Для полноты представления о результирующей установке не могли бы вы добавить еще список пакетов на свежеинсталлированной системе. (И заодно, для понимания потерь в изначальном доступном функционале системы, пакеты группы @Core и @Base, исключаемые ключами --nocore --nobase.) Спасибо.


    1. aliend Автор
      28.06.2019 10:01

      Не думаю, что публикация здесь списка 150+ пакетов принесет какую-то ощутимую пользу, тем более, что список этот варьируется от версии анаконды. Замечу лишь, что из образа вырезаются все прошивки (драйверы) устройств, отсутствует как класс SELinux (!), нет «червячка» (Plymouth) при загрузке (CentOS загружается как «ванильный» Linux). Нет Network Manager-а и его порой ненужного «обвеса», нет vi, sshd, sudo, passwd,...
      Fedora, как я написал в статье, вообще «теряет» iptools: нет ping-а, ip, по этой причине в испеченной системе по началу чувствуешь себя неловко.
      Как бы то ни было, сетевой стек поднимается, LSB-шный network никуда не девается и получить доступ к системе всегда получится. А установив пакетный менеджер (yum/dnf), можно донастроить систему до необходимого минимума, с чего собственно и начиналась моя статья.
      Хочу еще добавить, что установив и настроив networkd и добавив в параметры загрузки ядра параметр quiet (да, да, его тоже нет!), получим перезагрузку виртуального сервера на SSD за 5 секунд. Полезная мелочь, у меня так при необходимости перезагружаются web-серверы в рабочее время — пользователи даже не замечают.