суббота, 31 мая 2008 г.

Запуск Linux прямо из Glofiish M700

Это возможно! Сегодня я в этом убедился. Для этого нам понадобится следующее:

1) Ядро Linux
2) Наличие в устройстве карточки MicroSD объёмом не менее 128мб
3) Haret - программа-загрузчик ядра запускающийся прямо из Windows CE
4) Текстовый файл с параметрами загрузки ядра
5) Образ OPIE или GPE

Приступим.

1) Скачаем образ ядра (здесь)
2) Скачаем haret
3) Скопируем всё это хозяйство в память коммуникатора (не на карточку а на встроенную память)
4) Создадим в той папке в которую скопировали, файл default.txt с таким содержанием:
set MTYPE 0x664
set KERNEL "zImage_x500"
set RAMADDR 0x30000000
set RAMSIZE 0x4000000
set CMDLINE "root=/dev/mmcblk0p2 rootdelay=5 panic=360"
bootlinux

5) Необходимо подключить microSD карту к компьютеру (через кардридер или напрямую через USB кабель+WM5Storage), при этом убедится что не один раздел не смонтировался автоматически.

6) Создадим разделы на карточке согласно такой схеме - минимум 50мб для раздела с ext3, всё оставшееся свободное пространство оставим для fat16. Для своей карты объемом 2ГБ я разбил диск на разделы по такой схеме:
+================================================+
| 1800мб - FAT16                 | 213мб - EXT3  |
+================================================+
для выполнения этого шага использовалась утилита cfdisk.

7) Необходимо записать на созданные разделы файловую систему:
$/sbin/mkfs.msdos /dev/sdc1 -n WINDOWS
$/sbin/mkfs.ext3 /dev/sdc2 -j -L LINUX

где:
/dev/sdc - имя устройства microSD карты
/dev/sdc1 - первый раздел с windows fat
/dev/sdc2 - второй раздел с linux ext3

8) Скачаем OPIE например отсюда

9) Скопируем всё содержимое скачаного архива на раздел с линуксом (/dev/sdc2 в моём случае)

10) Отмонтируем карточку с компьютера(если использовался кард-ридер), вставим обратно в зверька, убедимся что FAT раздел на карточке виден с КПК

Перед загрузкой ядра обязательно отключаем проверку пароля при загрузке мастдая, иначе потом придётся делать хард-ресет!

11) Запускаем haret, нажимаем кнопку RUN, и... нервно ожидаем загрузки....

Приятного использования :)

Да, совсем забыл сказать, чтобы обратно перезагрузится в винду нажмите одновременно Soft-Reset и клавишу выключения (только не удерживая долго)



          
    
          












Полезные программы для OPIE, а также пакеты с локализацией можно скачать здесь

Полезные ссылки:
1) http://linux.cybernet.net.ru (битая?)
2) http://www.handhelds.org
3) http://ipkgfind.handhelds.org

вторник, 27 мая 2008 г.

Конвертирование APE/CUE в OGG Vorbis

Есть необходимость конвертировать файл формата Monkey's Audio (APE) в формат OGG Vorbis при этом целевой файл будет необходимо ещё "порезать" на треки. Для этого понадобятся утилиты mac, oggenc и mp3splt, а также собственно файл CUE со схемой разметки треков. Для упрощения использования сего действия был мною собственноручно написан bash-скрипт, я назвал его apecue2ogg:
#!/bin/sh
INPUT_APE=$1
INPUT_CUE=$2
OUT_DIR=$3
MAC="/usr/bin/mac"
OGGENC="/usr/bin/oggenc"
MP3SPLT="/usr/bin/mp3splt"
TMP="/tmp/$(basename "$INPUT_APE")"
progname=$(basename "$0")

help()
{
echo "Использование: $progname ФАЙЛ1.ape ФАЙЛ2.cue [КАТАЛОГ_ДЛЯ_ВЫВОДА]"
echo
}

if test $# -lt 2; then
help >&2
exit 1
fi

if ! [ -e $MAC ]; then
echo "Программа $(basename "$MAC") (Monkey's Audio) не установлена" >&2
echo "Попробуйте скачать её с сайта http://sourceforge.net/projects/mac-port/" >&2
echo >&2
exit 1
fi

if ! [ -e $OGGENC ]; then
echo "Программа $(basename "$OGGENC") не установлена" >&2
echo >&2
exit 1
fi

if ! [ -e $MP3SPLT ]; then
echo "Программа $(basename "$MP3SPLT") не установлена" >&2
echo "Попробуйте скачать её с сайта http://mp3splt.sf.net" >&2
echo >&2
exit 1
fi

