Как пользоваться bochs linux

Обновлено: 07.07.2024

Нам нужна среда, в которой мы будем проектировать и собирать наше ядро. Везде далее предполагается, что вы пользуетесь системой *nix и инструментарием GNU. Если вы хотите использовать систему windows, вы должны либо воспользоваться пакетом cygwin (который является средой, эмулирующей *nix), либо DJGPP. В случае, если используется windows, файлы make и команды, приведенные в настоящем руководстве, могут не работать.

1.1. Структура директориев

Все ваши файлы с исходным кодом будут находиться в директории src, а вся ваша документация (вы пишите документацию?) должна быть в директории docs.

1.2. Компиляция

Примеры, приведенные в этом руководстве, должны успешно компилироваться с помощью инструментария GNU (gcc, ld, gas и т.д.). примеры на ассемблере написаны с использованием синтаксиса Intel, который более удобен (мое личное мнение), чем синтаксис, используемый в GNU AS. Чтобы выполнять ассемблирование, вам нужен Расширенный ассемблер .

В этом руководстве не описывается разработка загрузчика. Для загрузки нашего ядра мы будем пользоваться загрузчиком GRUB . Чтобы это делать, нам нужен образ дискеты с предустановленным в нем загрузчиком GRUB. Есть руководства , в которых описывается, как это делать, но, к счастью, я взял стандартный образ, который можно найти здесь . Он должен находиться в вашем директории 'tutorial' (или в главном директории проекта с тем названием, которое вы ему дали).

1.3. Запуск на исполнение

В качестве тестовой системы нет альтернативы чистому аппаратному железу. К сожалению, чистое аппаратное железо не так привлекательно, когда что-то идет не так (но вы, разумеется, собираетесь писать код сразу абсолютно без ошибок, не так ли?). Возьмите эмулятор Bochs . Bochs является эмулятором для платформы x86-64 с открытым исходным кодом. Когда дела пойдут совсем не так, как надо, эмулятор bochs сообщит вам об этом и сохранит состояние процессора в журнальном файле, что чрезвычайно полезно. Кроме того, его можно запустить и перезагрузить гораздо быстрее, чем реальную машину. Мои примеры будут сделаны так, чтобы они хорошо работали под эмулятором bochs.

1.4. Эмулятор Bochs

Для того, чтобы запустить эмулятор bochs, вам нужен конфигурационный файл bochs (bochsrc.txt). Так получилось, что в качестве образца конфигурационного файла можно взять файл, приведенный ниже!

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

В этом файле указывается, что bochs эмулирует машину с оперативной памяти объемом в 32 MB и тактовой частотой, эквивалентной компьютеру PentiumII с тактовой частотой 350MHz. Можно увеличить число инструкций, исполняемых в секунду, но я предпочитаю медленную скорость эмуляции, просто так я могу следить за тем, как обрабатываются тексты большого размера.

1.5. Полезные скрипты

Мы собираемся выполнять некоторые действия очень часто - создавать (компилировать и компоновать) наш проект и переносить получившийся в результате двоичный код ядра в наш образ дискеты

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

1.5.1. Скрипт Makefile

С помощью этого файла Makefile все файлы, находящиеся в директории с исходными кодами, будет компилироваться, а затем будут компоноваться вместе в один двоичный файл в формате ELF с названием 'kernel'. Для этого в нем используется скрипт компоновщика 'link.ld':

1.5.2. Скрипт Link.ld

В этом скрипте загрузчику LD указывается, как настроить наш образ ядра. Во-первых, в нем с помощью символа 'start' загрузчику LD указывается, что наш двоичный файл располагается в самом начале. Затем в нем загрузчику LD сообщается, что секция .text (где находится весь ваш код), которая должна идти первой, должна начинаться с адреса 0x100000 (1 Мб). Следующими должны быть секции .data (инициализированные статические данные) и .bss (неинициализированные статические данные), причем каждая секция должна быть выровнена относительно начала страницы (ALIGN (4096)). Компилятор Linux GCC также добавляет дополнительную секцию данных .rodata, которая используется для инициализированных данных, таких как константы. Для простоты мы их просто помещаем в секцию .data.

1.5.3. Скрипт update_image.sh

