szybsze bootowanie.
Wojtek Kaniewski
wojtekka w bydg.pdi.net
Sob, 20 Kwi 2002, 15:46:20 CEST
patch jest prosty. jeśli ustawimy FASTRC=yes w /etc/sysconfig/system,
skrypty startowe:
- nie obsługują nls, przez co odpadają setki wywołań gettext,
- nie obsługują dziwnych terminali, więc nie wołamy tput tysiąc razy,
- starają się nie używać awka tam, gdzie to jest zbędne.
dzięki temu czas bootowania (mierzony od ,,INIT blabla starting'' do
pojawienia się ,,login:'') zmniejszył się u mnie z 45 sekund do 27
sekund. na serwerach to nie ma znaczenia wielkiego, ale na workstacji,
która jest bootowana kilka(naście) razy dziennie, albo którą się
uruchamia rano przed wyjściem do pracy/szkoły, żeby szybko coś zrobić
skrócenie czasu o 1/3 to jednak sporo.
i tak, zdaję sobie sprawę z tego, że mogą w bardzo dziwnych sytuacjach
zachować się nieprawidłowo, ale dlatego właśnie to jest _opcja_, a nie
zmiana domyślnego zachowania skryptów. zresztą na często bootowanych
workstacjach i tak wiele rzeczy pewnie nie działa tak jak trzeba ;)
pozdrawiam,
wojtek
-------------- następna część ---------
--- rc.d.orig/init.d/functions Mon Jan 28 05:01:28 2002
+++ rc.d/init.d/functions Sat Apr 20 15:25:18 2002
@@ -19,12 +19,14 @@
# Source configuration if available - may override default values
[ -r /etc/sysconfig/system ] && . /etc/sysconfig/system
+INIT_DOTS=$(awk "BEGIN{for(\$i=0;\$i<$INIT_COL;\$i++)printf(\".\");}")
+
[ -z "$COLUMNS" ] && COLUMNS=80
# Colors workaround
termput()
{
- if [ ! -d /usr/share/terminfo ] || \
+ if is_yes "$FASTRC" || [ ! -d /usr/share/terminfo ] || \
[ ! -x /usr/bin/tput -a ! -x /bin/tput ]; then
case "$1" in
hpa)
@@ -108,11 +110,11 @@
return
fi
- if [ -x /bin/gettext -o -x /usr/bin/gettext ]; then
+ if ! is_yes "$FASTRC" && [ -x /bin/gettext -o -x /usr/bin/gettext ]; then
text=$(TEXTDOMAINDIR="/etc/sysconfig/locale" gettext -e --domain="${NLS_DOMAIN:-rc-scripts}" "$message")
printf_ "$text" "$@"
else
- printf_ "$message" "$@"
+ printf "$message" "$@"
fi
echo -en "$msg_echo"
@@ -158,9 +160,17 @@
show()
{
typeset text
- text=$(nls "$@")
- echo -n "$text"
- awk "BEGIN { for (j=length(\"$text\"); j<$INIT_COL; j++) printf \".\" }"
+
+ if is_yes "$FASTRC"; then
+ echo -n "$INIT_DOTS"
+ termput hpa 0
+ printf "$@"
+ termput hpa $INIT_COL
+ else
+ text=$(nls "$@")
+ echo -n "$text"
+ awk "BEGIN { for (j=length(\"$text\"); j<$INIT_COL; j++) printf \".\" }"
+ fi
}
# Displays message in square brackests ("[ DONE ]"). Takes two arguments.
@@ -226,13 +236,22 @@
message=$1
show "$message"; busy
shift
- if errors=$(HOME=/tmp TMPDIR=/tmp initlog -c "$*" 2>&1); then
- ok
- log_success "$1 $message"
+ if is_yes "$FASTRC"; then
+ if errors=$(HOME=/tmp TMPDIR=/tmp $* 2>&1); then
+ ok
+ else
+ fail
+ exit_code=1
+ fi
else
- fail
- log_failed "$1 $message"
- exit_code=1
+ if errors=$(HOME=/tmp TMPDIR=/tmp initlog -c "$*" 2>&1); then
+ ok
+ log_success "$1 $message"
+ else
+ fail
+ log_failed "$1 $message"
+ exit_code=1
+ fi
fi
[ -n "$errors" ] && [ $exit_code -eq 1 -o $force_err -eq 1 ] && echo "$errors"
return $exit_code
--- sysconfig.orig/system Sat Apr 20 15:32:05 2002
+++ sysconfig/system Sat Apr 20 15:27:46 2002
@@ -6,6 +6,10 @@
# Print status at which column
INIT_COL=67
+# Do you want fast boot? (without NLS, excessive logging and fancy
+# terminals support)
+FASTRC=no
+
# Messages with a higher priority than this will be printed
# to the console (default 1)
CONSOLE_LOGLEVEL=1
Więcej informacji o liście dyskusyjnej pld-rc-scripts