Linux kernel 2015 — различия между версиями

Материал из SEWiki
Перейти к: навигация, поиск
(Подготовка к следующему занятию)
(Удалил ссылки на практические задания, т.к. они ведут на репозиторий где есть их решения. Репозиторий удалить не могу, т.к. google code теперь readonly)
 
(не показано 20 промежуточных версий 2 участников)
Строка 5: Строка 5:
 
Вступайте в [https://groups.google.com/forum/#!forum/au-linux-kernel-spring-2015 google группу]. Она же список рассылки курса.
 
Вступайте в [https://groups.google.com/forum/#!forum/au-linux-kernel-spring-2015 google группу]. Она же список рассылки курса.
  
[https://code.google.com/p/au-linux-kernel-spring-2015/ Репозиторий]
+
[https://drive.google.com/folderview?id=0B-KXDlig5kwVfmNyYWZGYVJsYWFsR1B0WjdIVW16YzRJLVZqNTU5SWNFejdPY0syMzN1RGc&usp=sharing Материалы курса + успеваемость]
  
[https://drive.google.com/folderview?id=0B-KXDlig5kwVfmNyYWZGYVJsYWFsR1B0WjdIVW16YzRJLVZqNTU5SWNFejdPY0syMzN1RGc&usp=sharing Материалы курса]
+
Занятия проходят по средам с 14 до 18, аудитория 206.
  
 +
== Примерная инструкция по настройке development environment ==
 +
https://drive.google.com/file/d/0B-KXDlig5kwVTDZvS1VPSTA1Xzg/view?usp=sharing
  
== Подготовка к следующему занятию ==
+
== Правила сдачи работ ==
Установите в своем development Linux (далее host) qemu-kvm и dev версию библиотеки ncurses:
+
  
$ sudo apt-get install qemu-kvm
+
- Комитим в свою ветку решение задания. Решение задания должно находиться в каталоге tasks/<название_задания>/
  
$ sudo apt-get install libncurses-dev
+
- Создаем новый issue. Ставим Owner'ом преподавателя. Шаблон названия темы: <фамилия> <имя> <название задания> <ветка git>
  
 +
- Ждем комментариев и оценки от преподавателя в ответе на issue.
  
Также установите в host: git, gcc если нет.
+
- Оценка выставляется от 0 до 5 баллов.
  
Склонируйте в свой host репозиторий курса:
+
- issues, созданные позже дедлайна по-умолчанию не проверяются.
  
git clone https://eabatalov89@code.google.com/p/au-linux-kernel-spring-2015/
+
== Зачет ==
 +
Тем кто наберет >=70% от максимально возможных баллов автоматом ставится зачет. Если нет автомата, то чтобы получить зачет, нужно будет успешно поговорить с преподавателем о нескольких темах из курса.
  
Перейдите в каталог репозитория linux-3.19 и выполните:
+
== Code style ==
 +
Лучше придерживаться стиля, который используется в коде заданий. При желании можно писать по-другому, главное не меняйте правила формирования имен:
  
$ make defconfig
+
- upper case только для макросов и констант
  
$ make -j8
+
- имена функций, типов пишутся в lower case + подчеркивание между словами
  
И подождите...
+
== Обработка ошибок ==
 +
Все ошибки нужно обработать. В процессе обработки ошибки нужно освободить все более не используемые ресурсы. Далее нужно перейти в безопасное состояние, нахождение в котором не повлечет новых ошибок. Нужно сообщить об ошибке уровню выше, если он присутствует (например userspace'у или вызывающей функции).
 +
Если ошибка не позволяет нормально функционировать ядру, то нужно вызвать функцию panic().
  
 
+
[[Category:5 курс. Весна 2015]]
Скачайте установочный образ базового debian дистрибутива:
+
 
+
http://cdimage.debian.org/debian-cd/7.8.0/amd64/iso-cd/debian-7.8.0-amd64-netinst.iso
+
 
+
 
+
Создайте каталог для виртуальной машины, где будет запускаться самосборное ядро:
+
 
+
$ mkdir vm && cd vm && mkdir share
+
 
+
Создайте образ диска для виртуальной машины (далее vm):
+
 
+
qemu-img create disk.img 2G
+
 
+
 
+
Установите базовый Debian Linux в vm (замените PATH_TO_DEBIAN_ISO на путь до файла debian-7.8.0-amd64-netinst.iso):
+
 
+
qemu-system-x86_64 -enable-kvm -cdrom PATH_TO_DEBIAN_ISO -hda disk.img -boot d -m 1024 -localtime
+
 
+
Можно убрать параметр -enable-kvm, если host запущен под виртуальной машиной. Это снизит производительность vm, но для целей курса ее будет достаточно.
+
 
+
 
+
Выберите в меню install (как-то так) и используйте все настройки по умолчанию.
+
 
+
То есть установите дистрибутив без desktop environment и т.п. Не выбирайте дополнительных компонентов. Локаль, timezone можно тоже оставить USA, это не важно.
+

Текущая версия на 15:04, 9 февраля 2016

Лектор - Евгений Александрович Баталов (eabatalov89 sobaka gmail.com)

Практика - Евгений Александрович Баталов

Вступайте в google группу. Она же список рассылки курса.

Материалы курса + успеваемость

Занятия проходят по средам с 14 до 18, аудитория 206.

Примерная инструкция по настройке development environment

https://drive.google.com/file/d/0B-KXDlig5kwVTDZvS1VPSTA1Xzg/view?usp=sharing

Правила сдачи работ

- Комитим в свою ветку решение задания. Решение задания должно находиться в каталоге tasks/<название_задания>/

- Создаем новый issue. Ставим Owner'ом преподавателя. Шаблон названия темы: <фамилия> <имя> <название задания> <ветка git>

- Ждем комментариев и оценки от преподавателя в ответе на issue.

- Оценка выставляется от 0 до 5 баллов.

- issues, созданные позже дедлайна по-умолчанию не проверяются.

Зачет

Тем кто наберет >=70% от максимально возможных баллов автоматом ставится зачет. Если нет автомата, то чтобы получить зачет, нужно будет успешно поговорить с преподавателем о нескольких темах из курса.

Code style

Лучше придерживаться стиля, который используется в коде заданий. При желании можно писать по-другому, главное не меняйте правила формирования имен:

- upper case только для макросов и констант

- имена функций, типов пишутся в lower case + подчеркивание между словами

Обработка ошибок

Все ошибки нужно обработать. В процессе обработки ошибки нужно освободить все более не используемые ресурсы. Далее нужно перейти в безопасное состояние, нахождение в котором не повлечет новых ошибок. Нужно сообщить об ошибке уровню выше, если он присутствует (например userspace'у или вызывающей функции). Если ошибка не позволяет нормально функционировать ядру, то нужно вызвать функцию panic().