Приятный небольшой скрипт, который будет перемещать новое двоичное ядро в файл образа дискеты (предполагается, что вы это делаете в директории /mnt). Примечание: чтобы использовать команду losetup, вам нужно указать путь к директорию /sbin в переменной среды окружения $PATH.

1.5.4. Скрипт run_bochs.sh

Этот скрипт настройки устройства loopback, запустите на нем эмулятор bochs, а затем отключите это устройство.

Обзор свободного эмулятора Bochs: запуск эмуляции и итоги

Задав в файле настройки загрузочное устройство, запускаем Bochs из консоли и нажимаем в первом экране опций цифру - start emulation. Если вы хотите установить какую-то систему с CD/DVD, то надо указать загрузку с CD-ROM, а также предварительно вставить диск в привод и примонтировать его.

Установка системы с настоящего CD/DVD либо с ISO-образа диска может озадачить. BIOS в Bochs очень строгий, и загрузочные образы он трактует соответствующим образом: одни подходят, другие - нет.

Это же касается и образов, записанных на CD. Согласно стандарту загрузочных дисков El-Torito, есть два варианта, откуда BIOS получает загрузочный код: либо непосредственно с CD, либо с образа дискеты, записанного на том же CD. Это как-то связано с придирчивостью BIOS в Bochs, но как именно - затрудняюсь ответить.

Практическое использование Bochs с относительно современными системами кажется мне затруднительным. У меня достаточно мощный компьютер, но если производительности Bochs хватает для Windows 98, то Windows XP в нём тормозит, а её установка заняла около пяти или шести часов (я уже и счет потерял, но ради эксперимента терпеливо ждал, когда же наконец она завершится).

Пытался ставить Ubuntu: вроде бы началась загрузка интерфейса установщика, но это дело длилось столь долго, что я не дождался и прервал.

Напоследок - наверное, самое главное, что следует знать о Boch. Для передачи ему фокуса мыши, надо щелкнуть по иконке мыши на его панели инструментов. Чтобы освободить фокус и передать его в систему-хозяин, надо при зажатых + нажать среднюю кнопку мыши. Иначе клавиатурный и мышиный фокус будут у Bochs и вы не сможете переключиться во вне его.

Конечно, следует отличать эмуляцию от виртуализации. Я готов мириться с медлительностью Bochs, но многие его возможности могли бы иметь рабочие настройки по умолчанию. Вместо этого почти каждый аспект Bochs приходится настраивать вручную, через файл. По умолчанию можно запросто запустить FreeDOS и работать в каком-нибудь Volkov Commander или играть в старые игры.

Но DOSBox справляется с этим эффективнее, притом почти всё в нем работает «из коробки». Зато умельцы ставят Bochs на Android, устанавливают внутрь Windows 95, 98, XP, ждут ее запуска. и это (с той или иной скоростью) работает!

Мне кажется, название Bochs покамест, если к использованию программы не прилагать дополнительных усилий, можно трактовать скорее как «коробочка» в смысле закрытости: без усердной настройки мы получаем в Bochs весьма изолированную от внешнего мира гостевую систему, которую, кстати, и не с каждого «реального» CD получается установить.

Трудно ожидать от Bochs в будущем особого увеличения производительности (разве что за счет более мощных поколений аппаратной части, приобретаемых пользователями), но хотелось бы дружественности к пользователю. Я много не прошу - хотя бы на уровне современной документации к файлу .bochsrc. Как я могу пользоваться программой и настраивать ее, не имея подробной документации?

Именно поэтому, я спешу сообщить Вам, что Вы сможете приобрести данное устройство в компании "ЭКСПРЕСС НТС-ЭКО".

Bochs: компьютерный эмулятор IA-32 с открытым исходным кодом

Bochs является «Emulador de Ordenadores» de «Código Abierto» специально построен, на данный момент, чтобы подражать 32-битные архитектуры (IA-32). Кроме того, он очень портативен, он написан на C + +, и работает на самых популярных платформах.

Помимо эмуляции Процессор Intel x86, общие устройства E / S. y una «BIOS» персонализированный, Bochs может быть скомпилирован для подражания многим Процессоры X86 разные, с первого Intel 386 пока процессоры «Intel y AMD x86-64» более свежие, которые, возможно, еще даже не поступили в продажу.

