console_setup 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. #! /bin/sh
  2. # A crude much-simplified clone of setupcon for use in the initramfs.
  3. PREREQ="framebuffer"
  4. prereqs () {
  5. echo "$PREREQ"
  6. }
  7. case $1 in
  8. prereqs)
  9. prereqs
  10. exit 0
  11. ;;
  12. esac
  13. [ -r /etc/default/console-setup ] || exit 0
  14. . /etc/default/console-setup
  15. [ "$ACTIVE_CONSOLES" ] || exit 0
  16. # CODESET
  17. [ "$CODESET" != guess ] || CODESET=''
  18. if [ -z "$CODESET" ]; then
  19. case "$CHARMAP" in
  20. UTF-8) CODESET=Uni2;;
  21. ARMSCII-8) CODESET=Armenian ;;
  22. CP1251) CODESET=CyrSlav ;;
  23. CP1255) CODESET=Hebrew ;;
  24. CP1256) CODESET=Arabic ;;
  25. GEORGIAN-ACADEMY) CODESET=Georgian ;;
  26. GEORGIAN-PS) CODESET=Georgian ;;
  27. IBM1133) CODESET=Lao ;;
  28. ISIRI-3342) CODESET=Arabic ;;
  29. ISO-8859-1) CODESET=Lat15 ;;
  30. ISO-8859-2) CODESET=Lat2 ;;
  31. ISO-8859-3) CODESET=Lat38 ;;
  32. ISO-8859-4) CODESET=Lat7 ;; # sometimes Lat15
  33. ISO-8859-5) CODESET=CyrSlav ;;
  34. ISO-8859-6) CODESET=Arabic ;;
  35. ISO-8859-7) CODESET=Greek ;;
  36. ISO-8859-8) CODESET=Hebrew ;;
  37. ISO-8859-9) CODESET=Lat15 ;;
  38. ISO-8859-10) CODESET=Lat15 ;;
  39. ISO-8859-11) CODESET=Thai ;;
  40. ISO-8859-13) CODESET=Lat7 ;;
  41. ISO-8859-14) CODESET=Lat38 ;;
  42. ISO-8859-15) CODESET=Lat15 ;;
  43. ISO-8859-16) CODESET=Lat2 ;;
  44. KOI8-R) CODESET=CyrKoi ;;
  45. KOI8-U) CODESET=CyrKoi ;;
  46. TIS-620) CODESET=Thai ;;
  47. VISCII) CODESET=Vietnamese ;;
  48. *) ;;
  49. esac
  50. fi
  51. # FONTSIZE
  52. if [ -z "$FONTSIZE" -o "$FONTSIZE" = guess ]; then
  53. FONTSIZE=16
  54. fi
  55. case "$FONTSIZE" in
  56. 8x*)
  57. FONTSIZE=${FONTSIZE#*x}
  58. ;;
  59. *x8)
  60. FONTSIZE=${FONTSIZE%x*}
  61. ;;
  62. *x*)
  63. a=${FONTSIZE%x*}
  64. b=${FONTSIZE#*x}
  65. if [ "$a" -lt "$b" ]; then
  66. FONTSIZE=${b}x${a}
  67. fi
  68. ;;
  69. esac
  70. if [ "$VERBOSE_OUTPUT" = yes ]; then
  71. verbose=
  72. else
  73. verbose='>/dev/null 2>&1'
  74. fi
  75. for i in 1 2 3 4 5 6; do
  76. [ -c /dev/tty$i ] || mknod /dev/tty$i c 4 $i
  77. done
  78. for console in $ACTIVE_CONSOLES; do
  79. [ -w $console ] || continue
  80. if [ "$CHARMAP" = UTF-8 ] || [ -z "$ACM$CHARMAP" ]; then
  81. printf '\033%%G' >$console
  82. else
  83. printf '\033%%@' >$console
  84. fi
  85. if [ "$FONT" ]; then
  86. FONT="/etc/console-setup/${FONT##*/}"
  87. FONT="${FONT%.gz}"
  88. else
  89. FONT="/etc/console-setup/$CODESET-$FONTFACE$FONTSIZE.psf"
  90. fi
  91. if [ -f "$FONT" ] || [ -f "$FONT.gz" ]; then
  92. if type consolechars >/dev/null 2>&1; then
  93. eval consolechars -v --tty=$console -f "$FONT" $verbose
  94. elif type setfont >/dev/null 2>&1; then
  95. eval setfont -v -C $console "$FONT" $verbose
  96. fi
  97. fi
  98. if [ "$ACM" ]; then
  99. ACM="/etc/console-setup/${ACM##*/}"
  100. ACM="${ACM%.gz}"
  101. else
  102. ACM="/etc/console-setup/$CHARMAP.acm"
  103. fi
  104. if [ -f "$ACM" ] || [ -f "$ACM.gz" ]; then
  105. if type consolechars >/dev/null 2>&1; then
  106. eval consolechars -v --tty=$console --acm "$ACM" \
  107. $verbose
  108. elif type setfont >/dev/null 2>&1; then
  109. eval setfont -v -C "$console" -m "$ACM" $verbose
  110. fi
  111. fi
  112. if type kbd_mode >/dev/null 2>&1; then
  113. if [ "$CHARMAP" = UTF-8 ] || [ -z "$ACM" ]; then
  114. kbd_mode -u <$console
  115. else
  116. kbd_mode -a <$console
  117. fi
  118. fi
  119. done
  120. if [ -f /etc/console-setup/cached.kmap.gz ] && type loadkeys >/dev/null; then
  121. eval loadkeys /etc/console-setup/cached.kmap.gz $verbose
  122. fi
  123. exit 0