나는 안드로이드 시대 이전에 흔했던 리눅스 미디어 플레이어를 가지고 있습니다. Linux Venus 2.6.12.6을 실행하는 MIPS이며 SATA 2개, USB 2개 및 SD 카드 포트 1개가 있습니다. 플래시 메모리는 매우 제한적이므로 SD 카드에 optware
을 설치 ssh
하고nano
ln -s /tmp/usbmounts/sdb1/opt /opt
SD 카드를 미디어로 사용하지 않으므로 SD 카드는 영원히 연결되어 있을 수 있습니다. 다른 USB를 연결하지 않거나 다른 USB를 연결하면 잘 작동합니다뒤쪽에시작합니다. 하지만 다른 USB를 연결하면앞으로sdc
시작 시 SD 카드 포트는 항상 마운트 되거나 sdd
링크가 작동하지 않습니다. 나는 (일종의) 시작 시 /opt
대상을 지정하고 이에 따라 링크하는 스크립트를 배치하여 이 문제를 해결했습니다. 그러나 시작 후 마운트 지점을 변경할 수 있는 다른 활동이 있다는 것을 발견했습니다.
플레이어는 주로 이라는 소프트웨어를 실행합니다 Dvdplayer
. 소프트웨어에는 사용자가 재생할 미디어를 선택할 수 있는 화면 메뉴가 있습니다. 별도의 USB 플러그가 없어도 이 메뉴를 호출할 때마다 장착 지점이 바뀌는 것 같습니다. 부팅 후 내 SD 카드가 에 마운트되었다고 가정하고 sdb
메뉴를 호출하면 sdc
( sdb
아무것도)로 변경됩니다. 메뉴를 다시 불러오면 sdd
( sdb
및 sdc
없음)으로 변경됩니다. 메뉴를 세 번째 호출하면 으로 돌아가고 sdc
, 다시 로 돌아가고 sdc
, 사이에는 sdd
다시 sdb
나타나지 않습니다.
인터넷을 검색해 보니 이것이 핫 스왑 가능하다는 것을 알고 소프트웨어를 찾을 수 있었습니다. 하지만 일반적인 리눅스 핫플러그와 달리 소프트레어는 스크립트가 아닌 실행 가능한 elf 파일이고,,,,,, SUBSYSTEM
등 핫플러그와 관련된 시스템 변수를 찾을 수 없습니다. 대신에 들어있습니다. , , 와 같은 빈 폴더가 있습니다. 날짜가 변경되었지만 여전히 비어 있는 유일한 폴더입니다.ACTION
PRODUCT
TYPE
INTERFACE
DEVICE
/sys/kernel/hotplug_seqnum
/tmp/lock/hotplug/convert_tmp
...mount_tmp
...rename_tmp
...volume_lock
mount_tmp
로 이동하여 내 자신의 핫스왑 스크립트를 넣어 보았습니다 /sbin/hotplug
. /sbin/sbin/hotplug
스크립트 /sbin/hotplug
는 다음과 같습니다.
mount / -o remount,rw
echo $* >> /usr/local/etc/init.d/hotplug.log
/sbin/sbin/hotplug $*
하지만 작동하지 않습니다. 메뉴를 호출한 후에는 아무 것도 기록되지 않으며 모든 플러그인 설치가 손실됩니다.
지금 내가 원하는 것은 핫플러그 활동을 캡처하고 /opt를 올바르게 다시 연결하는 것입니다. /opt의 올바른 연결을 보장하기 위한 도움이나 더 나은 방법에 감사드립니다.
답변1
${@}
이것이 쉘 스크립트이고 대신 사용하고 싶다는 점을 분명히 하는 것이 좋습니다 $*
.
#!/bin/sh
mount -o remount,rw /
echo ${@} >/tmp/log.txt
echo >>/tmp/log.txt
env >>/tmp/log.txt # if /tmp is writable or tmpfs
exec /sbin/sbin/hotplug "${@}"
시스템이 정상이면 작동할 것입니다. 그러나 많은 임베디드 제품의 경우에는 그렇지 않습니다. 경계하십시오.