OS 5SE осень 2017

Материал из SEWiki
Перейти к: навигация, поиск

Преподаватель: Кринкин Кирилл Владимирович

Контакты: 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

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