Ответы пользователя по тегу Linux
  • Как решить проблемы с монтированием devtmpfs?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    система сама туда монтирует devtmpfs и, соответственно, прибивает мои художества.

    Так может отключить в конфиге ядра параметр DEVTMPFS_MOUNT ?
    Ответ написан
    Комментировать
  • Как распаковать архив(без сжатия) из нескольких частей, если нет места на HDD на Linux?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Как его можно разархивировать?

    Я бы сделал как-нибудь так:
    for f in backup.* ; do cat $f ; rm -f $f ; done | tar -x
    Ответ написан
    Комментировать
  • Почему ядро паникует?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Почему ядро паникует

    непосредственная причина: сдох init (attempted to kill init в первой строчке), из-за сигнала (do_signal в стеке вызовов).

    Упавший код:
    $ echo 'Code: 0f 7f 44 17 f0 f3 0f 7f 07 c3 48 83 fa 40 77 16 f3 0f 7f 07 f3 0f 7f 47 10 f3 0f 7f 44 17 f0 f3 0f 7f 44 17 e0 c3 48 8d 4f 40 <f3> 0f 7f 07 48 83 e1 c0 f3 0f 7f 44 17 f0 f3 0f 7f 47 10 f3 0f 7f' | scripts/decodecode
    Code: 0f 7f 44 17 f0 f3 0f 7f 07 c3 48 83 fa 40 77 16 f3 0f 7f 07 f3 0f 7f 47 10 f3 0f 7f 44 17 f0 f3 0f 7f 44 17 e0 c3 48 8d 4f 40 <f3> 0f 7f 07 48 83 e1 c0 f3 0f 7f 44 17 f0 f3 0f 7f 47 10 f3 0f 7f
    All code
    ========
       0:   0f 7f 44 17 f0          movq   %mm0,-0x10(%rdi,%rdx,1)
       5:   f3 0f 7f 07             movdqu %xmm0,(%rdi)
       9:   c3                      retq   
       a:   48 83 fa 40             cmp    $0x40,%rdx
       e:   77 16                   ja     0x26
      10:   f3 0f 7f 07             movdqu %xmm0,(%rdi)
      14:   f3 0f 7f 47 10          movdqu %xmm0,0x10(%rdi)
      19:   f3 0f 7f 44 17 f0       movdqu %xmm0,-0x10(%rdi,%rdx,1)
      1f:   f3 0f 7f 44 17 e0       movdqu %xmm0,-0x20(%rdi,%rdx,1)
      25:   c3                      retq   
      26:   48 8d 4f 40             lea    0x40(%rdi),%rcx
      2a:*  f3 0f 7f 07             movdqu %xmm0,(%rdi)             <-- trapping instruction
      2e:   48 83 e1 c0             and    $0xffffffffffffffc0,%rcx
      32:   f3 0f 7f 44 17 f0       movdqu %xmm0,-0x10(%rdi,%rdx,1)
      38:   f3 0f 7f 47 10          movdqu %xmm0,0x10(%rdi)
      3d:   f3                      repz
      3e:   0f                      .byte 0xf
      3f:   7f                      .byte 0x7f
    
    Code starting with the faulting instruction
    ===========================================
       0:   f3 0f 7f 07             movdqu %xmm0,(%rdi)
       4:   48 83 e1 c0             and    $0xffffffffffffffc0,%rcx
       8:   f3 0f 7f 44 17 f0       movdqu %xmm0,-0x10(%rdi,%rdx,1)
       e:   f3 0f 7f 47 10          movdqu %xmm0,0x10(%rdi)
      13:   f3                      repz
      14:   0f                      .byte 0xf
      15:   7f                      .byte 0x7f

    судя по всему это какая-то часть memcpy или функции типа того.
    Возможные причины, в порядке, кажущемся мне наиболее вероятным: баг в init либо дырявая память.
    Ответ написан
    Комментировать
  • Умеет ли Linux выключаться от разрядки батареи без вреда для системы?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Linux как-то закрывает сам программы (и завершает работу ОС) "правильно" перед тем, как полностью выключиться?

    Ядро само по себе так не делает. Но есть юзерспейс, который делает. Как именно делает -- как настроишь.
    Например
    KDE умеет так:
    604e1929ab70a442092411.png
    т.е. при разряде батарейки он может не только штатно выключиться, но и выполнить suspend или hibernate.
    Ответ написан
    4 комментария
  • Не удаётся найти “libc.so.6” при запуске Python скрипта в Termux на Android?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    выводится ошибка dlopen failed library libc.so.6 not found. Как исправить данную ошибку?

    наиболее правильным решением было бы использовать android NDK для сборки всех бинарников (типа _pytransform.os) которые будут запускаться на устройстве. Версия бинарников которая у тебя есть сейчас похоже собрана под традиционный линукс с glibc.
    Ответ написан
    Комментировать
  • Можно ли запустить bash-скрипт в текущем процессе?

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

    Непонятно, каково отношение между "скриптом" и "текущим процессом". Кто кого запускает?

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

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Или процесс создания linux headers настолько специфичен?

    Нет. userspace интерфейс ядра изо всех сил старается сохранять обратную совместимость. Т.е. если построить тулчейн с использованием хедеров какой-то версии ядра, собранные им бинарники будут работать (а если не будут, то есть основания зарепортить это как баг ядра) и на более новых ядрах.
    Ответ написан
    Комментировать
  • Почему самопроизвольно останавливается HDD в Linux?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Можно начать с просмотра через hdparm параметров Advanced Power Management (hdparm -B) и Automatic Acoustic Management (hdparm -M) и установки их на максимум (254 или 255, зависит от диска), если они ещё не там.
    Ответ написан
  • Bash Script работает некорректно, почему?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Bash Script работает некорректно, почему?
    #!/bin/sh
    В чем может быть проблема?

    Потому что это не bash скрипт. bash скрипт начинается словами #!/bin/bash. Твой скрипт хочет чтобы его выполнял /bin/sh, а он не обязан быть башем.
    Ответ написан
    1 комментарий
  • Почему при записи в /proc/ система зависает?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    static struct file_operations process_sched_add_module_fops = {
    …
    proc_create(PROC_CONFIG_FILE_NAME,0777,NULL,&process_sched_add_module_fops);

    Я думаю, что это основная ошибка: proc_create принимает указатель на структуру proc_ops, а не на file_operations. Компилятор должен был бы что-нибудь сказать в этом месте, ты не читаешь его предупреждения?

    static ssize_t process_sched_add_module_write(struct file *file, const char *buf, size_t count, loff_t *ppos)

    А здесь ты потерял аннотацию __user у параметра buf. Этот буфер приходит из юзерспейса, по этой причине ты не можешь лезть в него напрямую функцией kstrtol.
    Ответ написан
  • Какие есть хорошие книги по Linux?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Вот тут я как-то постил свой список.
    Некоторые ссылки протухли, но по названию должно хорошо искаться.
    Вдобавок, https://lwn.net/Kernel/Index/ для точечного погружения в отдельные топики.

    А адептов секты теоретиков "читай исходники" реально надо заставлять читать исходники до просветления.
    Ответ написан
    2 комментария
  • Авторизацию по ключу SSH?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Сгенерировал приватный и публичный ключ на сервере, публичный скопировал на клиентскую машину в файл 'authorized_keys' но аутентификация как и обычно проходит по паролю.

    Ты с сервера заходишь ни клиентскую машину, что ли? Потому что публичный ключ кладут на машину НА которую заходят.
    Чтобы заходить с клиента на сервер, генерируй ключевую пару на клиенте и записывай публичный ключ в authorized_keys на сервере.
    Ответ написан
    1 комментарий
  • Как отследить запуск процессов в Linux?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Мне нужно в файл записать какие именно утилиты и компиляторы запускаются и с какими параметрами.

    strace -f -o log -v -s 100000 -e execve make ...
    -- сделает именно это
    Ответ написан
    Комментировать
  • Как переназначить клавишу ё -> õ?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Ещö вариант с использованием xmodmap -- добавить в ~/.Xmodmap строчку
    keycode 49 = grave asciitilde otilde Otilde и выполнить xmodmap ~/.Xmodmap
    Ответ написан
    Комментировать
  • QT приложение запускается от root но, но не от обычного пользователя?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    strace мне ничего полезного не дал(вероятно там и есть ошибка, но я не могу додуматься и увидеть, что нужно)

    Начни со сравнения логов strace -f -v -e execve,exit,exit_group когда запускаешь от рута и от обычного пользователя.
    Ответ написан
    Комментировать
  • Почему компьютер после выгрузки модуля зависает?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    linux-4.15.0/net/netfilter/core.c:353

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

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    copy_from_user(ips[i], buffer,256);
    
       	printk(KERN_INFO "ips: %s \n", ips[i]);
       	i++;
    
       	if(strncmp(ips[0],"wh",2)==0){

    почему он работает,

    Во-первых этот код неполный, он использует переменные определённые где-то ещё, от того как именно они определены зависит насколько он "работает".
    Во-вторых, по тому что видно, работает он, скажем, так себе:
    - он печатает строчку принятую из юзерспейса без ограничения длины. Если юзер не поставил 0-терминатор, то напечатает мусор из пространства ядра за нефиг делать.
    - копирование происходит в ips[i], где i увеличивается с каждым вызовом, а анализ всегда смотрит на ips[0].
    - в прототипе функции отсутствует аннотация __user у параметра buffer.

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

    Я бы сказал, что его и так удобно читать, особенно если форматирование поправить.
    Ответ написан
    Комментировать
  • Почему программа ловит SIGSEGV на инструкции push?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Указатель стека (RSP: 0x00007FFFFFFFEA78) указывает примерно в то же место, где находится код программы (0x7fffffffea75: push rbx). Код обычно защищён от записи, соответственно записать в стек может быть нельзя по этой причине. Кроме того, если записать в стек таки можно, push rbx как раз перепишет саму себя и следующую инструкцию. Без отладчика это может работать за счёт конвейера, но под отладчиком это работать не будет.
    Ответ написан
    Комментировать
  • Почему в среде Linux админов Vim - это тру, а Nano - для слабаков?

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

    Опытные администраторы могут не любить когда на машине нет vi. А уж чем другие пользуются им должно быть фиолетово.

    Что это - понты, или за этим стоит что-то большее ?

    Если за этим что-то стоит, то обычно это привычка.
    Ответ написан
    4 комментария