URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 107918
[ Назад ]

Исходное сообщение
"Раздел полезных советов: Загрузка ядра Linux, собранного в к..."

Отправлено auto_tips , 14-Май-16 14:45 
Файл конфигурации allmodconfig позволяет все модули ядра отметить как "m", т.е. как подгружаемые, а не встроенные в ядро. Но проблема в том, что ядро с такими настройками не загружается.

Подразумевается, что в файле конфигурации уже отмечены все подходящие для заданного компьютера дисковые драйверы sata/ide/scsi, как встроенные в ядро "y" или как "m" для размещения на initrd. Но ядро всё равно не грузится.

++ Загрузочное сообщение: Cannot open root device "(null)"

Если в grub указан параметр root=/dev/sda1 (sda1 указан для примера), а при при загрузке появляется сообщение "Cannot open root device "(null)" or unknown-block(0,0)" (обратите внимание, что вместо sda1 появилось null), это значит, что нужно изменить в конфигурации "CONFIG_CMDLINE_BOOL=n".

++ Загрузочное сообщение: Failed to execute /init

При использовании initrd при загрузке может появится сообщение "Failed to execute /init" и нужно изменить в  конфигурации "CONFIG_BINFMT_SCRIPT=y".


URL:
Обсуждается: https://www.opennet.ru/tips/info/2971.shtml


Содержание

Сообщения в этом обсуждении
"Загрузка ядра Linux, собранного в конфигурации allmodconfig"
Отправлено Аноним , 14-Май-16 14:45 
WAT?

"Загрузка ядра Linux, собранного в конфигурации allmodconfig"
Отправлено Айнанимм , 15-Май-16 04:38 
Это походу себе сделал "узелок на память"...
opennet - моя записТная книжка... :)

"Загрузка ядра Linux, собранного в конфигурации allmodconfig"
Отправлено stalkerdroad , 15-Май-16 18:22 
В интернете не нашёл решения проблемы загрузки ядра собранного по конфигу allmodconfig. Сам после долгих разбирательств еле понял изза каких плохих опций не грузится.
Решил поделится решением.

"Загрузка ядра Linux, собранного в конфигурации allmodconfig"
Отправлено Айнанимм , 16-Май-16 01:16 
так распешите подробнее, "опция такаято для тогото, делает тото, а без неё неполучится, потому, что..." и тогда будет замечательно составленное решение какойто проблемы с её описанием.

"Загрузка ядра Linux, собранного в конфигурации allmodconfig"
Отправлено stalkerdroad , 16-Май-16 16:50 
CONFIG_CMDLINE_BOOL указывает что нужно использовать строку аргументов встроенное в ядро при сборке ядра. Что приводит к потере аргументов указанных в загрузчике grub.

CONFIG_BINFMT_SCRIPT отвечает за поддержку возможности запускать скрипты начинающиеся на "#!".


"Загрузка ядра Linux, собранного в конфигурации allmodconfig"
Отправлено Nicknnn , 15-Май-16 22:42 
А правильный вывод - Если решил собирать ядро, нужно понимать что к чему. А не бездумно делать allmodconfig. Собирать вообще всё - феерический бред

"Загрузка ядра Linux, собранного в конфигурации allmodconfig"
Отправлено stalkerdroad , 15-Май-16 23:02 
Мне нужно было получить как можно большее количество модулей. Чтобы потом не пересобирать ядро. Когда подключу какие либо новое устройство.

Такие ядра существуют у всех дистрабутивов. Но нигде не сказано как собирать такие ядра с максимальным количеством модулей.

Вот я и разобрался.


"Загрузка ядра Linux, собранного в конфигурации allmodconfig"
Отправлено cmp , 16-Май-16 00:35 
В Вашем "посте", тоже ничего нет, версия ядра, описания этих опций, не говоря о драйверах нтфс и всяких стаггинг, котороые в ядре даром не нужны никому.

Разобрался, но не  до конца, садись 3-.


"Загрузка ядра Linux, собранного в конфигурации allmodconfig"
Отправлено stalkerdroad , 27-Май-16 16:42 
> версия ядра,

4.x. А на 3.x тоже самое было.

> говоря о драйверах нтфс и всяких стаггинг, котороые в ядре даром
> не нужны никому.

Они же модулями собираются благодаря этому конфигу.


"Загрузка ядра Linux, собранного в конфигурации allmodconfig"
Отправлено cmp , 30-Май-16 07:36 
Угу, в том числе и протухший нтфс, который благодаря наличию модуля начинает использоваться вместо fuse драйвера, а вместе с тем еще миллион протухших драйверов, которые давным давно ни кто не пилит, в которых находят баги, которые дают рута локальным пользователям.

> 4.x. А на 3.x тоже самое было.

Осмелюсь предположить, что такое (allmodconfig) было и в 2.4 и в 2.6, и более ранних, но вот было ли там CONFIG_CMDLINE_BOOL совсем не факт.


"Загрузка ядра Linux, собранного в конфигурации allmodconfig"
Отправлено stalkerdroad , 03-Июн-16 02:43 
> протухший нтфс, который благодаря наличию модуля начинает использоваться вместо fuse драйвера

