Jump to content
Форум по продукции MOXA

монтирование sd-card, UC-7112 plus


Recommended Posts

Написал мне тут в личку один участник нашего форума, были у него проблемы с монтированием флеша, и чтобы челу ответить я разобрался как оно происходит.

У меня все сразу заработало, поэтому не лез тудой.

Так вот

После загрузки ядра и передачи управления инит скрипту загрузки системы, по концови запускается скрипт /bin/sdpnp, следующего содержания

root@Moxa:~# cat /bin/sdpnp 
#!/bin/sh
case "$ACTION" in
'add')
if ! [ -d /var/sd ]; then
	mkdir /var/sd
fi
mount /dev/mmc1 /mnt/sd
str=`mount | grep mmc1`
if [ "$str" == "" ]; then
	rm -fr /var/sd
fi
;;
'remove')
sleep 1
umount /mnt/sd
rm -fr /var/sd
;;
*)
;;
esac
exit 1

 

вот тут происходит создания папки куда замонтируется флеш

if ! [ -d /var/sd ]; then
	mkdir /var/sd
fi

 

пока все отлично....

но вот следующая строка - это шах и мат логике

mount /dev/mmc1 /mnt/sd

 

монтируем флеш не в ту папку которую создали, а в другую /mnt/sd --- пц.пц.пц

...как спросит внимательный читатель,

а вот так

root@Moxa:~# ls -l /mnt/
drwxr-xr-x    2 root     root            0 Jun  2  2009 defdisk
lrwxrwxrwx    1 root     root           12 Jun  5  2009 ramdisk -> /var/ramdisk
lrwxrwxrwx    1 root     root            7 Jun  5  2009 sd -> /var/sd
root@Moxa:~# 

оказывается /mnt/sd - это симилинк на /var/sd, и этот симилинк присутвует всегда, вот цели симилинка может и не быть.

Симилинк видимо записан в корневой ФС, которая разворачивается при старте зверька, и поэтому все работает....

В доказательство сего провел эксперимент: изъял флешку из зверька и запутил его, - вот вывод

root@Moxa:~# ls -l /var
drwx------    2 root     root         1024 Dec 10  2005 empty
drwxrwxrwx    3 root     root         1024 Dec 26  2005 lib
drwxrwxrwx    2 root     root         1024 Dec 10  2005 lock
drwxrwxrwx    3 root     root         1024 Dec 10  2005 log
drwxrwxrwx    2 root     root         1024 Dec 27 19:49 run
drwxrwxrwx    2 root     root         1024 Dec 10  2005 tmp
root@Moxa:~# ls -l /mnt
drwxr-xr-x    2 root     root            0 Jun  2  2009 defdisk
lrwxrwxrwx    1 root     root           12 Jun  5  2009 ramdisk -> /var/ramdisk
lrwxrwxrwx    1 root     root            7 Jun  5  2009 sd -> /var/sd
root@Moxa:~# 

как видно папки /var/sd - нет, а симилинк на нее есть /mnt/sd.

 

НО если в силу какого то сбоя во время эксплуатации, этот симилинк будет уничтожен и пропадет из корневой ФС, то монтирование не случится

Это и есть логическая ошибка, создаем одну папку, а монтируем в другую...

 

Я все понимаю тестирование на заводе, в мануле написано черным по англицкому, лейте свой софт на внутреннюю флеш, чтобы он быстрей работал(???).

А если он туда не входит, например.

По /bin/sdpnp видно что если софт будет на sd-card, то в один прекрасным миг он просто может не загрузиться, когда пропадет симилинк, понимаю маловероятная ситуевина, НО ...

 

Посему огромная просьба к админам данного форума передать эту инфу разработчикам прошивки и поменять данный скрипт

ну хотябы вот так:

mount /dev/mmc1 /var/sd

или всегда ее монтировать в папку /mnt/sd, которая не будет симилинком, а каталогом

P.S.

Собственно это изменение можно внести и самому, vi есть на борту, а mount -o remount,rw / - нам никто не запретит сделать, только потом обратно не забудьте в ридонли перемонтироваться mount -o remount,ro /

Только делать это в брендовой железяке на 13к - как-то ...

Да и после этого изменения на горячую измелечение, установка флешки не приводит к монтированию отмонтированию флеша

 

Так что делать или не делать решать Вам.

Link to comment

Присоединяюсь к просьбе о пересмотре данного момента в прошивке девайса. Наличие висящего в воздухе симлинка (в случае неудачи при монтировании SD-карты) ничего не дает, помимо введения пользователя в заблуждение.

 

Более того, опытным путем удалось выяснить, что упомянутый в данном топике скрипт sdpnp пытается монтировать файловую систему карты памяти с устройства /dev/mmc1, а в моем случае это удается сделать только командой mount /dev/mmc /mnt/sd. Файл мегаскрипта находится на read only - файловой системе.

 

Таким образом, пользователю предлагается методом тыка определить, какое же устройство соотносится с SD картой, написать другой скрипт монтирования карточки и вызвать его из соответствующего скрипта в /etc/init.d, заменив вызов sdpnp. Использование аббревиатуры pnp в данном контексте напоминает тонкое издевательство.

Link to comment
  • 2 weeks later...

Добрый день,

 

Я уточнил по поводу прошивки - к сожалению, пока новую прошивку выпускать не планируется.

Подойдёт ли в качестве временного варианта перемонтировать файловую систему как read/write

# mount –o remount,rw /

и отредактировать sdpnp?

Link to comment
  • 2 weeks later...

Проблема не в этом да и ладно, актуальность спала, а кому надо ,если умные, и так поймут.

А перемонитировать корень в чтение-запись - самый верный путь убить зверька, умрет не сразу, но в самый не подходящий момент, после сброса питания, во время загрузки корневая фс не пройдет проверку, а это к поезке, для замены зверька.

Поэтому низзя...

Мир.

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...