1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/cn-guoziyang-oslab

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
gdb
run
Loading...
README.md

Хабэйский университет, операционная система, экспериментальная среда, установка скрипта


Реклама!

В настоящее время я работаю над двумя проектами:

  1. Операционная система Moonix на основе языка C (долгосрочный план): Code, Doc.
  2. Эмулятор RV64G на основе Java (WIP): Code.

Если вам интересны эти проекты или связанные с ними, вы можете связаться со мной: guoziyang0033@gmail.com, qq: 643157350.


Этот репозиторий используется для настройки среды, необходимой для экспериментальной операционной системы Хабэйского университета, и в основном содержит исходный код Bochs и Linux-0.11.

Он основан на однократном конфигурационном скрипте hoverwinter и вдохновлён однократным конфигурационным скриптом deathking. В процессе разработки были исправлены проблемы скрипта на последних версиях Ubuntu и Debian, а также добавлена поддержка Arch Linux. Большое спасибо этим двум разработчикам за их работу!

Что я сделал?

  • Добавлена поддержка Arch Linux.
  • Обновлён эмулятор Bochs до версии 2.6.10 (в последней версии 2.6.11 есть серьёзные ошибки в Linux).
  • Обновлены BIOS и VGABIOS эмулятора Bochs.
  • Исправлен конфигурационный файл эмулятора Bochs (старый конфигурационный файл нельзя использовать в новой версии Bochs).
  • Переписан скрипт setup, автоматически устанавливающий необходимые зависимости.
  • Вдохновлённый deathking, добавлен скрипт восстановления.
  • Исправлено несколько мелких ошибок в скриптах run, setup и других.
  • Добавлена поддержка отладчика CGDB уровня C.

Среда

Скрипт подходит для дистрибутивов Linux на базе Debian и Arch Linux, включая, но не ограничиваясь, Debian, Deepin 15, Ubuntu и их производные, а также Arch Linux, Manjaro и их производные.

Скрипт был протестирован на Ubuntu 18.04, Ubuntu 20.04, Deepin v15, Elementary OS и Manjaro.

Последнее: тестирование в Windows Subsystem for Linux 2 (WSL2) завершено!

Обратите внимание, что ядро WSL2 не поддерживает файловую систему minix, что приводит к сбою последующих экспериментов. Вы можете обратиться к моему руководству, чтобы скомпилировать ядро WSL самостоятельно.

Примечание: возможно, из-за источников apt, этот скрипт не может быть использован в Deepin v20 и UOS.

Установка среды

Сначала клонируйте этот репозиторий в папку:

git clone https://gitee.com/cn-guoziyang/oslab.git ~/oslab

Размер примерно 25 МБ, пожалуйста, наберитесь терпения.

Перейдите в каталог и выполните установку. Для дистрибутивов на базе Debian выполните:

cd ~/oslab
./setup debian

Для Arch Linux выполните (сначала добавьте источник archlinuxcn и получите ключ gpg, важно!):

cd ~/oslab
./setup archlinux

Обратите внимание: используйте обычного пользователя, когда требуется root-доступ, скрипт автоматически запросит пароль.

Компиляция

Исходный код Linux 0.11 находится в папке linux-0.11, и после завершения эксперимента в этой папке можно выполнить следующую команду для компиляции:

make all

Если компиляция идёт медленно, можно запустить многоядерную компиляцию, например, для двухъядерной компиляции выполните:

make -j 2

После завершения компиляции в этой папке будет создан файл Image, который является скомпилированным файлом образа.

Если вы хотите очистить результаты компиляции и промежуточные файлы и полностью перекомпилировать, просто выполните:

make clean

Учитывая, что операционную систему необходимо сбрасывать после каждого эксперимента с Linux-0.11, был настроен скрипт сброса, который находится в каталоге проекта:

# in oslab directory
./init

Запуск

Войдите в каталог проекта и выполните

./run