Нет. фусе драйвер называется ntfs-3g. В команде mount и в fstab указывается ntfs-3g. У тебя какойто неправильный дистр.


"Загрузка ядра Linux, собранного в конфигурации allmodconfig"
Отправлено cmp , 03-Июн-16 04:22 
то есть флэшку монтировать - в фстаб прописывать))
ядро детектит фс и использует соответсвующий драйвер, дистр роли не играет.

"Загрузка ядра Linux, собранного в конфигурации allmodconfig"
Отправлено stalkerdroad , 03-Июн-16 13:38 
> ядро детектит фс и использует соответсвующий драйвер,

Ядро не монтирует автоматически диски. Это делает какаята юзерспейсная программа.

Я думаю что ты используешь кривую программу автомонтирования дисков. Которая путает ntfs и ntfs-3g.


"Загрузка ядра Linux, собранного в конфигурации allmodconfig"
Отправлено cmp , 03-Июн-16 17:37 
ok

"Загрузка ядра Linux, собранного в конфигурации allmodconfig"
Отправлено qweqwe , 21-Июн-16 23:13 
А в modprobe ntfs.ko в черный список занести не? Или модуль удалить нафиг?

"Загрузка ядра Linux, собранного в конфигурации allmodconfig"
Отправлено ПавелС , 24-Май-16 15:06 
И что лучилось? Как результат по сравнению например с ядрами Debian? Можно такой метод взять за основу для ядра для репозитория? Я беру ближайший по версии конфиг у Debian и делаю make oldconfig и отвечаю на вопросы.

"Загрузка ядра Linux, собранного в конфигурации allmodconfig"
Отправлено stalkerdroad , 27-Май-16 16:40 
> И что лучилось? Как результат по сравнению например с ядрами Debian? Можно
> такой метод взять за основу для ядра для репозитория? Я беру
> ближайший по версии конфиг у Debian и делаю make oldconfig и
> отвечаю на вопросы.

С ядрами дебиана не сравнивал. Прочитав файл README в архиве исходников ядра я понял что allmodconfig это единственный способ отметить все модули чтобы они собрались и были подгружаемыми (внешними). Я не знаю другого способа чтобы собрать максимальное количество драйверов.

> Я беру
> ближайший по версии конфиг у Debian

А мне было интересно сделать своё ядро со своими настройками на основе ванильного ядра без патчей и чужих конфигов (непонятно как настроенных).


"Загрузка ядра Linux, собранного в конфигурации allmodconfig"
Отправлено Аноним , 26-Май-16 20:59 
Смысл затеи все равно не ясен. Ядро никто и не пересобирает для поддержки "новых устройств"

"Загрузка ядра Linux, собранного в конфигурации allmodconfig"
Отправлено stalkerdroad , 27-Май-16 16:24 
> Смысл затеи все равно не ясен. Ядро никто и не пересобирает для
> поддержки "новых устройств"

Если собирать ядро например с конфигом созданным командой "make i386_defconfig", то собирается лишь ограниченное (маленькое) количество модулей. И например все звуковые драйвера будут отсутствовать


"Загрузка ядра Linux, собранного в конфигурации allmodconfig"
Отправлено Аноним , 27-Май-16 21:08 
Ещё раз, какие цели ты преследовал, стараясь собрать почти всё модулями?

"Загрузка ядра Linux, собранного в конфигурации allmodconfig"
Отправлено stalkerdroad , 28-Май-16 17:06 
1. Меньше размер ядра.

2. Заранее собрать наибольшее количество драйверов. Чтобы позже не пришлось заново пересобирать ядро. Определить заранее что понадобится невозможно. Например пытался настроить шейпинг сетевого трафика. Оказалось что нет нужных модулей.

3. Другие конфиги не собирают все модули сразу. Лишь маленькое ограниченное количество.


"Загрузка ядра Linux, собранного в конфигурации allmodconfig"
Отправлено Аноним , 28-Май-16 19:15 
2. Ядро заново пересобирать не надо. Достаточно собрать необходимые модули и установить их.

"Загрузка ядра Linux, собранного в конфигурации allmodconfig"
Отправлено stalkerdroad , 29-Май-16 07:57 
> Достаточно собрать необходимые модули и установить их.

Зачем мне тратить на это время ? Я лучше заранее сразу соберу все существующие в ядре модули. Один раз и навсегда. Сколько они будут места занимать на диске мне пофиг.


"Загрузка ядра Linux, собранного в конфигурации allmodconfig"
Отправлено cmp , 30-Май-16 08:45 
Тогда придется тратить время на перечисление корявых модулей в черном списке, который, конечно, можно слизать у дистрибутива, но с тем же успехом можно слизать и конфиг ядра.

Если бы все было так просто, кто бы стал заморачиваться с конфигурированием?


"Загрузка ядра Linux, собранного в конфигурации allmodconfig"
Отправлено stalkerdroad , 03-Июн-16 02:46 
> Тогда придется тратить время на перечисление корявых модулей в черном списке

Единственное что указал так это vmware драйвер.


