Ответы пользователя по тегу Linux
  • Lsusb и lspci не видят тачпад ноутбука ELAN, однако dmesg его видит?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    lsusb и lspci не видят его

    и это правильно, потому что, судя по dmesg, это i2c устройство подключенное к i2c-контроллеру висящему на шине PCI (вот к этому: 00:15.1 Serial bus controller: Intel Corporation Cannon Point-LP Serial IO I2C Controller #1 (rev 30)).
    Ответ написан
    3 комментария
  • Как на Linux читать и изменять память процесса?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Классический способ состоит в использовании системного вызова ptrace с кодами запроса PTRACE_ATTACH для присоединения к процессу, PTRACE_PEEKTEXT и PTRACE_POKETEXT для чтения и записи его памяти и PTRACE_DETACH для отсоединения.
    Ответ написан
    Комментировать
  • Не запускается ядро Linux?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Что я делаю не так?

    Ты не предоставляешь достаточно данных для диагностики. Как ты конфигурировал своё ядро? Как устанавливал?

    Unable to mount root fs on unknown-block(0,0)

    мой хрустальный шар говорит, что ты либо не установил модули своего ядра, либо они не попали в initramfs.
    Ответ написан
    21 комментарий
  • Как общаться с процессом в Linux?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Нужно написать программу, которая будет посылать в stdin программы данные и забирать из stdout.

    Что я делаю не так?


    Ты пользуешься не тем методом. pidfd_open делает совсем не то, что ты ожидаешь, см. раздел "Use cases for PID file descriptors" по приведённой ссылке.

    Взаимодействие с дочерним процессом через stdin/stdout обычно реализуется через пайп. Вот пример.

    Вот ещё пример который делает exec

    #include <unistd.h>
    
    int main()
    {
            int fd[2][2];
            pipe(fd[0]);
            pipe(fd[1]);
            pid_t pid_fork = fork();
            if (!pid_fork) {
                    // Дочерний процесс
                    close(fd[0][1]);
                    close(fd[1][0]);
                    dup2(fd[0][0], STDIN_FILENO);
                    dup2(fd[1][1], STDOUT_FILENO);
                    execl("/usr/bin/tr", "/usr/bin/tr", "l", "r", NULL);
            } else {
                    // Родительский процесс
                    close(fd[0][0]);
                    close(fd[1][1]);
                    char buf[1000];
                    ssize_t sz;
    
                    write(fd[0][1], "hello, world\n", sizeof("hello, world\n") - 1);
                    close(fd[0][1]);
                    sz = read(fd[1][0], buf, sizeof(buf));
                    if (sz > 0) {
                            write(STDOUT_FILENO, buf, sz);
                    }
            }
            return 0;
    }
    Ответ написан
    Комментировать
  • Как прокручивать консоль Arch linux?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Как прокручивать консоль Arch linux?

    "Консоль" в смысле "голый виртуальный терминал"? Никак. Можно запускать какой-нибудь screen или tmux в виртуальном терминале и "прокручивать" вывод его средствами (не самыми, впрочем, очевидными: ctrl-a-esc).
    Ответ написан
  • Изменить объем раздела /home linux?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Могу ли я на время удалить swap, либо создать его из свободного места, чтобы добавить свободное место в /home?

    легко. ты это можешь сделать даже из запущенного линукса, отключи его (swapoff /dev/nvme1n1p8), а дальше -- делай с разделом что хочешь.
    Ответ написан
    1 комментарий
  • Как обходить возврат функции epoll_wait?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    когда из слушающих сокетов ловиться соединение(accept), оно добовляется в набор для отслеживания еполл_вайтом и тут же возвращается с событием 4. Как? По логике если ты ко мне подключился, я жду от тебя "новостей" с цифрой 1.

    4 -- это EPOLLRDHUP? По логике, если ты принял входящее соединение, а другая сторона на нём сделала shutdown(…, SHUT_WR), чтобы данные могли идти только от тебя к клиенту, то такое поведение ты и получишь.
    Ответ написан
    6 комментариев
  • Какое приложение/процесс отправляет arp запросы?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    если роутер отправил мне-компьютеру запрос, то какой процесс будет отвечать на него?

    Cтандартным образом -- будет отвечать вот это место в сетевом стеке.

    В качестве альтернативы, кто угодно с привилегией CAP_NET_RAW может создать сырой сокет и через него получать и посылать всё что угодно, включая ARP-запросы и ответы.

    за получение ip по DHCP отвечает клиент

    можно попросить ядро сконфигурировать сеть через DHCP опцией командной строки ядра ip=dhcp, тогда будет работать код вот из этого файлика.
    Ответ написан
    1 комментарий
  • Как использовать регулярные выражения в find?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    При вводе find -name "10{3}" ничего не выдает, как использовать регулярные выражения в find

    опция -name find не поддерживает регулярные выражения. Поддерживает опция -regex, см.
    Ответ написан
    Комментировать
  • Как происходит разрешения на папку в Linux?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    как происходит разрешения на папку а конкретно момент с Read и eXecute

    Read -- возможность прочитать содержимое каталога. eXecute -- возможность сделать каталог текущим.
    См.
    Ответ написан
    Комментировать
  • Как вывести индикацию speed ethernet в linux kde?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Готов даже как-то поучаствовать в разработке/допиливанию net_applet, но нигде не нашёл не то что исходников, но и какого-то места или человека, кому задать такой вопрос.

    Вот исходник пакета drakx-net из mageia 7: sophie.zarb.org/rpms/1a149924e962ca57b572b11802f8f...
    В spec-файле есть URL с которого берутся исходники: gitweb.mageia.org/software/drakx-net
    Ответ написан
    1 комментарий
  • Как понять чего не хватает системе при сборке wine?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Как понять чего конкретно не хватает

    если сообщения об ошибке в консоли недостаточно, то в каталоге, где выполнялся configure остаётся файл config.log с подробным логом действий, текстом программы, которая сгенерировала ошибку, командной строкой компилятора и его сообщением об ошибке. Можно посмотреть туда.
    Ответ написан
    Комментировать
  • Книга о последних версиях ядра Linux?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Например, в них нет файла kernel/sched.c

    например git log -- kernel/sched.c легко объяснит, что с этм файлом случилось.

    насколько критично, что я буду изучать ядро по данной книге, т.е. по устаревшей версии ядра?

    совсем не критично, потому что то, что написано в книге имело место в прошлом, а с помощью git можно проследить, что с тех пор изменилось.
    Ответ написан
    Комментировать
  • Срываются ли вызовы функций выгрузки библиотек?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    При краше приложения вызывается ли функция выгрузки у библиотек?

    Если приложение валится от необработанного исключения, то, согласно описанию RaiseException, действие по умолчанию -- вызов ExitProcess. При завершении приложения через ExitProcess у загруженных библиотек будет вызван DllMain с кодом DLL_PROCESS_DETACH.
    Ответ написан
    Комментировать
  • Как "распаковать" параметры из переменной в bash-скрипте?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Так происходит, потому что подстановки в bash нерекурсивные. Т.е. если результат подстановки создаёт новую конструкцию, с которой произошла бы подстановка, будь она записана в исходном тексте скрипта, bash не будет её интерпретировать. Это ограничение можно обойти с помощью функции eval, которая интерпретирует свой параметр по всем правилам bash. Т.е. пример из вопроса можно записать так:
    du -sh ~ --exclude=$(eval echo $HOME/{$excludes})
    Оборотная сторона такого решения -- $excludes становится частью скрипта, и если он контролируется извне, туда легко можно всунуть rm -rf /* как побочный эффект.
    Ответ написан
    1 комментарий
  • Как понять, почему не работает ни один браузер в linux?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    можно попробовать запустить firefox под strace а потом внимательно почитать лог начиная с конца в поисках ошибок доступа. Типа того: strace -fvo trace firefox
    Ответ написан
    Комментировать
  • Qemu как правильно запускать vm?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Как запустить vm в молчаливом режиме, без открытия ее консоли?

    -nographic -serial none -monitor none
    есть для mipsel какие либо акселераторы, типа kvm?

    Есть, но надо понимать, что kvm требует, чтобы гостевая архитектура совпадала с хостовой, т.е. qemu для этого нужно запускать на mips-хосте.
    Ответ написан
  • Как посмотреть последние введенные команды в терминале с датой и временем их ввода?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    она не показывает день и время когда была введена команда

    man bash -> искать HISTTIMEFORMAT -> … -> PROFIT
    Например, можно добавить export HISTTIMEFORMAT='%F %T ' в ~/.bashrc
    Но, разумеется, дату/время уже залогированным командам это не добавит.
    Ответ написан
    Комментировать
  • Зачем использовать системный вызов poll для ожидания события от драйвера?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Почему бы сразу не блокировать поток вызовом read и не ждать пока данные будут доступны


    Если поток только читает, то действительно, на первый взгляд необходимости в вызове poll не видно.

    (в голову приходит только один вариант, когда необходимо принудительно прихлопнуть поток и если использовать таймаут, то не требуется прерывать системный вызов, хотя если принудительно завершить поток, то ядро по идее само прервет системный вызов)


    Если системный вызов втыкается в ожидание в драйвере, то драйвер сам решает, прерываемо это ожидание или нет. Может быть драйвер реализует операцию poll с возможностью прерывания, а read -- без.
    Ответ написан
    Комментировать
  • Синхронизация ресурсов в драйвере при системных вызовах?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    В момент, когда функция read блокирована (по факту системный вызов (syscall) не вернул результат в пользовательское пространство), то при вызове другого системного вызова того же драйвера, например, write, необходимо ли в самом драйвере синхронизировать общие данные, которые используются и в read и в write?

    Да.

    Или выполнение системных вызовов как-то гарантировано регламентировано и прерывания отключены

    Нет, вообще никак не регламентировано.
    Ответ написан