LINUX.ORG.RU
ФорумAdmin

Dracut vs Genkernel. Параметры ядра grub

 , , , ,


2

2

Объясните «на пальцах» что лучше Dracut или Genkernel.
При генерации initramfs genkernel’ом, весь файла ~ 13mb
При генерации initramfs dracut’ом, весь файла ~ 32mb

И следующий вопрос:
На десктопе стоит генту с шифрованным lvm’ом. Строка в /etc/default/grub - GRUB_CMDLINE_LINUX="ipv6.disable=1 crypt_root=UUID=<цыфарки> root=UUID=<цыфарки> rootfstype=ext4 dolvm quiet"
Пытаюсь аналогично установить на нетбук, граб не видит шифрованный раздел. Я и так и сяк и об косяк…НИКАК! Полез за ответами в гугл, он привёл меня на интересный ман, в котором рекомендации строки загрузчика выглядят так - GRUB_CMDLINE_LINUX="loglevel=4 rd.luks.uuid=<цыфарки> rd.lvm.vg.uuid=<цыфарки> dolvm quiet ipv6.disable=1". В общем я поменял crypt_root на rd.luks.uuid и root на rd.lvm.vg.uuid только после этого граб всё увидел и загрузил систему.

Расскажите в чём разница в параметрах указанных выше?


100% не помню, но у dracut свой набор скриптов для загрузки системы. И соответственно вероятно свой набор параметров для этих своих скриптов.
Вот они кстати https://man7.org/linux/man-pages/man7/dracut.cmdline.7.html

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

Оффтоп.

https://wiki.gentoo.org/wiki/Genkernel

Warning

genkernel is unmaintained; documentation presented here may be incomplete and may not reflect the current state of Gentoo tooling. Users encountering issues with genkernel will be asked to use another tool. Please see the Distribution kernel section in the Handbook for a supported alternative.

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

@Atlant парни. Тут вроде как ясно. А разница в чём между инструментами? Я вижу только вероисповедание и религию, которая топит каждая за свой.

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

хз, по крайней мере меня dracut не подводил после того как я перешел на него. И ещё «genkernel is unmaintained» из https://wiki.gentoo.org/wiki/Genkernel
genkernel - это была чисто gentoo'вская версия. Как и в других дистрибутивах были свои. А dracut по сути мультидистрибутивный вариант создания ядра.

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

А разница в чём между инструментами?

Очень большая.

genkernel - это комбайн, который собирает ядро, свой оригинальный initramfs со своими скриптами инициализации и параметрами командной строки

dracut - только initramfs со своими скриптами инициализации и параметрами командной строки.

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

genkernel - это комбайн,
dracut - только initramfs

Скорее оба являются комбайнами по сбору initramfs.

Atlant ★★★★★
()

Не могу сказать в чем их отличии и так далее, но я dracut использую чисто чтобы собрать единое ядро со всеми плюшками чтобы можно было его запустить через uefi, kernel+dracut+luks+btrfs в одном файле которой можно легко подписывать для secure boot

Genkerbel использовал чисто чтобы создать initram

Выводы делай сам

SPRATAY ★★
()

граб всё увидел и загрузил систему.

grub то тут каким боком? Он просто передаёт эти параметры ядру, а скрипты из initramfs их обрабатывают, активируют/монтируют.

А разница в чём между инструментами?

В том, что они разные. У них ничего общего нет, они решают одинаковые задачи, но внутри скрипты разные, опции разные. Ещё есть mkinitcpio (из как-то шевелящихся), а так можно назвать, десяток, а может и больше, брошеных аналогичных генераторов initramfs.

Как уже написали, genkernel изначально для компиляции ядра, у него куча опций с этим связана, и его нужно специально «уговаривать», чтобы он просто initramfs сделал, а не запускал компиляцию ядра.

genkernel, во всяком случае раньше, тащил отдельные версии бинарников для initramfs, собирал их. ЕМНИП, его можно было с небольшим трудом заставить компилять, например, другой fsck, с другими опциями, чем в основной системе. Dracut всё берёт из основной системы.

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

grub то тут каким боком? Он просто передаёт эти параметры ядру, а скрипты из initramfs их обрабатывают, активируют/монтируют.

Я так понял, что это был вопрос и ответ сразу же?
В моём случае GRUB_CMDLINE_LINUX передаёт параметры - выключи шестой IP, уид криптованного раздела, уид точки рут, тип ФС точки рут, это LVM и загрузи ядро без портянки на весь экран". Исходя их этого уже генерируется initramfs дракутом либо генкернелом. Или я не так понимаю это?

genkernel…нужно специально «уговаривать», чтобы он просто initramfs сделал, а не запускал компиляцию ядра.

А в чём проблема написать genkernel --luks --lvm initramfs, вместо genkernel --luks --lvm all?

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

dracut…чтобы собрать единое ядро со всеми плюшками

Ёлы-палы! Я может сейчас глупость сморозю, но с твоих слов dracut запаковал всё в initramfs? То есть и ядро тоже?

dodik@genbook ~ $ ls -l /boot/
total 106679
drwxr-xr-x 3 root root      512 Apr 23 20:34 EFI
-rwxr-xr-x 1 root root 10962160 Apr 24 09:04 System.map-6.12.21-gentoo-dist
-rwxr-xr-x 1 root root 10962160 Apr 23 18:03 System.map-6.12.21-gentoo-dist.old
-rwxr-xr-x 1 root root   148480 Apr 24 12:00 amd-uc.img
-rwxr-xr-x 1 root root   279876 Apr 24 09:04 config-6.12.21-gentoo-dist
-rwxr-xr-x 1 root root   279876 Apr 23 18:03 config-6.12.21-gentoo-dist.old
drwxr-xr-x 5 root root      512 Apr 24 19:20 grub
-rwxr-xr-x 1 root root 33038116 Apr 24 10:51 initramfs-6.12.21-gentoo-dist.img
-rwxr-xr-x 1 root root 12968116 Apr 24 08:17 initramfs-6.12.21-gentoo-dist.img.old
drwxr-xr-x 2 root root      512 Apr 23 15:09 lost+found
-rwxr-xr-x 1 root root 20298736 Apr 24 09:04 vmlinuz-6.12.21-gentoo-dist
-rwxr-xr-x 1 root root 20298736 Apr 23 18:03 vmlinuz-6.12.21-gentoo-dist.old

То, что с пометочкой .old на конце, было собрано genkernel’ом, а остальное - dracut’ом. То есть моё удивление по поводу размера initramfs - это получается 13мб init + 20мб ядро = 33мб initrams. Я правильно понял?

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

Нет, неправильно.

Основной объём инитрд - находящиеся в нём модули. Что уж проще, загляни в него и увидишь, чем занято место.

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

При генерации initramfs genkernel’ом, весь файла ~ 13mb При генерации initramfs dracut’ом, весь файла ~ 32mb

На счет размеров.

Genkernel необходимые пакеты пересобирает со своими настройками для уменьшения размера и количества зависимостей, чтобы не копировать системные. Например, lvm.

Dracut собирает из уже установленных в системе с зависимостями.

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

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

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

Dracut имеет настройки (системные, по умолчанию), которые пихают почти всё подряд в initramfs: модули ядра, программы и so’шки, конфиги и прочее. Например, он запихивал lvm и модули md, dm, когда я не использовал lvm.

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

Например, он запихивал lvm и модули md, dm, когда я не использовал lvm

А ему разве нельзя передать с чем собрать initramfs?

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

Там даже документация есть, что уж говорить про интернет :) Правда, местами не очень детальная, но конкретно на этот вопрос вроде отвечает.

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

Можно, для этого в конфиге надо вручную указывать что собирать, а что выкинуть на мороз, по умолчанию он сам подхватывает то что установленно в системе

Тут я выкинул systemd

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

Ёлы-палы! Я может сейчас глупость сморозю, но с твоих слов dracut запаковал всё в initramfs? То есть и ядро тоже?

Хз как он пакует, там очень много нюансов с сборкой единого ядра(например в генту нужно выставить нужные флаги для пакетов чтобы такое чудо получилось)

dracut это пылесос зависимостей например у меня установлен zfs, я хотел его чисто потестить, а dracut сразу его запихал в новый единый образ

Плюс учитывай что он может использовать другое сжатие как поменять на максимальный я хз

А так man есть, я лично не доверяю ему параметры запуска и сделал так чтобы я указывал вручную

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

Исходя их этого уже генерируется initramfs дракутом либо генкернелом.

Не знаю, может что поменялось, но раньше такого точно не было. Какие «модули» genkernel/dracut засунут в initramfs выбиралось отдельно. То есть, допустим dracut генерит initramfs, посмотрел, что в системе используется LUKS и засунул соотв. код (модуль) в initramfs. Груб загрузил этот initramfs и ядро, запустил ядро, ядро начало выполнять код initramfs. Там код смотрит, передали rd.luks.uuid= или нет. Если передали, пытается что-то смонтировать, если нет, то не пытается. grub просто передаёт эти параметры, он вобще не знает какой код лежит в initramfs и что эти параметры значат.

написать genkernel --luks --lvm initramfs

ЕМНИП, он может всё равно полезть в /usr/src/linux, проверять что там есть скомпилированное ядро.

И ещё раз повторю «genkernel изначально», не надо игнорировать куски предложения. Подобные проекты, с кучей настроек, меняющихся от версии к версии, сложно сравнивать. Один с 2008 года, другой, с 2002? года много раз переписывались.

dracut запаковал всё в initramfs?

dracut, вроде, может initramfs запаковать в ядро, а не наоборот. Вобще, initramfs же можно распаковать, будут обычные каталоги/файлы, там можете посомтреть/посравнивать что внутри.

mky ★★★★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.