{imgicourl}{zamok}
Другие записи за это число:
2014/08/27_95 - По результатам соцопросов
<< предыдущая заметкаследующая заметка >>
27 августа 2014
а вот вопросов пара

Друзья, нужен ваш совет!

1. Ситуация: Линукс DD-WRT на роутере ASUS, в него воткнуты несколько USB-устройств: пара звуковых карт, флешка, внешний диск и платка Ардуино. Звуковые карты и флешка ведут себя отлично. А внешний диск и Ардуино в течение суток пытаются перепрыгнуть на другое место:

lleo$ dmesg | grep ttyUSB
usb 2-2.2: FTDI USB Serial Device converter now attached to ttyUSB0
ftdi_sio ttyUSB0: FTDI USB Serial Device converter now disconnected from ttyUSB0
usb 2-2.2: FTDI USB Serial Device converter now attached to ttyUSB1
ftdi_sio ttyUSB1: FTDI USB Serial Device converter now disconnected from ttyUSB1
usb 2-2.2: FTDI USB Serial Device converter now attached to ttyUSB1

lleo$ mount
/dev/discs/discb/part1 on /tmp/mnt/discb_1 type ext3 (rw,noatime,errors=continue,data=ordered)
/dev/discs/discc/part1 on /tmp/mnt/discc_1 type ext3 (rw,noatime,errors=continue,data=ordered)
/dev/discs/discd/part1 on /tmp/mnt/discd_1 type ext3 (rw,noatime,errors=continue,data=ordered)

Попытка поставить хаб с внешним питанием эффекта не дала, поэтому решение нужно программное. Системные скрипты /usr/local/sbin/post-mount и pre-mount срабатывают лишь при загрузке. Оба устройства находятся постоянно под какими-то программами (внешний диск — Самба, Апач; с Ардуины — демоны висят и ждут сигналов).

Что посоветуете? Может, какие-то симлинки прописать заранее или в каком-то конфиге автомонтирования есть опция для резервирования конкретного места для конкретного ID? Наверняка я не первый сталкиваюсь с проблемой перескакивания устройств с места на место. Есть в Линуксе (конкретно: DD-WRT) какие-то наработки на этот счет, чтобы мне не изобретать велосипед?

UPD: Всем спасибо за советы! Итак, решение:

1. О прыгающих винчестерах.

а) Узнать их UUID:

$ blkid
/dev/sda1: UUID="6a0f46fb-0247-4c55-bc5b-17b45d4965fe" TYPE="ext3"
/dev/sdd1: LABEL="hitachi2t" UUID="0cc5149d-5c68-4ba1-a731-40b0a992ce42" TYPE="ext3"

б) Поскольку /etc/fstab нету, и он там не сохраняется, надо завести его копию в сохраняемом системой месте и в нем прописать монтирование устройств по UUID в строго указанные места:

/tmp/local/etc/fstab


UUID=6a0f46fb-0247-4c55-bc5b-17b45d4965fe /opt ext3 noatime,discard,commit=60 0 2
UUID=0cc5149d-5c68-4ba1-a731-40b0a992ce42 /tmp/r ext3 noatime,discard,commit=60 0 2

в) В служебные файлы системы я добавил (на всякий случай дублируется):

/tmp/local/sbin/pre-mount

#!/bin/sh

/bin/mkdir /tmp/r
/bin/chmod 777 /tmp/r
/bin/cp /tmp/local/etc/fstab /etc/fstab
/bin/mount /tmp/r

/tmp/local/sbin/post-mount


#!/bin/sh

/bin/cp /tmp/local/etc/fstab /etc/fstab
/bin/mount /opt
/bin/mkdir /tmp/r
/bin/chmod 777 /tmp/r
/bin/mount /tmp/r

# дальше необязательно
# тут стартуют мои нужные программы при загрузке маршрутизатора:
/opt/etc/init.d/S80lighttpd restart &
/opt/etc/init.d/S08samba restart &
/opt/etc/init.d/S70mysqld restart &
/opt/lleo/startusb
/opt/lleo/soundusb
/usr/bin/wget -O /dev/null http://lleo.me/dyndns/?domain=home &
/opt/lleo/playin /opt/audio/kukus/s0.mp3 &
/opt/lleo/arduinod &
/opt/lleo/time.php &
# чтоб mc не глючил:
/bin/cat /etc/passwd | /bin/sed 's#\/bin\/sh#\/bin\/bash#g' >/etc/passwd

# подключаем SWAP либо на флешке либо на винчестере
if [ ! -d /tmp/r/tmp ]; then
/sbin/swapon /tmp/r/tmp/swapfile
else
/sbin/swapon /opt/swapfile
fi

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

/opt/lleo/saveram


#!/bin/sh

nvram commit
flashfs enable
flashfs save
flashfs commit

После этого винчестер если отваливается и перескакивает на другой адрес, то все равно остается примонтирован к /tmp/r


2) Теперь что касается бегающего USB-устройства, создаваемого драйвером ftdi_sio.

а) Находим его. Для этого нам помогут lsusb (а может, и не поможет) и простое шастанье mc по папкам. В итоге мы найдем устройство по некому usb-адресу, например: /sys/bus/usb/devices/2-2.2:1.0/ttyUSB0
Эта комбинация "2-2.2:1.0" соответствует положение воткнутого устройства на шине, и не изменится.

б) Создаем файлик, который возвращает нынешнее имя нужного устройства (например /dev/ttyUSB1)

/opt/lleo/arduino_ttyUSB

#!/bin/sh

a=`ls -1d /sys/bus/usb/devices/2-2.2:1.0/ttyUSB* 2>&1`
if [ "x`echo $a | grep 'No such'`" = "x" ] ; then

a="/dev/"`echo $a |sed -e 's/^.*tty/tty/'`
`/bin/stty -F $a 57600 -echo`
echo -n $a
else
echo -n ''
fi

3) Полезные советы:
Утилиты find и lsusb устанавливаются с неочевидными именами так:
ipkg-opt install findutils
ipkg-opt install usbutils


UPD: После краха флешки положу здесь пожалуй скрипты, которые я вытянул:

/tmp/local/sbin/post-mount#!/bin/sh

#/bin/cp /tmp/local/etc/fstab /etc/
#/bin/cp /tmp/local/etc/shells /etc/

/bin/mount /opt
/bin/mkdir /tmp/r ; /bin/chmod 777 /tmp/r ; /bin/mount /tmp/r

/opt/etc/init.d/S80lighttpd restart &
/opt/etc/init.d/S08samba restart &
/opt/etc/init.d/S70mysqld restart &

/opt/lleo/startusb
/opt/lleo/soundusb
/usr/bin/wget -O /dev/null http://lleo.me/dyndns/?domain=home &
/opt/lleo/arduinod &
/opt/lleo/time.php &

#/bin/sed -i 's,/bin/sh,/bin/bash,' /etc/passwd

/opt/lleo/playin /opt/audio/kukus/s0.mp3 &

if [ ! -d /tmp/r/tmp ]; then
/sbin/swapon /tmp/r/tmp/swapfile
else
/sbin/swapon /opt/swapfile
fi

/bin/echo "post-mount: `date` $@ $0" >> /opt/lleo/mount.log

cat /tmp/local/sbin/post-firewall#!/bin/sh

#echo 'post-firewall '`date` >> /tmp/llog

#sleep 1; /opt/etc/init.d/S80lighttpd restart &

/usr/bin/wget -O /dev/null http://lleo.me/dyndns/?domain=home &

#ls /opt >> /tmp/llog

cat /tmp/local/sbin/post-mount#!/bin/sh

#/bin/cp /tmp/local/etc/fstab /etc/
#/bin/cp /tmp/local/etc/shells /etc/

/bin/mount /opt
/bin/mkdir /tmp/r ; /bin/chmod 777 /tmp/r ; /bin/mount /tmp/r

/opt/etc/init.d/S80lighttpd restart &
/opt/etc/init.d/S08samba restart &
/opt/etc/init.d/S70mysqld restart &

/opt/lleo/startusb
/opt/lleo/soundusb
/usr/bin/wget -O /dev/null http://lleo.me/dyndns/?domain=home &
/opt/lleo/arduinod &
/opt/lleo/time.php &

#/bin/sed -i 's,/bin/sh,/bin/bash,' /etc/passwd

/opt/lleo/playin /opt/audio/kukus/s0.mp3 &

if [ ! -d /tmp/r/tmp ]; then
/sbin/swapon /tmp/r/tmp/swapfile
else
/sbin/swapon /opt/swapfile
fi

/bin/echo "post-mount: `date` $@ $0" >> /opt/lleo/mount.log

cat /tmp/local/sbin/pre-mount#!/bin/sh

/bin/mkdir /tmp/r
/bin/chmod 777 /tmp/r

/bin/cp /tmp/local/etc/fstab /etc/fstab
/bin/mount /tmp/r

bin/echo "pre-mount: `date` $@ $0" >> /opt/lleo/mount.log

cat /tmp/local/sbin/pre-shutdown#!/bin/sh

/opt/lleo/playin /opt/audio/kukus/s2.mp3


cat /tmp/local/etc/shells/bin/sh
/bin/bash


cat /tmp/local/etc/fstabUUID=6a0f46fb-0247-4c55-bc5b-17b45d4965fe /opt ext3 noatime,discard,commit=60 0 2
UUID=0cc5149d-5c68-4ba1-a731-40b0a992ce42 /tmp/r ext3 noatime,discard,commit=60 0 2

#/bin/mount -o noatime -t ext3 -obind /tmp/mnt/disca_1/ /opt/

#UUID=18ddec5c-072a-4ea8-a0dc-e1145218bca7 / ext2 errors=remount-ro 0 1
#UUID=18ddec5c-072a-4ea8-a0dc-e1145218bca7 / ext2 noatime,discard,errors=remount-ro,commit=60 0 1

# /home was on /dev/sda3 during installation
#UUID=696fd34c-2f24-4983-8352-bdd0ae473dae /home ext4 defaults 0 2
#UUID=696fd34c-2f24-4983-8352-bdd0ae473dae /home ext4 noatime,discard,commit=60 0 2
# swap was on /dev/sda2 during installation
#UUID=9c050a28-4a0f-40e8-9841-6c7e606a2e7f none swap sw 0 0

#[admin@alexs lleo]$ blkid
#/dev/sda1: UUID="6a0f46fb-0247-4c55-bc5b-17b45d4965fe" TYPE="ext3"
#/dev/sdd1: LABEL="hitachi2t" UUID="0cc5149d-5c68-4ba1-a731-40b0a992ce42" TYPE="ext3"


2. Про Ардуину. Чудовищно неудобная среда разработки — этот гребаный текстовый редактор на джаве. Не хочу вообще никаких развесистых пакетов, хочу использовать простой текстовый редактор mcedit и скриптик, который состоит из вызова консольного компилятора, если нет ошибок — консольная заливка кода в Ардуину, а затем (если будет нужно) автоматического запуска всяких собственных скриптов по обмену информацией с Ардуиной (консоль в фирменной среде разработки — еще одна адская убогость). У вас есть готовый пример подобного консольного со всеми правильными ключами для процессора 328? Также интересует пример С-кода для Ардуины с вставками на ассемблере (просто понять, как это оформляется при линковке).

Заранее спасибо за советы.


PS: А пока по традиции расскажу про хозяйство.

Ну, помидоры растут и колосятся. Правда только низкорослые сорта. Сорта грунтовые вымахали до потолка и как-то не желают плодоносить. Но «оранжевая шапочка» и «жемчужина желтая» прекрасны, уже начинают краснеть:

Иван, 3D-принтер — это щастье! Освоил рисование деталек для хозяйственных целей и прочего моделирования. Оказалось, труЪ-программеру гораздо удобнее написать скрипт, чем рисовать кисточками. Для этого вместо всяких 3DMAX существует такой пакет, как OpenSCAD — в нем рисуешь чистой математикой, как программу пишешь: «нарисовать куб», «добавить балку», «вычесть из него шар», «пересечь с конусом»... Конечно, Чапаева на коне так не нарисуешь, зато всевозможные технические детальки рисуются на ура.