Это запустит эмулятор Bochs и автоматически загрузит скомпилированный файл Image. На экране эмулятора Bochs будет отображаться журнал инициализации, и, наконец, отобразится [/usr/root]#, что означает успешный запуск.

Отладка

Отладка напрямую использует документацию hoverwinter.

Существует два режима отладки ядра: отладка на уровне сборки и отладка на уровне C.

Для отладки на уровне сборки выполните команду:

./dbg-asm

Вы можете использовать команду help для просмотра основных команд, используемых в системе отладки. Более подробную информацию см. в руководстве по использованию Bochs.

Отладка на уровне C немного сложнее. Сначала выполните следующую команду:

./dbg-c

Затем откройте другое окно терминала, перейдите в каталог oslab и выполните:

./rungdb

Новое окно терминала запускает отладчик GDB. Информацию о GDB см. в документации GDB.

Кроме того, если вы хотите использовать более мощный отладчик CGDB, выполните следующую команду в предыдущем шаге:

./runcgdb

Чтобы запустить cgdb.

Эмулятор Bochs с Linux 0.11 и обмен файлами с хост-машиной Linux

Файл hdc-0.11.img в oslab будет использоваться в качестве загрузочного диска при запуске эмулятора Bochs, и все операции обмена файлами между виртуальной машиной и хост-машиной должны осуществляться через этот файл.

Внимание: при обмене файлами виртуальная машина должна быть выключена, иначе образ будет повреждён!

При выключении виртуальной машины в каталоге oslab выполните команду:

sudo ./mount-hdc

На этом этапе hdc станет корневым каталогом Linux 0.11 (/), и вы можете свободно передавать и получать файлы, такие как тестовые сценарии в lab2.

После передачи файлов выполните следующую команду, чтобы размонтировать файловую систему:

sudo umount hdc

Изменения, внесённые в Linux 0.11 в эмуляторе Bochs, не будут автоматически синхронизированы с файлом hdc-0.11.img. То есть, после повторного запуска виртуальной машины после выключения она загрузит оригинальный файл hdc-0.11.img, что приведёт к потере изменений. Если вам нужно синхронизировать изменения с образом, выполните следующую команду на командной строке Linux 0.11 для записи изменений в образ:

sync

Использование в WSL

Тестовая среда — это WSL2 Ubuntu под Windows 10 2004. Предыдущие версии WSL1 также должны работать.

Поскольку WSL не имеет графического интерфейса, сначала установите X11 Server:

sudo apt install xorg

Далее настройте переадресацию X11, добавив переменные среды в ~/.bashrc:

  • Для WSL 1 установите переменную среды DISPLAY на export DISPLAY=localhost:0.
  • Для WSL 2 установите переменную среды DISPLAY следующим образом:
export DISPLAY=`cat /etc/resolv.conf | grep nameserver | awk '{print $2}'`:0

Установите X11 Client на хост Windows, я использую VcXsrv. Его первоначальная конфигурация имеет некоторые подводные камни:

  • Multiple Window
  • Отключить контроль доступа
  • Выключите брандмауэр Защитника Windows

После запуска VcXsrv выполните ./run в WSL, чтобы запустить эмулятор Bochs, и появится окно эмулятора Bochs. Эффект теста следующий:

B9388325092A50BD171127024F894127.md.png

Левое окно — это не окно Bochs в Windows, а окно Bochs в Linux. Таким образом, вы можете счастливо разрабатывать под Windows. Я настоятельно рекомендую использовать VSCode для подключения к WSL для разработки под Windows, это очень удобно.

Благодарности

Наконец, ещё раз спасибо hoverwinter и deathking за их отличную работу. Я лишь проделал небольшую работу, мне очень стыдно.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

2020 Весенний эксперимент по операционной системе Хагвард: однократная конфигурация среды. Развернуть Свернуть
MIT
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/cn-guoziyang-oslab.git
git@api.gitlife.ru:oschina-mirror/cn-guoziyang-oslab.git
oschina-mirror
cn-guoziyang-oslab
cn-guoziyang-oslab
master