Прошу прощения за сумбурный стиль изложения. Торопился.
Установка Gentoo Linux c помощью QEMU - http://electronix.ru/redirect.php?http://fabrice.bellard.free.fr/qemu/
Многие нужные файлы взяты с ресурса http://electronix.ru/redirect.php?http://phoenix.inf.upol.cz/%7Epolakr/
1. Настройка и проверка QEMU.
Нам понадобиться:
архив qemu-0.9.0-arm.zip содержащий ядро Linux и образ диска
http://electronix.ru/redirect.php?http://www.h6.dion.ne.jp/%7Ekazuw/qemu-win/qemu-0.9.0-arm.zip
ядро Linux с поддержкой видео и многих других опций -
http://electronix.ru/redirect.php?http://phoenix.inf.upol.cz/%7Epolakr/qemu/zImage
Конфиг можно посмотреть здесь -
http://electronix.ru/redirect.php?http://phoenix.inf.upol.cz/%7Epolakr/qemu/devel/linux-2.6.19.1.config
Распаковываем все это в одну папку.
Пишем bat файл для запуска qemu-arm. У меня он называется qemu-arm-gentoo.bat.
Лучше всего взять файл qemu-arm.bat за основу и поменять последнюю строчку:
qemu-system-arm.exe -L . -M versatilepb -kernel zImage -initrd arm_root.img
Описание параметров:
-L . - путь (папка) где находится файлы BIOS, VGA BIOS и keymaps. Точка - текущий каталог.
-M versatilepb - тип эмулируемой машины (процессора). В нашем случае ARM Versatile/PB (ARM926EJ-S), т.к. ядро собранно под эту архитектуру.
-kernel zImage - файл ядра Linux.
-initrd arm_root.img - файл initrd.
Запускаем qemu-arm-gentoo.bat. Если все сделано правильно, то увидим консоль и приглашение sh-3.00# (см рис. 1)
2. Запуск Gentoo Linux c готового образа.
Скачиваем образ виртуального диска для QEMU-
http://electronix.ru/redirect.php?http://phoenix.inf.upol.cz/%7Epolakr/qemu/sda.img.bz2
Размер архива 54.5 Mb. После распаковки занимает 1 Гб.
Он уже содержит Gentoo собранный под ARM архитектуру и swap диск. В принципе этого уже достаточно, для работы
Правим файл qemu-arm-gentoo.bat последнюю строчку:
qemu-system-arm.exe -L . -M versatilepb -kernel zImage -hda sda.img -append "root=/dev/sda1 clock=pit"
Новые параметры:
-hda sda.img - файл образа 0-го HDD диска. QEMU его определяет как SCSI диск. (см рис. 2)
-append "root=/dev/sda1 clock=pit" - команды передаваемые ядру Linux. В данном случае это - root=/dev/sda1 и clock=pit. "clock=pit" - решение проблемы с неправильным ходом часов, чтобы не убегали.
Запускаем qemu-arm-gentoo.bat. Если все сделано правильно, то через какое то время мы увидим приглашение войти в систему (см рис. 3). Пользователь root, пароль - клавиша "Enter"
3. Установка Gentoo Linux под архитектуру AT91RM9200.
В качестве носителей файловой системы QEMU может использовать физические устройства - HDD, USB флешки и т.п.
Будем использовать жесткий диск в качестве носителя файловой системы.
В моем компьютере установленно 2 диска. Первый используется системой, а второй свободен.
Для начала установим программу позволяющую системе Windows читать/писать на Linux разделы ext2.
http://electronix.ru/redirect.php?http://www.fs-driver.org/index.html
Нужный нам раздел можно создавать из эмулятора QEMU, используя для этого готовый образ sda.img, или стороними утилитами из под системы Windows. Кому как удобнее.
Я разбивал диск под системой windows.
Создаем раздел 10Г, форматируем под ext2. Остальное нам не понадобиться. Пустое место можно использовать для других целей.
На это раздел (10Г) будем ставить Gentoo. Для установки нам понадобятся следующие файлы:
Скачивать можно с ресурса http://electronix.ru/redirect.php?http://gentoo.osuosl.org/
Или с других ресурсов. Список зеркал - http://electronix.ru/redirect.php?http://www.gentoo.org/main/en/mirrors.xml
1. Архив образа стадии (stage).
Нам понадобиться следующий архив - stage1-arm-uclibc-softfloat-20050811.tar.bz2
из названия видно, что этот архив используется для системы с архитектурой ARM, используется библиотека uClibc, и эмуляция поддержки float.
Скачиваем отсюда - http://electronix.ru/redirect.php?http://gentoo.osuosl.org/experimental/arm/embedded/stages/stage1-arm-uclibc-softfloat-20050811.tar.bz2
2. Снимок портежей (snapshot).
Я использовал snapshots от 21-го мая - portage-20070521.tar.bz2, но можно использовать последний доступный.
Скачиваем отсюда http://electronix.ru/redirect.php?http://gentoo.osuosl.org/snapshots/
portage-20070521.tar.bz2 я выложил на местный фтп.
3. Файлы исходников (distfiles).
Качаем отсюда http://electronix.ru/redirect.php?http://gentoo.osuosl.org/distfiles/ или отсюда - http://electronix.ru/redirect.php?http://distfiles.gentoo.org/distfiles/
Список необходимых файлов прикреплен к сообщению.
Список содержит файлы, которые нужны при установке системы со снимком портежей от 21-го мая. Если у вас portage от другого числа, то придется дополнительно скачать необходимые файлы.
Кладем все эти файлы на наш диск, предназначенный для установки gentoo. Допустим, в папку files. Файлы исходников лучше положить в отдельную папку - files/distfiles.
Также понадобятся файлы - make.conf make.globals portage.mask. (см. вложение)
Запуск QEMU с поддержкой HDD.
Для запуска QEMU с поддержкой HDD правим bat файл. Последнюю строчку, добавляем -hdb \.PhysicalDrive1.
Нумерация жестких дисков начинается с 0. Нужный нам доступен под номером 1.
Получаем следующее -
qemu-system-arm.exe -L . -M versatilepb -kernel zImage -hda sda.img -hdb \.PhysicalDrive1 -append "root=/dev/sda1 clock=pit"
В QEMU появляется новое устройство диск sdb, который соответствует нашему физическому диску под номером 1.
Система грузиться с диска sda1, с образа диска.
Запускаем QEMU.
При запуске видим, что появилость новое устройство (см. рис 1).
В моем случае это HDD 80Гб, с двумя разделами.
После загрузки входим с систему, регистрируемся.
Устанавливаем правильную дату. К примеру, время 13-10 29 мая 2007г. - 052913102007
создаем папку /mnt/gentoo.
Установка стадии.
монтируем раздел диска в папку /mnt/gentoo
mount /dev/sdb1 /mnt/gentoo
переходим в папку - cd /mnt/gentoo
Распакуем архив stage1 - tar xvjpf /mnt/gentoo/files/stage1-arm-uclibc-softfloat-20050811.tar.bz2
Распакуем архив снимка дерева портежей командой - tar
tar xvjf /mnt/gentoo/files/portage-20070521.tar.bz2 -C /mnt/gentoo/usr
Скопируйте файлы исходников из /mnt/gentoo/files/distfiles в /mnt/gentoo/usr/portage/distfiles/
Установка базовой системы Gentoo.
Переходим в новую среду:
mount -t proc none /mnt/gentoo/proc
mount -o bind /dev /mnt/gentoo/dev
chroot /mnt/gentoo /bin/bash
env-update
source /etc/profile
Выбор нужного профиля системы:
ln -snf /usr/portage/profiles/uclibc/arm /etc/make.profile
копируем файлы make.conf make.globals portage.mask (см. архив etc.rar)
make.conf и make.globals в папку /etc/,
файл portage.mask в папку /etc/portage.
make.conf - содержит настройку флагов, используемых при компиляции системы под конкретную архитектуру.
make.globals - то же, что и make.conf, но только глобальные установки.
Вот часть содержимого файла make.conf:
Самое важное:
CFLAGS="-mcpu=arm920t -msoft-float -Os -pipe" - указывает тип архитектуры и ключи при компиляции
CHOST="arm-softfloat-linux-uclibc" - тип системы
Более подробно можно почитать на сайте www.gentoo.org в разделе документация.
файл portage.mask содержит в себе ограничение на версиюю пакетов которые можно ставить. Связанно с тем, что не все версии программ собираются на ARM системе.
Содержимое файла:
>sys-devel/gcc-3.4.6-r2
>sys-devel/binutils-2.16.1-r3
>sys-kernel/linux-headers-2.6.11-r3
>dev-libs/popt-1.7-r1
>sys-apps/busybox-1.2.2.1
По первой строчке можно понять, что GCC выше версии gcc-3.4.6-r2 считаются заблокированными и не устанавливаются. И т.д.
Самогенерация системы.
Обнавляем пакет portage (текущий очень старый)
emerge -avO portage
По окончании может появиться сообщение:
".....
emerge --help config"
если появилось, то надо обновить конфигурационные файлы командой etc-update
Самогенерация системы запускается сценарием scripts/bootstrap.sh в каталоге /usr/portage. Этот скрипт можно запускать с разными ключами:
/usr/portage/scripts/bootstrap.sh -p - смотрим список пакетов необходимых для самогенерация системы.
/usr/portage/scripts/bootstrap.sh -f -p - смотрим ссылки по которым можно скачать необходимые пакеты.
/usr/portage/scripts/bootstrap.sh -f - проверка исходников на "валидность", т.е. проверка на контрольные суммы и т.п.
Если последняя команда с ключом -f не даст предупреждений, можно запускать процесс самогенерации системы.
После проверки запускаем скрипт на выполнение -
/usr/portage/scripts/bootstrap.sh
Самогенерация системы может занять длительное время, поэтому оставить это дело на ночь
Если все будет удачно, можно приступить к установка системы.
Установка системы.
Установка системы запускается командой emerge -e system.
emerge -pve system - смотрим какие пакеты будут ставиться. Обращаем внимание на размер для скачивания (size of downloads). Тут должно быть 0 Kb.
emerge -fve system - проверяем на "валидность".
Если появяться сообщения что надо скачать файл, то придется скачать файл, выйти из эмулятора (командой poweroff) и записать файлы на диск. И занов приступить к этапу "Установка системы".
Запускаем установку системы - emerge -ave system
Также может занять длительное время, поэтому оставить это дело на 2-ю ночь
По окончании может появиться сообщение:
".....
emerge --help config"
если появилось, то надо обновить конфигурационные файлы командой etc-update
правим fstab.
У меня так:
/dev/sda1 / ext2 noatime 0 0
# NOTE: The next line is critical for boot!
proc /proc proc defaults 0 0
# glibc 2.2 and above expects tmpfs to be mounted at /dev/shm for
# POSIX shared memory (shm_open, shm_unlink).
# (tmpfs is a dynamically expandable/shrinkable ramdisk, and will
# use almost no memory if not populated with files)
shm /dev/shm tmpfs nodev,nosuid,noexec 0 0
Меняем пароль.
Выключаем QEMU командой poweroff.
Правим bat файл. Последнюю строчку:
Получаем следующее -
qemu-system-arm.exe -L . -M versatilepb -kernel zImage -hda \.PhysicalDrive1 -append "root=/dev/sda1 clock=pit"
Запускаем QEMU, регистрирумся.
Мы в системе gentoo, собранной под наш процессор AT91RM9200
Далее можно ставит пакеты которые нам нужны.
Cистему можно переписать на USB flash или MMC карточку и стартовать плату с этих носителей.
P.S. Далее можно собрать kernel, u-boot, romboot.
4. Настройка поддержки сети в QEMU.
Большое спасибо Andy Great за помощь.
1. Установка сетевого адаптера TAP-Win32
ПУСК -> Панель управления -> Установка оборудования -> Далее
Выбираем "Да, устройство уже подсоединено" -> Далее
Выбираем "Добавление нового устройства" -> Далее
Выбираем "Установка оборудования выбранного из списка вручную" -> Далее
Выбираем "Сетевые платы" -> Далее
Выбираем "Установить с диска" Указываем путь к папке с драйвером WinTAP32 (см. вложение).
Выбираем сетевой адаптер TAP-Win32 Adapter V8 -> Далее -> Все равно продолжить -> Готово
Появится новое сетевое подключение с именем устройства "TAP-Win32 Adapter V8".
Настроим TAP-Win32 Adapter V8
Переименуем в TAP-Win32.
Настроим TCP/IP - IP: 10.0.2.6 Маска: 255.255.255.0
2. настройка QEMU.
Поправим bat файл для запуска QEMU с поддержкой сети. Добавим следющую строчку -
-net nic -net tap,ifname=TAP-Win32
Запускаем QEMU. Если все правильно, то в системном трее появится значок нового сетевого подключения.
Настроим сеть в эмуляторе QEMU
правим файл /etc/conf.d/net
config_eth0=("10.0.2.5/24")
routes_eth0=("default via 10.0.2.2")
"Распакуем архив stage1 - tar xvjpf /mnt/gentoo/files/stage1-arm-uclibc-softfloat-20050811.tar.bz2", потом только chroot.
Выкладывайте, это будет полезно.
1. Доступ в инет можно организовать - http://electronix.ru/redirect.php?http://www.h7.dion.ne.jp/~qemu-win/TapWin32-en.html.
2. Лишних компонентов там нет. Питон нужен, т.к. система portage написана на питоне.
3. Собираюсь выложить два варината - с uclibc и glibc. Но не хватает времени, не могу даже обновить свой блог
4. Не вижу необходимости. Каждый раз писать новй скрипт после обновления пакетов.
5. Есть желание написать как собирать U-Boot и kernel для платы RainBow в эмуляторе QEMU. Но не хватает времени.
6. Да это так, я использовал USB HDD 80Gb.
7. Для чего эти патчи?
8. Набор флагов для всех может быть разный.
9. Попробуйте
Про меня можно почитать в моей карточке Блог завел недавно.
Про дженту можно прочитать на их сайте - http://electronix.ru/redirect.php?http://www.gentoo.org/. Раздел Docs.
COMA, пробую проделать все как указанно в инструкции, нарвался на то, что ниженаписанные ссылки уже не работают.
Не могли бы Вы их обновить.
ядро Linux с поддержкой видео и многих других опций -
http://electronix.ru/redirect.php?http://phoenix.inf.upol.cz/~polakr/qemu/zImage
Конфиг можно посмотреть здесь -
http://electronix.ru/redirect.php?http://phoenix.inf.upol.cz/~polakr/qemu/de...2.6.19.1.config
Скачиваем образ виртуального диска для QEMU-
http://electronix.ru/redirect.php?http://phoenix.inf.upol.cz/~polakr/qemu/sda.img.bz2
все это есть на местном фтп.
Как к qemu прицепить не винчестер, а USB flash диск или карту памяти? Перебор \.PhysicalDriveX не дал результата. (кстати вроде как должно быть \\.\PhysicalDriveX )
Как-то тут все очень страшно сложно... Установил я Debian под QEMU для ARM как для обычного ПК, процесс установки на 99% идентичен установке под x86 с CD или иным способом. http://electronix.ru/redirect.php?http://www.aurel32.net/info/debian_arm_qemu.php
Получился образ диска img. Я его сконвертировал в raw формат, fdisk показывает какие на этом файле разделы живут. Как его подмонтировать?
Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)