Есть, конечно, грабельки, если интересно, расскажу. Ну, пакет OpenScad для Убунты собран дебильно — в нем нет кнопки «Export», поэтому готовую модель в .STL не запишешь. Но ничего, сойдет пакет для простого Линукса. Чтобы перегнать готовую модель в формат gcode для принтера нужен слайсер. Слайсер — это такой большой, красивый и блестящий графический продукт (непременно написанный на каком-нибудь говне типа Перла или Джавы), который с виду как 3D-редактор, а на самом деле нужен лишь для того, чтобы перетранслировать файл из формата stl в gcode. Один слайсер называется Cura. Он хорошо настраивается под конкретный принтер и красиво рисует. Но почему-то не хочет делать детали со стенками тоньше 1мм. Для этого есть другой слайсер — Slic3r. Он рисует тонкие контуры. Зато детали получаются шероховатые и корявые.

Для печати (в принципе, посылать на принтер умеет и Cura, но криво) имеет смысл использовать OctoPrint — это такой сервер, куда потом заходишь браузером на http://127.0.0.1:5000, и там все красиво. Правда, браузер нужен Chrome. Который по своей несовместимости и эгоцентричности давно занял нишу IE. Такая нынче мода пошла у веб-быдлокодеров, когда половина сайтов отказывается работать с Firefox (особенно это касается всевозможных окологугловских сайтов типа 23andme). В общем, этот сервер OctoPrint ставится на любую машину (да хоть на Raspberry Pi с WiFi, приклеенную к самому принтеру), и ты на принтер ходишь печатать браузером. Вот только под DD-WRT нету сборки, а то бы я принтер в коридоре-то воткнул :)

<< предыдущая заметка следующая заметка >>
пожаловаться на эту публикацию администрации портала
архив понравившихся мне ссылок
Оставить комментарий
Linux Firefox
 Казахстан
1
0
Нарожный Андрей
Отлавливать подключения и отключения устройств в современном Linux удобнее всего с помощью соответствующей подсистемы UDEV. Я с этим в своё время баловался: http://www.umgum.com/linux-ztemf180-kcell и http://www.umgum.com/linux-ztemf180-nokia3110c-internet-auto[...] Вы отлично разберётесь, что взять себе из моих примеров.
Linux Ubuntu Firefox
 Москва
1
0
Leonid Kaganov
Я что-то не вижу, чтобы в DD-WRT была система UDEV и ее конфиги. Вижу лишь некий mdev и его конфиг mdev.conf, но с ним я не разбирался никогда, и не уверен, что дело в нем.
Linux Firefox
 Казахстан
2
0
Нарожный Андрей
Действительно, MDEV в DD-WRT (да и многих других прошивках для микрокомпьютеров) используется вместо привычного UDEV. По синтаксису ничего не подскажу, ибо не сталкивался, но принцип не меняется - подсистема MDEV отслеживает события аппаратуры, которые можно отлавливать фильтрами и запускать требуемое. Я почитал советы ниже о монтировании через метки файловой системы и UUID - они действенны - но в корне проблемы переподключений периферийных устройств нужно лечить извне, сторонней службой (MDEV), а не надеясь на то, что диск сам перемонтируется по "метке".
Mac Safari
 Израиль
1
0
braintunic
> проблемы переподключений периферийных устройств нужно лечить извне, сторонней службой (MDEV), а не надеясь на то, что диск сам перемонтируется по метке

Конечно, device manager (udev или mdev) - это универсальное средство для настройки внешних устройств.
Но все таки не всегда нужно использовать электронный микроскоп, чтобы забить гвоздь.
В данном случае, для автоматического монтирования внешних дисков (по метке или по UUID) вполне достаточно применить сервис automount (autofs), по моему.
Linux Firefox
 Казахстан
1
0
Нарожный Андрей
Уж и микроскоп - зачем такие крайности? MDEV и UDEV средства универсальные, как швейцарский нож, к примеру, но не всеобъемлющие до отторжения. А automount - условно нож перочинный, к которому нужно ещё молоток, зубило и кучу всего другого для действий за пределами простейших задач. Уж лучше уметь обращаться со "швейцарским ножиком", чем дёргаться каждый раз между подсистемами, каждая из которых со своим синтаксисом, ограничениями и взаимными конфликтами.
Linux Ubuntu Firefox
 Москва
1
0
Leonid Kaganov
Вы правы.

Пока что при помощи монтирования по UUID я добился лишь стабильности для винчестера. К утру он перепрыгнул c
/dev/discs/discb на /dev/discs/discс, но остался крепко примонтирован к /tmp/r

А вот Ардуина снова прыгнула с USB0 на USB1, и что с этим делать - неясно.

Вы не можете ничего посоветовать насчет mdev? Я с ним вообще пока не работал и не представляю его устройство и функции. Сейчас он такой:

/etc/mdev.conf
# mdev configuraton
null 0:0 666 @chmod 666 $MDEV
zero 0:0 666
full 0:0 666
random 0:0 444
urandom 0:0 444
kmem 0:0 640
mem 0:0 640
port 0:0 640
console 0:0 600 @chmod 600 $MDEV
ptmx 0:0 666
tty 0:0 666
fuse 0:0 666
nvram 0:0 640

# block
loop([0-9]+) 0:0 660 >loop/%1
sd([a-z]) 0:0 660 >discs/disc%1/disc
sd([a-z])([0-9]+) 0:0 660 >discs/disc%1/part%2
hd([a-z]) 0:0 660 >discs/disc0%1/disc
hd([a-z])([0-9]+) 0:0 660 >discs/disc0%1/part%2
md[0-9]* 0:0 660

# misc
mtd([0-9]+[ro]*) 0:0 640 =mtd/%1
mtdblock([0-9]+) 0:0 640 =mtd/block%1
tun[0-9]* 0:0 600 =net/
tap[0-9]* 0:0 600 =net/
event[0-9]+ 0:0 640 =input/
ts[0-9] 0:0 640 =input/
rtc 0:0 640 =misc/

# alsa sound
pcm.* 0:0 660 =snd/
control.* 0:0 660 =snd/
midi.* 0:0 660 =snd/
seq 0:0 660 =snd/
timer 0:0 660 =snd/
adsp 0:0 660 >sound/
audio 0:0 660 >sound/
dsp 0:0 660 >sound/
mixer 0:0 660 >sound/
sequencer.* 0:0 660 >sound/

# v4l
vbi[0-9] 0:0 660 >v4l/
video[0-9] 0:0 660 >v4l/


Шо любопытно: если про винчестеры я еще что-то вижу и смутно догадываюсь, что параметр типа "@script $MDEV" означает вызов внешней процедуры с параметром... То вот чем монтируется /dev/ttyUSB0 я в конфиге mdev не вижу в упор.

А монтируется он как-то так:
$ dmesg | grep 'USB'
ftdi_sio 2-2.2:1.0: FTDI USB Serial Device converter detected
usb 2-2.2: FTDI USB Serial Device converter now attached to ttyUSB0
drivers/usb/serial/ftdi_sio.c: v1.5.0:USB FTDI Serial Converters Driver
usb 2-2: USB disconnect, address 2
usb 2-2.1: USB disconnect, address 3
usb 2-2.2: USB disconnect, address 4
ftdi_sio ttyUSB0: FTDI USB Serial Device converter now disconnected from ttyUSB0
usb 2-2.3: USB disconnect, address 5
usb 2-2.4: USB disconnect, address 6
usb 2-2: new full speed USB device using ohci_hcd and address 7
hub 2-2:1.0: USB hub found
usb 2-2.1: new full speed USB device using ohci_hcd and address 8
usb 2-2.2: new full speed USB device using ohci_hcd and address 9
ftdi_sio 2-2.2:1.0: FTDI USB Serial Device converter detected
usb 2-2.2: FTDI USB Serial Device converter now attached to ttyUSB1
Linux Firefox
 Казахстан
2
0
Нарожный Андрей
Извините Леонид, надо бы мне собрать тестовый стенд виртуальный и помогать дальше, раз уж вылез умничать, но в данный момент этого сделать не могу - в отпуске и при себе минимум оборудования - а вхолостую советовать не вижу смысла, будучи уверенным, что искать информацию по теме и читать вы умеете лучше меня.
Windows Firefox
 Санкт-Петербург
0
0
murrmax (#2967208)
подключить через внешний хаб с нормальным питанием?
Mac Safari
 Москва
4
1
shaman007
Добрый совет? Выкинуть это все удешевленное ARM-говно и строить систему на полноценных компонентах. Ну правда, я это прошел с автоматизацией просмотра сериалов и мультиков, дошел но железного RAID-контроллера. Потому что все эти недоASUS'ы конечно, дешевы, но, блин, так быстро упираешься в их ограничения, что бесит жутко. И не так уж и дешево выходит, когда покупаешь железо за копейку, а потом им нифига не пользуешься.

//роутер - Apple Airport Extreme, торренты 12мегабайт/с. Сервер - аппаратный RAID Adapetc и полноценные сигейты. Буду корячить "умный дом" - посмотрю что используют на заводе Volkswagen, правда.
Linux Ubuntu Firefox
 Москва
6
1
Leonid Kaganov
Это я уже прошел - у меня уже был "полноценный сервер на компонентах", я его выкинул, поставил роутер, и решилась огромная куча проблем.

Основной нюанс состоит в том, что мне, в отличие от вас, не нужны типовые решения массового спроса, которые для вас готовит Apple и прочие фирмачи. Мне, например, Торренты и высокоскоростной рейд-массив мне даром не уперлись. А две звуковые карты, Ардуину, GSM-модуль и оптический сканер отпечатков никакой ваш Apple мне не гарантирует. Потому что Обычному Потребителю для счастья нужна одна звуковая карта и мильён Торрентов :)
Mac Safari
 Москва
1
4
shaman007
Ну нифига у тебя пресуппозиция? Я, может быть, на совещания ходил с HP 4700 под Angstroom и делал вид, что мне удобно! Когда я строился, то вменяемых роутеров (относительно Asus WL-500W) было ровно 2 - Linksys и Apple, при чем Apple - дешевле. Мне что нужно было: нормальный гигабитный сегмент внутри, нормальный пятигигагерцовый WiFi без тормозов, SMS и регистрации, нормальную трансляцию видео по тому гигабитному сегменту (на втором конце XBMC).

А, ну да, я же помидоры не выращиваю :-)
Linux Ubuntu Firefox
 Москва
14
2
Leonid Kaganov
Каждому свое. В любом случае я идею "большого сервера" успешно пережил и давно от нее отказался в пользу роутера. Это решило целую кучу ключевых проблем, сейчас остались мелкие. Гигабиты, терабайты и торренты меня интересуют не то, чтобы в последнюю очередь, а не интересуют совсем ;)

Кстати, никто мне в 2014 году пока не смог объяснить, зачем нужен мощный круглосуточный торрент-сервер. И терабайтные хранилища к нему. Нет, ну правда, я не могу понять. Кино давно уже смотрится онлайн. В крайнем случае скачать фильм или инсталляционный диск - ну 10 минут. Видео сегодня все равно качается на порядок быстрее, чем смотрится. Но сколько ни задавал я этот вопрос, никакого вразумительного ответа не получил. Ну, не считая неуверенного мычания: "а вот если мне надо ехать в поездку, и перед поездкой срочно накачать 100500+ серий сериалов на весь месяц..." Господи, откуда у людей в поездках столько времени? :))) Я бы еще понял, если бы кто-то честно встал и сказал: "Я барахольщик, Плюшкин, знатный активист пиратской партии и параноик, уверенный, что завтра Путин отключит нам интернет! Поэтому я пытаюсь скачать себе весь мировой синематограф назло копирастам, вот для чего мне круглосуточный Торент-сервер и серверная стойка с винчестерами!" Но нет же, никто не признается ж)
Windows Safari Chrome
 Сыктывкар
