LINUX.ORG.RU

Ответ на: комментарий от rmu

Никак, судя по всему. Во всяком случае, пробежавшись по mkinitcpio (это обычный bash-скрипт), я такой возможности не увидел. Чем тебя этот файл не устраивает? Если не хочешь вносить глобальные изменения, создай файл mkinitcpio-rmu.conf, добавь всё, что нужно, и укажи в своём preset-файле в качестве конфига через ALL_config (для всех preset) или default_config (для конкретного).

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

Ну я так и делал. Только зачем добавлять в пакет ядра отдельный конфигуратор, если, например, можно сделать то же самое, дописав подходящий аргумент в preset-файл? В документации об этом ни слова, на буржуйских форумах такой темы не встретилось.

Спасибо, что mkinitcpio просмотрел!

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

Попробуй такую штуку (можешь другие опции указать):

default_options="-z lz4"
export COMPRESSION_OPTIONS='-9'

Вроде работает, но это грязный хак и лучше такое не использовать, потому что есть вероятность проблем с preset, которые будут обрабатываться после этого. Короче, можешь потестить, но на свой страх и риск.

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

Я пробовал так делать. Если записать туда другие параметры сжатия, кроме -9,то вываливаются ошибки. initcpio не может нормально обработать такое. А если вынести в conf файл, то работает. Не знаю почему так.

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

На ванильном и zen ядрах всё нормально.

Хотя все нужные параметры в конфиге ядра выставил.

Очевидных вариантов несколько:

  • неподходящие опции для lz4, например -m или -r, которые отключают опцию -l (mkinitcpio сам её добавляет);
  • всё-таки проблемы с конфигом ядра;
  • проблемы с загрузчиком.

Попробуй свой образ с ванильным ядром: в конфиге загрузчика подмени у ванильного ядра образ на сгенерированный тобой.

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

Не могу найти причину, почему lz4 не работает. Опции RD_LZ4, LZ4_COMPRESS, DECOMPRESS_LZ4, LZ4_DECOMPRESS, KERNEL_LZ4 выставлены в ‘y’. Всё равно появляется ошибка Initramfs unpacking failed: Decoding failed.

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

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

Попробуй сделать, как тут. Насколько я понимаю, за это отвечает CONFIG_RD_LZ4. Сейчас заметил, что он у тебя всё-таки включён, но всё равно проверь через menuconfig, например.

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

С родным initramfs оно грузится? Если грузится с родным и ругается на твой initramfs из-за отсутствия модулей, то, видимо, распаковка происходит всё-таки?

Без COMPRESSION_OPTIONS тоже не работает? Если сгенерировать образ для ванильного ядра с lz4, оно загружается?

Гадание на кофейной гуще, но нужно как-то локализовать проблему.

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

М. б. initrd вообще отключить? У меня компьютер, когда не может подключить образ в lz4,грузится на 1,5 секунды быстрее. Образ держу только для того, чтобы когда начнёт что-то отваливаться, я мог через шелл разобраться что к чему, как-то исправить проблему. Хуков только 2: base & systemd.

Можно ли busybox включить в ядро?

Как вариант, думаю вкомпилить initrd в ядро без сжатия (всё равно ядро само сжимается).

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

М. б. initrd вообще отключить?

Можно, особенно если ты это ядро не будешь на разные машины ставить.

У меня компьютер, когда не может подключить образ в lz4,грузится на 1,5 секунды быстрее.

Чем с работающим нормальным initramfs? Может быть, потому что не запускается fsck?

Образ держу только для того, чтобы…

Я для этого держу дефолтное ядро с дефолтным initramfs.

Хуков только 2: base & systemd.

У меня с такими хуками странная проблема вылезла после предпоследнего обновления systemd: после установки пакета или после редактирования файлов, например, в /etc после перезагрузки что-то ломается в systemd-logind и иксы не могут стартануть (по логам ругань была из-за гибридной графики).

Можно ли busybox включить в ядро?

Вроде можно, но, насколько я понял, нужно сперва его сгенерировать, потом распаковать в папку /usr/src/initramfs (как в примере) или куда удобно.

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

Может быть, потому что не запускается fsck?

Да, не запускается, потому что оно в образе. Правильно говоришь, без fsck грузить систему плохо, диск надо проверять. Буду добавлять initrd прямо в ядро. А чтоб избежать поломок с обновлением systemd оставлю образ только с хуком base.

Я также держу дефолтное, но с ним всё равно не найти причину поломки кастомного – инструменты отладки нужны в нём самом.

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

Сейчас скомпилил ck-ядро 5.2.21-1. Всё работает.

Я не могу пользоваться более ранними ядрами, потому что intel наконец-то закрыли многолетний баг в модуле i915 (неоткачиваемые фризы) только в ядре 5.3. Теперь ноут работает как у людей :)

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

Правильно говоришь, без fsck грузить систему плохо, диск надо проверять.

Вообще, есть два варианта:

  • использовать fsck и в параметрах ядра указать rw;
  • либо не использовать fsck и в параметрах ядра указать ro, тогда systemd запустит systemd-fsck-root.service и сам проверит.

А чтоб избежать поломок с обновлением systemd оставлю образ только с хуком base.

Я так и сделал:

MODULES=(ext4 ahci sd_mod)
HOOKS=(base)
COMPRESSION="cat"

У меня три модуля, без которых система не загрузится. Вместо хука fsck использую systemd-fsck-root.

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

Слишком много времени уже потратил на возможность сжимать initrd в lz4. Вкомпиленный образ не подключается. При этом с остальными алгоритмами сжатия всё норм.

Думаю, что в моём случае с lz4 не моя ошибка. Подожду выход следующей мажорной версии ядра и попробую скомпилять его.

Большое спасибо за участие.

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

Поздравляю, что всё получилось. Я в итоге тоже понял, как собрать образ с хуком systemd, чтобы не было проблем с загрузкой (early KMS start):

MODULES=(ext4 ahci sd_mod radeon)
BINARIES=(fsck fsck.ext4)
HOOKS=(systemd)
COMPRESSION="lz4"
rassol ()
Ответ на: комментарий от greenman

У меня эта проблема вылезла ещё в начале осени и на иксах, и на вяленом (сперва подумал, что какие-то баги из-за гибридной графики). Так как разбираться было лень, я собрал образ на хуке base. Месяц назад я решил всё-таки разобраться и нашёл несколько упоминаний этой проблемы (и некоторых схожих): у всех (у меня тоже) она решалась с помощью раннего запуска KMS.

rassol ()
Ответ на: комментарий от greenman

Есть ещё и такое наблюдение – в моём случае добавить MODULES=(i915) понадобилось только для мобильного i3-4010U. В случае десктопного i3-4160 пока иксы загружаются и без этого.

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