prac.debian
Какие задачи перед образом стояли
Помимо всяких виртуальных окружений, которые разные авторы-преподаватели факультета ВМК МГУ с любовью для своих сугубых нужд выращивали и передавали в наши хорошие руки для размещения в компьютерных классах факультета, нам оказался нужен этакий "швейцарский нож", "на все руки мастер", "швец, жнец и на дуде игрец", более формально — образ по умолчанию.
На него легла поддержка практикума 1,2 курсов почти полностью (некоторые маргиналы всё-таки прилипли к мёртвой Windows XP, но не о них речь). Про старшие курсы (как их требования, так и их спрос на prac.debian) мне ничего не известно, но многие студенты ВМК по достижении 3-4 курса вдруг обзаводятся личными ноутбуками и преимущественно предпочитают работать на них, да и преподавателей-авторов виртуалок там встречается больше.
Более подробно о том, что именно требовалось младшим курсам:
- Естественно, редакторы текста нужны всем.
 - 1 курс, 1 семестр (осенний) 
- Все изучают "Алгоритмы и алгоритмические языки" ("АиАЯ")
 - В сентябре все проходят машины Тьюринга и нормальные алгорифмы Маркова, нужна среда исполнения НАМ и программ для МТ.
 - 101-106 
- АиАЯ: используют язык Си и стандартные GNU-средства разработки (gcc, gdb, ...).
 
 - 107-112 
- АиАЯ: Язык Free Pascal.
 
 - 113-118 
- АиАЯ: Язык Borland Pascal.
 
 - Замечание: хоть BP и FP как языки — одно и то же на самом деле, преподаватели 113-118 во главе с лектором требуют именно BP 7 под MS-DOS.
 
 - 1 курс, 2 семестр (весенний) 
- Все изучают "Архитектуру ЭВМ и язык ассемблера" ("АЭВМ").
 - 101-106 
- АЭВМ: используют 32-бит NASM (правда, в составе IDE SASM) под Linux.
 
 - 107-112 
- АЭВМ: использовали до этого учебного года MASM 4.0 под MS-DOS.
 Теперь лектор требует MASM 6.14 под Windows (версия <= XP)
 - 113-118 
- АЭВМ: используют MASM 4.0 под MS-DOS.
 - На этом потоке есть парочка экспериментальных групп, которые занимаются по программе А. В. Столярова. См. 101-106.
 
 
 - 2 курс, 3 семестр 
- Все изучают "Операционные системы. ОС UNIX. Язык C" (ОС) 
- 201-218 
- По требованиям к классам здесь братская солидарность: см. АиАЯ 101-106.
 - Большинство групп занимаются уже не изучением Си и алгоритмов на нём, а изучением искусства обращения к средствам ОС из языка Си.
 
 
 - 201-218 
 
 - Все изучают "Операционные системы. ОС UNIX. Язык C" (ОС) 
 - 2 курс, 4 семестр 
- Все изучают "Системы программирования. ООП на примере C++. Формальные грамматики." 
- 201-218 
- Требуют то же, что и в 3 семестре, разве что ещё средства разработки и документацию по C++, а также yacc/bison/flex.
 - "Показывайте работу ваших программ на чём хотите, но в классах, как и в том полугодии, гну/линукс" — А. И. Осин
 
 
 - 201-218 
 
 - Все изучают "Системы программирования. ООП на примере C++. Формальные грамматики." 
 
Как эти задачи в prac.debian решены
- Редакторов насыпано великое множество: 
- vim
 - joe
 - nano
 Atom (*нет в репозитории*)
- Geany
 - Code::Blocks (его включение было ошибкой, размышляю о том, чтобы провозгласить это убожество deprecated и убедить всех, кто им незаслуженно пользуется, поскорее сбежать с этой ядерной бомбы, взрывающей всю виртуалку вместе с гипервизором. Всё равно в ней только код набивают, никакие там управления проектами не используют)
 
 - Автологин. 