"Загрузка ядра Linux, собранного в конфигурации allmodconfig"
Отправлено cmp , 03-Июн-16 04:29 
> Единственное что указал так это vmware драйвер.

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


"Загрузка ядра Linux, собранного в конфигурации allmodconfig"
Отправлено stalkerdroad , 03-Июн-16 13:42 
> то есть, собрал ... корявое,

Всё же работает нормально (у меня норм).

> а "статью" написал не обломался..

Статью написал т.к. проблема редкая и ответа на неё нет в поискових (по крайней мере я искал в англоязычном интернете и не нашёл).


"Загрузка ядра Linux, собранного в конфигурации allmodconfig"
Отправлено cmp , 03-Июн-16 17:44 
> Статью написал т.к. проблема редкая и ответа на неё нет в поискових

Видимо, потому, что никому это не надо, а для "себя" и для истории можно было бы нормально оформить.



"Загрузка ядра Linux, собранного в конфигурации allmodconfig"
Отправлено stalkerdroad , 03-Июн-16 21:03 
Я же не знаю уровень образованности посетителей Опеннета. Я сужу по себе.

Описание параметров, процесс сборки ядра, зачем нужен конфиг allmodconfig - всё это элементарно "гуглится". Описание параметров также есть в программе настройке ядра nconfig. Она есть в исходниках ядра ("make nconfig").

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


"Загрузка ядра Linux, собранного в конфигурации allmodconfig"
Отправлено cmp , 04-Июн-16 06:24 
Гуглится, да не все, особенно бесят топики типа - как настроить блаблабла -
1) берем убунту
2) апт гет инстал блаблабла
3) старт блаблабла

дохрена информативно, и ЭТОТ через пять лет будет таким же.


"Загрузка ядра Linux, собранного в конфигурации allmodconfig"
Отправлено Аноним , 02-Июн-16 07:48 
Понял. Смотри, у тебя основной касяк может быть только по линии загрузки, примерная цепь такая "Контроллер ЗУ - lvm/raid - Драйвер ФС" (тут конечно надо вспомнить про scsi, который является требованием для sata, поддержки стилей разметки жд, и по-моему всё)
Эти товарищи, собранные модулями, вкупе кривособранным initramfs мешают grub находить корневой раздел. Для своей единственной машины, я делал так - всё что необходимо (scsi, sata контроллер, фс) для загрузки уходило в y. Всё остальное - m.
Из плюсов - совершенно не нужен initramfs.
Из минусов - бутается только на конкретном (моём) железе.

"Загрузка ядра Linux, собранного в конфигурации allmodconfig"
Отправлено Xasd , 21-Май-16 10:39 
> CONFIG_CMDLINE_BOOL=n

это ведь такое и есть значение по-умолчанию, так?

> CONFIG_BINFMT_SCRIPT=y

это ведь такое и есть значение по-умолчанию, так?


"Загрузка ядра Linux, собранного в конфигурации allmodconfig"
Отправлено stalkerdroad , 27-Май-16 16:19 
> значение по-умолчанию,

По умолчанию в папке исходников ядра ВООБЩЕ НЕТ никакого конфига. Подаётся команда make и появляется выбранный конфиг. А выбор там большой.


"Загрузка ядра Linux, собранного в конфигурации allmodconfig"
Отправлено stalkerdroad , 27-Май-16 16:43 
> А выбор там большой.

Я имел в виду что видов конфигов там много.


"Загрузка ядра Linux, собранного в конфигурации allmodconfig"
Отправлено anonnnnnnnnnnnnnnnnnnnnnnnn , 31-Май-16 00:40 
Модули, где находятся необходимые драйвера дисковых контроллеров и файловых систем необходимо поместить в initramfs, который положить на boot, fs которого поддерживает grub, и имже грузить ядро и initrd

"Загрузка ядра Linux, собранного в конфигурации allmodconfig"
Отправлено pxel , 01-Июн-16 20:16 
автору спасибо. если кому-то не понятно, то не стоит напрягаться - им это всеравно не понадобится :)
а если понадобится то поймут

"Загрузка ядра Linux, собранного в конфигурации allmodconfig"
Отправлено святая ПротатА , 23-Июн-16 10:54 
Если внимательно читать ридми - то все по порядку и идет.
make ...config
make all
make initrd
скармливание грабу нового образа рам-фс.
Если все собрано модулями - закос под микро ядро, то и надо их где то разместить, пока ядро загрузит  драйвера устройств, и начнет читать с накопителей. Это вроде у линуксоида должно быть в инстинктах.  

"Загрузка ядра Linux, собранного в конфигурации allmodconfig"
Отправлено Нониус , 29-Июн-16 12:54 
Собираю ядро под конкретное железо руками. Не могу понять тех, кто собирает драйвера для железа, которого уже нет, а у сборщика никогда не будет. Идиотизм.

"Загрузка ядра Linux, собранного в конфигурации allmodconfig"
Отправлено stalkerdroad , 29-Июн-16 20:11 
Модули ядра это не только драйвера устройств. А ещё и функции ОС. Такие например как функции фаервола, шейпинга трафика, файловые системы и много чего ещё.