Jump to content

    

Установка Gentoo Linux c помощью QEMU (руководство)

Прошу прощения за сумбурный стиль изложения. Торопился.

 

Установка Gentoo Linux c помощью QEMU - http://fabrice.bellard.free.fr/qemu/

Многие нужные файлы взяты с ресурса http://phoenix.inf.upol.cz/~polakr/

 

 

1. Настройка и проверка QEMU.

 

Нам понадобиться:

архив qemu-0.9.0-arm.zip содержащий ядро Linux и образ диска

http://www.h6.dion.ne.jp/~kazuw/qemu-win/qemu-0.9.0-arm.zip

 

ядро Linux с поддержкой видео и многих других опций -

http://phoenix.inf.upol.cz/~polakr/qemu/zImage

 

Конфиг можно посмотреть здесь -

http://phoenix.inf.upol.cz/~polakr/qemu/de...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://phoenix.inf.upol.cz/~polakr/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://www.fs-driver.org/index.html

 

Нужный нам раздел можно создавать из эмулятора QEMU, используя для этого готовый образ sda.img, или стороними утилитами из под системы Windows. Кому как удобнее.

 

Я разбивал диск под системой windows.

Создаем раздел 10Г, форматируем под ext2. Остальное нам не понадобиться. Пустое место можно использовать для других целей.

На это раздел (10Г) будем ставить Gentoo. Для установки нам понадобятся следующие файлы:

 

Скачивать можно с ресурса http://gentoo.osuosl.org/

Или с других ресурсов. Список зеркал - http://www.gentoo.org/main/en/mirrors.xml

 

1. Архив образа стадии (stage).

Нам понадобиться следующий архив - stage1-arm-uclibc-softfloat-20050811.tar.bz2

из названия видно, что этот архив используется для системы с архитектурой ARM, используется библиотека uClibc, и эмуляция поддержки float.

Скачиваем отсюда - http://gentoo.osuosl.org/experimental/arm/...0050811.tar.bz2

 

2. Снимок портежей (snapshot).

Я использовал snapshots от 21-го мая - portage-20070521.tar.bz2, но можно использовать последний доступный.

Скачиваем отсюда http://gentoo.osuosl.org/snapshots/

 

portage-20070521.tar.bz2 я выложил на местный фтп.

 

3. Файлы исходников (distfiles).

 

Качаем отсюда http://gentoo.osuosl.org/distfiles/ или отсюда - 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")

WinTAP32.rar

Share this post


Link to post
Share on other sites
mount -t proc none /mnt/gentoo/proc

mount -o bind /dev /mnt/gentoo/dev

 

chroot /mnt/gentoo /bin/bash

env-update

source /etc/profile

 

 

у меня проблема вызвала команда chroot /mnt/gentoo /bin/bash

тк раздел был изначально пустой

 

далее заметка - после копирования в линуховый раздел из виндов приходиться перезапускать qemu.

 

ЗЫ:в дальнейшем могу выложить заметки по инструкции....

Share this post


Link to post
Share on other sites

"Распакуем архив stage1 - tar xvjpf /mnt/gentoo/files/stage1-arm-uclibc-softfloat-20050811.tar.bz2", потом только chroot.

 

Выкладывайте, это будет полезно.

Share this post


Link to post
Share on other sites
"Распакуем архив stage1 - tar xvjpf /mnt/gentoo/files/stage1-arm-uclibc-softfloat-20050811.tar.bz2", потом только chroot.

 

Выкладывайте, это будет полезно.

нуу тут не сказанно что это нужно в корень положить( точнее что это все должно быть как в нормальном линухе лежать в одной плоскости... в моем случае в корне.

 

далее замечание, для таких как я: каждый маломальски понятный шаг для опытного желательно расписывать более подробно, скажем для меня стала небольшим гемором поменять дату (что кстати ставлю под сомнение целесообразность этой процедуры), и команды переноса и копирования, и все по тому что с линухом только начинаю знакомиться.

 

Выкладывайте, это будет полезно.

 

Продолжаю:

1) для емерджа имеет смысл организовать доступ в инет прямо из qemu

2) замечено что в 1ом стайдже множество лишних компонентов, которые можно урезать (скажем дрова для видях и возможно для кого-то питон итд) - честно, я пока не начал компиляцию и задним умом догадываюсь что сборка будет проходить без них. но в любом случае стоит упомянуть что компилиться и как урезать ядро по минимому.

3) имеет смысл выложить свежеотгенеренный раздел на фтп для экономии 2х ночей у других участников =)

4) имеет смысл автоматизировать скажем скриптом и более четким описанием что и куда полоить, дабы новичкам в линухе не впадть в ступор с командой date (намекаю на себя втч) =)

5) описать как грузиться с флешки на RAINBOW, в тч процесс сборки загрузчика.

6) личная заметка - флешки можно монтировать также как и винчестер(кстати у меня он один, на котом винда, и смотировал я только пустой раздел со свежесозданным разделом ext2), номер флехи можно узнать в "Управление компьютером" во вкладке "Управление дисками".

7) имеет смысл попробовать патчи для qemu вот от сюда http://www.h7.dion.ne.jp/~qemu-win/ (сам я пока не пробовал)

8) при емердже сразу или прописать в конфиг набор флагов, заточенных под RAINBOW

9) при наличии 2х и более машин стоит задуматься о кросскомпилинге, штука архиудобная

 

 

 

