СРЕДА СБОРКИ ПРОШИВКИ ДЛЯ УСТРОЙСТВ АККОРД СЕМЕЙСТВА LE/GX. I. РАБОТА С ПРОШИВКОЙ. По окончанию процесса сборки, результат буден доступен в каталоге out/accord-image-xxxx-xx-xx. Содержимое out/accord-image-xxxx-xx-xx каталога по окончанию сборки: firmware.img freedos.iso firmware.img - это образ прошивки. Эта прошивка должна быть установлена на Аккорд. Прошивка должна записываться на Аккорд семейства LE/GX в точности как оригинальная прошивка image.bin. Перед записью прошивки на Аккорд LE/GX, его необходимо обнулить (ipgx.exe). Используя FreeDOS, можно выполнить команды: ipgx.exe ld_gx $240000 firmware.img freedos.iso - образ с ОС FreeDOS. Этот образ собирается исключительно как вспомогательный инструмент, чтобы облегчить запись firmware.img на Аккорд LE/GX. В ТЗ нету пункта о таком инструменте. Сборка образа freedos.iso идет в качестве бонуса. freedos.iso - образ для USB/CD. Это загрузный диск с FreeDOS. В образе freedos.iso содержится: * firmware.img * утилиты ipgx.exe + ld_gx.exe * оригинальная прошивка image.bin Образ freedos.iso необходимо записать на CD-носитель, или на USB-флешку. Записать образ freedos.iso на USB-носитель в ОС Linux можно записать с помощью команды: # dd if=freedos.iso of=/dev/sdX && sync Где sdX - устройство USB-носителя. Далее необходимо загрузить компьютер с этого USB/CD носителя. II. ПРОЦЕСС СБОРКИ ПРОШИВКИ Внимание! Весь процесс сборки должен происходить от обычного пользователя. В данном примере будет использован пользователь с именем `altlinux`. Если сборку выполнять от пользователя root, можно разрушить работу системы и повредить среду сборки! Каталог с именем ~/accord_env это корень проекта. Внутри каталога ~/accord_env доступны другие каталоги: accord-mkimage - профиль для mkimage. С помощью этого профиля происходит сборка прошивки. pkgs/* - каталог с дополнительным ПО. Данное ПО необходимо собрать до того как приступать к сборке прошивки. bin - каталог с вспомогательными скриптами для сборки ПО из каталога pkgs. apt - файл настроек для APT. В даном каталоге задаются параметры размещения репозитория с RPM пакетами. hasher/workdir_p6 - каталог, в котором происходит сборка дополнительных RPM-пакетов из каталога pkgs/*. hasher/repo_p6 - каталог-репозиторий, в который помещаются собранное ПО из каталога pkgs/*. Логически процесс сборки можно разделить на два шага: 1. сборка дополнительного ПО, которое отсутствует в официальном репозитории ALTLinux. 2. сборка прошивки. Прошивка собирается на репозитории RPM пакетов ОС ALTLinux с кодовым именем: Platform 6 или сокращенно p6. ЭТАП 1: СБОРКА ДОПОЛНИТЕЛЬНОГО ПО. Дополнительное ПО - это ПО которое отсутствует в официальном репозитории ALTLinux. К этому ПО можно отнести такие RPM пакеты как: специальное ядро, qt4, итд. Очередность сборки RPM-пакетов: 1. binutils, каталог accord-binutils 2. ядро, каталог accord-kernel Далее необходимо собрать RPM пакеты (в любой последовательности): * qt4, каталог accord-qt4 (при сборке qt4 убедитесь, что в /tmp доступно порядка 1GB свободного места) * amdz-ng-gui * grub2, каталог accord-grub2-pc * FreeDOS, каталог accord-freedos * make-initrd-accord * accord-kernel-module-compiled RPM пакеты собираются для ОС ALTLinux с помощью утилит: rpm, gear+git, hasher. Дополнительная информация о hasher: http://www.altlinux.org/Hasher Дополнительная информация о gear: http://www.altlinux.org/Gear Для удобства сборки пакетов в каталоге ~/accord_env/bin присутствует несколько скриптов: * alt.cfg - конфигурационный файл с настройкой путей * hsh-initroot - создать сборочный каталог hasher. После запуска будет создан создан fake-root в ~/accord_env/hasher/workdir_p6 * hsh-clean - очистка ~/accord_env/hasher/workdir_p6 * gear-rebuild - скрипт для сборки нужного RPM пакета из ~/accord_env/pkgs/* Исходный код каждого RPM пакета помещен в отдельный GIT репозиторий. Чтобы собрать RPM пакет из ~/accord_env/pkgs/* нужно: 1. Перейти в каталог с пакетом (cd ~/accord_env/pkgs/xxxx ) 2. Убедится что инициализирован рабочий каталог hasher (../../bin/hsh-initroot). 3. Собрать пакет (../../bin/gear-rebuild). 4. Собранные пакеты будут помещены в локальный RPM-репозиторий: ~/accord_env/hasher/repo_p6 ЭТАП 2: СБОРКА ПРОШИВКИ. Прошивка собирается с использованием: * набора RPM пакетов * инструмента mkimage + специального профиля. Основная информация о работе с mkimage доступна в файле: /usr/share/doc/mkimage-0.2.0/README.ru или в интернете: http://git.altlinux.org/people/legion/packages/mkimage.git?p=mkimage.git;a=blob;f=doc/README.ru;hb=HEAD Сборка прошивки происходит в каталоге: ~/accord_env/accord-mkimage В каталоге можно выполнить, например следующие команды: * чтобы собрать прошивку: $ make | tee .build.log 2>&1 Лог сборки прошивки будет находится в файле: .build.log * чтобы удалить все результаты работы mkimage: $ make distclean Прошивка будет собираться с использованием официальных RPM пакетов ОС ALTLinux + дополнительных RPM пакетов, которые доступны в ~/accord_env/hasher/repo_p6 3. ВАЖНЫЕ ЗАМЕЧАНИЯ 1. Программа amdz-ng-gui собирается в RPM пакет. 2. Модули для ядра собираются в RPM пакет accord-kernel-module-compiled. Согласно политике сборки модулей для ядер в ALTLinux они собраны не правильно. Поскольку не был предоставлен исходный код. Для сборки модулей для ядра из исходного кода, необходимо использовать заготовленные каталоги/пакеты: kernel-modules-accord kernel-source-accord и использовать команду: buildmodules (см файл important.txt) 3. При нажатии кнопки "Перезагрузить" в интерфейсе amdz-ng-gui происходит Segmentation fault. Согласно переписке, это нормальное поведение. 4. firmware.img может быть записан непосредственно на USB-носитель. Что позволит проводить тестирование прошивки без актуальной прошивки Аккорд. Внимание: для загрузки прошивки из USB: Аккорд должен быть обнулен (ipgx.exe) и находится в нерабочем режиме. # dd if=firmware.img of=/dev/sdc && sync Где sdc - USB флешка 5. Прошивка собрана с использованием модуля tmusb_drv.ko для устройства Infocrypt USB ™ reader Согласно тому набору оборудованию что нам было передано. 6. При сборке прошивки на диске должно быть достаточно свободного места. 7. В Grub было добавлено три патча: Один из них чтобы grub читал FAT16 c устройства (accle) не с offset = 360 == 180 * 2, а с 0. Так как образ прошивки это FAT16, c вшитым grub-floppy образом в начало. Два других патча, необходимы чтобы работал параметр gfxpayload на новых ядра, и как в следствии отказ от параметра vga= 8. При сборке ядра с новой конфигурацией необходимо пересобрать нужные модули и пересобрать пакет accord-kernel-module-compiled. 4. ОБРАЗ HDD С СБОРОЧНОЙ СРЕДОЙ. Заказчику отдается HDD образ в котором уже собраны необходимые дополнительные RPM пакеты. Можно сразу собирать прошивку. Если необходимо внести например некоторые изменения в amdz-ng-gui или добавить модуль для ядра, необходимо пересобрать нужный RPM пакет. Передаваемый образ - это образ HDD диска с установленной ОС ALTLinux P6. Образ необходимо побайтно скопировать на HDD сборочного сервера. Или как вариант образ можно запустить в KVM, но в этом случае сборка будет происходить намного медленнее. Пример запуска команды с помощью KVM: /usr/bin/kvm -no-acpi -m 1024 -name accord -usbdevice tablet -monitor stdio -net nic,vlan=0,model=e1000,macaddr=00:2a:5d:53:74:41 -net tap,vlan=0,ifname=kvm1,script=no -net nic,vlan=0,model=e1000,macaddr=00:2a:5d:53:74:42 -net tap,vlan=0,ifname=kvm2,script=no -hda accord.raw -boot c -vnc IP_KVM_SERVER:1 Сборка происходит от системного пользователя altlinux. Пароль у root: 123 В образ вшиты два SSH ключа: 1) stanv@altlinux.org 2) andrej@OKBSAPR После загрузки ОС ALT Linux, доступ можно получить с помощью команды: ssh altlinux@IP Образ HDD собран c двумя сетевыми карточками: одна из них пытается получить адрес через DHCP, другая сетевая карточка имеет статический IP: 192.168.0.121/24. Убрана привязка имени карточки к MAC. Изменить настройки сетевых карточек можно редактируя файлы в /etc/net/ifaces/ В случае необходимости размер файловой системы можно расширить с помощью переразбивания диска и resize2fs. Внимание: в образе HDD содержится минимальный репозиторий для сборки _текущей_ прошивки. Это шаг предпринят исключительно в целях удобства для заказчика. В ином случае необходим сделать зеркало репозитория Platform 6 i586/noarch. Этот минимальный репозиторий был создан с помощью профиля: accord-mkimage-makerepo. Этого репозитория сейчас хватает чтобы собрать прошивку так и дополнительные пакеты. В случае изменения прошивки, добавления нового ПО, возможно прийдется использовать оффициальный репозиторий Platform 6. APT настроен на использование этого репозитория. 5. ИНСТРУКЦИЯ ДЛЯ СБОРКИ ПРОШИВКИ. 1. Выделить оборудование под сборочный сервер. В качестве сборочного сервера может выступать физический компьютер или виртуальная машина KVM на установленной ОС Linux. Минимальные требования к сборочному серверу: ОЗУ: 2GB HDD: 20GB CPU: Intel Core 3 NIC: 2 штуки 2. Импортировать образ HDD. В случае использования физического компьютера, необходимо записать образ HDD на существующий диск. Для этого, необходимо: * Подготовить загрузочный USB/CD диск с Live Linux. * Подготовить USB-носитель размером от 8GB. * Отформатировать USB-носитель в ext2 или в любую другую FS, которая поддерживает файлы объемом больше 4ГБ. * Скопировать образ accord.raw.lzma на USB-носитель. * Загрузить на компьютере Live Linux. * Смонтировать USB-носитель. * Записать образ accord.raw.lzma на HDD, например с командой: unlzma -c accord.raw.lzma | dd of=/dev/sdХ bs=512k где /dev/sdX -- HDD * Дождаться конца записи образа HDD, размонтировать USB-носитель, перезагрузить компьютер. В случае использования KVM, достаточно: * розархивировать образ HDD: unlzma accord.raw.lzma * Предоставить образ accord.raw в качестве HDD: -hda accord.raw Внимание: При использовании физического компьютера, есть вероятность что не сможет загрузится, это обусловлено тем что initrd не содержит нужных драйверов. Тогда придется либо испльзовать KVM или пересоздать initrd. 3. Настроить сеть на сборочном сервере. Загрузить сборочный сервер. При физическом доступе к сборочному серверу, можно использовать консоль для авторизации под учетной записью root. Пароль 123. Текущие настройки сети можно посмотреть командой: ip a Если настройки отличны от желаемых, необходимо настроить сеть. Для этого необходимо перейти в каталог /etc/net/ifaces. После правок выполнить команду: service network restart 4. Авторизоваться удаленно на сборочном сервере. Авторизоваться удаленно на сборочном сервере через ssh. Пользователь: altlinux. В образ вшито два SSH ключа: 1) stanv@altlinux.org 2) andrej@OKBSAPR в случае необходимости можно задать пароль пользователю altlinux и авторизоваться с помощью пароля. 5. Собрать прошивку. Чтобы собрать прошивку, необходимо перейти в каталог: cd accord_env/accord-mkimage И выполнить команды: $ make distclean $ make | tee .build.log 2>&1 По окончанию сборки прошивка будет доступна в каталоге: out. 6. УСТАНОВКА ОС КЕНТАВР В КАЧЕСТВЕ ХОСТ-СИСТЕМЫ Выбрать в установщике компоненты «Графическая система/Основные компоненты (Xorg)», «Графическая система/Управление локальными и удаленными виртуальными машинами» и «Серверные приложения/Сервер виртуализации kvm». На стадии настройки сетевого интерфейса (желательно, чтобы был DHCP) нажать «Дополнительно» и выбрать «Использовать интерфейс как мост». После установки войти под учетной записью root, выполнить: # chkconfig libvirtd on && service libvirtd start # chkconfig qemu-kvm-el on && service qemu-kvm-el start install -o _libvirt -g vmusers -m 600 путь/к/accord.raw /var/lib/libvirt/images/accord.raw В virt-manager-е создать новую виртуальную машину с опцией «Импорт существующего диска», выбрать accord.raw. Установить количество памяти не менее 1024 МБ. Вместо виртуальной сети NAT выбрать «имя общего сетевого устройства» и написать в поле breth0. Установить MAC-адрес 00:2a:5d:53:74:41. Выбрать «Изменить конфигурацию перед установкой». «Завершить». В разделе Processor, в пункте Configuration нажать «Copy host CPU configuration». В разделе Disk 1 выбрать Disk bus: IDE. «Начать установку».