Поэтому типичный сценарий начальной установки операционной системы выглядит как выбор минимального варианта, а далее — наполнение необходимыми пакетами.
Однако, минимальный вариант, предлагаемый установщиком CentOS, оказывается не совсем минимальным. Есть способ уменьшить размер начальной установки системы стандартным документированным способом.
Используя операционную систему CentOS в работе рано или поздно открываешь для себя автоматизацию ее установки при помощи механизма Kickstart. Я давно уже не инсталлирую CentOS стандартным установщиком. За время работы накопился достаточный арсенал настроечных kickstart файлов, позволяющих в автоматическом режиме разворачивать системы, в том числе на LVM, крипто разделах, с минимальным GUI и т.п.
И вот, в каком-то из релизов 7-ой версии RedHat добавила удивительную опцию в Kickstart, позволяющую еще более минимизировать образ устанавливаемой системы:
--nocoreRedHat честно предупреждает о возможных последствиях применения этой опции, однако годы использования мною в реальном окружении подтверждает ее стабильность и применимость.
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.
Ниже представлен пример 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)
vtolstov
26.06.2019 13:38Статья ни о чем на мой взгляд. Если хочется минимальную систему, то это не единственная опция.
И не очень понятно это система для чисто контейнера или что, если для контейнера зачем efi?aliend Автор
26.06.2019 20:03Инсталляцию по сети с использованием сценариев Kickstart и механизм установки минимально возможного первоначального образа я использую в том числе и для развертывания/переформатирования тонких клиентов, которые находятся за тридевять земель, каналы связи куда — убоги и ненадежны.
А без efi партиции сейчас становится все труднее с каждым днем: более/менее шевелящиеся SoC-системы без UEFI вообще не работают, в них просто уже нет Legacy.
vtolstov
26.06.2019 20:32Тогда лучше не использовать кикстарт вообще, а разворачивать из предподготовленого образа.
Во первых гораздо надежнее, во вторых на порядки быстрее.NeuroHunter
27.06.2019 08:35Так kickstart можно использовать, в том числе, для создания образа, который затем уже развертывается
mikeus
27.06.2019 09:51Для полноты представления о результирующей установке не могли бы вы добавить еще список пакетов на свежеинсталлированной системе. (И заодно, для понимания потерь в изначальном доступном функционале системы, пакеты группы
@Core
и@Base
, исключаемые ключами --nocore --nobase.) Спасибо.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-серверы в рабочее время — пользователи даже не замечают.
IgorPie
Скрипт минимальной установки — это прекрасно. А итоговый размер какой?
Куда кликать, чтобы попасть в кикстарт? (привет от Commodore Amiga, заодно)
aliend Автор
Итоговый размер не столь впечатляющий, как может показаться, но он сделан стандартным и документированным способом. Все-таки это не конкурс на самую минимальную инсталляцию, а вполне себе рабочее решение, которое я применяю на практике:
df -h / = 712M, du -hs / = 684M.
А куда «кликать»: если инсталлировать с ISO, то: «стрелка вверх, TAB, Backspace,.. ., inst.ks=.. .»