Линуксу капец
Tilck - tiny linux-compartible kernel.
Tilck - tiny linux-compartible kernel.
Заманали меня современные приложения в край, я даже на лоре парочку топиков создавал «почему современные приложения так разжирели?» и запилил свои. Да ещё чтобы работали на всех Android-смартфонах (т.е min sdk = 5).
https://habr.com/ru/companies/timeweb/articles/726086/
Я назывваю это трушным программерским бомжеванием, а клиент уже потихоньку портирую на мобильную винду. Чо скажете друзья, если найдутся еще интересующиеся, может и миго/маемо сможем оживить?)
Мне нужно выполнить такую команду, которая бы возвратила заданный код возврата. Код возврата принимается из входного потока.
Пытаюсь сделать так:
> echo 32 | xargs exit
xargs: exit: Нет такого файла или каталога
Очень давно не следил за развитием отечественных дистростроителей, решил наверстать упущенное и поставить Simply Linux
Заодно поставил «total conversion» под Windows 95, как бы дико это не звучало.
Уровень локализации на русский оказался настолько мощным что в сумме выглядит практически как эталонная 95 русская венда.
В комплекте с паскалем получился скриншот времен моей учебы в школе и первых опытов с программированием.
Объявлены результаты ежегодных выборов лидера проекта Debian. Победу одержал Джонатан Картер (Jonathan Carter), который был переизбран на четвёртый срок. В голосовании приняли участие 274 разработчика, что составляет 28% от всех участников, имеющих право голоса, что является минимальным за всю историю проекта (в прошлом году явка составила 34%, в позапрошлом 44%, исторический максимум - 62%). В этом году выборы были примечательны тем, что на них был выставлен только один кандидат, что свело голосование к выбору между "за" и "против" (за проголосовало 259, против - 15).
Сегодня, 23 апреля 2023 года, состоялся очередной релиз симулятора электронных схем Qucs-S. Особенностью Qucs-S является то, что он не содержит собственного движка моделирования, а использует сторонние SPICE-совместимые движки. Рекомендуемым движком является Ngspice, который предлагается по умолчанию при старте программы.
( читать дальше... )
В честь сегодняшнего пре-релиза (0.2.4).
C3 (GitHub) - очередной «убийца» C на базе LLVM. Потихоньку разрабатывается шведским программистом (одна штука).
Ключевые особенности:
Из недостатков - практически спартанская стандартная библиотека, но так как реализованы ещё не все запланированные возможности, то в этом есть смысл.
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);
}
Собственно, почему бы и нет. Запуск внешних программ(модулей) - есть. Консоль есть. Дисковые операции тоже. Получается, что grub(как в принципе и u-boot) - это ОС?
Привет. В продолжение этого комментария. Потыкал SDE полдня и расскажу вам свои впечатления.
Собрал SDE в pisilinux. Как известно, pisilinux малопопулярный дистрибутив с кучей багов, а я один из тех, кто собирает для него пакеты.
Итак. Панель waterline действительно производит хорошее впечатление и богата настройками. Есть мелкие претензии к внешнему виду. Изменение расположения апплетов из gui вызывает сегфолт. Секундные задержки генерации миниатюр окон.
При первом запуске в панели нет кнопки меню приложений. Проблема связана с настройкой темы значков. Отсутствующая иконка ничем не замещается и не резервируется место.
Настройки из /etc/xdg/sde-session-manager выполняются независимо от того, существует ли каталог ~/.config/sde-session-manager и что там прописано.
stuurman-desktop рисует обои через раз. Окошки ФМ и его настроек спустя некоторое время перестают появляться, если запущен демон.
WM — pek или openbox. Спасибо за внимание.
Здравствуйте.
Я использую Linux Mint Cinnamon с 2012 года и обычно мне хватало включения в настройках 3 ряда и добавления букв Эсперанто Ĉ, ĉ, Ĝ, ĝ, Ĥ, ĥ, Ĵ, ĵ, Ŝ, ŝ, Ŭ, ŭ.
Но в последнее время мне понадобилось кроме эсперантских букв ещё и расширенные типографские символы типа §, °, —, ₽, „, “, «, ».
Это достигается путём включения галочки «дополнительных типографских символов». Эти символы тоже вешаются на 3 ряд клавиш, что создаёт конфликт с эсперантскими буквами, замещая их.
Теперь меня заинтересовал язык APL который так же использует довольно много расширенных символов. Раскладку APL можно так же включить в настройках клавиатуры.
Но она тоже вешается на 3 ряд клавиш и конфликтует с ранее выбранными раскладками замещая их.
Соответственно, у меня возник вопрос, как развести все эти раскладки, чтобы можно было пользоваться одновременно всеми символами?
Думаю, что моя проблема возникает у людей не часто, т.к. обычно, нет необходимости иметь одновременно несколько альтернативных раскладок. Но вот так сложилось.
Я не до конца понимаю, что такое клавиши 5 ряда и как туда подключить раскладки. Есть галочка переключения на 5 ряд, но это ни на что не влияет.
Когда-то в начале 2000-х я вручную редактировал файлы раскладок для Linux (хотя это было не очень удобно, т.к. приходилось изменять какую-то существующую раскладку) и в Windows (Которой я тогда параллельно пользовался) с помощью какой-то утилиты.
Я хотел бы понять:
Хочется вручную механически взводить выключатель и сбрасывать по сигналу с датчика.
Существуют ли вообще такие устройства? Не нашел.
Независимые расцепители похожи на то что нужно, но они вроде не на слаботочке работают и хочется одно дешевое устройство.
Можно электронное УЗО пропатчить, но это сомнительное решение.
Давно хотел начать описывать реалии использования OpenBSD, поскольку информации в сети по ней мало, а та что есть часто устаревшая, либо касается исключительно серверного использования.
Вот тут начало, по мере накопления тем буду публиковать детали.
На скриншоте 7.3 OpenBSD, недавно обновленная, с кастомным ядром.
Xfce4 в виде DE, тема оформления видна в выводе neofetch на скриншоте.
Всем доброго времени суток.
Подскажите пожалуйста по такому вопросу. В ранних версиях виндовс, в частности в хр была функция произвольной сортировки файлов. То есть, была возможность сортировать файлы в произвольном порядке не только на рабочем столе, но и в любой папке файлового менеджера, как в виде таблицы / списка, так и в виде эскизов.
Хотел поинтересоваться у опытных пользователей, есть дистрибутив линукс или файловый менеджер в котором реализована данная функция?
Спасибо за ответ!
Есть однострочник:
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, автоматически экранирующей строки.
Нагуглилось некое libtrash
https://pages.stern.nyu.edu/~marriaga/software/libtrash/ попробовал на разных машинах - из под arch или debian и везде одна и та же картина: дирректория ~/Trash
создается без проблем, но потом начинается непонятное - что то удалить прав не хватает, что то удаляется мимо корзины, а что то всетаки попадает в ее. Все файлы которые пытаюсь удалять находятся в домащней дирректории и без использования libtrash
легко удаляются навсегда. Кто пользуется подобной связкой mc+libtrash
, нет ли у вас такой проблемы и если была как решили ее?
Ранее я уже писал, что использую в своих новых проектах детальную документацию, способ ведения документации когда в коде расставляются @метки, а в отдельной директории они все подробно описываются в Markdown-файлах.
Я оценил всю крутизну деталей когда разработка проекта была прервана на три месяца. Благодаря им я легко вспомнил всё и легко продолжил проект. Предлагаю оценить и вам удобство такой документации, тем более что я написал няшную утилиту чтобы смотреть какие детали использованы, но ещё не описаны или наоборот найти неиспользуемые описанные детали:
https://github.com/unDEFER/details
Не в новостях потому что утилита очень уж мелкая и написана за пару часов..
Переезжаю с одного оконного менеджера на другой, и вот что заметил когда, переносил хоткеи для 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 -->
Слова в принципе излишни, но скажу на последок - считаю оба менеджера лучшими в своём роде.
Я люблю старые программы, мне нравится их изучать и смотреть как они развивались, и во что они сейчас превратились или умерли так и не дожив до современных дней. И по той же самой причине, мне нравится смотреть различных авторов 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».
Перечитывая, в очередной раз, книгу Линуса Торвальдства «Ради удовольствия: Рассказ нечаянного революционера» (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 на «университетский» сервер.
← назад | следующие → |