AlekseyA,
cat /proc/scsi/usb-storage-*/*
N.B. swap у меня не используется (допаяна память), поэтому его я не предусматривал.
Printable View
AlekseyA,
cat /proc/scsi/usb-storage-*/*
N.B. swap у меня не используется (допаяна память), поэтому его я не предусматривал.
Со свопом, видимо, будет так (нужно подставить еще и свои номера разделов на винчестере):
Мне негде проверить.Code:#!/bin/sh
hdd_guid="05e307020000000000000000"
flash_guid="058f638700000001a211f3f9"
hdd_mount="/home"
hdd_data="part1"
hdd_swap="part2"
flash_mount="/opt"
mnt_options="noatime,nodiratime,rw"
scsi ()
{
hostid=""
for i in 0 1 2 3; do
host="/proc/scsi/usb-storage-$i/$i"
[ -f $host ] && [ ${#1} -eq 24 ] &&
grep "GUID: $1" $host -q &&
grep "Attached: Yes" $host -q &&
hostid=$i &&
break
done
dev="/dev/scsi/host$hostid/bus0/target0/lun0/" && [ -e $dev ] && echo $dev
}
hdd_dev=`scsi $hdd_guid`
flash_dev=`scsi $flash_guid`
echo -e "# device\t\t\t\tMountpoint\tFStype\tOptions\t\t\tDump\tPass#" > /etc/fstab
[ -n "$hdd_dev" ] &&
echo -e $hdd_dev$hdd_data"\t$hdd_mount\t\text3\t$mnt_options\t0\t0" >> /etc/fstab &&
echo -e $hdd_dev$hdd_swap"\tnone\t\tswap\tsw\t0\t0" >> /etc/fstab
[ -n "$flash_dev" ] &&
echo -e $flash_dev"part1\t$flash_mount\t\text3\t$mnt_options\t0\t0" >> /etc/fstab
Поэтому лучше попробовать запустить данный скрипт на работающем роутере и глянуть, правильно ли формируется fstab.
Если нет - поправим :)
Если правильно - можно сохранять его как pre-mount.
AlekseyA, да как запустить....
Создать файл, например:
touch /opt/tmp/vasya
chmod +x /opt/tmp/vasya
Скопировать туда скрипт, прописать свои ГУИДы, разделы и сохранить.
Запустить файл на исполнение:
/opt/tmp/vasya
Затем глянуть cat /etc/fstab и сравнить с выводом /mount
З.Ы. Я так и не понял, сколько разделов с винта нужно монтировать: два или три.
Компетентные товарищи, прошу высказать ваше мнение по поводу такого варианта (по возможности с комментариями):
fstab:
pre-mountPHP Code:
#device Mountpoint FStype Options Dump Pass#
/dev/discs/disc0/part1 none swap sw 0 0
/dev/discs/disc0/part2 /tmp/mnt/disc0_2 ext3 rw,noatime 1 1
/dev/discs/disc0/part3 /tmp/mnt/disc0_3 ext3 rw,noatime 1 1
/dev/discs/disc0/part4 /tmp/mnt/disc0_4 ntfs rw,noatime 1 1
/tmp/mnt/disc0_2/opt /opt none bind,rw,noatime 0 0
/tmp/mnt/disc0_3/torrents /opt/share/torrent/work none bind,rw,noatime 0 0
post-mountPHP Code:
#!/bin/sh
swapon -a
for i in `awk '/ext3/{print($1)}' /etc/fstab` ; do
if [ -b $i ] ; then
grep -q $i /proc/mounts || e2fsck -p $i 2>&1 | logger -t e2fsck
else
logger -t fstab "$i is not attached"
fi
done
pre-shutdownPHP Code:
#!/bin/sh
# swapon /dev/discs/disc0/part1
# mount -o sync,noatime,rw /dev/discs/disc0/part2 /tmp/harddisk
# mount -o bind /tmp/harddisk/opt /opt
# mount -o bind /tmp/mnt/disc0_3/torrents /opt/share/torrent/work
mount -a
/opt/etc/init.d/rc.unslung start
Спасибо.PHP Code:
#!/bin/sh
# Stop All servises
echo "Stop Servises" 2>&1
/opt/etc/init.d/rc.unslung stop
sleep 10s
# Kill procces
echo "Killing Process" 2>&1
lsof -t /dev/discs/disc0/part2 | xargs kill -9
lsof -t /dev/discs/disc0/part3 | xargs kill -9
sleep 2s
# Remount to Read Only
echo "Remount Disks"
for i in `cat /proc/mounts | awk '/ext3/{print($1)}'` ; do
echo "$i" 2>&1
mount -o remount,ro $i
done
# Swap Off
echo "Swap Off" 2>&1
swapoff -a
sleep 2s
echo "Finish!"
А в чем смысл двойного монтирования, тем более в fstab?
Почему сразу так не сделать?
С соответствующим исправлением остального кода.Code:#device Mountpoint FStype Options Dump Pass#
/dev/discs/disc0/part1 none swap sw 0 0
/dev/discs/disc0/part2 /opt ext3 bind,rw,noatime 1 1
/dev/discs/disc0/part3 /torrent ext3 bind,rw,noatime 1 1
/dev/discs/disc0/part4 /tmp/mnt/disc0_4 ntfs ro,noatime 1 1
ntfs ro - читаем о работе линейки Линуксов с ядром 2.4 с данной ФС.
Как примонтировать swap, /opt (на флешке) и отдельный usb-hdd для данных. У меня при каждой загрузке/перегрузке они могут монтировать, а могут не монтироваться. В общем этот процесс проходит нестабильно, и без четкой системы.
Т.е. флешка может стать как /dev/discs/disc0, а винт как /dev/discs/disc1
А после перегрузки они могут поменяться местами, а после нескольких перегузок снова вернуться назад. :-(
Этот вопрос похоже периодически вплывает, но четкого ответа, что нужно сделать то-то так я не нашел.
После чтения форума и уже практически недельного мучанья роутера
(Перестановка флешек, бокса для HDD и добавление активного хаба)
это может быть следствием следующих проблем:
1. К моменту обработки fstab ещё не все usb устройства проинициализированны.
2. Сами устройства, по каким-то причинам, могут определяются контроллером в разно порядке, и потому получают разные номера.
А теперь вопросы:
Что касается первой проблемы.
На форуме мне попадалось предложение вставить задержку (типа: sleep 5) до монтирования устройств, чтобы они точно к этому моменту проинициализировались.
В какой из файлов: pre-boot, post-boot или pre-mount нужно вставить задержку?
По второй проблеме.
Я так понимаю, что нужно смотреть в строну монтирования по серийному номеру или по метке раздела.
Можно ли как-то прописать fstab путь раздела с серийником?
Если нет, то как правильно сделать монтирование устройств по серийному номеру?
Посмотри вот тут: Как зафиксировать порядок USB носителей?
А откуда эти GUIDы брать, чтоб потом запихнуть в скрипт?
Это есть в указанной (Как зафиксировать порядок USB носителей?) теме.
А вот я что не понимаю.
Взял скрипт отсюдаотсюда, изменил GUID добавил пару строк. в общем описал названия своих разделов swap и opt на флешке, и получаю
на строках
следующее:Code:hdd_dev=`scsi $hdd_guid`
flash_dev=`scsi $flash_guid`
Почему?Code:[admin@IGORROUTER root]$ [admin@IGORROUTER root]$ sh /usr/local/sbin/pre-mount
/usr/local/sbin/pre-mount: /usr/local/sbin/pre-mount: 33: /dev/scsi/host1/bus0/target0/lun0/: Permission denied
/usr/local/sbin/pre-mount: /usr/local/sbin/pre-mount: 34: /dev/scsi/host0/bus0/target0/lun0/: Permission denied
[admin@IGORROUTER root]$
Как вылечить?
Я ведь под админом это запускаю.
---------------------
Разобрался.
Глупость написал.
Ошибка закралась в скрипт, при переносе через буфер.
Все заработало.
За основу я взял этот скрипт из темы Как зафиксировать порядок USB носителей?
Ответ на вопрос как получить GUID.
Вот так:
эта команда выведет все, что известно о ваших usb-storage устройствах.Code:cat /proc/scsi/usb-storage-*/*
Вот, что получил я:
У меня подключена флешка и usb-hdd в коробке Transcend StoreJet.Code:[admin@IGORROUTER root]$ cat /proc/scsi/usb-storage-*/*
Host scsi0: usb-storage
Vendor: JMicron
Product: StoreJet Transcend
Serial Number: 608B2FBF0FFF
Protocol: Transparent SCSI
Transport: Bulk
GUID: 152d23290000608b2fbf0fff
Attached: Yes
Port: 2.1
Bus: 01:03.2-2.1
Host scsi1: usb-storage
Vendor: Generic
Product: Mass Storage Device
Serial Number: 39J364SI
Protocol: Transparent SCSI
Transport: Bulk
GUID: 058f638700000000393365d2
Attached: Yes
Port: 1.1
Bus: 01:03.2-1.1
я взял строчки:
GUID: 058f638700000000393365d2
GUID: 152d23290000608b2fbf0fff
и занес их в соотвествующие строчки скрипта.
Кроме того, поскольку у меня и swap и opt находятся на флешке, а hdd я планирую использовать только для данных, то я внес некоторые изменения в сам скрипт.
Вот мой вариант скрипта:
Вот собсвенно и все.Code:#!/bin/sh
# Создание fstab по серийникам подключенных устройств НАЧАЛО
hdd_guid="152d23290000608b2fbf0fff"
flash_guid="058f638700000000393365d2"
hdd_mount="/home"
hdd_data="part1"
hdd_swap="part1"
flash_mount="/opt"
flash_swap="part1"
flash_opt="part2"
mnt_options="noatime,nodiratime,rw"
scsi ()
{
hostid=""
for i in 0 1 2 3; do
host="/proc/scsi/usb-storage-$i/$i"
[ -f $host ] && [ ${#1} -eq 24 ] &&
grep "GUID: $1" $host -q &&
grep "Attached: Yes" $host -q &&
hostid=$i &&
break
done
dev="/dev/scsi/host$hostid/bus0/target0/lun0/" && [ -e $dev ] && echo $dev
}
hdd_dev=`scsi $hdd_guid`
flash_dev=`scsi $flash_guid`
echo -e "# device\t\t\t\tMountpoint\tFStype\tOptions\t\t\tDump\tPass#" > /etc/fstab
[ -n "$flash_dev" ] &&
echo -e $flash_dev$flash_swap"\tnone\t\tswap\tsw\t0\t0" >> /etc/fstab &&
echo -e $flash_dev$flash_opt"\t$flash_mount\t\text3\t$mnt_options\t0\t0" >> /etc/fstab
[ -n "$hdd_dev" ] &&
echo -e $hdd_dev$hdd_data"\t$hdd_mount\t\text3\t$mnt_options\t0\t0" >> /etc/fstab
# Создание fstab по серийникам подключенных usb устройств КОНЕЦ
Имеется постоянно установленная флэшка, во втором USB- гнезде USB-хаб, к которому подключены принтер и накопитель. Принтер и накопитель периодически принудительно отключаются (особенно накопитель, т.к. шумноватый вентилятор). После таких отключений в сетевом окружении на компьютере постоянно меняются названия сетевых ресурсов. То disk0_1, то disk1_1 2_1 и флешка может не показывать наличие файлов.А качалки на компьютере имеют весьма определенные указатели на место скачивания. Файл fstab в роутере отсутствует.
Что можно сделать для того, чтобы не скакали названия сетевых ресурсов при вкл/выкл принтера и накопителя, как жестко прописать их монтирование на роутере?