Bochs: Введение

Из-за этого Bochs способен управлять большинством «Sistemas Operativos» в их «Entornos emulados» включая «Linux, DOS o Microsoft Windows» . Bochs изначально был написан Кевин Лоутон, и он по-прежнему является тем, кто в настоящее время поддерживает указанный проект.

Los «Entornos emulados» или Bochs их можно компилировать и использовать разными способами, некоторые из которых все еще находятся в разработке. Хотя его можно использовать для полной эмуляции ПК x86, включая процессор x86, аппаратные устройства и память.

Таким образом, чтобы иметь возможность эффективно и результативно выполнять «Sistemas Operativos» вместе со всем программным обеспечением, установленным внутри Bochs, как если бы они были внутри, как настоящая машина внутри другой машины.

То есть, чтобы Bochs например, вы можете позволить компьютеру с современным «Sistema Operativo» тип Unix / X11, может запустить старый «Sistema Operativo Windows 95» и связанное с ним программное обеспечение, просто отображаемое на «Sistema Operativo Host» окно, как будто имитирующее дополнительный монитор на используемом компьютере.

Bochs: Содержание

Bochs: Эмулятор операционных систем

общие черты

Среди выдающихся особенностей, которые можно отметить Bochs являются:

  1. Это бесплатный и легко адаптируемый эмулятор ПК IA-32 (x86), написанный на C ++.
  2. Он мультиплатформенный, то есть у него есть установщики для Windows (32/64 Bit .exe) и Linux (.tar.gz и .rpm) и в формате ".deb" в различных репозиториях некоторых дистрибутивов на основе DEBIAN.
  3. Способен эмулировать старые аппаратные платформы: Intel 386 и 486, Pentium I, II, III и IV и даже ЦП с архитектурой x86-64. Он также может имитировать некоторые образцовые классические модели от AMD, такие как K6-2 и Athlon 64.
  4. Возможность эмуляции старых операционных систем: GNU, GNU / Linux, * BSD, FreeDOS, MS-DOS и Windows 95 / NT, Vista и Seven.
  5. Возможность эмулировать старые инструкции ЦП: MMX, SSEx и 3DNow
  6. Он широко используется при отладке операционных систем, так как ведет журнал ошибок и дампов файлов.
  7. Это позволяет эмулировать все необходимое аппаратное обеспечение в гостевой операционной системе до или во время выполнения эмулятора в гостевой операционной системе.
  8. Его графический пользовательский интерфейс не самый надежный или интуитивно понятный, но его можно легко настроить, отредактировав файл конфигурации с именем bochsrc.txt.
  9. Bochs издается под лицензией GNU LGPL компанией MandrakeSoft (теперь называется Mandriva).
  10. Его имя фонетически произносится так же, как английское слово «Box». Это сделано для того, чтобы сыграть словами, сказанными словами, что в переводе с испанского означает «Коробка». Термин, широко используемый для обозначения эмулируемых сред компьютерных архитектур и операционных систем.

Новые функции в версии 2.6.10

Новая версия 2.6.10, выпущенная 1 декабря 2019 г., содержит следующие изменения:

  • ЦПУ: Исправления для исправления эмуляции ЦП (критические исправления для эмуляции PCID, ADCX / ADOX, MOVBE, AVX / AVX-512 и VMX).
  • ЦПУ: Реализована поддержка эмуляции инструкций AVX-512 VBMI2 / VNNI / BITALG, VAES, VPCLMULQDQ / GFNI.
  • VMX: Реализация защиты подстраниц на основе EPT.
  • CPUID: Добавлены новые модели процессоров Skylake-X, Cannonlake и Icelake-U.
  • CPUID: Реализация отчетов о предотвращении атак по побочным каналам и соответствующих журналов MSR, включенных для Icelake-U.
  • Добавлена ​​базовая поддержка: Для набора микросхем PCI / AGP i440BX, для эмуляции Voodoo Banshee / Voodoo3 и для DDC, для VGA-совместимых адаптеров.
  • Реализована эмуляция HPET: Портировано из Qemu.

