LINUX.ORG.RU

Форум

Активные теги:

 , , , , , , , , , , , , , ,

Требуются пояснения по установке и работе Alt Linux на мобильном устройстве с ARM-процессором

 , , , ,

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

Поискал информацию в интернете. Из (не очень большого) массива информации понял, что условный дистрибутив Линукса нужно оптимизировать чуть ли не индивидуально под каждую конкретную АРМ плату. Есть АРМбиан, оптимизированный для большого числа устройств, но возвращаемся к первому абзацу и понимаем, что в моменте я решил побыть патриотом (всё ради образовательного процесса) и от АРМбиана придётся отказаться.

Если ограничить поиск информации только альт-Линуксом, всё становится совсем скудно. Нашёл экспериментаторов на альтмобайл.орг, которые сделали готовые дистрибутивы на небольшом ряде устройств, и это замечательно, но возникают вопросы ко всему остальному.

С учётом всех вводных, вопросы к знатокам следующие:

  1. По всему остальному что нашёл: всё таки есть из разрозненных источников информация, что Альт как-то способен «работать» на armv7 и aarch64 архитектурах, но это же довольно большой диапазон, неужели он, хоть и с нюансами, но встанет на любую плату, или я всё не так понял? Если это так, то какие подводные в процессе установки и в пользовании, какой функционал будет доступен, а какой - ограничен?

  2. Насколько сложно самостоятельно «приготовить» дистрибутив Альт-линукса на своё мобильное устройство? Возьмём совершенно рандомный планшет, заказанный с Али-экспресса, и при условии, что мне не нужен функционал мобильных устройств по типу камеры, звонков, сенсора и прочего. Что для этого нужно знать, чему нужно научиться и какие образовательные источники по данным темам можете посоветовать новичку?

Спасибо за уделённое моим вопросам время.

SaintDionisy
()

Очистить старые данные ulogd2

 ,

Данные логов iptables можно хранить в базе данных при помощи ulogd2, а вот как удалять устаревшие данные? То есть, там данные хранятся в базе в виде нескольких связанных таблиц, их структура в целом понятна, то есть, удалить вручную в целом можно, но хотелось бы какой-то штатный способ, может он есть, а я его пропустил?

Если погуглить, то появляются советы вроде удаления данных в базе запросом типа:

DELETE FROM ulog2 WHERE timestamp < (NOW() - INTERVAL '24 hours');

При этом мешают ограничения, связанные с другими таблицами:

ERROR:  update or delete on table "ulog2" violates foreign key constraint "tcp_id_fk" on table "tcp"
DETAIL:  Key (_id)=(1) is still referenced from table "tcp".

Понятно, что вопрос решаемый (удалить в транзакции сначала устаревшие данные из связанных таблиц, а потом из основной), но может не стоит делать велосипед и готовое решение уже есть? Может я не вижу всей картины, и чистка базы от старых записей делается каким-либо приложением для управления ulogd2?

askh
()

Клиент OpenVPN с флешки

 

Доброго всем.

Посоветуйте, может кто делал уже. Нужна загрузочная флешка с которой могу подцепиться к работе по OpenVPN TAP по сертификату. Ну и клиент для RDP и SSH. По сути больше ничего не нужно. Попробовал сделать на Drbian 13, все получилось, но тормознуто в плане отзывчивости пока все грузится. Когда уже подцепился к рабочему компу, вроде нормально. Может кто заморачивался с такой идеей? А то в отпуск выхожу, а ноут с собой таскать не хочется, но просто компы будут доступны для использования. Понятно, что лучше сказать - я в тайге, инета нет, отстаньте, я в отпуске. Но бывают моменты, где нужно….

deys
()

Вайбкодерам и вайбписателям

 ,

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

troizet
()

Небольшой косяк разметки при просмотре с мобильного

 , ,

Приветствую. Вот собственно, сабж. Браузер – Firefox 155, устройство – Xiaomi Mi 10t Pro.

yars068
()

Я создал youta: TUI для Ютуба, ЯндексМузыки, локальных файлов/аудиокниг (запоминает где играл), радио (показывает текущий трек), подкасты

 , , , ,

Люблю Ютуб, и обычно перед сном слушою его. На старом ноутбуке. Где от обычного Ютуба - включается вентилятор. Спасался юзерскриптом который оставлял только аудио. Пробовал разные TUI для Ютуба - везде было чтото не то. И вот решил попробовать через LLM сгенерировать себе то что хочется. А с LLM знаете как - вместо записи в TODO новой функциональности - можно ему сказать - и он сделает. Так что обросла моя youta многими полезными кнопками.

Audio-only. Играет через mpv. В фоне - yt-dlp. Также используется API Ютуба - для комментариев.

Помимо Ютуба - поддерживаются и многие другие онлайн площадки.

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

Такая же гетерогенная история.

Реклама пропускается - если в таймкоде написано «Реклама» и через SponsorBlock. Альтернативный заголовок показывает рядом - через DeArrow.

Codex, Rust. Стартует моментально. Экономит CPU, RAM, батарею. Один исполняемый файл - около 20 мегабайт. Есть Gentoo ebuild - в том числе bin. Есть i686 сборка - чтобы ваш древний компьютер приносил пользу.

Знакомый аудиофил рассказывал что у них Gentoo считается лучшей системой - потому что можно использовать alsa и убрать лишнее - так что возможно тут и этот кейс.

