Компания
122,86
рейтинг
22 января 2015 в 12:49

Разработка → Игра про автора systemd — Леннарта Поттеринга

Пока вокруг внедрения systemd в различные дистрибутивы разгораются нешуточные страсти, вплоть до покидания постов в совете, как это было с Debian, некоторые разработчики вместо бесплодных и жарких баталий по переписке занимаются полезным делом.

Кто-то внедряет systemd, кто-то несогласный делает форки, а кто-то — игры.



Один из несогласных с systemd — Gethyn “Xylemon” ThomasQuail сделал игру на основе популярной в то время, когда было принято ругать Билла Гейтса, — XBill.



Она выложена на github разработчика и называется XLennart. Как вы уже поняли, это пародийная игра, в которой игроку требуется недопустить насаждения Леннартом Поттерингом systemd на дистрибутивы и операционные системы.

Игра поставляется с открытым исходным кодом и она свободна. На сколько свободна не совсем понятно, так как не указано под какой лицензией она распространяется. Но это не помешает нам обратить на нее более пристальное внимание.
Игрок, находясь в роли системного администратора, и кто-то (очень похожий на Леннарта), пытается уничтожить его компьютеры. Маленький человечек бегает по игровому пространству уровня и заражает компьютеры вирусом SystenD, который очень сильно напоминает одну известную систему инициализации.



Задача игрока не допустить этого. Если маленький человечек доберется до компьютера, он постарается изменить установленную операционную систему. Игра заканчивается, если остается не более одного рабочего компьютера. С каждым уровнем сложность увеличивается. Появляются компьютеры, объединенные в сеть. В этом случае зараженный компьютер начинает передавать вирус по проводам к остальным компьютерам, входящих в состав сети. Прервать передачу данных (она отображается в огоньках, бегущим по проводам в направлении нового компьютера) можно с помощью ведра с водой, которое находится в верхнем правом углу.

Работоспособность компьютера можно восстановить, если успеть перехватить убегающего Леннарта с пиктограммой ОС и перетащить ее обратно на компьютер.

Панель состояния снизу содержит информацию:
  • Число человечков-Ленни на/за экраном
  • Число компьютеров, работающих на своих системах инициализации/выключенных/с SystenD
  • Уровень
  • Количество очков




Запуск игры
После того, как архив с исходникам скачан и распакован, приступим к компилированию.
Никаких особых системных требований к приложению нет и собирается она в три шага:
  1. ./configure
  2. make
  3. make install


После установки запускаем приложение xlennart из терминала.

Для OpenBSD существует порт openports.se/games/xlennart
И на выходящей в скором времени OpenBSD 5.7 игру можно будет установить через пакетный менеджер
pkg_add xlennart

Параметры запуска
-l Запустить указанный в n уровень.
--gui — Указать конкретный фронтенд. Может принимать значения gtk, motif и anthena
--size — Размер игрового поля. По умолчанию 400x400
-v — Вывод информации о версии и выход
-h — Вывод справки и выход



Автор игры никак не подвергает нападкам то, что делает Леннарт Поттеринг и просто в пародийной форме комментирует историческое событие в мире Линукс. О чем и сообщает в “дисклеймере” к игре.
Автор: @vadim_s_sabinich
FirstVDS / FirstDEDIC
рейтинг 122,86

