[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: buster: OpenSSL в initramfs



Alexander Galanin <al@galanin.nnov.ru> wrote:
> 26.04.2019 22:48, Andrey Jr. Melnikov пишет:
> >> Я попробовал перепаковать initrd.gz с помощью xz -9. Было 8111803 байт, 
> >> стало 5919008, но это больше 5 Мб. Всё равно б не помогло.
> > 
> > Эм. У тебя там весь SPI-флеш чтоль 8 мегабайт? Новый напаять не вариант?

> Знаешь ведь, наверно, что разбивка mtd в u-boot задаётся через
> редактирование исходников. А перекомпилировать и перепрошивать его я не

u-boot написан таким образом, что знает только про несколько критических
вещей - размер самого себя в блоках от начала флешки, размер своего
енвайромента (тут возможен вендорский хак со своим art/firmware/bloatware
кусоком) и после всего этого начинается kernel. Полная длинна флеша u-boot
не интересует никак. Ему нужно знать откуда считать uImage заголовк,
загрузить необходимое количесто байт за ним (kernel), проверить crc,
распаковать и передать управление. 

В старых (так любимых всякими вендорами похачить код и зажать) версиях - вся
эта магия была на дефайнах с математикой через размер стираемой страницы, в
новых - к математике вокруг
CONFIG_SYS_FLASH_BASE + CONFIG_ENV_OFFSET + CONFIG_ENV_SIZE
https://elixir.bootlin.com/u-boot/v2019.04/source/include/environment.h#L24
добавились пляски вокруг dts (но там обычно только описатели оборудования) и
скриптов вида:

nand read 0x70000000 0x200000 0x300000; bootm 0x70000000

(где 0x70000000 куда грузим имадж, 0x200000 оффсет от начала флешки кратный
размеру страницы, 0x300000 длинна загружаемого куска кратная размеру
страницы.);

т.е. если раньше была некая уверенность, что за u-boot-env можно найти
uImage с ядром и прочее - то теперь этот uImage может находиться где угодно
и как угодно.


Reply to: