Если в мобильник (Nokia N900) вставить ммс-флэшку, то запускается скрипт следующего содержания:
[console]mount -t vfat -o $3,noauto,nodev,noexec,nosuid,noatime,nodiratime,utf8,uid=29999,shortname=mixed,dmask=000,fmask=0133,rodir "$1" "$2" > /dev/null [/console]
То есть он предполагает FAT32 флэшку, разумеетсяесли с этими же параметрами попытаться примонтировать ext3, то ниче не выйдет.
Пока нашел такое решение:
[console]mount -t vfat -o $3,noauto,nodev,noexec,nosuid,noatime,nodiratime,utf8,uid=29999,shortname=mixed,dmask=000,fmask=0133,rodir "$1" "$2" > /dev/null || mount -t ext3 -o rw,noatime,nodiratime,noacl,data=writeback,commit=10 "$1" "$2" > /dev/null[/console]
Сначала пытаемся примонтировать как фат, если mount завершается с ненулевым кодом ошибки, то монтируем как ехт3.
Но это костыль.
В связи с этим, хотелось бы узнать как можно определить тип файловой системы до монтирования?
Редактировать /etc/fstab, сразу оговорюсь тут не варик. Он обновляется и переписывается при перезагрузке какими-то специфичными инитскриптами.
Определить тип файловой системы без монтирования
Мне кажется нужно комбинировать sed и fdisk -l
В связи с этим, хотелось бы узнать как можно определить тип файловой системы до монтирования?
зачем это надо-то?!
вы меня расстраиваете :( :( :(
мне сажЪ не хватит :[
просто не пишите своё -t, и тогда mount будет сама определять
Если какие-то специфические опции надо (кстати, куда столько-то??!!!) - потом mount -o remount с этими опциями.
1)rw,
2)noatime,
3)nodiratime,
4)noacl,
5)data=writeback,commit=10
1) дефолт
2,3) ненужно всегда. Иногда - опасно.
4,5) НЕХ
$3,noauto,nodev,noexec,nosuid,noatime,nodiratime,utf8,uid=29999,shortname=mixed,dmask=000,fmask=0133,rodir
facepalm
ЗАЧЕМ????
ЗЫЖ noacl это тоже дефолт ваще-то
просто не пишите своё -t
Если б все так просто.
Ладно, бес с ним, с "-t". А вот если не написать dmask=000,fmask=0133, то в гуе телефона нельзя будет создать ни папку ни файл, так как монтируется от рута, а гуи работает от юзера.
2,3) ненужно всегда. Иногда - опасно.
Доктор, это же не сервер, это телефон! Тут несколько иные "опасно" и "безопасно" и уж совершенно другие "производительно " и "медленно". Он и так еле ворочается, а если еще diratime и atime да еще и commit каждые полсекунды... ну вы понимаете.
А насчет дефолтов, вы кстати тоже не совсем правы, тут своя нокиевская сборка mount (точнее говоря busybox), у нее свои дефолты.
Вы б лучше решение какое предложили, чем сажей разбрасываться.
Если какие-то специфические опции надо (кстати, куда столько-то??!!!) - потом mount -o remount с этими опциями.
Хотя, вот это возможно подойдет.
Только все равно, нужно будет определить тип файловой системы. Но тут можно grep /proc/self/mounts и далее sed или там еще что... придумать можно. Но только получается еще больший костыль.
А вот если не написать dmask=000,fmask=0133, то в гуе телефона нельзя будет создать ни папку ни файл, так как монтируется от рута, а гуи работает от юзера.
надоело...
Доктор, это же не сервер, это телефон! Тут несколько иные "опасно" и "безопасно" и уж совершенно другие "производительно " и "медленно". Он и так еле ворочается, а если еще diratime и atime да еще и commit каждые полсекунды... ну вы понимаете.
да-да... а я не про то, что взломают, я про то, что файлы теряются.
Вы б лучше решение какое предложили, чем сажей разбрасываться.
прочитать man mount наконец :[
да-да... а я не про то, что взломают, я про то, что файлы теряются.
Ды я тоже не об этом. Просто файлы не спроста теряются. Для этого должно что-то произойти типа отключения электричества.
Но, когда в доме отключают электричество, мой телефон продолжает работать. Не, я серьезно, продолжает.
Если садится батарейка ниже определенного уровня, то телефон запускает /sbin/shutdown -h. Так что, тож не страшно.
прочитать man mount наконец mad
А вы и впрямь считаете, что я не читал man mount?
Ды и вообще вопрос был совершенно конкретный
как можно определить тип файловой системы до монтирования?
ну можно прочитать командой dd первый сектор диска. и прочитать там магическую сигнатуру.
tune2fs -l
Мне кажется нужно комбинировать sed и fdisk -l
Что-то даже и не сразу обратил внимание на ваш пост.
Пожалуй, это то что надо.
Vadimsky пишет:
Мне кажется нужно комбинировать sed и fdisk -l
Что-то даже и не сразу обратил внимание на ваш пост.
Пожалуй, это то что надо.
Блин, в телефоне не предусмотрен fdisk )-: Что впрочем логично.
ну можно прочитать командой dd первый сектор диска. и прочитать там магическую сигнатуру.
Надо попробовать.
root@ksu:~# dd if=/dev/sdb5 bs=1111 count=1 | hexdump
1+0 записей считано
1+0 записей написано
скопировано 1111 байт (1,1 kB), 5,2918e-05 c, 21,0 MB/c
0000000 0000 0000 0000 0000 0000 0000 0000 0000
*
0000400 dd30 0001 721e 0007 5f4e 0000 0fcc 0005
0000410 61c1 0001 0000 0000 0002 0000 0002 0000
0000420 8000 0000 8000 0000 1fd0 0000 62ce 4d97
0000430 6150 4d97 0002 0022 ef53 0001 0001 0000
0000440 6150 4d97 4e00 00ed 0000 0000 0001 0000
0000450 0000 0000 000b 0000
0000457
[console]# dd if=/dev/sdb1 bs=2 skip=540 count=1 | hexdump | sed '/ ef53/q0;q1' && echo "EXT"[/console]
В связи с этим, хотелось бы узнать как можно определить тип файловой системы до монтирования?
В фряхе делаю так если забыл что за фс на диске, а смонтировать не могу, или не хочу, так что если телефон есть в /dev то так:
file - < /dev/фс
file - < /dev/фс
Пасиба. Седня попробую завернуть в скрипт.
[console] #!/bin/sh
if file - < $1 | grep ext3 > /dev/null; then
modprobe ext3
mount -t ext3 -o rw,noatime,nodiratime,noacl,data=writeback,commit=10 $1 $2 > /dev/null
exit 0
elif file - < $1 | grep ext2 > /dev/null; then
modprobe ext2
mount -t ext2 -o rw,noatime,nodiratime,noacl,data=writeback,commit=10 $1 $2 > /dev/null
exit 0
elif file - < $1 | grep FAT > /dev/null; then
mount -t vfat -o $3,noauto,nodev,noexec,nosuid,noatime,nodiratime,utf8,uid=29999,shortname=mixed,dmask=000,fmask=0133,rodir $1 $2 > /dev/null
exit 0
fi
[/console]
Вот конечный скрипт.
Можно ставить [решено]
file - < $1
S="`file - < $1`"
...
if echo "$S" | grep -q "ext3"; then
быстрее... и Ъ