14
0
drHimik (#4301336)
Я признаюсь.

Просто как то сложно отказатся от того чем занимался полжизни. Коллекционированием порно.

Вот рука не поднимается, снести всего доктора Хауса.
Windows Safari Chrome
 Владивосток
3
0
Алексей
Аналогично с Хаусом)
Хоть и смотрел его уже целиком раза три и вряд ли буду ближайшие несколько лет, но сносить - ни-ни)
Linux Ubuntu Firefox
 Москва
6
8
Leonid Kaganov
А вам не приходила в голову мысль хранить у себя дома копии экспонатов Пушкинского музей и Кунсткамеры? Ну, вдруг посмотреть захочется, чтоб никуда не ходить...
Linux Opera
 Москва
13
1
Mike Novikoff
Кстати, почему бы и нет, если в виде какой-нибудь голографии, физически компактной.

Хранят же люди большие подарочные фотоальбомы «Пушкинский музей» на толстой мелованной бумаге, которые занимают кучу _реального_ места и кучу _реальной_ пыли собирают на полках...
Windows Safari Chrome
 Сыктывкар
10
0
drHimik (#1019294)
«Все кругом народное, все кругом ничье. Что домой утащено, только то - твое».
Windows Safari Chrome
 Владивосток
9
0
Алексей
Не смотря на все шары и онлайн, хочется под рукой хранить то, к чему неравнодушен)

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

Плюс в тех же шарах и торрентах кто-то же должен все это богатство раздвать. Комп у меня всегда включен, хоть и не сервер по натуре, вот и терабайты с него по всему миру расходятся))
Windows Firefox
 Израиль
3
0
garik64
Вот я тоже так думал. Недавно захотел пересмотреть избранное из "Игры престолов", а её уже выпилили с торрентов.
Windows Firefox
 Одесса
0
0
crispoid
Разве выпилили?
http://www.lostfilm.tv/browse.php?cat=_145
Или вам без дубляжа нужно?
Windows Firefox
 Израиль
0
0
garik64
Да, 1080p без дубляжа с субтитрами. Дубляторов с некоторых пор смотреть не могу. А если приходится, как "агентов ш.и.т.а.", например, то просмотр превращается в сеанс прикладного мата.
Но вот что интересно: сейчас проверил, оказывается, на руторе "Игра" лежит. А ведь точно помню, как искал и не нашёл. Даже скачивал избранные серии у товарища. То ли руки у меня кривые, то ли мозги. То ли они вначале снесли, а потом восстановили. :(
Windows Safari Chrome
 Красноярск
0
0
anry70 (#4169377)
Зачем покупать книги, если есть библиотеки?
Linux Safari Chrome
 Santa Rosa
2
0
Dzmitry
Ну клёво вам в Москве с тырнетом. А в Сан-Франциско 10 мегабит стоит $50 в месяц. Поэтому фильм скачать в нормальном качестве для большого монитора (15-25ГБ) -- это на 2-4 часа.
Mac Safari
 Израиль
1
4
braintunic
> в Сан-Франциско 10 мегабит стоит $50 в месяц

Ну нельзя же так смешить!
10 мегабит - это даже меньше, чем помещалось на древней трехдюймовой дискете :)
Linux Safari Chrome
 Santa Rosa
0
0
Dzmitry
Мегабод, конечно, прошу прощения.
Mac Safari
 Израиль
1
1
braintunic
$50 в месяц за 10 мегабод?
Так у вас наверное Comcast? Ну сами виноваты ;)

Я в Сан-Франциско был подписан на Sonic-dot-net, $40 в месяц за 100 мегабод, и было это два с половиной года назад, думаю сегодня еще дешевле.
Linux Safari Chrome
 Santa Rosa
2
0
Dzmitry
У меня ATT U-Verse (это *DSL, но одни и те же цены с Комкастом). Я был бы рад провести Sonic.net, но у меня не доступен, несмотря на то что я живу практически в географическом центре СФ.
Linux Opera
 Москва
10
0
Mike Novikoff
А что не так с мегабитами? Придираешься к пропущенному «per second»? Но именно так и говорят всегда, коротко и ясно любому.
Mac Safari
 Израиль
3
0
braintunic
> Но именно так и говорят всегда, коротко и ясно любому

Как видишь, не любому)
Теперь то я буду это знать.
Я же иностранец, российских газет не читаю, российское телевидение не смотрю, российскую рекламу не слушаю, откуда мне знать, что именно так у вас говорят?)
А вот здесь в Израиле сплошь и рядом говорят просто "мега": "только у нас в Хот самый быстрый Интернет на двести мега!"
Windows Firefox
 Израиль
1
0
garik64
И что, правда двести? У меня сто от Нетвижна за ~сто в месяц.
Windows Firefox
 Челябинск
1
0
vinny-the-poo
«российских газет не читаю, российское телевидение не смотрю, российскую рекламу не слушаю, откуда мне знать, что именно так у вас говорят?»

У нас, это где? В Санта Роза, Калифорния?
Windows Firefox
 Израиль
1
0
garik64
В Санта-Роза, Калифорния, живут такие же русские люди. И говорят на том же русском языке. Одни сыр берут писом, другие требуют наслайсать.
Linux Ubuntu Firefox
 Москва
1
1
Leonid Kaganov
А в Сан-Франциско вообще могут быт неприятности за Торренты. Проще купить абонемент на каком-нибудь сайте и смотреть фильмы оттуда.
Linux Safari Chrome
 Santa Rosa
2
0
Dzmitry
Могут только за новые фильмы, а их проще посмотреть в кинотеатре. А классику в хорошем качестве и приятно каталогизированную только на Рутрекере можно найти. Да и Рутрекер не особо известен в штатах я думаю, плюс он удаляет по просьбам правообладателей, защищает меня :)
На Нетфликсах/Хулу/Амазоне выбор вообще унылый, только сериалы, которые я не смотрю.
Mac Safari Chrome
 Austin
0
0
bugabuga
Про абонемент аналогично :)
То бишь главный вопрос "стоит ли потенциальный геморрой цены абонемента".

А с интернетами да, беда. В Остине стало лучше -- за 65 в месяц дают 200/20 Мбит от кабельщиков или 300Мбит за 75 от телефонщиков :)
Linux Firefox
 Великобритания
2
0
gevor
В Лондоне у меня принципиально больше 10 мегабит ADLS нет, например. Оптику не дотянули, оборудование на узле старое...
Windows Safari Chrome
 Москва
3
0
alexander.smirnov.71
в 2014 мощный круглосуточный домашний сервер можно использовать для виртуальных машин разных мастей, чтобы не ставить их на свою рабочую машину (нотебук), иметь в доступе из разных точек земного шара. Правда, в данном случае - это уже не домашний, а некий рабочий вариант, такой сервер можно и в дата-центре поставить, но дома дешевле)
Linux Ubuntu Firefox
 Москва
0
0
Leonid Kaganov
Ну у меня роутер ASUS (в миру http://home.lleo.me :) в качестве сервера справляется со всеми моими задачами. Но не виртуальный он конечно, факт.
Linux Ubuntu Firefox
 Москва
0
0
Leonid Kaganov
PS: О, кстати хорошая идея. Прописал сейчас в lighttpd.conf:
server.error-handler-404 = "/index.php"
Закомментировал в minstall.php проверку iconv (которого нету, но инсталлятор почему-то желал).
И ставлю свой движок!
Все ставится, взлетело, mysql поднялся, базы есть. Файлики тянутся и пишутся на диск медленно - это факт. Но там же графическая оболочка, даже прикольно наблюдать, как оно движется :)
Linux Opera
 Москва
11
0
Mike Novikoff
Фильмы — да, незачем скачивать. А совсем другое дело музыка — альбомы и полные дискографии _в хороших изданиях_, да ещё с возможностью выбора между несколькими разными фирменными изданиями, где мастеринг (звучание всего диска, попросту говоря) может отличаться довольно сильно. Возможность такой роскоши раньше и в голову не приходила. (Вконтакт с его онлайном тут совсем-совсем не конкурент, там помойка, а не архив).

Впрочем, конечно же, никаких «мощных серверов на компонентах» у меня, а андроидный Тукан — как раз что-то вроде твоего роутера. И никаких терабайтов (вообще никаких винтов!), а только 64-гиговые флэшки на USB, для flac этого хватает. Т.е. ни одной движущейся или греющейся детали в этой системе, идеальная тишина.

Да, и ещё ты забыл: качать — это не только download, но и раздача. Именно что круглосуточная. «Если я гореть не буду, кто ж тогда рассеет мрак?» :)
Windows Firefox
 Berkeley
3
0
Михаил (#1684620)
> Фильмы — да, незачем скачивать.

А можно дилетантский вопрос: где именно их смотреть «онлайн»? На всяких ютьюбах далеко не всё есть (по разным причинам), да и обычно показывают только через какой-нибудь гадкий флэш.
Linux Opera
 Москва
0
0
Mike Novikoff
Тут я сам почти дилетант, фильмы вообще смотрю не часто. Навскидку могу назвать ivi dot ru, под него андроидный клиент есть, аналогичный ютьюбовскому. Afair (могу ошибаться), как и на ютьюбе, доступность контента там ещё зависит от айпишника — вроде бы, для России больше, про остальных не знаю. Кроме того, некоторые советовали тот же Вконтакт именно для фильмов, хотя лично меня так и не убедили там зарегистрироваться.

Короче, любимый фильм «It's a Mad, Mad, Mad, Mad World» вот уже год не могу посмотреть, но терплю легко. :)
Windows Firefox
 Израиль
7
0
garik64
Вы хоть один фильм смотрели с ютуба или с иви? Мыльное, тормознутое, сплошной апскейл и (я про иви) "ЖРИ ЧТО ДАЮТ" - всё зарубежное в дубляже.
Windows Safari Chrome
 Chatham
3
0
Reader (#4442593)
круглосуточный торрент сервер - это историческое/ностальгическое
Были времена когда на торрент сайтах давали качать столко сколько ты отдал. А upload speed у cable or DSL низкая
Приходилось сутками держать торрент на раздачу , чтоб загрузить нужные фильмы
Windows Firefox
 Челябинск
3
0
vinny-the-poo
Точно! Ощущал себя фермером, выращивающим продукцию (объём аплода) для обмена на ништяки.
Windows Safari Chrome
 Санкт-Петербург
8
0
Андрей Мурашёв
Да когда рейтинг отменили у меня смысл жизни пропал на 3 секунды. Печалился сильно.
Windows Firefox
 Челябинск
1
0
vinny-the-poo
:)))
Есть такое.
Linux Opera
 Москва
0
0
Mike Novikoff
А я вот завёл *свой* аккаунт на рутрекере относительно недавно, уже после отмены рейтинга, так что раздаю с самого начала добровольно. Мне же нетрудно, фактически ничего и не требуется от меня — солдат спит, служба идёт. Зато очень хорошо помню фидо, где все раздающие без исключения были добровольцами.

Не вижу ничего особенного в этом, как и в круглосуточном аптайме. Десктоп тоже никогда не выключаю, месяцами аптайм идёт. Ещё не хватало каждый день машину с нуля загружать, с очисткой всех консолей и т.д. — представить страшно.
Windows Firefox
 Челябинск
2
1
vinny-the-poo
Консоли-шмонсоли, ерунда какая-то. Я свою винду в гибернацию отправляю и месяцами сижу фактически в одном сеансе.
Windows Safari Chrome
 Chatham
0
0
Reader (#4442593)
круглосуточный торрент сервер - это историческое/ностальгическое
Были времена когда на торрент сайтах давали качать столко сколько ты отдал. А upload speed у cable or DSL низкая
Приходилось сутками держать торрент на раздачу , чтоб загрузить нужные фильмы
 New York
1
0
byka (#4221769)
Каждая вещь пригодна для своего места :)

Один Большой Сервер имеет свои преимущества и свои недостатки.
Кучка роутеров с ардуинами имеет другие преимущества и другие недостатки.
Говорить "вот это хорошо, а это плохо!" - неправильно. Вот одни проблемы решились - зато появились другие.

А ведь кроме роутеров есть еще андроид-донглы, размером чуть больше флешки - на них тоже можно что-то нагородить...
Windows Safari Chrome
 Краснодар
0
0
барисыч
круглосуточные торренты не знаю, а вот терабайтные хранилища очень даже. Мне вот для фото (я храню всё в RAW) 2 ТБ уже мало. У профессиональных фотографов ваще беда, вот знакомому профи расширил хранилище до 16 ТБ, но чувствую, надолго не хватит :)
Windows Safari Chrome
 Краснодар
