LINUX.ORG.RU

Ошибка при создании initramfs

 ,


0

1

Привет.

Решил обновить ядро. Никакого желания лазить руками я давно не испытываю, просто запустил genkernel all. Процесс шел нормально, вплоть до создания initramfs. Прилагаю выхлолп консоли:

* Gentoo Linux Genkernel; Version 4.1.2
* Using genkernel configuration from '/etc/genkernel.conf' ...
* Running with options: --makeopts=-j5 all

* Working with Linux kernel 5.4.80-gentoo for x86_64
* Using kernel config file '/usr/share/genkernel/arch/x86_64/generated-config' ...
* 
* Note: The version above is subject to change (depends on config and status of kernel sources).

* kernel: >> Initializing ...
*         >> Running 'make mrproper' ...
*         >> Running 'make oldconfig' ...
*         >> Re-running 'make oldconfig' due to changed kernel options ...
*         >> Kernel version has changed (probably due to config change) since genkernel start:
*            We are now building Linux kernel 5.4.80-gentoo-x86_64 for x86_64 ...
*         >> Compiling 5.4.80-gentoo-x86_64 bzImage ...
*         >> Compiling 5.4.80-gentoo-x86_64 modules ...
*         >> Installing 5.4.80-gentoo-x86_64 modules (and stripping) ...
*         >> Generating module dependency data ...
*         >> Saving config of successful build to '/etc/kernels/kernel-config-5.4.80-gentoo-x86_64' ...

* initramfs: >> Initializing ...
*         >> Appending devices cpio data ...
*         >> Appending base_layout cpio data ...
*         >> Appending util-linux cpio data ...
*         >> Appending eudev cpio data ...
/bin/tar: This does not look like a tar archive
xz: (stdin): File format not recognized
/bin/tar: Child returned status 1
/bin/tar: Error is not recoverable: exiting now
* ERROR: Unable to build eudev-3.2.9: Failed to extract required binpkg '/var/cache/genkernel/4.1.2/xz-5.2.5-x86_64.tar.xz' to '/var/tmp/genkernel/gk_VD0AXqg8/eudev/buildroot'!
* ERROR: create_initramfs(): append_data(): append_eudev(): populate_binpkg(): gkbuild(): Failed to create binpkg of eudev-3.2.9!
* Please consult '/var/log/genkernel.log' for more information and any
* errors that were reported above.
* 
* Report any genkernel bugs to bugs.gentoo.org and
* assign your bug to genkernel@gentoo.org. Please include
* as much information as you can in your bug report; attaching
* '/var/log/genkernel.log' so that your issue can be dealt with effectively.
* 
* Please do *not* report kernel compilation failures as genkernel bugs!
* 

Попробовал после этого сгенерировать инитрамфс отдельно через genkernel –install –no-ramdisk-modules initramfs. Результат тот же, та же ошибка. XZ-utils у меня, разумеется, установлены, проверил. Старшие товарищи, подскажите, в чем проблема? Спасибо.

Вот genkernel.log: https://pastebin.com/1C0K8JRG

Там я тоже не нашел решения проблемы, ошибка извлечения архива, какого хрена - мне не ясно.

А тебе точно этот инитрамфс нужен, или делаешь «просто потому, что так надо»?

burato ★★★★★
()
Ответ на: комментарий от burato

«Потому, что так надо», скорее. Дело еще в том, что я уже пытался обновиться пару недель назад, на версию *.72 вроде, и получил ту же ошибку. В тот раз я махнул рукой, мол, образ создался и ладно, обновил конфиг груба и попробовал загрузиться. Не получилось! Kernel panic. Мне хватило ума оставить старое рабочее ядро, так что я просто забил и забыл. Вплоть до сего дня, когда мне вновь вздумалось полазить в машине. И сегодня я получил ту же самую ошибку. Я не проверял, но зуб даю - оно опять не загрузится. Выходит, этот инитрамфс зачем-то да нужен, раз с ним работает, а без него не работает.

Flagitio
() автор топика
Ответ на: комментарий от anonymous

Это было первое, что я перепроверил. Конечно установлен.

Flagitio
() автор топика
Ответ на: комментарий от Flagitio

После того, как при повреждении раздела система в инитрамфсе не смогла проверить раздел и починить его я полностью отказался от инитрамфса.

burato ★★★★★
()
Ответ на: комментарий от vvn_black

Любопытно!

tar xf /var/cache/genkernel/4.1.2/xz-5.2.5-x86_64.tar.xz /home/karasik/111
tar: Это не похоже на tar-архив
xz: (stdin): File format not recognized
tar: Child returned status 1
tar: Error is not recoverable: exiting now

Таки да, видать, битый. Только как он побился, и что теперь делать?

Flagitio
() автор топика
Ответ на: комментарий от Flagitio

