hwmon :добавить отсутствующий модуль ядра

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

Вы можете использовать declare -f func, чтобы увидеть, определено ли func, что-то вроде этого:

#!/bin/bash

foo() { echo foofoo; }
bar() { echo barbar; }
while read funcname; do
    if declare -f "$funcname" &> /dev/null; then
        "$funcname"
    fi
done

Обратите внимание, что в вашем коде:

IFS='>' read -r website_url gallery_dir

оставляет место перед >в website_url, так как установленное здесь IFSне содержит пробелов. Вместо этого вы можете использовать IFS='> ' read....

for i in $website_url; do
    echo $i | awk -F '/.' '{print $2}' | xargs
done

Я не уверен, что это должно делать. for i in $website_urlразбивает и объединяет значение переменной, а iвыполняет цикл по значениям. xargsв конце конвейера повторяет все, что он получает на входе. Ни один из них не выполняет никаких функций. Кроме того, разделитель полей awk/.соответствует косой черте, за которой следует любой символ, поэтому, если ввод был, например. foo/bar, результирующий вывод будет ar.

1
14.06.2021, 09:27
1 ответ

Я предполагаю, что вы используете Debian 10, но инструкции для более поздних версий аналогичны. Модуль, который вам нужен, поддерживается версией ядра, используемой в Debian 10, но он не включен; давайте это исправим.

  1. Установите исходный код ядра для версии по умолчанию в вашем выпуске:

    sudo apt install linux-source
    
  2. Извлеките его:

    cd /usr/src
    tar xf linux-source-*.tar.xz
    

    (при условии, что доступен только один linux-sourceархив, что будет иметь место, если вы не установили несколько пакетов linux-source).

  3. Скопируйте текущую конфигурацию ядра:

    cd linux-source-*/
    cp /boot/config-$(uname -r).config
    
  4. Включить настройку модуля sht3x:

    make menuconfig
    

    (это может пожаловаться на отсутствие инструментов, таких как компилятор; sudo apt install build-essentialдолжен все исправить ).

    Чтобы узнать, какую опцию нужно включить и где она находится, нажмите / и введите «SHT3X»:

    Screenshot of make menuconfig showing the search results for “SHT3X”

    Это дает некоторое количество информации:

    • опция называется SENSORS_SHT3X;
    • он указан в разделе «Драйверы устройств», «Поддержка мониторинга оборудования»;
    • параметры, от которых он зависит, уже включены;
    • , но он отключен.

    Нажмите Введите для выхода из результатов поиска, перейдите к «Драйверы устройств», нажмите Введите , затем перейдите к «Поддержка аппаратного мониторинга», нажмите Введите , найдите опцию «SHT3x» и нажмите M , чтобы включить ее как модуль.

    Нажимайте вкладку до тех пор, пока не будет выделено «Сохранить», затем Введите , подтвердите имя файла для записи(.config)и выберите «Выход» несколько раз, пока не будет вернуться к подсказке.

  5. Наконец, соберите модуль:

    make drivers/hwmon/sht3x.ko
    

    Для этого могут потребоваться дополнительные зависимости, как минимум libelf-devиlibssl-dev(sudo apt install libelf-dev libssl-dev).

    Если все пойдет хорошо, вы получите файл drivers/hwmon/sht3x.ko, который можно загрузить как модуль.

2
28.07.2021, 11:25

Теги

Похожие вопросы