Задать вопрос
Ответы пользователя по тегу Linux
  • Как тестировать драйвера?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Сразу скажу, комп у меня слабенький и ждать 3-4 часа чтоб понять что забыл в конце оператора точку с запятой поставить, это не хорошо?!

    При разработке необязательно использовать конфигурацию ядра со всеми включёнными опциями. Типичный конфиг который я использую при разработке собирается с нуля за 2 минуты.
    Кроме того, ядерный Makefile понимает цели вида *.o. Т.е. можно взять и откомпилировать один файл из дерева исходников ядра. Например: make init/main.o.
    Если ты меняешь что-то в исходниках, перекомпилироваться будет только то, что действительно зависит от того, что ты поменял. Поменяешь .c -- перекомпилируется единственный соответствующий ему файл .o.

    как можно тестировать компоненты ядра

    Это совсем другой вопрос. Под просто тестированием понимают проверку того, что код работает правильно, а не то, что он собрался.
    Ответ написан
    Комментировать
  • Почему появляется ошибка segmentation fault но при повторном запуске программы её нет?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Я не вижу криминала который мог бы привести к segfault в приведённой программе.
    Почему поведение может отличаться между запусками -- например потому что запись в файл /sys/class/gpio/export меняет состояние системы и запоминается между запусками.
    Кроме того, согласно https://www.kernel.org/doc/Documentation/gpio/sysfs.txt в direction надо писать in или out, а high или low нужно писать в value. Сегфолта от этого быть не должно, тем не менее.

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

    UPD: посмотрел ещё немного... В приведённом исходном тексте кривые юникодные кавычки. Рекомендую исправить на ASCII, либо вставить исходный текст как есть, без фокусов.
    Ответ написан
  • Как в Xfce4, Mate отключить кнопки тачпада?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Как отключить кнопки тачпада?

    командой xinput.

    Я использую такой скрипт:
    #! /bin/bash
    
    MODEL='Synaptics TouchPad'
    xinput disable  `xinput list | sed -n "/$MODEL/s/.*id=\([0-9]*\).*$/\1/p"`
    Ответ написан
  • Где найти актуальную версию arm тулчейна?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Видишь ли в чём дело, если ты используешь тулчейн сильно отличный от того, которым собраны библиотеки установленные на устройство, у тебя есть три варианта действий:
    - перестроить и обновить все библиотеки на устройстве.
    - создать отдельную иерархию каталогов /lib, /usr/lib, ... в которые сложить библиотеки (.so) нового тулчейна и тем или иным способом заставить исполняемые файлы собранные новым тулчейном использовать их.
    - линковать свои исполняемые файлы статически.

    В последнем варианте тебе подойдёт почти любой тулчейн, два других варианта -- более замороченные.

    https://elinux.org/Toolchains#Prebuilt_toolchains
    Ответ написан
    Комментировать
  • Как правильно экранировать одиночные кавычки в linux?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    как экранировать одинарные кавычки

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

    Оригинальный запрос можно написать так:
    grep -rnw /home/user/ -e "\$_GET['s']"
    но в любом случае он выглядит проблематично: $ в регулярке -- это конец строки, квадратные скобки -- это символ из набора...
    Ответ написан
    Комментировать
  • Thinstation как добавить xorg7-radeon?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Я ничего не знаю про thinstation, но древний драйвер в X11 называется radeonhd, см. https://www.x.org/releases/individual/driver/
    Ответ написан
  • Что обозначают эти строки в ассемблере?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    .file "main.c"
    Зачем в коде название файла с исходным кодом

    Для генерации отладочной информации в формате DWARF.

    .ident "GCC: (Ubuntu 7.3.0-27ubuntu1~18.04) 7.3.0"
    ...и версия моей убунты?

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

    Попадают ли они в исполняемый файл при окончательно компиляции и зачем используются?


    Имена файлов попадают в таблицу символов как символы типа FILE и в секцию отладочной информации:
    $ readelf -a hello | grep FILE
        28: 0000000000000000     0 FILE    LOCAL  DEFAULT  ABS crtstuff.c
        37: 0000000000000000     0 FILE    LOCAL  DEFAULT  ABS hello.c
        38: 0000000000000000     0 FILE    LOCAL  DEFAULT  ABS crtstuff.c
        41: 0000000000000000     0 FILE    LOCAL  DEFAULT  ABS


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

    Идентификационная строка компилятора попадает в секцию .comment объектного файла, а оттуда -- в исполняемый файл:
    $ objdump -s -j .comment hello
    
    hello:     file format elf64-x86-64
    
    Contents of section .comment:
     0000 4743433a 20284465 6269616e 20362e33  GCC: (Debian 6.3
     0010 2e302d31 382b6465 62397531 2920362e  .0-18+deb9u1) 6.
     0020 332e3020 32303137 30353136 00        3.0 20170516.


    Всё это можно от исполняемого файла отрезать командой strip, objcopy или соответствующим скриптом линковщика.
    Ответ написан
    Комментировать
  • Почему поле fd в событии epoll_event не задано?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    e.data.fd = cfd;
    e.data.ptr = (void*)cfd;


    epoll_data -- это union, не нужно его инициализировать сначала одним, а потом другим:
    typedef union epoll_data {
                   void    *ptr;
                   int      fd;
                   uint32_t u32;
                   uint64_t u64;
               } epoll_data_t;
    
               struct epoll_event {
                   uint32_t     events;    /* Epoll events */
                   epoll_data_t data;      /* User data variable */
               };


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

    в документации сказано, что там должно быть значение, которое было в поле data во время вызова epoll_ctl.

    Кроме того, 0 -- вполне нормальный файловый дескриптор.
    Короче, я попробовал, у меня работает. Если у тебя не работает -- приведи весь код.
    Ответ написан
    1 комментарий
  • Запуск программы в Linux x64?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Есть ли подобные статьи для 64-бит архитектуры?

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

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    cmd1 | cmd2 | cmd3
    В данном примере все три команды делят между собой ресурсы одного ядра процессора.

    Вовсе нет. Они получают все доступные ресурсы в своё распоряжение. Проблема может быть в том, что cmd1 не производит достаточно данных, чтобы cmd2 загрузил ядро на 100%, либо cmd2 не читает данные достаточно быстро и тормозит cmd1, и то же самое в паре cmd2 | cmd3.
    Ответ написан
  • Как с помощью subprocess передать пароль от sudo но не cделать процесс заблокированным?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    она требует sudo пароль

    Это не "она требует", это у тебя sudo так настроен. Настрой его по-человечески, чтобы пароль не требовался (совсем, или только для запуска tcpdump) -- и у тебя будет на одну проблему меньше.
    Ответ написан
    3 комментария
  • Какие существуют легковесные дистрибутивы Linux для ARM?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    buildroot -- можно уложиться в несколько мегабайт.
    Ответ написан
    Комментировать
  • Как вывести flags как в objdump?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Как на Си вывести флаги в том же формате, что делает команда objdump?

    А в код-то не посмотреть никак?
    static void
    dump_bfd_header (bfd *abfd)
    {
      char *comma = "";
    
      printf (_("architecture: %s, "),
              bfd_printable_arch_mach (bfd_get_arch (abfd),
                                       bfd_get_mach (abfd)));
      printf (_("flags 0x%08x:\n"), abfd->flags & ~BFD_FLAGS_FOR_BFD_USE_MASK);
    
    #define PF(x, y)    if (abfd->flags & x) {printf("%s%s", comma, y); comma=", ";}
      PF (HAS_RELOC, "HAS_RELOC");
      PF (EXEC_P, "EXEC_P");
      PF (HAS_LINENO, "HAS_LINENO");
      PF (HAS_DEBUG, "HAS_DEBUG");
      PF (HAS_SYMS, "HAS_SYMS");
      PF (HAS_LOCALS, "HAS_LOCALS");
      PF (DYNAMIC, "DYNAMIC");
      PF (WP_TEXT, "WP_TEXT");
      PF (D_PAGED, "D_PAGED");
      PF (BFD_IS_RELAXABLE, "BFD_IS_RELAXABLE");
      printf (_("\nstart address 0x"));
      bfd_printf_vma (abfd, abfd->start_address);
      printf ("\n");
    }
    Ответ написан
  • Почему в Alpine Linux невозможно ничего написать в консоли?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    В чем может быть дело?

    Похоже на не-английскую раскладку клавиатуры.
    Ответ написан
    1 комментарий
  • Как верифицировать ALPINE LINUX 3.9?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Но при проверки им
    gpg --verify ncopa.asc alpine-standard-3.9.0-x86_64.iso.sha256
    пишет что gpg: verify signatures failed: Неожиданная ошибка.


    alpine-standard-3.9.0-x86_64.iso.sha256 -- это просто sha256 от iso, там нет подписи. Подпись должна быть в файле с расширением .asc за кнопкой "GPG", но там 404.
    Судя по содержимому dl-cdn.alpinelinux.org/alpine/v3.9/releases/x86_64 подписи всё-таки есть для некоторых .iso
    Ответ написан
    3 комментария
  • Как компилировать/установить модуль autosleep.c на debian?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    В общем вопрос простой, как установить этот модуль в ядро без затрат здоровья!? Может кто то ставил? Может я что то явно делаю не так?

    Ты определённо что-то делаешь не так. Начиная с того, что autosleep -- это не модуль:

    $ grep -A1 PM_AUTOSLEEP kernel/power/Kconfig
    config PM_AUTOSLEEP
            bool "Opportunistic sleep"


    У модуля тип был бы не bool а tristate.
    Всё что ты можешь сделать -- это собрать новое ядро с этой опцией.
    Ответ написан
    Комментировать
  • Кто нибудь использовал технологию "autosleep" | "Opportunistic sleep"?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    А RTFM -- не модно уже?:
    What:		/sys/power/autosleep
    Date:		April 2012
    Contact:	Rafael J. Wysocki <rjw@rjwysocki.net>
    Description:
    		The /sys/power/autosleep file can be written one of the strings
    		returned by reads from /sys/power/state.  If that happens, a
    		work item attempting to trigger a transition of the system to
    		the sleep state represented by that string is queued up.  This
    		attempt will only succeed if there are no active wakeup sources
    		in the system at that time.  After every execution, regardless
    		of whether or not the attempt to put the system to sleep has
    		succeeded, the work item requeues itself until user space
    		writes "off" to /sys/power/autosleep.


    Что у тебя в /sys/power/state?

    в файле /sys/power/autosleep -стоит "off", файл не редактируется

    Как редактируешь?
    Ответ написан
    7 комментариев
  • В чём причина того, что после каждого подключения HDD к винде, диск перестаёт монтироваться Линуксом?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    В dmesg...

    В этом обрывке только опознание железа винта и чтение таблицы разделов. Попыток монтирования не видно. После mount ничего нового не появляется?
    Ответ написан
  • Как заставить работать SD в режиме mmc-spi на процессоре Altera NIOS2 под управением Linux?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    error -110 whilst initialising SD card
    В чем может быть проблема?

    110 -- ETIMEDOUT. Там ещё дофига всего происходит "после успешного считывания регистров OCR и CID", нужно точнее определить место откуда приходит ошибка.
    Ответ написан
  • Как вывести mac адрес интерфейса?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Как вывести mac адрес сетевого интерфейса, зная что его ip начинается с 128.15. ?

    ip addr | sed -n '/link/h;/inet 128\.15\./{g;p}'
    Ответ написан
    2 комментария