r1236 - trunk/packages/lfs-bootscripts

alexander at linuxfromscratch.org alexander at linuxfromscratch.org
Tue Dec 6 21:40:28 PST 2005


Author: alexander
Date: 2005-12-06 22:40:21 -0700 (Tue, 06 Dec 2005)
New Revision: 1236

Added:
   trunk/packages/lfs-bootscripts/font-errors.dat
   trunk/packages/lfs-bootscripts/font.dat
   trunk/packages/lfs-bootscripts/lang.dat
Modified:
   trunk/packages/lfs-bootscripts/Makefile
   trunk/packages/lfs-bootscripts/console
Log:
Merged UTF-8 related changes to LFS bootscripts


Modified: trunk/packages/lfs-bootscripts/Makefile
===================================================================
--- trunk/packages/lfs-bootscripts/Makefile	2005-12-07 05:22:18 UTC (rev 1235)
+++ trunk/packages/lfs-bootscripts/Makefile	2005-12-07 05:40:21 UTC (rev 1236)
@@ -21,6 +21,7 @@
 	cp $(SRC)/$(FILE) $(LFSSRC)
 
 compile-stage2:
+	sed -i s/sane/cooked/ lfs/init.d/functions
 	make install-livecd
 	install -m 755 lfs/init.d/mountkernfs /etc/rc.d/init.d
 	ln -sf ../init.d/mountkernfs /etc/rc.d/rcsysinit.d/S00mountkernfs
@@ -32,6 +33,8 @@
 	ln -sf ../init.d/clkconf /etc/rc.d/rcsysinit.d/S59clkconf
 	install -m 755 ../langconf /etc/rc.d/init.d/
 	ln -sf ../init.d/langconf /etc/rc.d/rcsysinit.d/S69langconf
+	mkdir -p /etc/langconf
+	install -m 644 ../*.dat /etc/langconf
 	install -m 755 ../console /etc/rc.d/init.d/
 	rm -f /etc/rc.d/rc0.d/S99halt
 	rm -f /etc/rc.d/rc6.d/S99reboot

Modified: trunk/packages/lfs-bootscripts/console
===================================================================
--- trunk/packages/lfs-bootscripts/console	2005-12-07 05:22:18 UTC (rev 1235)
+++ trunk/packages/lfs-bootscripts/console	2005-12-07 05:40:21 UTC (rev 1236)
@@ -2,15 +2,14 @@
 ########################################################################
 # Begin $rc_base/init.d/console
 #
-# Description : Sets keymap and screen font (LiveCD version)
+# Description : Sets keymap and screen font
 #
 # Authors     : Gerard Beekmans - gerard at linuxfromscratch.org
 #		Alexander E. Patrakov
 #
-# Version     : 00.00-livecd
+# Version     : 00.03
 #
-# Notes       : Unlike the stock "console" script, this version guesses
-#               the correct font based on the user's locale.
+# Notes       :
 #
 ########################################################################
 
@@ -18,96 +17,86 @@
 . ${rc_functions}
 
 # Native English speakers probably don't have /etc/sysconfig/console at all
-if [ -f /etc/sysconfig/console ]; then
+if [ -f /etc/sysconfig/console ]
+then
 	. /etc/sysconfig/console
 fi
 
-
-guess_font() {
-        CHARMAP=`locale charmap`
-
-	FONTTABLE='
-#Charset:FONT:ERROR_FLAG:CAVEAT
-ANSI_X3.4-1968:default-8x16:0:You forgot to (correctly) set your locale!
-BIG5:default-8x16:1:Chinese is not supported by this Live CD. Sorry.
-BIG5-HKSCS:default-8x16:1:Chinese is not supported by this Live CD. Sorry.
-CP1251:cyr-sun16 -m cp1251:0:
-CP1255:LatArCyrHeb-16 -m 8859-8:0:The "kbd" package does not support CP1255 encoding, using ISO-8859-8 instead.
-EUC-JP:default-8x16:1:Japanese is not supported by this Live CD. Sorry.
-EUC-KR:default-8x16:1:Korean is not supported by this Live CD. Sorry.
-EUC-TW:default-8x16:1:Chinese is not supported by this Live CD. Sorry.
-GB18030:default-8x16:1:Chinese is not supported by this Live CD. Sorry.
-GB2312:default-8x16:1:Chinese is not supported by this Live CD. Sorry.
-GBK:default-8x16:1:Chinese is not supported by this Live CD. Sorry.
-GEORGIAN-PS:default-8x16:1:Georgian is not supported by this Live CD. Sorry.
-ISO-8859-1:lat1-16 -m 8859-1:0:
-ISO-8859-2:lat2a-16 -m 8859-2:0:
-#ISO-8859-3:iso03.16 -m 8859-3:0:Line drawing characters are not available with this font.
-ISO-8859-3:LatArCyrHeb-16 -m 8859-3:0:Bright colors are not available with this font.
-#ISO-8859-5:iso05.16 -m 8859-5:0:Line drawing characters are not available with this font.
-ISO-8859-5:LatArCyrHeb-16 -m 8859-5:0:Bright colors are not available with this font.
-#ISO-8859-6:iso06.16 -m 8859-6:0:Line drawing characters are not available with this font.
-ISO-8859-6:LatArCyrHeb-16 -m 8859-6:0:Bright colors are not available with this font.
-ISO-8859-7:iso07u-16 -m 8859-7:0:
-ISO-8859-8:LatArCyrHeb-16 -m 8859-8:0:Bright colors are not available with this font.
-ISO-8859-9:cp857.16 -u /usr/share/kbd/consoletrans/cp857_to_uni.trans -m 8859-9:0:
-#ISO-8859-10:iso10.16 -m 8859-10:0:Line drawing characters are not available with this font.
-ISO-8859-10:LatArCyrHeb-16 -m 8859-10:0:Bright colors are not available with this font.
-#ISO-8859-13:lat7-14 -m 8859-13:0:Line drawing characters are not available with this font.
-ISO-8859-13:LatArCyrHeb-16 -m 8859-13:0:Bright colors are not available with this font.
-ISO-8859-14:default-8x16:1:Welsh is not supported by this Live CD. Sorry.
-ISO-8859-15:lat0-16 -m 8859-15:0:
-#KOI8-R:koi8r-8x16 -u koi8r -m koi8-r:0:This font is ugly.
-KOI8-R:cyr-sun16 -m koi8-r:0:
-KOI8-T:cyr-sun16 -m koi8-r:0:The "kbd" package does not support KOI8-T encoding, using KOI8-R instead.
-KOI8-U:cyr-sun16 -m koi8-u:0:
-PT154:cyr-sun16 -m cp1251:0:The "kbd" package does not support PT154 encoding, using CP1251 instead.
-TCVN5712-1:default-8x16:1:Vietnamese is not supported by this Live CD. Sorry.
-TIS-620:default-8x16:1:Thai is not supported by this Live CD. Sorry.
-UTF-8:LatArCyrHeb-16:0:\033%GThis Live CD does not officially support UTF-8.
-'
-
-	FONTLINE=`echo "$FONTTABLE" | egrep "^$CHARMAP:"`
-	FONT=`echo "$FONTLINE" | cut -d ":" -f 2`
-	ERROR=`echo "$FONTLINE" | cut -d ":" -f 3`
-	FONT_PROBLEM=`echo "$FONTLINE" | cut -d ":" -f 4`
-
-	return $ERROR
+is_true() {
+	[ "$1" = "1" ] || [ "$1" = "yes" ] || [ "$1" = "true" ]
 }
 
+failed=0
+trap failed=1 ERR
+
 case "${1}" in
 	start)
-		if [ -n "${KEYMAP}" ]; then
-			boot_mesg "Loading keymap: ${KEYMAP}..."
-			loadkeys ${KEYMAP} &>/dev/null
-			evaluate_retval
-		fi
+		boot_mesg "Setting up Linux console..."
+		# There should be no bogus failures below this line!
+		
+		# Figure out if a framebuffer console is used
+		[ -d /sys/class/graphics/fb0 ] && USE_FB=1 || USE_FB=0
+		
+		# Figure out the command to set the console into the
+		# desired mode
+		is_true "${UNICODE}" &&
+			MODE_COMMAND="echo -en '\033%G' && kbd_mode -u" ||
+			MODE_COMMAND="echo -en '\033%@\033(K' && kbd_mode -a"
+		
+		# On framebuffer consoles, font has to be set for each vt in
+		# UTF-8 mode. This doesn't hurt in non-UTF-8 mode also.
+		
+		! is_true "${USE_FB}" || [ -z "${FONT}" ] ||
+			MODE_COMMAND="${MODE_COMMAND} && setfont ${FONT}"
 
-		if [ -n "${KEYMAP_CORRECTIONS}" ]; then
-			boot_mesg "Loading keymap corrections: ${KEYMAP_CORRECTIONS}..."
+		# Apply that command to all consoles mentioned in
+		# /etc/inittab. Important: in the UTF-8 mode this should
+		# happen before setfont, otherwise a kernel bug will
+		# show up and the unicode map of the font will not be
+		# used.
+		# FIXME: Fedora Core also initializes two spare consoles
+		# - do we want that?
+		
+		# for TTY in `grep '^[^#].*respawn:/sbin/agetty' /etc/inittab |
+		# 	grep -o '\btty[[:digit:]]*\b'`
+		#
+		# XXX Livecd doesn't use agetty, so the statement above
+		# doesn't work
+		for TTY in 1 2 3 4 5 6
+		do
+			openvt -f -w -c ${TTY#tty} -- \
+				/bin/sh -c "${MODE_COMMAND}"
+		done
+
+		# Set the font (if not already set above) and the keymap
+		is_true "${USE_FB}" || 	[ -z "${FONT}" ] || setfont $FONT
+		[ -z "${KEYMAP}" ] || loadkeys ${KEYMAP} &>/dev/null
+		[ -z "${KEYMAP_CORRECTIONS}" ] ||
 			loadkeys ${KEYMAP_CORRECTIONS} &>/dev/null
-			evaluate_retval
-		fi
 
-		if [ -n "${FONT}" ]; then
-			boot_mesg "Setting screen font to ${FONT}..."
-			setfont $FONT &>/dev/null
-			evaluate_retval
-		else
-			guess_font
-			boot_mesg "Setting screen font to ${FONT}..."
-			boot_mesg_flush
-			setfont $FONT &>/dev/null
-			if [ ! -z "$FONT_PROBLEM" ] ; then
-				boot_mesg "WARNING:\n${FONT_PROBLEM}" ${WARNING}
-				boot_mesg_flush
-			fi
-			( exit $ERROR )
-			evaluate_retval
-		fi
+		# Linux kernel generates wrong bytes when composing
+		# in Unicode mode. That's why we disable dead keys in Unicode
+		# mode by default. If you need them, download and apply
+		# http://www.linuxfromscratch.org/~alexander/patches/linux-2.6.12.5-utf8_input-2.patch
+		# After patching, add "-m charset_of_your_keymap" to the FONT
+		# variable and set BROKEN_COMPOSE=false
+		# in /etc/sysconfig/console
+
+		[ -n "$BROKEN_COMPOSE" ] || BROKEN_COMPOSE="$UNICODE"
+		! is_true "$BROKEN_COMPOSE" ||
+			echo "" | loadkeys -c &>/dev/null
+		
+		# Convert the keymap from $LEGACY_CHARSET to UTF-8
+		[ -z "$LEGACY_CHARSET" ] ||
+			dumpkeys -c "$LEGACY_CHARSET" | loadkeys -u &>/dev/null
+
+		# If any of the commands above failed, the trap at the
+		# top would set $failed to 1
+		( exit $failed )
+		evaluate_retval
 		;;
 	*)
-		echo "Usage: ${0} {start}"
+		echo $"Usage:" "${0} {start}"
 		exit 1
 		;;
 esac

Added: trunk/packages/lfs-bootscripts/font-errors.dat
===================================================================
--- trunk/packages/lfs-bootscripts/font-errors.dat	2005-12-07 05:22:18 UTC (rev 1235)
+++ trunk/packages/lfs-bootscripts/font-errors.dat	2005-12-07 05:40:21 UTC (rev 1236)
@@ -0,0 +1,4 @@
+All non-ASCII characters will be treated as non-printable\nuntil you set locale to something other than "C".
+Some characters are missing from the console font.\nType "startx" to start the X session after login.
+Your language is supported in X window system only.\nType "startx" to start the X session after login.
+Your language is completely unsupported on this CD.\nIt is a bug, but we don't know how to fix it.\nPlease mail instructions to livecd at linuxfromscratch.org

Added: trunk/packages/lfs-bootscripts/font.dat
===================================================================
--- trunk/packages/lfs-bootscripts/font.dat	2005-12-07 05:22:18 UTC (rev 1235)
+++ trunk/packages/lfs-bootscripts/font.dat	2005-12-07 05:40:21 UTC (rev 1236)
@@ -0,0 +1,33 @@
+# Charset	FONT				ERRORCODE (from font-errors.dat)
+ANSI_X3.4-1968	default8x16			1
+BIG5		default8x16			3
+BIG5-HKSCS	default8x16			3
+CP1251		cyr-sun16 -m cp1251		0
+CP1255		LatArCyrHeb-16 -m 8859-8	2
+EUC-JP		default8x16			3
+EUC-KR		default8x16			3
+EUC-TW		default8x16			3
+GB18030		default8x16			3
+GB2312		default8x16			3
+GBK		default8x16			3
+GEORGIAN-PS	default8x16			4
+ISO-8859-1	lat1-16 -m 8859-1		0
+ISO-8859-2	lat2a-16 -m 8859-2		0
+ISO-8859-3	LatArCyrHeb-16 -m 8859-3	0
+ISO-8859-5	cyr-sun16 -m 8859-5		0
+ISO-8859-6	LatArCyrHeb-16 -m 8859-6	0
+ISO-8859-7	iso07u-16 -m 8859-7		0
+ISO-8859-8	LatArCyrHeb-16 -m 8859-8	0
+ISO-8859-9	cp857.16 -u cp857 -m 8859-9	0
+ISO-8859-10	LatArCyrHeb-16 -m 8859-10	0
+ISO-8859-13	LatArCyrHeb-16 -m 8859-13	0
+ISO-8859-14	default8x16			3
+ISO-8859-15	lat0-16 -m 8859-15		0
+KOI8-R		cyr-sun16 -m koi8-r		0
+KOI8-T		cyr-sun16 -m koi8-r		2
+KOI8-U		cyr-sun16 -m koi8-u		0
+PT154		cyr-sun16 -m cp1251		2
+# FIXME: "tis-ptsmall.f16 -m tis620" may be more readable
+TIS-620		tis-phaisarn.f16 -m tis620	0
+# This catches all essentially-UTF-8 scripts like Indic ones.
+UTF-8		LatArCyrHeb-16			4

Added: trunk/packages/lfs-bootscripts/lang.dat
===================================================================
--- trunk/packages/lfs-bootscripts/lang.dat	2005-12-07 05:22:18 UTC (rev 1235)
+++ trunk/packages/lfs-bootscripts/lang.dat	2005-12-07 05:40:21 UTC (rev 1236)
@@ -0,0 +1,74 @@
+# DESCRIPTION				LANG		KEYMAP		LEGACY_CHARSET	XKEYMAP
+Default/Other				C		""		""		"en_US"
+English,_USA_(ISO-8859-1)		en_US		""		""		"en_US"
+English,_USA_(UTF-8)			en_US.UTF-8	""		"iso-8859-1"	"en_US"
+English,_GB_(ISO-8859-1)		en_GB		"gb"		""		"uk"
+English,_GB_(UTF-8)			en_GB.UTF-8	"gb"		"iso-8859-1"	"uk"
+English,_Australia_(ISO-8859-1)		en_AU		""		""		"en_US"
+English,_Australia_(UTF-8)		en_AU.UTF-8	""		"iso-8859-1"	"en_US"
+
+Belarusian_(CP1251)			be_BY		"by2_win"	""		"en_US,by(winkeys)"
+Belarusian_(UTF-8)			be_BY.UTF-8	"by"		"iso-8859-5"	"en_US,by(winkeys)"
+Brazilian,_ABNT2_keymap_(ISO-8859-1)	pt_BR		"br-abnt2"	""		"br-abnt2"
+Brazilian,_ABNT2_keymap_(UTF-8)		pt_BR.UTF-8	"br-abnt2"	"iso-8859-1"	"br-abnt2"
+Bulgarian_(CP1251)			bg_BG		"bg_bds-cp1251"	""		"en_US,bds_enhanced"
+Bulgarian_(UTF-8)			bg_BG.UTF-8	"bg_bds-utf8"	""		"en_US,bds_enhanced"
+Chinese_(Traditional,_BIG5)		zh_TW		""		""		"en_US"
+Chinese_(Traditional,_EUC-TW)		zh_TW.EUC-TW	""		""		"en_US"
+Chinese_(Traditional,_UTF-8)		zh_TW.UTF-8	""		""		"en_US"
+Chinese_(Simplified,_GB2312)		zh_CN		""		""		"en_US"
+Chinese_(Simplified,_GB18030)		zh_CN.GB18030	""		""		"en_US"
+Chinese_(Simplified,_GBK)		zh_CN.GBK	""		""		"en_US"
+Chinese_(Simplified,_UTF-8)		zh_CN.UTF-8	""		""		"en_US"
+Czech_(ISO-8859-2)			cs_CZ		"cz"		""		"cz"
+Czech_(UTF-8)				cs_CZ.UTF-8	"cz"		"iso-8859-2"	"cz"
+Danish_(ISO-8859-1)			da_DK		"dk-latin1"	""		"dk"
+Danish_(UTF-8)				da_DK.UTF-8	"dk-latin1"	"iso-8859-1"	"dk"
+Finnish_(ISO-8859-1)			fi_FI		"fi-latin1"	""		"fi"
+Finnish_(ISO-8859-15)			fi_FI at euro	"fi-latin9"	""		"fi"
+Finnish_(UTF-8)				fi_FI.UTF-8	"fi-latin9"	"iso-8859-15"	"fi"
+French_(ISO-8859-1)			fr_FR		"fr-latin1"	""		"fr"
+French_(ISO-8859-15)			fr_FR at euro	"fr-latin9"	""		"fr"
+French_(UTF-8)				fr_FR.UTF-8	"fr-latin9"	"iso-8859-15"	"fr"
+French_(Canada,_ISO-8859-1)		fr_CA		"cf"		""		"ca_enhanced"
+French_(Canada,_UTF-8)			fr_CA.UTF-8	"cf"		"iso-8859-1"	"ca_enhanced"
+German_(ISO-8859-1)			de_DE		"de-latin1"	""		"de"
+German_(ISO-8859-15)			de_DE at euro	"de-latin1+euro2" ""		"de"
+German_(UTF-8)				de_DE.UTF-8	"de-latin1+euro2" "iso-8859-15"	"de"
+Greek_(ISO-8859-7)			el_GR		"gr"		""		"en_US,el"
+Greek_(UTF-8)				el_GR.UTF-8	"gr"		"iso-8859-7"	"en_US,el"
+Hungarian_(ISO-8859-2)			hu_HU		"hu101"		""		"hu"
+Hungarian_(UTF-8)			hu_HU.UTF-8	"hu101"		"iso-8859-2"	"hu"
+Icelandic_(ISO-8859-1)			is_IS		"is-latin1"	""		"is"
+Icelandic_(UTF-8)			is_IS.UTF-8	"is-latin1"	"iso-8859-1"	"is"
+Japanese_(EUC-JP)			ja_JP		""		""		"en_US"
+Japanese_(UTF-8)			ja_JP.UTF-8	""		""		"en_US"
+Korean_(EUC-KR)				ko_KR		""		""		"en_US"
+Korean_(UTF-8)				ko_KR.UTF-8	""		""		"en_US"
+Norwegian,_Bokmal_(ISO-8859-1)		nb_NO		"no-latin1"	""		"no"
+Norwegian,_Bokmal_(UTF-8)		nb_NO.UTF-8	"no-latin1"	"iso-8859-1"	"no"
+Norwegian,_Nynorsk_(ISO-8859-1)		nn_NO		"no-latin1"	""		"no"
+Norwegian,_Nynorsk_(UTF-8)		nn_NO.UTF-8	"no-latin1"	"iso-8859-1"	"no"
+Polish_(ISO-8859-2)			pl_PL		"pl"		""		"pl2"
+Polish_(UTF-8)				pl_PL.UTF-8	"pl"		"iso-8859-2"	"pl2
+Portuguese_(ISO-8859-1)			pt_PT		"pt-latin1"	""		"pt"
+Portuguese_(ISO-8859-15)		pt_PT at euro	"pt-latin9"	""		"pt"
+Portuguese_(UTF-8)			pt_PT.UTF-8	"pt-latin9"	"iso-8859-15"	"pt"
+Russian_(CP1251)			ru_RU.CP1251	"ru_win"	""		"en_US,ru(winkeys)"
+Russian_(KOI8-R)			ru_RU.KOI8-R	"ru-ms"		""		"en_US,ru(winkeys)"
+Russian_(UTF-8)				ru_RU.UTF-8	"ru-ms"		"koi8-r"	"en_US,ru(winkeys)"
+Slovak,_QWERTZ_keyboard_(ISO-8859-2)	sk_SK		"sk-qwertz"	""		"sk"
+Slovak,_QWERTZ_keyboard_(UTF-8)		sk_SK.UTF-8	"sk-qwertz"	"iso-8859-2"	"sk"
+Slovak,_QWERTY_keyboard_(ISO-8859-2)	sk_SK		"sk-qwerty"	""		"sk_qwerty"
+Slovak,_QWERTY_keyboard_(UTF-8)		sk_SK.UTF-8	"sk-qwerty"	"iso-8859-2"	"sk_qwerty"
+Spanish_(ISO-8859-1)			es_ES		"es"		""		"es"
+Spanish_(ISO-8859-15)			es_ES at euro	"es+euro2"	""		"es"
+Spanish_(UTF-8)				es_ES.UTF-8	"es+euro2"	"iso-8859-15"	"es"
+Spanish,_Mexico_(ISO-8859-1)		es_MX		"la-latin1"	""		"la"
+Spanish,_Mexico_(UTF-8)			es_MX.UTF-8	"la-latin1"	"iso-8859-1"	"la"
+Swedish_(ISO-8859-1)			sv_SE		"sv-latin1"	""		"se"
+Swedish_(UTF-8)				sv_SE.UTF-8	"sv-latin1"	"iso-8859-1"	"se"
+Thai_(TIS-620)				th_TH		"th-win-latin1"	""		"en_US,th"
+Thai_(UTF-8)				th_TH.UTF-8	"th-win-uni"	""		"en_US,th"
+Ukrainian_(KOI8-U)			uk_UA		"ua-ws"		""		"en_US,ua(winkeys)"
+Ukrainian_(UTF-8)			uk_UA.UTF-8	"ua-utf-ws"	""		"en_US,ua(winkeys)"




More information about the livecd mailing list