0
0
Дмитрий (#4153203)
Земляк, а зачем на сетевом хранилище фотоархив держать? Для ускорения доступа проще локально.
Linux Ubuntu Firefox
 Москва
2
0
Leonid Kaganov
Честно говоря, я бы поставил вопрос более философски: а не уместнее ли благородному дону научиться выбирать из 3000 фотографий уикенда 15, зато отличных, и их уже оставлять?

Я стараюсь руководствоваться следующими критериями, по большому счету их три:

1. Снимок такой удачный, что его хочется непременно кому-то показать, а лучше опубликовать в блоге. Если снимком не хочется похвастаться даже сегодня, то вероятность, что он будет интересен завтра - нулевая.

2. Снимок чего-то (вывеска, урна, дверная ручка), что может понадобиться когда-нибудь, когда зайдет речь или спор. Типичный пример: уличные графити. Я их фоткаю во всех странах, они прекрасны. Но никогда не публикую - жду случая сделать подборку по старым архивам.

3. Снимок человека (из знакомых), чьей фотографии у тебя еще нет.

Практика показывает, что удалять снимки - это очень важное и ценное умение. Думаю, даже гораздо ценнее умения фотографировать. Потому что фотографированию учат и есть учебники, а удалять снимки не умеет почти никто. В любом случае - всегда пытайтесь вспомнить, бывали ли у вас случаи, когда хотелось забраться в папку "2001 Наш отпуск в Турции" и просмотреть не 10, не 50, а все 2500 фотографий (по 20 фоток на каждый день поездки)?
Windows Safari Chrome
 Краснодар
1
0
барисыч
В бытовом случае так и есть, подпишусь под каждым словом. Но я практически не снимаю отпуск в Турции. А вот студийную съемку, где даже 100 удачных снимков в RAW весят весьма не хило куда девать? А если из фото путешествия надо сделать по прошествии пару лет фотофильм? Бывали случаи, что люди просят фото, которые сами пролюбили из-за отсутствия бэкапов, либо им надо напечатать большой формат. А хранить надо именно в сыром виде, потому как обработка бывает нужна разная, железо совершенствуется, мастерство растёт и т.д.
Дмитрий: мне нужны эти фото не только со стационарного компа и не только дома. А хранить в облаке личные фото в RAW глупо и дорого.
Windows
 Киев
4
0
Артем (#4376555)
А что, есть в интернете места, где можно посмотреть фильм онлайн в нормальном качестве, а не как на купленной в подземном переходе видеокассете?
Windows Safari Chrome
 Красноярск
2
0
__sleeper_
Вот-вот. За цену билета в кино тебя кормят говном.
Windows Safari Chrome
 Ростов-на-Дону
0
0
-wall-
Я использую круглосуточный сервер. Не мощный (на Pentium G2010), но тихий, небольшой (плата и корпус формфактора mini-ITX) и достаточно производительный.
Преимущества:
1. Является мультимедийным центром, позволяя через подключённый по HDMI телевизор смотреть видео. Просмотр по сети с через DLNA-сервер не оправдал надежд: не все форматы и кодеки телевизор воспроизводит, видео с большим битрейтом тормозит.
2. Является контроллером домена (отсюда контроль пользователей, например, можно сделать, чтобы ребёнок не тратил на ПК слишком много своего времени, ведь он заходит под своим личным доменным аккаунтом на любой домашний ПК (мой или жены), также возможен мониторинг действий если есть необходимость контролировать ограждение маленького ребёнка от нежелательного контента) и DHCP-сервером для всей подключённой к сети техники (компьютеры, мобильные устройства) в доме.
3. Является файловым сервером, на котором организованы два рейд-массива: RAID0 - файлопомойка для фильмов, которые ещё не успели посмотреть, дистрибутивов, музыки, IP-камера видеонаблюдения и прочей возобновляемой информации; RAID1 - для невозобновляемых данных (личные фотографии, видеоматериалы, собственные проекты, документы и т.д.).
4. Также есть и торрент-клиент. Удобно в определённый каталог положить .torrent и через некоторое время (можно управлять и наблюдать через web-интерфейс) получить готовую раздачу в другой папке, которую тут же можно посмотреть по TV через мультимедийную оболочку.

Может ещё что-то забыл. Одним словом - удобно :)
Windows Safari Chrome
 Ростов-на-Дону
1
0
-wall-
Вера - это не про меня.
Да и ребёнок в 6 лет обычно ещё не хакер. :)
Linux Ubuntu Firefox
 Москва
0
0
Leonid Kaganov
Пункты 2 и 3 (говорят, и 4 тоже - но мне нафиг не надо) прекрасно исполняет маршрутизатор. В чем преимущества?
Windows Safari Chrome
 Ростов-на-Дону
1
0
-wall-
Наврядли на маршрутизаторе можно поднять полноценный контроллер домена с Active Directory.
Хотя, учитывая Вашу, Леонид, любовь к Линуксу, это, наверное Вам и не нужно. А для меня полезно.
По поводу п.3 - думаю, производительность сильно подкачает.
Да, торрент-клиент действительно можно реализовать на маршрутизаторе. В данном опять упираемся в производительность работы с подключёнными к маршрутизатору дисками.
Я всерьёз рассматривал вариант использовать маршрутизатор для этих целей, пока не понял, что всё-таки он мне маловат :)
Linux Opera
 Москва
0
0
centrist
поднять контроллер AD вполне можно -начиная с времени, когда эту функциональность допилили в samba четвертой версии. Только роутер надо с USB и альтернативной прошивкой.
Windows Firefox
 Москва
0
0
nikvic.ru@NikVic (nikvic.ru)
Леонид, как-то раз этот круг разговора уже проходил, но один вопрос остался без ответа.

Ты отказался от "большого железного сервера", как я помню (возможно неправильно) именно потому, что там стала затруднена техническая поддержка решения (особая версия FreeBSD + самописные скрипты). Сейчас тебе попалось железо новое, красивое, работящее и лёгкое. Тактические проблемы решены. Решены ли стратегические?

Ответь, пожалуйста, хотя бы одной строкой: какова будет последовательность действий в случае умирания этого роутера сегодня вечером. И развёрнутей: в случае умирания этого роутера через 2-3 года, когда в новой версии DD-WRT все настройки окажутся принципиально другими.
Linux Ubuntu Firefox
 Москва
2
0
Leonid Kaganov
Если роутер гибнет, я просто покупаю новый и восстанавливаю настройки за полчаса.

Более развернутый вопрос смысла не имеет. С тем же успехом можно спросить, что будет через 2-3 года, если роутер останется полностью работоспособен, но изменятся потребности и задачи (например, гнать видеопоток).
Linux Safari
 Санкт-Петербург
5
0
Вал. Дав. (#4351495)
Вот для того и нужны многотерабайтные круглосуточные торрент-серверы, чтобы кино было доступно в сети.
Windows Firefox
 Москва
0
0
grassy
если раздачи не поддерживать - они просто исчезнут с трекеров, и все. смотреть онлайн - ну это только если готов отказаться от hd и субтитров.
мне это нужно. я смотрю кино ежедневно и помногу, часто пересматриваю любимые сериалы и фильмы. искать каждый раз в сети, допустим, гонконгскую ленту 68-го года, перекроенную из vhs-рипа в dvd с наложением английских любительских сабов, которую раздают только на закрытых трекерах за деньги - зачем мне это? я один раз купил и продолжаю раздавать для таких же ценителей как я.
порно, опять же. собрать хорошую коллекцию аматеров не так уж просто. да что там, сейчас по трекерам уже даже полной белладонны не собрать, только service animals порезанные остались.
Linux Opera
 Москва
0
0
Mike Novikoff
Раз уж ты такой знаток и ценитель порнухи, то наверняка знаешь про pornmd и porniq (dot com), которые ведут на целую кучу онлайновых сайтов. :) Правда, там обычно не 1080p, но 720p сплошь и рядом.

А раздачи поддерживать надо, не вопрос. Просто у кого-то, вроде меня, запросы насчёт фильмов небольшие, хватает и онлайна. Но музыку сам раздаю круглосуточно, как уже говорил. Особенно как раз редкие рипы, которые действительно могут исчезнуть.
Windows Firefox
 Москва
1
0
grassy
мне неинтересны порноресурсы онлайн. вполне достаточно девиантклипса и редтюба. в любом случае, допустим, фильмов начала 70-х там практически нет. а то, что есть, мне проще купить у правообладателей.
запросы по фильмам у меня не то чтобы нестандартные, но вот конкретный пример: культовый сериал kung fu с кэррадайном в рунете целиком можно найти только на закрытом трекере, легендарное молейто "стреляющие по орлам герои" можно только купить на другом закрытом трекере, итальянский хоррор "чужие хищники" (он же "мутанты 2") найти на русском невозможно в принципе, а, вероятней всего, и на английском кроме как на закрытом трекере не найдешь. какой уж тут просмотр онлайн. только многотерабайтные винчестеры и постоянные раздачи для тех, кому это кино по настоящему нужно.
Windows Firefox
 Москва
2
4
Аляксей Арцёмаў
О госпадзе, модераторы ЛОРа в бложике у Каганова, ОМГ.
Mac
 Эстония
2
0
Edd (#3609782)
Позволю себе поинтересоваться: как жить без торрентов? Как посмотреть BrBa, GoT...?
Linux Ubuntu Safari Chrome
 Санкт-Петербург
0
0
Николай Лещёв (#4307359)
Какие "полноценные компоненты" имеются в виду? Как компьютерщику, электронщику и любителю Hi-Fi мне непонятно.

х86 железо?
Windows Firefox
 Москва
1
0
Anonymouse (#4072133)
Забавно наблюдать написание поста в прямом эфире. Каждое обновление — добавление предложения. А картинки уже заранее загружены.

:)
Windows Safari Chrome
 Москва
0
0
AYOUNG
Компиляция под ардуину из командной строки вполне хорошо документирована, там достаточно обычного командного файла. К сожалению, быстро не поделюсь, поскольку сменил комп и ставлю всё с нуля. Но это как-то очень просто, там вызов компилятора с параметрами и затем утилиты прошивания.
Windows Firefox
 Израиль
2
0
braintunic
Я незнаком с DD-WRT, но если это нормальный Linux, то монтировать разделы дисков можно с помощью меток (labels) или с помощью UUID - в обоих случаях гарантируем монтирование того же раздела на то же место, как бы ни менялось имя диска, присвоенное ядром.

Пример с UUID:
# blkid -s UUID -o value /dev/sdc1 ## узнаем UUID нашего раздела
FB48-E466
# mount -U FB48-E466 /u
# df -h /u
Filesystem Size Used Avail Use% Mounted on
/dev/sdc1 15G 4.9G 11G 33% /u

Пример с меткой:
# e2label /dev/sdc1 mydiskN1 ## присваиваем метку разделу
# mount -L mydiskN1 /u
# df -h /u
Filesystem Size Used Avail Use% Mounted on
/dev/sdc1 15G 4.9G 11G 33% /u

Также это можно использовать в /etc/fstab - записывая UUID=xxxx или LABEL=xxxxx в первой колонке вместо /dev/xxx
Linux Ubuntu Firefox
 Москва
0
0
Leonid Kaganov
Нет, это не нормальный Линукс, это очень особенный. Например, fstab у него нет. А вот blkid в системе имеется:

lleo$ blkid
/dev/sda1: UUID="6a0f46fb-0247-4c55-bc5b-17b45d4965fe" TYPE="ext3"
/dev/sdd1: LABEL="hitachi2t" UUID="0cc5149d-5c68-4ba1-a731-40b0a992ce42" TYPE="ext3"

Теперь осталось только понять, где его прописать в системе. Если удастся - проблема с внешним диском решится. А вот с Ардуиной на ttyUSB0 - все равно останется. Поэтому я думаю, что решение где-то в настройках USB-шины все-таки.
Windows Firefox
 Израиль
0
0
braintunic
Как-то мне не верится в существование Юникса без fstab :)
Но он может сидеть и в другом месте, ну, например, /etc/config/fstab

Поищи: find / -xdev -name fstab
Linux Ubuntu Firefox
 Москва
0
0
Leonid Kaganov
-sh: find: not found

:)))

