Open Source & Linux Lab

It's better when it's simple

User Tools

Site Tools


etc:common_activities:olpc:build_custom_images

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Last revisionBoth sides next revision
etc:common_activities:olpc:build_custom_images [2008/10/02 23:42] zpsetc:common_activities:olpc:build_custom_images [2008/10/12 16:09] zps
Line 9: Line 9:
  
  
-===== Список репозитариев OLPC =====+===== Опыт сборки прошивки с собственным ядром =====
  
-==== Проблемы ==== +Сначала необходимо собрать собственный rpm с ядром. В моём случае это была голова из ветки wireless-testing 
-  * **огромное изобилие репозитариев** с одними и теми же пакетами различных версий+<code> 
 +git clone git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-testing.git  
 +</code>
  
 +Затем из git OLPC мною был взят конфиг для их ядра и доделан до возможности делать %%make oldconfig%% в выбранной мною ветке.
  
 +**Сборка ядра**\\
 +В процессе сборки ядра возникали следующие проблемы:
 +  - исходно конфиг OLPC содержит директиву применять расширение 3DNOW, в виду чего для запуска образа в эмуляторе требуется процессор производства компании AMD. Я оного не имею, поэтому в menuconfig переключил тип процессора на Pentium/i686 вместо какого-то странного названия, которое влекло появление инструкций 3DNOW. Т.е. на самом деле опция конфигурационного файла с включением/выклучением инструкций 3DNOW не является первостепенной и может быть отключена изменением типа целевого процессора
 +  - при загрузке на XO первое ядро сообщило, что не смогло найти модули //ide-core.ko// и //piix.ko// Думаю что для ХО данные модули важны, поэтому нашел опции в конфигурационном файле и включил их.
 +  - так как в репозитариях OLPC пакет kernel имеет архитектуры от i386 до i586, то на всякий случай в спецификации была указана архитектура i686.
  
 +
 +
 +Далее делаем отдельный репозитарий для нашего пакета. В моём случае он назывался **kernel-2.6.27-5.olpc.i686.rpm**. Чтобы сделать репозитарий достаточно в каталоге где лежит пакет написать **createrepo .** После выполнения, в каталоге появиться поддиректория %%repodata%%, в которой собственно и хранится описание нашего репозитария для yum. 
 +
 +Следующий шаг состоит в включении новоиспеченного репозитария в конфиг, чтобы на стадии сборки прошивки yum подцепил наше ядро взамен представленных в репозиатриях OLPC. 
 +
 +Включение собственного репозитария содержит несколько тонкостей:
 +  - нигде не написано, однако при инсталяции pilgrim использует __**ТОЛЬКО**__ репозитарии, имена которых начинаются с "olpc", так что __незабудьте добавить префикс olpc__ к названию собственного репозитария
 +  - стоит учесть, что для вашего ядра могут понадобиться(в следствии зависимостей) другие пакеты, поэтому я не долго думая добавил репозитарий 9 Федоры... Что в свою очередь выявило следующий косяк: 
 +  - всегда ставте пакет NetworkManager из репозитариев OLPC. У них он очень забавный и содержит какие-то непонятные питоновские скрипты и утилиты, в том числе и для настройки mesh. Конкретно не смотрел, но факт на лицо.
 +
 +Таким образом конфиг для yum у меня стал выглядеть следующим образом:
 <code> <code>