10) ln -snf /usr/portage/profiles/uclibc/arm /etc/make.profile

может быть make.conf ?

линчо у меня щас непонятки тк /portage/profiles/uclibc/arm отсутствует ...

Share this post


Link to post
Share on other sites
1) для емерджа имеет смысл организовать доступ в инет прямо из qemu

не совсем согласен, вернее, считаю, что это надо делать по желанию - я собирал это все на даче, так что пришлось заранее в городе все скачать.

10) ln -snf /usr/portage/profiles/uclibc/arm /etc/make.profile

может быть make.conf ?

линчо у меня щас непонятки тк /portage/profiles/uclibc/arm отсутствует ...

это именно make.profile, смотрите документацию и в какомто из конфигурационных файлов это указывается.

 

В остальном - согласен, тем более, что у меня это все так и не собралось, почему-то все вылетало на сборке сандбокса :(

Share this post


Link to post
Share on other sites

1. Доступ в инет можно организовать - 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. Попробуйте :)

Share this post


Link to post
Share on other sites
1. Доступ в инет можно организовать - 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. Попробуйте :)

 

3. выкладывай - очень полезная инфа (а что за блог, если не секрет? =) )

4. почему, я про базовые операции вроде монтирования, распаковки пакетов, рассовывания по директориям =)

5. вот это будет оочень полезно, даже полезнее п-та 3, тк для меня это вообще пока темный лес, где шаманят дикие юниксоиды =)

6. у меняже системный винт со свежесозданным разделом =)

7. мне больше всего приглянулся вот этот:

http://www.h7.dion.ne.jp/~qemu-win/Accelerator-en.html

Accelerators

 

Kqemu-1.3.0pre11 installer.

http://www.h6.dion.ne.jp/~kazuw/qemu-win/K...e11-install.exe

Please uninstall your old version before installing it. It is "KQEMU virtualization module for QEMU" in the control panel->add/remove software. The new Kqemu is installed as "QEMU Accereration Module".

 

QEMU 0.9.0 binary.

http://www.h6.dion.ne.jp/~kazuw/qemu-win/Q...9.0-install.exe

BIOS is in a pc-bios directory. Use -L like this.

-L "C:\Program Files\Qemu\pc-bios"

 

If you install Kqemu-1.3.0pre11-install.exe, non installable package qemu-0.9.0-windows.zip is also accelerated.

 

8. Тогда стоит дать ссылку на идеологию дженту, а то не все понимают в чем их сила. и какие желательны для встроенного линуха

 

9. Дык - уже пробовали, все работало) только не у меня, а у юзера Playnet) если он соберется будет инструкция =)

Share this post


Link to post
Share on other sites

Про меня можно почитать в моей карточке :) Блог завел недавно.

 

Про дженту можно прочитать на их сайте - http://www.gentoo.org/. Раздел Docs.

Share this post


Link to post
Share on other sites

COMA, пробую проделать все как указанно в инструкции, нарвался на то, что ниженаписанные ссылки уже не работают.

Не могли бы Вы их обновить.

 

ядро Linux с поддержкой видео и многих других опций -

http://phoenix.inf.upol.cz/~polakr/qemu/zImage

 

Конфиг можно посмотреть здесь -

http://phoenix.inf.upol.cz/~polakr/qemu/de...2.6.19.1.config

 

Скачиваем образ виртуального диска для QEMU-

http://phoenix.inf.upol.cz/~polakr/qemu/sda.img.bz2

Share this post


Link to post
Share on other sites

Как к qemu прицепить не винчестер, а USB flash диск или карту памяти? Перебор \.PhysicalDriveX не дал результата. (кстати вроде как должно быть \\.\PhysicalDriveX )

Share this post


Link to post
Share on other sites

Как-то тут все очень страшно сложно... Установил я Debian под QEMU для ARM как для обычного ПК, процесс установки на 99% идентичен установке под x86 с CD или иным способом. http://www.aurel32.net/info/debian_arm_qemu.php

Получился образ диска img. Я его сконвертировал в raw формат, fdisk показывает какие на этом файле разделы живут. Как его подмонтировать?

sudo fdisk -l hda.raw
Диск hda.raw: 0 МБ, 0 байт
255 heads, 63 sectors/track, 0 cylinders
Units = цилиндры of 16065 * 512 = 8225280 bytes
Disk identifier: 0x000b57f1

Устр-во Загр     Начало       Конец       Блоки   Id  Система
hda.raw1   *           1         116      931738+  83  Linux
hda.raw2             117         130      112455    5  Расширенный
hda.raw5             117         130      112423+  82  Linux своп / Solaris

Какое смещение указать чтобы оно нашло все что надо?

mount -t ext3 -o loop hda.raw /mnt
mount: wrong fs type, bad option, bad superblock on /dev/loop0,
       missing codepage or helper program, or other error

Это нужно чтобы вывалить содержимое этого образа в папку для NFS, чтобы установленная в QEMU система закрутилась на железе (уж не знаю как получится, пробую :) ).

ЗЫ 2COMA: Как странно подготавливать Linux под виндой... :) Зачем себя так мучать?

 

ЗЗЫ Сам нашел :) http://kpnc.opennet.ru/tips/info/1413.shtml

lomount -diskimage quemu_image.img -partition 1 /mnt/quemu_image

Из состава xen-tools.

В итоге заработало на реальном железе. Не ожидал что так просто можно будет запустить самоустановленную с чистого CD систему...

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this