Различия между версиями 5 и 6
Версия 5 от 2017-01-21 21:36:48
Размер: 13160
Редактор: ArsenyMaslennikov
Комментарий:
Версия 6 от 2017-04-15 09:16:52
Размер: 13332
Редактор: ArsenyMaslennikov
Комментарий:
Удаления помечены так. Добавления помечены так.
Строка 58: Строка 58:
  * Изначально была мысль: есть же pam_virtualbox, который можно поставить в гостя, и он сможет сразу залогинить пользователя под учётными данными их хоста. Для этого надо, чтобы хост и гость пользовались одной общей сетевой LDAP-базой аккаунтов пользователей. А если контрольная, и сеть (как и аккаунты пользователей и их личные данные) недоступны? Можно было бы сделать локального пользователя guest, который бы использовался в этом случае, но из-за предыдущего пункта пришлось в госте завести безликого пользователя cmc и автологинить его.
  * Другая проблема — этот сетевой хомяк монтируется гостем через vboxsf, который изнутри представляет собой урезанный SMB, но реальным SMB не представляется, не работает без out-of-tree модулей ядра, не документирован вообще, не умеет монтировать не в поддиректорию /media гостя, делать симлинки, хранить владельца и группу файла, а на каждый чих (или несоответствие гостевых прав хостовым) молча говорит "Protocol Error". Прямо диверсия против GNU/Linux. Это в век-то virtio и 9p повсеместно.
  * Изначально была мысль: есть же {{{pam_vbox.so}}} ([[https://www.virtualbox.org/manual/ch09.html#autologon_unix|подробнее в документации по VB]]), который можно поставить в гостя, и он сможет сразу залогинить пользователя под учётными данными их хоста. Для этого надо, чтобы хост и гость пользовались общей базой (в нашем случае — сетевой LDAP-базой) аккаунтов пользователей. А если контрольная, и сеть (как и аккаунты пользователей и их личные данные) недоступны? Можно было бы сделать локального пользователя guest, который бы использовался в этом случае, но из-за предыдущего пункта пришлось в госте завести безликого пользователя cmc и автологинить его.
  * Другая проблема — этот сетевой хомяк монтируется гостем через vboxsf, который изнутри представляет собой урезанный SMB, но реальным SMB не представляется, не работает без out-of-tree модулей ядра, не документирован вообще, не умеет монтировать не в поддиректорию /media гостя, делать симлинки, хранить владельца и группу файла, а на каждый чих (или несоответствие гостевых прав хостовым) молча говорит "Protocol Error". Это в век-то virtio и 9p.
Строка 61: Строка 61:
 * BP: неплохо работает в [[http://dosbox.com|DosBox]] и [[http://www.dosemu.org/|DosEmu]]. Из-за проблем с эмуляцией графики в виртуалке есть проблемы с растягиванием/сжатием содержимого (невозможно DosBox-окно 80x25 размазать по FullHD-монитору, преподаватели '''очень''' этому были не рады). Большинство клавиатурных ручек DosBox по умолчанию совпадает с ручками среды BP, поэтому надо переназначить их подальше (кроме ценной Ctrl+F4). '''В пакетах нет, потому что проприетарщина.''' Я написал свободную [[https://github.com/porrided/cmc-pascal|обвязку]], которую и в репозиторий, в теории, можно положить.  * BP: неплохо работает в [[http://dosbox.com|DosBox]] и [[http://www.dosemu.org/|DosEmu]]. Из-за проблем с эмуляцией графики в виртуалке есть проблемы с растягиванием/сжатием содержимого (невозможно DosBox-окно 80x25 размазать по FullHD-монитору, преподаватели '''''очень''''' этому были не рады). Большинство клавиатурных ручек DosBox по умолчанию совпадает с ручками среды BP, поэтому надо переназначить их подальше (кроме ценной Ctrl+F4). '''В пакетах нет, потому что проприетарщина.''' Я написал свободную [[https://github.com/porrided/cmc-pascal|обвязку]], которую и в репозиторий, в теории, можно положить.
Строка 67: Строка 67:
 * [[https://dman95.github.io/SASM/|IDE SASM]]: нет в пакетах. Автор сего поделия, наш выпускник, обозвавший АЭВМ "архитектурой ассемблера", рассказывает, что это за чудо-юдо, [[https://habrahabr.ru/post/230359/|подробнее]].  * [[https://dman95.github.io/SASM/|IDE SASM]]: нет в пакетах (в Альте — [[https://packages.altlinux.org/en/Sisyphus/srpms/sasm|есть]]!). Автор сего поделия, наш выпускник, обозвавший АЭВМ "архитектурой ассемблера", рассказывает, что это за чудо-юдо, [[https://habrahabr.ru/post/230359/|подробнее]].

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.
        • Большинство групп занимаются уже не изучением Си и алгоритмов на нём, а изучением искусства обращения к средствам ОС из языка Си.
  • 2 курс, 4 семестр
    • Все изучают "Системы программирования. ООП на примере C++. Формальные грамматики."
      • 201-218
        • Требуют то же, что и в 3 семестре, разве что ещё средства разработки и документацию по C++, а также yacc/bison/flex.
        • "Показывайте работу ваших программ на чём хотите, но в классах, как и в том полугодии, гну/линукс" — А. И. Осин

Как эти задачи в 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 (только компилятора, не всей среды), отладчика (?) и шагово доступной документации среду разработки, это устроило бы вообще всех.
  • NASM: есть в пакетах.
  • IDE SASM: нет в пакетах (в Альте — есть!). Автор сего поделия, наш выпускник, обозвавший АЭВМ "архитектурой ассемблера", рассказывает, что это за чудо-юдо, подробнее.

  • MASM 4.0: ещё одна проприетарщина. Тоже есть обвязка.

  • MASM 6.14: сейчас вообще не знаю, на какой суперклей его сажать. Скорее всего, Баула свою винду в отдельный образ завернёт с ним и предоставит нам.
  • Ещё стоят:
    • astyle
    • ddd
    • meld
    • gvimdiff
    • kdiff
    • GNU indent
    • clang-format
    • swipl
    • haskell-stack
    • python 3.5
    • ..., всё из репозиториев.

Meetings/762/PracDebian2016 (последним исправлял пользователь ArsenyMaslennikov 2017-04-15 09:16:52)