boris_r_v Posted December 27, 2011 Share Posted December 27, 2011 Написал мне тут в личку один участник нашего форума, были у него проблемы с монтированием флеша, и чтобы челу ответить я разобрался как оно происходит. У меня все сразу заработало, поэтому не лез тудой. Так вот После загрузки ядра и передачи управления инит скрипту загрузки системы, по концови запускается скрипт /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
MuadDib Posted December 28, 2011 Share Posted December 28, 2011 Присоединяюсь к просьбе о пересмотре данного момента в прошивке девайса. Наличие висящего в воздухе симлинка (в случае неудачи при монтировании SD-карты) ничего не дает, помимо введения пользователя в заблуждение. Более того, опытным путем удалось выяснить, что упомянутый в данном топике скрипт sdpnp пытается монтировать файловую систему карты памяти с устройства /dev/mmc1, а в моем случае это удается сделать только командой mount /dev/mmc /mnt/sd. Файл мегаскрипта находится на read only - файловой системе. Таким образом, пользователю предлагается методом тыка определить, какое же устройство соотносится с SD картой, написать другой скрипт монтирования карточки и вызвать его из соответствующего скрипта в /etc/init.d, заменив вызов sdpnp. Использование аббревиатуры pnp в данном контексте напоминает тонкое издевательство. Link to comment
Komantsev Posted January 9, 2012 Share Posted January 9, 2012 Добрый день, Я уточнил по поводу прошивки - к сожалению, пока новую прошивку выпускать не планируется. Подойдёт ли в качестве временного варианта перемонтировать файловую систему как read/write # mount –o remount,rw / и отредактировать sdpnp? Link to comment
boris_r_v Posted January 20, 2012 Author Share Posted January 20, 2012 Проблема не в этом да и ладно, актуальность спала, а кому надо ,если умные, и так поймут. А перемонитировать корень в чтение-запись - самый верный путь убить зверька, умрет не сразу, но в самый не подходящий момент, после сброса питания, во время загрузки корневая фс не пройдет проверку, а это к поезке, для замены зверька. Поэтому низзя... Мир. Link to comment
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now