Еще раз: это не Линукс. Это урезанная система для нужд роутера. Достаточно сказать, что в ней даже нельзя просто так исправлять файлы - всякий раз надо проводить процедуру их сохранения в EEPROM, откуда они восстанавливаются при перезагрузке. При этом, впрочем, с большинством задач система справляется прекрасно.
Linux Opera
 Москва
1
0
centrist
а вообще друг советовал OpenWRT вместо DD-WRT - я сам не пробовал, тоже перешивал роутер в DD-WRT и оно уж слишком урезанное
Linux Ubuntu Firefox
 Москва
0
0
Leonid Kaganov
У меня вообще https://code.google.com/p/wl500g/ - называется "развитие прошивки от Олега", не знаю точно, что это. Но пока нет уверенности, что на какой-то другой системе проблема с прыгающими usb будет решена, нет и смысла экспериментировать, верно?
Linux Opera
 Москва
0
0
centrist
наверное,да. Вообще на аппаратную проблему похоже.
Из плюсов openwrt - там можно разместить линукс вместо EEPROM на небольшом USB (на том же диске сделать раздел) и меньше будет проблем с местом
Linux Ubuntu Firefox
 Москва
0
0
Leonid Kaganov
Везде так.
Windows Firefox
 Израиль
0
0
braintunic
Ох ты ж боже ж мой, команду "find" они выкинули ;)
Но 'fstab' все равно где-то в каком-то виде есть.

# ls -R / | grep fstab

(ну уж "ls" и "grep" не могли выкинуть?)))

Хотя, конечно, можно урезать всё и обойтись без 'fstab' - как написали ниже, делая все конфигурационнные операции с помощью одного лишь загрузочного скрипта.
Linux Ubuntu Firefox
 Москва
0
0
Leonid Kaganov
Нету fstab, нету. Я его конечно создал в /tmp/local/etc/fstab (единственное место, откуда он сохранился в память), но толку от него никакого, не монтирует.
Windows Safari Chrome
 Chatham
0
0
Reader (#4442593)
А какой ДД-ВРТ стоит?
Проверил свой Linksys E4200 DD-WRT :
# find / -name fstab
/etc/fstab
# uname -a
Linux 2.6.24.111 #611 Mon Apr 14 00:24:46 CEST 2014 mips GNU/Linux

DD-WRT v24-sp2 (04/14/14) kingkong
(SVN revision 22000M)
Linux Ubuntu Firefox
 Москва
0
0
Leonid Kaganov
Linux alexs 2.6.22.19 #1 Sat Apr 27 11:14:03 MSK 2013 mips GNU/Linux
Windows Firefox
 Санкт-Петербург
0
1
an alex (#2582571)
ipkg install findutils
Linux Ubuntu Firefox
 Москва
0
0
Leonid Kaganov
Спасибо, получилось!
только ipkg-opt...

PS: Скажите, вы наверно такой умный и подскажете еще один нюанс, который для меня очень неприятен: я использую mc, и когда перехожу в консоль Ctrl+O, то консоли там нет. То ли настройка нужна, то ли установить что-то надо?
Mac Safari
 Израиль
1
0
braintunic
Последний раз я запускал Midnight Commander наверное лет 6 назад)
Но помню, что во-первых CTRL+O вызывает subshell, а во-вторых не все типы шеллов mc поддерживает. /bin/bash наверняка поддерживается, а вот /bin/sh почти наверняка не поддерживается.
Посмотри в /etc/passwd, и поменяй шелл своего аккаунта на /bin/bash
Если его в системе нет, то может быть поможет symlink с /bin/sh на /bin//bash, а если не поможет, то нужно найти пакет с bash и установить..
После изменения user shell, естественно, нужно перелогиниться.
Да, еще одна возможная причина - отсутствие права на запись для директории ~/.mc
Ах, да, еще сам mc мог быть скомпилирован вообще без поддержки subshell. Думаю, по команде 'mc -V' он скажет - с поддержкой или без поддержки subshell.
Linux Opera
 Москва
0
0
Mike Novikoff
Кроме того, важны права доступа к '/dev/vcs{,a}*'.
Тут два варианта: либо они должны быть доступны текущему юзеру (из-под которого запущен mc), либо нужен суидный '/usr/lib/mc/bin/cons.saver'. Для второго варианта — «You should create user vcsa, make cons.saver setuid user vcsa, and make all vcsa's owned by user vcsa» (комментарий из исходника 'cons.saver.c'). Вероятно, можно сделать суид и по-простому, на рута, но это не очень кошерно, поэтому не пробовал такое.
Linux Ubuntu Firefox
 Москва
0
0
Leonid Kaganov
Вау! Супер! Спасибо огромное! Теперь все заработало! не заработало :(

Поскольку /etc/passwd тоже не сохраняемый, внес в стартовый скрипт строчку:

/bin/cat /etc/passwd | /bin/sed 's#/bin/sh#/bin/bash#g' >/etc/passwd
Linux Opera
 Москва
2
0
Mike Novikoff
Номинация на традиционный еженедельный конкурс по излишнему применению cat (Useless Use of 'cat' Weekly Awards). ;-)

На самом деле всё проще:
sed -i 's,/bin/sh,/bin/bash,' /etc/passwd

Ну и regexp лучше подобрать такой, чтобы менялась только одна нужная строчка, никаких global. (Британник уже сказал, плюсую ему).
Linux Ubuntu Firefox
 Москва
0
0
Leonid Kaganov
А там всего две строчки, и /bin/sh лишь в одной.
Я бы показал, какие именно, но по ssh теперь могу войти только в короткую секунду в момент перезагрузки.
Mac Safari
 Израиль
4
0
braintunic
Проблема здесь куда страшнее, чем ненужное использование команды cat.
Ведь при таком вызове:
# cat foo | sed ... > foo
и также при таком вызове:
# sed ... foo > foo
никто не гарантирует, что сперва прочитается старое содержимое файла foo, а уже потом этот файл откроется для записи, как пустой файл.
Как раз в старых классических Юниксах такие выражения 100% приводили к получению в итоге пустого файла, потому что шелл всегда сперва открывал файл для записи, обрезая его до нулевого размера, и лишь затем запускал команду, которая этот файл читает.
В современных Линуксах некоторые изменения в ядре привели к тому, что результат таких команд не гарантирован, часто такая команда пройдет успешно, но совсем нередко в итоге все-таки получится пустой файл.
В общем-то именно для предотвращения такого исхода и были придуманы опции "sed -i", "sort -o" и им подобные. Без таких опций необходимо использовать временный файл, например:
# cp foo foo.tmp; sed ... foo.tmp > foo; rm -f foo.tmp
или:
# sed ... foo > foo.tmp; mv -f foo.tmp foo
Linux Ubuntu Firefox
 Москва
0
0
Leonid Kaganov
Таааак... начинается... теперь он у меня перестал заходить по ssh... Вот спасибо за совет с редактированием /etc/passwd! :)))
Mac Safari
 Израиль
5
0
braintunic
Пожалуйста, обращайтесь ещё!
Я непревзойденный специалист по внесению багов в систему!
А если серьезно, наверное /bin/bash отсутствует в /etc/shells - тогда ssh, естественно, будет фыркать.
Надо добавить /bin/bash отдельной строчкой в /etc/shells, ну и создать этот файл, если он отсутствует.

И, кстати, в /etc/passwd надо было править только "свою" строчку, если изменили настройки какого-нибудь демона, то он может обидиться...
Mac Safari
 Швейцария
0
0
huj_vojne
Лео, таки, сделает из этого линукса нормальный дебиан.
Linux Ubuntu Firefox
 Москва
0
0
Leonid Kaganov
И кстати, там все равно не заработало - это я ошибся, запустил mc на своей убунте.
Mac Safari
 Израиль
0
0
braintunic
Так удалось справиться с этой проблемой или никак?
А то меня здесь совесть мучает, что я убил у ЛЛео всю систему!
Linux Ubuntu Firefox
 Москва
0
0
Leonid Kaganov
Ну, пока сервер перегружается и еще не заменил конфиг, есть секунда зайти по-старому...
Linux Opera
 Москва
1
0
centrist
там, по-моему, единый загрузочный скрипт, традиционно он называется /etc/rc.local , и в нем mount

можно еще найти диск по UUID в папочке /dev/disk/by-uuid/
т.е.
mount /dev/disk/by-uuid/ABCDEF /...
Linux Ubuntu Firefox
 Москва
0
0
Leonid Kaganov
Такого нет.
Linux Opera
 Москва
1
0
centrist
а, вспомнил, там при старте из некоторых NVRAM variables считываются запускаются скрипты, например rc_startup - доступно из webGUI ,
in web_GUI goto tab:Administration -> tab:Commands -> type your commands in the text window -> click:Save Startup

соответсвенно там может быть неправильный mount который можно переделать на mount -U (а mount -U сработал, кстати? А то может и смысла нет)


help отсылает к другому http://www.dd-wrt.com/wiki/index.php/USB_storage#V24-Step_3.[...]


кстати, при отваливании USB оно все равно анмаунтиться будет, наверное, и его надо маунтить обратно, путь и той же командой
Linux Ubuntu Firefox
 Москва
1
0
Leonid Kaganov
Я пока сделал так:

1. Создал в RAM /tmp/local/etc/fstab:

UUID=6a0f46fb-0247-4c55-bc5b-17b45d4965fe /opt ext3 noatime,discard,commit=60 0 2

UUID=0cc5149d-5c68-4ba1-a731-40b0a992ce42 /tmp/r ext3 noatime,discard,commit=60 0 2

Он конечно там ни на что не влияет, но хоть в RAM записывается.

2. В скрипты, которые запускаются якобы перед и после монтирования (один раз при загрузке системы запускается каждый) вставил:

файл /tmp/local/sbin/pre-mount:

#!/bin/sh

/bin/mkdir /tmp/r
/bin/chmod 777 /tmp/r
/bin/cp /tmp/local/etc/fstab /etc/fstab
/bin/mount /tmp/r


файл /tmp/local/sbin/post-mount:

#!/bin/sh

/bin/cp /tmp/local/etc/fstab /etc/fstab
/bin/mount /opt
/bin/mkdir /tmp/r
/bin/chmod 777 /tmp/r
/bin/mount /tmp/r

/opt/etc/init.d/S80lighttpd restart &
/opt/etc/init.d/S08samba restart &
/opt/etc/init.d/S70mysqld restart &

/opt/lleo/startusb
/opt/lleo/soundusb
/usr/bin/wget -O /dev/null http://lleo.me/dyndns/?domain=home &
/opt/lleo/playin /opt/audio/kukus/s0.mp3 &
/opt/lleo/arduinod &
/opt/lleo/time.php &

if [ ! -d /tmp/r/tmp ]; then
/sbin/swapon /tmp/r/tmp/swapfile
else
/sbin/swapon /opt/swapfile
fi

Итог: то есть, я создаю каждый раз на чистой системе нужную папку /tmp/r и копирую в нужное место fstab, после чего выполняю команду mount без указаний диска, и она монтирует мне оба диска. В частности монтируется проблемный диск в /tmp/r по UUID. Как себя он поведет при отваливании и подсоединении снова - пока не знаю. В принципе /etc/fstab у него теперь есть как бы. Но момент отваливания я ничем не смогу засечь, не демонов же вешать следить...
Mac Safari
 Израиль
1
0
braintunic
Ну вот, все проблемы потихоньку начинают решаться ;)

> Но момент отваливания я ничем не смогу засечь, не демонов же вешать следить...
А что вы имеете против демонов? ;)
Как раз и нужно повесить демон, то есть сервис, automount (autofs) - он тоже умеет работать и с метками и с UUID, и он гарантирует автоматическое монтирование при любом обращении к диску.
Думаю, настроить automount будет на порядок проще, чем настроить mdev.

Несколько замечаний по мелочи.
1. При активировании swap-файла наверное нужно проверять существование этого файла (если он создан заранее), а не существование директории. Ну либо создавать это файл на лету (dd+mkswap). Кстати, восклицательный знак в данной проверке, наверное, лишний.
2. Вместо двух отдельных команд mkdir и chmod можно применять одну команду "mkdir -m 777" или "mkdir --mode=777". Кстати, для точки монтирования лучше использовать 555, а не 777.
3. В post-mount вместо двух отдельных команд mount, наверное можно один раз запустить "mount -a" - и оба диска смонтируются.
Linux Firefox
 Москва
1
1
Окудрыцф (#4583429)
Не совсем понял ваш вопрос. Если речь про внешний диск - так его проще через fstab прописать по UUID, он и будет каждый раз перемонтироваться, какая бы беда с usb ни происходила. (в openwrt во всяком случае так происходит, когда конечно он всей системой не грохается). Если же речь про какое-то usbserial устройство, то наверняка та программа-терминал, что к нему подключается, при смене его (как и при многих других проблемах) должна отваливаться и её завершение может быть поводом переподключить её заново, выдрав предварительно из dmesg актуальный номер ttyUSB.

Что конкретно тут надо поправлять? Извините, с ардуиной дела не имел.
Windows Opera
 Киров
7
0
саш (#4503463)
Я извиняюсь, Леонид, сегодня читал сборник "день академика похеля". Все настолько изыскано и остроумно, простите за мой коммент по поводу "дай бог каждому". Никаких негров. Прекрасная литература
Linux Ubuntu Firefox
 Москва
1
6
Leonid Kaganov
А зачем вы это читаете? Эти все книжки писались 10-15 лет назад в прошлой жизни, я бы сейчас и сам перечитывать не рискнул :)
Windows Firefox
 Москва
12
0
kluk
Да ладно вам кокетничать. Классные книжки.
Linux Ubuntu Firefox
 Москва
8
1
Leonid Kaganov
Мне нравились :) Просто странное ощущение... Представьте, что кто-то начал вам писать ответы на ваши посты или комментарии 10-летней давности... Серьезно так: "Вы абсолютно правы! Если бы Юрий Ковтун вчера не забил на последней минуте, финала кубка России-2003 просто бы не было!" А чуть позже: "Вот тут вы просто бредите! Это Нокия 3110 удобная звонилка?! Никогда - слышите! - никогда больше не пишите ничего про Нокию 3110, вы в этом не смыслите!"
Windows Firefox
 Москва
6
0
kluk
Иногда звонят люди, ссылаясь на мои какие-то проги бухо-эйчьаровские и с полной уверенностью в том, что я помню, о чем они, начинают излагать суть проблемы.
Так что я вас прекрасно понимаю :)

Но книжки хорошие.
Windows Firefox
 Москва
5
0
Михаил
Свой пост или комментарий нетрудно и перечитать.

:-)

UPD. Одно из преимуществ диалога (или монолога) в текстовой форме в том, что его намного труднее забыть (или переиначить, со временем), в отличие от устной речи.
Серьёзно: видел на технических форумах (телефония) ветки, которые осмысленно продолжались после трёхлетнего молчания.
 New York
15
0
byka (#4221769)
ага, найдешь в гугле на каком-нибудь форуме описание забытой проблемы, читаешь и думаешь: во дает чувак, разбирается, все подробно написал, сейчас почитаю дальше... оппа, да это же я был?! И я это знал?!
Linux Firefox
 Киев
6
0
kiev.ua@Дмитрий (kastaneda)
Мне в ЖЖ доводилось раз в несколько лет возвращаться к одной и той же дискуссии. Это по-своему прекрасно — например, спор о политике, растянутый на три четыре президентских срока.
Windows Safari Chrome
 Москва
0
0
Alexander
Да уж, зато комментарии про рекламу в блоге и про роутер асус - здорово и вечно.
Linux Opera
 Москва
5
0
Mike Novikoff
Последние несколько дней как раз перечитываю твоё давнее, в т.ч. те вещи, до которых раньше почему-то не добрался. «Харизма», «Коммутация», «Команда Д»... В самом деле, не скромничай, отлично написано! Даже «Команда Д» — её в своё время не стал читать именно потому, что ты сам тогда о ней говорил как о коммерческой халтуре. Но ведь интересно и увлекательно, вчера просидел у монитора целый день не отрываясь. Уж не хуже Акунина — это как минимум.

Кстати, об Акунине. Может, тебе этот вопрос уже задавали: что-то уж больно много совпадений между твоими тремя вышеназванными и его «Фантастикой» 2005 года. Контакт с НЛО случайных людей в Подмосковье — ночью, главный герой приехал туда единственный раз на пьянку на чужую дачу, появившиеся от этого сверхспособности, три супермена — из них одна девушка, секретный институт КГБ в воинской части в Подмосковье опять же (так и вижу перед глазами Нерастанное, куда ездил однажды к служившему там другу), в лаборатории гэбэшники называют суперменов мутантами... Такое впечатление, что Акунин прямо всё у тебя содрал, его книга ведь появилась гораздо позже твоих. Или это просто какие-то общие места в современной фантастике?
Windows Safari Chrome
 New York
1
0
sonyxsir
Хочу присоединиться к вопросу, можно?
Linux Ubuntu Firefox
 Москва
6
0
Leonid Kaganov
Думаю, вот хороший ответ:

http://lleo.me/dnevnik/2004/10/05.html
Mac Safari
 Москва
1
0
Вячеслав Сомов
О господи!!! Да это же прекрасно!!! Теперь буду использовать эту ссылку всегда
Windows Safari Chrome
 New York
0
0
sonyxsir
Ха-ха-ха! Не видел этого поста.

Это же замечательно, спасибо!
Windows Firefox
 Челябинск
2
0
vinny-the-poo
О, да. А рассказы Чехова вообще на помойку выкинуть и никогда о них не говорить. Или Честертона, там.
Windows Safari Chrome
 Санкт-Петербург
7
0
beast
Не надо говорить с Чеховым о его рассказах, он вас не слышит.
Windows Firefox
 Москва
0
0
kluk
Если роутер работает больше двух лет, то там банально сдохла флеш-память и "засрались фидеры".
Лечится это заменой роутера.
Windows Firefox
 Москва
4
0
Арттём (lavart)
Про Arduino из консоли.

1. Ставите avr-gcc (идёт в комплекте с Arduino IDE, или первая ссылка в гугле)
2. Ставите avrdude (там же)
3. Пишете проект на обычном C (если нужны либы Arduino, то тут я не советчик, но вроде надо просто прописать пути и #include "arduino.h")
4. Компилируете (жирным отмечены обязательные опции, остальное оптимизирующее или удобство, указанный набор -f* даёт наименьший размер кода, -Os нужен для корректной работы функций задержки):

$options=-mmcu=atmega328p -Os -I. -std=gnu99 -g -gdwarf-2 -pedantic --combine -W -Wall -Wstrict-prototypes -Wundef -funsigned-char -funsigned-bitfields -ffunction-sections -fpack-struct -fshort-enums -ffreestanding -fwhole-program -fno-inline-small-functions

avr-gcc $options main.c --output main.elf
avr-objcopy -O ihex -R .eeprom -R .fuse -R .lock -R .signature main.elf main.hex

5. Прошиваете:
avrdude -v -p atmega328p -c arduino -P /dev/ttyUSB0 -b 57600 -D -U flash:w:main.hex:i

6. Готово.

Проверку на ошибки посоветовать не могу, т.к. сам всегда делю "скомпилировать" и "прошить" на два разных скрипта.
Windows Firefox
 Berkeley
1
0
Михаил (#1684620)
Насчёт последнего предложения — а чем make не угодил?
Windows Firefox
 Москва
0
0
Арттём (lavart)
Я под Windows обычно работаю, там make просто так не появится.
Потому нет привычки его использовать.
Windows Firefox
 Richardson
2
0
Михаил (#1684620)
Странное заявление. :–) Насколько я помню, make был даже в стандартной поставке всяких Turbo C/Borland Pascal под DOS, не говоря уже об MSVC и Windows.
Да и поставить gcc, но без make — это какой-то изврат.
Linux Safari Chrome
 Santa Rosa
0
4
Dzmitry
На жаве без полноценной среды разработки пишут только мазохисты. Плакать хочется.
Часто новички жалуются на language verbosity, что им долго набирать длинные имена, сразу видно что пишут в каком-то Блокноте без autocompletion. Жаву нельзя практиковать в Блокноте, она под средне-большие проекты заточена. Не знаю, почему Ардуино выбрали её, какой-нибудь Питон был бы уместнее.
Linux Ubuntu Firefox
 Москва
0
0
Leonid Kaganov
Вы о чем? Какая вообще связь между Java и Arduino? Ардуино - это в общем случае микрочип avr с 16 или 32кб памяти. Там и на C-то не очень разойдешься, какая Java? :)
Linux Safari Chrome
 Santa Rosa
0
3
Dzmitry
А, я подумал ты на Жаве там пишешь, сорри. Просто двое моих знакомых пишут под Ардуину на Жаве, вполне рады что не на Сях (компилируется намного быстрее).
Linux Ubuntu Firefox
 Москва
0
0
Leonid Kaganov
Жизнь конечно учит ничему не удивляться, но на Java под Ардуину... Как? И главное - зачем? Там же основные задачи - это шевелить всякими битами. Java для этого очень плохо предназначена.
Mac Safari
 Израиль
13
0
braintunic
Ардуино и Андроид так легко спутать ;)
Linux Safari Chrome
 Santa Rosa
1
0
Dzmitry
Уточнил у одного знакомого -- вы правы, на жаве работала host program на компьютере, которая контролировала робота, на Arduino же никакой жавы не было.
А на Андроиде я и сам умею :)
Linux Ubuntu Firefox
 Москва
0
0
Leonid Kaganov
Научите на Андроиде? :) Эклипсу я почти уже поставил. Про соединения по Bluetooth нагуглил: http://habrahabr.ru/post/144547/ Думаю, в будущем написать приложение для движка, но пока хочу освоить управление роботами Ардуины по Bluetooth самостоятельным приложением (шаблоны для посылки команд есть, я знаю).
Linux Safari Chrome
 Santa Rosa
0
1
Dzmitry
Подскажу, конечно, что смогу. А научить -- не знаю, по-моему научиться можно только что-то разрабатывая, по пути натыкаясь на проблемы и решая их. По крайней мере я сам только так могу учиться, книжки не действуют вообще никак.
Кстати собираюсь скоро (в течении месяцев трёх) написать хорошее приложение (думаю будет достаточно популярно) и выложить в опен-сорс, чтобы все смотрели любовались на идеальную структуру :) Недостаёт только мотивации, надо чтобы кто-то регулярно спрашивал "как оно?" :)
Linux Safari Chrome
 Львов