Можно оставлять локальные «комментарии»-заметки.

Интегрирован с AcoustID - когда по горячей клавише - делает отпечаток - и находит Викиданные - не по метадате - а по звуку.

Есть горячие клавиши для перехода между главами Ютуба.

Можно показать QR для локального файла, папки, канала Ютуба - и получить podcast xml в свой телефон. Без промежуточного сервера - генерируется LAN ссылка.

Можно скачать весь Ютуб канал.

Шортсы показывает по умолчанию - но есть кнопка отключения.

По подписке - может на старте автоматически скачивать новые аудио.

Синхронизации с подписками Ютуба нету.

Можно дать линк на любую страницу - и youta вынимет оттуда то что можно проиграть.

Есть загрузка в Wikimedia Commons, Evernote. Саммари из LLM можно получить - для этого скачиваются captions.

Доступна и GUI версия на веб технологиях - мой друг добавил - не нравится ему TUI.

На выходе проверяет - если ~/.config/youta/ под гитом - делает коммит и пуш - чтобы сохранить подписки, историю, заметки.

Использую в TTY. Нравится.

MIT.

https://github.com/vitaly-zdanevich/youta

Рассказывал на митапе о нём https://www.youtube.com/watch?v=swzZX4Y30Ak

vitaly-zdanevich
()

Ламповый компьютер

 

https://www.thetubecomputer.com/
https://www.securitylab.ru/news/577108.php

Американский (судя по GeoIP для сайта) пенсионер собрал ламповый компьютер. 460 двойных триодов 6Н3П (высота 50 мм, ⌀22 мм, цена в РФ 100-400 р.), то есть 920 вентилей ИЛИ-НЕ. При включении нужно ждать 10 минут для прогрева и термостабилизации. 8 бит, 16 команд процессора, возможность проводить 128-битные операции через регистр переноса. Потребляет ~1 кВт, весит 20 кг.

Сейчас пишет под него симулятор дирижабля.

question4
()

Есть ли программы для рукописного ввода и редактированием обычных текстовых файлов?

 

Именно под Linux или *BSD. Чтобы рукописно кодить можно было. :^)

Jullyfish
()

В Wayland завезли глобальные хоткеи

 ,

Привет, чят!

Следом за протоколом, позволяющим программами самим ставить координаты своих окон, в Wayland теперь можно ещё и глобальные хоткеи назначать без порталов и прочих странных штук.

Ссылка: https://gitlab.freedesktop.org/wayland/wayland-protocols/-/commit/819004adb3ab7e46f3fa3caef05b96e20434b244

Так глядишь, из Wayland получится сделать полноценную оконную систему лет через 10.

yorshka
()

В России запустили связь 5G

 ,

На первом этапе операторы будут использовать частоты, ранее выделенные для LTE. Затем они получат право использовать полосы частот в диапазоне 4,63-4,99 ГГц, выделенные специально для 5G, бесплатно.

Связь 5G запустили в Москве, Твери, Петербурге, Новосибирске, Екатеринбурге, Казани, Самаре, Ярославле, Уфе, Волгограде, Красноярске, Перми, Челябинске, Великом Новгороде, Нижнем Новгороде и Краснодаре. В некоторых городах 5G запущен силами только одного оператора, где-то двух, в общем, спрашивайте у своего оператора, что он там умеет.

Пользователи Android телефонов с поддержкой 5G могут уже начать пользоваться, пользователь iOS ждут высочайшего разрешения от Apple.

Я ссылка.

P.S. Лично у меня нет аппаратов с поддержкой 5G, проверить не на чем. Отпишитесь, у кого получилось.

Aceler
()

Добавление размера разделу

 , ,

Приветствую, товарищи!

Ранее поставил себе Debian на VirtualBox. Раздел сделал 5 Гб, включая 1 Гб swap. Теперь стоит задача добавить места - стало маловато :) Через инструменты VirtualBox увеличил размер виртуального диска до 8 Гб и пытаюсь на уровне операционной системы тоже увеличить основной раздел Linux. При этом я отключил swap, убрал его из fstab и не пранирую использовать, соответстветно раздел этот можно снести.

Сейчас вот такая ситуация:

root@debian:~# lsblk 
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sda      8:0    0  7,9G  0 disk 
├─sda1   8:1    0  4,1G  0 part /
├─sda2   8:2    0    1K  0 part 
└─sda5   8:5    0  975M  0 part 
sr0     11:0    1 1024M  0 rom  

Пытался сделать

root@debian:~# growpart /dev/sda 1
NOCHANGE: partition 1 could only be grown by 2046 [fudge=2048]

но это не дало результатов (хотя я в принципе понимаю почему - потому что раздел, который увеличиватеся должен быть последним перед свободным местом)

Мои вопросы:

  1. что это за раздел sda2 размером 1К? для чего он? можно ли его удалить?
  2. как удалить разделы sda2 (если он не нужен) и sda5 (swap)
  3. если я удалю разделы из п.2 - growpart и resize2fs будут выполнены успешно?

заранее спасибо за ответы

dark-initr0
()

Быть проще, чтобы люди к тебе тянулись

 , ,

