PDA

Bekijk de volledige versie : Подумываю о переделке автомонтирования



Oleg
16-12-2007, 13:27
Подумываю о переделке автомонтирования дисков с нынешнего тупого монтирования /tmp/harddisk и последующего создания part1, part2 ...

Хочу сделать, как в нынешних АСУСовых прошивках ( только лучше :)) и сохранить совместимость с /tmp/harddisk.

Идея следующая: будет директория /tmp/disсs в которую будут монтироваться все обнаружные диски так:

/dev/discs/disc0/part1 -> /tmp/discs/disc0/part1
/dev/discs/disc0/part3 -> /tmp/discs/disc0/part3
/dev/discs/disc1/disc -> /tmp/discs/disc1

При этом /tmp/harddisk будет биндится к первому смонтированному разделу, т.е. /dev/discs/disc0/part1, чтобы работали все многочисленные туториалы, которые есть.

Как вам такая идея? :)

В нынешней штатной прошивке иначе: в директории /tmp/harddisk создаются part0, part1, ... куда монтируются все диски.

Зачем это нужно? Чтобы заменить, наконец, встроенный сервер на vsftpd и сделать конфигурацию самбы, как в штатной прошивке.

Апдейт: Подумал ещё. Лучше наверное сделать совместимым с OpenWRT. :)

/dev/discs/disc0/part1 -> /tmp/mnt/disc0_1
/dev/discs/disc0/part3 -> /tmp/mnt/disc0_3
/dev/discs/disc1/disc -> /tmp/mnt/disc1

А mnt побиндить на /tmp/mnt

azhur
16-12-2007, 13:36
Я за. И про замену встроенного сервера на vsftpd - тоже, только чтобы на расширенный билд по возможности, с возможностью перекодировки имён файлов и т.п.

Marks
16-12-2007, 13:50
Обеими руками за!

D_dmitry
16-12-2007, 13:57
а какая самба будет? 2 или 3?

Oleg
16-12-2007, 14:07
а какая самба будет? 2 или 3?
Пока оставить ту, что есть.

lexass
16-12-2007, 14:14
меняй, возражений нет;)

Mam(O)n
16-12-2007, 14:28
А есть возможность научить монтировать из fstab по метке либо по uuid? И отучить его повторно монтировать уже смонтированное в fstab с опцией bind? Или это фича такая? А то если дёргать одно из устройств, то такая вот получается картина:

/dev/discs/disc0/part1 on /opt type ext3 (rw,noatime)
/dev/discs/disc0/part1 on /home type ext3 (rw,noatime)
/dev/discs/disc0/part1 on /home type ext3 (rw,noatime)
/dev/discs/disc0/part1 on /home type ext3 (rw,noatime)

Конечно понятно, что всё это реализуемо скриптами но всё же...

Oleg
16-12-2007, 15:12
А есть возможность научить монтировать из fstab по метке либо по uuid? И отучить его повторно монтировать уже смонтированное в fstab с опцией bind? Или это фича такая? А то если дёргать одно из устройств, то такая вот получается картина:

/dev/discs/disc0/part1 on /opt type ext3 (rw,noatime)
/dev/discs/disc0/part1 on /home type ext3 (rw,noatime)
/dev/discs/disc0/part1 on /home type ext3 (rw,noatime)
/dev/discs/disc0/part1 on /home type ext3 (rw,noatime)

Конечно понятно, что всё это реализуемо скриптами но всё же...
Это надо бизибокс фиксить...

Reyter
16-12-2007, 15:45
Голосую "За".
Вариант OpenWRT мне тоже нравится больше.

Oleg
16-12-2007, 16:03
Это надо бизибокс фиксить...
Глянул последнюю версию. Нет там uuid и label. :(

RadaR
16-12-2007, 21:38
очень даже за!

angel_il
17-12-2007, 01:00
Или это фича такая?
неприятная фича (

angel_il
17-12-2007, 01:07
самбу конечно бы лучше правильную - 3-ю! :)

al37919
17-12-2007, 01:37
Я не силен в терминологии, бо подозреваю, Mam(o)n спрашивал про что то похожее. :) Однако, попробую на образных примерах :) Тем более, что я аккурат сегодня обнаружил в suse любопытную фичу. В /dev/disks при загрузке автоматом создается набор директорий:

by-id
by-label
by-path
by-uuid
например в ls /dev/disks/by-id (с сокращениями ибо все это дело было утроенно) сидят симлинки на:

