LINUX.ORG.RU

Избранные сообщения wandrien

Линуксу капец

Форум — Talks

Tilck - tiny linux-compartible kernel.

https://youtu.be/Ce1pMlZO_mI

https://github.com/vvaltchev/tilck

 ,

Irma
()

Сам себе экосистема.

Форум — Talks

Заманали меня современные приложения в край, я даже на лоре парочку топиков создавал «почему современные приложения так разжирели?» и запилил свои. Да ещё чтобы работали на всех Android-смартфонах (т.е min sdk = 5).

https://habr.com/ru/companies/timeweb/articles/726086/

Я назывваю это трушным программерским бомжеванием, а клиент уже потихоньку портирую на мобильную винду. Чо скажете друзья, если найдутся еще интересующиеся, может и миго/маемо сможем оживить?)

 , ,

monobogdan1337
()

gcc 13.1 released

Форум — Talks

 

fsb4000
()

Как сгенерировать заданный код выхода (exit code) одной командой?

Форум — Admin

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

Пытаюсь сделать так:

> echo 32 | xargs exit
xargs: exit: Нет такого файла или каталога
Неожиданный сюрприз. Какого-то черта xargs не работает со встроенными командами шелла...

Как по-другому можно решить эту задачу?

Может быть, даже через inline perl / python или еще каким командным извратом.


Перемещено hobbit из general

 , exit code, код ошибки

Xintrea
()

Simply Linux 10.1 и слезы олдфага

Галерея — Скриншоты

Очень давно не следил за развитием отечественных дистростроителей, решил наверстать упущенное и поставить Simply Linux

Заодно поставил «total conversion» под Windows 95, как бы дико это не звучало.

Уровень локализации на русский оказался настолько мощным что в сумме выглядит практически как эталонная 95 русская венда.

В комплекте с паскалем получился скриншот времен моей учебы в школе и первых опытов с программированием.

 , , ,

alex0x08
()

Почему падает активность в проекте Debian?

Форум — Talks
Объявлены результаты ежегодных выборов лидера проекта Debian. Победу одержал Джонатан Картер (Jonathan Carter), который был переизбран на четвёртый срок. В голосовании приняли участие 274 разработчика, что составляет 28% от всех участников, имеющих право голоса, что является минимальным за всю историю проекта (в прошлом году явка составила 34%, в позапрошлом 44%, исторический максимум - 62%). В этом году выборы были примечательны тем, что на них был выставлен только один кандидат, что свело голосование к выбору между "за" и "против" (за проголосовало 259, против - 15).

https://www.opennet.ru/opennews/art.shtml?num=59026

 

alex1101
()

Вышел симулятор электронных схем Qucs-S 1.0.2

Новости — Open Source
Группа Open Source

Сегодня, 23 апреля 2023 года, состоялся очередной релиз симулятора электронных схем Qucs-S. Особенностью Qucs-S является то, что он не содержит собственного движка моделирования, а использует сторонние SPICE-совместимые движки. Рекомендуемым движком является Ngspice, который предлагается по умолчанию при старте программы.

( читать дальше... )

>>> Страница релиза на Гитхабе

 , , ,

DarthVadimius
()

Убийца ли C язык C3?

Форум — Development

В честь сегодняшнего пре-релиза (0.2.4).

C3 (GitHub) - очередной «убийца» C на базе LLVM. Потихоньку разрабатывается шведским программистом (одна штука).

Ключевые особенности:

  • компилятор написан на C
  • поддержка LLVM 12-15 (насколько мне известно, ни один из конкурентов этого не может (привет, Odin, Zig и т.д и т.п.))
  • полная C-ABI совместимость
  • модули - нет хидерам!
  • дженерики
  • макросы, но не как в C
  • слайсы
  • контракты
  • compile time and runtime reflection (плохопереводимая игра слов)
  • SIMD «из коробки»
  • и многое другое!

Из недостатков - практически спартанская стандартная библиотека, но так как реализованы ещё не все запланированные возможности, то в этом есть смысл.

macro int factorial($n)
{
        $if ($n == 0):
                return 1;
        $else:
                return $n * factorial($n - 1);
        $endif;
}

extern fn void printf(char *fmt, ...);

fn void main()
{
        int x = factorial(12);
        printf("12! = %d\n", x);
}

 , ,

dataman
()

