2022-08-23

[개발노트] stm32mp1 Distro recipe usb0 g_ether 설정 막기.

stm32mp1 distro는 이더넷 가젯이 기본으로 설정되어있다.
usb0로 잡히며, 192.168.7.1 로 설정되고, pc측으로 dhcp ip를 준다
이것은 systemd 의 서비스로 설정되어있고,
usb0 이 잡힐때, 스크립트를 실행하여 수행된다.

g_serial을 우리는 사용해야하는데, 위의 g_ether가 설정되면, 
g_serial관련 커널설정을 하더라도, /dev 안에 ttyGS0가 생성되지 않는다.
g_ether를 사용하지않으면 ttyGS0가 생성되더라. (이유는.....???)

또한 g_ether 커널옵션을 다 끄더라도, disto의 recipe는 남아있다.
이것이 뭐가 문제냐면,

usb modem을 host로 붙이는데, g_ether가 없으므로, 이 모뎀이 usb0로 잡히게 된다.
usb0로 잡히므로 위의 systemd에 의해 ip를 192.168.7.1로 설정해버린다.
그리하여 usb0는 모뎀인데, ip설정은 g_ether대로 설정이 되버리는 상황 발생.

그래서 systemd의 서비스까지 없애줘야한다.

통으로 막으면 흔적이 없어지므로 스크립트만 막는다. 위치는.
 Distribution-Package/openstlinux-5.10-dunfell-mp1-21-11-17/layers/meta-st/meta-st-openstlinux/recipes-bsp/tools/usbotg-gadget-config.bb
1. systemd끄고,
SYSTEMD_AUTO_ENABLE_${PN} = "disable"
2. 네트워크 설정 설치 막고.
#install -m 0644 ${WORKDIR}/53-usb-otg.network ${D}${systemd_unitdir}/network
3. 스크립트 설치 막고.
#install -m 0755 ${WORKDIR}/stm32_usbotg_eth_config.sh ${D}${sysconfdir}/init.d/

# Copyright (C) 2018, STMicroelectronics - All Rights Reserved
# Released under the MIT license (see COPYING.MIT for the terms)

DESCRIPTION = "The goal is to enable USB gadget configuration"

LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"

PV = "1.0"

SRC_URI = " file://usbotg-config.service \
    file://stm32_usbotg_eth_config.sh \
    file://53-usb-otg.network \
    "

S = "${WORKDIR}/git"

inherit systemd update-rc.d

SYSTEMD_PACKAGES += "${PN}"
SYSTEMD_SERVICE_${PN} = "usbotg-config.service"
#SYSTEMD_AUTO_ENABLE_${PN} = "enable" c.h.jung
SYSTEMD_AUTO_ENABLE_${PN} = "disable"

do_install() {
    if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
        install -d ${D}${systemd_unitdir}/system ${D}${base_sbindir} ${D}${systemd_unitdir}/network
        install -m 0644 ${WORKDIR}/usbotg-config.service ${D}${systemd_unitdir}/system
        install -m 0755 ${WORKDIR}/stm32_usbotg_eth_config.sh ${D}${base_sbindir}
        #install -m 0644 ${WORKDIR}/53-usb-otg.network ${D}${systemd_unitdir}/network
    fi

    install -d ${D}${sysconfdir}/init.d
    #install -m 0755 ${WORKDIR}/stm32_usbotg_eth_config.sh ${D}${sysconfdir}/init.d/

}

INITSCRIPT_NAME = "stm32_usbotg_eth_config.sh"
INITSCRIPT_PARAMS = "start 22 5 3 ."

FILES_${PN} += "${systemd_unitdir}/network"

그러면, 모뎀ip잘되고, g_ether막히고. 잘됨.


댓글 2개:

암호화 + base64 하고 쉘스크립트.

 #!/bin/bash # IV와 UserKey를 설정합니다 (아스키 문자열을 그대로 사용). IV="0123456789abcdef"  UserKey="0123456789abcdef" # IV와 UserKey를 16...