scsi-SATA_SAMSUNG_SP2504C_S09QJ1HLA01519 -> ../../sda
scsi-SATA_SAMSUNG_SP2504C_S09QJ1HLA01519-part1 -> ../../sda1
scsi-SATA_WDC_WD3200KS-00PFB0_WD-WCAPD2514136 -> ../../sdb
scsi-SATA_WDC_WD3200KS-00PFB0_WD-WCAPD2514136-part1 -> ../../sdb1
В результате имеем, что привычные sda, sdb, ... возникают чудесным образом сами собой (ибо я как раз занимался добавлением sata приводов со сменой порядка подключения и был изрядно удивлен тем, что оно само собой устаканилось)

В общем, в /etc/fstab имеем для примера:

/dev/disk/by-id/scsi-SATA_WDC_WD3200KS-00_WD-WCAPD2514136-part1 / ext3 acl,user_xattr 1 1
/dev/disk/by-id/scsi-SATA_SAMSUNG_SP2504CS09QJ1HLA01519-part1 /windows/P ntfs-3g users,gid=users,fmask=133,dmask=022,locale=ru_RU.U TF-8 0 0
fstab при этом контролируется вручную (какой она была сформирована при первичной установке такой остается до изменений). Короче, вместо /dev/sda (ну или там /dev/discs/disc0) мы употребляем уникальный идентификатор диска, а уж sda или sdb ему быть оно решает самостоятельно.
Вот бы нам так :)
В заключение, подозреваю, что я изобрел велосипед, и это может оказаться уже вполне обыденный путь (прошу сделать скидку, что в области новинок unix я отстал лет эдак на 6-10 :) )

vunder
18-12-2007, 17:27
Я за! Лично мне было неудобно первое время,когда диски монтировались в harddisk/partX

Oleg
18-12-2007, 18:28
Вот бы нам так :)
Угу. :) Я об этом думаю, но пока ничего красивого и простого не придумал. Получить UUID и Label в принципе не сложно, сложно сделать это в нужное время. :) Надо добавлять в ядро нормальный плаг-энд-плей для разделов диска.

nightrus
18-12-2007, 19:56
а поддержку SMART можно врубить? или это из-за того, что через юсб, не поддерживается?

ghost_ufa
06-02-2009, 13:47
желательно - из скрипта. А то pre-mount и post-mount могут выполняться неоднократно за сеанс, например при подключении новой флешки. А продвинутые скрипты, в коих системные сервисы запускаются из post-mount, от такого поведения слегка шизеют.

Можно, конечно, создавать файловый флаг в tmp и проверять его - но все же...

theMIROn
06-02-2009, 14:02
pre-mount post-mount передается параметр - GUID подключаемого устройства, можно анализировать его

ghost_ufa
06-02-2009, 14:20
знаю что передается, только вот толку от этого пока не вижу. Не LVM же поднимать :)

theMIROn
06-02-2009, 15:46
знаю что передается, только вот толку от этого пока не вижу. Не LVM же поднимать :)по гуиду можно определить серийник девайса. а по серийнику кейсить, монтировать ли, и куда если, да

ghost_ufa
07-02-2009, 16:54
можно конечно, но как-то некошерно. Тогда уж проще таг-файл в корень.

Но я таки через ключевой файл сделал - по первому запуску делаю симлинк с /proc/mountc в /etc/mtab. И флаг есть, и MC доволен :)

theMIROn
07-02-2009, 22:49
поделись скриптом с общественностью )

ghost_ufa
08-02-2009, 11:14
Дык то не совсем один скрипт :)

Закончу причесывать - выложу всю кучу. Только вот она получилась с несколько красношапочным оттенком, с возможностью запусков нескольких сервисов на базе единственного бинарника и вплоть до команд типа "service httpd restart" ;)

Осталось доделать скрипты для управления внутренними службами, хочется им тоже делать старт-стоп-статус и renice.

ghost_ufa
08-02-2009, 20:37
Это баг, или так и задумано? Все же традиционное поведение - прибивать все запущеное с данного терминала...

ghost_ufa
11-02-2009, 14:05
Перестало дерево сорцов лезть на флешку с данными. Ну, думаю, щас быстренько перепишу на другую. Воткнул USB-хаб, в него 2 флешки - новую и старую, системная так и осталась в своем гнезде. Захожу... два диска. /dev/scsi/host0 (системная) и /dev/scsi/host2. Пляски с бубном ни к чему не привели, пока не догадался заглянуть в /proc/scsi... А там - правильно! - usb-storage-0, usb-storage-1 и usb-storage-2. Да и в /proc/bus/usb тоже три девайса...

Получается, что эмуляция SCSI нормально поддерживает только 2 диска?

ЗЫ. В FAQ этого нет.

ghost_ufa
13-02-2009, 18:25
А возможно ли установить второе PPP соединение, и объединить бриджом получившийся PPP1 и один из внешних эзернетов? :confused: