Назад | Перейти на главную страницу

Как мне удалить пакет ядра из chroot образа, если это ядро ​​работает на моем хосте сборки?

Я пытаюсь создать собственный образ, используя diskimage-builderи, среди прочего, этот инструмент обновляет все пакеты в образе до последней версии, включая ядро. Он также использует package-cleanup удалить старые ядра.

Тем не мение, package-cleanup имеет логику, предотвращающую удаление текущего ядра; это имеет смысл на обычном хосте, но когда вы работаете внутри chroot для создания файловой системы, это не так.

Временно исправляем package-cleanup отключить эту логику показывает, что yum имеет ту же логику, и я верю rpm тоже!

Соответствующая информация о дистрибутиве / пакете:

Теперь, очевидно, если я обновлю хост сборки до последней версии ядра, эта проблема исчезнет ... но только до тех пор, пока версия ядра на хосте и в исходном образе снова не станет одинаковой и не будет выпущено более новое ядро, которое diskimage-builder затем добавляет.

Чтобы еще больше усложнить ситуацию, когда diskimage-builder устанавливает более новое ядро, grubby запускается для создания соответствующей конфигурации grub, но это не удается по связанным причинам; он обращает внимание на работающее в данный момент ядро, даже если это не имеет значения. Это означает, что в новом образе не только остается старое ядро, но и по умолчанию. И так случилось, что 3.10.0-957.12.2 не загружается на одной из моих целевых систем (VMware), поэтому для меня это такая проблема.

Есть ли здесь лучшее решение? Могу я заставить package-cleanup, yum, или rpm как-нибудь удалить старый пакет ядра? (В идеале package-cleanup, поскольку он уже содержит логику для динамического определения, какие ядра оставить / удалить.)

(Инструменты, которые пытаются защитить вас от неправильных действий, на самом деле должны позволять вам переопределять их, когда вы знаете, что делаете. Кроме того, инструменты управления пакетами не должны ссылаться на текущую рабочую среду, поскольку это может быть не конечным цель.)