Так же желательно иметь консольный кабель - это единственный способ отследить ошибки и проблемы при перепрошивке на самосборные (и не только) прошивки.
Ставим виртуальную систему и налаживаем простой обмен файлов
И так качаем и ставим VirtualBox http://www.virtualbox.org/
Далее устанавливаем туда линукс, можно взять любой дистрибутив который нравится, мой выбор пал на Mandriva 2010 в частности ftp://ftp.linux.kiev.ua/pub/Linux/Mandr ... 0-i586.iso При установке выделаем памяти 512-1024мб если есть столько разумеется, и размер диска в раене 10гиг можно и больше примерно пополам что в рут систему что в пользовательскую. Место понадобится и поскольку менять размер виртульной системы проблематично лучше заранее выделить побольше тем более что образ расширяется динамически.
После того как все установится можно использовать как графический интерфейс линукс так и консоль кому что ближе я лично использую конcоль поэтому при вводе логина жмем ctrl+alt и f1 попадаем в консоль и логинимся лучше все делать под пользователем root ибо нам неважно что мы тут натворим а развязанные руки будут очень кстати.
Первое что нужно сделать так это наладить какой-то обмен файлов между виртуалкой и реальной системой способов уйма мы же рассмотрим самый простой с учетом что основная система у нас виндовс. Делаем какую-нибудь папку в виндовсе скажем c:\incoming и шарим ее с полными правами. Далее в линуксе создаем папку например share команда mkdir /share и соединяем их командой mount -t cifs //192.168.56.1/incoming /share -o user=nick Где пользователь nick (естесвтено меняем на свой логин в виндовсе) и IP адрес 192.168.56.1 это адрес виртуального адаптера (по умолчанию он таким и будет)
Все связь наладили, поскольку виртуальную машину можно сохранить набирать это заново нам не придется.
Необходимые утилиты для сборки/разборки
Разархивируем все и копируем в /usr/bin предварительно положив этот файл в incoming командами:
- Code: Select all
cp /share/tools.tar ./
tar xf tools.tar
rm -f tools.tar
mv mksquashfs mkyaffs2image unsquashfs unyaffs /usr/bin
Работаем с прошивкой
Разборка
Копируем install.img в папку incoming далее в линуксе создаем рабочую папку где захочется хоть в корне хоть в домашних директориях зависит от того где оно нам надо или даже где осталось больше свободного места посмотреть это можно командой df -m в примере рассмотрим вариант с папкой asus созданной в корне. Переходим в нашу папку cd /asus и выполняем следующие команды:
- Code: Select all
cp /share/install.img ./
tar xf install.img
rm -f install.img
Получим разобранный образ, теперь извлекаем корневую систему она находится в папке package2 (конечно папка может называться как угодно, но как правило она там всего одна детально смотрите файл configuration.xml) имя файла по умолчанию squashfs1.img или yaffs2_1.img в зависимости от файловой системы. Переходим в папку package2 cd package2 и выполняем следующие команды:
Если у нас файловая система squashfs
- Code: Select all
unsquashfs squashfs1.img
rm -f squashfs1.img
Получим папку squashfs-root
Если yaffs2 (учтите что в отличии от squashfs при разпакове дополнительная директория не создается и все валится туда где лежит образ поэтому лучше создать дополнительную папку например fs переметить туда образ и распаковать там)
- Code: Select all
mkdir fs
mv yaffs2_1.img fs
cd fs
unyaffs yaffs2_1.img
rm -f yaffs2_1.img
Для удобства просмотра файлов можно использовать midnight commander команда mc
Сборка
Здесь тоже ничего сложного, для начала пакуем папку usr/local/etc корневой системы образа если конечно мы вносили туда какие-то изменения. Для этого переходим туда если squash cd /asus/package2/squashfs-root/usr/local/etc если yaffs2 cd /asus/package2/fs/usr/local/etc и пакуем это все командой tar cjf usr.local.etc.tar.bz2 * После чего перемещаем полученный файл usr.local.etc.tar.bz2 в папку package2 c заменой, командой mv или через файл менеджер mc как вам удобнее. (Этот файл может быть как формата bz2 так yaffs2 все зависит от прошивки, опять же смотрите конфигурацию)
Собираем корень, возвращаемся в папку package2 cd /asus/package2 и выполняем следующие:
Если пакуем squash тогда:
- Code: Select all
mksquashfs squashfs-root squashfs1.img
rm -rf squashfs-root
Если yaffs2:
- Code: Select all
mkyaffs2image fs yaffs2_1.img
rm -rf fs
Возвращаемся в корень распакованного образа cd /asus правим configuration.xml если требуется (например вы хотите поменять размер файловой системы /usr/local/etc или скажем поменять корневую файловую систему с одного типа на другой) и пакуем образ обратно с перемещением его в виндовс командами:
- Code: Select all
tar cf install.img *
mv install.img /share
Адаптация
К примеру бут код вашего плеера не поддерживает сжатую систему squashfs тогда у нас есть как минимум два варианта либо перепаковать в yaffs2 и урезать место под usr/local/etc или создать полусжатую систему (упаковав часть системы в squash и основной корень в yaffs2) о ней и пойдет речь, собственно идея проста основной объем занимаемого места находится в папке usr/local/bin ее и пакуем скажем в bin.img с помощью mksquashfs далее удаляем все содержимое папки bin и проделываем все те махинации выше что я описывал с небольшими изменениями в usr/local/etc/rcS файле а именно нам необходимо добавить одну строчку куда-нибудь в самое начало:
- Code: Select all
busybox mount -o loop,ro -t squashfs /usr/local/bin.img /usr/local/bin
Вот и весь фокус, перед тем как паковать все в файле configuration.xml нам нужно будет поменять вот это:
- Code: Select all
<image type="squash">
<fileName>package2/squashfs1.img</fileName>
<mountPoint>/</mountPoint>
</image>
На это:
- Code: Select all
<image type="yaffs2">
<fileName>package2/yaffs2_1.img</fileName>
<mountPoint>/</mountPoint>
</image>
В целом все, незабываем так же при необходимости встраивать эмулятор пульта...
###################
Вот небольшой пример использования вышеизложенного (конверсия с одной FS в другую, использование полусжатой FS, интеграция эмулятора RC) тут конечно присутствует и небольшой хак dvdplayer'a типа защита но это мелочи. Данный пример адаптирует прошивку sdk4 от iconbit v1.8 для apacer al460
В архиве присутствуют утилиты для распаковки FS под виндовс, для того чтобы было максимально понятно и прозрачно что я сделал скачайте и установите examdiffpro, разархивируйте все образы включая файловые системы в две разных папки и потом сравните их. Программа очень удобная все вам расскажет и покажет, но перед сравнением зайдите в настройки раздел Dir Comparsion и снимите галочку если стоит с Consider files with different timestamps different
http://www.multiupload.com/Z8U30ULITF
ps: актуальная инструкция (используем инструменты FarVoice)