Чи можна використовувати vmlinux замість uImage?


9

Я хочу використовувати нестиснене зображення ядра та завантажувати BeagleBoard. Як правило, я використовую uImage для завантаження ядра, яке знаходиться у стисненому форматі. Як використовувати нестиснене зображення ядра?


Ви використовуєте U-Boot як завантажувач, правда?
Жил "ТАК - перестань бути злим"

так! Чи можливо за допомогою uboot?
Шаранья

Відповіді:


7

Наскільки мені відомо, U-Boot не може безпосередньо завантажувати «сирий» зображення ELF ( vmlinux). Потрібно перетворити його у uImageформат, який містить стислий vmlinuxплюс кілька зайвих байтів метаданих, які описують адресу завантаження ядра. U-Boot FAQ 2.19 пояснює, як створити uImage; це досить просто, використовуючи mkimageутиліту у вихідному дереві U-Boot:

 mkimage -A arm -O linux -T kernel -C gzip … -d vmlinux uImage

(Можливо, вам знадобляться додаткові параметри, що вказують на адресу завантаження.)


1
Розпакування uImage під час завантаження потребує певного часу. Мені потрібно мінімізувати це. Тому я подумав, чому я не намагаюся з нестисненим сирим файлом vmlinux.
Шаранья

3
Ефект, якого ви хочете досягти, може бути протилежним наміченому. Час декомпресії зазвичай менший, ніж час копіювання даних із спалаху.
Maciej Kucia

3
 mkimage -A arm -O linux -T kernel -C gzip … -d vmlinux uImage

Змініть gzip у наведеному вище прикладі на жоден , і ви створите некомпресоване зображення, сумісне з u-Boot.


1

Якщо ви використовуєте Buildroot, виберіть uImageвихідний файл ядра ( BR2_LINUX_KERNEL_UIMAGE=y). Компілюйте звичайно, і Buildroot також створить vmlinuxфайл на проміжному кроці. Хоча vmlinuxфайл не скопійовано до /output/imagesкаталогу, його можна знайти ./output/build/linux-custom/(або запустивши find . -name "vmlinux").

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.