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

Руководство по созданию простой UNIX-подобной ОС

1. Настройка среды разработки

Нам нужна среда, в которой мы будем проектировать и собирать наше ядро. Везде далее предполагается, что вы пользуетесь системой *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. Полезные скрипты

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

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

Читайте также:  Как восстановить кэш иконок windows 10

1.5.1. Скрипт Makefile

С помощью этого файла Makefile все файлы, находящиеся в директории с исходными кодами, будет компилироваться, а затем будут компоноваться вместе в один двоичный файл в формате ELF с названием ‘kernel’. Для этого в нем используется скрипт компоновщика ‘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, а также предварительно вставить диск в привод и примонтировать его.

Конечно можно пойти другим путем и скачать с сайта Bochs (http://bochs.sourceforge.net/ diskimages.html) образ диска с предустановленный системой. Там на выбор представлены несколько дистрибутивов Linux, а также OpenBSD и FreeDOS.

Установка системы с настоящего 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 или играть в старые игры.

Читайте также:  Беспроводные сети linux mint

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

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

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

Вам ни к чему эмулировать множество различных ОС, поэтому Bochs не представляет для Вас совершенно никакого интереса. И единственное, что Вам нужно в данный момент — реверсивный контактор (http://www.techtrends.ru/catalog/omron/pereklyuchayutschie_komponenty/nizkovoltnye_kommutatsionnye_ustrojstva/minikontaktory_dlya_dvigatelej/j7kna/) высочайшего качества на 4 кВт.

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

Источник

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

Запуск Bochs просто так, без подготовительных работ, ничего не даст. Разве что — посмотреть, запускается ли эмулятор вообще. Но перед настоящей работой его надо настроить. Наиболее простой способ настройки Bochs — посредством файла .bochsrc в корневом каталоге пользователя.

Есть и другие способы — например, через консольный интерфейс (появляется в окне терминала, откуда вы запустили программу), но это скорее «подстройки», нежели настройки. Итак, текстовый редактор и вперед, править .bochsrc!

Если такой файл еще не создан, то можно воспользоваться готовым шаблоном, создав его при помощи самого Bochs. Для этого запустите эмулятор из консоли: в ней появится меню с числами, надо выбрать 4. Save options to. и сохранить настройки в файл под названием .bochsrc (в ваш корневой каталог). Всё, теперь можно выходить из эмулятора и редактировать этот файл.

Первым делом надо задать жесткий диск и CD-ROM. Жестким будет образ — огромный файл особого формата. Его надо создать утилитой, которая входит в состав Bochs и называется bximage. При её запуске вас спросят, образ чего вы хотите создать (дискеты или жесткого диска). Отвечаем — hd (или просто нажимаем на ). Дальше спросят про тип диска: flat (значение по умолчанию, его и выбираем), sparse или growing. Затем задаем размер диска, имя файла (куда будет записан образ), и после создания образа получаем строку с его па-раметрами. Эту строку надо скопировать и вставить в .bochsrc, изменив в ней только короткий путь к образу на полный.

Для конфигурации из одного жесткого диска и одного привода CD/DVD (виртуально подключенные к ATA0, он же IDE1) в файле .bochsrc должны быть такие строки:

Всего бывает 4 ATA-канала. Каждому можно выделить определенные ресурсы (номер прерывания, адреса портов).

Далее — с какого устройства загружаемся? Варианты:

В качестве дискеты и жесткого диска может выступать не только образ диска, но и каталог системы-хозяина. При этом после окончания сеанса работы эмулятора вам предложат записать изменения, связанные с файлами в этом каталоге. Пример подключения каталога:
ata0-slave: type=disk, mode=vvfat, path=/home/user/mypath, journal=vvfat.redolog

Мне не удалось «увидеть» эту директорию в гостевой (установленной в эмулятор) системе. Хотя, судя по логу сообщений Bochs, он все же распознал каталог и подключил его как накопитель на IDE-канале. Но на этом хорошее закончилось — никакой новый раздел в гостевой системе не появился.

Читайте также:  Как посмотреть графическую оболочку linux

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

Источник

Bochs Linux — подробный обзор и установка эмулятора

Bochs написан в духе всех лучших приложений с открытым исходным кодом. Это приложение управляемое терминалом, взаимодействует через командную строку Windows CE.

О Bochs

Bochs — это программа, которая имитирует полноценный компьютер Intel x86.

Эмулятор включает в себя эмуляцию процессора Intel x86, распространенных устройств ввода-вывода и пользовательский BIOS. Bochs могут быть скомпилированы для эмуляции множество разных процессоров x86.

Инструмент имеет модели устройств для всех стандартных периферийных устройств ПК:

Поскольку утилита имитирует всю среду ПК, ПО, работающее в симуляции, «верит», что оно работает на реальной машине. Такой подход позволяет инструменту запускать широкое разнообразие ПО без изменений.

В результате запускаются популярные ОС x86:

Bochs написан на языке программирования C ++ и предназначен для работы на разных платформах хоста, включая x86, PPC, Alpha, Sun и MIPS. Независимо от платформы хоста, утилита по-прежнему имитирует аппаратное обеспечение x86.

Другими словами, это вообще не зависит от нативных инструкций хост-машины. Это является как сильной, так и слабой стороной. В результате, это главное различие между Bochs и многими другими программами эмуляции x86, такими как VirtualBox, VMware.

Поскольку эмулятор использует программную симуляцию для каждой отдельной инструкции x86, он симулирует приложение Windows на Alpha или рабочей станции Sun.

Однако недостаток подхода — это производительность моделирования. Чтобы точно смоделировать процессор, инструмент выполняет много операций и это делает моделируемую машину во много раз медленнее, чем физическая машина.

Чтобы сделать что-нибудь интересное на моделируемой машине, эмулятору необходимо взаимодействовать с ОС на хост-платформе. Нажав клавишу в окне дисплея Bochs, ключевое событие переходит в модель устройства для клавиатуры.

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

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

Bochs 2.6.10

Ключевые улучшения, добавленные в Bochs 2.6.10

  • поддержка чипсета i440BX PCI/AGP
  • базовая эмуляция 3D-ускорителей Voodoo Banshee и Voodoo3
  • эмуляция расширенных наборов инструкций AVX-512 VBMI2/VNNI/BITALG, VAES, VPCLMULQDQ / GFNI
  • внесены исправления в эмуляцию расширений PCID, ADCX, MOVBE, AVX и VMX
  • в реализации VMX (Virtual Machine Extensions) добавлена поддержка защиты подстраниц памяти на основе EPT (Extended Page Tables)
  • к инструкции CPUID добавлены модели CPU Skylake-X, Cannonlake и Icelake-U. В результате, признаки присутствия защиты от атак по сторонним каналам и связанные с подобной защитой MSR-регистры, реализованные в чипах Icelake-U
  • базовая поддержка DDC (Display Data Channel) для VGA-совместимых графических адаптеров
  • из QEMU перенесён код с эмуляцией HPET (High Precision Event Timer)

Установка

  1. sudo apt update
  2. sudo apt install bochs

Вывод

Bochs имеет множество применений, и пользователи используют его для различных целей. Одни используют инструмент для запуска приложений во второй ОС. Другие, для отладки новых ОС, поскольку каждая строка кода симулятора доступна. Третьи используют в качестве учебного пособия, чтобы узнать, как работает аппаратное обеспечение ПК.

Вообще, Bochs — разноплановый инструмент решающий разнообразные задачи.

Более того, познакомьтесь с другими эмуляторами в этой статье.

Источник

Оцените статью