OS 5SE осень 2017 — различия между версиями

Материал из SEWiki
Перейти к: навигация, поиск
(Добавил способ применения патча к репозиторию)
Строка 2: Строка 2:
  
 
Контакты: <code>[mailto:os-au@osll.ru os-au@osll.ru]</code>
 
Контакты: <code>[mailto:os-au@osll.ru os-au@osll.ru]</code>
 
  
 
* [https://github.com/OSLL/os-au-2017 Репозиторий с заданиями и wiki]
 
* [https://github.com/OSLL/os-au-2017 Репозиторий с заданиями и wiki]
Строка 10: Строка 9:
 
** [https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-828-operating-system-engineering-fall-2012/labs/MIT6_828F12_lab1.pdf lab1]
 
** [https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-828-operating-system-engineering-fall-2012/labs/MIT6_828F12_lab1.pdf lab1]
  
 +
 +
 +
----
 +
<div class="mw-collapsible mw-collapsed">
 +
 +
<h5>Как запустить vagrant, qemu, и запатчить решение</h5>
  
 
----
 
----
 +
<div class="mw-collapsible-content">
  
 
     sudo vagrant up --provider=docker
 
     sudo vagrant up --provider=docker
Строка 73: Строка 79:
  
 
Скорее всего программа не поймет, где именно лежат ваши измененные файлы, и попросит указать пути к ним. Но это всяко лучше чем руками копировать все это.
 
Скорее всего программа не поймет, где именно лежат ваши измененные файлы, и попросит указать пути к ним. Но это всяко лучше чем руками копировать все это.
 +
</div>
 +
</div>

Версия 16:58, 30 сентября 2017

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

Контакты: os-au@osll.ru



Как запустить 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.txt

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