스크립트를 컴파일하고 시스템 시작 전(또는 도중)에 실행되도록 시스템에 추가합니다.

스크립트를 컴파일하고 시스템 시작 전(또는 도중)에 실행되도록 시스템에 추가합니다.

정말 어떻게 해야할지 모르겠어서 여기 계신 모든 분들께 도움을 요청합니다

간단히 말해서, 배경 세부정보

내 Raspberry Pi 5에는 USB3 2.5gb NIC가 연결되어 있습니다.(이 SBC에는 자체 1GB NIC도 내장되어 있습니다). 운영 체제 Raspberry Pi OS Lite 64비트를 설치했습니다.데비안 버전: 12 (nerdy)- 예, 모든 것이 업데이트되었습니다.

네트워크 및 네트워크 카드가 구성됨자세한 내용/게시물은 다음과 같습니다.

  • USB3 NIC를 기본/기본 인터페이스로 사용하고 싶습니다.

질문; 부팅/재시작할 때마다(종종 종료 및 시작도 가능)USB3 NIC를 제거했다가 다시 연결하여 물리적으로 연결을 끊어야 했습니다.

인터넷에서 검색하면서 몇 가지 명령을 제안하는 게시물을 찾았습니다.내 생각엔이는 스크립트에 스택되어 실행될 수 있습니다. 우분투,뿌리그리고이 기사는 GeekLand에서 발췌한 것입니다.모든 것이 자세히 설명되어 있습니다.스페인어로 작성되었으므로 Google 번역 등을 사용하세요.

내 질문은; 누군가 친절하게 이 작업을 보다 영구적인 방식으로 수행하고 이를 내 시스템에 구현할 수 있는 방법을 설명해 줄 수 있습니까?

나의 궁극적인 목표는;어떤 방식으로든 내 시스템 부팅 스크립트에 영향을 미쳐usb3nic.shUSB3 NIC 연결을 끊었다가 다시 연결하기 위한 코드가 포함된 스크립트(그것이 최선의 해결책이라면)스크립트를 시작하기 전에 실행됩니다내 논리적인 생각으로는 이것이 내가 겪고 있는 문제를 해결할 수 있을 것입니다. 이것은 일종의 커널 문제인 것 같습니다..

나는 또한 모든 사람들에게 컴파일을 도와달라고 친절하게 요청합니다.usb3nic.sh이에 대한 나의 지식은 매우 제한되어 있기 때문에 이는 시스템 시작을 방해하기 때문에 기본적으로 끔찍한 부분입니다.

이것이 출력이다그렇게 생각해요이러한 스크립트를 작성하려면 다음이 필요합니다.

sudo lsusb
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 003: ID 0bda:8156 Realtek Semiconductor Corp. USB 10/100/1G/2.5G LAN
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
sudo lsusb -t
/:  Bus 04.Port 1: Dev 1, Class=root_hub, Driver=xhci-hcd/1p, 5000M
/:  Bus 03.Port 1: Dev 1, Class=root_hub, Driver=xhci-hcd/2p, 480M
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci-hcd/1p, 5000M
    |__ Port 1: Dev 3, If 0, Class=Vendor Specific Class, Driver=r8152, 5000M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci-hcd/2p, 480M