Свежая PISA 2025 показала довольно неприятную тенденцию: школьники всё хуже не столько читают как таковые, сколько понимают, сопоставляют и критически оценивают прочитанное. Это крупнейшее исследование PISA за всю историю — около 760 тысяч 15-летних школьников из 91 страны и экономики. По данным OECD, средний результат по чтению в странах организации с 2015 по 2025 год упал на 28 баллов, что соответствует примерно полутора годам обучения. В итоге средний показатель чтения в PISA оказался самым низким за всю историю измерений.

Причём это не результат нескольких особенно неудачных стран. Если сравнивать 2018 и 2025 годы, то снижение читательской грамотности зафиксировано в 56 из 74 стран и экономик, для которых имеются сопоставимые данные; улучшение обнаружилось только в пяти. В 35 странах OECD среднее падение за семь лет составило 25 баллов. Одновременно доля точных и беглых читателей сократилась примерно на семь процентных пунктов, а доля так называемых hasty readers — тех, кто быстро читает задание и столь же быстро отвечает неправильно, — выросла примерно с 7 до 11%. Особенно сильно результаты ухудшались ближе к концу теста, что исследователи связывают со снижением внимания, настойчивости или уверенности при работе со сложными заданиями.

Самое любопытное на фоне распространения LLM — сильнее всего проседают именно навыки, которые должны становиться важнее в эпоху ИИ: отличать факт от мнения, оценивать достоверность информации, сопоставлять источники и разбираться с неоднозначным текстом. Руководитель образовательного направления OECD Андреас Шляйхер отдельно обращает на это внимание в разборе результатов PISA. При этом свести всё к формуле «ChatGPT отупляет школьников» нельзя: падение результатов началось ещё до массового распространения генеративного ИИ и даже до COVID. Сама OECD осторожно предполагает, что свою роль могут играть уменьшение чтения для удовольствия и привычка к цифровому чтению в режиме быстрого пролистывания, но причинно-следственную связь эти данные сами по себе не доказывают.

unclestephen
()

Проблемы Mageia 10, их решения и другие полезные наработки

 

Дистрибутив Mageia традиционно ценится за предсказуемость, консервативную надёжность и верность классическим традициям Unix-подобных систем. Однако при развёртывании свежего выпуска Mageia 10 на современном оборудовании (мобильные процессоры Intel Core Ultra архитектур Arrow Lake, высокоскоростные накопители NVMe, экраны высокого разрешения с расширенным динамическим диапазоном) пользователь сталкивается с целым рядом неочевидных проблем — от периодических зависаний графического стола при записи на диск до перегрева, аварийного сброса частот процессора и блокировок сетевого трафика межсетевым экраном.

В настоящей статье систематизирован практический опыт глубокой инженерной доводки дистрибутива Mageia 10 до эталонного рабочего состояния на примере компактного ультрабука HONOR MagicBook Art 14 2025 (16-ядерный процессор Intel Core Ultra 7 255H, встроенный графический ускоритель Intel Arc, сенсорный OLED-экран 3120x2080 @ 120 Гц, твердотельный накопитель NVMe 1 ТБ с шифрованием LUKS (dm-crypt) и файловой системой Btrfs, графическая среда KDE Plasma 6 под управлением Wayland).

Каждая проблема изложена по одной схеме: симптом → причина → решение с командами → проверка результата. В конце каждого подраздела курсивом приведены поисковые теги — сформулированные так, как эту проблему обычно искал бы пользователь, ещё не зная её причины. Все команды проверены на живой системе; в примерах вместо имени пользователя подставляйте своё.


1. Базовая системная инициализация

1.1. Настройка прав суперпользователя (sudo)

В Mageia после установки обычный пользователь не включён в число доверенных администраторов: sudo ему недоступен, а без него не сделать и половины шагов этого гайда. Полномочия выдаются в два приёма: включение в штатную группу wheel (стандартный путь, применяется при следующем входе в систему — в /etc/sudoers строка %wheel уже раскомментирована) и отдельный drop-in-файл в /etc/sudoers.d/, который даёт sudo немедленно, без перелогина:

su -                                    # вход под root (пароль root, заданный при установке)
gpasswd -a <имя_пользователя> wheel     # включение в группу wheel
echo '<имя_пользователя> ALL=(ALL:ALL) ALL' > /etc/sudoers.d/<имя_пользователя>
chmod 0440 /etc/sudoers.d/<имя_пользователя>
visudo -cf /etc/sudoers.d/<имя_пользователя>   # обязательная проверка синтаксиса
exit

Важное правило: любой файл в каталоге /etc/sudoers.d/ обязан валидироваться утилитой visudo -cf — вывод должен быть <файл>: parsed OK. Один файл с синтаксической ошибкой ломает sudo во всей системе целиком (парсер останавливается на первой ошибке и перестаёт принимать всё, включая корректные файлы). Поэтому правило такое: создали файл — тут же проверили.

🔎 Теги для поиска: mageia нет sudo, как включить sudo mageia, пользователь не администратор mageia, sudoers wheel, не работает sudo после установки

1.2. Сетевое имя компьютера (hostname)

После назначения имени машины через hostnamectl необходимо синхронизировать его с файлом статического разрешения имён /etc/hosts: без записи в строке 127.0.0.1 система не может отрезолвить собственное имя, и приложения при старте испытывают характерные технологические задержки (таймауты на каждом первом обращении к «себе»):

