Сканер на тележке
С первого и по тринадцатое с песнями, шутками, танцами…
Чем же еще заниматься-то с первого и по тринадцатое?
—Несчастный случай
Отгремели корпоративы и неумолимо приближался Новый Год. Для нас не сделали исключения и устроили корпоратив с традиционным возлиянием в Максимилианс.
После него технари компании решили, что в праздновании не хватает IT и был проведён второй — IT — корпоратив с применением X-Box 360, Kinect и метрового телевизора. В процессе оного в голову пришло множество весёлых и главное реализуемых мыслей. Те кто никогда не использовал Kinect врядли поймут…
Одной из мыслей было соорудить некий необычный и полезный агрегат с возможностью ежедневного использования. Вспомнились недавние приключения со сканированием чего-то с бегатнёй по кабинетам.
А почему бы не сделать наш сканер более мобильным?
Под это дело была произведена ревизия заскладированных по всему офису «железок».
Нашлось:
2 x SO-DIMM DDR3 4Gb Patriot
блок питания от ноута ASUS 19V (сейчас заменён на менее мощный FPS)
Сканер HP ScanJet G2410
Офисный стул на колёсиках с отломленной саппортерами спинкой.
Из подручных необходимых средств были использованы Zalman VE200, Debian 6.0.5 amd64 netinst вариант в виде iso, usb клавиатура, ethernet патч корды, Olympus FE-115.
Десятого вроде заняться нечем…
Отлично! Десятого лечим печень
—Несчастный случай
Собираем всё это в кучку и получаем нечто такое:
Конструкция абсолютно бесшумная после установки Debian на SSD и отключения VE200.
Debian ставим в минимальном варианте + ssh (он понадобится для второго/запасного/прямого варианта доступа к сканеру).
Теперь подготовим Debian для работы с ssd в режиме read-only. Поскольку «тележка» — агрегат мобильный, то восстанавливать fs будет совершенно неинтересно.
Для работы os потребуется запись в /tmp, /var/tmp, /run и всякие /var/* (типа lock и log). Перенесём их в память.
cd /var
rm -rf tmp run lock log
ln -s /dev/shm
ln -s /dev/shm lock
ln -s /dev/shm run
ln -s /dev/shm log
cd /etc/network
rm -rf run
ln -s /dev/shm run
cd /var/lib
rm -rf urandom
ln -s /dev/shm urandom
Отключаем ненужные нам, но включенные по умолчанию сервисы:
update-rc.d cron remove
update-rc.d exim4 remove
update-rc.d nfs-common remove
update-rc.d portmap remove
Для того чтобы можно было использовать перенесённые в память каталоги нужно при каждой загрузке создавать там структуры каталогов. Сделаем это через initd скрипт /etc/init.d/tmpfs в т.ч. и для не особо нужных каталогов.
#!/bin/bash ### BEGIN INIT INFO # Provides: tmpfs # Required-Start: # Required-Stop: # X-Stop-After: sendsigs # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 ### END INIT INFO mount tmpfs -t tmpfs /tmp cd /tmp mkdir exim4 sshd log chmod 750 exim4 chown Debian-exim:Debian-exim exim4 touch utmp chmod 660 utmp chgrp utmp utmp cd log mkdir apt exim4 fsck installer news chmod 2750 exim4 chown Debian-exim:adm exim4 touch dmesg wtmp lastlog chmod 660 wtmp lastlog chgrp utmp wtmp lastlog exit 0
И подключим его к загрузке:
chmod 755 /etc/init.d/tmpfs
update-rc.d tmpfs defaults
Теперь надо добавить /tmp в /etc/fstab.
echo "tmpfs /tmp tmpfs defaults 0 0" >> /etc/fstab
Поскольку логов в случае чего не будет, то можно на всякий случай настроить удалённое логирование:
echo "*.*;auth,authpriv.none @10.0.0.21" >> /etc/rsyslog.conf
/etc/init.d/rsyslog restart
Здесь 10.0.0.21 — IP адрес сервера, который принимает нашил логи.
Перезагружаемся…
Редактируем параметры монтирования / на noatime,ro.
sed -ir 's/\/\s+ext4\s+defaults/\/ ext4 noatime,ro/' /etc/fstab
И мы получили девайс, который не боится внезапного отключения питания и загружается за 20 секунд. А нам быстрее и не надо.
Теперь займёмся собственно сканером. Установим нужный пакет, включим автозапуск и добавим сеть для которой он будет работать:
aptitude install -y sane
sed -i 's/RUN=no/RUN=yes/' /etc/default/saned
echo "10.0.0.0/24" >> /etc/sane.d/saned.conf
HP 2400 не поддерживается в sane и в Debian нет ничего для него. Но зато есть такой репозитарий для Ubuntu. Подключим его к нашей тележке:
echo "deb http://ppa.launchpad.net/lion-simba/hp2400/ubuntu karmic main" >> /etc/apt/sources.list
aptitude update
Установим найденные hp2400 пакеты:
aptitude install -y libsane-hp2400x64 xsane
Сканер готов. Проверим:
# scanimage -L
device `net:10.0.0.3:genesys:libusb:004:002' is a Hewlett Packard ScanJet 2400c flatbed scanner
Здесь 10.0.0.3 — это IP тележки по проводной сети.
Теперь сделаем тележку чуть более мобильной. Для этого подключимся к сети по wifi, тем более, что у нас есть DWA-125.
aptitude install -y wireless-tools firmware-ralink wpasupplicant
В /etc/network/interfaces вписываем следующее для назначения статичного IP адреса.
auto wlan0
iface wlan0 inet static
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
address 10.0.0.241
netmask 255.255.255.0
gateway 10.0.0.1
dns-nameservers 10.0.0.1 10.0.0.2
Шлюз и DNS, конечно, можно не указывать, но вдруг что-то понадобится обновить или доставить?
При этом не забываем удалить allow-hotplug eth0 или auto eth0 из того же конфига:
sed -ir 's/allow-hotplug eth0//' /etc/network/interfaces
sed -ir 's/auto eth0//' /etc/network/interfaces
Поскольку wifi сеть с WPA, то нам понадобится еще и конфиг для wpasupplicant на который мы уже сослались /etc/wpa_supplicant/wpa_supplicant.conf:
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=root
network={
ssid="наша точка"
key_mgmt=WPA-PSK
psk="наш ключ"
}
Одиннадцатого решаем задачу
Как не поехать к друзьям на дачу.
Но все же едем. Итог известен:
Включая двенадцатое куролесим.
—Несчастный случай
Теперь приступим к физической мобильности нашей тележки.
Для начала возьмём стул, открутим от него ручки и крепёжные винты, вскроем и оценим внутреннее пространство:
Места более чем достаточно для размещения mATX платы, блока питания, пары шнуров и wifi usb карты. Но контакты с платы не должны касаться металлических частей стула. Для этого после рытья в шкафах находим нечто, что можно использовать для крепежа к стулу и в качестве стоек для платы.
И неплохо получилось:
В сборе стул выглядит вполне естественно:
Но если заглянуть снизу, то становятся заметны высокие технологии. 😉
Сканер потом поставим сверху, но сначала надо решить вопрос с питанием. Лишнего UPS’а под рукой не оказалось, поэтому решили задействовать обычный электрический удлинитель на 3 посадочных места. Длина шнура более 10 метров, что опять же даёт ощутимую мобильность. К стула удлинитель прикреплён пластиковыми стяжками.
Вот так выглядит законченный вариант «сканирующей тележки».
В качестве окончательного хулиганства водрузили на эту же конструкцию еще и шредер. Отсканировал документ и тут же уничтожил не отходя. 😀
Как же хочется на работу!
К станку, к прилавку, куда угодно!
—Несчастный случай
С Новым Годом! Надеюсь, Вы улыбнулись читая это. 😉
Редакторская версия: http://habrahabr.ru/company/webnames/blog/166557/