ls -l /sys/bus/usb/devices/
total 0
lrwxrwxrwx 1 root root 0 Apr 28 14:24 1-0:1.0 -> ../../../devices/platform/axi/1000120000.pcie/1f00200000.usb/xhci-hcd.0/usb1/1-0:1.0
lrwxrwxrwx 1 root root 0 Apr 28 14:24 2-0:1.0 -> ../../../devices/platform/axi/1000120000.pcie/1f00200000.usb/xhci-hcd.0/usb2/2-0:1.0
lrwxrwxrwx 1 root root 0 Apr 28 14:24 2-1 -> ../../../devices/platform/axi/1000120000.pcie/1f00200000.usb/xhci-hcd.0/usb2/2-1
lrwxrwxrwx 1 root root 0 Apr 28 14:24 2-1:1.0 -> ../../../devices/platform/axi/1000120000.pcie/1f00200000.usb/xhci-hcd.0/usb2/2-1/2-1:1.0
lrwxrwxrwx 1 root root 0 Apr 28 14:24 3-0:1.0 -> ../../../devices/platform/axi/1000120000.pcie/1f00300000.usb/xhci-hcd.1/usb3/3-0:1.0
lrwxrwxrwx 1 root root 0 Apr 28 14:24 4-0:1.0 -> ../../../devices/platform/axi/1000120000.pcie/1f00300000.usb/xhci-hcd.1/usb4/4-0:1.0
lrwxrwxrwx 1 root root 0 Apr 28 14:24 usb1 -> ../../../devices/platform/axi/1000120000.pcie/1f00200000.usb/xhci-hcd.0/usb1
lrwxrwxrwx 1 root root 0 Apr 28 14:24 usb2 -> ../../../devices/platform/axi/1000120000.pcie/1f00200000.usb/xhci-hcd.0/usb2
lrwxrwxrwx 1 root root 0 Apr 28 14:24 usb3 -> ../../../devices/platform/axi/1000120000.pcie/1f00300000.usb/xhci-hcd.1/usb3
lrwxrwxrwx 1 root root 0 Apr 28 14:24 usb4 -> ../../../devices/platform/axi/1000120000.pcie/1f00300000.usb/xhci-hcd.1/usb4
lsusb -v
Bus 002 Device 003: ID 0bda:8156 Realtek Semiconductor Corp. USB 10/100/1G/2.5G LAN
Couldn't open device, some information will be missing
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               3.20
  bDeviceClass            0
  bDeviceSubClass         0
  bDeviceProtocol         0
  bMaxPacketSize0         9
  idVendor           0x0bda Realtek Semiconductor Corp.
  idProduct          0x8156
  bcdDevice           31.00
  iManufacturer           1 Realtek
  iProduct                2 USB 10/100/1G/2.5G LAN
  iSerial                 6 001000001
  bNumConfigurations      3
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x0039
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0
    bmAttributes         0xa0
      (Bus Powered)
      Remote Wakeup
    MaxPower              256mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           3
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass    255 Vendor Specific Subclass
      bInterfaceProtocol      0
      iInterface              0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0400  1x 1024 bytes
        bInterval               0
        bMaxBurst               3
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x02  EP 2 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0400  1x 1024 bytes
        bInterval               0
        bMaxBurst               3
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x83  EP 3 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0002  1x 2 bytes
        bInterval              11
        bMaxBurst               0
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x0068
    bNumInterfaces          2
    bConfigurationValue     2
    iConfiguration          0
    bmAttributes         0xa0
      (Bus Powered)
      Remote Wakeup
    MaxPower              256mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         2 Communications
      bInterfaceSubClass     13
      bInterfaceProtocol      0
      iInterface              5
      CDC Header:
        bcdCDC               1.10
      CDC Union:
        bMasterInterface        0
        bSlaveInterface         1
      CDC Ethernet:
        iMacAddress                      3 (??)
        bmEthernetStatistics    0x0031501f
        wMaxSegmentSize               1518
        wNumberMCFilters            0x8000
        bNumberPowerFilters              0
      CDC NCM:
        bcdNcmVersion        1.00
        bmNetworkCapabilities 0x2b
          8-byte ntb input size
          max datagram size
          net address
          packet filter
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x83  EP 3 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0010  1x 16 bytes
        bInterval              11
        bMaxBurst               0
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       0
      bNumEndpoints           0
      bInterfaceClass        10 CDC Data
      bInterfaceSubClass      0
      bInterfaceProtocol      1
      iInterface              0
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       1
      bNumEndpoints           2
      bInterfaceClass        10 CDC Data
      bInterfaceSubClass      0
      bInterfaceProtocol      1
      iInterface              4
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0400  1x 1024 bytes
        bInterval               0
        bMaxBurst               3
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x02  EP 2 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0400  1x 1024 bytes
        bInterval               0
        bMaxBurst               3
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x0062
    bNumInterfaces          2
    bConfigurationValue     3
    iConfiguration          0
    bmAttributes         0xa0
      (Bus Powered)
      Remote Wakeup
    MaxPower              256mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         2 Communications
      bInterfaceSubClass      6 Ethernet Networking
      bInterfaceProtocol      0
      iInterface              5
      CDC Header:
        bcdCDC               1.10
      CDC Union:
        bMasterInterface        0
        bSlaveInterface         1
      CDC Ethernet:
        iMacAddress                      3 (??)
        bmEthernetStatistics    0x0031501f
        wMaxSegmentSize               1518
        wNumberMCFilters            0x8000
        bNumberPowerFilters              0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x83  EP 3 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0010  1x 16 bytes
        bInterval              11
        bMaxBurst               0
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       0
      bNumEndpoints           0
      bInterfaceClass        10 CDC Data
      bInterfaceSubClass      0
      bInterfaceProtocol      0
      iInterface              0
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       1
      bNumEndpoints           2
      bInterfaceClass        10 CDC Data
      bInterfaceSubClass      0
      bInterfaceProtocol      0
      iInterface              4
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0400  1x 1024 bytes
        bInterval               0
        bMaxBurst               3
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x02  EP 2 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0400  1x 1024 bytes
        bInterval               0
        bMaxBurst               3

