FastNetMon

Sunday 30 November 2008

Установка Debian на ARM архитектуру

Установка эмулятора
sudo apt-get install qemu

Поиск initrd инсталлятора
Идём на список зеркал Дебияна http://www.debian.org/mirror/list

Вот примерно по такому пути "debian/dists/etch/main/installer-arm/current/images/rpc/netboot/" на (почти, если данных папок нету -- смените зеракало на другое) любом из зеркал вы можете скачать необходимый нам файл: initrd.gz (это собственно и есть инсталлятор)

Создаём образ жесткого диска:
qemu-img create -f qcow debian_arm_hda.img 2G

Поиска ядра под данную платформу
Вот здесь http://people.debian.org/~aurel32/arm-versatile/ требуется скачать файлик vmlinuz-2.6.18-6-versatile это ядро, специально собранное под процессор ARM versatile. Также надо стянуть файлик initrd.img-2.6.18-6-versatile, он нам понадобится после окончания установки.

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

/usr/bin/qemu-system-arm -M versatileab -kernel '/home/nrg/arm_debian/vmlinuz-2.6.18-6-versatile' -append 'root=/dev/ram' -initrd '/home/nrg/arm_debian/initrd.gz' -hda '/home/nrg/arm_debian/debian_arm_hda.img' -m 128

Инсталляция
Ну вот и всё :) Должны пойти буковки загрузки Линукс ядра и через некоторое время вы увидите обычный инсталлятор Дебияна. Внимание! Установка будет производиться по сети, так что запаситесь нормальным соединением и кучей трафика :) Также в процессе установки будет варнинг "Continue the install without loading kernel modules", с этим стоит согласиться, модули мы подсунем позже :)

Далее получим варнинг о том, что "No installable kernel was found in the defined APT sources" (т.е. ядра необходимого нам нету в пакетном менеджере), соглашаемся на установку без ядра.

Финальная настройка
После того, как установка закончена ждем ребута и во время следующей загрузки выключаем машинку.
Теперь нам надо ребутнуца в рабочем окружении:
/usr/bin/qemu-system-arm -M versatileab -kernel '/home/nrg/arm_debian/vmlinuz-2.6.18-6-versatile' -append 'root=/dev/sda1' -initrd '/home/nrg/arm_debian/initrd.img-2.6.18-6-versatile' -hda '/home/nrg/arm_debian/debian_arm_hda.img' -m 128

Как видите, мы заменили intrd инсталлятора на родной и сменили root раздел :)
Теперь запускаем систему, ждём пока отработает fsck (почему он запускается -- большой вопрос) и радуемся полноценной системе на ARM платформе %)



Проблемы
При таком подходе у меня загрузка доходила до fsck, потом зависала или ребуталась т.к. fsck не завершался успешно. Сначала попробовал -m поставить в 256, тестирование прошло почти мгновенно, но вылете по ошибки в самом конце. Вторым этапом было конвертирование образа винта из QCOW в RAW формат, как это сделать читайте здесь, потом просто меянем диск на -hda '/home/nrg/arm_debian/debian_arm_hda_raw.img'

После всего этого запускаем систему так:
/usr/bin/qemu-system-arm -M versatileab -kernel '/home/nrg/arm_debian/vmlinuz-2.6.18-6-versatile' -append 'root=/dev/sda1' -initrd '/home/nrg/arm_debian/initrd.img-2.6.18-6-versatile' -hda '/home/nrg/arm_debian/debian_arm_hda_raw.img' -m 128

Ещё очень желательно добавлять ключик -localtime при запуске, так будет время нормальное ;)

Установка родных модулей ядра

apt-get install initramfs-tools
wget http://people.debian.org/~aurel32/arm-versatile/linux-image-2.6.18-6-versatile_2.6.18.dfsg.1-18etch1+versatile_arm.deb (актуальную ссылку смотрите на сайте с патченым ядром, он указан выше; а вообще, лучше сам сайт откройте прямо с arm машинки в links)
dpkg -i linux-image-2.6.18-6-versatile_2.6.18.dfsg.1-18etch1+versatile_arm.deb



Использованные материалы
Основано на замечательной статье: http://www.goitexpert.com/entry.cfm?entry=ARM-Emulation-With-QEMU

No comments :

Post a Comment

Note: only a member of this blog may post a comment.