Попытался собрать материал по модификации нашего плеера.
Для начала несколько полезных ссылок:
Форум IXBT : перейти
Форум ICONBIT: перейти
PlayOn!HD альтернативные прошивки, инструкции: перейти
Англоязычный сайт Minimodding: перейти
Англоязычный сайт XMBC: перейти
Англоязычный сайт Oplayware: перейти
Цель – поставить софт из optware. Ну и еще немного твиков.
Для начала прошиваем плеер прошивкой HDP_R3_UN_112PAL_r00.rar . После прошивки плеер становится ASUS O!PLAY Air HDP-R3 только без Wifi и картридера.
Далее делаем начальные установки: прописываем вручную IP, язык и т.п. Потом заходим в плеер по telnet. Логин root, пароля нет.
Code:
[TELNET] CONNECT (<unnamed>/192.168.1.8)
Venus login: root
warning: cannot change to home directory
BusyBox v1.1.3 (2010.01.21-03:14+0000) Built-in shell (ash)
Enter 'help' for a list of built-in commands.
/ #
Далее меняем родной RootApp на патченный. Разархивируем архив rootapp.tgz , например, на флешку. Потом флешку вставляем в плеер. Исполняемый файл RootApp и файлы rc.suspend, rc.wakeup надо положить в /usr/local/etc.
Определяем как смонтировалась наша флешка:
Code:
/ # df
Filesystem 1k-blocks Used Available Use% Mounted on
/dev/root 111232 87520 23712 79% /
/dev/mtdblock/2 40960 1272 39688 3% /usr/local/etc
/dev/rd/0 40 40 0 100% /mnt/rd
/dev/scsi/host3/bus0/target0/lun0/part1 1970272 119072 1851200 6% /tmp/usbmounts/sda1
Как видим что она смонтировалась как /tmp/usbmounts/sda1. Теперь копируем с нее файлы в память плеера.
Code:
mount / -o remount,rw
/ # cp /tmp/usbmounts/sda1/RootApp /usr/local/etc
/ # cp /tmp/usbmounts/sda1/rc.suspend /usr/local/etc
/ # cp /tmp/usbmounts/sda1/rc.wakeup /usr/local/etc
rc.suspend выполняется перед уходом в standby по кнопке с пульта.
rc.wakeup выполняется после поднятия системы по кнопке с пульта.
Файлы выполняются из RootApp, все прикладные функции - то что мы видим на экране остаются в DvdPlayer и не меняются.
Теперь, чтобы всё заработало, надо в файлике rcS (кстати, это скрипт, который отрабатывает при старте плеера, по типу post скриптов роутера) изменить меcто запуска плеера:
Code:
vi /usr/local/etc/rcS
ищем
Code:
echo Running dvdplayer with RootApp
./RootApp DvdPlayer&
меняем
Code:
echo Running dvdplayer with RootApp
/usr/local/etc/RootApp DvdPlayer&
Теперь правим файлы rc.suspend и rc.wakeup. Я в первом удалил все, а во втором прописал reboot. Для начала работы этого достаточно.
Теперь перегружаемся:
После перезагрузки проверяем, что плеер завелся с новым RootApp:
Code:
/ # ps
PID Uid VmSize Stat Command
1 root 364 S init
…….
181 root 168 S /usr/local/etc/RootApp DvdPlayer
183 root 4188 S < DvdPlayer
184 root 168 S /usr/local/etc/RootApp DvdPlayer
….
Теперь займемся жестким диском. У меня 500Гб USB. Разбивать будем в 2 раздела ext3. Почему ext3? Потому, что Самба не хочет работать нормально с NTFS. По крайней мере у меня. Да и нативная ФС в linux – ext3. Первый раздел будет под программы, 2-й – фильмы, музыка и т.п. Вытаскиваем флешку и подключаем жесткий диск. Далее смотрим на него:
Code:
/ # fdisk -l
Disk /dev/sda: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 2 60729 487797660 7 HPFS/NTFS
/dev/sda2 1 1 8001 83 Linux
Partition table entries are not in disk order
/ #
Как видим он определился как /dev/sda, у меня на нем уже 2 раздела есть. Вобщем удаляем все.
Code:
/ # umount /tmp/usbmounts/sda2
/ # umount /tmp/usbmounts/sda1
/ # fdisk /dev/sda
The number of cylinders for this disk is set to 60801.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)
Command (m for help): d
Partition number (1-4): 1
Command (m for help): d
Selected partition 2
Смотрим, что диск не разбитый:
Code:
Command (m for help): p
Disk /dev/sda: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
Command (m for help):
Создаем первый раздел. Я решил, что для программ мне 200 метров хватит.
Code:
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-60801, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-60801, default 60801): +200M
Command (m for help): t
Selected partition 1
Hex code (type L to list codes): 83
Command (m for help):
Теперь 2-й раздел. Используем все оставшееся место:
Code:
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (26-60801, default 26):
Using default value 26
Last cylinder or +size or +sizeM or +sizeK (26-60801, default 60801):
Using default value 60801
Command (m for help): t
Partition number (1-4): 2
Hex code (type L to list codes): 83
Command (m for help):
Смотрим, что получилось:
Code:
Command (m for help): p
Disk /dev/sda: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 1 25 200781 83 Linux
/dev/sda2 26 60801 488183220 83 Linux
Command (m for help):
Сохраняемся:
Code:
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
После проверяем не подмонтировался ли винт. Если да, то опять отключаем.
Code:
/ # df
Filesystem 1k-blocks Used Available Use% Mounted on
/dev/root 111232 87520 23712 79% /
/dev/mtdblock/2 40960 1556 39404 4% /usr/local/etc
/dev/rd/0 40 40 0 100% /mnt/rd
/dev/scsi/host3/bus0/target0/lun0/part1 7745 3980 3365 54% /tmp/usbmounts/sda1
/ # umount /tmp/usbmounts/sda1
/ #
Форматируем разделы:
Code:
/ # mkfs.ext3 /dev/sda1
/ # mkfs.ext3 /dev/sda2
Все жесткий диск готов к работе.
Теперь займемся подключением и установкой пакетов из optware.
Code:
mount / -o remount,rw
/ # mkdir /opt
В конец файла /usr/local/etc/rcS вставляем следующее:
Code:
=HACKING===
PREFIX=/tmp/usbmounts
while [ ! -e $PREFIX/sda1 ]
do
sleep 2
done
if [[ -e $PREFIX/sda1 -a -d $PREFIX/sda1 ]]
then
mount / -o remount,rw
umount /tmp/usbmounts/sda1
rm -r /tmp/usbmounts/sda1
mount /dev/sda1 /opt
mount /dev/sda1 /opt -o rw,remount
mount / -o remount,r
/opt/etc/init.d/rc.unslung start
fi
Перегружаемся. Проверяем:
Code:
/opt # df
Filesystem 1k-blocks Used Available Use% Mounted on
/dev/root 111232 87520 23712 79% /
/dev/mtdblock/2 40960 1560 39400 4% /usr/local/etc
/dev/rd/0 40 40 0 100% /mnt/rd
/dev/sda1 194442 4131 180272 2% /opt
/dev/scsi/host2/bus0/target0/lun0/part2 480522388 131232 455981996 0% /tmp/usbmounts/sda2
Теперь у нас есть каталог /opt для установки программ. Также удален /tmp/usbmounts/sda1, чтобы плеер его не видел.
Теперь в файле /usr/local/etc/profile оформляем секцию # Path manipulation таким образом:
Code:
# Path manipulation
if [ `id -u` = 0 ]; then
pathmunge /sbin
pathmunge /usr/sbin
pathmunge /usr/local/sbin
pathmunge /opt/bin
pathmunge /opt/sbin
fi
Если будем ставить mc, то прописываем в конец
Code:
TERM=xterm
export TERMINFO=/opt/share/terminfo
alias mc="mc -c"
Все! Теперь ставим ipkg.
Code:
mkdir /opt/tmp
mkdir /opt/tmp/ipkg
cd /opt/tmp
wget http://www.kovari.priv.hu/download/ipkg-cl.tgz
tar -xvf ipkg-cl.tgz
mv /opt/tmp/ipkg-cl /usr/local/bin/
rm ipkg-cl.tgz
wget http://ipkg.nslu2-linux.org/feeds/optware/oleg/cross/stable/uclibc-opt_0.9.28-13_mipsel.ipk
ipkg-cl install uclibc-opt_0.9.28-13_mipsel.ipk
wget http://ipkg.nslu2-linux.org/feeds/optware/oleg/cross/stable/ipkg-opt_0.99.163-10_mipsel.ipk
ipkg-cl install ipkg-opt_0.99.163-10_mipsel.ipk
rm *.ipk
/opt/bin/ipkg update