OS 5SE осень 2017
Преподаватель: Кринкин Кирилл Владимирович
Контакты: os-au@osll.ru
Live: https://slides.com/kirillkrinkin/deck/live
- Учебные материалы (дополнительные модули содержат хорошие источники):
Как запустить vagrant, qemu, и запатчить решение
sudo vagrant up --provider=docker sudo vagrant ssh default
Содержимое conf/env.mk
QEMU=/usr/bin/qemu-system-i386 QEMUEXTRA=-curses
Параметр QEMUEXTRA
можно не ставить (и так даже лучше); вместо этого нужно запускать QEMU
с помощью make qemu-nox
- тогда QEMU
запустится прямо в вашей консоли и вы не будете страдать.
Если вам не хочется потом каждый раз удалять переменную QEMUEXTRA
из гит-диффа, можете создать линку на исполняемый файл под именем qemu
:
sudo ln /usr/bin/qemu-system-i386 /usr/bin/qemu
После этого все будет находиться.
При проблемах с gdb (типа warning: File "/home/vagrant/lab/.gdbinit" auto-loading has been declined by your `auto-load safe-path' set to "$debugdir:$datadir/auto-load:/vagrant/lab/.gdbinit".
) действовать так, как он укажет: добавить в файл /home/vargant/.gdbinit
одну из двух строк:
add-auto-load-safe-path /home/vagrant/lab/.gdbinit set auto-load safe-path /
И так, и так работает.
Если у вас проблемы с дублированием букв внутри QEMU
, не паникуйте - просто проверьте команды help
и kerninfo
- скорее всего удваивание букв будет проигнорировано, и команды выполнятся.
Для выхода из QEMU
используюйте сочетание клавиш ctrl-a x
.
Для создания файла с патчем работает следующая схема:
sudo touch patch sudo chmod a+rw patch git diff > patch
Совы не то, чем кажутся или The desc field contains the line number and the value contains the code address for the start of that source line: http://www.sourceware.org/gdb/onlinedocs/stabs.html#Line-Numbers
При отправке патчей проверять сначала на своих репозиториях и следить за тем, чтобы концы строк были не ос-специфичными (типа \r\n на винде). С такими различиями патчи не применяются и падают с ошибкой
Можно избежать проблемы с концами строк, если трансферить патч следующим образом:
vagrant ssh -c "cat /home/vagrant/lab/patch" | dos2unix > patch
Если вам лень вручную переносить изменения из виртуальной машины в файлы в вашем форкнутом репозитории, можете воспользоваться утилитой patch
:
cd solutions/${вставь_свою_фамилию}/lab1 patch < your_patch_file
Скорее всего, программа не поймет, где именно лежат ваши измененные файлы, и попросит указать пути к ним. Но это всяко лучше, чем руками копировать все это.