LINUX.ORG.RU

Сообщения wandrien

 

systemd и половинчатые решения

 ,

Слава Поттерингу, в Linux системные учётные записи создаются декларативно.

Но вот почему… почему нельзя было уже исправить проблему пространства имён, чтобы системные учётки не конфликтовали с пользовательскими? Вон Эппл же смогла.

При чем проблема обсуждалась в Дебиане аж 2008-м году. Но в Дебиане могут только обсуждать. Видимо, пока Поттеринг не доберётся до этого, так и будет бардак.

wandrien
()

Выживание на Lubuntu 10.04 в 2023 году

 , , ,

Ну что, пришло время накатить. Накатить Ubuntu 10.04, господа.

Вспомнив глюки панели в GNOME 2.30, которые меня в то время бесили (виджеты время от времени съезжают со своих мест, и панель превращается в беспорядочное нагромождение иконок), в качестве отправной точки я выбрал не ванильный установочный образ Убунты, а Lubuntu. LXDE в Lubuntu 10.04 однако тоже не сахар, версия 0.5.0 очень древняя и куцая, не умеет практически ничего. А то, что умеет — то не работает.

  1. Скачиваем установочный образ. Устанавливаем в виртуалку. Устанавливается система быстро и без заморочек.

  2. При установке система делала вид, что проверяет обновления, на самом деле она ничего не проверила, так как адреса репозиториев протухли. Так что в первую очередь нужно восстановить доступ к репозиториям. В файле /etc/apt/sources.list надо заменить домен archive.ubuntu.com на old-releases.ubuntu.com.

  3. apt-get update && apt-get upgrade. Будет установлено несколько сотен мегабайт обновлений. Перезагружаемся.

  4. Раскладка в иксах настраивается как-то так: setxkbmap -model pc104 -layout 'us(basic),ru:2' -option grp:shift_caps_switch. Я это пишу на случай, если кто-то пойдёт по моим стопам и обнаружит, что через GUI тут раскладку не настроить. Да, LXDE настолько куцая. Поэтому сразу фигачим файл в автозагрузку:

[Desktop Entry]
Type=Application
Exec=setxkbmap -model pc104 -layout  'us(basic),ru:2' -option grp:shift_caps_switch
Hidden=false
Name=setxkbmap
  1. Индикатор переключения раскладки в LXDE — да, но нет. Он как бы есть, но как бы в большей части случаев бесполезен. Он не отслеживает момент, когда setxkbmap загрузила новые параметры раскладки. И поэтому вместо надписи RU показывает пустое место. А иногда показывает как надо. Прокачивайте удачу.

  2. Дальше возникла задача сменить разрешение экрана. Я запускал систему в виртуалке, и иксы по умолчанию автодетектировали разрешение 800x600. В lxrand сменить разрешение можно, но эта версия еще не умеет запоминать настройки и восстанавливать их при входе в сеанс. Поэтому фигачим еще один файл в автозагрузку:

[Desktop Entry]
Type=Application
Exec=xrandr --size 1280x1024
Hidden=false
Name=xrandr
  1. После этого вылазит 2 новые проблемы. Первая — pcmanfm не умеет реагировать на изменение разрешения. Поэтому он занимает собой только кусок рабочего стола 800x600. Вторая — приложения теперь работают с неправильным DPI:
$ xdpyinfo | grep -B1 resol
  dimensions:    1280x1024 pixels (212x159 millimeters)
  resolution:    153x164 dots per inch

На скриншоте обе проблемы: ссылка.

На попытку выставить DPI через xrandr приложения почему-то не реагируют. Поэтому пишем в ~/.Xresources:

Xft.dpi: 96

Ну а глюк с рабочим столом я подпирать костылём не буду вообще. Скоро этот pcmanfm сменится на другой.

  1. После обновления версия Хромиума – 25.0.1364.160. Не то что б это сильно помогло в показе современного веба. В gmail и google-диск не зайти. Хостинги картинок не работают. С горем пополам он может отобразить ЛОР: ссылка. Но зато этот синий заголовок и вменяемые симпатичные вкладки! Ностальгия…

  2. Поддержка запуска консольных программ в меню приложений тоже да, но нет. При попытке запустить htop из списка приложений окно терминала не появляется.

  3. Запуск системы в виртуалке — мгновенный. (CPU хоста - Core i5-2450m.) После входа в графический сеанс — потребление памяти 62 МБ. Версии софта тут такие: Linux 2.6.32, glibc 2.11.1, gcc 4.4.3, glib2 2.24, gtk2 2.20.0.