0
0
killerstorm (#4051641)
Можно писать приложения для андроида на JS. См. PhoneGap.
Linux Ubuntu Firefox
 Москва
0
0
Leonid Kaganov
Это конечно было бы симпатично. Но меня тревожит предчувствие, что мне заведомо будет тесно в функционале. Видите, у меня вот первая же задача - наладить обмен информацией с поделкой-роботом по bluetooth... Какой же тут JavaScript?
Linux Safari Chrome
 Львов
1
0
killerstorm (#4051641)
А вот такой:

https://github.com/don/BluetoothSerial

Bluetooth Serial Plugin for PhoneGap
This plugin enables serial communication over Bluetooth. It was written for communicating between Android or iOS and an Arduino.

На JS можно много чего сделать. Я, например, делаю биткоин-кошелёк (криптография и всё такое).
Linux Safari Chrome
 Santa Rosa
0
0
Dzmitry
Ну из того что я слышал -- они часто деплоят (заливают) код, то есть каждые 5 минут залил-потестил-пофиксал-залил-итд цикл. И на жаве перекомпиляция занимает секунды, на Сях -- минуты, сильно снижает скорость разработки.
Linux Ubuntu Safari Chrome
 Санкт-Петербург
5
0
Николай Лещёв (#4307359)
Не стоит слишком удивляться, да. Java и в SIM-картах бывает.
http://habrahabr.ru/post/93210/
искать: Java на картах
Linux Ubuntu Firefox
 Москва
0
0
Leonid Kaganov
Честно говоря, я слышал о Java на симкартах, но всегда считал, что симкарта выступает в роли флешки, с которой телефон считывает файл и исполняет. Ан вон оно как...
Windows Firefox
 Москва
1
0
Чук
Сначала напридумывают всяких языков с идентификаторами типа ЭтаПеременнаяЗачемтоНужнаНоНиктоНеЗнаетЗачем, а потом жалуются :)
Windows Safari Chrome
 Германия
0
0
_N_E_R_O_
"неудобная среда разработки — этот гребаный текстовый редактор на джаве" - что используете, Eclipse?
Windows Safari Chrome
 Chatham
0
0
Vadimus
Родная среда из комплекта поставки Ардуино?
Windows Firefox
 Москва
1
1
Чук
ASM в C на AVR-GCC делается занятно. Inline ассемблер там полное УГ и на нем писать просто невозможно, но есть один занятный трюк,который делает написание кода на асме довольно приятным. Причем его мало используют, предпочитая городить уродские конструкции в инлайне.
Linux Safari Chrome
 Екатеринбург
0
0
Stanislav Vlasov
Присоединяюсь к оратору про gcc-avr и добавлю про http://inotool.org/ - Ino is a command line toolkit for working with Arduino hardware
На питоне, из утилит хочет picocom и среду ардуино (ради библиотек и, возможно, той самой gcc-avr, не разбирался точнее, так как в дебиане среда ардуино сама зависит от gcc-avr).

Правда, пока особо не тестил, только залил обычный хелловорлд типа мигалки, так что возможны варианты.
Windows Firefox
 Москва
1
0
микки (#4584443)
тут что-то много спецов по домашним роутерам, хотя помидоры куда интереснее. Я за всей историей их роста не следил, но помню, что обычно растения прищипывают, чтобы замедлить рост куста и обратить его развитие в сторону плодоношения.
Windows Safari Chrome
 Германия
0
0
_N_E_R_O_
Вот, да! Хотел же ещё про помидоры написать, хорошо вы напомнили.
Если помидоры вымахали до потолка, то они и не будут плодоносить. Помидорам обрезают макушки и сдерживают их рост в пределах 1м- 1,5м. Так же надо обрезать лишние стебли и обрывать пасынки.
Windows Safari Chrome
 Чита
6
0
Dima (#4585119)
ну Леонид, это вам к программистам надо
Linux Ubuntu Firefox
 Москва
5
0
Leonid Kaganov
А тут ведущие политические аналитики собрались? ;)
Windows Firefox
 Санкт-Петербург
13
0
Tarn
Кондиционерщики же, Ё...
Linux Safari Chrome
 Санкт-Петербург
2
0
RBskates (#4096503)
$ lsusb|grep Proli
Bus 008 Device 003: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port

$ echo "/dev/`ls -1d /sys/bus/usb/devices/8-2/8-2\:1.0/tty* |sed -e 's/^.*tty/tty/'`"
/dev/ttyUSB0

Если вы не меняете физические порты, то из номера порта можно легко вытащить название tty. Вот только номер порта нужно правильный выбрать.
Linux Ubuntu Firefox
 Москва
0
0
Leonid Kaganov
О, спасибо!
Типа такого у меня получилось:

$ echo "/dev/`ls -1d /sys/bus/usb/devices/2-2.2\:1.0/tty* |sed -e 's/^.*tty/tty/'`"
/dev/ttyUSB1

Вот только теперь загадка - как это применить. Там еще надо... /bin/stty -F /dev/ttyUSB0 57600 -echo Буду думать, спасибо!
Linux Safari Chrome
 Санкт-Петербург
0
0
RBskates (#4096503)
ARDUINO="/dev/`ls -1d /sys/bus/usb/devices/2-2.2\:1.0/tty* |sed -e 's/^.*tty/tty/'`"
/bin/stty -F $ARDUINO 57600
Linux Ubuntu Firefox
 Москва
0
0
Leonid Kaganov
Не, я не об этом. Это я вслух думаю, как мне поступить. Давайте продолжу думать. У меня к этой Ардуине два типа обращений: "передать команду" (просто посылается дата в порт) и обработчик, который висит демоном и слушает, не пришло ли чего (приходит редко - раз в час примерно). Этот обработчик для экономии памяти сделан бинарником, а при появлении сигнала он запускает консольный скрипт PHP, который уже разбирается с сигналом:

int main(int argc, char* argv[]) {
int fd, ack=1, l=0,i;
char buff[100]="",longbuff[1000]="";
fd=open("/dev/ttyUSB0", O_RDONLY | O_NOCTTY);
while(1) { l=read(fd, buff, 1000);
if(l>=100) { printf("error length\n"); return 1; }
buff[l]=0;
for(i=0;i<l;i++) {
if(buff[i]==0) { l=i; break; }
if(buff[i]==0x0D || buff[i]==0x0A) { l=i; buff[l]=0; break; }
if(buff[i]<32 || buff[i]==34 || buff[i]==39) { printf("hack error ['\"]!\n"); l=0; break; }
}

if(l) {
strcpy(longbuff,"/opt/lleo/zvonkido.php '"); strcat(longbuff,buff); strcat(longbuff,"'");
system(longbuff);
}

}


Вот я и думаю вслух, как оно себя поведет при отваливании /dev/ttyUSB0, и как мне это предусмотреть...
Mac Safari
 Израиль
7
0
braintunic
Опять??)
Ты же постил здесь эту программу пару месяцев назад, и обещал исправить, переписать этот кошмарный код? ;)
И опять читается 1000 байт в буфер размером 100 байт, и опять не проверяется, прошла ли успешно операция чтения или нет.

Вот кстати и место для проверки - когда устройство серийного порта отвалится, то функция read скорее всего вернет значение -1 (ну или зависнет) - здесь то и можно заново сканировать /sys/bus/usb и найти новое имя терминального устройства...
Linux Safari Chrome
 Санкт-Петербург
0
0
RBskates (#4096503)
По-моему, нужно передавать tty параметром в командной строке. Или можно попробовать выполнить шел код, который обсуждали выше, из Си и использовать результат. Или весь шелл на Си переписать, но тут я не помогу :)
Mac Safari Chrome
 Москва
2
0
Семеняка
Ну да, код не без проблем :)

Если на дескрипторе возникнет ошибка, то read() начнет ее выдавать мгновенно c l=-1, строчка

buff[l]=0;

запишет нулевой байт _перед_ началом buff, так что в buff останется старое содержимое, которое сольется в экстазе с остальными строчками, ну и дальше выполнится zvonkido.php. Другими словами, при ошибке с система будет занята непрерывным повторением вызова этого звонкидо со старыми параметрами.

Если же старых параметров не было, а в памяти мусор, то все вообше грустно, так как в качестве параметров будет передан этот самый мусор каждый раз в бесконечном цикле :)

Я бы, все же,
1) читал не 1000 байтов, а 100. Если прочли все 100 - все равно ж ошибку выдаем, так зачем вылазить за пределы выделенной памяти при этом?
2) проверял бы, не вернулась ли ошибка (l==-1), и как-то бы ее обрабатывал;
3) чисто на всякий случай проверял бы l==0 - это конец файла; вроде бы не должно случаться, но...
4) вместо strcpy и strcat (которые вообще надо отучиться использовать) сделал бы один snprintf - куда как читаемей было бы :)
Mac Safari
 Израиль
0
0
braintunic
Всё это Леониду уже говорили, когда он в первый раз запостил эту программу здесь:
http://lleo.me/dnevnik/2014/07/07.html

Все твои замечания точны, кроме одного:
> Если же старых параметров не было, а в памяти мусор, то все вообше грустно, так как в качестве параметров будет передан этот самый мусор каждый раз в бесконечном цикле

В памяти мусора нет, поскольку массивы buff и longbuff полностью инициализированы нулями.
Linux Firefox
 Richardson
1
0
Михаил (#1684620)
Вроде бы, спецификация на read() не гарантирует, что при ошибках не будет испорчен буфер, особенно при чтении из устройств.
Windows Firefox
 Израиль
0
0
braintunic
Да, согласен, это я недодумал.
Исходно буфер был обнулен, но при сбое на read (даже самый первый раз) в буфер может записаться мусор.
Linux Ubuntu Firefox
 Москва
1
0
Leonid Kaganov
Обновленная программа выглядит так:

#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <fcntl.h>
#include <errno.h>
#include <termios.h>

char aaport[100];
# получаем от специального скрипта (я его выложил выше в обновлении заметке)
# адрес нынешнего расположения порта Ардуины типа /dev/ttyUSB1:
char *arduinoport(void) {
FILE *ff;
ff=popen("/bin/sh /opt/lleo/arduino_ttyUSB","r");
fread(&aaport,sizeof(aaport),1,ff);
pclose(ff);
return aaport;
}

int main(int argc, char* argv[]) {
int fd, ack=1, l=0,i;
char buff[100]="",longbuff[100]="";

fd=open(arduinoport(),O_RDONLY | O_NOCTTY);

while(1) { l=read(fd, buff, 100);
if(l>=100) { printf("error length
"); continue; }
if(l==-1 || l==0) {
close(fd);
printf("port_disconnect %s",aaport);
system("/opt/lleo/zvonkido.php port_disconnect %s",aaport);
sleep(60); // 1 min
fd=open(arduinoport(),O_RDONLY | O_NOCTTY);
printf("port_reconnect %s",aaport);
system("/opt/lleo/zvonkido.php port_connect %s",aaport);
continue;
}
buff[l]=0;
for(i=0;i<l;i++) {
if(buff[i]==0) { l=i; break; }
if(buff[i]==0x0D || buff[i]==0x0A) { l=i; buff[l]=0; break; }
if(buff[i]<32 || buff[i]==34 || buff[i]==39) { printf("hack error ['"]!
"); l=0; break; }
}

if(l) {
snprintf(longbuff,100,"/opt/lleo/zvonkido.php '%s'",buff);
printf("#%s#", longbuff);
system(longbuff);
}
}

close(fd);
return 0;
}
Windows Firefox
 Израиль
0
0
braintunic
Ну вот, стало немного похоже на программу, которая будет бежать несколько лет без проблем ;)
Так это уже работает? Ловится переключение серийного устройства USB с одного имени на другое?

По мелочи можно еще несколько нюансов улучшить:

1. Для запуска zvonkido лучше использовать execlp() вместо system(), вот так:
execlp("zvonkido.php", "/opt/lleo/zvonkido.php", buff, NULL);
В этом случае не будет проблем с апострофом и с кавычкой, они становятся допустимыми символами для ввода с Ардуино.
Кроме того, при таком запуске больше не будет подковёрно запускаться шелл - экономия памяти и времени.
Ну и массив longbuff станет ненужен.

2. Я бы всё-таки проверял на сбой (и докладывал) ещё и результаты функций open(), popen() и fread() - хотя бы для получения более полной картины, как там оно на самом деле бежит.

3. В вызове fread() я бы переставил местами второй и третий параметр - тогда будет возвращаться точное число прочитанных байт, а не ноль как сейчас.

Кстати, для комментов в тексте на Си не стоит использовать решетку ;)
Linux Firefox
 Richardson
2
0
Михаил (#1684620)
Работает это вряд ли, потому что выражения вроде
system("... %s", ...);
даже не должны компилироваться. ;–)

Вообще-то Леониду стоило бы RTFM по всем используемым функциям. Например, после l=read(fd, buff, 100) не может быть l>100.

И вместо того, чтобы 6 раз в разных местах писать "100" (более того, относящиеся к разным сущностям) и 3 раза "/opt/lleo/zvonkido.php", стоило бы определить их как константы или макросы. (А символы писать в виде символов, а не ASCII-кодов.)
Mac Safari
 Израиль
1
0
braintunic
> выражения вроде system("... %s", ...) даже не должны компилироваться

Как ни странно, но такое ошибочное выражение не только прекрасно скомпилируется, но и будет прекрасно работать! ;)
Ну, правда, команда zvonkido получит вторым параметром (после port_disconnect или port_connect) саму строчку "%s", а не то, что LLeo хотел туда передать, но мы же не знаем, что делает эта zvonkido при таких вызовах, может всего лишь извещает о смене устройства.
То что такой ошибочный код успешно скомпилируется, вызвано отсутствием инструкции:
#include <stdlib.h>
Эту инструкцию необходимо добавить, и тогда компиляция упадет на "too many arguments to function system".

Но вот остальные замечания, в отличие от этого, - чистые придирки!
Я могу еще десяток подобных придирок добавить ;)
Думаю, не стоит требовать профессионального уровня кодирования от персональной программы для персонального пользования.

