Eu tenho um media player Linux que era muito comum antes da idade do Android. É um MIPS rodando o Linux Venus 2.6.12.6 e tem 2 portas sata, 2 usb e 1 sdcard. Como a memória flash é muito limitada, instalei optware
, ssh
e nano
no sdcard e coloquei
ln -s /tmp/usbmounts/sdb1/opt /opt
O sdcard pode permanecer plugado para sempre, já que não usarei sdcard para mídia. Ele funciona muito bem se eu não tiver outro usb conectado ou se eu ligar outro usb após boot. Mas se eu ligar outra inicialização usb antes , a porta sdcard sempre será montada em sdc
ou sdd
e, é claro, o link não funcionará. Eu meio que resolvi isso colocando um script na inicialização para localizar /opt
e vincular de acordo. No entanto, descobri que há outra atividade que pode alterar o ponto de montagem após a inicialização.
O player executa principalmente um software chamado Dvdplayer
. Este software tem um menu na tela para o usuário escolher mídia para jogar. Toda vez que esse menu é acessado, o ponto de montagem parece mudar, MESMO SEM qualquer plug-in adicional. Diga se após a inicialização, meu cartão SD está montado em sdb
, depois de acessar o menu, ele mudou para sdc
( sdb
não tem nada). Ao chamar o menu novamente, ele se torna sdd
( sdb
e sdc
não tem nada). Chame o menu na terceira vez, ele volta para sdc
e depois para frente entre sdc
e sdd
, nunca sdb
novamente.
Pesquisando na internet, eu entendo que isso é hotplugging e eu sou capaz de localizar o software. Mas diferente do hotplug linux comum, o softare é um arquivo elf executável em vez de um script, e não consigo encontrar nenhuma variável de sistema relacionada ao hotplug, como SUBSYSTEM
, ACTION
, PRODUCT
, TYPE
, INTERFACE
, DEVICE
etc. Em vez disso, ele possui um número de sequência em /sys/kernel/hotplug_seqnum
. Tem pastas vazias como /tmp/lock/hotplug/convert_tmp
, ...mount_tmp
, ...rename_tmp
e ...volume_lock
. mount_tmp
é a única pasta que tem sua data alterada, mas ainda está sempre vazia.
Eu tentei interceptar o hotplug movendo o /sbin/hotplug
para /sbin/sbin/hotplug
e colocando meu próprio script hotplug em /sbin/hotplug
. O script se parece com isso
mount / -o remount,rw
echo $* >> /usr/local/etc/init.d/hotplug.log
/sbin/sbin/hotplug $*
Mas isso não funciona: depois de chamar o menu, nada foi registrado e todas as montagens de plug-in foram perdidas.
Tudo o que eu queria fazer agora é interceptar as atividades do hotplug e vincular novamente meu / opt corretamente. Aprecie qualquer ajuda ou um método melhor para garantir o link correto para / opt.