sudo hostnamectl set-hostname magicbook
# дописать имя в /etc/hosts к локальной петле 127.0.0.1:
sudo sed -i 's/^\(127\.0\.0\.1.*\)/\1 magicbook/' /etc/hosts

Мелочь, о которой легко забыть: уже открытый терминал продолжит показывать старое имя в приглашении — bash кэширует \h на момент запуска. Откройте новый терминал или выполните exec bash.

🔎 Теги для поиска: сменить имя компьютера mageia, hostname mageia, изменить имя хоста, приложения долго запускаются mageia, как назвать компьютер linux

1.3. Шрифты высокой чёткости

Метрически-совместимые свободные замены (Liberation, Carlito, Caladea) в Mageia 10 уже установлены — они решают проблему «поехавшей вёрстки» документов, но выглядят иначе, чем оригиналы. Готового пакета с настоящими шрифтами Microsoft в репозиториях нет (лицензия EULA не позволяет их распространять — как и в большинстве дистрибутивов). Официальный путь — самораспаковывающиеся пакеты corefonts (исходно от Microsoft, раздаются SourceForge):

sudo dnf install -y cabextract
cd /tmp && for f in andale32 arial32 arialb32 comic32 courie32 georgi32 impact32 times32 trebuc32 verdan32 webdin32; do
  curl -fsSL -o "$f.exe" "https://downloads.sourceforge.net/corefonts/$f.exe"
done
sudo mkdir -p /usr/share/fonts/msttcore
for f in *.exe; do cabextract -L -q -d /tmp/ttf "$f"; done
sudo cp /tmp/ttf/*.ttf /usr/share/fonts/msttcore/ && sudo fc-cache -f
fc-match Arial    # проверка: должно вывести Arial.ttf

Это покрывает Arial, Times New Roman, Courier New, Verdana, Georgia, Trebuchet, Comic Sans, Impact, Andale и Webdings. Свободного эквивалента Tahoma и Segoe UI не существует — их можно взять только из установленной копии Windows, скопировав в пользовательский каталог ~/.local/share/fonts/ с последующей пересборкой кэша fc-cache -f. После установки шрифтов перезапустите браузеры — они держат шрифтовые подстановки в памяти.

🔎 Теги для поиска: шрифты windows в linux, arial times new roman mageia, кривые шрифты на сайтах mageia, установить ms шрифты linux, msttcorefonts, шрифты в браузере выглядят иначе


2. Дисковая подсистема: ликвидация зависаний интерфейса и тонкая настройка Btrfs

2.1. Зависания графического окружения из-за планировщика BFQ на накопителях NVMe

Симптом: при интенсивной фоновой записи на диск (работа систем контроля версий, распаковка архивов, сброс кэша операционной системы, синхронизация облака) графический стол подвисает на 5–10 секунд — при этом курсор мыши продолжает плавно двигаться, создавая классическую иллюзию «зависшего рабочего стола при живой мыши». Проблема проявлялась только в Mageia 10 и отсутствовала в Debian и Manjaro на том же железе.

Причина — комбинация трёх факторов, все — специфика Mageia и этого контроллера:

  1. Главная: планировщик BFQ на NVMe. В ядре Mageia (kernel-desktop) включён параметр сборки CONFIG_IOSCHED_DEFAULT_BFQ=y: Mageia назначает планировщик BFQ всем блочным устройствам без исключения, в отличие от других дистрибутивов, где быстрые NVMe работают на none (сквозные аппаратные параллельные очереди). BFQ сворачивает аппаратные очереди NVMe в одну логическую и для «справедливого» распределения полосы выдерживает технологические микропаузы slice_idle = 8ms. На скоростных накопителях при любой интенсивной записи контроллер захлёбывается в этой искусственной очереди, и процессы GUI (kwin_wayland, plasmashell, браузеры), пытаясь синхронно прочитать кэш или сделать мелкую запись, встают в непрерываемое ожидание ввода-вывода (состояние ядра D-wait). Курсор при этом движется: аппаратный указатель отрисовывается DRM-слоем ядра без дискового ввода-вывода.
  2. Усилитель: глубокое энергосбережение APST контроллера NVMe. Засыпание контроллера в глубокие фазы APST (Autonomous Power State Transition) и выход из них на ряде контроллеров (в частности, YMTC PC411) сопровождаются аппаратными задержками в десятки миллисекунд, которые на фоне BFQ складываются в заметные «подёргивания».
  3. Усилитель: дефолтный сброс «грязных» страниц. При 32 ГиБ ОЗУ порог по умолчанию (20 % памяти) позволяет накопить свыше 6 ГиБ несинхронизированных данных, которые файловая система Btrfs затем сбрасывает залпом каждые 30 секунд — прямо в узкое горлышко BFQ.

Решение — три шага:

  1. Правило udev /etc/udev/rules.d/60-ioschedulers.rules, назначающее планировщик по типу накопителя: NVMe — none (аппаратные очереди), SATA/USB SSD — mq-deadline, магнитные HDD — bfq (там BFQ как раз уместен — он сглаживает позиционирование головок):
# Перевод накопителей NVMe на режим аппаратных параллельных очередей (none)
ACTION=="add|change", KERNEL=="nvme[0-9]*n[0-9]*", ENV{DEVTYPE}=="disk", ATTR{queue/scheduler}="none"

# Перевод твердотельных накопителей SATA и USB на mq-deadline
ACTION=="add|change", KERNEL=="sd[a-z]*", ENV{DEVTYPE}=="disk", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="mq-deadline"

# Назначение планировщика BFQ исключительно для магнитных жестких дисков (HDD)
ACTION=="add|change", KERNEL=="sd[a-z]*", ENV{DEVTYPE}=="disk", ATTR{queue/rotational}=="1", ATTR{queue/scheduler}="bfq"

Применить без перезагрузки и проверить:

sudo udevadm control --reload && sudo udevadm trigger --subsystem-match=block
cat /sys/block/nvme0n1/queue/scheduler   # в квадратных скобках должно быть [none]
  1. Отключить задержку перед переходами энергосбережения APST контроллера NVMe — параметром ядра в GRUB_CMDLINE_LINUX файла /etc/default/grub:
nvme_core.default_ps_max_latency_us=0

Применить на лету (до перезагрузки) и обновить конфигурацию загрузчика:

echo 0 | sudo tee /sys/module/nvme_core/parameters/default_ps_max_latency_us
sudo update-grub2
  1. Задать контролируемые пороги сброса буферов записи в файле /etc/sysctl.d/99-dirty-writeback.conf:
# начало плавного фонового сброса при накоплении 512 МиБ
vm.dirty_background_bytes = 536870912

# принудительная блокирующая синхронизация при накоплении 2 ГиБ
vm.dirty_bytes = 2147483648
sudo sysctl --system

⚠️ Значения проверены опытным путём: занижать их не стоит. Пробный вариант 128 МБ / 512 МБ дал результат хуже дефолта — слишком частые мелкие сбросы помножаются на задержки LUKS+Btrfs. 512 МБ / 2 ГиБ — подтверждённый оптимум для системы с 32 ГиБ ОЗУ на Btrfs-корне.

Результат тестов: сброс и синхронизация 2 ГиБ случайных данных на шифрованный Btrfs-корень ускорились с 5–10 секунд блокирующего фриза до 0,13 секунды (sync), без малейших задержек интерфейса; синхронизация даже десятков гигабайт данных выполняется бесшовно.

🔎 Теги для поиска: зависает рабочий стол mageia, курсор двигается всё остальное висит, mageia подвисает при копировании файлов, фризы при записи на диск, nvme планировщик bfq, подвисает kde при работе с диском, mageia тормозит debian нет

2.2. Файл подкачки на Btrfs и гибернация при шифровании LUKS

На файловой системе Btrfs файл подкачки обязан иметь атрибут отсутствия копирования-при-записи (NoCoW) — CoW-файл ядро откажется активировать как своп (swapon: Invalid argument). Штатная утилита btrfs mkswapfile сама выставляет NoCoW и создаёт своп-сигнатуру, поэтому ручные трюки с chattr +C и dd не нужны:

# размер: минимум = объём ОЗУ (иначе гибернация невозможна), с запасом — 2× ОЗУ
MEM_KB=$(awk '/^MemTotal:/{print $2}' /proc/meminfo)
SIZE=$(( MEM_KB * 1024 * 2 ))                          # 2× RAM в байтах
sudo btrfs filesystem mkswapfile --size "$SIZE" /swapfile   # сам делает NoCoW + mkswap
sudo swapon /swapfile
echo '/swapfile none swap defaults 0 0' | sudo tee -a /etc/fstab

Сразу полезно ограничить склонность к свопированию — при 32 ГиБ ОЗУ своп нужен только под реальным давлением памяти:

echo 'vm.swappiness=1' | sudo tee /etc/sysctl.d/99-swappiness.conf
sudo sysctl -w vm.swappiness=1

⚠️ Свопинг — это вес склонности, а не жёсткий триггер «свопить при заполнении X %». Полезный побочный бонус: файл подкачки лежит на LUKS-контейнере, поэтому содержимое свопа на диске зашифровано. Если своп «залип» (система висит при свободной RAM после пиковой нагрузки): sudo swapoff -a && sudo swapon -a (нужно достаточно свободной памяти).

Настройка гибернации (спящего режима с сохранением на диск) сквозь контейнер LUKS:

  1. Определение физического смещения первого блока файла подкачки — только штатной командой btrfs (filefrag на Btrfs даёт неверное значение, использовать его нельзя):
sudo btrfs inspect-internal map-swapfile -r /swapfile   # выведет число, напр. 14798603
  1. Определение идентификатора корневой файловой системы:
findmnt -no UUID /
  1. Параметры в /etc/default/grub в строку GRUB_CMDLINE_LINUX: при загрузке LUKS-контейнер уже расшифрован средствами initramfs, поэтому в resume достаточно указать UUID самой файловой системы корня:
GRUB_CMDLINE_LINUX="... resume=UUID=<UUID-корня> resume_offset=<число>"
  1. Пересборка начального образа и меню загрузчика:
sudo update-grub2
sudo dracut -f

⚠️ Mageia собирает классический (не systemd) initramfs по пути /boot/initrd-<версия-ядра>.img. Поэтому dracut -f печатает безобидные строки вида dracut[E]: Module 'systemd*' can't be installedигнорировать их: нужные модули (crypt/luks, btrfs, resume) всё равно оказываются в образе. Проверить можно так: lsinitrd /boot/initrd-$(uname -r).img | grep -c crypt.

После перезагрузки проверить восстановление: systemctl hibernate. Если /sys/kernel/security/lockdown отсутствует, Secure Boot/lockdown гибернацию не блокируют.

🔎 Теги для поиска: swap файл btrfs, не создаётся swap btrfs, гибернация mageia, не работает гибернация linux, resume_offset, своп на btrfs luks, swapon invalid argument, спящий режим ноутбук linux

2.3. Автоматическая оптимизация твердотельного накопителя (fstrim.timer)

В Mageia 10 системный таймер еженедельной фоновой очистки блоков SSD (fstrim.timer) отключен по умолчанию, и корневая файловая система также монтируется без параметра discard=async (проверка: findmnt -o OPTIONS /). В долгую это означает деградацию скоростей накопителя — контроллер не знает, какие блоки свободны, и вынужден стирать их на ходу при каждой записи. Включение таймера:

sudo systemctl enable --now fstrim.timer

Таймер раз в неделю в фоне отправляет команду TRIM на все подключённые файловые системы, поддерживающие очистку.

Важное замечание для разделов LUKS: диспетчер dm-crypt по умолчанию блокирует прохождение TRIM сквозь криптоконтейнер (в целях безопасности — чтобы не раскрывать карту заполнения блоков). Чтобы команды очистки доходили до физического контроллера, в /etc/crypttab для соответствующего тома нужно указать флаг discard (например: crypt_root UUID=... none discard), после чего пересобрать initramfs (sudo dracut -f). Это компромисс: карта заполнения раздела становится видимой, что для домашнего ноутбука обычно не считается риском, а скорость и ресурс накопителя сохраняются.

🔎 Теги для поиска: ssd тормозит со временем, trim mageia, включить fstrim, ssd медленный linux, trim через luks, discard crypttab, ssd скорость падает

2.4. Ошибка загрузчика GRUB sparse file not allowed на Btrfs

Симптом: при каждом старте компьютера загрузчик печатает ошибку: error: ../../grub-core/commands/loadenv.c:216: sparse file not allowed. Она постоянная, но безвредная — загрузка продолжается.

Причина — грабли Btrfs. GRUB при старте читает свой файл переменных /boot/grub2/grubenv (команда load_env, размер 1024 байта), а Btrfs упаковывает столь мелкие файлы inline — прямо внутрь дерева метаданных (проверка: filefrag -v показывает флаг inline). Честные «разрежённые» файлы и inline-файлы GRUB не различает, поэтому принимает inline-файл за разрежённый и завершает чтение с ошибкой. Причём Mageia вставляет load_env в grub.cfg безусловно, поэтому одного отключения «запоминания последнего пункта меню» мало — файл нужно ещё пересоздать как обычный extent.

Решение — два шага:

# 1) отключить запоминание последнего пункта (чтобы grubenv больше не перезаписывался).
#    Бонус: GRUB_DEFAULT=0 — всегда грузится первый пункт меню.
sudo sed -i 's/^GRUB_DEFAULT=.*/GRUB_DEFAULT=0/'             /etc/default/grub
sudo sed -i 's/^GRUB_SAVEDEFAULT=.*/GRUB_SAVEDEFAULT=false/' /etc/default/grub

# 2) пересоздать grubenv как NoCoW-файл (реальный extent, а не inline):
sudo chattr +C /boot/grub2                   # новые файлы в каталоге наследуют NoCoW
sudo rm -f /boot/grub2/grubenv
sudo grub2-editenv /boot/grub2/grubenv create
sudo chmod 644 /boot/grub2/grubenv

sudo update-grub2
# проверка — флага inline быть НЕ должно (пустой вывод = ок):
sudo filefrag -v /boot/grub2/grubenv | grep -i inline

Железобетонный запасной вариант: если ошибка осталась — просто sudo rm /boot/grub2/grubenv. Тогда GRUB пропустит load_env (проверка [ -f grubenv ] даст ложь), и ошибки не будет; с GRUB_SAVEDEFAULT=false файл заново не создастся. Проверять результат — по факту следующей загрузки: строки об ошибке быть не должно.

Попутно — быстрая загрузка. Если других ОС на диске нет, меню GRUB можно почти не показывать: в /etc/default/grub задать GRUB_TIMEOUT=1 (меню мелькнёт одну секунду — успеете нажать стрелку при необходимости) или GRUB_TIMEOUT=0 (меню скрыто, вызвать можно, держа при загрузке Esc или Shift). Меню можно сделать на весь нативный экран: GRUB_GFXMODE=3120x2080,auto (подставьте родное разрешение своей панели) — дефолтные 1024x768 заставляют GRUB обрезать фоновую картинку до 4:3.

🔎 Теги для поиска: grub sparse file not allowed, ошибка grub при загрузке mageia, grub ошибка btrfs, loadenv ошибка, убрать меню grub, ускорить загрузку mageia


nadim
()

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

 , ,

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

Видеокарта PCI (вроде S3 Trio какое-то, не помню), вылезли из слота те контакты которые ближе к задней стенки (передняя часть прижата к материнке конструкцией корпуса, а вот сзади должен был быть болт но его нет).

Можно ли как-то переинициализировать видеокарту не ребутая комп целиком? ОС FreeBSD, набирать что-то можно только вслепую т.к. сетевого доступа к руту нет.

