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
etc:common_activities:olpc:build_custom_images [2008/10/02 23:42] zpsetc:common_activities:olpc:build_custom_images [2008/10/12 16:18] (current) 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// Думаю что для ХО данные модули важны, поэтому нашел опции в конфигурационном файле и включил их. Но на этом беды не закончились... В файлике pilgrim/stream.d/olpc-development.stream, который является bash-скриптом выполняющимся в chroot-e генерируемой прошивки, данные модули остаются исключительно для прошивок ext3 и devel_ext3... Т.е. их специально удаляют/не включает((однозначно не понял)) из jffs2 варианта. На текущий момент просто поправил чтобы они всегда оставались.
 +  - так как в репозитариях 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.1222976544.txt.gz · Last modified: 2008/10/02 23:42 by zps