Примечание: Чтобы расширить эту информацию, можно открыть следующую официальную ссылку: Изменения в версии 2.6.10

Разница между Bochs и другими эмуляторами

«Bochs» гораздо более конкретен с точки зрения конфигурации процессора, шины и порта, чем другие традиционные эмуляторы, такие как, «VirtualBox» . Поскольку эмуляторы Традиционно используются разные уровни Виртуализация очень эффективно, в то время как «Bochs» является полным Среда эмуляции который предоставляет гораздо больше функций. То есть он интерпретирует инструкции программы одну за другой вместо использования методов виртуализации.

Среди этих функций обычно:

  1. Доступ к различным типам процессоров
  2. Альтернативная загрузка BIOS
  3. Модификация параметров RTC,
  4. Спецификация протокола связи на клавиатуре

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

Наконец, «Bochs» использовать изображения эмуляции с формат ".img", что обычно требует времени на создание их коллекций.. «Bochs» Он не идеален, если требуется высокая производительность, так как способствует точно подражатьценой хорошей производительности. Кроме того, его не легче использовать по сравнению с другими, например VirtualBox o VMWare, но у него есть хорошая документация, на изучение и освоение которой нужно время.

Bochs: Заключение

Заключение

Мы надеемся, что ты небольшой, но полезный пост об этом отлично «Emulador de Ordenadores y Sistemas Operativos de código abierto» для 32-битные архитектуры IA-32 (x86) называемый «Bochs» , который, среди многих преимуществ, очень портативен, написан на C ++ и работает на самых популярных платформах, представляет большой интерес и полезность для всех. «Comunidad de Software Libre y Código Abierto» и большой вклад в распространение замечательной, гигантской и растущей экосистемы приложений и для «GNU/Linux» .

И для получения дополнительной информации не всегда стесняйтесь посещать любой Онлайн-библиотека в качестве OpenLibra y JedIT читать книги (PDF) по этой теме или другим области знаний. А пока, если вам это понравилось «publicación» , не переставай делиться этим с другими, в вашем Любимые веб-сайты, каналы, группы или сообщества социальных сетей, желательно бесплатных и открытых как Мастодонт, или безопасно и конфиденциально, например Telegram.

Содержание статьи соответствует нашим принципам редакционная этика. Чтобы сообщить об ошибке, нажмите здесь.

Полный путь к статье: Из Linux » приложений » Bochs: компьютерный эмулятор IA-32 с открытым исходным кодом

Скомпилировать и установить после декомпрессии


дисплей

Успешная установка!

Создать зеркало


Вы можете создать новую папку nasm на рабочем столе, затем войти в эту папку и ввести в командной строке:

создаст файл a.img в папке.

Скомпилируйте код и напишите в зеркало

В качестве примера возьмем код из «Язык ассемблера x86: из реального режима в защищенный»: сохраните его как code.asm в nasm

Напишите программу на зеркало

Выполнить код NASM

Создайте bachsrc.txt в nasm с содержимым


дисплей

выполнить снова


Выберите 6, чтобы начать моделирование, появится черное окно, введите C, чтобы отобразить

Успешно!

Интеллектуальная рекомендация


Краткое описание общих функций MPI

содержание 1, основная функция MPI 2, точка-точка функция связи 3, коллективная функция связи 1, основная функция MPI MPI_Init(&argc, &argv) Информировать системы MPI для выполнения всех необх.

Примечание 9: EL выражение


JVM память

концепция Виртуальная машина JVM управляет собственной памятью, которая разделяет память во многие блоки, наиболее распространенной для памяти стека и памяти кучи. 1 структура виртуальной машины JVM H.

Проблема сетевого запроса на Android 9.0

вЗапустите Android 9 (API Уровень 28) или вышеНа устройстве операционной системы Android, чтобы обеспечить безопасность пользовательских данных и устройств, использование по умолчанию для зашифрованно.


Учебная запись по Webpack (3) В статье рассказывается о создании webpack4.0.

предисловие Для изучения веб-пакета автор также предпринял много обходных путей. Есть много вещей, которые я хочу знать, но я не могу их найти. Автор поможет вам быстро начать работу. Цель этой статьи.

Читайте также: