LINUX.ORG.RU

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

Есть ли альтернатива Emacs?

Форум — Development

JB требует VPN.
VS требует Windows.
VSCode сливает всё на сервер дополнениями.

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

Vim с плагинами - инородная хрень. Голый Vim для front/back -> (‿|‿)

 , ,

Eulenspiegel
()

Разобраться с Самбой прошу.

Форум — General

Fedora 41. Делаю по букварю https://docs.fedoraproject.org/en-US/quick-docs/samba/ . Пытаюсь расшарить каталог на отдельном разделе, примонтированном в /mnt/Disk. На шару не заходит с другого компа, как и с телефона. Пишет нет прав доступа к папке. Если локально заходить, файл или папка smb://fedora.local/share не существует. Права

drwsrwsr-x.  2 igorka share    4096 дек 10 21:09  share

Но если сделать каталог в домашней директории и поменять в конфиге самбы путь, то все работает. Как так то? Сильно не пинайте. Я только учусь.

 ,

igorka82
()

Пилю генератор кода для компилятора

Форум — Development

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

В качестве пет-проекта я потихоньку пилю собственный Ada-подобный ЯП. Планов на фичи языка очень много, но пока он по фичам не далеко ушел от ранних вариантов сишечки. Однако сегодня не об этом. Сегодня я вам хочу рассказать о генерации кода.

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

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

Некоторые используемые приёмы оптимизации:

  1. Отслеживание, какие константы или значения выражений загружены в регистры и устранение избыточных загрузок.
  2. Переупорядочивание вычисления операндов выражения.
  3. Устранение выдачи неиспользованных меток. (Помогает лучше отслеживать состояние регистров в п.1.)
  4. Устранение избыточных цепочек jmp-ов. (Когда jmp делается на следующий jmp.)

Далее я покажу примеры, как генератор кода устраняет избыточные загрузки значений. Про остальные пункты расскажу как-нибудь в другой раз. (Примерно через никогда.)

Пример 1.

Генератор кода устранил 4 инструкции mov EAX, dword [EBP+8], так как увидел, что значение переменной Index уже загружено в регистр.

Функция:

char @DictGetFullyQualifiedName(word D)
	when D >= nDict:
		StopInternal(__FILE__, __LINE__);

	word Index = Dict[D].FullyQualifiedName;
	when Index != 0:
		return @Char[Index];

	char Buff[nBUFF];
	strbuf buf;
	strbuf_init(@buf, @Buff, nBUFF);
	Dict_MakeFullyQualifiedName(@buf, D);

	Index = SaveString0(@Buff);
	Dict[D].FullyQualifiedName = Index;
	return @Char[Index];
end

Сгенерированный код:

@10342:                                  ; ## DictGetFullyQualifiedName ##
        push    EBP
        mov     EBP,  ESP
        sub     ESP,  144
                                         ; #line compiler_dict.ctxi:84
        mov     EAX,  dword [EBP+8]
        cmp     EAX,  dword [@@DATA+8476676]
        jb      @10343
                                         ; #line compiler_dict.ctxi:85
        push    dword 85
        push    dword @@ROLITERALS+7329
        call    @10235                   ; StopInternal
@10343: 
                                         ; #line compiler_dict.ctxi:87
        mov     EAX,  dword [EBP+8]
        imul    EAX,  77
        mov     EAX,  dword [@@DATA+EAX+776684]
        mov     dword [EBP-4], EAX
                                         ; #line compiler_dict.ctxi:88
                                         ; Node link reuse in CodePrimaryWrapped
        ; Переиспользуется значение Index в регистре EAX
        test    EAX,  EAX
        je      @10346
                                         ; #line compiler_dict.ctxi:89
                                         ; Node link reuse in CodePrimaryWrapped
        ; Переиспользуется значение Index в регистре EAX
        add     EAX,  @@DATA+49288
        leave
        ret     4
@10346: 
                                         ; #line compiler_dict.ctxi:91
                                         ; #line compiler_dict.ctxi:92
                                         ; #line compiler_dict.ctxi:93
        push    dword 128
        lea     EAX,  [EBP-132]
        push    EAX
        lea     EAX,  [EBP-144]
        push    EAX
        call    @10126                   ; strbuf_init
                                         ; #line compiler_dict.ctxi:94
        push    dword [EBP+8]
        lea     EAX,  [EBP-144]
        push    EAX
        call    @10335                   ; Dict_MakeFullyQualifiedName
                                         ; #line compiler_dict.ctxi:96
        lea     EAX,  [EBP-132]
        push    EAX
        call    @10272                   ; SaveString0
        mov     dword [EBP-4], EAX
                                         ; #line compiler_dict.ctxi:97
                                         ; Node link reuse in Code_ASSIGN (1)
        ; Переиспользуется значение Index в регистре EAX
        mov     EBX,  dword [EBP+8]
        imul    EBX,  77
        mov     dword [@@DATA+EBX+776684], EAX
                                         ; #line compiler_dict.ctxi:98
                                         ; Node link reuse in CodePrimaryWrapped
        ; Переиспользуется значение Index в регистре EAX
        add     EAX,  @@DATA+49288
        leave
        ret     4

В этом примере есть интересный фрагмент:

        mov     EAX,  dword [EBP+8]
        cmp     EAX,  dword [@@DATA+8476676]
        jb      @10343
                                         ; #line compiler_dict.ctxi:85
        push    dword 85
        push    dword @@ROLITERALS+7329
        call    @10235                   ; StopInternal
@10343: 
                                         ; #line compiler_dict.ctxi:87
        mov     EAX,  dword [EBP+8]

Здесь также можно было бы устранить повторную загрузку mov EAX, dword [EBP+8], но это пока не реализовано.

  1. Компилятор знает, что StopInternal не возвращает управление.
  2. Единственный переход по метке @10343 выполняется из места, в котором EAX уже содержит нужное значение.
  3. Таким образом вторая загрузка регистра избыточна.
  4. Но чтобы отследить это, необходим продвинутый анализ перехода по меткам, делать который в мои планы пока не входит.

Пример 2.

Вот еще пример устранения загрузок локальной переменной. Генератор кода дважды переиспользует значение переменой L в регистре EAX:

	word L = strlen(@Dst);
	if L > 1 then
		if str_has_char(@fpath_p_dir_separators, Dst[L - 1]) == 0 then
			strn_cat(@Dst, @fpath_p_dir_separator, Size);
		end:if
	end:if
                                         ; #line include/fpath.ctxi:131
        push    dword [EBP+8]
        call    @10013                   ; strlen
        mov     dword [EBP-4], EAX
                                         ; #line include/fpath.ctxi:132
                                         ; Node link reuse in CodePrimaryWrapped
        cmp     EAX,  1
        jbe     @10179
                                         ; #line include/fpath.ctxi:133
                                         ; Node link reuse in CodePrimaryWrapped
        dec     EAX
        add     EAX,  dword [EBP+8]
        mov      AL,  byte  [EAX]
        push    EAX
        push    dword [@@DATA+44]
        call    @10106                   ; str_has_char

Пример 3.

В этом примере генератор кода понимает, что можно повторно использовать константу в EAX, но не понимает, что можно повторно использовать указатель в EBX.

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

        mov     EAX,  100000
        mov     EBX,  dword [EBP-8]
        mov     dword [EBX+44], EAX
                                         ; #line compiler_dict.ctxi:117
                                         ; Node link reuse in Code_ASSIGN (1)
        mov     EBX,  dword [EBP-8]
        mov     dword [EBX+32], EAX
                                         ; #line compiler_dict.ctxi:118
                                         ; Node link reuse in Code_ASSIGN (1)
        mov     EBX,  dword [EBP-8]
        mov     dword [EBX+36], EAX
                                         ; #line compiler_dict.ctxi:119
                                         ; Node link reuse in Code_ASSIGN (1)
        mov     EBX,  dword [EBP-8]
        mov     dword [EBX+40], EAX
                                         ; #line compiler_dict.ctxi:120
                                         ; Node link reuse in Code_ASSIGN (1)
        mov     EBX,  dword [EBP-8]
        mov     dword [EBX+12], EAX
                                         ; #line compiler_dict.ctxi:121
                                         ; Node link reuse in Code_ASSIGN (1)
        mov     EBX,  dword [EBP-8]
        mov     dword [EBX+16], EAX
                                         ; #line compiler_dict.ctxi:122
                                         ; Node link reuse in Code_ASSIGN (1)
        mov     EBX,  dword [EBP-8]
        mov     dword [EBX+20], EAX
                                         ; #line compiler_dict.ctxi:123
                                         ; Node link reuse in Code_ASSIGN (1)
        mov     EBX,  dword [EBP-8]
        mov     dword [EBX+24], EAX

Примеры 4, 5, 6.

Устранение загрузок в условных выражениях:

	if rs >= BRACKET_LEX_SIZE | rs < 1 then
		StopInternal(__FILE__, __LINE__);
	end
        mov     EAX,  dword [EBP-8]
        cmp     EAX,  3
        jae     @11156
                                         ; Node link reuse in CodePrimaryWrapped
        cmp     EAX,  1
        jae     @11155
@11156: 
                                         ; #line frontend_syn_brackets.ctxi:40
        push    dword 40
        push    dword @@ROLITERALS+7664
        call    @10235                   ; StopInternal
@11155: 

В теле цикла после проверки условия цикла:

	while i < nOperator do
		word j = i + 1;
		...
        mov     EAX,  dword [EBP-4]
        cmp     EAX,  dword [@@DATA+12180364]
        jae     @11180
                                         ; #line frontend_syn_operators.ctxi:66
                                         ; Node link reuse in CodePrimaryWrapped
        inc     EAX
        mov     dword [EBP-8], EAX
	while i < nOperator do
		if Operator[i].Prio > Prio then
		...
        mov     EAX,  dword [EBP-8]
        cmp     EAX,  dword [@@DATA+12180364]
        jae     @11197
                                         ; #line frontend_syn_operators.ctxi:120
                                         ; Node link reuse in CodePrimaryWrapped
        imul    EAX,  36
        mov     EAX,  dword [@@DATA+EAX+12178080]
        cmp     EAX,  dword [EBP+12]
        jbe     @11198

 , , ,

wandrien
()

Wayland GBM (А знали ли вы?)

Форум — Desktop

Постоянно встречаются вэйланд-нигилисты, которые его собсно, отрицают, ога.

Мне кажется пришло время пояснить за слона в комнате – GBM.

Знали ли вы, что в вейланде всю основную работу выполняет GBM???

Тоесть, представьте, все окна спавнятся сразу в видеопамяти, минуя процессор, если это игры под вайном/SDL, либо программы с современными тулкитами.

И композитинг тоже выполняется в ЖБМ, сразу в видеокарте, тоесть – отрендеренные окна не возвращаются в операривную память…

И даже (ПРЕДСТАВЬТЕ) все программы, даже в оконном режиме, могут использовать все преимущества DRI3.

Подумайте над этим.

 ,

Set440
()

Крайне медленный CIFS через OpenConnect

Форум — Admin

Всем привет,

Имеется сервер OpenConnect который слушает на порту 443/tcp. VPN работает относительно нормально, SSH вполне себе юзабельно.

В sysctl записано:

net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr

Вывод iperf:

Connecting to host lenin.corp.example.com, port 5201
[  5] local 10.66.78.212 port 41586 connected to 192.168.35.251 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec  3.38 MBytes  28.3 Mbits/sec    0    277 KBytes
[  5]   1.00-2.00   sec  5.62 MBytes  47.2 Mbits/sec    0    516 KBytes
[  5]   2.00-3.00   sec  7.88 MBytes  66.0 Mbits/sec    0    904 KBytes
[  5]   3.00-4.00   sec  10.9 MBytes  91.2 Mbits/sec    0   1.41 MBytes
[  5]   4.00-5.00   sec  9.88 MBytes  82.8 Mbits/sec    0   1.89 MBytes
[  5]   5.00-6.00   sec  14.0 MBytes   117 Mbits/sec    0   2.60 MBytes
[  5]   6.00-7.00   sec  8.25 MBytes  69.2 Mbits/sec  344   2.11 MBytes
[  5]   7.00-8.00   sec  9.88 MBytes  82.8 Mbits/sec  450   1.53 MBytes
[  5]   8.00-9.00   sec  10.9 MBytes  91.2 Mbits/sec    0   1.62 MBytes
[  5]   9.00-10.00  sec  9.88 MBytes  82.8 Mbits/sec    0   1.69 MBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec  90.5 MBytes  75.9 Mbits/sec  794             sender
[  5]   0.00-10.18  sec  89.0 MBytes  73.4 Mbits/sec                  receiver

iperf Done.

Немного смущают 794 пересланных пакета, игры с mtu к улучшению не привели.

Проблема заключается в том что samba работает крайне медленно, для того чтобы сделать mount требуется несколько минут, также для ls -la.

Подскажите, пожалуйста, в какую сторону смотреть? Использовать UDP не вариант, ибо блокирует РКН.

UPD: На андроиде все нормально, проблема наблюдается только на Arch Linux.

 , ,

alex07
()

KDE X11 несколько графический сессий одновременно и VNC

Форум — General

Я тут узнал, что можно одновременно на нескольких tty запускать графические сессии.
И тут закралась мысль, а можно ли не только запустить, а использовать одновременно две графические сессии?
Одной я буду пользоваться, как обычно, а на другой запущу vnc-сервер и к нему подключусь с другого устройства.

Таким образом, я буду просто использовать систему, как всегда, а на другом tty через vnc-сервер кто-то другой будет работать.

Но это не совсем работает, как надо.
2 графические сессии запустил, одна запустилась автоматом при запуске системы, вторую на другом tty вручную запустил через startx.
vnc-сервер запустил, подключился к vnc-серверу с другого устройства. Но как только я переключаюсь с того tty на котором запущен vnc-сервер на другой tty, vnc-клиент перестаёт получать изображение. Если вернуться обратно, то изображение появляется.

Может ли такое вообще работать? Не получается нагуглить, возможно ли такое вообще, и как это настроить.
У меня KDE 5 X11.

 

vvvv
()

Заделал пару функций.

Форум — Development

Пока летел в самолете, наваял для bashrc парочку функций. Выложил все в github. https://github.com/mrAibo/bash/tree/main

В общем-то ничего особенного, за исключением пары функций из-за которых и выкладываю. Может кто-то оценит. Документацию составил ИИ. Тестируйте, если есть идеи, что добавить/улучшить - пишите. Будет время рассмотрю.

rcp (Remote Copy) Function

The rcp function is a versatile tool for copying files and directories, both locally and to/from remote systems. It supports both rsync and scp, offering various options for compression, moving files, and more.

Usage

rcp [OPTIONS] source destination

Key Features

  • Supports both local and remote file transfers
  • Option to use rsync (default) or scp
  • File compression during transfer
  • Move files instead of copying
  • Bandwidth limiting
  • Exclude patterns for selective file transfer
  • Verbose output option

Options

  • -z, --compress: Compress data during transfer
  • -m, --move: Move files (delete source after successful transfer)
  • -u, --user USERNAME: Specify remote username
  • -p, --port PORT: Specify SSH port
  • -i, --identity FILE: Use specific SSH identity file
  • -l, --limit RATE: Set bandwidth limit (KB/s, rsync only)
  • -e, --exclude FILE: Specify exclude file or pattern
  • -s, --use-scp: Force SCP instead of rsync
  • -v, --verbose: Enable verbose output
  • -h, --help: Show help message

Examples

  1. Basic copy:

    rcp /path/to/source user@remote:/path/to/destination
    
  2. Compressed transfer with verbose output:

    rcp --compress --verbose /path/to/source user@remote:/path/to/destination
    
  3. Move files using a specific SSH key and port:

    rcp -m -p 2222 -i ~/.ssh/my_key /path/to/source user@remote:/path/to/destination
    
  4. Use SCP with exclude patterns:

    rcp --use-scp --exclude '*.log' /path/to/source user@remote:/path/to/destination
    
  5. Limit bandwidth and use compression:

    rcp -z -l 1000 -e '**/*.tmp' /path/to/source user@remote:/path/to/destination
    

This function provides a flexible and powerful way to handle file transfers in various scenarios, combining the strengths of rsync and scp with additional features for improved usability.

ex (Extract and Compress) Function

The ex function is a versatile tool for extracting and compressing various types of archive files. It supports multiple formats and offers options for both extraction and compression operations.

Usage

ex [OPTIONS] file1 [file2 ...]

Key Features

  • Supports multiple archive formats (e.g., tar.gz, zip, 7z)
  • Can extract and compress files
  • Allows specifying a target directory for operations
  • Option to delete original files after successful operation
  • Supports excluding files/directories during compression
  • Verbose mode for detailed operation information

Options

  • -x, --extract: Extract mode (default)
  • -c, --compress FORMAT: Compress mode (specify format: tar.gz, tar.bz2, zip, 7z)
  • -v, --verbose: Enable verbose output
  • -t, --target DIR: Specify target directory for extraction or compression
  • -d, --delete: Delete original file(s) after operation
  • -e, --exclude PATTERN: Exclude files/directories matching the pattern or specified in a file
  • -h, --help: Show help message

Supported Formats

Extraction

  • .tar.bz2, .tar.gz, .bz2, .rar, .gz, .tar, .tbz2, .tgz, .zip, .Z, .7z, .xz, .exe, .tar.xz, .tar.zst

Compression

  • tar.gz, tar.bz2, zip, 7z

Examples

  1. Extract an archive:

    ex archive.tar.gz
    
  2. Compress files to a zip archive with verbose output:

    ex --compress zip --verbose --target /tmp file1 file2
    
  3. Extract files to a specific directory and delete the original archive:

    ex --extract --delete --target /path/to/extract archive.zip
    
  4. Compress directories to a tar.gz archive, excluding certain files:

    ex --compress tar.gz --exclude '*.log' --target /tmp dir1 dir2
    
  5. Compress using patterns from an exclude file:

    ex -c zip --exclude exclude.txt dir1 dir2
    

The ex function simplifies the process of working with archives by providing a unified interface for both extraction and compression tasks. It supports a wide range of formats and offers flexibility through various options, making it a powerful tool for file archiving and extraction operations.

duu (Enhanced Disk Usage) Function

The duu function is an enhanced version of the standard du (disk usage) command. It provides a colorful, easy-to-read summary of disk usage for directories and files.

Usage

duu [directory]

If no directory is specified, it will analyze the current directory.

Key Features

  • Color-coded output for easy reading
  • Sorts results by size in descending order
  • Displays sizes in human-readable format (K, M, G, T)
  • Shows percentage and graphical representation of disk usage
  • Summarizes total disk usage at the end

Output Format

The function displays the following information:

  1. Size: The amount of disk space used
  2. Unit: The unit of measurement (K, M, G, T)
  3. Usage: A graphical bar representing the percentage of usage
  4. Path: The file or directory path

Color Coding

  • Green: Kilobytes (K)
  • Yellow: Megabytes (M)
  • Cyan: Gigabytes (G)
  • Magenta: Terabytes (T)
  • Blue: Default color for other units

Example Output

  Disk Usage Summary  
Size       Unit   Usage    Path
---------- ------ --------- --------------------
   1.23    G      █████░░░░ /home/user/Documents
   856.45  M      ████░░░░░ /home/user/Downloads
   234.56  M      ██░░░░░░░ /home/user/Pictures
   45.67   M      █░░░░░░░░ /home/user/.config
----------------------------------------
Total:     2.34   G     

Benefits

  1. Visual Representation: The bar chart provides an immediate visual cue about the relative sizes of directories.
  2. Color-Coding: Different colors for different size units make it easy to quickly identify large consumers of disk space.
  3. Sorted Output: Results are sorted by size, placing the largest items at the top.
  4. Human-Readable: Sizes are converted to the most appropriate unit (K, M, G, T) for easy understanding.
  5. Total Summary: Provides a total at the end, giving an overview of the analyzed directory’s total size.

Use Cases

  • Quickly identify large files or directories consuming disk space
  • Analyze disk usage patterns in a visually appealing manner
  • Get a summarized view of disk usage in a specific directory

The duu function enhances the standard disk usage analysis by providing a more user-friendly and informative output, making it easier to understand and manage disk space usage.

 ,

CrownRU
()

Древнее зло, излом API/ABI в glibc связанный с errno

Форум — Development

Есть очень древняя программа без исходников, скомпилированная под Linux ориентировочно в 2000-2003 годах. Вероятно компилировалась на RHL 7.3 Valhalla (не путать с RHEL 7, тогда ещё вообще RHEL’ов не было), возможно даже каким-то GCC 2.95:

prism.original: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.2.5, not stripped, too many notes (256)

Нужно запустить её на современной Ubuntu LTS.

При запуске ругается так:

prism: symbol lookup error: prism: undefined symbol: errno, version GLIBC_2.0

Погуглил, и нашёл что GNU’тые когда-то там на рубеже веков сломали API/ABI и этот errno похоже что завернули в какие-то убермакросы и выкинули.

Извернулся, взял HEX-редактор и заменил несуществующий символ errno на существующий srand:

https://0x0.st/Xy00.png

После такого наглого вмешательства программа запустилась и всё отлично работает, но напрягает такой выхлоп в консоль:

prism: Symbol `srand' has different size in shared object, consider re-linking

Как сделать по красоте и избавиться от этого предупреждения?

Сам файл программы: https://0x0.st/Xy0d.zip/prism.zip

 , , ,

EXL
()

Приложения и утилиты, которые стоит попробовать

Статьи — Администрирование
Приложения и утилиты, которые стоит попробовать

Многие пользователи Linux с большим стажем даже не подозревают о существовании этих замечательных инструментов, которые способны облегчить им жизнь…

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

 , ,

rtxtxtrx
()

Используем socks для доступа к ChatGPT и ускорения YouTube

Статьи — Администрирование
Используем socks для доступа к ChatGPT и ускорения YouTube

Эта статья не содержит описания способов обхода блокировок для доступа к противоправому контенту. Socks-прокси нужны исключительно для того чтобы смотреть YouTube и просить ChatGPT писать за тебя домашние задания!!! У первого какие-то проблемы со скоростью последнее время, говорят, что из-за отключения кеширующих серверов, а второй сам заблокировал жителей из России, Беларуси и Китая…

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

 ,

rtxtxtrx
()

Как в x11 забиндить Delete на Shift + BackSpace (или на Ctrl+H) глобально

Форум — Desktop

Кнопка Delete расположена в стороне от основных клавиш - приходится отрывать руки «фыва олдж», что бы её нажать. Хочется её перебиндить Delete на что-нибудь более доступное, например на Shift+Backspace или на Ctrl+H.

В man 7 xkeyboard-config решения не нашёл. Клавиатура не программируемая (не QMK/VIA).

Есть идеи?

 , ,

Harliff
()

Проблемы с уровнем яркости на Honor Magicbook 14 GLO-G561

Форум — Linux-hardware

Установил Ubuntu 22.04.3 LTS на указанный ноут. Сразу при запуске все хорошо - яркость регулируется и с кнопок, и из менюшки. Через некоторое время (минут 10) яркость сама по себе доводится до максимума или до минимума, после чего перестает работать одна или обе кнопки настройки яркости, при этом регулировка из менюшки работает. Иногда это событие повторяется. Один раз было, что яркость сама повысилась до максимума и менялась через менюшку, но сразу же восстанавливалась до максимума, будто была зажата кнопка, но прошло само через пару секунд (впоследствии кнопки так и не заработали). Кто знает, подскажите пожалуйста, в чем может быть дело.

 

krigga
()

Ассемблирование DSDT.dsl

Форум — Linux-hardware

Здравствуйте. Решил поправить свой dsdt напопробовать включить S3 вместо новомодного s2idle. Однако при повторной компиляции, даже непоправленного dsdt.dsl выдает 41 error. Беглый гуглеж говорит, что это проблемы синтаксиса acpi более старой версии.

https://pastebin.com/b6RDZU6E

https://pastebin.com/GtqXsD7S

Как поправить ошибки или ассемблировать под более старую версию acpi?

 ,

Jeronimo
()

Разобрался и чуть доработал скрипт прошивки HDMI EDID

Форум — Linux-hardware

Краткое содержание: допилил и форкнул утилиту прошивки edid в edid-checked-writer чтоб прошить сквозной HDMI-эмулятор монитора.

Предистория: имеется 1440p монитор Samsung S27A850D, в котором есть DP и DVI-dual-link. Но нет HDMI (видимо к моменту выхода монитора HDMI не умел в 1440p).

Хотелка: чтоб был способ его по-простому подключить к любому hdmi-источнику и работал бы в 1440p.

Изначально был взят просто пассивный провод-переходник HDMI->DVI-single-link, но с ним не достигалось нужное разрешение, так как монитор в своём EDID не выдавал совместимости с HDMI, в результате чего источник сигнала понимал что используется переходник и не выдаёт битрейта HDMI для 1440p. Однако по предварительным тестам с этим переходником + программным подсовыванием EDID от HDMI-1440p-монитора https://github.com/linuxhw/EDID/blob/master/Digital/Samsung/SAM0E0C/38CD24A55A35 стало ясно что сам монитор более высокий битрейт поддерживает. Оставалось только научить его выдавать этот EDID по кабелю.

Была взята утилита edid-rw, сделал бэкап существующего EDID, дал команду на запись нового - утилита молча вышла с кодом 0 ничего не написав. Оказалось что, во-первых, утилита не проверяет успешность записи, а во-вторых что EEPROM внутри монитора в режиме только чтения (а физически находится под большой впаянной пластиной, когда-то разбирал его ранее).

Поэтому вместо выпаивания и прошивки был выбран более простой и повторяемый путь. Куплен «адаптер HDMI для KVM» - отличается от обычного эмулятора монитора тем, что имеет и выход на который идёт сквозное прохождение сигнала. Маленький металлический с надписями Source и Sink. Добавлен на конец провода-переходника, и внутри этого адаптера оказался уже вполне прошиваемый EEPROM, который всегда представляется источнику сигнала вместо того что передаёт моник.

По этому поводу доработал прошивальщик EDID проверкой на успешность записи и внятным отображением этого резульатата, потестил в разных сценариях и выложил форк на который ссылка вначале. Автор оригинального скрипта edid-rw ещё 4 года назад написал что «не заинтересован в развитии, форкайте если хотите»

Теперь окирпичить монитор из-под линукса стало чуть-чуть удобнее! (или можно случайно окирпичить оперативку, если указать при прошивке не ту шину и прошить EEPROM памяти; я добавил одну проверку призванную это предотвратить, но она ненадёжная; в оригинале вообще не было)

 , , ,

GPFault
()

Узнать мин. версию необходимого smb протокола для работы с Samba server

Форум — Admin

Как с клиента узнать версию необходимого smb протокола для работы с Samba server ?

 

mirek
()

AMD и suspend

Форум — Desktop

Не ожидал, что на AMD это такая проблема.

Ryzen 7x при echo mem > /sys/power/state зависает.
На Arch вики и Gentoo ходил, пробовал выключать все опции /proc/acpi/wakeup, менял в биосе варианты ACPI…

Не помогло. Под Windows спит. Под linux виснет или сразу включается.

Есть победившие недуг?
С Intel такого не наблюдалось.

пробовал ядра от 5.15 до 6.9

sudo dmesg |grep fai
[    0.222269] thermal_sys: Registered thermal governor 'fair_share'
[    0.239876] ACPI: _OSC evaluation for CPUs failed, trying _PDC
[    2.587188] ACPI: \_TZ_.TZ10: _PSL evaluation failure
[    2.863613] hub 8-0:1.0: config failed, hub doesn't have any ports! (err -19)

 , , ,

Eulenspiegel
()

Перенос флатпак на другой раздел

Форум — General

Добрый день. Подскажите, пожалуйста, такую вещь. У меня установлен Линукс Минт и по-умолчанию пакеты флатпак ставятся на раздел ~/.var/app (сами приложения) + основная масса летит в раздел /var/lib/flatpak/runtime и /var/lib/flatpak/app в корне и занимает там порядка 11Гб. Раздел я создавал небольшой под систему и отсюда вопрос: можно ли переместить или установку флатпаковского барахла целиком куда-нибудь в /home/user/ (отдельно смонтирован), или раздел /var на другой диск? Я достаточно нубас в системе, поэтому «для чайников», если можно)

 ,

Krapkert
()

Насчет пайки, электрики, инженерии

Форум — Talks

Доброго вечера суток! Товарищи, у меня такой возможно не очень опытный вопрос. Ситуация такая: Недавно появилось большое желание и мотивация начать заниматься электроникой. В плане паять, создавать свои схемы и устройства для компьютера или как они называются точно не знаю, такие как Raspberry Pi 4, Proxmark 3, APImote, E-Mate X итд. Возможно вы меня посчитаете как какого нибудь парня пересмотревшего фильмов, но я очень очень давно хочу этим заняться, но не пойму с чего начать. Итак мои вопросы: С чего мне начать свой путь в этой сфере? Какие книги, курсы можете посоветовать? Какое оборудование надо? Какие языки программирования для этого всего нужны? И что вообще как? Буду до безумия благодарен за точный и серьезный ответ. Спасибо за внимание!

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

 , ,

yyrroo
()

Шпаргалка и расширенная раскладка для ввода символов с клавиатуры

Форум — Desktop

За 5 минут не нагуглилось. Нашёл onboard, но это не то. Я набиваю тексты, в которых есть особые значки. Некоторое подмножество юникода. Я хочу, чтобы мне было удобно их набивать. Что это означает?

Это означает, что я нажимаю некую глобальную (в рамках оконного менеджера) горячую кнопку. Ну, скажем, AltGr, и отпускаю её. После этого на экране появляется изображение клавиатуры. Далее я нажимаю и/или удерживаю другую кнопку, допустим, Shift, Ctrl, Caps, F1-F7 и т.п. У меня меняется на клавиатуре раскладка (при удержании одних кнопок и при нажатии других) и сразу отображается. Далее я нажимаю, допустим, на кнопку «а» на своей физической клавиатуре и соответствующий символ вводится туда, где находится текущий текстовый ввод. Далее я нажимаю Esc и клавиатура исчезает, ну или сразу исчезает после ввода одной буквы.

Есть такое? У меня LXDE.

 , расширенная раскладка клавиатуры,

den73
()

IDE на основе VIM для python, perl, c++, bash

Форум — Development

Искал расширение / набор скриптов для VIM чтобы использовать его как IDE для python ( perl, c++, bash, понятно, что для каждого языка будет свой набор ). Их оказалось так много – всех не перепробуешь.

а. какое бы вы посоветовали? В первую очередь интересует питон.

б. как сравнивать, может где-то есть рейтинги, которые я не нашёл?

Всем большое человеческое аригато! Буду приручать неовим с nvchad на малинке.

Для переболевших ковидом:

  1. Ставим неовим apt install neovim

https://github.com/neovim/neovim/wiki/Installing-Neovim

  1. git clone https://github.com/NvChad/NvChad ~/.config/nvim --depth 1 загружаем конфиги nvchad https://nvchad.com/docs/quickstart/install

 , ,

jia
()