Сначала удали, пусть перекачает. Хотя, проверь /usr/share/genkernel/distfiles/xz-5.2.5.tar.gz. Пересборка genkernel может. Как другой вариант, в /etc/genkernel.conf можешь другой COMPRESS_INITRD_TYPE попробовать. А можешь собрать не all, а kernel.

И разве не tar -xf?

boowai ★★★★
()
Последнее исправление: boowai (всего исправлений: 3)

Какой смысл в инитрам в генте? Раньше в него картинки пихали, но с распространением ссд это стало не актуально.

Никогда не пользовался генкернелом и инитрд/инитрам.

Лишние сущности.

utanho ★★★★★
()

Почему не поставишь sys-kernel/gentoo-kernel-bin, если тебе не охота конфигурировать руками?

XMs ★★★★★
()
Ответ на: комментарий от utanho

Если корень шифрованный и/или на LVM - тогда как? Вариант «не шифровать/не пользоваться LVM» - не предлагать :-)

Pinkbyte ★★★★★
()
Ответ на: комментарий от Pinkbyte

Ммм. Этот вариант я не рассматривал. Тогда конечно да.

Разводить полемику на тему «нафига шифровать/lvm нинужен» не имеет смысла.

utanho ★★★★★
()
Ответ на: комментарий от utanho
  1. Out-of-tree модули: ZFS (Для корня на ZFS), NVIDIA (Для раннего KMS).
  2. Microcode, firmware. Некоторые желательно/обязательно грузить на раннем этапе загрузки.
  3. Шифрование, как уже сказали.
  4. Recovery shell.
  5. Корень на удалённой машине (NFS/NBD).

И прочее. Тысячи их, этих применений.

anonymous-angler ★☆
()
Ответ на: комментарий от anonymous-angler

Ну мой набор применений ограничен ноутбуком для кинчиков и игорей.

Всякие страшные слова мне не пригождаются.

utanho ★★★★★
()
Ответ на: комментарий от XMs

+1. Или sys-kernel/gentoo-kernel, если хочется компилять, но не хочется конфигурировать.

anonymous-angler ★☆
()
Ответ на: комментарий от boowai

ЕМНИП, можно в тар ключи скармливать хоть с дефисом, хоть без дефиса. Насколько я помню.

Сейчас перекачаю, удалил архив, глянем, каков будет результат.

Flagitio
() автор топика
Ответ на: комментарий от XMs

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

Не знаю, если отказываться от ядра - так уже сразу на калькулятор перейти, всё бинарное использовать. А иначе и мир собирать глупо как-то уже выглядит. А там глядишь, и гента как явление покажется глупостью, есть же дружелюбная убунта… А там и недолго плюнуть на это линуксное позерство, виндоус 10 просто накатить да крякнуть.

Flagitio
() автор топика
Последнее исправление: Flagitio (всего исправлений: 1)
Ответ на: комментарий от burato

Во первых нет, не желательно. Потому что необходимость грузить фирмварь/микрокод рано ещё не означает, что эти фирмвать/микрокод плохи и/или проприетарны.

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

anonymous-angler ★☆
()
Ответ на: комментарий от burato

Можно ещё initramfs собрать и не дрочить вприсядку. Или, если очень хочется одним файлом - вкомпилить в ядро, или собрать из них двоих UEFI-образ.

anonymous-angler ★☆
()
Ответ на: комментарий от burato

Оно не жрёт память. switch_root, который происходит в самом конце, удаляет всё что есть в initramfs (В копии, что в RAM) и переключает корень. Перед этим копия содержимого делается в /run. Однако, ни это, ни размещение /run в RAM - не обязательно.

Какое ещё лишнее время? Несколько MiB initramfs даже рухлядь способна загрузить за считанные миллисекунды, не говоря уже об SSD и NVMe.

anonymous-angler ★☆
()
Ответ на: комментарий от utanho

А у меня корень – шифрованный raid1 (где тут скромно потупившийся смайлик). Т.е. я в initramfs сначала mdadm запускаю чтобы собрать рейды, а затем cryptsetup чтобы расшифровать их.

dimgel ★★★★★
()
Ответ на: комментарий от utanho

Да. :) Я все SSD одинаково делаю: mdadm-овский суперблок (вдруг потом потребуется) + шифрация поверх. Итого системная+рабочая 2-хдисковая зеркалка + куча 1-дисковых зеркалок под файлопомойками. Пароль в initramfs ввожу один раз и подсовываю всем cryptsetup.

dimgel ★★★★★
()
Ответ на: комментарий от utanho

Какой смысл в инитрам в генте?

(CUT)

Лишние сущности.

Ну ок. Рассказывай как ты будешь без сабжа запускать систему с корень которой на ftp зашифрованный cryptsetup внутри которого lvm2.

init_6 ★★★★★
()
Ответ на: комментарий от init_6

Могу посоветовать забыть о genkernel и разобраться как инитрд собирать «руками».

+1.

dimgel ★★★★★
()
Ответ на: комментарий от utanho

Уточню: на домашнем компе?

Да. На каком угодно.

init_6 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.