upd: Таки ребутнул - лучше сейчас планово чем возиться потом когда срочно консоль потребуется. Видео ожило. В практическом плане проблема решена, но вопрос «как починить без ребута» так и не отвечен, так что пусть тема не будет помечена решённой.

firkax
()

Выключаем копипаст средней кнопкой мыши в красноглазом Niri (и используем её для других задач)

 , , ,

Здравствуйте, красноглазые нирийцы, который вздрагивают при одном упоминании Нокталии! Сегодня мы с вами будем перепиливать поведение мыши. Долой наследие иксов!

Итак, сначала идём и вписываем в ~/.config/niri/config.kdl

clipboard {
    disable-primary
}
Этого уже достаточно для отключения копипастинга мышью в Brave, telegram-desktop,... и т.д.

Для GTK можно добавить команду

dconf write /org/gnome/desktop/interface/gtk-enable-primary-paste false

Теперь добираемся до эмулятора терминала. Поскольку я перешёл на Wezterm (написан на нашем любимом Rust'е), то опишу для него. В ~/.config/wezterm/wezterm.lua надо добавить

config.mouse_bindings = {
  {
    event = { Down = { streak = 1, button = 'Middle' } },
    mods = 'NONE',
    action = act.Nop,
  },
  {
    event = { Up = { streak = 1, button = "Left" } },
    mods = "NONE",
    action = wezterm.action.OpenLinkAtMouseCursor,
  },
  {
    event = { Up = { streak = 2, button = "Left" } },
    mods = "NONE",
    action = wezterm.action.Nop,
  },
  {
    event = { Up = { streak = 3, button = "Left" } },
    mods = "NONE",
    action = wezterm.action.Nop,
  },
}

Однако, это просто отключение. Но у нас освобождается целая кнопка! И её теперь можно использовать в разных сценариях. Например, для того же Wezterm'а можно прописать

config.mouse_bindings = {
  {
    event = { Down = { streak = 1, button = 'Middle' } },
    mods = 'NONE',
    action = wezterm.action.SendString 'elio\r',
  },
  {
    event = { Down = { streak = 1, button = 'Middle' } },
    mods = 'CTRL',
    action = wezterm.action.SendString 'eza --tree ./',
  },
  {
    event = { Down = { streak = 1, button = 'Middle' } },
    mods = 'ALT',
    action = wezterm.action.SendString 'btm\r',
  },
  {
    event = { Down = { streak = 1, button = 'Middle' } },
    mods = 'SHIFT',
    action = wezterm.action.SendString 'fd -t f . | fzf --preview "bat --style=numbers --color=always {}" | xargs hx',
  },
  {
    event = { Up = { streak = 1, button = "Left" } },
    mods = "NONE",
    action = wezterm.action.Nop,
  },
  {
    event = { Up = { streak = 2, button = "Left" } },
    mods = "NONE",
    action = wezterm.action.Nop,
  },
  {
    event = { Up = { streak = 3, button = "Left" } },
    mods = "NONE",
    action = wezterm.action.Nop,
  },
}
Что это даёт в этом конкретном примере?

  • При нажатии средней кнопки мыши запустится файловый менеджер elio (написан на нашем любимом Rust'е (Niri тоже на Rust'е)).
  • При нажатии Ctrl+средняя кнопка мыши в командную строку вставится шаблон 'eza --tree ./' для запуска продвинутой альтернативы ls+tree с подсветкой и значками (написана на нашем любимом Rust'е).
  • При нажатии Alt+средняя кнопка мыши запустится системный монитор bottom (написан на нашем любимом Rust'е).
  • При нажатии Shift+средняя кнопка мыши в командную строку вставится шаблон 'fd -t f . | fzf --preview «bat --style=numbers --color=always {}» | xargs hx' для поиска и открытия файлов в текстовом редакторе helix (написан на нашем любимом Rust'е). Вместо find и less здесь используются fd и bat соответственно (написаны на нашем любимом Rust'е).

Enjoy!

saahriktu
()

Выбор ноутбука

 

Какой сейчас можно взять ноут? Бюджет ~60-80k. Без распаяной памяти

bryak
()

АвтоВАЗ зарегистрировал товарный знак «Можно, а зачем?»

 

Источник - https://ria.ru/20260910/avtovaz-2116843387.html

Поделился этой информацией, так как на форуме повседневно испольуется эта фраза.

vbcnthfkmnth123
()

Gtk dialog

 ,

Хотел узнать использует еще кто-нибудь Gtkdialog в своей ОСи для создания GUI, хотя он и считается сильно устаревшим и не поддерживаемым, но довольно простой способ создания гуйскриптов. Так как Gtkdialog имеется в моей системе, то для себя иногда пишу скриптики и представляю простейщий быстренький просмотрщик картинок в директориях.

#!/bin/sh
 [ ! "$(which gtkdialog)" ] &&  gxmessage 'gtkdialog NOT found' && exit
 [ ! -d  /tmp/img_view/aaa ] && mkdir -p /tmp/img_view/aaa 
 [ ! -f /tmp/img_view/dir ] &&  touch /tmp/img_view/dir
 [ ! -f /tmp/img_view/min_xpm.xpm ] &&  echo '/* XPM */
static char *min_xpm_xpm[] = {"1 1 1 1"," 	c None",".	c #000000","."};'  > /tmp/img_view/min_xpm.xpm
 dirs1=$(find /  -type f | grep  -vE "/(initrd|16|22|24|36|48|64|72|96|128|192|256|512)x?" | grep -E "\.(png|jpg|svg|xpm|gif)$" | sed "s|\(.*\)\/.*|\1|" | sort | uniq -dc | sort  -hr 2> /dev/null)
 dirs2=$(find /  -type f | grep  -vE "/(initrd|16|22|24|36|48|64|72|96|128|192|256|512)x?" | grep -E "\.(png|jpg|svg|xpm|gif)$" | sed "s|\(.*\)\/.*|\1|" | sort | uniq -dc | sort  -k2 2> /dev/null) 
dir=$(head -1 <<< $dirs1 | awk -F" " '{print $2}')
export sum=$(head -1 <<< $dirs1 | awk -F" " '{print $1}')
p=1; while read x ; do  ln -sf "$x" /tmp/img_view/aaa/$p ; ((p++)); done <<< $(find $dir -maxdepth 1 -type f | grep -E "\.(png|jpg|svg|xpm|gif)$"); echo "$sum $dir" > /tmp/img_view/dir
 list1=$(echo "$dirs1" | sed  "s/.*/<item>&<\/item>/")
 list2=$(echo "$dirs2" | sed  "s/.*/<item>&<\/item>/")
 list_act=$(for k in $(seq $sum); do echo "<action>refresh:a$k</action>"; done)
 pixmaps=$(for i in $(seq $sum); do  
if (("$i % 21" == 0)); then if [ "$sum" == "$i" ]; then num=""; else num="</hbox><hbox>"; fi; else num=""; fi
  echo '<eventbox><pixmap><input file>/tmp/img_view/aaa/'"$i"'</input><variable>a'"$i"'</variable>
<height>43</height><width>43</width></pixmap><action signal="button-release-event">[ "'$i'" -le $(cut -d" " -f1  /tmp/img_view/dir) ] && xdg-open /tmp/img_view/aaa/'"$i"' &</action></eventbox> '"$num"''
 ((i++))
done)
echo '<window width-request="1500" height-request="600"> 
<vbox>
<hbox> <notebook tab-labels="sort_sum|sort_name" width-request="450" height-request="600">
 <list> 
   <variable>LIST1</variable>
'$list1'
<action>rm -f /tmp/img_view/aaa/*;  t=1; while read x ; do ln -sf "$x" /tmp/img_view/aaa/$t ; ((t++)); done <<< $(find  "${LIST1#* }"   -maxdepth 1 -type f | grep -E "\.(png|jpg|svg|xpm|gif)$"; for i in $(seq $((${LIST1%% *}+1)) $sum); do echo  "/tmp/img_view/min_xpm.xpm"; done); echo "$LIST1" > /tmp/img_view/dir</action> '$list_act' <action>refresh:ENTRY</action></list>
 <list> 
   <variable>LIST2</variable>
'$list2'
<action>rm -f /tmp/img_view/aaa/*;  t=1; while read x ; do ln -sf "$x" /tmp/img_view/aaa/$t ; ((t++)); done <<< $(find  "${LIST2#* }"   -maxdepth 1 -type f | grep -E "\.(png|jpg|svg|xpm|gif)$"; for i in $(seq $((${LIST2%% *}+1)) $sum); do echo  "/tmp/img_view/min_xpm.xpm"; done); echo "$LIST2" > /tmp/img_view/dir</action> '$list_act' <action>refresh:ENTRY</action>
     </list> 
</notebook> 
 <vbox scrollable="true"> <entry><variable>ENTRY</variable><input file>/tmp/img_view/dir</input></entry>
 <hbox>
 '$pixmaps'</hbox></vbox>
</hbox></vbox></window>' > /tmp/img_view/dialog 
 gtkdialog -f /tmp/img_view/dialog   -G  +200+100 &
nik120s
()

Кто-нибудь в численном решении уравнения Эйнштейна разбирается?

 , ,

Наткнулся: https://vkvideo.ru/video-228780277_456239075 Математик (д.ф.-м.н., вроде) демонстрирует, как его программа повторяет известное решение для слияния 2 чёрных дыр.

Как его сейчас принято решать? Нужна ли ещё одна программа для его численного решения?

question4
()

cockpit-pacman теперь в репах

 , ,

https://archlinux.org/packages/extra/x86_64/cockpit-pacman/

https://github.com/pfeifferj/cockpit-pacman

Продолжаю наблюдение

Дополнение (в связи с возникшим вопросом)

Немного о cockpit:

Cockpit — это инструмент администрирования серверов, разработанный при поддержке Red Hat, который ориентирован на предоставление современного и удобного пользовательского интерфейса для управления и администрирования серверов.

https://cockpit-project.org/

https://www.redhat.com/en/blog/intro-cockpit

Cockpit доступен для Fedora Linux, Red Hat Enterprise Linux, CentOS, Debian, OpenSUSE, Arch Linux и Ubuntu.

https://en.wikipedia.org/wiki/Cockpit_(software)

В принципе, и тег есть

https://www.linux.org.ru/tag/cockpit

включать его не стал из тех соображений, что cockpit-pacman — для конкретного дистрибутива, другим пользователям cockpit не интересно.

greenman
()

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