LINUX.ORG.RU

Установка ядра на флешку


0

1

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

В общем есть флешка (карта памяти compact flash) с установленным на ней линуксом. На флешке два раздела: один под Grub, второй под ядро, initrd и System.map. Проект на этой флешке сделан уже давно (два-три года назад). Стоит там два ядра версий 2.6.х. Скрипт init в файлах initrd откорректирован так, чтобы постоянная файловая система не монтировалась, а работа велась в initramfs, которая крутится в оперативной памяти. Все работает великолепно.

Я сейчас пробую поставить в этот проект новое ядро. Делаю это так: компилирую ядро, копирую bzImage и System.map на флешку и вношу соответствующие изменения в меню Grub. Оба файла, разумеется, переименовываю как положено. Initrd беру от старого проекта.
Проблема в следующем: если я компилирую монолитное ядро, то оно хоть и с руганью, но загружается и работает. Но если при конфигурации я допускаю подключение модулей, то ничего не происходит: просто мигающий курсор после выбора этого ядра в загрузчике и все. Точно знаю, что старые ядра для этого проекта модульные.

Подскажите пожалуйста, в чем может быть проблема? Возможно это никак не связанно с модульностью? А если связанно, то как мне перенести вновь откомпилированное ядро на флешку так, чтобы оно запустилось.
Заранее спасибо!

Надо распаковать initrd и положить в /lib/modules директорию с модулями нового собранного ядра, а потом опять запаковать initrd.

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

Установите их командой:

make modules_install
После чего можете скопировать директорию /lib/modules/версия_собранного_ядра/ из системы, на которой собирали ядро.

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

Ну тогда, возможно вы собираете модулем, скажем поддержку ramfs или чего-либо другого, что имеет отношение к initrd.

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

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

Не совсем понял.

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

Что за модули, кстати, в наличии?

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