if test "$OUT_DIR" == ""; then
OUT_DIR="."
fi

if ! [ -d "$OUT_DIR" ]; then
echo "Каталог $OUT_DIR не существует!" >&2
echo >&2
exit 1
fi

if (! $MAC "$INPUT_APE" "$TMP.wav" -d ); then
exit 1
fi

if (! $OGGENC -q 8 "$TMP.wav" -o "$TMP.ogg" ); then
exit 1
fi

rm "$TMP.wav"

if (! $MP3SPLT -c "$INPUT_CUE" "$TMP.ogg" -o "@n @a - @t" -d "$OUT_DIR" ); then
exit 1
fi

rm "$TMP.ogg"

Сохраним его например в каталоге /usr/bin. Используем например так:
$apecue2ogg 'Пилот - ЧБ.ape' 'Пилот - ЧБ.cue'

И через несколько минут в текущем каталоге можно будет созерцать "нарезанные" треки. Пожалуй остаётся только привести теги в порядок например с помощью easytag

понедельник, 19 мая 2008 г.

Мой кот предпочитает чежское :)

Вообще-то он пьёт любое пиво, главное чтобы с него газы вышли, он их не любит :)


А потом нажравшись отправляется спать:


А это он после дня рожденья:


Вот такой у меня кот :)

Создаём программы для WinMobile на Linux'e

Если вы хотите писать/написать какую/ие-то программы для своего PDA удобно располагаясь при этом в любимой ОС(линуксе конечно), то для этого можно воспользоватся компилятором CeGCC. Вот как я устанавливал этот замечательный кросс-компилятор на свой Debian:

Сначала переходим в свой домашний каталог:
$cd ~

Часть 1:
----------------------------------
Качаем cegcc с сайта http://sourceforge.net/projects/cegcc. Я качал версию 4.3.0:
~$wget -c http://switch.dl.sourceforge.net/sourceforge/cegcc/cegcc-gcc430.tar.gz

Но имеется проблемка, у меня система amd64, а скомпилированную cegcc можно загрузить только версию для i386. Поэтому если вы не счастливый обладатель amd64 то можете не читать строки ниже, а смело переходите к части 2.
Устанавливаем ia32-libs:
$sudo apt-get install ia32-libs

Загружаем необходимый пакет libgmp3:
$wget http://ftp.de.debian.org/debian/pool/main/g/gmp/libgmp3c2_4.2.2+dfsg-3_i386.deb

Создаём каталог /usr/linux32:
$sudo mkdir /usr/linux32

Распаковываем туда наш deb-пакет:
sudo dpkg -x 'libgmp3c2_4.2.2+dfsg-3_i386.deb' /usr/linux32

Чтобы эту библиотеку система могла найти создадим файл /etc/ld.so.conf.d/linux32.conf с таким содержимым:
/usr/linux32/usr/lib
/usr/linux32/lib

и выполним ldconfig:
$sudo /sbin/ldconfig

Часть 2:
----------------------------------
Переходим в корневой каталог:
$cd /

Распаковываем архив с CeGCC:
$sudo tar --gzip -xvf ~/cegcc-gcc430.tar.gz

В результате, в /opt должны распаковаться 2 папки - cegcc и mingw32ce, создадим для них отдельную папку и переместим туда:
$sudo mkdir /opt/wince
$cd /opt/wince
$sudo mv ../cegcc .
$sudo mv ../mingw32ce .

Теперь, для удобства вызова можно создать ссылки на компилятор cegcc в /usr/bin:
$sudo ln -s /opt/wince/mingw32ce/bin/arm-mingw32ce-gcc /usr/bin

Проверяем работоспособность компилятора. Для этого создадим файл test.c с таким содержанием:
#include
int WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nCmdShow)
{
MessageBoxW(0, L"HELLO WORLD!", L"HELLO!", 0);
}

Попытаемся скомпилировать:
$ arm-mingw32ce-gcc -o test.exe test.c

Должен получится целевой файл test.exe. При использовании на своём девайсе не забудьте в папку с программой положить /opt/wince/cegcc/arm-cegcc/lib/cegcc.dll
Пользуемся!

Часть 3:
----------------------------------
Не так давно trolltech создала версию своей кросплатформенной библиотеки Qt для Windows CE платформы. В связи с таким событием появилось желание создавать qt-программы на линукс для целевой платформы Windows Mobile. Но есть проблема: в состав пакета программ cegcc не входит компилятор "arm-mingw32ce-g++". Основываясь на информации из списка рассылки http://www.mail-archive.com/cegcc-devel@lists.sourceforge.net/msg01155.html работа над компилятором g++ ещё не закончена. Так что придется пока подождать....