Хабэйский университет, операционная система, экспериментальная среда, установка скрипта
В настоящее время я работаю над двумя проектами:
Если вам интересны эти проекты или связанные с ними, вы можете связаться со мной: guoziyang0033@gmail.com, qq: 643157350.
Этот репозиторий используется для настройки среды, необходимой для экспериментальной операционной системы Хабэйского университета, и в основном содержит исходный код Bochs и Linux-0.11.
Он основан на однократном конфигурационном скрипте hoverwinter и вдохновлён однократным конфигурационным скриптом deathking. В процессе разработки были исправлены проблемы скрипта на последних версиях Ubuntu и Debian, а также добавлена поддержка Arch Linux. Большое спасибо этим двум разработчикам за их работу!
Скрипт подходит для дистрибутивов 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.
Файл 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
Тестовая среда — это WSL2 Ubuntu под Windows 10 2004. Предыдущие версии WSL1 также должны работать.
Поскольку WSL не имеет графического интерфейса, сначала установите X11 Server:
sudo apt install xorg
Далее настройте переадресацию X11, добавив переменные среды в ~/.bashrc:
export DISPLAY=localhost:0
.export DISPLAY=`cat /etc/resolv.conf | grep nameserver | awk '{print $2}'`:0
Установите X11 Client на хост Windows, я использую VcXsrv. Его первоначальная конфигурация имеет некоторые подводные камни:
После запуска VcXsrv выполните ./run в WSL, чтобы запустить эмулятор Bochs, и появится окно эмулятора Bochs. Эффект теста следующий:
Левое окно — это не окно Bochs в Windows, а окно Bochs в Linux. Таким образом, вы можете счастливо разрабатывать под Windows. Я настоятельно рекомендую использовать VSCode для подключения к WSL для разработки под Windows, это очень удобно.
Наконец, ещё раз спасибо hoverwinter и deathking за их отличную работу. Я лишь проделал небольшую работу, мне очень стыдно.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )