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