LINUX.ORG.RU

Скомпилировать монолитное ядро


0

1

Еще раз всем привет. Может кто объяснит принцип сборки и компиляции данного ядра? Почитал статьи, делаю make menuconfig, настраиваю, отключаю loadable module support, все сохраняю, потом делаю make, создается в конце bzimage. А дальше что? make modules не делается, читал что просто скопировать этот образ в /boot, и настроить граб для его загрузки, и то что строка initrd не нужна. Разными способами пробовал, не грузит ядро, в основном ошибка kernel panic not syncing attempted to kill idle task. Может я не так соблюдаю весь процесс?


make modules не делается,

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

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

Монолитное. То что нужно проставил, поддержку нужных фс, и тд, а что нет отключил, или просто оставил как было по умолчанию

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

Так что же ты на сайте нормальных поцанов пишешь не по-делу, а про какое-то красноглазие?

anonymous
()

initramfs не только грузит модули, но и монтирует корневую файловую систему и может ещё чего делат. Вы корневую файловую систему ядру указали? Драйверы контроллеров жёстких дисков вкомпилировали в ядро?

не грузит ядро

Кто не грузит ядро?

mky ★★★★★
()

Может кто объяснит принцип сборки и компиляции данного ядра?

Все просто: если все фичи отмечены как Y или N, но не M, ядро монолитное.

Разными способами пробовал, не грузит ядро

С вероятностью 99% ты выкинул что-то нужное. Если конфигуришь ядро для десктопа, забудь об этой идее. Если для embedded-системы, попробуй начать сначала и менять конфигшурацию по шагам.

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

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

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

Я это и имел ввиду, что при отключении той опции, команда установки модулей не требуется. Не так выразился.

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

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

kostik87 ★★★★★
()

монолит, при наличии работоспособности всего железа, делается просто:
make localyesconfig
make -jN, где N=кол-во_ядер+1
make INSTALL_MOD_STRIP=1 modules_install
make install (по желанию - я предпочитаю cp)

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

kostik87

Какие параметры передаёте ядру...?

Ну и на чём находится корень ?

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

Я еще не очень разбираюсь в понятиях.. корень на dev/sda1 если я правильно понял Сам граб конфиг добавлял строку root (hd0,0) kernel /vmlinuz-3.12 ro root=/dev/mapper/vg_user root

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

Он используется только для реализации доступности модулей необходимых для загрузки системы (монтирования корня) или для чего-то ещё ?

PS, мы же не знаем на чём у ТС находится корневая файловая система.

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

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

initrd содержит минимальную систему с необходимым набором утилит для монтирования корневой файловой системы. В вашем случае активации группы томов и монтирования логического тома user в группе томов vg. Для всего этого используется сценарий init в initrd.

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

А так можете читать документацию по CentOS с описанием создания initrd. Но проще использовать initrd от дистрибутивного ядра.

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

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

user1
() автор топика

гугли Ядерную физику для домохозяек v2 и v3, там более-менее расписано что-да-как. Ещё есть http://www.linux.org, там есть тема с описанием почти всех настроек ядра, правда на аглицком.

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

Сообщение о загрузке initrd появляется перед передачей ядру управления.

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

Какой вы используете загрузчик ?

kostik87 ★★★★★
()

selinux отключить? И на госте, и на хосте.

fopen ★★
()

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

Узнать какие модули надо, можно с помощью lsmod на немонолитном ядре.

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

CONFIG_BLK_DEV_INITRD у тебя как сделан?

Еще знаю что initrd можно объеденить с ядром задав CONFIG_INITRAMFS_SOURCE

irton ★★★★★
()

Ты включил подсистемы ATA и нужных ФС? AFAIK у меня такое было при отсутствии одной из них.

staseg ★★★★★
()

если grub2 попробуй загрузить приблизительно так:

menuentry "My kernel" {
        set root=hd0,1
        linux /boot/ker root=/dev/sdb1  quiet splash
}
Если словишь панику, значит ядро уже грузиться, но чего-то ему не хватает.

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

Там на скрине «general protection fault» это больше похоже на багу в virtual box. Другие ядра загружаются? При компиляции вашего ядра указан тот же тип процессора, что и у загружающихся ядер. Virtualbox достаточно свежий?

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

По поводу loadable module support, читал что отключение этой фичи делает ядро монолитным, поэтому отключил. Да подсистему АТА и поддержку моей и нужных фс так же включил.Virtual Box свежий вчера последнюю версию ставил перед установкой.

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

В процессе загрузки, появляется вначале это, успел заскринить http://s35-temporary-files.radikal.ru/db117a8a65924aeab00470ade65c8c7b/-88693... а потом уже после этого сообщения идет строка загрузки, и после нее появляется та, что на прошлом скрине

user1
() автор топика

Еще раз всем привет. Может кто объяснит принцип сборки и компиляции данного ядра?

что там думать-то? Просто вырубаешь все модули, кроме нужных (lsmod подскажет). Их делаешь НЕ модулями(«y»). Всё.

Ядро с модулями даже немножко сложнее собрать, т.к. надо думать, что можно сделать модулями, а что — не получится.

bzimage. А дальше что? make modules не делается, читал что просто скопировать этот образ в /boot, и настроить граб для его загрузки, и то что строка initrd не нужна

так и есть. Монолитному ядру ничего не нужно.

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

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

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

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

ты попробуй на нормальном железе и без LVM, это попроще. Потом делай уже для LVM, а потом и для VBox. Ну и конечно скачай самые свежие варианты того, другого, и третьего.

И да, если делать без LVM и VB, то и initrd тоже не нужен.

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

Да нет другого винта что б установить.. практикуюсь на виртуалке.

флешки тоже нет? Говорю-же, VBox глючная до невозможности. Не, оно можно заставить его работать, но не слишком-то и просто. Особенно протухшие версии.

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

Ну еще раз попробую, и потом с флешки если что..

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

Ну все правильно, потому и написал что «некоторые».

Барри Каулер делал Quirky вроде, там вся система в initrd который в свою очередь объединен с ядром. Ничего же не мешает модули поместить в initrd, они потом подхватятся.

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

я не спорил, просто для ТСа пытался объяснить. Почему может не взлететь.

ИМХО это(монолит) вообще не нужно. Разве что во встроенной(embedded), в которой я не разбираюсь.

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