
Проект благополучно накрылся медным тазом по ряду не зависящих от меня причин, но в его ходе была получена рабочая конфигурация + опыт. Напишу тут как это все делается чтобы не забыть, если потом еще раз надо будет (все же день убил на это - зря что ли?).
В качестве дистрибутива был выбран свежий Debian 6, а вернее его официальный субпроект под названием Webconverger. Фишка этого дистрибутива в том, что там все что только можно уже залоченно и отгрызано. Есть только firefox который нельзя закрыть, adobe flash и adobe acrobat. Короче готовый киоск - бери и пользуйся! На сайте webconverger.org есть ISO имиджы - их можно записать на CD или на флешку или сразу на жард.
Но мне надо было добавить в дефолтную инсталяцию sshd, zabbix-agent и x11vnc и еще разного, а так же поменять картинки вылезаюзщие при загрузке. Кроме тога надо было обеспечить работу USB модема так как дефолтная ISO инсталяция умеет работать только с ethernet и wi-fi сетями (никаких NetworkManager нет). Таким образом мне надо было создать свой кастомизированный ISO.
Шаги создания такие:
- Устанавливаем себе свежий Debian. Выпроняем apt-get update.
- После создаем файл /etc/apt/preferences.d/live-helper:
Код: Выделить всё
Package: live-helper
Pin: release a=squeeze
Pin-Priority: 900
Package: live-build
Pin: release a=squeeze
Pin-Priority: 900
Код: Выделить всё
deb http://live.debian.net/ sid-snapshots main contrib non-free
deb-src http://live.debian.net/ sid-snapshots main contrib non-free
Код: Выделить всё
apt-get install live-helper
- Вручную скачиваем и устанавлеваем старый live-build из второй версии от сюда:
Код: Выделить всё
http://live.debian.net/archive/packages/live-build/2.0~a29-1/live-build_2.0~a29-1_all.deb
- Скачиваем дерево исходников
Код: Выделить всё
mkdir /home/temp
cd /home/temp
git clone git://git.debian.org/git/debian-live/config-webc.git
После того как исходники скачаются мы можем приступать к кастомизации инсталяции. Есть несколько мест которые надо настроить:
- файл ./config-webc/webconverger/auto/config там самое главное это строка
Код: Выделить всё
--bootappend-live "homepage=http://www.homepage.com nonetworking nopersistent quickreboot nomodeset noroot splash" \
noroot - отключение возможности нажать Shift+Alt+Enter для вызова консольки (я его убирал пока игрался - для дебага)
остальные параметры см на сайте разработчиков.
- файл ./config-webc/webconverger/config/chroot_local-packageslists/webconverger.list
Код: Выделить всё
# MY CUSTOM
zabbix-agent
openssh-server
mc
x11vnc
ppp
usb-modeswitch
wvdial
##
# Webconverger's main configuration hendry@webconverger.com
# Minimal
eject file sudo wget netbase ifupdown
# Standard
console-common kbd locales
dhcp3-client
# X11
xorg
- Директория ./config-webc/webconverger/config/chroot_local-includes/etc
Код: Выделить всё
# ls -la
total 32
drwxr-xr-x 4 root root 4096 Feb 15 15:56 .
drwxr-xr-x 3 root root 4096 Feb 14 12:30 ..
-rw-r--r-- 1 root root 765 Feb 15 16:35 crontab
drwxr-xr-x 3 root root 4096 Feb 14 12:30 iceweasel
-rw-r--r-- 1 root root 401 Feb 14 11:08 iptables.conf
-rw-r--r-- 1 root root 161 Feb 14 12:30 mozpluggerrc
drwxr-xr-x 3 root root 4096 Feb 14 12:30 network
-rw-r--r-- 1 root root 120 Feb 14 12:30 sysctl.conf
- файл crontab
Код: Выделить всё
@reboot root ( /live/image/TEST/START )
После того как сделаны все кастомизации и настройки можно начинать строить имидж
Идем в /home/temp/config-webc/webconverger/ и выполняем:
- для построемня ISO имиджа
Код: Выделить всё
lh lh config
Код: Выделить всё
lh lh config-b usb-hdd
-Далее выполняем
Код: Выделить всё
lh build
Мне надо было писать на жесткий диск. Это делается так - загружаемся с какого-нить Live CD, и через dd просто в тупую копируем сектора из имиджа на диск:
Код: Выделить всё
dd if=/mnt/flashdisk/webconwerger/binary.img of=/dev/sda
Как я уже сказал, мне надо было добиться работы с USB модемом. Для этого перед созданием образа я поместил в crontab:
Код: Выделить всё
@reboot root ( /live/image/TEST/START )
ppp - ппп демон.
usb-modeswitch - тулза которая на лету переключает USB модем из режима USB storage в режим USB modem.
wvdial - тулза для отсылки AT команд на модем (PIN, инициализация, etc) и дял запуска ppp демона.
После того как образ через dd был записан на жеский диск киоска, я подмонтировал /dev/sda1 в /mnt и создал директорию /mnt/TEST/
Туда я поместил файлы:
- скрипт START
Код: Выделить всё
#!/bin/sh
DROOT="/live/image/TEST"
/usr/bin/wvdial --config $DROOT/WVDIAL.CON pin
sleep 5
/usr/bin/wvdial --config $DROOT/WVDIAL.CON provider
- крнфигурационный файл WVDIAL.CON
Код: Выделить всё
[Dialer Defaults]
Modem = /dev/ttyUSB0
[Dialer provider]
Modem = /dev/ttyUSB0
Baud = 115200
Init2 = AT+CGDCONT=1,"IP","mobileinternet.provider.com"
Phone = *99#
Username = *
Password = *
New PPPD = yes
Auto DNS = 1
[Dialer pin]
Modem = /dev/ttyUSB0
Baud = 115200
Init1 = AT+CPIN=0000]
Таким образом получается схема: киоск стартует и разворачивает в память live файловую систему с корнем и всеми делами которые уже нельзя менять без полной пересборки имиджа. Директория с FAT раздела /mnt/TEST/ (то что я монтировал руками сразу после записи имиджа и куда скоадывал конфиги) автоматически монтиреутся как /live/image/TEST. При старте cron запускает мой скрипт который скармлевает модему PIN и запускает pppd.
Так как конфиг WVDIAL.CON лежит на FAT разделе, то при жедании можно будет менять что надо без пересборки имиджа.
Если бы я выбрал построение не IMG а ISO то менять уже ничего не смог бы.
Такие дела, да

Если понадобится пересобрать имидж по новой, то:
Код: Выделить всё
lh clean --all
lh clean --purge
lh config -b usb-hdd
lh build