Рейтинг:1

Отключить и привязать драйвер во время запуска 20.04.3 LTS

флаг id

Моя система работает под управлением 20.04.3 LTS, и я использую ее в качестве Plex Media Server (среди других служб). Я использую связанную сеть для адаптивной балансировки нагрузки в системе. Я сталкиваюсь с проблемой в системе, когда она получает новое обновление ядра.

В системе 2 сетевые карты. Один находится в слоте (контроллер RTL8169 PCI Gigabit Ethernet), а другой встроен (контроллер RTL8111/8168/8411 PCI Express Gigabit Ethernet). Проблема, с которой я сталкиваюсь, заключается в том, что RTL8111/8168/8411 не нравится драйвер r8169 (будут происходить непредсказуемые вещи, например, невозможность связи с Интернетом), поэтому мне нужно выполнить следующие команды, чтобы отвязать драйвер r8169 и привязать драйвер r8168:

адрес=$(lspci | awk '/8168/ {print "0000:"$1}')
эхо $адрес | sudo tee /sys/bus/pci/drivers/r8169/отвязать
эхо $адрес | sudo tee /sys/bus/pci/drivers/r8168/bind

После выполнения этих команд драйвер правильно отображается в лшв команда, и у меня нет никаких проблем, когда правильный драйвер установлен для правильной карты:

terrance@Intrepid:~$ sudo lshw -C сеть
  *-сеть                 
       описание: Интерфейс Ethernet
       продукт: RTL8111/8168/8411 Контроллер PCI Express Gigabit Ethernet
       поставщик: Realtek Semiconductor Co., Ltd.
       физический идентификатор: 0
       информация о шине: pci@0000:02:00.0
       логическое имя: eth0
       версия: 03
       серийный номер: c8:3a:35:d6:ec:a0
       размер: 1 Гбит/с
       пропускная способность: 1 Гбит/с
       ширина: 64 бита
       часы: 33 МГц
       возможности: pm msi pciexpress msix vpd bus_master cap_list ethernet физический tp 10bt 10bt-fd 100bt 100bt-fd 1000bt-fd автосогласование
       конфигурация: автосогласование=по широковещанию=да драйвер=r8168 версия драйвера=8.048.00-дуплекс NAPI=полная задержка=0 ссылка=да многоадресная рассылка=да порт=ведомая витая пара=да скорость=1 Гбит/с
       ресурсы: irq:25 ioport:d800(size=256) память:fdfff000-fdffffff память:fdff8000-fdffbfff
  *-сеть
       описание: Интерфейс Ethernet
       продукт: Контроллер RTL8169 PCI Gigabit Ethernet
       поставщик: Realtek Semiconductor Co., Ltd.
       физический идентификатор: 5
       информация о шине: pci@0000:03:05.0
       логическое имя: eth1
       версия: 10
       серийный номер: bc: 5f: f4: 79: 66: fe
       размер: 1 Гбит/с
       пропускная способность: 1 Гбит/с
       ширина: 32 бита
       часы: 66 МГц
       возможности: pm bus_master cap_list rom ethernet Physical tp mii 10bt 10bt-fd 100bt 100bt-fd 1000bt 1000bt-fd автосогласование
       конфигурация: автосогласование=на широковещании=да драйвер=r8169 версия драйвера=5.13.0-30-общий дуплекс=полная задержка=64 ссылка=да максимальная задержка=64 миннт=32 многоадресная передача=да порт=ведомая витая пара=да скорость=1 Гбит/с
       ресурсы: irq:20 ioport:e800(size=256) память:febffc00-febffcff память:febc0000-febdffff
  *-сеть
       описание: Интерфейс Ethernet
       физический идентификатор: 1
       логическое имя: bond0
       серийный номер: bc: 5f: f4: 79: 66: fe
       возможности: Ethernet физический
       конфигурация: автосогласование=выкл. трансляция=да драйвер=связывание версия драйвера=5.13.0-30-универсальный дуплекс=полная прошивка=2 ip=10.0.0.220 ссылка=да мастер=да многоадресная рассылка=да

Это длится через перезагрузки просто отлично до следующего обновления ядра. Но если я запускаю те же самые команды в сценарии, он говорит мне: «Нет такого устройства».

terrance@Intrepid:~/bin$ sudo ./driver_fix.bsh 
0000:02:00.0
тройник: /sys/bus/pci/drivers/r8169/unbind: нет такого устройства
0000:02:00.0
tee: /sys/bus/pci/drivers/r8168/bind: нет такого устройства

Каким будет лучший способ сделать это постоянным, чтобы оно либо вносило это изменение во время запуска, либо изменялось только при обновлении ядра?

Спасибо!

Рейтинг:0
флаг id

Я смог решить свою проблему, создав файл для udev, который выполняет отвязку и привязку во время запуска.

Я создал файл с именем /etc/udev/rules.d/99-mydriver.rules и я добавил в файл следующие строки:

SUBSYSTEM=="net", ACTION=="unbind", KERNELS=="0000:02:00.0" RUN+="/bin/bash -c 'echo 0000:02:00.0 > /sys/bus/pci/drivers/ r8169/развязать'"
SUBSYSTEM=="net", ACTION=="bind", KERNELS=="0000:02:00.0" RUN+="/bin/bash -c 'echo 0000:02:00.0 > /sys/bus/pci/drivers/ r8168/бинд'"

Теперь каждый раз, когда система загружается, кажется, что правильный драйвер устанавливается для соответствующей сетевой карты.

Ответить или комментировать

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