Назад | Перейти на главную страницу

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

У меня встроенное устройство с подключенной вспышкой SPI. В основном это означает, что устройство загружает свой загрузчик и ядро ​​Linux с небольшой флэш-памяти.

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

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

Мой загрузчик очень ограничен, поэтому я не могу прочитать новое ядро ​​с жесткого диска.

коротко

a) CPU comes out of reset, reads its bootloader from flash
b) bootloader boots, inits basic hardware, loads Linux kernel from flash
c) kernel boots, inits more hardware, and reads a second kernel from a hard disk
d) I'd like to switch to the second kernel at this point

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

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

любые советы будут оценены!

Не нужно делать ничего слишком сложного. Просто позвони kexec для загрузки в новое ядро. Это не могло быть проще ... если только ваше старое ядро ​​не было каким-то образом скомпилировано без поддержки kexec.

Взгляните на UBOOT, у меня это работало раньше.

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