Обычно это можно обойти, используя параметр -l
:
используйте параметр -l или --ignore-whitespace, который позволяет патчу сравнивать пустые символы (т.е. пробелы и табуляции), так что любая непустая последовательность пробелов в файл патча соответствует любой непустой последовательности пробелов во входных файлах
Это стандартная функция (см. описание POSIX patch ).
Однако OP изменил вопрос, чтобы прокомментировать Как преобразования окончания строки работают с ядром git.autocrlf между различными операционными системами и добавил пример, намекающий, что проблема наблюдается с файлами в Windows (в отличие от примера в стиле Unix). Хотя патч
пытается устранить несоответствия между окончаниями строк CRLF и LF, он склонен предполагать, что используется последнее. Если файл исправления имеет окончания CRLF, а файлы для исправления - нет, он будет восстанавливаться, как в этом примере журнала:
(Stripping trailing CRs from patch.)
patching file xterm.log.html
(Stripping trailing CRs from patch.)
patching file xterm.man
(Stripping trailing CRs from patch.)
patching file xtermcfg.hin
Проверка исходного кода, в аналогичной
функции, GNU patch
обрабатывает пробелы как пробелы и табуляцию с некоторой специальной обработкой в зависимости от того, имеют ли строки завершающий LF. CR не упоминается. Он обращает внимание на check_line_endings
, но использует эту информацию только как часть сообщения, чтобы помочь диагностировать отклонение. Он удаляет завершающие CR в pget_line , если не задана опция - binary
.
У патча GNU нет возможности указать ему преобразовать патч с окончанием LF в CRLF для применения к файлам, концы строк которых являются CRLF. Чтобы использовать его надежно в этом случае, можно выбрать
- binary
. . La razón por la que tu wifi funciona es que rtlwifi/rtl8821aefw.bin
está correctamente cargado. IIRC también hay archivos de firmware opcionales y cuando faltan, el mensaje de error es Direct firmware load for {name} failed with error %d
. Debido a que esto es engañoso, los desarrolladores del kernel acordaron en mayo de 2018 que deberían agregar una nueva llamada firmware_request_nowarn()
que no arrojará esos mensajes.
El paquete firmware-realtek
contiene los archivos que le faltan. Agregue el resultado de apt-cache policy firmware-realtek
a su pregunta.
Ошибка:
> bluetooth hci0: Direct firmware load for rtl_bt/rtl8821a_config.bin failed with error -2
Realtek не предоставляет конфигурацию для «rtl8821a _config», вы можете сделать символическую ссылку с rtl8723d _config.
Проверьте, указан ли здесь файл с ошибкой:
> ls /lib/firmware/rtl_bt/
Если нет, сделайте симлинк на другой конфиг прошивки с тем же именем файла, которого нет:
> sudo ln -s /lib/firmware/rtl_bt/rtl8723d_config.bin.xz /lib/firmware/rtl_bt/rtl8821a_config.bin.xz
Перезагрузитесь и проверьте, помогает ли это.
> dmesg | grep Bluetooth
[ 3.604451] usb 1-1.2: Product: Bluetooth Radio
[ 9.455922] Bluetooth: Core ver 2.22
[ 9.455991] Bluetooth: HCI device and connection manager initialized
[ 9.455998] Bluetooth: HCI socket layer initialized
[ 9.456001] Bluetooth: L2CAP socket layer initialized
[ 9.456016] Bluetooth: SCO socket layer initialized
[ 9.673364] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[ 9.673366] Bluetooth: BNEP filters: protocol multicast
[ 9.673370] Bluetooth: BNEP socket layer initialized
[ 9.820652] Bluetooth: hci0: RTL: examining hci_ver=06 hci_rev=000a lmp_ver=06 lmp_subver=8821
[ 9.821622] Bluetooth: hci0: RTL: rom_version status=0 version=1
[ 9.821623] Bluetooth: hci0: RTL: loading rtl_bt/rtl8821a_fw.bin
[ 9.828456] Bluetooth: hci0: RTL: loading rtl_bt/rtl8821a_config.bin
[ 9.830156] Bluetooth: hci0: RTL: cfg_sz 10, total sz 17438
[ 10.263579] Bluetooth: hci0: RTL: fw version 0x0e2fa041
[ 39.206147] Bluetooth: RFCOMM TTY layer initialized
[ 39.206155] Bluetooth: RFCOMM socket layer initialized
[ 39.206162] Bluetooth: RFCOMM ver 1.11
Все работает! (openSUSE Перекати-поле)
Прошивка rtl8821a не поставляется с дистрибутивом Linux, если вы видите ошибку под ошибками:
Direct firmware load for rtl_bt/rtl8821a_fw.bin failed with error -2
firmware file rtl_bt/rtl8821a_fw.bin not found
Выполните приведенные ниже команды, чтобы установить микропрограмму.
cd /tmp
# Download rtl8821a_config and rtl8821a_fw from https://github.com/Realtek-OpenSource/android_hardware_realtek
wget https://raw.githubusercontent.com/Realtek-OpenSource/android_hardware_realtek/rtk1395/bt/rtkbt/Firmware/BT/rtl8821a_config
wget https://raw.githubusercontent.com/Realtek-OpenSource/android_hardware_realtek/rtk1395/bt/rtkbt/Firmware/BT/rtl8821a_fw
mv rtl8821a_config /lib/firmware/rtl_bt/rtl8821a_config.bin
mv rtl8821a_fw /lib/firmware/rtl_bt/rtl8821a_fw
sudo modprobe btusb
sudo systemctl start bluetooth.service
hciconfig -a # will show that Bluetooth is up now