매우 감사합니다!

업데이트: 요청한 출력을 여기 댓글에 입력하세요.

ls -1 /etc/systemd/network/
73-usb-net-by-mac.link
99-default.link
enp0.network
enp1.network
lo.network
---------------------------------------------
/etc/systemd/network/enp0.network
[Match]
#Name=eth0
MACAddress=2c:cf:67:2f:cf:9a
Type=ether
RequiredForOnline=no

[Network]
DHCP=yes

[DHCPv4]
RouteMetric=100
---------------------------------------------
/etc/systemd/network/enp1.network
[Match]
#Name=eth1
MACAddress=00:24:27:88:29:17
Type=ether
RequiredForOnline=no

[Address]
Address=10.0.0.10/24
Broadcast=true
RouteMetric=10

[Network]
DHCP=no
DNS=1.1.1.1

[Route]
Gateway=10.0.0.1
Metric=10
---------------------------------------------
ip l
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT group default qlen 1000
    link/ether 2c:cf:67:2f:cf:9a brd ff:ff:ff:ff:ff:ff
---------------------------------------------
ip r
nothing, not even error or something
---------------------------------------------
lsusb
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 002: ID 0bda:8151 Realtek Semiconductor Corp. RTL8151 Adapteon Business Mobile Networks BV
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 002: ID 0b05:1a07 ASUSTek Computer, Inc. ROG STRIX SCOPE RX TKL WIRELESS DELUXE
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub



대규모 업데이트가 필요한 시점입니다 2024-04-30

하나고쳐 쓰다관심이 있으신 분들과도움 요청남은 문제를 해결하는 방법을 아는 사람이 있으면 피드백을 요청하세요.

고쳐 쓰다 정말 상상할 수 없는 것들을 보관해두었습니다... 수표에 대한 자세한 내용여기

sudo apt-get update
sudo apt-get install git -y
git config --global user.name "YourGitHudUserName"
git config --global user.email "YourRegisterdEmailAdressOnGitHudAccount"
sudo apt-get install libusb-1.0-0-dev
sudo git clone https://github.com/mvp/uhubctl
cd uhubctl
sudo make
sudo make install

그런 다음

ip a > status_before_uhubctl.txt
sudo uhubctl -l 1 -a 0 > output_of_uhubctl.txt
ip a > status_after_uhubctl.txt

이것은 로그입니다

status_before_uhubctl.txt

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute
       valid_lft forever preferred_lft forever
2: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN group default qlen>
    link/ether 2c:cf:67:2f:cf:9a brd ff:ff:ff:ff:ff:ff

uhubctl 출력.txt

Current status for hub 2 [1d6b:0003 Linux 6.6.28+rpt-rpi-2712 xhci-hcd xHCI Host Controller xhci-hcd>
  Port 1: 0203 power 5gbps U0 enable connect [0bda:8151 Realtek USB 10/100/1G/2.5G LAN 001000001]
Sent power off request
New status for hub 2 [1d6b:0003 Linux 6.6.28+rpt-rpi-2712 xhci-hcd xHCI Host Controller xhci-hcd.0, >
  Port 1: 0080 off
Current status for hub 1 [1d6b:0002 Linux 6.6.28+rpt-rpi-2712 xhci-hcd xHCI Host Controller xhci-hcd>
  Port 1: 0100 power
  Port 2: 0103 power enable connect [0b05:1a07 ASUSTeK ROG STRIX SCOPE RX TKL WIRELESS DELUXE]
Sent power off request
New status for hub 1 [1d6b:0002 Linux 6.6.28+rpt-rpi-2712 xhci-hcd xHCI Host Controller xhci-hcd.0, >
  Port 1: 0000 off
  Port 2: 0000 off

status_after_uhubctl.txt

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute
       valid_lft forever preferred_lft forever
2: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000
    link/ether 2c:cf:67:2f:cf:9a brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:24:27:88:29:17 brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.10/24 metric 10 brd 10.0.0.255 scope global eth1
       valid_lft forever preferred_lft forever
    inet6 fd75:a6e1:4b04:360:224:27ff:fe88:2917/64 scope global dynamic mngtmpaddr noprefixroute
       valid_lft 1758sec preferred_lft 1758sec
    inet6 fe80::224:27ff:fe88:2917/64 scope link
       valid_lft forever preferred_lft forever

당신이 본대로이더넷 1있다위로즉, NIC를 물리적으로 제거했다가 다시 연결할 필요가 없습니다.

지금은돕다섹션, 누군가 내가 어떻게 이 문제를 해결하고 제거할 수 있는지 설명해 줄 수 있나요?아래를 참조하세요통나무 또는 아마도나는 systemd-networkd를 사용하고 있기 때문에 위의 명령(기본적으로 USB 포트의 전원 주기)을 서비스로 부팅 스크립트에 넣는 것이 해결책이었습니다. 이 접근법은 내가 아는 것 중 최고는 아닐 수도 있지만 효과는 있을 것입니다."systemd-networkd-wait-online.service를 시작할 수 없습니다."한번만. (아니면 제가 완전히 틀렸나요?)

가능하다면 저를 도와주세요!

여기있어통나무

systemctl status systemd-networkd-wait-online.service
× systemd-networkd-wait-online.service - Wait for Network to be Configured
     Loaded: loaded (/lib/systemd/system/systemd-networkd-wait-online.service; enabled; preset: disabled)
    Drop-In: /etc/systemd/system/systemd-networkd-wait-online.service.d
             └─override.conf
     Active: failed (Result: exit-code) since Tue 2024-04-30 11:14:08 CEST; 24min ago
       Docs: man:systemd-networkd-wait-online.service(8)
    Process: 416 ExecStart=/lib/systemd/systemd-networkd-wait-online (code=exited, status=1/FAILURE)
   Main PID: 416 (code=exited, status=1/FAILURE)
        CPU: 9ms

Apr 30 11:12:07 Pi5 systemd[1]: Starting systemd-networkd-wait-online.service - Wait for Network to be Configured...
Apr 30 11:14:08 Pi5 systemd-networkd-wait-online[416]: Timeout occurred while waiting for network connectivity.
Apr 30 11:14:08 Pi5 systemd[1]: systemd-networkd-wait-online.service: Main process exited, code=exited, status=1/FAILURE
Apr 30 11:14:08 Pi5 systemd[1]: systemd-networkd-wait-online.service: Failed with result 'exit-code'.
Apr 30 11:14:08 Pi5 systemd[1]: Failed to start systemd-networkd-wait-online.service - Wait for Network to be Configured.

답변1

프로그램의 출력은 다음과 같습니다 lsusb.

Bus 002 Device 003: ID 0bda:8156 Realtek Semiconductor Corp. USB 10/100/1G/2.5G LAN

출력을 살펴보십시오.

ls -1ong /sys/bus/usb/devices/

이 경로는 /sys/devices/pci000:00/*PCI 시스템 버스의 장치를 나타냅니다. (메인보드 데이터는 "버스"라는 지정된 경로를 통해 전송됩니다.)

Sysfs는 가상 파일 시스템입니다커널에서 사용됩니다. 장치 및 드라이버에 대한 정보와 시스템에 연결된 장치를 구성하고 제어하는 ​​데 사용되는 일부 수정 가능한 정보입니다.

[Unit]
Description=Reset usb2 on startup

[Service]
ExecStart=bash -c "echo '0' > /sys/bus/usb/devices/usb2/power/autosuspend_delay_ms" && bash -c "echo 'auto' > /sys/bus/usb/devices/usb2/power/control
Type=oneshot
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

파일 을 만듭니다 .service. 위의 텍스트를 복사하고 다음 명령을 실행합니다.

sudo nano /etc/systemd/system/usb_reset.service

이제 텍스트를 nano에 붙여넣으세요.
저장 및 종료. (Ctrl+S>>입력하다>Ctrl+X)
이제 다음 두 명령을 실행해 보세요.

새 .service 파일을 초기화하고 서비스를 시작합니다.

sudo systemctl daemon-reload
sudo systemctl enable usb_reset.service

마치다! 그러면 ExecStart=.service 파일의 명령이 실행되고 usb2부팅할 때마다 자동으로 재설정됩니다.

관련 정보