Информация актуальна для медиацентров на ОС Linux и Linux-Qt с bin-прошивками (TVIP S213/S300/S310).
Для извлечения прошивки понадобится утилита mktvipfw. Для linux/i386 она доступна по адресу: http://update.tvip.ru/utils/mktvipfw.gz
mktvipfw - Tool for making/extracting tvip_firmware, version: 2.0.0 Usage: mktvipfw [OPTION] Available options: -h print this text and exit -b add 0xFF bytes to the end of images if it size is not divided by 1024 -a <blockname>=<filename> use file for block name when creating firmware -t <type> device type -v <version> firmware version -x <fileName> extract firmware file to current directory -p <prefix> use <prefix> for .bin and .info file instead of default
Прошивку можно скачать по адресу: http://update.tvip.ru/stb/<модель>/<ос>/release/tvip_firmware.bin
Здесь, модель - модель медиацентра, например s300; ос - тип ОС (linux или linux-qt).
Распаковка прошивки:
./mktvipfw -x tvip_firmware-s300.bin Extracting firmware "tvip_firmware-s300.bin" good fw header type = s300, ver = 1.1.0 blockName = kernel blockName = rootfs blockName = splash blockName = uboot $ ls -la total 31540 drwxr-xr-x 3 vovan vovan 4096 Feb 7 15:09 . drwxr-xr-x 22 root root 4096 Feb 1 06:40 .. -rw-rw-r-- 1 vovan vovan 3441630 Nov 6 16:59 kernel.img -rwxrwxr-x 1 vovan vovan 61894 Nov 6 16:44 mktvipfw -rw-rw-r-- 1 vovan vovan 28499968 Nov 6 16:59 rootfs.img -rw-rw-r-- 1 vovan vovan 2764854 Nov 6 16:59 splash.img -rw-rw-r-- 1 vovan vovan 327684 Nov 6 17:45 uboot.img -rw-r--r-- 1 vovan vovan 34706580 Nov 5 14:40 tvip_firmware-s300.bin
Чтобы извлечь файлы прошивки, необходимо смонтировать образ rootfs(Начиная с версии прошивки 3.1.0 - монтирование образа rootfs невозможно. см ниже) и скопировать файлы из него:
sudo mount -t cramfs -o loop ./rootfs.img /tmp/rootfs/mc sudo cp -aR /tmp/rootfs /tmp/newrootfs
Теперь в каталог /tmp/newrootfs/ можно вносить необходимые изменения.
Сборка нового образа rootfs из каталога /tmp/newrootfs/:
sudo mkcramfs /tmp/newrootfs newrootfs.img Directory data: 23960 bytes Everything: 27856 kilobytes Super block: 76 bytes CRC: 318254da
для ubuntu утилита mkcramfs входит в пакет cramfsprogs
Сборка прошивки с новым образом rootfs:
./mktvipfw -a kernel=kernel.img -a rootfs=newrootfs.img -a splash=splash.img -a uboot=uboot.img -t s300 -v "my_provider_1.1.0" Using default prefix "tvip_firmware-s300-my_provider_1.1.0" for filenames Writing tvip_firmware-s300-my_provider_1.1.0.bin Writing block "kernel" from "kernel.img" Writing block "rootfs" from "newrootfs.img" Writing block "splash" from "splash.img" Writing block "uboot" from "uboot.img" Successfully written tvip_firmware-s300-my_provider_1.1.0.bin Writing tvip_firmware-s300-my_provider_1.1.0.info Successfully written tvip_firmware-s300-my_provider_1.1.0.info
Для распаковки образа rootfs прошивки 3.1.0 и выше потребуется модифицированный пакет cramfstools http://sourceforge.net/projects/cramfs/
patch:
--- linux/cramfs_fs.h_orig 2002-02-20 11:03:32.000000000 +0300 +++ linux/cramfs_fs.h 2014-06-26 17:56:28.454219511 +0400 @@ -18,7 +18,7 @@ */ #define CRAMFS_MODE_WIDTH 16 #define CRAMFS_UID_WIDTH 16 -#define CRAMFS_SIZE_WIDTH 24 +#define CRAMFS_SIZE_WIDTH 26 #define CRAMFS_GID_WIDTH 8 #define CRAMFS_NAMELEN_WIDTH 6 #define CRAMFS_OFFSET_WIDTH 26
Бинарная сборка утилит cramfstools для платформы linux i386
Распаковка rootfs в папку current_rootfs:
./cramfsck -x current_rootfs rootfs.img
Создание образа rootfs
cd current_rootfs ../mkcramfs . ../newrootfs.img