LINUX.ORG.RU

LZO и mkimage

 


0

1

С gzip все понятно:

host% sh4-linux-objcopy -O binary vmlinux vmlinux.bin
host% gzip --best --force vmlinux.bin
host% ./tools/mkimage -A sh -O linux -T kernel -C gzip -a 0x8C001000 -e 0x8C002000 -n "Linux 2.6" -d vmlinux.bin.gz vmlinux.ub
А если используется LZO?
host% ./tools/mkimage -A sh -O linux -T kernel -C lzop -a 0x8C001000 -e 0x8C002000 -n "Linux 2.6" -d vmlinux.bin.gz vmlinux.ub 
выдает ошибку.

★★★★★

Пять звёзд, а всё ещё призываешь телепатов? Что за ошибка? И почему у тебя во втором случае .gz? Может, потому и ошибка, что ты говоришь lzop, а подсовываешь всё тот же gzip?

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

Пять звёзд, а всё ещё призываешь телепатов?

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

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

Invalid Compression Type - valid names are: none, bzip2, gzip, lzma

Так бы и сказал. Может, он собран так? Попробуй ./configure --help почитать, или как там оно собирается.

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

там тупо make, уже посмотрел сырцы, там есть lzma но нет lzo, патча я тоже не нашел, странная фигня, ядро поддерживает подобный метод сжатия, а утилита от uboot не поддерживает.

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

Странно. Я может не в теме, но у меня, вроде, LZO работает... Просто выбрал в настройках ядра lzo сжатие и собрал.

Вот лог для zip-a

  SYSMAP  System.map
  SYSMAP  .tmp_System.map
  OBJCOPY arch/arm/boot/Image
  Kernel: arch/arm/boot/Image is ready
  GZIP    arch/arm/boot/compressed/piggy.gzip
  AS      arch/arm/boot/compressed/piggy.gzip.o
  LD      arch/arm/boot/compressed/vmlinux
  OBJCOPY arch/arm/boot/zImage
  Kernel: arch/arm/boot/zImage is ready
  UIMAGE  arch/arm/boot/uImage
Image Name:   Linux-3.3.8+
Created:      Fri Jan 11 08:17:06 2013
Image Type:   ARM Linux Kernel Image (uncompressed)
Data Size:    2096632 Bytes = 2047.49 kB = 2.00 MB
Load Address: 70008000
Entry Point:  70008000
  Image arch/arm/boot/uImage is ready

А вот дла lzo:

  OBJCOPY arch/arm/boot/Image
  Kernel: arch/arm/boot/Image is ready
  LZO     arch/arm/boot/compressed/piggy.lzo
  CC      arch/arm/boot/compressed/decompress.o
  AS      arch/arm/boot/compressed/piggy.lzo.o
  LD      arch/arm/boot/compressed/vmlinux
  OBJCOPY arch/arm/boot/zImage
  Kernel: arch/arm/boot/zImage is ready
  UIMAGE  arch/arm/boot/uImage
Image Name:   Linux-3.3.8+
Created:      Fri Jan 11 08:18:56 2013
Image Type:   ARM Linux Kernel Image (uncompressed)
Data Size:    2165688 Bytes = 2114.93 kB = 2.07 MB
Load Address: 70008000
Entry Point:  70008000
  Image arch/arm/boot/uImage is ready

ЧЯДНТ???

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

PS.

Ради интереса вставил в Kernel/scripts/mkuboot.sh :

# Call "mkimage" to create U-Boot image
${MKIMAGE} "$@"
echo "$@" > /home/velik/test.txt

получил:

velik@m-sve:/home/Developer/Work/trunk/scripts$ cat /home/velik/test.txt 
-A arm -O linux -T kernel -C none -a 0x70008000 -e 0x70008000 -n Linux-3.3.8+ -d arch/arm/boot/zImage arch/arm/boot/uImage

Кажется компрессией занимается не mkimage. Или?

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

Укажи какое-нибудь левое сжатие, пусть выплюнет хэлп. Что у тебя за valid names для compression type?

Похоже, вы не обратили внимание, что mkimage вызывается с "-C none". Он не сжимает, а берёт готовый файл.

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

Это не сжатое ядро.

Прикольно! Нафига тогда такая фича в конфигах ядра? Я имею в виду «General setup-->Kernel compression mode»

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

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

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

Фопля! Может вы и правы. Почему «может»? Просто меня смущает, зачем при сборке ядра при разных алгоритмах сжатия запускаются:

GZIP arch/arm/boot/compressed/piggy.gzip

и

LZO arch/arm/boot/compressed/piggy.lzo

К тому же в .cmd файлах стоит, что при сборке ядра запускается lzo или gzip. Типа:

cmd_arch/arm/boot/compressed/piggy.lzo := (cat arch/arm/boot/compressed/../Image | lzop -9 && printf \014\362\100\000) > arch/arm/boot/compressed/piggy.lzo || (rm -f arch/arm/boot/compressed/piggy.lzo ; false)


cmd_arch/arm/boot/compressed/vmlinux := /home/Developer/Toolchain/arm-toolchain/usr/bin/arm-linux-ld -EL    --defsym _kernel_bss_size=280684 --defsym zreladdr=0x70008000 -p --no-undefined -X -T arch/arm/boot/compressed/vmlinux.lds arch/arm/boot/compressed/head.o arch/arm/boot/compressed/piggy.lzo.o arch/arm/boot/compressed/misc.o arch/arm/boot/compressed/decompress.o arch/arm/boot/compressed/string.o arch/arm/boot/compressed/lib1funcs.o -o arch/arm/boot/compressed/vmlinux 


cmd_arch/arm/boot/zImage := /home/Developer/Toolchain/arm-toolchain/usr/bin/arm-linux-objcopy -O binary -R .comment -S  arch/arm/boot/compressed/vmlinux arch/arm/boot/zImage


cmd_arch/arm/boot/uImage := /bin/bash /home/Developer/Work/trunk/Kernel/scripts/mkuboot.sh -A arm -O linux -T kernel -C none -a 0x70008000 -e 0x70008000 -n 'Linux-3.3.8+' -d arch/arm/boot/zImage arch/arm/boot/uImage

Т.е., кажется, Image все-таки попадает сжатым. И т.д. Но у меня сейчас нету времени разбираться с этими деталями. Подождём, кто знает ответ...

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

возможно надо указывать make ARCH=$ARCH zImage(uImage и т.п.)

Да, я так и запускаю. «ARCH=arm uImage»... У меня так и не было времени разобраться прав я или нет, но мне кажется, что выхлопы .cmd файлов говорят, что таки я прав: с конфигурацией ядра вы не только показываете, как ядру распаковываться, но и через его механизмы сборки он сам себя запаковывает так, как вы указали. На mkimage поступает уже сжатое ядро. Поэтому там появляется вызов "-C none". Но меня тоже смущает строка выхлопа сборки «Image Type: ARM Linux Kernel Image (uncompressed)» И к тому же я ожидал бы бОльшей разницы в размере между gzip и lzo. Разница должна быть от >10%. Если разберётесь, отпишитесь тут пжалста. У меня щас запарка и некогда разбираться...

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