- Зачем: при входе в класс, садясь за машину, студента встречает приглашение залогиниться. Только после успешной аутентификации можно выбрать виртуалку и работать с ней. Просить пользователя два раза представляться системе некрасиво, поэтому и решено было ввести автологин.
 - Сейчас реализовано коряво, на базе логина в консоль, без участия чего-либо, похожего на display manager. (зато работает, в отличие от lightdm!)
 
 На факультете ВМК каждому студенту предоставляется аж целых 312 МБ сетевого дискового пространства. Чтобы все файлы студента и вся конфигурация инструментов пользователя (.zshrc, .vimrc, .config, прочие настройки других редакторов и вообще любые кастомизации) была именно там и автоматически подхватывалась независимо от того, за какую машину студент сел и в каком классе, нужно расположить домашнюю директорию пользователя прямо там, на сетевом диске.
Правда, иногда эти 312 МБ переполнялись содержимым .xsession-errors (один раз он у одного студента оказался 23 ГБ) и кешем браузера. Итог: пользователь не может работать с гостем и дропается в шелл. Решение: перемонтировать в оперативную память ~/.cache (для производительности) и ~/.local/share/xorg (для логов Xorg, которые ведутся именно там, а если туда писать нельзя, то X падают) при логине при помощи pam_mount. Но PAM-стек не знает, где хомяк пользователя, для которого он открывает сессию!
Изначально была мысль: есть же pam_vbox.so (подробнее в документации по VB), который можно поставить в гостя, и он сможет сразу залогинить пользователя под учётными данными их хоста. Для этого надо, чтобы хост и гость пользовались общей базой (в нашем случае — сетевой LDAP-базой) аккаунтов пользователей. А если контрольная, и сеть (как и аккаунты пользователей и их личные данные) недоступны? Можно было бы сделать локального пользователя guest, который бы использовался в этом случае, но из-за предыдущего пункта пришлось в госте завести безликого пользователя cmc и автологинить его.
- Другая проблема — этот сетевой хомяк монтируется гостем через vboxsf, который изнутри представляет собой урезанный SMB, но реальным SMB не представляется, не работает без out-of-tree модулей ядра, не документирован вообще, не умеет монтировать не в поддиректорию /media гостя, делать симлинки, хранить владельца и группу файла, а на каждый чих (или несоответствие гостевых прав хостовым) молча говорит "Protocol Error". Это в век-то virtio и 9p.
 
НАМ/МТ: сейчас вставлено жутковатое (окно сопротивляется указаниям window manager!) поделие М. Новикова на дельфях, его нет в репозиториях и не надо, есть план заменить на доступное где-то в онлайне из любого места веб-приложение, но это требует переговоров с преподавателями, не раньше июня.
BP: неплохо работает в DosBox и DosEmu. Из-за проблем с эмуляцией графики в виртуалке есть проблемы с растягиванием/сжатием содержимого (невозможно DosBox-окно 80x25 размазать по FullHD-монитору, преподаватели очень этому были не рады). Большинство клавиатурных ручек DosBox по умолчанию совпадает с ручками среды BP, поэтому надо переназначить их подальше (кроме ценной Ctrl+F4). В пакетах нет, потому что проприетарщина. Я написал свободную обвязку, которую и в репозиторий, в теории, можно положить.
FP: полностью нативные средства разработки. В репозиториях Debian не поставляется документация, её пришлось взять с сайта и кое-как припихать к IDE, вручную прокликав Help->Files->Add... на каждый из 9 файлов .chm
- Качество FP IDE отвратительно. 
- она не меняет размеров, даже если поменять их её окну (например, расширить на полный экран), категорически не отображает текст в кодировках, отличных от CP866 (независимо от настроек локали и терминала), ...
 - Если бы только скрутить из Geany, bpc/fpc (только компилятора, не всей среды), отладчика (?) и шагово доступной документации среду разработки, это устроило бы вообще всех.
 
 
- Качество FP IDE отвратительно. 
 - NASM: есть в пакетах.
 IDE SASM: нет в пакетах (в Альте — есть!). Автор сего поделия, наш выпускник, обозвавший АЭВМ "архитектурой ассемблера", рассказывает, что это за чудо-юдо, подробнее.
MASM 4.0: ещё одна проприетарщина. Тоже есть обвязка.
- MASM 6.14: сейчас вообще не знаю, на какой суперклей его сажать. Скорее всего, Баула свою винду в отдельный образ завернёт с ним и предоставит нам.
 - Ещё стоят: 
- astyle
 - ddd
 - meld
 - gvimdiff
 - kdiff
 - GNU indent
 - clang-format
 - swipl
 - haskell-stack
 - python 3.5
 - ..., всё из репозиториев.
 
 
