Как загрузить сторонний -модуль в программу установки Debian -?

Вы можете направить stderr вашей программы в grep и использовать(bash -специфическую переменную )PIPESTATUS, чтобы различать 4 комбинации успешного/неудачного выполнения команды и команды, напечатанной/не напечатанной, это сообщение об ошибке:

{ your_command 2>&1 >&3 | grep your_error_message >/dev/null; } 3>&1
case ${PIPESTATUS[*]} in
0*) ;; # the command succeeded
*0) ;; # the command failed but printed the error message
esac

Пример:

# usage wrapper pattern cmd args...
wrapper(){
    msg=$1; shift
    { "$@" 2>&1 >&3 | grep "$msg" >/dev/null; } 3>&1
    case ${PIPESTATUS[*]} in
    0*|*0) return 0;;
    *) return "${PIPESTATUS[0]}";;
    esac
}

# usage test_cmd status error_message
test_cmd(){ status=$1; shift; echo >&2 "$@"; return "$status"; }

$ wrapper foo test_cmd 13 foo; echo $?
0
$ wrapper foo test_cmd 13 bar; echo $?
13

Примечания:

Не заменяйте grep >/dev/nullна grep -q; это приведет к выходу grep при первом совпадении и вызовет SIGPIPE для вашей команды.

Однако вы можете поставить ... | tee /dev/stderr |...между вашей командой и grep; это приведет к тому, что сообщения об ошибках будут переданы в grep и напечатаны в stderr.

Многие некачественные программы (, особенно сценарии Python ), выводят сообщения об ошибках в стандартный вывод вместо стандартного stderr; если это так, вы можете просто использовать

your_command 2>&1 |...

вместо всего этого { 2>&1 >&3 |... } >&3fd жонглирования.

0
20.09.2021, 07:56
1 ответ

Мне удалось заставить установщик Debian -распознать набор микросхем Realtek 8852AE и загрузить прошивку и модули ядра, так что я думаю, что это ответ на мой собственный вопрос:

### Make the Realtek 8852AE firmware available during installation
d-i preseed/early_command string \
/bin/cp /cdrom/realtek8852/rtw8852a_fw.bin /lib/firmware/rtw8852a_fw.bin

### Make the Realtek 8852AE network driver available during installation
d-i preseed/early_command string \
/bin/cp /cdrom/realtek8852/rtw89core.ko /lib/modules/5.10.0-8-amd64/rtw89core.ko; \
/bin/cp /cdrom/realtek8852/rtw89pci.ko /lib/modules/5.10.0-8-amd64/rtw89pci.ko

Моя первоначальная попытка не удалась, потому что на этапе "preseed/early _command" не были загружены никакие другие модули, и в результате команда modprobe этого модуля завершилась неудачно из-за неудовлетворенных зависимостей.

Мысленное примечание :ранняя _и поздняя _команды принимают несколько команд, связанных одна с другой двоеточием (; ), но убедитесь, что за последней командой не следует такое двоеточие...

Следующий вызов :Фактическое подключение к сети во время установки :/.

0
20.09.2021, 18:47

Теги

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