Настройка домашнего сервера Linux (Часть 4)

Startup-scripts

В файл pre-boot:

vi /usr/local/sbin/pre-boot
Поместить содержимое:

#! /bin/sh
В следующий файл поместить содержимое, что позволит оставить файловую систему чистой:

vi /usr/local/sbin/pre-mount
С этим содержимым:

#! /bin/sh

swapon -a

for i in `awk '/ext3/{print($1)}' /etc/fstab` ; do
  if [ -b $i ] ; then
    grep -q $i /proc/mounts || e2fsck -p $i 2>&1 | logger -t e2fsck
  else
    logger -t fstab "$i is not attached"
  fi
done

pre-mount выполнит команду e2fsck если это необходимо. Однако это может занять значительное количество времени. Можно оставить pre-mount пустым, чтобы не допустить этого, но файловая система должна проверяться время от времени во избежания ошибок.

В файл post-mount:

vi /usr/local/sbin/post-mount
Поместить содержимое:

#! /bin/sh
/opt/etc/init.d/rc.unslung start
В файл pre-shutdown, который выполняется перед выключением:

vi /usr/local/sbin/pre-shutdown
Поместить содержимое:

#! /bin/sh

/opt/etc/init.d/rc.unslung stop

sleep 10s

for i in `cat /proc/mounts | awk '/ext3/{print($1)}'` ; do
  mount -oremount,ro $i
done

swapoff -a

sleep 1s
Этот сценарий останавливает все запущенные службы, а так же помечает все разделы как доступные только для чтения. Что бы предотвратить потери данных при выключении питания.

Теперь нужно пометить файлы как выполняемые:

chmod +x /usr/local/sbin/*
Далее выполнить перезагрузку:

flashfs save && flashfs commit && flashfs enable && reboot
После проверяем командой df раздел swap и разделы с данными. Если все так, то продолжаем.

Далее нужно создать папку etc для хранения конфигурационных файлов и init.d внури etc для автоматического старта сервисов, так же создать файл rc.unslung который будет автоматически запускать сервисы при запуске системы.

mkdir /opt/etc
mkdir /opt/etc/init.d
vi /opt/etc/init.d/rc.unslung
Содержимое:

 #! /bin/sh

 # Start/stop all init scripts in /opt/etc/init.d
 # starting them in numerical order and
 # stopping them in reverse numerical order
 #
 if [ $# -ne 1 ]; then
 printf "Usage: $0 {start|stop}\n" >&2
 exit 1
 fi

 daemons=`echo $(/usr/bin/dirname $0)/S??*`
 [ $1 = "stop" ] && daemons=`echo $daemons | /usr/bin/tr " " "\n" | /usr/bin/sort -r`

 for i in $daemons; do

 # Ignore dangling symlinks (if any).
 [ ! -f "$i" ] && continue

 # Write to syslog
 logger -t rc.unslung "$1 service $i"

 case "$i" in
 *.sh)
 # Source shell script for speed.
 (
 trap - INT QUIT TSTP
 set $1
 . $i
 )
 ;;
 *)
 # No sh extension, so fork subprocess.
 $i $1
 ;;
 esac
 done 
Сделать выполняемым файл:

chmod +x /opt/etc/init.d/rc.unslung
Прочли: 5475 | Изменено: 08 июля 2011 | Добавлено: 24 апреля 2011 | На главную