суббота, 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

17 комментариев:

Anonymous комментирует...

Спасибо автору за отличную статью! Только вот сервер linux.cybernet.net.ru не работает... Может кто-то поделиться альтернативной ссылкой на ядро (файл ZImage_x500)?

anterior комментирует...

Да пожалуйста ;)

Ссылку на ядро поправил

Anonymous комментирует...

Статья и правда хороша, но есть вопрос, где брал zImage?

anterior комментирует...

zImage брал с linux.cybernet.net.ru который сейчас сдох, а те в свою очередь брали/модифицировали похоже из HP H1940 (http://handhelds.org/moin/moin.cgi/HpIpaqH1940Downloads)

boris-wember комментирует...

ребят а функции телефона под линуксом работать будут в м700?

Balrak комментирует...

а как запустить утилит sfdisk?ничего в нете не могу найти.Просьба по подробней и с 7 пунктом тоже.

Balrak комментирует...

а как запустить утилит sfdisk?ничего в нете не могу найти.Просьба по подробней и с 7 пунктом тоже.

Balrak комментирует...

Обьясните мне как запустить утилет cfdisk(просьба по подробней).И еще обьяснить 7 пункт(где это вообще писать?)

Balrak комментирует...

а для этого не надо oc linux на компе?

Anonymous комментирует...

вообщем у меня X600 все зделал как написано. Но виснет на Jumping to Kernel...

anterior комментирует...

Шаги 6, 7 делаются на ПК с установленной ОС GNU/Linux. Но никто не запрещает это сделать из под Windows.

по пункту 6 и 7: можно использовать PartitionMagic вместо cfdisk например

Функции телефона, GPS, Wifi, Bluetooth, работать не будут, кнопки клавиатуры тоже. На данный момент не существует драйверов для этих модулей.

Насчёт запуска из под Х600: Ядро ссылка на который в этой статье предназначено для работы исключительно на моделях Х500/М700.

Zueuk комментирует...

Мне инересно, как получаются вот эти строчки:

set MTYPE 0x664
set RAMADDR 0x30000000
set RAMSIZE 0x4000000

Как их прописывать? У меня не M700, поэтому, думаю, нужно подгонять под своё устройство.

PS Мой аппарат - X800. По ссылке человек успешно запустил Линукс на M800 http://www.linuxphone.ru/2008/11/harald-welte-ports-openmoko-to-eten-glofiish-m800/
Интересно развить тему.

Nick комментирует...

попытался я на свой м700 поставить.
делаю все по инструкции, но в итоге виснет на строчке:
"Warning: unable to open an initial console.
Kernel panic - not syncing: No init found.
Try parsing init = option to kernel.
Rebooting in 360 seconds."
пс: до этого писало, что невозможно монтировать ехт3 раздел и пыталось монтировать его как ехт2 (без журналирования). выдавало все равно ошибку. отформатировал раздел в ехт2 - теперь единственная ошибка - то что я написал выше.
ппс: haret уже есть 0.5.2

Nick комментирует...

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

Zueuk комментирует...

Подсказать не смогу, так как сам еще стою на месте.
У меня на стадии загрузки, после запуска haret, всё виснет. Ядро от G500 застывает на "Jumping to Kernel", а со своим, скомпилированным ядром, устройство отключается и помогает только извлечение аккумулятора. После вставки аккумулятора обратно, включается нормально.

Nick комментирует...

а anterior молчит что-то...

Антон комментирует...

я поставил на x600 со своим ядром