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
- ..., всё из репозиториев.