Можно ли считать grub операционной системой?

Форум — Talks

Собственно, почему бы и нет. Запуск внешних программ(модулей) - есть. Консоль есть. Дисковые операции тоже. Получается, что grub(как в принципе и u-boot) - это ОС?

 ,

Werenter
()

SDE: история неуспеха

Форум — Desktop

Привет. В продолжение этого комментария. Потыкал SDE полдня и расскажу вам свои впечатления.

Собрал SDE в pisilinux. Как известно, pisilinux малопопулярный дистрибутив с кучей багов, а я один из тех, кто собирает для него пакеты.

Итак. Панель waterline действительно производит хорошее впечатление и богата настройками. Есть мелкие претензии к внешнему виду. Изменение расположения апплетов из gui вызывает сегфолт. Секундные задержки генерации миниатюр окон.

При первом запуске в панели нет кнопки меню приложений. Проблема связана с настройкой темы значков. Отсутствующая иконка ничем не замещается и не резервируется место.

Настройки из /etc/xdg/sde-session-manager выполняются независимо от того, существует ли каталог ~/.config/sde-session-manager и что там прописано.

stuurman-desktop рисует обои через раз. Окошки ФМ и его настроек спустя некоторое время перестают появляться, если запущен демон.

WM — pek или openbox. Спасибо за внимание.

 ,

zombi_pony
()

Как настроить несколько раскладок клавиатуры Linux Mint Cinnamon 21.1 ?

Форум — General

Здравствуйте.

Я использую Linux Mint Cinnamon с 2012 года и обычно мне хватало включения в настройках 3 ряда и добавления букв Эсперанто Ĉ, ĉ, Ĝ, ĝ, Ĥ, ĥ, Ĵ, ĵ, Ŝ, ŝ, Ŭ, ŭ.

Но в последнее время мне понадобилось кроме эсперантских букв ещё и расширенные типографские символы типа §, °, —, ₽, „, “, «, ».

Это достигается путём включения галочки «дополнительных типографских символов». Эти символы тоже вешаются на 3 ряд клавиш, что создаёт конфликт с эсперантскими буквами, замещая их.

Теперь меня заинтересовал язык APL который так же использует довольно много расширенных символов. Раскладку APL можно так же включить в настройках клавиатуры.

Но она тоже вешается на 3 ряд клавиш и конфликтует с ранее выбранными раскладками замещая их.

Соответственно, у меня возник вопрос, как развести все эти раскладки, чтобы можно было пользоваться одновременно всеми символами?

Думаю, что моя проблема возникает у людей не часто, т.к. обычно, нет необходимости иметь одновременно несколько альтернативных раскладок. Но вот так сложилось.

Я не до конца понимаю, что такое клавиши 5 ряда и как туда подключить раскладки. Есть галочка переключения на 5 ряд, но это ни на что не влияет.

Когда-то в начале 2000-х я вручную редактировал файлы раскладок для Linux (хотя это было не очень удобно, т.к. приходилось изменять какую-то существующую раскладку) и в Windows (Которой я тогда параллельно пользовался) с помощью какой-то утилиты.

Я хотел бы понять:

  1. Как подключать раскладки в 5 ряд.
  2. Как добавить или изменить элементы в «Параметры раскладки клавиатуры».

 

Hemulo
()

Расцепители на DIN рейку выключаемые слаботочкой

Форум — Talks

Хочется вручную механически взводить выключатель и сбрасывать по сигналу с датчика.

Существуют ли вообще такие устройства? Не нашел.


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

Можно электронное УЗО пропатчить, но это сомнительное решение.

 ,

Tanger
()

OpenBSD 7.3 на ноутбуке

Галерея — Скриншоты

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

Вот тут начало, по мере накопления тем буду публиковать детали.

На скриншоте 7.3 OpenBSD, недавно обновленная, с кастомным ядром.

Xfce4 в виде DE, тема оформления видна в выводе neofetch на скриншоте.

 , ,

alex0x08
()

Произвольная сортировка файлов

Форум — Desktop

Всем доброго времени суток.

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

Хотел поинтересоваться у опытных пользователей, есть дистрибутив линукс или файловый менеджер в котором реализована данная функция?

Спасибо за ответ!

 

johnsmith
()

Как экранировать пробелы во вложенных командах?

Форум — General

Есть однострочник:

