Репозиторий Sisyphus
Последнее обновление: 1 октября 2023 | Пакетов: 18631 | Посещений: 37336422
en ru br
Репозитории ALT

Группа :: Система/Настройка/Прочее
Пакет: livecd-tmpfs

 Главная   Изменения   Спек   Патчи   Исходники   Загрузить   Gear   Bugs and FR  Repocop 

#!/bin/sh
#
# livecd-tmpfs Remount enough tmpfs into /tmp for development
#
# chkconfig: 345 96 04
# description: aimed at hasher/mkimage livecd users
# config: /etc/sysconfig/livecd-tmpfs

# Do not load RH compatibility interface.
WITHOUT_RC_COMPAT=1

# Source function library.
. /etc/init.d/functions

LOCKFILE=/var/lock/subsys/livecd-tmpfs
RETVAL=0

# defaults
MNT=/tmp
RAM=0
SWAP=0
DIFF=0
NEED=0

# it's assumed that he who configures knows what he's doing
# (no further safety net deployed)
SourceIfNotEmpty /etc/sysconfig/livecd-tmpfs

tmpfs_size()
{
# the task is specific enough that we ask for gigs not megs
df -T "$MNT" 2>/dev/null \
| awk '/^[a-zA-Z_0-9/-]+[[:space:]]+tmpfs/ { print int($3/1048576); }'
}

ram_size()
{
# there's no round() in awk, only int(); also vram/kernelernel
awk '/^MemTotal/ { print int($2/1048576+0.5) }' /proc/meminfo
}

swap_size()
{
# offset by a rough size of a legacy "cylinder" just in case
awk '/^SwapTotal/ { print int(($2+8192)/1048576) }' /proc/meminfo
}

guess_need()
{
# test if not overridden in config
if [ "$RAM" = 0 ]; then
echo -n "Checking for RAM size: "
RAM="$(ram_size)"
# at least 512m is practically needed for hasher tmpfs
case "$RAM" in
0) echo -n "insufficient"; echo_failure; echo; exit 1;;
1) echo -n "barely enough"; echo_passed;;
*) echo -n "${RAM}g"; echo_success;;
esac
echo
fi
if [ "$RAM" -lt 4 -a "$SWAP" = 0 ]; then
echo -n "Checking for swap size: "
SWAP="$(swap_size)"
# we don't rely on swap that bad but...
case "$SWAP" in
0) echo -n "none"; echo_passed;;
1) echo -n "barely enough"; echo_passed;;
*) echo -n "${SWAP}g"; echo_success;;
esac
echo
fi
# some space must be set aside for the processes
if [ "$RAM" -lt 4 ]; then DIFF=1; else DIFF=2; fi
# try to come up with proper tmpfs size
VM="$(($RAM+$SWAP))"
if [ "$VM" -lt 2 ]; then
NEED="$RAM"
else
# lower-memory systems will employ swap
if [ "$RAM" -lt 8 ]; then
NEED="$(($VM-$DIFF))"
else
NEED="$(($RAM-$DIFF))"
fi
fi
}

# TODO: swap support/heuristics
start()
{
# check for tmpfs (mounted/size)
echo -n "Checking for tmpfs in $MNT: "
TMPFS="$(tmpfs_size)"
# we should only change fs size, not type; at least a gig is needed
case $TMPFS in
"") echo -n "none"; echo_failure; echo; exit 1;;
0) echo -n "not enough"; echo_failure;;
1) echo -n "barely enough"; echo_passed;;
*) echo -n "${TMPFS}g"; echo_success;;
esac
echo
# might be specified in config
if [ "$NEED" = 0 ]; then guess_need; fi
# things might be set up just fine already
if [ "$NEED" -gt "$TMPFS" ]; then
echo -n "Adjusting $MNT size to ${NEED}g: "
mount -o remount,size="$NEED"g "$MNT" \
&& echo_success \
|| echo_failure
echo
else
echo -n "No need to adjust $MNT size to ${NEED}g" \
"(it's ${TMPFS}g already)"
echo_success
echo
fi
RETVAL=$?
return $RETVAL
}

stop()
{
mount -o remount "$MNT"
RETVAL=$?
return $RETVAL
}

restart()
{
stop
start
}

# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
reload)
restart
;;
restart)
restart
;;
condstop)
if [ -e "$LOCKFILE" ]; then
stop
fi
;;
condrestart)
if [ -e "$LOCKFILE" ]; then
restart
fi
;;
condreload)
if [ -e "$LOCKFILE" ]; then
restart
fi
;;
status)
if [ -d "$MNT" ]; then
df -Th "$MNT"
fi
RETVAL=$?
;;
*)
msg_usage "${0##*/} {start|stop|reload|restart|condstop|condrestart|condreload|status}"
RETVAL=1
esac

exit $RETVAL
 
дизайн и разработка: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
текущий майнтейнер: Michael Shigorin