Здравствуйте, ув форумчане!
Есть вопрос.На Gentoo через Debian chroot-окружение было установлено приложение DellOMSA.
Для нормального запуска и работы этого приложения необходимо выполнить команды.
mount -o bind /dev /var/debian/dev
mount -t proc none /var/debian/proc
mount -o bind /sys /var/debian/sys
chroot /var/debian/ /bin/bash
/etc/init.d/dataeng start
/etc/init.d/dsm_om_connsvc start
При ручном вводе этой последовательности команд все работает отлично.
Теперь необходимо настроить Gentoo чтобы после его перезагрузки все "заводилось" автоматом
Если я правильно понимаю,то монтирование файловых систем(первые три команды) можно "прикрутить" с помощью добавления записи в /etc/fstab такого содержания:
dev /var/debian/dev none rw,bind 0 0
proc /var/debian/proc none 0 0
/sys /var/debian/sys none rw,bind 0 0
Смена chroot-окружения и дальнейшее выполнение в нем команд(запуск приложения) вызывает у меня трудности.В bash-программировании я не силен.Так что, по возможности,подскажите подробнее пути решения этого вопроса
Заранее благодарен
P.S. С Gentoo только знакомлюсь поэтому сильно не пинайте smile
Как выполнить команды при запуске Gentoo
proc, dev и sys не обязательно прописывать в fstab вот у меня как-то так:
# cat /etc/fstab
/dev/sdb1 / reiserfs noatime,nodiratime,notail 0 1
/dev/sdb5 /var reiserfs notail 0 2
/dev/sdb4 /home ext4 discard,noatime,nodiratime 0 2
/dev/sdb3 /mnt/torrents ext4 discard,noatime,nodiratime 0 2
/dev/sda1 /mnt/deb reiserfs noatime,nodiratime,notail 0 2
/dev/sda5 none swap sw 0 0
shm /dev/shm tmpfs nodev,nosuid,noexec 0 0
/dev/sda10 /usr ext4 discard,noatime,nodiratime 0 2
/dev/sda6 /usr/portage reiserfs notail 0 2
/dev/sda9 /srv ext4 defaults 0 2
# Если /tmp нужен в ОЗУ
none /tmp tmpfs defaults 0 0fix:
dev /var/debian/dev none rw,bind 0 0
none /var/debian/proc proc defaults 0 0
/sys /var/debian/sys none rw,bind 0 0
ещё при bind'e я тип ещё прописываю auto, не знаю, на сколько это критично.
с составлением стартовых скриптов/куда это пихнуть в загрузку помочь затрудняюсь...
proc, dev и sys не обязательно прописывать в fstab вот у меня как-то так:
не о том в ветке речь...
/dev /var/debian/dev none rw,bind 0 0
Вы ведь монтируете директорию.
Стартовые скрипты можно написать в /etc/local.d/*.start
Соответственно, можно еще сделать какой-то клинап в /etc/local.d/*.stop
Но, только я не знаю, насколько это подойдет вам именно в этой ситуации. Там ведь chroot.
Можно попробовать написать скрипт, стартующий эти демоны (/etc/init.d/dataeng и /etc/init.d/dsm_om_connsvc) внутри дебиановского рута и передавать этот скрипт параметром при chroot вместо /bin/bash
Но это только в порядке бреда. Не уверен, что сработает.
Можно попробовать написать скрипт, стартующий эти демоны (/etc/init.d/dataeng и /etc/init.d/dsm_om_connsvc) внутри дебиановского рута и передавать этот скрипт параметром при chroot вместо /bin/bash
Но это только в порядке бреда. Не уверен, что сработает.
кстати, я в своё время для быстрого входа в chroot для сборки пакетов для ёжика по-другому немного делал, передавал башу в chroot'е скрипт на исполнение:
goin(){
echo "### Entering chroot"
echo "env-update" > $EEEROOT/root/updateenv.sh
echo "source /etc/profile" >> $EEEROOT/root/updateenv.sh
echo "PS1=\"(eee) \$PS1\"" >> $EEEROOT/root/updateenv.sh
chmod u+x $EEEROOT/root/updateenv.sh
chroot $EEEROOT /bin/bash --rcfile /root/updateenv.sh
}
Я вот тоже со стартовыми скриптами задумывался, скрипт iptables добавил в /etc/conf.d/net
postup() {
if [ "${IFACE}" = "eth0" ]; then
/usr/local/sbin/fire/start
fi
return 0
}
Также для себя писал простой init - скрипт с пустым case - start/stop/restart, - и добавлял что надо.
newzenon, для iptables есть штатные скрипты /etc/init.d/iptables
bobr, мне он не нравится. smile
Сделал следующим образом.Криво до безобразия,но только так все завелось
Для того, чтобы после перезагрузки сервера все поднималось автоматически создаем скрипт dellomsa в /etc/init.d/
Ставим выполнение скрипта в автозагрузку:
rc-config add dellomsa default
(в /etc/runlevels/default появляется символьная ссылка на запуск скрипта)
Добавляем в /etc/fstab следующее:
/dev /var/debian/dev none rw,bind 0 0
/sys /var/debian/sys none rw,bind 0 0
Устанавливаем необходимые модули в автозагрузку путем добавления их в файл /etc/conf.d/modules
cat /etc/conf.d/modules
modules="ipmi_msghandler"
modules="ipmi_devintf"
modules="ipmi_si"
Замечено:
1.Необходимые модули подключаются автоматически при загрузке ядра(lsmod | grep ipmi показывает их), но без включения их в скрипт Ipmi driver не запускается.Поэтому оставил их запуск еще и в скрипте.
2.Все «пляски» были в основном вокруг монтирования файловой системы /proc. При ручном монтировании командой
mount -t proc none /var/debian/proc
все необходимые службы запускаются нормально. При добавлении в /etc/fstab строки вида
proc /var/debian/proc none bind rw 0 0 или строки вида
none /var/debian/proc proc defaults 0 0
при загрузки службы не запускались
Starting network management services:start-stop-daemon: nothing in /proc -not mounted?
Opening /proc/modules No such file or directory
Вообщем добавил монтирование proc в скрипт.
Содержание скрипта dellomsa:
#!/sbin/runscript
depend() {
after *
}
start() {
modprobe ipmi_msghandler
modprobe ipmi_si
modprobe ipmi_devintf
mount -t proc none /var/debian/proc
ebegin "dataeng start"
chroot /var/debian /etc/init.d/dataeng start
# chroot /var/debian /etc/init.d/dsm_om_connsvc start
eend $? "Failed to start dataeng"
}
stop() {
ebegin "Stopping dataeng"
chroot /var/debian /etc/init.d/dataeng stop
# chroot /var/debian /etc/init.d/dsm_om_connsvc stop
umount /var/debian/proc
eend $? "Failed to stop dataeng"
}
Хотелось бы монтировать proc через fstab, но вот какую строку туда необходимо добавить не знаю
Возможно,кто-то что-то подскажет?
proc /proc proc rw 0 0
proc /proc proc defaults 0 0