for f in oldpath/*.png; do convert "$f" $PARAMETERS "newpath/`basename "$f" .png`.webp"; done

Он работает в 1 поток. Можно запускать каждую команду отдельным процессом:

for f in oldpath/*.png; do convert "$f" $PARAMETERS "newpath/`basename "$f" .png`.webp" & done

Но памяти хватает файлов на 300, если больше — всё прибивается по OOM.

Я хотел использовать GNU parallel, точнее sem:

for f in oldpath/*.png; do sem -j8 convert "$f" $PARAMETERS "newpath/`basename "$f" .png`.webp" & done

Но как выяснилось, если в $f есть пробелы, convert получит его без кавычек и не сможет работать.

Вопрос: как принято передавать имена с пробелами пробелы таким утилитам, как sem?

Ответ: У sem и parallel есть параметр --quote или -q.

for f in oldpath/*.png; do sem -q -j8 convert "$f" $PARAMETERS "newpath/`basename "$f" .png`.webp" & done

Но я всё ещё жду ответов о возможности более общего решения. Например, утилиты вроде tr или sed, автоматически экранирующей строки.

 ,

question4
()

Корзина в MC.

Форум — General

Нагуглилось некое libtrash https://pages.stern.nyu.edu/~marriaga/software/libtrash/ попробовал на разных машинах - из под arch или debian и везде одна и та же картина: дирректория ~/Trash создается без проблем, но потом начинается непонятное - что то удалить прав не хватает, что то удаляется мимо корзины, а что то всетаки попадает в ее. Все файлы которые пытаюсь удалять находятся в домащней дирректории и без использования libtrash легко удаляются навсегда. Кто пользуется подобной связкой mc+libtrash, нет ли у вас такой проблемы и если была как решили ее?

 , , ,

amd_amd
()

details - утилита по поддержанию детальной документации в актуальном состоянии

Форум — Talks

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

Я оценил всю крутизну деталей когда разработка проекта была прервана на три месяца. Благодаря им я легко вспомнил всё и легко продолжил проект. Предлагаю оценить и вам удобство такой документации, тем более что я написал няшную утилиту чтобы смотреть какие детали использованы, но ещё не описаны или наоборот найти неиспользуемые описанные детали:

https://github.com/unDEFER/details

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

 

unDEFER
()

Разница конфигов Openbox и BSPwm

Форум — Talks

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

Вот конфа sxhkd

#MPD

shift + alt + {p,n,b,k,l,c}
	mpc {toggle,next,prev,volume -5,volume +5,clear}

Вот конфа openbox

    <!-- Music MPD -->
    <keybind key="S-A-p">
      <action name="Execute">
        <command>mpc toggle</command>
      </action>
    </keybind>
    <keybind key="S-A-n">
      <action name="Execute">
        <command>mpc next</command>
      </action>
    </keybind>
    <keybind key="S-A-b">
      <action name="Execute">
        <command>mpc prev</command>
      </action>
    </keybind>
    <keybind key="S-A-k">
      <action name="Execute">
        <command>mpc volume -5</command>
      </action>
    </keybind>
    <keybind key="S-A-l">
      <action name="Execute">
        <command>mpc volume +5</command>
      </action>
    </keybind>
    <keybind key="S-A-c">
      <action name="Execute">
        <command>mpc clear</command>
      </action>
    </keybind>
    <!-- Music MPD END -->

Слова в принципе излишни, но скажу на последок - считаю оба менеджера лучшими в своём роде.

 , , ,

LibAccelerator
()

linux-0.01 скомпилированный в minix-386 и запущенный в эмуляторе 86box

Галерея — Скриншоты

Я люблю старые программы, мне нравится их изучать и смотреть как они развивались, и во что они сейчас превратились или умерли так и не дожив до современных дней. И по той же самой причине, мне нравится смотреть различных авторов Youtube каналов посвященные ретро тематике в котором авторы рассказывают о корнях программ, игр, приставок или старых компьютерах. И на волне этого, мне захотелось попробовать собрать и запустить, что-то относительно старое, но которое живет и развивается до сих пор. Мой выбор пал на первую версию Linux, версии 0.01.

Те кто знаком с историй создания Linux и её ранних дней, знают, что она писалась Линусом Торвальдсом на 386 машине на которой работала пропатченнная версия Minix 1.5. И не смотря на, то, что есть проект (и не один) позволяющий скомпилировать linux-0.01 на современных версия компиляторов мне же хотелось побыть немного в шкуре самого Линуса и самому собрать ядро в ее родной среде, а именно в Minix и древними версиями GCC.

Те, что интересуется подобной историей (да или просто пользуются гуглом), знают, что такое уже проделывали многократно (посмотрите хотя бы сайт oldlinux.org), но я хотел сделать это всё сам. И вот вооружись энтузиазмом, эмулятором 86Box, старыми версия ПО (многие их которых взяты с вышеупомянутого сайта), а главное ядра Linux, я пошел по стопам Линуса, ну или почти по стопам… :)

Первым делом необходимо было установить классический 16-битный Minix 1.5.10 (верхний левый скрин). При наличии дистрибутива (17 дискет), а также Reference Manual делается это не сложно. Просто необходимо внимательно читать manual Танненбаумана. Единственное замечание по установке в эмуляторе 86Box, так это то, что необходимо в настройках эмулятора (и BIOS) выставить тип 360к для 5 1/4 дисковода, иначе Minix сможет грузится с загрузочной дискеты, но root’овую уже не увидет.

Далее необходимо очень внимательно следовать прекраснейшему руководству от Джона Наллома по превращению в minix-386. На этом этапе каких-либо подводных камней нет (опять же внимательно читаем), единственное необходимо установить тип 1.2M для 5 1/4 дисковода. Также необходимо будет перекомпилировать все бинарные файлы в /bin и /usr/bin. В самом руководстве Джон компилирует только часть их них (сам Брюс Эванс в README на bcc писал, что достаточно только sh :) ). Я же перекомпилировал почти всё.

Затем качаем и ставим готовый компилятор GCC 1.37.1 от Alan W Black’а. Нужно как минимум 3 архива с самим gcc, библиотеками и заголовочными файлами. Главное, ОБЯЗАТЕЛЬНО, необходимо пропатчить ядро Minix (kernel) иначе при компиляции ядра Linux, получите сообщение, что-то типа fp stack overflow.

Ну и под финал всего это необходимо скомпилировать сам Linux-0.01. Линус писал, что он использовал пропатченный им же gcc-1.40 c поддержкой -mstring-insns, но он также писал, что возможно подойдет 1.37.1 и да, им можно скомпилировать ядро Linux. Нужно только убрать вышеупомянутую опцию из нескольких Makefile (об этом писал Линус), а также отредактировать под себя boot.s (под нужный тип дискеты) и include/linux/config.h (параметры жесткого диска). Плюс в Makefile надо добавить путь до gnulib (об этом тоже писал). О чем Торвальдс не писал, так это то, необходимо в Makefile добавить команду конвертации бинарного файла в формат, который мог бы исполняется на Minix-386 (на нижнем левом скрине эти команды можно увидеть). Линус не делал подобной конвертации и могу предположить, что у него был патч который позволял запускать бинарные файлы gcc нативно (aka gnutoo).

Осталось только подготовить свободный раздел жесткого диска, создать несколько устройств в /dev и /bin скопировать bash (+ сделать ссылку на sh) и update. Запись ядро на дискету и как писал Линус «Use the three-finger-salute to reboot you machine».

 , linux-0.01, ,

OlegSL
()

Выходим в интернет с minix-386 1.5.10

Галерея — Скриншоты

Перечитывая, в очередной раз, книгу Линуса Торвальдства «Ради удовольствия: Рассказ нечаянного революционера» (Just for Fun: The Story of an Accidental Revolutionary) и всё больше погружаясь в историю раннего развития ядра Linux, начинаешь находить какие-то факты, на которые ранее совершенно не обращал внимание.

Вот, например, читая эти строки:

Мой эмулятор терминала обрастал наворотами. Я регулярно использовал его, чтобы подключиться к университетскому компьютеру и получить почту или поучаствовать в конференции по Minix.

Я мысленно спросил себя, а как это делалось тогда? Ведь в minix не было никакого сетевого стека (amoeba не в счет). Да, были попытки внедрения сети, и наверно, самый известный проект, это TNET, на основе которого уже был проект по поддержке сетевых карт, таких как WD8003, NE1000/NE2000, 3C503/3C509. Но, во-первых, Линус ничего не упоминал об этом (даже в Linux сеть появилась далеко не сразу), а во-вторых у него на домашнем компьютере просто не было сетевой карты, был только модем.

Хорошо, модем так модем. Но как с помощью него он подключался к университетскому компьютеру? Все достаточно просто (с точки зрения современных технологий) модем Линуса звонил на университетский модем и если он был свободен, происходил пшшш-шшш-дын-дын-пшш.. или modem handshake и если модемы устанавливали связь, оба модема переходили в режим передачи данных, со стороны «университетского сервера» запускался /bin/login, и пользователь авторизовывался там, вводя свой логин/пароль, тем самым попадая на сервер, прям как мы сейчас подключаясь по ssh. И уже на сервере, можно было и почту прочитать и в конференциях поучаствовать…

Но вернемся в наше время. С тех пор, как мне удалось в 86Box собрать minix-386 и в нём скомпилировать и запустить Linux версии 0.01 мне всегда хотелось выйти с него в интернет. Но 86box нет поддержки модема, только сетевые карты, но использовать сетевые карты, с вышеупомянутым TNET, мне не хотелось потому, по-первых, это был бы не канон, а во-вторых TNET у меня не заработал :) (возможно, просто из-за моей криворукости).

И вот, недавно, разработчики 86Box’а зарелизили фичу проброса серийного порта (serial port passthrough) на хостовую ОС и мои руки зачесались…

Первым делом, в настройках 86Box включил passthrough, я задействовал 2-ой com-порт (в minix это устройство /dev/tty2) с режимом Pseudo Terminal/Virtual Console и скоростью 2400 8n1. При запуске 86Box автоматически создать PTY-устройство /dev/pts/XX (у меня это было /dev/pts/19) и уже с этим файлом можно взаимодейстовать как с minix, так и с хоста. Ну, ОК, скажите вы, а что дальше-то, где модем? А модем будем эмулировать через modemulator программа на Go которая реализует небольшой сабсет АТ-комманд модема. Сам modemulator представляет из себя сервер, который при старте открывает tcp порты для работы на различных модемных скоростях, а после установление CONNECT’а, производит подключение по telnet на указанный хост.

Т.к. modemulator открывает сетевой порт, а со стороны 86box есть только pty, то пришлось задействовать socat для форварда данных между pty и tcp портом. Причем у меня не получилось напрямую пробросить /dev/pts/19 на tcp порт (localhost:10024), пришлось вначале socat’ом создать ещё одно устройство pty с пробросом на tcp, и уже потом cat’ами гонять данные туда сюда (см схему внизу скриншота). И в самом конце цепочки CentOS 7 c телнет сервером. Спросите зачем целая виртуалка с CentOS? По простой причине, она у меня уже была настроена.

Собственно, осталось только скомпилировать minicom v1.3.2 вот minix-386 уже попытаться дозвонится (верхний левый скрин). По факту, конечно, с компиляции minicom’а я и начал. В самом процессе компиляции нет никаких проблем, достаточно в Makefile убрать комментарии с флагов предназначенные для Bruce Evans’ bcc и закомментировать, соотвественно, PC Minix ACK compiler. Если всё происходит удачно, то можно попробовать запустить minicom в режиме конфигурации (-s), указать, что модем у нас находится на /dev/tty2 и сохранить как дефолтный конфиг. И потом запустить minicom! minicom отправит команду инициализации модема, но нашему эмулятору модема на неё всё равно, он просто отвечает ОК. И далее «звоним», набираем ATD4242. Когда эта команда прилетит на modemulator, то он откроет телнет соединение с сервером указанный в программе (в моем случаи на telnet://localhost:2323), где надо будет авторизоваться, и уже там можно и «получить почту или поучаствовать в конференции по…».

Но это всё текстовые протоколы, а как на счёт файлов? Линус же как то заливал свое ядро на ftp сервер ftp.funet.fi? А для этого в давние времена придумали протоколы xmodem/ymodem/zmodem + были альтернативные протоколы, такие как kermit и др. Чтобы залить куда-то файл, например по zmodem, необходимо было с одной стороны запустить программу по приему (rz, Receive ZMODEM), а с другой отправить файл через sz, Send ZMODEM. На втором скриншоте справа вы как раз и видите процесс передачи оригинального ядра linux-0.01.tar.Z на «университетский» сервер.

 , ,

OlegSL
()