P.S. Кстати, LLeo, замена system() на execl() делается нетривиально, нужно сперва вызвать fork(), а потом разделить обработку для отцовского и для порожденного процессов. Стоит научиться это кодировать на Си, этот мощнейший механизм еще может пригодиться.
Linux Ubuntu Firefox
 Москва
0
0
Leonid Kaganov
Но, кстати, особой связи с шиной не наблюдаю:

> lsusb
Bus 001 Device 009: ID 0403:6001 Future Technology Devices International, Ltd FT232 USB-Serial (UART) IC

/sys/bus/usb/devices/1-1.1.4:1.0/ttyUSB0
Windows Safari Chrome
 Санкт-Петербург
0
0
RBskates (#4330998)
Bus 001 - это шина 1-1, а вот Device 009 уже ни о чём не говорит. Подробно не изучал вопрос, хватило того, что путь не меняется :)
Linux Ubuntu Safari Chrome
 Санкт-Петербург
1
0
Николай Лещёв (#4307359)
1. А зачем взяли Ардуину, если не нравится среда разработки? Ардуину же вроде ради среды берут. Или просто посмотреть-попробовать?
2. Funduino Nano v3 Atmel ATmega328 - это китайская копия Arduino, только дешевле?
http://www.aliexpress.com/snapshot/6098843157.html
3. Может, пригодится: китайцы выпустили вот такой опенсорсный модуль - сердце роутера, OpenWRT-совместимый, с процом на 600 МГц, за $25. Я пока не понял, для кого он позиционируется - только для тех, кто всю обвязку сделает сам? Но вроде прикольно. Там, если посмотреть datasheet, в проце ещё 10/100 свич с аппаратным NAT'ом...
http://wrtnode.com
Linux Ubuntu Firefox
 Москва
0
0
Leonid Kaganov
1. Кристалл AVR, все остальное значения не имеет. Ардуино по большому счету, как мне кажется, даже не среда разработки, а протокол загрузки ;)

2. Да, они полностью заменяемы.

3. Смысл модуля мне не очень понятен. Как среда разработки кристалла с Линуксом - есть Raspberry PI, она прекрасно обжита. А если для какого-то серийного проекта выбирать дешевую постороннюю модель, то 600Мгц и 25$ - отнюдь не самые привлекательные параметры.
Windows Safari Chrome
 Краснодар
5
0
барисыч
У мня было нечто подобное. Закончилось казнью родного питателя и установкой большого и страшного питателя на 3А от сканера. После этого не только траблы с USB-устройствами пропали, но и скорость раздачи по Wi-Fi возросла :)
Windows Safari Chrome
 Москва
3
0
vivliofika
поддерживаю
Windows Safari Chrome
 Москва
1
0
vivliofika
поддерживаю
Windows Safari Chrome
 Mississauga
10
0
Vadimus
Прочитал сослепу про казнь большого и страшного писателя - жуть, что ночные апргрейды с людьми делают.
Linux Ubuntu Firefox
 Москва
1
1
aureliano (#4133370)
Такой скриптик не подойдёт?

#!/bin/bash

for i in /dev/sd[a-z]
do
dev="`fdisk -l $i | grep '1 30401 1953568008 83 Linux' | awk '{print $1}'`"
dev2="`df | grep /mnt/disk | awk '{print $1}'`"
if [ -n "$dev2" -a "$dev" != "$dev2" ]
then
umount "$dev2"
fi
if [ -n "$dev" ]
then
mnt="`df | grep $dev | awk '{print $6}'`"
if [ "$mnt" != "/mnt/disk" ]
then
umount $dev
mount $dev /mnt/disk
fi
fi
done

Запускается от рута либо через крон, либо в бесконечном цикле с паузами в n секунд/минут/часов, вместо grep '1 30401 1953568008 83 Linux' надо подставить начальный и конечный блоки, а также число блоков, id и название системы своего раздела (короче, скопировать в эту строчку выдачу команды fdisk для нужного раздела) (предполагается, что раздел с такими параметрами в системе 1, иначе возможна путаница). У меня в бубунте на i386 вроде работает. Если по скрипту что не понятно, готов ответить на непонятки.
Linux Safari Chrome
 Израиль
2
0
braintunic
Опа, скрипт в 20 строк кода для замены одной единственной команды:
# mount -U <UUID> /mnt/disk
Это, конечно, ещё не рекорд, но близко к тому ;)
Linux Ubuntu Firefox
 Москва
1
0
aureliano (#4133370)
Я так понял, что UUID не работает, поэтому и предложил подобный скрипт. В своё время, когда я делал инсталляторы с дискеток и был ограничен объёмом 1.4 Мб., - я писал скрипты, заменяющие команду more и многие другие стандартные команды, места для которых на дискетке не было.
Windows Safari Chrome
 Москва
0
0
vivliofika
Помидоры, чтобы плодоносили, ограничивают в разрастании куста. Их максимальный размер биологически ограничен только у нормальных сортов. Ты и сам пишешь, что селектированные сорта уже отрастили помидорки.
Windows Firefox
 Обнинск
0
0
Serg (#4089201)
Поставьте optware, там всё есть.
Linux Opera
 Москва
0
0
Leonid Kaganov
Что именно есть?
Windows Firefox
 Обнинск
0
0
Serg (#4089201)
Мой асус RT-N66U прошит Tomato Firmware 1.28.0000 MIPSR2-104 K26 USB AIO-64K

Плюс установлен optware (coreutils + куча линуксячего софта). В итоге имеем на рутере полноценный линукс, fstab есть, проблем с монтированием по uuid нет.
Linux Ubuntu Firefox
 Москва
0
0
Leonid Kaganov
Ну и у меня есть fstab, если его сохранить.
Linux Ubuntu Firefox
 Breckles
1
0
sem40 (#4588457)
Таки, а вам удалось напечатать себе новый коммуникатор на 3Д принтере??
Linux Ubuntu Firefox
 Москва
0
0
Leonid Kaganov
Пока на кошках тренируемся...
Windows
 Киев
0
0
Артем (#4376555)
Напечатали котика?
Linux Ubuntu Firefox
 Москва
1
0
Leonid Kaganov
Вчера - двух.
Windows Firefox
 Воронеж
1
0
Константин (kagrebennikov)
Предлагаю распечатать несколько 3D-принтеров. В масштабе 1:2. И чтобы они потом делали то же самое. И т.д., и т.п. Ну, вы меня поняли.
В итоге нашу Землю погубят не соседнее государство, не штаты и не злобный ботоксный карлик, не ядерное оружие, а 3D-принтеры. Разрушим их злобные планы!
Windows Safari Chrome
 Москва
4
0
vctor (#4596019)
1 + 1 / 2 + 1 / 4 + 1 / 8 + 1 / 16 + 1 / 32 ... = 1,96875

То есть ряд сходится и принтер никого не погубит.
Linux Firefox
 Richardson
0
0
Михаил (#1684620)
Слово «несколько» пропустили?
Windows Firefox
 Москва
0
0
vctor
Пропустил. Ленюсь считать, при каком количестве копий ряд начнёт расходиться. Может при двух, может при трёх.
Linux Firefox
 Richardson
0
0
Михаил (#1684620)
При восьми.
Масштаб задаёт линейные размеры, т. е. распечатанный принтер будет иметь объём в 8 раз меньше своего «родителя». Формулу суммы геометрической прогрессии проходят в школе. ;–)
Windows Firefox
 Москва
0
0
vctor
У прогрессии лимит, а сумма у ряда. Формулы можно посмотреть или помнить, а применять всё равно лень.
Windows Safari Chrome
 Пермь
3
0
chonbuk (#1953659)
«а то бы я принтер в коридоре-то воткнул :)»
и печатал бюсты всех посетителей, сканированных через дверной глазок?
Windows Firefox
 Израиль
1
0
braintunic
> печатал бюсты всех посетителей, сканированных через дверной глазок

Посетительниц.
Бюст, сканированный через Х-ray, в обнаженном виде...
Linux Opera
 Москва
0
0
Mike Novikoff
«Мимо прошла девушка с большим бюстом
Аристотеля в руках» (Кнышев)
Windows Safari Chrome
 Москва
0
0
vctor (#4596019)
Главное не фотографироваться рядом с бюстом Чайковского или Антиноя.
А то мало ли куда судьба занесёт и соседи не поймут.
Linux Ubuntu Firefox
 Санкт-Петербург
0
0
Николай Лещёв (#4325555)
Стало ли понятно, отчего винчестеры "прыгают"?
Linux Opera
 Москва
0
0
Leonid Kaganov
Нет, но проблема побеждена.
Linux Ubuntu Firefox
 Москва
0
0
aureliano (#4133370)
А чего тут понимать-то? Скорее всего usb периодически отваливается, но не сильно, и тут же обратно возвращается. У меня похожая проблема: 2 внешних винта Seagate, один временами отваливается, даже если не дотрагиваться до usb-провода или чего-то ещё, у другого всё ok, хотя фирма одна. Правда, проблем с переименованием нет, но когда проверял свой скрипт, сумел и эту проблему воспроизвести искусственно. Зато другая проблема имеется: как только диск отваливается и тут же обратно монтируется под тем же именем, емул уже не может его найти без перезапуска и приостанавливает все загрузки.
Linux Safari Chrome
 Mountain View
1
0
xaep (#4592290)
Про ардуину - в debian/ubuntu есть пакет arduino-mk, собственно набор мейкфайлов для сборки/прошивки ардуины.
FreeBSD Firefox
 Москва
4
0
Konvpalto (#4593634)
'/bin/cat /etc/passwd | /bin/sed 's#\/bin\/sh#\/bin\/bash#g' >/etc/passwd' -- это в некоторый момент (когда > сработает раньше /bin/cat) оставит вас с пустым /etc/passwd.
Linux Safari Chrome
 Санкт-Петербург
0
0
Константин
За чтож перлу то так досталось :( Ну не самый красивый, зато компактный, расширяемый и на том же роутере может бегать.
Windows Safari Chrome
 Mountain View
0
0
BodrovSerbod
У USB-Serial адаптеров на базе чипов FTDI часто не распаян чип памяти (сэкономили 15 рублей), и поэтому устройство не имеет серийного номера. А без серийного номера оно не может привязаться к конкретному порту/имени и может менять "прописку" даже во время работы. Если в системе только одно такое устройство, то можно привязать его к нужному имени (например, /dev/ttyUSB.duraino) в конфигах udev по VPI/VCI. Если таких устройств с одинаковыми VPI/VCI но без серийных номеров несколько, то программно проблема не решается. Привязываться к номеру физического порта в USB-хабе бесполезно - эти номера меняются при перезагрузке.

пример:
создаем /etc/udev/rules.d/99-ftdi.rules
====
SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", SYMLINK+="ttyUSB.CWK"
====

всего комментариев: 226

<< предыдущая заметка следующая заметка >>