LINUX.ORG.RU

Kernel.

 ,


1

1

Привет. В контакте зашел разговор с человеком, ему надо собрать ядро без systemd и initramfs. Зачем ему это, я не знаю. Ему я помочь в этом немогу, так как не имею опыта в таких сборках ядер. Сам он сюда заходить стесняется, наверное просто не хочет слышать в свой адрес оскорбления вместо нужных ответов. Ну это я так думаю. Видимо он уже имел опыт пребывания тут. Но суть в другом, если кто знает, как это сделать, то напишите пожалуйста, какие опции в ядре нужно выключить или включить. И вожможно ли это вобще.

Без systemd s initd

1//
2//
3//
4//


Без initramfs

1 включит файлвую систему в ядро не модульно.
2//
3//
Что дописать в остальных пунктах?

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


Ты все-таки передай ему, что человеку, который пытается собрать ядро без systemd, заниматься этим пока ещё рано. Из-за отсутствия понимания того, что именно он делает.

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

Есть, но нерабочие. Скорее больше вводящие в заблуждение. Записки людей, которые навыхватывали знания кусками. А тут нужно понимание специалиста. Поэтому и созданна эта тема.

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

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

в свое время делал ядро без инитрамса. поковырял тырнет недельку и запустилось.

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

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

Достаточно сильно зависит от того, что это за аппаратная платформа. Если обычный десктоп, то нужно добиться того, чтобы при загрузке примонтировалась корневая файловая система. Для этого нужно включить поддержку sata, sata-контроллера и файловой системы.

Если используется luks, то нужно включить поддержку необходимого шифрования и usb-клавиатуры (если предполагается ввод пароля).

Если есть возможность загрузиться с LIVE-системы, стоит это сделать и посмотреть, какие модули загрузились, команда lsmod, посмотреть, какие устройства используются lspci -k (обратить внимание на SATA-контроллер.

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

От systemd в ядре зависимостей вроде нет, любое собранное ядро можно использовать с любой системой инициализации.


Если речь о какой-то встраиваемой системе, стоит посмотреть на какой-нибудь buildroot. Позволяет легко собрать систему под конкретное железо.

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

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

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

Нет, в строке аргументов ядра нужно указать, на каком устройстве (диске или его разделе) находится корневая файловая система.

У меня, например, это сделано по метке: root=LABEL=arch, потому что у меня на файловой системе стоит метка, поставленная утилитой e2label из e2fsprogs. Если я переткну жёсткий диск в другое место или поменяю конфигурацию разделов, система продолжит загружаться, потому что найдёт нужную файловую систему по метке.

Но, по-моему, я точно не уверен, без udev ядро само не справится. Поэтому, возможно, нужно указывать корневой раздел прямо: root=/dev/sda2 (к примеру). Но если дисков в системе несколько, то порядок, в котором ядро будет их обнаруживать и присваивать им имена, может быть не определён. От загрузки к загрузке /dev/sda и /dev/sdb могут меняться местами (а могут и не меняться).

anarquista ★★★★★ ()

Невозможно понять, что требуется. Кто на ком стоял?

В initramfs можно запихнуть все нужные и ненужные модули, а также кучу юзерспейса, и systemd, и все остальное, хоть иксы с кедами. initramfs, в свою очередь, можно собрать вместе с ядром в виде одного файла. Гуглите. Что-то типа one-file linux system. Этого в сети полно.

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

на практике ядро без интерамса не сильно ускорит конкретную железяку

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

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

ты про fstab ??
в fstab запись «root=/dev/sda1» неправильна.
там можно LABEL= и UUID= и несколько менее распространенных указателей на устроство содержащее раздел.

root=/dev/sda1 это указание ядру из какого источника монтировать корневой раздел системы.

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

Чувак, видно что шаришь в arm и не только. Скажи уж тогда, есть шанс загрузить ядро на десктопе загрузчиком u-boot? Как это сделать я тут спрашивать не буду, просто ответь можно или нет

LGH ()

Без systemd: в гентушных ядрах есть свои параметры, там было что-то (CONFIG_GENTOO_LINUX_INIT_SYSTEMD), не думаю, что в ваниле это есть, поэтому забей, ядру вообще плевать на инит.

Без initramfs: General setup→Initial RAM filesystem and RAM disk (initramfs/initrd) support, оно же CONFIG_BLK_DEV_INITRD

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

Нет, достаточно выставить CONFIG_BLK_DEV_INITRD=n. Но надо понимать, что все модули, которые нужны для монтирования /lib/modules/, должны быть вкомпилены в ядро. Т. е. контроллер диска, файловая система, вот это вот всё

XMs ★★★★★ ()

В самом простом случае достаточно вкомпилить в ядро модули для работы жёсткого диска и файловой системы, например на моём ноутбуке достаточно трёх модулей: ext4, ahci, sd_mod. Определить нужные модули можно методом бисекции по выводу lsmod.

Возможно, ещё придётся передавать ядру не UUID, а PARTUUID (точно уже не помню, когда это нужно).

Советую почитать твоему товарищу gentoo wiki для начала.

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

не, далеко не шарю :(
в опенсорс среде принципе возможно, только вот нахрена ??
любой загрузчик лило, груб, юбут и парочка других коммерческих систем идентичен по своей основной функции - загрузить ядро, загрузить интрамфс и передать ядру интрамфс и строчку инициализации.
гугли, чем хорош линукс, так это что множество людей используют его во все дырки, обязательно найдется близкий по тараканам деятель :)
https://yandex.ru/yandsearch?clid=1917059&text=u-boot%20x86

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

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

Ну вы сравнили тоже. Поразбираться с ядром — это фан. Результатом этих разбирательств вдруг оказывается, что ядро даже после добавления нужных этому тазику модулей сокращается на мегабайты по сравнению с дистрибутивным. Пересобирать самому абсолютно всё равно в модулях оно или в унутре. Зато как приятсвенно, когда пришёл такой домой, кнопочку нажал, а оно вжух и загрузилось, без всасывания мегабайтов тормозным загрузчиком, потом распаковки этих initramsfs, подгрузки модулей с динамическим связыванием и запуска рабочего init-а. Несколько секунд и можно садиться на диван и смотреть очередной фильм по minidlna, а не ждать.

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

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

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

Определить нужные модули можно методом бисекции по выводу lsmod

зачем так сложно? Тупо распаковать образ initramfs и посмотреть, что там есть.

anonymous ()

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

Ладно, сделаем вид, что поверили.

P.S. Это шутка, если что.

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

а потом решил поменять железку и вжух в текущей минималистической сборке ядра нет данного модуля…

Ну не знаю, я меняю железку вместе с версией дистрибутива и ядро там заметно новее, ибо на старой лениво всё время обновлять, особенно когда это не касается того, что туда поместил. Особенно, если это действительно специализированная железка типа рутера/медиасервера и т. д.

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

ок. я воткнул нвидиа видеокарточку в компутер. в текущей самсборке ядра дров для нее естественно нету… дальнейшие действия описывать ??

я меняю железку вместе с версией дистрибутива

я купила новые сапоги, а к ним нужно новую сумочку, новое пальто и желательно нового красивого мужика (с) анекдот. :)

pfg ★★★ ()