Комментарии (49)

  • +17
    ./configure
    make
    make install


    Шел 2015 год.
    • +1
      Ну а чем еще собирать?
      • +8
        checkinstall?
        • 0
          --prefix?
          • 0
            Одно другому не третье. checkinstall даст пакет, который может быть атомарно установлен/удален, с подчисткой зависимостей, если они больше никому не нужны. А собирать каждую софтень бандлом в отдельный префикс, с её зависимостями, дополнительно марать PATH… Зачем столько проблем, если можно сделать одной командой?
      • –1
        cmake
      • +2
    • +3
      половина софта в дистибутивах так собирается. В остальном уже всякие cmake/qmake/mvn/etc. И, как мне кажется, если код базировался на xbill, то там и были autotools. Если работает, зачем менять?
      • +7
        image
        • –6
      • +2
        Я думаю, речь о системах управления пакетами, репозиториях и о захламлении системы от «make install». Гораздо лучше собрать deb-пакет с помощью того же checkinstall.
  • 0
    а в чем драма systemd, можно в двух словах?
    • +12
      Продукт с неоднозначными решениями, который насильно продвигают почти во всех дистрибутивах, при этом удаляя альтернативные системы инициализации.
      • +9
        А еще нарушает один из канонов юникса — «программа должна выполнять только одну задачу, но выполнять ее хорошо» (цитата не дословная).
        Слишком много функций systemd пытается на себя перетянуть, а от этого страдает надежность.
        • –2
          Может вы выкинете ядро, всякий coreutils/busybox, gcc, clang, pam, udev, xorg, emacs, всякие ide и прочее? То уж очень много они делают.
          • 0
            Ну Вы не перегибайте.

            coreutils/busybox — являются оберткой над кучей маленьких программ, каждая из которых выполняет только одну задачу.
            gcc — выполняет одну задача — компилирует.
            emacs — редактирует текст, несмотря на кучу дополнительных плагинов.
            ядро — само по себе состоит из кучи модулей/процессов/etc., которые просто работают в одном адресном пространстве (если говорить о монолитных ядрах)

            и т.д. и т.п.

            systemd, в свою очередь, берет на себя кучу невзаимосвязанного функционала: инициализация, журналирование, управление устройствами и многое другое.

            Улавливаете разницу?
            • +8
              Побуду ещё чуток адвокатом дьявола.

              busybox — кусок сильносвязной субстанции, который имеет много общего кода (как и libsystemd в случае обсуждаемого поделия). Если вы хоть раз его собирали/смотрели в его код, то должны знать, что это один бинарник, который содержит кучу несвязного функционала. Начиная от true/false/cp/ln/cat и заканчивая шеллом ash. То, что он поддерживает вызов себя и в виде /bin/busybox true и в виде /bin/true, являющегося хардлинком на /bin/busybox сделано для удобства и совместимости. В случае coreutils это разнесено по куче программ, которые используют общие куски, собираются совместно и идут в одном пакете. Когда то же происходит с systemd — оно вызывает какой-то священный ужас. Там тоже куча бинарников (уже под сотню), которые собираются в одной директории и имеют общие зависимости. Также можно собирать не все, а только нужные и т. п. Но, вроде, считается нормальным зависеть от c, m, pthread и т. п. Тот же upstart зависит от nih, если что. Но в случае systemd это вызывает какую-то сильно резкую реакцию.

              Если вы хоть раз собирали ручками gcc+libc(newlib/glibc/uclibc)+binutils, то должны знать, что в GNU Compiler Collection входит большое количество бинарников, часть из которых выполняет немного функций (как, например, ld — десяток-другой), а часть — являются жуткими комбайнами (gcc/g++), которые и препроцессят, и компилирует, и ассемблер дергают, и линкуют.

              Emacs — делает всё что угодно, т. к. это скорее ОС, чем редактор. Простой редактор, который делает только одну функцию — ed/sed. Остальное (да, даже vi/nano/joe/emacs) — не unix-way.

              Любое монолитное ядро — это жуть-жуть. И ресурсами управляет, и шедулит, и прерывания обрабатывает, и с юзер-спейсом общается.

              Не вижу принципиальной разницы между этим и systemd — не вижу.
            • +4
              > coreutils/busybox — являются оберткой над кучей маленьких программ, каждая из которых выполняет только одну задачу.

              systemd состоит из кучи утилит, каждая из которых занимается своей задачей.

              Вы точно изучали systemd?
              • +9
                Эх, неблагодарный это тред, в свое время как раз из-за дискуссии по systemd в минуса на хабре загремел.

                Коротко по сабжу: systemd — это не хорошо и не плохо, это иной подход, который лично мне кажется более логичным, и большинство опасений по нему как раз кроется в некотором предвзятом отношении к майнтейнеру и его способностям довести проект до его качественного, стабильного и повсеместного использования. Жаль что при этом сообщество слабо учитывает возможность совместного участия и развития идей systemd.
      • +2
        а как можно насильно продвигать в разных дистрибутивах? мне типа виделось что дистрибутивы вроде как независимыми командами делаются…
        • 0
          Мне тоже не понятно. Но на этой почве из дебиана ушло много разработчиков, потому как лоббисты systemd, добились не только внедрения системд, но и отказа от альтернатив. Хотя в философии дебиана альтернатива была практически для всего. А вместе с дебианом потянуться ubuntu с mint. Федора вообще вотчина этого процесса :-/. Без системд, из популярных дистрибутивов остаются только слака и гентоо.
          Инициативные товарищи организовали форк дебиана без системд, но этот процесс не быстрый…
          • +3
            Почитайте результаты голосования (+ описания процесса подсчета голосов, он там не самый тривиальный) и соответствующие треды обсуждения этого дела TC. Они всего лишь решили, что требовать от мейнтейнеров (которые, напомню, работают на добровольных началах, как правило) обязательной поддержки нескольких систем инициализации — это неправильно.

            Никто не запрещает поддерживать несколько инитов, если у разработчиков хватает на это ресурсов. Также никто не запрещал принимать патчи со скриптами инициализации для upstart/sysvinit/whatever.

            Если вы лично готовы поддерживать старые init-скрипты для софта в debian — вперед. Но большинство решило, что хватит откапывать стюардессу.
            • +1
              Обьективно, я с проблемами связанными с systemd не встречалсчя, и, например, на текущем дескопе он у меня благополучно стоит. И согласен, что init скрипты устарели и их сложно поддерживать. Но меня пугает, что отметают альтернативы (OpenRC, upstart).
              • +7
                OpenRC, строго говоря, не init. Он предназначен для запуска сервисов, не более. Как инит в генту использовали bsd init, если не ошибаюсь. Но так как им не пользовался и не поддерживал под него скрипты, не могу сказать ни хорошего, ни плохого.

                Upstart местами ужасен.
                — Если у вас появляется зависимость некого сервиса от 2 и более других — пиши пропало. Т. е. вы пишите start on started A and started B, например. При перезагрузке всё работает хорошо (когда запускаются A и B). Но если вдруг вы сделаете restart B ваш сервис не перезапустится, т. к. придет только событие started B, но не started A.
                — Иногда он умирает при значительном количестве событий inotify. Это, извините, PID 1. Естественно, kernel panic. Видел вживую, не понравилось.
                — Если вы переименуете какой-нибудь файл в /etc/init (свой), то корректно остановить запущенный до этого сервис невозможно без перезагрузки.

                В итоге, на upstart поддержка мало-мальски нетривиальной конфигурации быстро превращается в ад, сравнимый с поддержкой чего-либо аналогичного на runit (кстати, тех «админов», которые предлагают это, как замену systemd на десктопе или сервере надо гнать ссаными тряпками из профессии). Хотя runit может быть приятен для более-менее статической embedded системы.

                Ну я не говорю даже про то, что поддержка классических простыней на баше не делается в апстриме, как правило, но силами мейнтейнеров конкретного дистрибутива. Не считая того, что для каждой третьей софтины простыня оказывается своя, логгирование у софта отличается очень сильно (кто-то использует логгирование в файлы, кто-то в syslog, кто-то просто в stderr/stdout — это силы и время мейнтейнеров, которые уходят на поддержку совместимости. Кстати, в восхваляемом хейтерами systemd runit есть svlogd, который идеологически похож на journald, хоть и не касается ранней загрузки — позволяет логгировать stdout/stderr запущенной программы. В upstart в какой-то момент тоже начинали впиливать аналогичный функционал.

                Есть места, которые мне не нравятся в systemd и journald, но оно пока ощутимо лучше того, что было до этого. Не со стороны пользователя, который не хочет учиться ничему новому, а со стороны админа/мейнтейнера.

                Печально, что в таких темах хейтеры не очень-то используют технические аргументы. В основном набегают в то, что нельзя называть поминусовать.
                • +1
                  В Gentoo скрипты очень даже приятные. Выполняет их /sbin/runscript, который ставится sys-apps/openrc.
                  Приколов Upstart там нет, особенно приколов с «подвисанием» состояния, которое лечится только перезагрузкой.
                  Всё просто и лаконично :)
          • +6
            в dev-рассылке Арча, systemd приняли большинством голосов, мгновенно

            «большинство голосов» — это слабо сказано, вообще все кроме одного человека, который сказал, что будет поддерживать initscripts

            но этот человек через месяц отписал, что не может поддерживать initscripts по той причине, что, внимание, у него не осталось ни одного компьютера с арчем+initscripts.

            ну да, конечно, насильно.
            • +3
              Почему он не установил initscripts? Вообще, странно, что сюда еще не пришел Eddy_Em.
              Я раньше тоже считал systemd очень неоднозначным решением, это впечатление у меня возникло по новостям с opennet и lor, вроде когда добавили HTTP-сервер и генератор QR-кодов. Но когда я начал им пользоваться, я не мог нарадоваться — все так удобно, так логично, так быстро работает. И все последние нововведения, типа networkd, мне очень по душе, т.к., во-первых, он уже функциональнее большинства настраивальщиков сети (например, умеет настраивать policy routing, на моей памяти ни один настраивальщик не умеет этого, а лично мне это нужно), а systemd-run, вы только попробуйте его! Systemd-nspawn — chroot на стероидах, создает вам namespace, ограничивает потребление RAM и CPU запущенного через cgroups, управляет сетью, файловыми системами и самими запущенными машинами!

              По моему мнению, systemd — лучшее, про происходило с Linux.
              • 0
                во-первых, он уже функциональнее большинства настраивальщиков сети (например, умеет настраивать policy routing, на моей памяти ни один настраивальщик не умеет этого, а лично мне это нужно)


                в этом месте газированная лужа
                • 0
                  Так, а кто еще умеет?
                  • 0
                    всё семейство RHEL, всё семейство дебиан (в виде up команды)
                    • 0
                      up-команда — неинтересно, я сейчас именно так и делаю.
                      • 0
                        у дистрибутивов в длинных брюках это файл /etc/sysconfig/network-scripts/rule-<ifname>
              • –1
                Зачем меня звать? Поцтеринг — сволочь, и никаких полезных вещей для линукса он не сделал. Только вред один от него!
          • +5
            Про форк debian, конечно посмотрим, но сейчас всё выглядит печально. Пока devuan смотрится, как способ быстренько собрать денег с недовольных и исчезнуть. Т. к. они подняли чуток инфраструктуры, заимпортили несколько пакетов (base-files, lsb, eudev, loginkit), поправили копирайты. Последние изменения в репозиториях — около месяца назад.

            Из Debian TC уходили как сторонники, там и противники systemd, т. к. количество известной субстанции, которое в них летело, разгребать нравилось не всем.

            Тот же logind появился, т. к. не нашлось людей, которые готовы поддерживать consolekit. Это таки open-source, никто не должен поддерживать кусок копрофосилий мамонта только потому, что части пользователей нравится или не нравится какой-то персонаж. Если кто-то сильно недоволен systemd-logind, то что ж они молчали, а не предложили своё время и/или деньги на поддержку ck?
        • +1
          Ужасный Лёня приходит к разработчикам и под дулом пистолета заставляет всех голосовать правильно, переделывать пакеты и т. п., конечно же.
  • +6
    Вообще говоря, это уже называется mobbing aka травля. Одно дело иметь технологический спор об архитектуре, другое дело направлять оскорбления против человека «за то что человек».
  • +8
    На базе этой гифки можно было бы сделать отличный клон pac-man.
    imgur.com/66HI1Fj
    • +1
      Это мультик, который показывается при прохождении игры
  • –8
    FFUUU… И почему я не линуксойд, мало того что холивар мимо прошел, так еще и в игру нипаиграть(
    • +16
      линуксойд

      Откуда вы только беретесь?
      • +4
        Видимо оттуда же, откуда и пользователи Андройда.
        • +6
          Из Тайланда!
          • +2
            Неймоверные гуманойды. Переучить их нереализуймо. Даже если вы выйграете — стоймость выйгрыша вас не обрадует
            (по материалам личной коллекцйи, все слова взяты из комментариев Хабра)
            • 0
              Я бы проявил некое снисхождение. Всё же русский родной здесь не у всех, особенно грешу на пишущих «неймоверно».
            • 0
              хорошо хоть не «переучйть»
    • +5
      У вас есть два варианта решения этой проблемы:
      1. Установить линукс как все нормальные люди, в целом вопрос о systemd ещё актуален, и если вы хотите похвастаться перед знакомыми холиварщиками, что принимали в нём (холиваре о systemd) участие, то можете ещё успеть.
      2. Скачать новую, недавно вышедшую Windows $i и холиварить о <<Windows $i vs Windows $i — 1>>. Не знаю какой сейчас $i, но вы это можете посмотреть сами.
      • 0
        1. На втором компе убунта крутится, но вроде как это и за линукс на считается труЪ-линуксоИдами (спасибо за минусы, ога), я больше как то имел в виду, что я в этом не разбираюсь и не могу иметь объективного мнения, хотя проблема острая и высказаться бы хотелось.
        2. Я юзаю все и не из личной прихоти, а потому что ПО, которое я разрабатываю и тестирую должно работать на всех… И как человек использующий все версии, скажу так, что одна хуже другой, но должны же программисты МС что то прикручивать, что бы народ завлекать. Хотя например моя мама, как человек очень деловой рада, что там почти готовая экосистема «из коробки», для обычного пользователя. А я рад, что мне приходится все меньше и меньше ее консультировать по компьютерным вопросам. (под экосистемой я имел в виду рабочий комп, домашний, планшет и смартфон)
      • +1
        >2
        10 vs 7 %)
      • +3
        Скачать новую, недавно вышедшую Windows $i и холиварить о <<Windows $i vs Windows $i — 1>>
        Только бы никто $i = 10 не взял… А то проблемы неизбежны.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.

Самое читаемое Разработка