На этом пока всё. В следущей серии сериала мы будем пытаться собирать под это дело относительно свежий прикладной софт.

wandrien
()

Вопросы по KDE

 , ,

Поставил Manjaro с KDE в VBox, чтобы посмотреть, что там в современных кедах. Тема для всплывающих по ходу дела вопросов.

  1. Когда на элемент таскбара наводишь мышь, то вместо превью окна там видна только большая иконка приложения. Это так и задумано или что-то с настройками? Как сделать превью? По Alt-Tab превью видны.

  2. В таскбаре есть кнопка с надписью «Временно освобождает рабочий стол, перемещая открытые окна в углы экрана». У меня она ничего никуда не перемещает, просто скрывает окна. Вопрос снят, это ошибка перевода, похоже. На англ. текст по смыслу иной.

  3. Есть возможность сделать, чтобы по Alt+Tab листалка показывалась мгновенно, а не с задержкой? Я понимаю, что это by design скорее всего, но это выглядит неопрятно, будто система лагает.

wandrien
()

Вот я и докатился - 2 (c)

 , ,

По мотивам: Вот я и докатился

Арчик надо было накатывать лет 15 назад. Как-то время-то упущено теперь. А сейчас самое то — накатывать FreeBSD уже.

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

wandrien
()

Баг колоризатора для ```

 , ,

На следующем примере без указания параметра c форматирование теста сохраняется, а с указанием — теряется.

  out_file = (filename_option == 0 && num_operands <= 1
              ? - (directories == RECURSE_DIRECTORIES)
              : 0 <= filename_option);
  out_file = (filename_option == 0 && num_operands <= 1
              ? - (directories == RECURSE_DIRECTORIES)
              : 0 <= filename_option);
wandrien
()

Краткая история о том, как не надо писать (и улучшать) код

 , ,

По мотивам разговора в Почему программы на с++ тормозят :) решил оформить это отдельной темой.

В исходниках GNU grep я наткнулся на такое:

/* Whether to output filenames.  1 means yes, 0 means no, and -1 means
   'grep -r PATTERN FILE' was used and it is not known yet whether
   FILE is a directory (which means yes) or not (which means no).  */
static int out_file;
  /* Which command-line options have been specified for filename output.
     -1 for -h, 1 for -H, 0 for neither.  */
  int filename_option = 0;
  /* Don't output file names if invoked as 'grep -r PATTERN NONDIRECTORY'.  */
  if (out_file < 0)
    out_file = !!S_ISDIR (st.st_mode);

Тут явно напрашивается enum вместо магических констант. О чем я сразу подумал. А дальше в коде я наткнулся еще на такой однострочник, с которым без поллитры не разобраться:

  out_file = (filename_option == 0 && num_operands <= 1
              ? - (directories == RECURSE_DIRECTORIES)
              : 0 <= filename_option);

В общем, я подумал, что эта лапша наверное родом откуда-то из конца 80-х - начала 90-х, когда код писали в «хакерских традициях». Но нет. Всё это безобразие было введено в 2019-м году в 3-х коммитах под следующими заголовками:

Автор сначала ввёл enum-ы как разумный разработчик. А потом выкинул их, заменив на числа и магические операции сравнения а ля больше/меньше/равно нулю.

Не делайте так. Не хакерствуйте над битами как для конкурса IOCCC.

wandrien
()

Очумелые ручки, Bedrock, Debian и все-все-все

 , , ,

Всем привет, народ, и особенно - тем, кого помню. Давно не заглядывал.

Валялась у меня тут Live-флешка с Арчем, завернутым в Bedrock. Bedrock - это такой докер наоборот. Прикольная штука, позволяет миксовать софт из разных дистрибутивов в произвольных сочетаниях. (А вот еще какая-то обзорная статья на хабре, не моя.) Валялась без дела год, а сегодня попалась на глаза и решил запустить её.

Пока обновлялся Арч, решил поставить туда же Дебиан. Ну раз есть Бедрок, надо его использовать, а ставить на флешку еще один дистр с роллингом смысла нет. А если с фиксированными релизами - ну тогда Дебиан, очевидно же. И лучше сразу 12-й, потому что к тому времени, как я в следующий раз про эту флешку вспомню, он как раз успеет релизнуться. Апдейтнул Bedrock, развернул Debian в новой страте, чрутнулся туда, немножко настроил, поставил рандомного софта поиграться. Ребутнулся. Загрузился в дебиановский юзерлэнд на арчевском ядре. Ну прикольно. Всё работает, проблем нигде не вылезло.

Потыкал в разные DE. Внезапно прямо хорошо зашла мне XFCE. Лаконичная. Просто симпатичная по дефолту, без выкрутасов. Необходимый минимум настроек и фич есть, и ничем лишним не перегружена. Захотелось на ней и остаться.

И пока тестировал разные конфигурации, включал-отключал страты, созрела идея:

Делаем brl hide Arch, релогаемся - вся куча прикладного софта, поставленного под Арчем, попадает из меню приложений и из PATH. Остаётся чистый Debian с XFCE и минимумом софта. Делаем brl show Arch, релогаемся - в меню снова куча приложений. Хм… Да это же мысль. Я же этого джвадцать лет ждал.

  • Стабильный Дебиан можно использовать в качестве основной ОС, в качестве платформы, на которой работает графический сеанс, DE и основные средства управления компом. Там будут чёткие неизменные версии основных компонентов.
  • В Арч ставим приложения, которые хочется иметь максимально свежими без оглядки на релиз-цикл дистрибутива. В моём случае это, например, Firefox, Libreoffice, gimp и т.п. Плюс удобно ставить софт из AUR.
  • В дополнительные страты по необходимости ставим другие версии дебиана или убунты или чего угодно, где есть нужный софт. Например, мне нужен 5-й kicad, потому что на 6-й лень мигрировать, а 5-й и так меня устраивает. Вот в 11-м Дебиане как раз нужная версия, оттуда и ставим.

И получается функциональный аналог этих ихних рантайм-сред от флатпака, но намного более крутой.

Потому что:

  • Флатхаб не хранит старые версии, это не входит в его задачи. А в архиве Дебиана любые версии хранятся, как показывает практика, вечно. И в любой момент нужную версию можно поставить.
  • Абсолютно любой диструбутив - это уже готовый рантайм для приложений без необходимости изобретать квадратное колесо.
  • Можно свободно сочетать не только разные рантаймы и версии приложений, но и низкоуровневые части системы. Можно легко и удобно использовать ядра от любых диструбутивов, можно менять базовую систему отдельно от приложений и т.п.
  • Можно мигрировать между дистрибутивами настолько, насколько самому пользователю удобно. Вот выйдет когда-то следующий 13-й Дебиан, и я могу сразу использовать отдельные приложения от него, при этом сидя по больше части на 12-м. Не бэкпортировать, а просто юзать как есть. А потом захочу перейти на 13-й - просто доустановлю туда нужные пакеты, выберу другой пункт меню при загрузке, и вот я уже в 13-м. Без всяких дист-апгрейдов и без созданий новых разделов.
  • Да что там, можно хоть сейчас ставить из Sid-а пакеты в отдельной страте, и при этом в основной системе гарантированно ничего не сломается.
  • В изолированных стратах проще организовать сборочное окружение для пакетов, нежели плясать вокруг докера. Как видимость страты другими стратами снаружи, так и видимость изнутри страты наружу - легко управляются командой brl. Также легко для всех страт настраивается глобальная часть пространства файловых имён.

Тут можно еще вспомнить виндовую технологию SxS для библиотек (Side-by-Size сборки), но лучше даже не вспоминать, потому что в Бедроке концепция и возможности на голову выше.

Захотелось собрать такой конструктор уже не на флешке, а в качестве основной системы на ноуте. И если всё будет тип-топ, может даже сделать такую сборку в виде образа для распространения. Или в виде скрипта для автоматического развертывания готовой конфигурации.

Короче, советую попробовать, товарищи энтузиасты. Я чо-т протащился с этого. Буду дальше экспериментировать в эту сторону.

З.Ы. В очередной раз обновляя Арч, который не обновлялся то ли полгода, то ли год, подумал о том, что никогда ничего «само» не разваливается, если только специально не толкать руки себе в задницу. Ни под Арчем, ни под Дебианом, ни под другими адекватными дистрибутивами. ЧЯДНТ?

З.З.Ы. Модератор, создай тэг bedrock, таки да.

wandrien
()

Операционная система Атлант

 

Красноярские программисты создали на базе Linux собственную операционную систему «Атлант», не имеющую аналогов: она позволяет удаленно управлять парком из тысяч персональных компьютеров и дистанционно обновлять на них софт без остановки рабочих процессов. Newslab поговорил с главой фирмы-разработчика и выяснил, как им удалось совершить прорыв в мире IT-бизнеса.

В общем, если без пафоса, то они сделали ПО для управления Linux-машинами в домене и продают лицензии на него.

Презентация: https://rutube.ru/video/b662f26954f52be0a7a7da819644c49f/

Интервью с разрабами: https://newslab.ru/article/999309

Официальный сайт: https://applite.ru/atlant

Что думаете?

wandrien
()

killall больше не killall

 , ,

Расскажите мне, чего я не знаю. После апдейта ОС команды killall и pgrep перестали видеть firefox:

vadim@aquila:~$ killall -KILL firefox 
firefox: процесс не найден
Status: 1
vadim@aquila:~$ pgrep firefox 
Status: 1
vadim@aquila:~$ ps -A -o cmd | grep firefox | head -3
/usr/lib/firefox/firefox -ProfileManager --new-instance
/usr/lib/firefox/firefox -contentproc -parentBuildID 20211121002925 -prefsLen 1 -prefMapSize 253532 -appdir /usr/lib/firefox/browser 5002 true socket
/usr/lib/firefox/firefox -contentproc -childID 2 -isForBrowser -prefsLen 197 -prefMapSize 253532 -jsInit 278680 -parentBuildID 20211121002925 -appdir /usr/lib/firefox/browser 5002 true tab
vadim@aquila:~$ 
wandrien
()

Как прекрасен юникс-вей в 2020-х...

 , ,

…не зря Майкрософт еще в 80-х хотела с ДОСа мигрировать на Юникс. Но не вышло у пацанов, не фартануло.

Попросили вчера помочь с нетривиальной конфигурацией винды. Назанимался нетрадиционным секасом с в ней вдоволь… или вдоль. Точнее сказать, под любым юникс-лайк вся конфигурация была бы тривиальной, но это ж винда.

Большая часть действий делается через тупой GUI, в котором надо лазить по меню и натыкивать галки. Если нужно изменить конфиг, проверить и в случае чего вернуть как было, или протестировать разные варианты, то сидишь и надрачиваешь мышь. Система была рассчитана на людей, которые не могут выразить команду высшим достижением эволюции: человеческим языком.

Некоторые вещи вообще только через реестр. Ну сам реестр это отдельная история. Никакого вам аналога diff, meld, невозможно без дебильных приседаний с экспортом-импортом в текстовый файлик положить конфигурацию в git. Спасибо, хоть экспорт-импорт приделать не забыли. (В этом месте я вернулся сюда из абзаца, в котором писал про кодировки, и еще раз напишу: спасибо! От этих … специалистов можно было бы вполне ожидать, что и этого не будет.)

Система всё время ставит палки в колеса, если нужно часть действий выполнить от имени администратора. Типа, запускаю ФМ с полными правами админа. Создаю в нём файл. Открываю его в Notepad++ — а всё, Notepad++ уже работает не с полными правами админа. Может это, конечно, баг самого NPP, я хз.

Интерфейсы для работы с правами доступа находятся глубоко в категории «рисовал программист» и не обновлялись со времён NT. Там под виндой даже не столько сама система прав доступа сложная, сколько GUI к ней убогий.

И в целом многие интерфейсы сделаны так, что худшим образчикам из Linux и не снилось. Типа прокрутки гигантских списков в окошке фиксированного размера, в который влазит штук пять строк.

Чтобы сделать аналог линуксового «запуск фиксированной команды через sudo без пароля», нужно добавлять задание в тамошний аналог крон!. А чтобы сделать аналог «запуск фиксированной команды через sudo без пароля, но только для конкретной группы пользователей», я вообще не знаю, что делать. Тут моих навыков гуглёжки не хватило.

Описания системных сервисов переведены на русский, такое впечатление, что машинным надмозгом. А описания сторонних сервисов часто вообще не заполнены. Документации на это тоже, понятно, часто нет.

Если ты хочешь взять обычный Блокнот и написать в нём cmd-скрипт, то хрен там ночевал - Блокнот сохраняет файлы в кодировке 1251, а запускается скрипт в кодировке 866!!!! КАКОГО ХРЕНА?!

А если ты берешь весь из себя такой знаменитый Notepad++ с поддержкой кодировок и хочешь перекодировать уже написанный файл, то он не умеет конвертировать между этими кодировками!

Если в системе что-то сломалось, то хрен ты откатишь пакет для теста, нет в ней ни пакетов, ни внятной модели использования файловой системы. Всё навалено кучами легаси-хлама. Внутри папки system32 (которая теперь в целях совместимости теперь навечно будет system32, будь там под капотом хоть 128 бит в регистрах) вперемешку валяются драйвера, пользовательские библиотеки, конфиги, куски интерфейса и чёрт знает что. При этом есть еще такой смешной момент, что несмотря на кучи легаси-винегрета, стабильных расположений путей в ней тоже нет. Например, расположение папки с содержимым меню Пуск переезжало с места на место в каждой (!) крупной версии винды.

Когда что-то гуглишь по вопросам системной конфигурации, обычно попадаешь или на ВИО, где отвечающий тупее вопрощающего, или на официальные места поддержки, где ответ чаще всего «такая штука в Windows не поддерживается, но вы можете попробовать самостоятельно станцевать в гамаке на лыжах», или на поисковый спам.

Эта шляпа еще и на HDD стояла, а я уже забыл, что такое 64-битная винда на HDD. Это ад и израиль, сраный лагодром с загрузками по 5 минут, во время которых пытаются просраться несколько десятков системных сервисов и еще куча говнокода в пользовательском сеансе. И пока они не просрутся, Проводник висит, и весь гуй вместе с ним. Да по сравнению с этим что systemd, что до-systemd-шная баше-лапша - просто вершины архитектуры и топ производительности.

Кен Томпсон, Деннис Ритчи, Ричард Столлман, Линус Торвальдс, и вся Red Hat целиком, и все остальные причастные к Линуксу, и еще разработчики всех BSD, и даже почившая Sun Microsystems с Солярой, СПАСИБО вам всем! Что мы имеем технологичную, конфигурируемую, понятную ОС, и даже целое множество разных ОС. И не привязаны к этой жалкой пародии на OpenVMS, мутировавшей на отравленных землях MS-DOS-а, и по какой-то злой шутке судьбы дожившей до 2020-х!

…уф. Выдохнул.

wandrien
()

Почему gimp рендерит лютое ШГ?

 ,

В качестве примера шрифт Play, 12 pt. На самом деле с любым шрифтом та же шляпа.

Вот картинка: https://ibb.co/BstPQmd

Вот пояснения к картинке, сверху вниз:

  1. XPaint. Да-да, древнее как мамонт иксовое приложение на тулките xaw!
  2. AzPainter.
  3. Pinta. Тормозит при работе с выпадающим списком шрифтов адски. Но рендерит нормально.
  4. Gimp. По мнению gimp-а, вот так выглядит шрифт 12 pt. На самом деле при переключении между px и pt ничего не меняеется. Gimp считает, что один пункт равен одному экранному пикселю.
  5. Снова Gimp в размере 16 px / 16 pt.
  6. Inkscape.
  7. Dia. Никаких настроек DPI не нашел. 12 pt по мнению Dia выглядят так.

У меня, чёрт возьми, есть вопрос. Точнее два.

Почему gimp рендерит шрифты как говно? И как это исправить?

wandrien
()

Потокобезопасность system(3) в glibc

 , , , ,

При чтении документации glibc обнаружил, что system(3) заявлена как потокобезопасная. Что противоречит интуитивно ожидаемому: функция манипулирует обработчиками сигналов, следовательно должна быть MT-Unsafe. Это побудило подробнее изучить вопрос и сравнить реализации в разных ОС.

Возможно пригодится кому:

wandrien
()

При работе в VirtualBox мышь упирается в вертикальные стены

 

Ведешь мышь слева направо, она упирается в случайном месте экрана в невидимую стеку и дальше не идёт.

Резко кидаешь налево до упора и потом вправо - иногда разглючивает, а иногда стена просто возникает в другом месте.

Баг устойчиво воспроизводится на постоянной основе.

Куда копать?

Нагуглить не смог.

wandrien
()

Оформление Firefox

 , ,

Обновился файрфокс и теперь выглядит как кусок чего-то неприглядного: https://ibb.co/3dpzsYX

Очевидная проблема: теперь абсолютно не считывается, какая вкладка активная. Как этим можно пользоваться, не представляю.

Но кроме этого также бардак с меню:

  • Оформление меню не следует дефолтным цветам тулкита. В частности в данный момент - Адвайты.
  • При этом контекстное меню страницы и классическое меню по Alt остались старыми - GTK3-шными, с ними всё нормально.
  • А меню-бутерброд и меню закладок - новые в нестандартном оформлении.

Действительно, в 20-х годах XXI-го века следовать оформлению тулкита не модно. Теперь мы сами с усами, теперь у нас СТИЛЛЛЬ.

Но пока у дизайнеров СТИЛЛЛЬ, простому пользователю надо это как-то фиксить.

По панели табов решение очевидно - усилить контраст. Я перебрал десяток готовых тем, но ни в одной сочетание цветов мне не понравилось. Точнее сказать, в некоторых табы становятся ничего, но вносятся «конструктивные» измненеия в цвет строки адреса, которые мне не нужны.

С меню ситуация хуже. Во всём десятке тем ни нашлось не одной, которая меняет серенький цвет подсветки активного пункта меню на что-то другое. Цвет фона меняют, цвет текста меняют, а цвет заливки выделения - нет.

У меня начали формироваться смутные подозрения, что этот цвет прошит в лису и изменению через стили не подлежит.

Ну тем хуже для лисы - если так, придётся патчить.

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

Всем этим я займусь, наверное, на выходных.

А пока может у кого-то есть конструктивные предложения? Кто как решал эти затруднения?

wandrien
()

Снова аппаратное шерето

 

Пока вы тут фантазируете про tiinn и Альфу, в эту вашу компьютерную безопасность снова постучали и сверху, и снизу.

wandrien
()

Браузер — это ОС :)

 

Я просто оставлю это здесь: http://www.windows93.net/

wandrien
()

Разыскивается тема оформления для Jekyll

 

…которая не будет выглядеть ни как SEO-шный лэндинг, ни как «хакерский блог» без стиля и оформления.

Что-то стиле блога EXL: http://exlmoto.ru

Сверху узкая шапка, сбоку лаконичное меню, по центру ясно видимый текст. Что-то в таком духе.

Что-то полистал списки готовых тем, и там всё печально.

wandrien
()

Программистских баек тред

 ,

Давайте, что ли, откроем локальный филиал башорга и твиттера на тему разработки. Можно рассказывать занимательные и не очень истории из жизни, байки, мемы и просто «как я провел день».

Начну.

История первая.

У меня кусок админки управляет кучкой фоновых процессов. Не напрямую, а через прослойку-супервизора. Прослойку я написал на PHP, чтобы задействовать уже готовые функции админки. А чтобы управлять фоновыми процессами, потребовалось на php из подручных средств соорудить аналог pidfile_open (3). Вот такой:

function readPidfile($pidfile) {
    /* XXX: Race conditions are everywhere. But who cares? */

    if (!file_exists($pidfile)) {
        /* No such file - daemon not running */
        return false;
    }

    $f = fopen($pidfile, "r");
    if (!$f) {
        /* Failed to open file - daemon probably not running */
        return false;
    }

    if (flock($f, LOCK_EX | LOCK_NB)) {
        /* Able to acuire lock - daemon not running */
        fclose($f);
        return false;
    }

    /* Return PID */
    $pid = fgets($f);
    return $pid;
}

Вот смотрю и думаю: какое-то нецелевое использование «макропроцессора для HTML-страниц». Ну а почему бы и нет. Работает же.

История вторая.

Сегодня пришлось повоевать с кодировками в icecast. icecast к кодировкам оказался не очень приспособлен. Вот написал им, может замерджат мой патч: https://gitlab.xiph.org/xiph/icecast-server/-/issues/2423

Но что-то сомнительно. Ход очевидный, но почему-то сами они его не делали.

wandrien
()

При логине на удалённую машину автоматически применять конфиги с локальной машины

 ,

Знаю про вот такую программу для этих целей: https://github.com/fsquillace/kyrat

Есть ли более проработанный аналог?

wandrien
()

PC-MOS/386

 , , ,

Привет! Это черновик заметки, которая должна была быть опубликована в моём блоге. Но так как блог сейчас сломан, я решил опубликовать её здесь. Кто-то недавно жаловался, что на ЛОРе недостаточно ХАБРа? Ну вот вам пост в стиле хабра. Поехали.

PC-MOS/386 — это многопользовательская и многозадачная операционная система, совместимая с MS-DOS 5. Разрабатывалась компанией The Software Link до 1987-го года.

Операционная система использует защищенный режим 386 для изоляции виртуальных машин с приложениями MS-DOS. Поэтому большинство программ, использующих только документированные API MS-DOS, должны работать без проблем.

В 2017-м году исходный код был перелицензирован под GPL3 и выложен на гитхаб. Кроме исходников, репозиторий содержит образы официальных установочных дисков и сканы оригинальной документации в PDF. Также там была исправлена проблема в обработке даты модификации файлов, которая не давала открыть файлы, созданные после 2012-09-01.

Так что теперь можно вполне законно и не нарушив ни одной EULA запустить эту самобытную ОС в виртуалке или даже на реальном железе.

Я немного погонял её в qemu, и пока вопросов у меня больше, чем ответов. Почитать официальный мануал (довольно длинный и в плохом качестве скана) пока времени не было, так всё методом тыка.

Многозадачность

Многозадачность реализована в виде отдельных контейнеров с приложениями. При запуске системы пользователь попадает в первый контейнер, в котором запущена оболочка COMMAND.COM. Далее командой ADDTASK можно добавить другие задачи, в которых по умолчанию также запускается оболочка COMMAND.COM. Для каждой задачи обязательно указывать количество памяти, которое будет выделено под задачу.

Командой SWITCH можно переключаться между задачами. В справке также были упомянуты хоткеи Alt + цифра для этой же цели, но у меня они не заработали.

Можно активировать TSR-программу MONITOR, после чего через Ctrl + Space можно вызывать интерактивное меню для переключения задач и создания новых.

Правда в каждой новой задаче эту команду нужно повторять заново, чтобы в этой задаче работал хоткей Ctrl + Space. Думаю, нужно команду MONITOR прописать в AUTOEXEC.BAT, чтобы она применялась автоматически.

Команды ОС

В этой ОС команды не отвечают на ключ /? и любые другие варианты справочных ключей, которые я пробовал. Вместо этого есть интерактивная справка по команде HELP. По виду и принципу работы напоминает справку из сред разработки QBasic и Turbo C. По команде HELP .КОМАНДА (с точкой перед командой) можно попасть сразу в нужный раздел справки. (А при чём тут точка, вы можете узнать, набрав HELP .DOT.)

Справочная информация довольно куцая, в основном перечисляет ключи команд. Например для команды ADDTASK не написано, что объем выделяемой памяти нужно вводить в килобайтах. Возможно, для пользователей системы тех лет это было очевидно, но всё же. Описания каких-то общих принципов, важных для понимания работы конкретно этого клона DOS, отсутствуют. Возможно, они есть в бумажном руководстве, которое я не читал.

В командной оболочке работают стрелки влево-вправо, Backspace и Delete. Клавишей Insert можно переключать режим ВСТАВКА/ЗАМЕНА, при этом меняется форма курсора. Режим ввода по умолчанию — ЗАМЕНА, что неудобно. Чтобы ВСТАВКА была по умолчанию, нужно в AUTOEXEC.BAT вписать команду INSERT.

Я также проверил все сочетания Ctrl + буква. Ожидаемо работают Ctrl + H как аналог Backspace и Ctrl + M как аналог Enter. Ctrl + C прерывает ввод текущей команды без выполнения. Остальные сочетания просто выводят на экран символы псевдографики.

Последовательное нажатие Esc + буква в командной оболочке выполняет ту же роль, что и Ctrl + буква, только еще и наводит беспорядок на экране при этом. Сочетания Alt + что угодно или Esc + что угодно, привычные миру Unix, тут , похоже, невозможны. (В других приложениях Esc работает как самостоятельный хоткей. Например в интерактивной справке закрывает текущий раздел справки.)

История команд доступна через стрелку вверх и вниз. Между сеансами история не сохраняется.

ED — простой редактор с двумя режимами: визуальным и командным. В визуальном режиме мало отличается от любого редактора любой ОС: стандартные клавиши навигации, режим вставки и замены, хоткеи на Ctrl + буква.

Переход в командный режим по Esc. Командный режим своей лаконичностью напомнил даже не редактор vi, а редактор в составе Basic из ZX Spectrum.

В справке отсутствует клавиша для перехода обратно из командного в визуальный. Разумное предположение, что это должна быть кнопка V — оправдалось. :)

Команда ACU открывает интерактивное меню с настройками системы и встроенной справкой по каждому пункту через F1. Справка пытается быть информативной, но без мануала я всё равно не разобрался во всех настройках полностью. Выбранные настройки записываются в CONFIG.SYS.

Команды MOS и MOSADM позволяют просматривать и изменять различные параметры системы. Синтаксис команд использует подкоманды аналогично как в современных программах git, docker и т.п. Помню, что MS использовала такой же подход уже в NT-based системах для команд настройки сети, а вот были ли подобные команды с подкомандами в MS-DOS, не припомню.

Проблемы

Почему-то не работают стрелки на основном блоке клавиатуры. Стрелки на блоке NumLock работают, но пользоваться ими неудобно, так как в свою очередь на этом блоке не работает Enter. Возможно, это какая-то проблема совместимости с QEMU. Нужно будет попробовать в другой виртуалке.

Позже заметил, что кроме стрелок, такая же проблема с клавишами Insert и Delete. Они работают с Num-блока и неработают с основной части клавиатуры.

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

Упомянутые ALT + цифра для переключения между задачами не работают. Или я делаю что-то не так, или опять проблема с обработкой ввода, и система не распознаёт ALT.

Впрочем, все перечисленные проблемы и сложности могут быть связаны с тем, что я использовал версию, скачанную с какого-то сайта с коллекцией старых программ, а не чистую установку из официального образа.

Еще одна проблема — не столько даже проблема системы, сколько особенность эпохи. Ни одно из приложений системы не уводит процессор в сон между прерываниями даже когда ничего делать не нужно. (Уж хотя бы COMMAND.COM мог бы это делать по умолчанию.) Из-за этого одно ядро постоянно нагружено на 100%, и мой ноутбук показывает температуру 82 градуса. И поэтому все эксперименты с PC-MOS сопровождаются отчётливым звуком П-Ш-Ш-Ш-Ш из вентиляционной решетки.

Что дальше

Было бы интересно поэкспериментировать с этой системой, разобраться в документации и в её устройстве и, возможно, найти все куски тулчейна для сборки и покопаться в исходниках.

Учитывая, что GEM 3.13 теперь тоже опенсорсный, можно попробовать запустить на ней GUI.

Где-то мне попадалась подборка утилит наподобие grep для MS-DOS, которую было бы неплохо добавить.

Еще один интересный вопрос — установка на один раздел с FreeDOS в разные каталоги с возможностью выбора операционной системы при старте. (FreeDOS с большим уровнем совместимости с софтом или PS-MOS с меньшим уровнем совместимости, зато многозадачная.)

wandrien
()

RSS подписка на новые темы