-[olpc_development+[olpc-fedora
-name=OLPC development +name=Fedora 9 - i386 
-baseurl=http://koji.fedoraproject.org/static-repos/dist-olpc2-build-current/i386/+#baseurl=http://download.fedoraproject.org/pub/fedora/linux/releases/9/Everything/$basearch/os/ 
 +mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=fedora-9&arch=i386
 enabled=1 enabled=1
 gpgcheck=0 gpgcheck=0
 +exclude=NetworkManager
  
-[olpc-bernie+[olpc-local
-name=OLPC bernie - \$basearch +name=zps 
-baseurl=http://www.codewiz.org/pub/olpc-bernie/\$basearch/os/+baseurl=file:///home/zps/workspace/OLPC/repo/i386/os
 enabled=1 enabled=1
 gpgcheck=0 gpgcheck=0
  
-[olpc-bernie-debuginfo+[olpc_development
-name=OLPC bernie \$basearch Debug +name=OLPC Development repo, based on koji tag dist-olpc3-devel. 
-baseurl=http://www.codewiz.org/pub/olpc-bernie/\$basearch/debug+#baseurl=http://koji.fedoraproject.org/static-repos/dist-olpc3-build-current/i386/ 
-enabled=0+#baseurl=http://xs-dev.laptop.org/~cscott/repos/dist-olpc3-devel/ 
 +baseurl=file:///home/zps/workspace/OLPC/repo/xs-dev.laptop.org/~cscott/repos/dist-olpc3-devel
 +enabled=1
 gpgcheck=0 gpgcheck=0
 +exclude=kernel
  
-[olpc-bernie-source+[olpc-joyride
-name=OLPC bernie - Source +name=OLPC 'Joyride' Repository 
-baseurl=http://www.codewiz.org/pub/olpc-bernie/source+#baseurl=http://xs-dev.laptop.org/~cscott/repos/joyride/ 
-enabled=0+baseurl=file:///home/zps/workspace/OLPC/repo/xs-dev.laptop.org/~cscott/repos/joyride
 +enabled=1
 gpgcheck=0 gpgcheck=0
 +olpc-development-yum-install.conf 103 utf-8 0x  48,1 Внизу
 </code> </code>
 +Для ускорения я скачал репозитарии себе на машину, потому что канал на xs-dev.laptop.org слишком не надежный. Статисчески я выяснил что три из четырех запусков генерации прошиыки падает только потому, что он в процессе не смог чего-то закачать с их репозитария. Учитывая что генерация занимает много времени, лучше лишний раз избежать таких "приколов".
 +
 +После добавления собственных репозитариев достаточно выполнить следующую команду:
 +<code>
 +# pilgrim-autobuild --config-dir . --stream olpc-development --dest-dir . --variant devel_jffs2
 +</code>
 +
 +Выполнение данной команды имеет тоже несколько тонкостей:
 +  - выполняется она под root
 +  - вызов скриптов выполняется из /usr/sbin без конкретных/относительных путей поэтому, если вы правите скрипт у себя в домашней директории вы должны вновь его установить, чтобы увидеть ваши правки в действии.
 +  - во время выполнения лучше не жать Control+C. В процессе выполнения он очень хитро создает файлы с будущим диском и мапит их на /dev/loop5 и /dev/loop6
 + 
 +
 +
 +
 +====== Просмотр содержимого img файлов ======
 +
 +Результатом работы pilgrim будет являться img файлы, которые представляют из себя файловую систему. В варианте готовом для прошивке на ХО это jffs, для QEMU --- ext3
 +
 +Для просмотра содержимого ext3-прошивки для эмулятора можно воспользоваться следующей последовательностью команд
 +<code bash>
 +$ sudo /sbin/losetup /dev/loop5 xo-1-olpc-stream-joyride-build-24-20081011_1843-devel_ext3.img
 +$ sudo /sbin/losetup -o 31744 /dev/loop6 xo-1-olpc-stream-joyride-build-24-20081011_1843-devel_ext3.img
 +$ mkdir ttt
 +$ sudo mount -t ext3 /dev/loop6 ttt
 +</code>
 +чтобы отмонтировать:
 +<code bash>
 +$ sudo umount ttt/
 +$ sudo /sbin/losetup -d /dev/loop6
 +$ sudo /sbin/losetup -d /dev/loop5
 +</code>
 +
 +В случае если хочется просмотреть содержимое реальной прошивки то можно воспользоваться [[http://wiki.laptop.org/go/Mounting_jffs2_images|этим]] руководством. //Лично я не смог примонтировать существующий jffs2 образ. Есть подозрение, что в ядре Федоры 9 нет поддержки сжатых jffs2.//
 +
  
 ~~DISCUSSION~~ ~~DISCUSSION~~
etc/common_activities/olpc/build_custom_images.txt · Last modified: 2008/10/12 16:18 by zps