LinuxForum.Fans
Тема

Как выполнить команды при запуске Gentoo

Автор: kamaok 10 сообщений 6241 просмотров
#207192

Здравствуйте, ув форумчане!
Есть вопрос.На 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

#207202

proc, dev и sys не обязательно прописывать в fstab вот у меня как-то так:

text
# 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 0
#207465

fix:

kamaok написал:
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, не знаю, на сколько это критично.

с составлением стартовых скриптов/куда это пихнуть в загрузку помочь затрудняюсь...

newzenon написал:
proc, dev и sys не обязательно прописывать в fstab вот у меня как-то так:

не о том в ветке речь...

#207477
kamaok написал:
/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
Но это только в порядке бреда. Не уверен, что сработает.

#207483
bobr написал:
Можно попробовать написать скрипт, стартующий эти демоны (/etc/init.d/dataeng и /etc/init.d/dsm_om_connsvc) внутри дебиановского рута и передавать этот скрипт параметром при chroot вместо /bin/bash
Но это только в порядке бреда. Не уверен, что сработает.

кстати, я в своё время для быстрого входа в chroot для сборки пакетов для ёжика по-другому немного делал, передавал башу в chroot'е скрипт на исполнение:

text

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
}
#207484

Я вот тоже со стартовыми скриптами задумывался, скрипт iptables добавил в /etc/conf.d/net

text

postup() {
 if [ "${IFACE}" = "eth0" ]; then
    /usr/local/sbin/fire/start
 fi
 return 0
}

Также для себя писал простой init - скрипт с пустым case - start/stop/restart, - и добавлял что надо.

#208185

newzenon, для iptables есть штатные скрипты /etc/init.d/iptables

#208193

bobr, мне он не нравится. smile

#208413

Сделал следующим образом.Криво до безобразия,но только так все завелось
Для того, чтобы после перезагрузки сервера все поднималось автоматически создаем скрипт 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, но вот какую строку туда необходимо добавить не знаю
Возможно,кто-то что-то подскажет?

Войдите или зарегистрируйтесь, чтобы ответить.