source: pkg/main/initscripts-parsix-live/trunk/debian/live-autoconfig.init @ 1418

Revision 1418, 48.6 KB checked in by alanbach-guest, 7 years ago (diff)

initscripts-parsix-live updates

Line 
1#!/bin/bash
2# Basic system configuration and hardware setup
3# (C) Klaus Knopper <knopper@knopper.net> 2004
4# modified for KANOTIX by Joerg Schirottke <master@kanotix.com> 2003-05
5# modified for PARSIX by Alan Baghumian <alan@technotux.org> 2007-02
6### BEGIN INIT INFO
7# Provides: live-autoconfig
8# Required-Start:   
9# Required-Stop:       
10# Default-Start:     
11# Default-Stop:     
12# Short-Description: Live-Autoconfig service
13# Description: Live autoconfig system for Parsix
14### END INIT INFO
15
16PATH="/bin:/sbin:/usr/bin:/usr/sbin:/usr/X11R6/bin"
17export PATH
18
19umask 022
20
21# override tool behaviour through distro-defaults
22FLL_DISTRO_MODE="installed"
23FLL_IMAGE_DIR="KNOPPIX"
24FLL_DISTRO_NAME="Parsix"
25FLL_LIVE_USER="parsix"
26
27[ -r /etc/default/distro ] && source /etc/default/distro
28
29[ ! "$FLL_DISTRO_MODE" == "live" ] && exit 0
30
31case "$1" in
32        start) ;;
33        stop) ;;
34        restart|force-reload) ;;
35esac
36
37# Ignore these signals: INT, TERM, SEGV
38trap "" 2 3 11
39
40# ANSI COLORS
41CRE="
42[K"
43NORMAL="[0;39m"
44# RED: Failure or error message
45
46# GREEN: Success message
47GREEN="[1;32m"
48# YELLOW: Descriptions
49YELLOW="[1;33m"
50# BLUE: System messages
51BLUE="[1;34m"
52# MAGENTA: Found devices or drivers
53MAGENTA="[1;35m"
54# CYAN: Questions
55CYAN="[1;36m"
56# BOLD WHITE: Hint
57WHITE="[1;37m"
58
59### Utility Function(s)
60
61# Simple shell grep
62stringinfile(){
63        case "$(cat $2)" in *$1*) return 0;; esac
64        return 1
65}
66
67# same for strings
68stringinstring(){
69        case "$2" in *$1*) return 0;; esac
70        return 1
71}
72
73# Reread boot command line; echo last parameter's argument or return false.
74getbootparam(){
75        stringinstring " $1=" "$CMDLINE" || return 1
76        result="${CMDLINE##*$1=}"
77        result="${result%%[     ]*}"
78        echo "$result"
79        return 0
80}
81
82# Check boot commandline for specified option
83checkbootparam(){
84        stringinstring " $1" "$CMDLINE"
85        return "$?"
86}
87
88### EOF utility functions
89
90# We need /proc here, so mount it in case we skipped the bootfloppy
91[ -f /proc/version ] || mount -t proc proc /proc 2>/dev/null
92
93# Kernel 2.6
94[ -d /sys/devices ] || mount -t sysfs sysfs /sys 2>/dev/null
95
96# Read in boot parameters
97# This should work, but doesn't with Kernel 2.4.19-rc1
98# CMDLINE="$(</proc/cmdline)" This should work, but doesn't with Kernel 2.4.19-rc1
99# This works.
100[ -z "$CMDLINE" ] && CMDLINE=" $(cat /proc/cmdline)"
101
102# Check if we are in interactive startup mode
103INTERACTIVE=""
104stringinstring "BOOT_IMAGE=expert " "$CMDLINE" && INTERACTIVE="yes"
105
106# Check if we want the config floppy
107MYCONF=""
108case "$CMDLINE" in *\ myconf*|*\ floppyconf*|*\ custom*|*\ config*) MYCONF="yes"; ;; esac
109if [ -n "$MYCONF" ]; then
110        # Check for given config directory
111        MYCONFDIR="$(getbootparam 'myconfig')"
112        [ -n "$MYCONFDIR" ] || MYCONFDIR="$(getbootparam 'myconf')"
113        [ -n "$MYCONFDIR" ] || MYCONFDIR="$(getbootparam 'floppyconfig')"
114        [ -n "$MYCONFDIR" ] || MYCONFDIR="$(getbootparam 'floppyconf')"
115        [ -n "$MYCONFDIR" ] || MYCONFDIR="$(getbootparam 'custom')"
116        [ -n "$MYCONFDIR" ] || MYCONFDIR="$(getbootparam 'config')"
117fi
118
119### localization
120# Allow language specification via commandline. The default language
121# will be overridden via "lang=de" boot commandline
122LANGUAGE="$(getbootparam lang 2>/dev/null)"
123[ -n "$LANGUAGE" ] || LANGUAGE="$(getbootparam console-setup/layoutcode 2>/dev/null)"
124[ -n "$LANGUAGE" ] || LANGUAGE="us"
125
126# Set default console font (needed for first console + kernel 2.6)
127CONSOLEFONT="Uni3-Terminus16"
128
129# The default language/keyboard to use. This CANNOT be autoprobed.
130# Most of these variables will be used to generate the KDE defaults
131# and will be inserted into /etc/sysconfig/* below.
132case "$LANGUAGE" in
133        fa)
134                COUNTRY="ir_IR"
135                LANG="fa_IR"
136                KEYTABLE="us"
137                XKEYBOARD="us,ir"
138                KDEKEYBOARD="us,ir"
139                CHARSET="utf8"         
140                TZ="Asia/Tehran"
141                ;;
142        de)
143                # German version
144                COUNTRY="de"
145                LANG="de_DE@euro"
146                KEYTABLE="de-latin1-nodeadkeys"
147                XKEYBOARD="de,us"
148                KDEKEYBOARD="de,us"
149                CHARSET="iso8859-15"
150                TZ="Europe/Berlin"
151                ;;
152        de-utf8)
153                # German version UTF-8
154                LANGUAGE="de_DE:de"
155                COUNTRY="de_DE"
156                LANG="de_DE.UTF-8"
157                KEYTABLE="de-latin1-nodeadkeys"
158                XKEYBOARD="de,us"
159                KDEKEYBOARD="de,us"
160                CHARSET="utf8"
161                TZ="Europe/Berlin"
162                ;;
163        au)
164                # Australian version
165                LANGUAGE="en"
166                COUNTRY="au"
167                LANG="en_AU"
168                KEYTABLE="us"
169                XKEYBOARD="us"
170                KDEKEYBOARD="us"
171                CHARSET="iso8859-1"
172                TZ="Australia/Sydney"
173                ;;
174        au-utf8)
175                # Australian version
176                LANGUAGE="en_AU:en"
177                COUNTRY="au"
178                LANG="en_AU.UTF-8"
179                KEYTABLE="us"
180                XKEYBOARD="us"
181                KDEKEYBOARD="us"
182                CHARSET="utf8"
183                TZ="Australia/Sydney"
184                ;;
185        be)
186                # Belgian version
187                LANGUAGE="be"
188                COUNTRY="be"
189                LANG="C"
190                KEYTABLE="be2-latin1"
191                XKEYBOARD="be,us"
192                KDEKEYBOARD="be,us"
193                CHARSET="iso8859-15"
194                # Additional KDE Keyboards
195                KDEKEYBOARDS="us,de,fr"
196                TZ="Europe/Brussels"
197                ;;
198        be-utf8)
199                # Belgian version
200                LANGUAGE="be_BY:be"
201                COUNTRY="be"
202                LANG="be_BY.UTF-8"
203                KEYTABLE="be2-latin1"
204                XKEYBOARD="be"
205                KDEKEYBOARD="be"
206                CHARSET="utf8"
207                # Additional KDE Keyboards
208                KDEKEYBOARDS="us,de,fr"
209                TZ="Europe/Brussels"
210                ;;
211        bg)
212                # Bulgarian version
213                LANGUAGE="bg"
214                COUNTRY="bg"
215                LANG="bg_BG"
216                KEYTABLE="bg"
217                XKEYBOARD="bg,us"
218                KDEKEYBOARD="bg,us"
219                CHARSET="microsoft-cp1251"
220                # Additional KDE Keyboards
221                KDEKEYBOARDS="us,de,fr"
222                TZ="Europe/Sofia"
223                ;;
224        bg-utf8)
225                # Bulgarian version
226                LANGUAGE="bg_BG:bg"
227                COUNTRY="bg"
228                LANG="bg_BG.UTF-8"
229                KEYTABLE="bg"
230                XKEYBOARD="bg,us"
231                KDEKEYBOARD="bg,us"
232                CHARSET="utf8"
233                # Additional KDE Keyboards
234                KDEKEYBOARDS="us,de,fr"
235                TZ="Europe/Sofia"
236                ;;
237        br)
238                # Brazilian Version
239                LANGUAGE="pt_BR"
240                COUNTRY="br"
241                LANG="pt_BR"
242                KEYTABLE="br-abnt2"
243                XKEYBOARD="abnt2"
244                KDEKEYBOARD="br,us"
245                CHARSET="iso8859-1"
246                # Additional KDE Keyboards
247                KDEKEYBOARDS="us,br"
248                TZ="America/Sao_Paulo"
249                ;;
250        br-utf8)
251                # Brazilian Version
252                LANGUAGE="pt_BR:pt"
253                COUNTRY="br"
254                LANG="pt_BR.UTF-8"
255                KEYTABLE="br-abnt2"
256                XKEYBOARD="abnt2,us"
257                KDEKEYBOARD="br,us"
258                CHARSET="utf8"
259                TZ="America/Sao_Paulo"
260                ;;
261        ch)
262                # Swiss version (basically de with some modifications)
263                LANGUAGE="de"
264                COUNTRY="ch"
265                LANG="de_CH"
266                KEYTABLE="sg-latin1"
267                XKEYBOARD="de_CH,us"
268                KDEKEYBOARD="de_CH,us"
269                CHARSET="iso8859-15"
270                TZ="Europe/Zurich"
271                ;;
272        ch-utf8)
273                # Swiss version (basically de with some modifications)
274                LANGUAGE="de_CH:de"
275                COUNTRY="ch"
276                LANG="de_CH.UTF-8"
277                KEYTABLE="sg-latin1"
278                XKEYBOARD="de_CH,us"
279                KDEKEYBOARD="de_CH,us"
280                CHARSET="utf8"
281                TZ="Europe/Zurich"
282                ;;
283        cn)
284                # Simplified Chinese version
285                COUNTRY="cn"
286                LANG="zh_CN.GB2312"
287                KEYTABLE="us"
288                XKEYBOARD="us"
289                KDEKEYBOARD="us"
290                CHARSET="gb2312.1980-0"
291                XMODIFIERS="@im=Chinput"
292                TZ="Asia/Shanghai"
293                ;;
294        cn-utf8)
295                # Simplified Chinese version
296                COUNTRY="zh_CN:cn"
297                LANG="zh_CN.UTF-8"
298                KEYTABLE="us"
299                XKEYBOARD="us"
300                KDEKEYBOARD="us"
301                CHARSET="utf8"
302                XMODIFIERS="@im=Chinput"
303                TZ="Asia/Shanghai"
304                ;;
305        cs|cz)
306                # Czech version
307                LANGUAGE="cs"
308                COUNTRY="cs"
309                LANG="cs_CZ"
310                KEYTABLE="cz-lat2"
311                XKEYBOARD="cs,us"
312                KDEKEYBOARD="cs,us"
313                CHARSET="iso8859-2"
314                TZ="Europe/Prague"
315                CONSOLEFONT="iso02g"
316                ;;
317        cs-utf8|cz-utf8)
318                # Czech version
319                LANGUAGE="cs_CZ:cs"
320                COUNTRY="cs"
321                LANG="cs_CZ.UTF-8"
322                KEYTABLE="cz-lat2"
323                XKEYBOARD="cs,us"
324                KDEKEYBOARD="cs,us"
325                CHARSET="utf8"
326                TZ="Europe/Prague"
327                CONSOLEFONT="iso02g"
328                ;;
329        dk|da)
330                # Dansk version
331                COUNTRY="dk"
332                LANG="da_DK"
333                # Workaround: "dk" broken in gettext, use da:da_DK
334                LANGUAGE="da:da_DK"
335                # Keytable "dk" is correct.
336                KEYTABLE="dk"
337                XKEYBOARD="dk,us"
338                KDEKEYBOARD="dk,us"
339                CHARSET="iso8859-15"
340                TZ="Europe/Copenhagen"
341                ;;
342        dk-utf8|da-utf8)
343                # Dansk version
344                COUNTRY="dk"
345                LANG="da_DK.UTF-8"
346                # Workaround: "dk" broken in gettext, use da:da_DK
347                LANGUAGE="da_DK:da"
348                # Keytable "dk" is correct.
349                KEYTABLE="dk"
350                XKEYBOARD="dk,us"
351                KDEKEYBOARD="dk,us"
352                CHARSET="utf8"
353                TZ="Europe/Copenhagen"
354                ;;
355        el)
356                # Greek version
357                LANGUAGE="el"
358                COUNTRY="gr"
359                LANG="el_GR"
360                KEYTABLE="gr"
361                XKEYBOARD="us,el"
362                KDEKEYBOARD="us"
363                CHARSET="iso8859-7"
364                CONSOLEFONT="iso07.f16"
365                IOCHARSET="8859-7"
366                IOCODEPAGE="737"
367                SYSFONTACM="iso07"
368                TZ="Europe/Athens"
369                ;;
370        el-utf8)
371                # Greek version
372                LANGUAGE="el_GR:el"
373                COUNTRY="gr"
374                LANG="el_GR.UTF-8"
375                KEYTABLE="gr"
376                XKEYBOARD="us,el"
377                KDEKEYBOARD="us"
378                CHARSET="utf8"
379                CONSOLEFONT="iso07.f16"
380                IOCHARSET="8859-7"
381                IOCODEPAGE="737"
382                SYSFONTACM="iso07"
383                # Additional KDE Keyboards
384                KDEKEYBOARDS="el"
385                TZ="Europe/Athens"
386                ;;
387        es)
388                # Spanish version
389                COUNTRY="es"
390                LANG="es_ES@euro"
391                KEYTABLE="es"
392                XKEYBOARD="es"
393                KDEKEYBOARD="es"
394                CHARSET="iso8859-15"
395                # Additional KDE Keyboards
396                KDEKEYBOARDS="de,us,fr"
397                TZ="Europe/Madrid"
398                ;;
399        es-utf8)
400                # Spanish version
401                LANGUAGE="es_ES:es"
402                COUNTRY="es"
403                LANG="es_ES.UTF-8"
404                KEYTABLE="es"
405                XKEYBOARD="es,us"
406                KDEKEYBOARD="es,us"
407                CHARSET="utf8"
408                TZ="Europe/Madrid"
409                CONSOLEFONT="lat10-16"
410                ;;
411        fi)
412                # Finnish version, though we may not have the kde-i18n files
413                COUNTRY="fi"
414                LANG="fi_FI@euro"
415                KEYTABLE="fi-latin1"
416                XKEYBOARD="fi,us"
417                KDEKEYBOARD="fi,us"
418                CHARSET="iso8859-15"
419                TZ="Europe/Helsinki"
420                ;;
421        fi-utf8)
422                # Finnish version, though we may not have the kde-i18n files
423                LANGUAGE="fi_FI:fi"
424                COUNTRY="fi"
425                LANG="fi_FI.UTF-8"
426                KEYTABLE="fi-latin1"
427                XKEYBOARD="fi,us"
428                KDEKEYBOARD="fi,us"
429                CHARSET="utf8"
430                TZ="Europe/Helsinki"
431                ;;
432        fr)
433                # French version
434                COUNTRY="fr"
435                LANG="fr_FR@euro"
436                KEYTABLE="fr"
437                XKEYBOARD="fr,us"
438                KDEKEYBOARD="fr,us"
439                CHARSET="iso8859-15"
440                TZ="Europe/Paris"
441                ;;
442        fr-utf8)
443                # French version
444                LANGUAGE="fr_FR"
445                COUNTRY="fr"
446                LANG="fr_FR.UTF-8"
447                KEYTABLE="fr"
448                XKEYBOARD="fr,us"
449                KDEKEYBOARD="fr,us"
450                CHARSET="utf8"
451                TZ="Europe/Paris"
452                ;;
453        ga)
454                # Irish Gaeilge version
455                COUNTRY="ie"
456                LANG="ga_IE@euro"
457                KEYTABLE="uk"
458                XKEYBOARD="uk"
459                KDEKEYBOARD="ie"
460                CHARSET="iso8859-15"
461                # Additional KDE Keyboards
462                KDEKYBOARDS="gb,us,de,es,fr,it"
463                TZ="Europe/Dublin"
464                ;;
465        ga-utf8)
466                # Irish Gaeilge version
467                COUNTRY="ie"
468                LANG="ga_IE@UTF-8"
469                KEYTABLE="uk"
470                XKEYBOARD="uk,us"
471                KDEKEYBOARD="ie,us"
472                CHARSET="utf8"
473                TZ="Europe/Dublin"
474                ;;
475        he|il)
476                # Hebrew version
477                LANGUAGE="he"
478                COUNTRY="il"
479                LANG="he_IL"
480                KEYTABLE="us"
481                XKEYBOARD="il,us"
482                KDEKEYBOARD="il,us"
483                CHARSET="iso8859-8"
484                TZ="Asia/Jerusalem"
485                ;;
486        hy|am)
487                # Armenian version
488                LANGUAGE="hy_AM"
489                COUNTRY="am"
490                LANG="hy_AM.UTF-8"
491                KEYTABLE="am"
492                XKEYBOARD="am,us"
493                KDEKEYBOARD="am,us"
494                CHARSET="utf8"
495                TZ="Asia/Yerevan"
496                ;;
497        he-utf8|il-utf8)
498                # Hebrew version
499                LANGUAGE="he_IL:he"
500                COUNTRY="il"
501                LANG="he_IL.UTF-8"
502                KEYTABLE="us"
503                XKEYBOARD="il,us"
504                KDEKEYBOARD="il,us"
505                CHARSET="utf8"
506                TZ="Asia/Jerusalem"
507                ;;
508        ie)
509                # Irish (English) version
510                COUNTRY="ie"
511                LANG="en_IE@euro"
512                KEYTABLE="uk"
513                XKEYBOARD="uk"
514                KDEKEYBOARD="ie"
515                CHARSET="iso8859-15"
516                TZ="Europe/Dublin"
517                ;;
518        ie-utf8)
519                # Irish (English) version
520                LANGUAGE="en_IE:en"
521                COUNTRY="ie"
522                LANG="en_IE.UTF-8"
523                KEYTABLE="uk"
524                XKEYBOARD="uk"
525                KDEKEYBOARD="ie"
526                CHARSET="utf8"
527                TZ="Europe/Dublin"
528                ;;
529        it)
530                # Italian version
531                COUNTRY="it"
532                LANG="it_IT@euro"
533                KEYTABLE="it"
534                XKEYBOARD="it,us"
535                KDEKEYBOARD="it,us"
536                CHARSET="iso8859-15"
537                TZ="Europe/Rome"
538                ;;
539        it-utf8)
540                # Italian version
541                LANGUAGE="it_IT"
542                COUNTRY="it"
543                LANG="it_IT.UTF-8"
544                KEYTABLE="it"
545                XKEYBOARD="it,us"
546                KDEKEYBOARD="it,us"
547                CHARSET="utf8"
548                TZ="Europe/Rome"
549                ;;
550        ja)
551                # (limited) Japanese version
552                COUNTRY="jp"
553                LANG="ja_JP"
554                LANGUAGE="ja"
555                KEYTABLE="us"
556                XKEYBOARD="us"
557                KDEKEYBOARD="us"
558                CHARSET="iso8859-15"
559                TZ="Asia/Tokyo"
560                ;;
561        ja-utf8)
562                # (limited) Japanese version
563                LANGUAGE="ja_JP:ja"
564                COUNTRY="jp"
565                LANG="ja_JP.UTF-8"
566                LANGUAGE="ja"
567                KEYTABLE="us"
568                XKEYBOARD="us"
569                KDEKEYBOARD="us"
570                CHARSET="utf8"
571                TZ="Asia/Tokyo"
572                ;;
573        nl)
574                # Dutch version
575                COUNTRY="nl"
576                LANG="nl_NL@euro"
577                KEYTABLE="us"
578                XKEYBOARD="nl,us"
579                KDEKEYBOARD="nl,us"
580                CHARSET="iso8859-15"
581                TZ="Europe/Amsterdam"
582                ;;
583        nl-utf8)
584                # Dutch version
585                LANGUAGE="nl_NL:nl"
586                COUNTRY="nl"
587                LANG="nl_NL.UTF-8"
588                KEYTABLE="us"
589                XKEYBOARD="nl,us"
590                KDEKEYBOARD="nl,us"
591                CHARSET="utf8"
592                TZ="Europe/Amsterdam"
593                ;;
594        pl)
595                # Polish version
596                COUNTRY="pl"
597                LANG="pl_PL"
598                KEYTABLE="pl"
599                XKEYBOARD="pl,us"
600                KDEKEYBOARD="pl,us"
601                CHARSET="iso8859-2"
602                TZ="Europe/Warsaw"
603                CONSOLEFONT="iso02g"
604                ;;
605        pl-utf8)
606                # Polish version
607                LANGUAGE="pl_PL:pl"
608                COUNTRY="pl"
609                LANG="pl_PL.UTF-8"
610                KEYTABLE="pl"
611                XKEYBOARD="pl,us"
612                KDEKEYBOARD="pl,us"
613                CHARSET="utf8"
614                TZ="Europe/Warsaw"
615                CONSOLEFONT="iso02g"
616                ;;
617        pt)
618                # Portuguese version
619                COUNTRY="pt"
620                LANG="pt_PT@euro"
621                KEYTABLE="pt-latin1"
622                XKEYBOARD="pt,us"
623                KDEKEYBOARD="pt,us"
624                CHARSET="iso8859-1"
625                TZ="Europe/Lisbon"
626                CONSOLEFONT="lat10-16"
627                ;;
628        pt-utf8)
629                # Portuguese version
630                LANGUAGE="pt_PT:pt"
631                COUNTRY="pt"
632                LANG="pt_PT.UTF-8"
633                KEYTABLE="pt-latin1"
634                XKEYBOARD="pt,us"
635                KDEKEYBOARD="pt,us"
636                CHARSET="utf8"
637                TZ="Europe/Lisbon"
638                CONSOLEFONT="lat10-16"
639                ;;
640        ru)
641                # Russian version
642                COUNTRY="ru"
643                LANG="ru_RU.KOI8-R"
644                KEYTABLE="ru"
645                XKEYBOARD="ru,us"
646                KDEKEYBOARD="ru,us"
647                CHARSET="koi8-r"
648                CONSOLEFONT="Cyr_a8x16"
649                TZ="Europe/Moscow"
650                ;;
651        ru-utf8)
652                # Russian version
653                LANGUAGE="ru_RU:ru"
654                COUNTRY="ru"
655                LANG="ru_RU.UTF-8"
656                KEYTABLE="ru"
657                XKEYBOARD="ru,us"
658                KDEKEYBOARD="ru,us"
659                CHARSET="utf8"
660                CONSOLEFONT="Cyr_a8x16"
661                TZ="Europe/Moscow"
662                ;;
663        sk)
664                # Slovak version (guessed)
665                COUNTRY="sk"
666                LANG="sk"
667                KEYTABLE="sk-qwerty"
668                XKEYBOARD="sk,us"
669                KDEKEYBOARD="sk,us"
670                CHARSET="iso8859-2"
671                TZ="Europe/Bratislava"
672                CONSOLEFONT="iso02g"
673                ;;
674        sk-utf8)
675                # Slovak version (guessed)
676                LANGUAGE="sk_SK:sk"
677                COUNTRY="sk"
678                LANG="sk_SK.UTF-8"
679                KEYTABLE="sk-qwerty"
680                XKEYBOARD="sk,us"
681                KDEKEYBOARD="sk,us"
682                CHARSET="utf8"
683                TZ="Europe/Bratislava"
684                CONSOLEFONT="iso02g"
685                ;;
686        sl)
687                # Slovenian keyboard
688                LANGUAGE="sl"
689                COUNTRY="si"
690                LANG="sl_SI"
691                KEYTABLE="slovene"
692                XKEYBOARD="sl,us"
693                KDEKEYBOARD="si,us"
694                CHARSET="iso8859-2"
695                TZ="Europe/Ljubljana"
696                CONSOLEFONT="iso02g"
697                ;;
698        sl-utf8)
699                # Slovenian keyboard
700                LANGUAGE="sl_SI:sl"
701                COUNTRY="si"
702                LANG="sl_SI.UTF-8"
703                KEYTABLE="slovene"
704                XKEYBOARD="sl,us"
705                KDEKEYBOARD="si,us"
706                CHARSET="utf8"
707                TZ="Europe/Ljubljana"
708                CONSOLEFONT="iso02g"
709                ;;
710        tr)
711                # Turkish version (guessed)
712                COUNTRY="tr"
713                LANG="tr_TR"
714                KEYTABLE="tr_q-latin5"
715                XKEYBOARD="tr,us"
716                KDEKEYBOARD="tr,us"
717                CHARSET="iso8859-9"
718                TZ="Europe/Istanbul"
719                ;;
720        tr-utf8)
721                # Turkish version (guessed)
722                LANGUAGE="tr_TR"
723                COUNTRY="tr"
724                LANG="tr_TR.UTF-8"
725                KEYTABLE="tr_q-latin5"
726                XKEYBOARD="tr,us"
727                KDEKEYBOARD="tr,us"
728                CHARSET="utf8"
729                TZ="Europe/Istanbul"
730                ;;
731        tw)
732                # Traditional Chinese version (thanks to Chung-Yen Chang)
733                COUNTRY="tw"
734                LANG="zh_TW.Big5"
735                LANGUAGE="zh_TW.Big5"
736                KEYTABLE="us"
737                XKEYBOARD="us"
738                KDEKEYBOARD="us"
739                # CHARSET="big5-0"
740                CHARSET="iso8859-1"
741                XMODIFIERS="@im=xcin"
742                TZ="Asia/Taipei"
743                ;;
744        tw-utf8)
745                # Traditional Chinese version (thanks to Chung-Yen Chang)
746                LANGUAGE="zh_TW:zh"
747                COUNTRY="tw"
748                LANG="zh_TW.UTF-8"
749                KEYTABLE="us"
750                XKEYBOARD="us"
751                KDEKEYBOARD="us"
752                # CHARSET="big5-0"
753                CHARSET="utf8"
754                XMODIFIERS="@im=xcin"
755                TZ="Asia/Taipei"
756                ;;
757        uk)
758                # British version
759                COUNTRY="uk"
760                LANG="en_GB"
761                LANGUAGE="en"
762                KEYTABLE="uk"
763                XKEYBOARD="uk"
764                KDEKEYBOARD="gb"
765                CHARSET="iso8859-1"
766                TZ="Europe/London"
767                ;;
768        uk-utf8)
769                # British version UTF-8
770                LANGUAGE="en_GB:en"
771                COUNTRY="uk"
772                LANG="en_GB.UTF-8"
773                KEYTABLE="uk"
774                XKEYBOARD="uk"
775                KDEKEYBOARD="gb"
776                CHARSET="utf8"
777                TZ="Europe/London"
778                ;;
779        us-utf8)
780                # American version UTF-8
781                LANGUAGE="en_US:en"
782                COUNTRY="us"
783                LANG="en_US.UTF-8"
784                KEYTABLE="us"
785                XKEYBOARD="us"
786                KDEKEYBOARD="us"
787                CHARSET="utf8"
788                TZ="America/New_York"
789                ;;
790        *)
791                # American version
792                LANGUAGE="us"
793                COUNTRY="us"
794                LANG="en_US.UTF-8"
795                KEYTABLE="us"
796                XKEYBOARD="us,ir"
797                KDEKEYBOARD="us,ir"
798                CHARSET="utf8"
799                TZ="Asia/Tehran"
800                ;;
801esac
802
803# Export it now, so error messages get translated, too
804export LANG COUNTRY CHARSET
805
806# FIXME
807# Allow keyboard override by boot commandline
808#KKEYBOARD="$(getbootparam keyboard 2>/dev/null)"
809#[ -n "$KKEYBOARD" ] && KEYTABLE="$KKEYBOARD"
810#KXKEYBOARD="$(getbootparam xkeyboard 2>/dev/null)"
811#if [ -n "$KXKEYBOARD" ]; then
812#       XKEYBOARD="$KXKEYBOARD"
813#       KDEKEYBOARD="$KXKEYBOARD"
814#elif [ -n "$KKEYBOARD" ]; then
815#       XKEYBOARD="$KKEYBOARD"
816#       KDEKEYBOARD="$KKEYBOARD"
817#fi
818
819# Also read desired desktop, if any
820DESKTOP="$(getbootparam desktop 2>/dev/null)"
821# Allow only supported windowmanagers
822case "$DESKTOP" in gnome|enlightenment|kde|larswm|xfce|xfce4|windowmaker|wmaker|icewm|fluxbox|twm|nx|rdp|kiosk) ;; *) DESKTOP="gnome"; ;; esac
823
824# Set hostname
825hostname $FLL_DISTRO_NAME
826
827# Set clock (Local time is more often used than GMT, so it is default)
828UTC=""
829checkbootparam utc &>/dev/null && UTC="-u"
830checkbootparam gmt &>/dev/null && UTC="-u"
831
832# hwclock uses the TZ variable
833KTZ="$(getbootparam tz 2>/dev/null)"
834[ -f "/usr/share/zoneinfo/$KTZ" ] && TZ="$KTZ"
835export TZ
836hwclock $UTC -s
837
838KERNEL="$(uname -r)"
839echo " ${GREEN}Running Linux Kernel ${YELLOW}$KERNEL${GREEN}.${NORMAL}"
840
841# / must be read-write in any case, starting from here
842mount -o remount,rw / 2>/dev/null
843
844rm -f /etc/localtime
845cp "/usr/share/zoneinfo/$TZ" /etc/localtime
846
847# Delete obsolete links and files before starting autoconfig
848if ! checkbootparam "nohwsetup"; then
849        rm -f   /dev/cdrom* /dev/cdwriter* /dev/dvdwriter* /dev/mouse* /dev/modem* /dev/scanner* \
850                /etc/sysconfig/i18n /etc/sysconfig/keyboard /etc/sysconfig/knoppix \
851                2>/dev/null
852fi
853
854# override dpi setting
855CUSTOM_DPI="$(getbootparam dpi 2>/dev/null)"
856
857# Write KNOPPIX config files for other scripts to parse
858# Standard variables/files
859echo "LANG=\"$LANG\""                  > /etc/sysconfig/i18n
860echo "COUNTRY=\"$COUNTRY\""           >> /etc/sysconfig/i18n
861echo "LANGUAGE=\"$LANGUAGE\""         >> /etc/sysconfig/i18n
862echo "CHARSET=\"$CHARSET\""           >> /etc/sysconfig/i18n
863echo "XMODIFIERS=\"$XMODIFIERS\""     >> /etc/sysconfig/i18n
864#echo "TZ=\"$TZ\""                     >> /etc/sysconfig/i18n
865
866rm -f /etc/timezone
867echo "$TZ" > /etc/timezone
868
869# Default Keyboard layout for console and X
870echo "KEYTABLE=\"$KEYTABLE\""          > /etc/sysconfig/keyboard
871echo "XKEYBOARD=\"$XKEYBOARD\""       >> /etc/sysconfig/keyboard
872echo "KDEKEYBOARD=\"$KDEKEYBOARD\""   >> /etc/sysconfig/keyboard
873echo "KDEKEYBOARDS=\"$KDEKEYBOARDS\"" >> /etc/sysconfig/keyboard
874
875# Desired desktop
876echo "DESKTOP=\"$DESKTOP\""            > /etc/sysconfig/desktop
877
878# Write all, including non-standard variables, to /etc/sysconfig/knoppix
879echo "LANG=\"$LANG\""                  > /etc/sysconfig/knoppix
880echo "COUNTRY=\"$COUNTRY\""           >> /etc/sysconfig/knoppix
881echo "LANGUAGE=\"$LANGUAGE\""         >> /etc/sysconfig/knoppix
882echo "CHARSET=\"$CHARSET\""           >> /etc/sysconfig/knoppix
883echo "KEYTABLE=\"$KEYTABLE\""         >> /etc/sysconfig/knoppix
884echo "XKEYBOARD=\"$XKEYBOARD\""       >> /etc/sysconfig/knoppix
885echo "KDEKEYBOARD=\"$KDEKEYBOARD\""   >> /etc/sysconfig/knoppix
886echo "KDEKEYBOARDS=\"$KDEKEYBOARDS\"" >> /etc/sysconfig/knoppix
887echo "DESKTOP=\"$DESKTOP\""           >> /etc/sysconfig/knoppix
888echo "TZ=\"$TZ\""                     >> /etc/sysconfig/knoppix
889
890# Write DPI setting if specified
891[ "$CUSTOM_DPI" ] && echo "CUSTOM_DPI=\"$CUSTOM_DPI\""  >> /etc/sysconfig/knoppix
892
893# disable 915resolution hack
894checkbootparam "no915res" && echo "NO915RES=\"yes\"" >> /etc/sysconfig/knoppix
895
896# No kernel messages while probing modules
897echo "0" > /proc/sys/kernel/printk
898
899# Check for IDE-SCSI capable CD-Rom(s) first
900checkbootparam "idecd" || checkbootparam "atapicd" || modprobe ide-scsi &>/dev/null
901modprobe ide-cd &>/dev/null
902
903# Bring up loopback interface now
904ifconfig lo 127.0.0.1 up
905
906# Write locale setting to default position
907rm -f /etc/default/locale
908echo -e "#  File generated by update-locale\nLANG=$LANG" > /etc/default/locale
909
910# Unicode console fix
911if [ "$(locale charmap)" = "UTF-8" ]; then
912        unicode_start 2> /dev/null
913else
914        unicode_stop 2> /dev/null
915fi
916
917# CD Checker
918if checkbootparam "testcd"; then
919        echo " ${BLUE}Checking CD data integrity as requested by '${CYAN}testcd${BLUE}' boot option.${NORMAL}"
920        echo " ${BLUE}Reading files and checking against ${FLL_IMAGE_DIR}/md5sums, this may take a while...${NORMAL}"
921        echo -n "${RED}"
922        ( cd /cdrom/ ; rm -f /tmp/md5sum.log ; LANG="$LANG" md5sum -c ${FLL_IMAGE_DIR}/md5sums 2>&1 | tee /tmp/md5sum.log )
923        if [ "$?" = "0" ]; then
924                echo " ${GREEN}Everything looks OK${NORMAL}"
925        else
926                echo "${RED} *** CHECKSUM FAILED FOR THESE FILES:                          ***"
927                egrep -v '(^md5sum:|OK$)' /tmp/md5sum.log
928                echo "${RED} *** DATA ON YOUR CD MEDIUM IS POSSIBLY INCOMPLETE OR DAMAGED, ***${NORMAL}"
929                echo "${RED} *** OR YOUR COMPUTER HAS BAD RAM.                             ***${NORMAL}"
930                echo -n "${CYAN}Hit return to contine, or press the reset button to quit.${NORMAL} "
931                read a
932        fi
933fi
934
935# Print CPU info
936echo -n "${GREEN}"
937awk -F: '/^processor/{printf " Processor"$2" is "};/^model name/{printf $2};/^vendor_id/{printf vendor};/^cpu MHz/{printf " %dMHz",int($2)};/^cache size/{printf ","$2" Cache"};/^$/{print ""}' /proc/cpuinfo 2>/dev/null
938echo -n "${NORMAL}"
939
940# KANOTIX autoconfig
941
942# udev support
943
944if checkbootparam "noudev"; then
945        echo "${BLUE}Skipping udev as requested on boot commandline.${NORMAL}"
946else
947        echo " ${GREEN}Enable ${YELLOW}udev${GREEN}.${NORMAL}"
948        mkdir -p /media
949        if ! pidof udevd >&-; then
950        RUNLEVEL=S /etc/init.d/udev start &>/dev/null
951                # load capability LSM (needed for hal)
952                modprobe capability &>/dev/null
953                if [ -x /etc/init.d/dbus-1 ]; then
954                        /etc/init.d/dbus-1 start &>/dev/null
955                elif [ -x /etc/init.d/dbus ]; then
956                        /etc/init.d/dbus start &>/dev/null
957                fi
958        fi                                                                                                           
959fi
960
961# Mount /dev/pts
962stringinfile "/dev/pts" /proc/mounts || mount -t devpts -o mode=0622 /dev/pts /dev/pts 2>/dev/null
963
964# check if usbcore is already loaded.
965USBCORE_TIMEOUT="$(getbootparam usbwait 2>/dev/null)"
966[ -z "$USBCORE_TIMEOUT" ] && USBCORE_TIMEOUT=5
967USBCORE_TIMEOUT=$((USBCORE_TIMEOUT))
968[ $USBCORE_TIMEOUT -lt 0 -o $USBCORE_TIMEOUT -gt 60 ] && USBCORE_TIMEOUT=5
969
970echo -n "${BLUE}Waiting for ${YELLOW}usbcore${BLUE}. ${NORMAL}"
971for x in $(seq ${USBCORE_TIMEOUT}); do
972        stringinfile "usbcore" /proc/modules && break
973        echo -n "${BLUE}$((${USBCORE_TIMEOUT}-${x})) s${NORMAL}"
974        for y in $(seq 10); do
975                stringinfile "usbcore" /proc/modules && break
976                sleep 0.1
977        done
978        for z in $(seq $((${#x}+2))); do echo -ne "\b \b"; done
979done
980stringinfile "usbcore" /proc/modules && echo "${GREEN}Done.${NORMAL}" || echo "${RED}Timeout reached.${NORMAL}"
981
982# Activate usbfs
983stringinfile "/proc/bus/usb" /proc/mounts || mount -o devmode=0666 -t usbfs /proc/bus/usb /proc/bus/usb 2>/dev/null
984
985if [ -d /proc/acpi ]; then
986        # ACPI
987        if checkbootparam "noacpi"; then
988                echo " ${BLUE}Skipping ACPI Bios detection as requested on boot commandline.${NORMAL}"
989        else
990                echo -n " ${GREEN}ACPI Bios found, activating modules:"
991                found=""
992                for a in /lib/modules/$KERNEL/kernel/drivers/acpi/*; do
993                        basename="${a##*/}"
994                        basename="${basename%%.*}"
995                        case "$basename" in *_acpi)
996                                egrep -qi "${basename%%_acpi}" /proc/acpi/dsdt 2>/dev/null || continue ;;
997                        esac
998                        modprobe $basename &>/dev/null && echo -n " ${YELLOW}$basename${GREEN}" && found="yes"
999                done
1000                test -z "$found" && echo -n "${BLUE}(none)"
1001                echo "${NORMAL}"
1002                fuser -k /proc/acpi/event &>/dev/null
1003                /etc/init.d/acpid start >/dev/null
1004        fi
1005else
1006        # APM
1007        if checkbootparam "noapm"; then
1008                echo " ${BLUE}Skipping APM Bios detection as requested on boot commandline.${NORMAL}"
1009        else
1010                modprobe apm power_off=1 &>/dev/null && test -x /etc/init.d/apmd &>/dev/null && /etc/init.d/apmd start &>/dev/null && echo " ${GREEN}APM Bios found, power management functions enabled.${NORMAL}"
1011        fi
1012fi
1013
1014# laptop?
1015unset IS_LAPTOP
1016if laptop-detect 2>/dev/null; then
1017        IS_LAPTOP=true
1018fi
1019
1020if [ -n "$IS_LAPTOP" ]; then
1021        # acpi-support
1022        if pidof acpid >/dev/null && /etc/init.d/acpi-support start >/dev/null 2>&1; then
1023                printf " ${GREEN}Starting ${YELLOW}acpi-support${GREEN} subsystem.${NORMAL}\n"
1024        fi
1025fi
1026
1027# First: PCMCIA Check/Setup
1028# This needs to be done before other modules are being loaded by hwsetup
1029
1030if checkbootparam "nopcmcia"; then
1031        echo " ${BLUE}Skipping PCMCIA detection as requested on boot commandline.${NORMAL}"
1032else
1033        modprobe pcmcia_core &>/dev/null
1034        # Try Cardbus or normal PCMCIA socket drivers
1035        modprobe yenta_socket &>/dev/null || modprobe i82365 &>/dev/null || modprobe tcic &>/dev/null
1036        if [ "$?" = "0" ]; then
1037                modprobe ds &>/dev/null
1038                if cardmgr &>/dev/null; then
1039                        echo " ${GREEN}PCMCIA found, cardmgr started.${NORMAL}"
1040                        sleep 4
1041                fi
1042        fi
1043fi
1044
1045# Second: Search & configure supported hardware
1046# Check for options relevant to hwsetup
1047NOSERIAL=""
1048checkbootparam noserial &>/dev/null && NOSERIAL="yes"
1049[ -n "$NOSERIAL" ] && HWSETUP_NOSERIAL="-m"
1050# load serial module
1051modprobe 8250 &>/dev/null
1052
1053# load psmouse module
1054modprobe psmouse &>/dev/null
1055if checkbootparam "nohwsetup"; then
1056        echo "${BLUE}Loading hardware profile from ${MAGENTA}/etc/modules${BLUE}.${NORMAL}"
1057        /etc/init.d/modutils-knoppix start &>/dev/null
1058else
1059        echo -n "${WHITE}"
1060        if hwsetup -p $HWSETUP_NOSERIAL >/dev/null; then
1061                echo -n "${NORMAL}"
1062        else
1063                echo " ${RED}Please check.${NORMAL}"
1064        fi
1065fi
1066
1067# activate PC Speaker
1068modprobe pcspkr &>/dev/null
1069
1070# Load fuse module
1071modprobe fuse &>/dev/null
1072
1073# activate input driver for char event devices
1074modprobe evdev &>/dev/null
1075
1076# dwl520e1 detection
1077if lspci -nv|grep 1260:3873 -A1|grep -q 1186:3700; then
1078        /usr/sbin/dwl520e1_fw_load >/dev/null 2>&1
1079        printf "install hostap_pci /sbin/modprobe --ignore-install hostap_pci && /usr/sbin/dwl520e1_fw_load >/dev/null 2>&1\n" > \
1080                /etc/modprobe.d/dwl520e1
1081fi
1082
1083# soft modem detection
1084if ! checkbootparam "nomodem"; then
1085        if lspci | grep Intel | grep -q "AC'97 Modem Controller"; then
1086                /etc/init.d/sl-modem-daemon start >/dev/null
1087        fi
1088fi
1089
1090# ipw3945 detection
1091[ -e /sys/bus/pci/drivers/ipw3945/*/cmd ] && (pidof ipw3945d &>/dev/null || /sbin/ipw3945d --quiet &>/dev/null)
1092
1093# Handle special options for ALSA sound drivers
1094rm -f /etc/modprobe.d/alsa-special
1095SYS=$(cut -f2 -d: /sys/devices/pci*/{,*/}*/modalias 2>/dev/null)
1096ALSA_SPECIAL=""
1097for sysid in $SYS; do
1098        # ALSA_SPECIAL is [kernel module with _ not -] [needed options]
1099        case "$sysid" in
1100                v000010DEd0000026Csv00001043sd000081CBbc*)
1101                        # ASUS M2NPV-VM
1102                        ALSA_SPECIAL="snd_hda_intel position_fix=1 model=3stack"
1103                        break
1104                        ;;
1105                v00008086d000027D8sv00001854sd0000005Fbc*)
1106                        # LG Electronics P1-J302E1
1107                        ALSA_SPECIAL="snd_hda_intel model=lg"
1108                        break
1109                        ;;
1110                v00008086d0000284Bsv00008086sd0000284Bbc*)
1111                        # MSI MS-7235
1112                        ALSA_SPECIAL="snd_hda_intel position_fix=1"
1113                        break
1114                        ;;
1115        esac
1116done
1117if [ -n "$ALSA_SPECIAL" ]; then
1118        printf "options $ALSA_SPECIAL\n" > /etc/modprobe.d/alsa-special
1119        if [ -d "/sys/module/${ALSA_SPECIAL%% *}" ]; then
1120                rmmod "${ALSA_SPECIAL%% *}"
1121                modprobe "$ALSA_SPECIAL"
1122        fi
1123fi
1124
1125# Read in what hwsetup has found
1126[ -f /etc/sysconfig/knoppix ] && source /etc/sysconfig/knoppix
1127
1128# Workaround for new mouse detection
1129if [ -f /etc/sysconfig/mouse ]; then
1130        source /etc/sysconfig/mouse
1131        if [ "$MOUSETYPE" == "ps2" ]; then
1132                ln -sf /dev/psaux /dev/mouse
1133                perl -pi -e "s|/dev/input/mice|/dev/psaux|" /etc/sysconfig/mouse /etc/sysconfig/knoppix
1134                source /etc/sysconfig/mouse
1135                source /etc/sysconfig/knoppix
1136        fi
1137fi
1138       
1139# Mouse
1140if [ -n "$MOUSE_DEVICE" ]; then
1141        echo " ${GREEN}Mouse is ${YELLOW}${MOUSE_FULLNAME}${GREEN} at ${MAGENTA}${MOUSE_DEVICE}${NORMAL}"
1142fi
1143
1144# Soundcard
1145if [ -n "$SOUND_FULLNAME" -o -n "$SOUND_DRIVER" ]; then
1146        SOUNDCARD="$SOUND_DRIVER"
1147        printf " ${GREEN}Soundcard is"
1148        [ -n "$SOUND_FULLNAME" ] && printf " ${YELLOW}$SOUND_FULLNAME${GREEN}"
1149        [ -n "$SOUNDCARD" ] && printf ", ALSA module is ${MAGENTA}$SOUNDCARD${GREEN}"
1150        printf "${NORMAL}\n"
1151fi
1152
1153# Get max. sound volume
1154VOL="$(getbootparam vol 2>/dev/null)"
1155if [ -z "$VOL" ] || [ "$VOL" -lt 0 ] || [ "$VOL" -gt 100 ]; then
1156        VOL=50
1157fi
1158
1159# Fast ALSA detection
1160case "$SOUND_DRIVER" in
1161        snd*)
1162                printf "alias snd-card-0 $SOUND_DRIVER\n"  > /etc/modprobe.d/sound
1163                printf "options $SOUND_DRIVER index=0\n"  >> /etc/modprobe.d/sound
1164                #set_mixers
1165                aumix -m 0 -v $VOL -w $VOL -c $VOL >/dev/null 2>&1
1166                ;;
1167esac
1168
1169# Read default keyboard from config file.
1170# There seems to be no reliable autoprobe possible.
1171[ -f /etc/sysconfig/keyboard ] && source /etc/sysconfig/keyboard
1172# Set default keyboard before interactive setup
1173[ -n "$KEYTABLE" ] && loadkeys -q $KEYTABLE
1174[ -n "$CONSOLEFONT" ] && consolechars -f $CONSOLEFONT
1175
1176if [ -n "$INTERACTIVE" ]; then
1177        # Interactive configuration
1178        echo "${BLUE}Entering interactive configuration second stage.${NORMAL}"
1179
1180        echo " ${GREEN}Your console keyboard defaults to: ${MAGENTA}${KEYTABLE}"
1181        echo -n "${CYAN}Do you want to (re)configure your console keyboard?${NORMAL} [Y/n] "
1182        read a
1183        [ "$a" != "n" ] && /usr/sbin/kbdconfig
1184        # kbdconfig already loads the keyboard if modified.
1185
1186        echo -n "${CYAN}Do you want to (re)configure your soundcard?${NORMAL} [Y/n] "
1187        read a
1188        [ "$a" != "n" ] && sndconfig && ( exec aumix -m 0 &>/dev/null & )
1189
1190        if [ -n "$MOUSE_FULLNAME" -o -n "$MOUSE_DEVICE" ]; then
1191                echo -n " ${GREEN}Your mouse has been autodetected as: ${MAGENTA}"
1192                ls -l /dev/mouse | awk '{print $9 " " $10 " " $11}'
1193                echo -n "${NORMAL}"
1194        fi
1195
1196        echo -n "${CYAN}Do you want to (re)configure your mouse?${NORMAL} [Y/n] "
1197        read a
1198        [ -f /etc/sysconfig/mouse ] && source /etc/sysconfig/mouse
1199        [ "$a" != "n" ] && mouseconfig
1200fi
1201
1202# KNOPPIX automatic XFree86 Setup
1203if ! checkbootparam "nomkxf86config"; then
1204        [ -x /usr/sbin/mkxf86config ] && /usr/sbin/mkxf86config
1205fi
1206
1207# Read in changes
1208[ -f /etc/sysconfig/knoppix ] && source /etc/sysconfig/knoppix
1209
1210if [ -n "$INTERACTIVE" ]; then
1211        echo -n "${CYAN}Do you want to (re)configure your graphics (X11) subsystem?${NORMAL} [Y/n] "
1212        read a
1213        [ "$a" != "n" ] && xf86cfg -textmode -xf86config /etc/X11/xorg.conf >/dev/console 2>&1 </dev/console
1214        echo " ${GREEN}Interactive configuration finished. Everything else should be fine for now.${NORMAL}"
1215fi
1216
1217# Start FC detection on vt10
1218NOFC=""
1219checkbootparam "nofc" && NOFC="yes"
1220[ -e /etc/drdsl/modules.inc ] && NOFC="yes"
1221if [ -z "$NOFC" ]; then
1222        echo " ${GREEN}Starting ${YELLOW}FC${GREEN} detection on ${YELLOW}vt10${GREEN}.${NORMAL}"
1223        if [ -x /usr/sbin/detect-fc ]; then
1224                open -c 10 /usr/sbin/detect-fc
1225        elif [ -x /usr/local/bin/detect-fc.bash ]; then
1226                open -c 10 /usr/local/bin/detect-fc.bash
1227        fi
1228fi
1229
1230RUNLEVEL="$(runlevel)"
1231
1232# Add cdrom devices to /etc/fstab
1233for c in $(ls -d /dev/cdrom* 2>/dev/null); do
1234        m=${c#/dev}
1235        [ "$m" == "/cdrom" ] && m="/cdrom0"
1236        [ -d /media$m ] || mkdir -p /media$m
1237        stringinfile "/dev/$(readlink $c)" "/etc/fstab" || printf "%-15s %-15s %-7s %-15s %-7s %s\n" "/dev/$(readlink $c)" "/media$m" "udf,iso9660" "user,noauto" "0" "0" >> /etc/fstab
1238done
1239
1240# Add floppy devices to /etc/fstab
1241for f in $(ls -d /sys/block/fd* 2>/dev/null); do
1242        [ -d /media/floppy${f#/sys/block/fd} ] || mkdir -p /media/floppy${f#/sys/block/fd}
1243        stringinfile "$f" "/etc/fstab" || printf "%-15s %-15s %-7s %-15s %-7s %s\n" "/dev${f#/sys/block}" "/media/floppy${f#/sys/block/fd}" "auto" "rw,user,noauto" "0" "0" >> /etc/fstab
1244done
1245
1246NOSWAP=""
1247checkbootparam "noswap" && NOSWAP="yes"
1248
1249# Collect partitions from /proc/partitions
1250partitions=""
1251while read major minor blocks partition relax; do
1252        partition="${partition##*/}"
1253        [ -z "$partition" -o ! -e "/dev/$partition" ] && continue
1254        case "$partition" in
1255                hd?) ;;                                               # IDE Harddisk, entire disk
1256                sd?) ;;                                               # SCSI Harddisk, entire disk
1257                [hs]d*) partitions="$partitions /dev/$partition";;    # IDE or SCSI disk partition
1258        esac
1259done <<EOT
1260$(awk 'BEGIN{old="__start"}{if($0==old){exit}else{old=$0;if($4&&$4!="name"){print $0}}}' /proc/partitions)
1261EOT
1262
1263# Disable DMA for all IDE drives now if not enabled (and if not already done by linuxrc).
1264# This is already done by linuxrc now.
1265# However, for a harddisk-installed version, we are doing it again here.
1266if checkbootparam "nodma"; then
1267        #echo " ${BLUE}Skipping DMA accelleration as requested on boot commandline.${NORMAL}"
1268#else
1269        for d in $(cd /proc/ide 2>/dev/null && echo hd[a-z]); do
1270                if test -d /proc/ide/$d; then
1271                        if egrep -q 'using_dma[ \t]+1' /proc/ide/$d/settings 2>/dev/null; then
1272                                MODEL="$(cat /proc/ide/$d/model 2>/dev/null)"
1273                                test -z "$MODEL" && MODEL="[GENERIC IDE DEVICE]"
1274                                echo "${BLUE}Disabling DMA acceleration for: ${MAGENTA}$d       ${YELLOW}[${MODEL}]${NORMAL}"
1275                                echo "using_dma:0" >/proc/ide/$d/settings
1276                        fi
1277                fi
1278        done
1279fi
1280
1281# Start creating /etc/fstab with HD partitions and USB SCSI devices now
1282if checkbootparam "nofstab"; then
1283        echo " ${BLUE}Skipping /etc/fstab creation as requested on boot commandline.${NORMAL}"
1284else
1285        echo -n "${BLUE}Scanning for Harddisk partitions and creating ${YELLOW}/etc/fstab${BLUE}... "
1286        [ -d /${FLL_IMAGE_DIR} ] && rebuildfstab -r -u ${FLL_LIVE_USER} -g $(getent passwd "$FLL_LIVE_USER" | cut -d\: -f 4) >/dev/null 2>/dev/null || rebuildfstab -r &>/dev/null
1287        if [ -e /var/run/rebuildfstab.pid ]; then
1288                # Another instance of rebuildfstab, probably from hotplug, is still running, so just wait.
1289                sleep 8
1290        fi
1291        echo "${GREEN}Done.${NORMAL}"
1292fi
1293
1294if [ -n "$partitions" ]; then
1295        while read p m f relax; do
1296                case "$p" in *fd0*|*proc*|*pts*|*sys*|*cdrom*|\#*) continue;; esac
1297                options="users,exec"
1298                fnew=""
1299                case "$f" in swap)
1300                        if [ -n "$NOSWAP" ]; then
1301                                echo "${BLUE}Ignoring swap partition ${MAGENTA}$p${BLUE} as requested.${NORMAL}"
1302                        else
1303                                echo "${BLUE}Using swap partition ${MAGENTA}$p${BLUE}.${NORMAL}"
1304                                swapon $p 2>/dev/null
1305                        fi
1306                        continue
1307                        ;;
1308                esac
1309                # Create mountdir if not already present
1310                d="/media/${p##*/}" ; [ -d "$d" ] || mkdir -p "$d"
1311                case "$f" in vfat|msdos)
1312                        if [ -z "$NOSWAP" ] && mount -o uid=${FLL_LIVE_USER},gid=$(getent passwd "$FLL_LIVE_USER" | cut -d\: -f 4),ro -t $f $p $d 2>/dev/null; then
1313                                if [ -f $d/${FLL_DISTRO_NAME}.swp ]; then
1314                                        mount -o remount,rw $d
1315                                        if swapon $d/${FLL_DISTRO_NAME}.swp 2>/dev/null; then
1316                                                echo "${BLUE}Using ${FLL_DISTRO_NAME} swapfile ${MAGENTA}$d/${FLL_DISTRO_NAME}.swp${BLUE}.${NORMAL}"
1317                                                mount -o remount,ro $d 2>/dev/null
1318                                                fnew="$d/${FLL_DISTRO_NAME}.swp none            swap    sw              0       0"
1319                                                stringinfile "$fnew" "/etc/fstab" || echo "$fnew" >> /etc/fstab
1320                                        else
1321                                                umount $d
1322                                        fi
1323                                else
1324                                        umount $d
1325                                fi
1326                        fi
1327                        ;;
1328                        esac
1329                done <<EOT
1330$(cat /etc/fstab)
1331EOT
1332fi
1333
1334# New: Interactively create swapfiles on DOS partitions
1335# (if necessary and possible)
1336FREEMEM="$(awk 'BEGIN{m=0};/MemFree|Cached|SwapFree/{m+=$2};END{print m}' /proc/meminfo)"
1337
1338if [ "$FREEMEM" -lt 80000 -a -x /usr/bin/kdeinit -a -x /usr/sbin/mkdosswapfile ]; then
1339        case "$LANGUAGE" in
1340                de)
1341                        LOWMEM="Ihr Rechner verfügt nur über ${FREEMEM}kB freien RAM-Speicher. Dies ist für das Arbeiten mit Linux zwar generell ausreichend, aber leider nicht genug, um größere Anwendungen wie KDE oder Office-Pakete zu starten. Sie können im nächsten Schritt versuchen, eine sog. Auslagerungsdatei auf einer DOS-Partition (sofern vorhanden) einzurichten."
1342                        ;;
1343                *)
1344                        LOWMEM="There are only ${FREEMEM}kB of RAM available in your computer. While this is usually sufficient for working under Linux, it is unfortunately not enough for starting bigger applications like KDE, or office suites. You can try to create a so-called swapfile on an existing DOS-Partition (if available) in the next step."
1345                        ;;
1346        esac
1347                dialog --msgbox "$LOWMEM" 12 65 </dev/console >/dev/console 2>&1
1348                /usr/sbin/mkdosswapfile </dev/console >/dev/console 2>&1
1349fi
1350
1351# Fat-Client-Version: DHCP Broadcast for IP address
1352if checkbootparam "nodhcp"; then
1353        echo " ${BLUE}Skipping DHCP broadcast/network detection as requested on boot commandline.${NORMAL}"
1354else
1355        NETDEVICES="$(awk -F: '/eth.:|tr.:/{print $1}' /proc/net/dev 2>/dev/null)"
1356        for DEVICE in $NETDEVICES; do
1357                echo -n " ${GREEN}Network device ${MAGENTA}$DEVICE${GREEN} detected, DHCP broadcasting for IP.${NORMAL}"
1358                trap 2 3 11
1359                pump -i $DEVICE &>/dev/null &
1360                trap "" 2 3 11
1361                sleep 1
1362                echo " ${BLUE}(Backgrounding)${NORMAL}"
1363        done
1364fi
1365
1366findfile(){
1367        FOUND=""
1368        # search all partitions for a file in the root directory
1369        for i in /media/[sh]d[a-z] /media/[sh]d[a-z][1-9] /media/[sh]d[a-z][1-9]?*; do
1370                # See if it's already mounted
1371                [ -f "$i/$1" ] &&  { echo "$i/$1"; return 0; }
1372                if [ -d "$i" ] && mount -r "$i" 2>/dev/null; then
1373                        [ -f "$i/$1" ] && FOUND="$i/$1"
1374                        umount -l "$i" 2>/dev/null
1375                        [ -n "$FOUND" ] && { echo "$FOUND"; return 0; }
1376                fi
1377        done
1378        return 2
1379}
1380
1381# Load aes and cryptoloop
1382modprobe aes 2>/dev/null
1383modprobe cryptoloop 2>/dev/null
1384
1385# Try to mount this filesystem read-only, without or with encryption
1386trymount(){
1387        # Check if already mounted
1388        case "$(cat /proc/mounts)" in *\ $2\ *) return 0;; esac
1389        # Apparently, mount-aes DOES autodetect AES loopback files.
1390        [ -b "$1" ] && { mount -t auto -o ro "$1" "$2" 2>/dev/null; RC="$?"; }
1391        # We need to mount crypto-loop files with initial rw support
1392        [ -f "$1" ] && { mount -t auto -o loop,rw "$1" "$2" 2>/dev/null; RC="$?"; }
1393        # Mount succeeded?
1394        [ "$RC" = "0" ] && return 0
1395        echo ""
1396        echo "${CYAN}Filesystem not autodetected, trying to mount $1 with AES256 encryption${NORMAL}"
1397        a="y"
1398        while [ "$a" != "n" -a "$a" != "N" ]; do
1399                # We need to mount crypto-loop files with initial rw support
1400                mount -t auto -o loop,rw,encryption=AES256 "$1" "$2" && return 0
1401                echo -n "${RED}Mount failed, retry? [Y/n] ${NORMAL}"
1402                read a
1403        done
1404        return 1
1405}
1406
1407# Unionfs
1408getfiledev(){
1409        filedev="$(echo $MYPARAM | grep ^/media/ | tail -n 1 | sed s/\\/media\\/\\\([^\\/]\\+\\\).*/\\/dev\\/\\\1/)"
1410        [ -z "$filedev" ] && filedev="$(echo $MYPARAM | grep ^/dev/ | tail -n 1 | sed s/\\/dev\\/\\\([^\\/]\\+\\\).*/\\/dev\\/\\\1/)"
1411}
1412
1413getfilepath(){
1414        filepath="$(echo $MYPARAM | grep ^/media/ | sed s/\\/media\\/\\\([^\\/]\\+\\\)\\///)"
1415        [ -z "$filepath" ] && filepath="$(echo $MYPARAM | grep ^/dev/ | sed s/\\/dev\\/\\\([^\\/]\\+\\\)\\///)"
1416}
1417
1418# Move up with other cheats code later
1419checkbootparam noconfigall && NOCONFIGCD="Y" && NOCONFIGHOME="Y" && NOCONFIGCHEAT="Y"
1420checkbootparam noconfigcd && NOCONFIGCD="Y"
1421checkbootparam noconfighome && NOCONFIGHOME="Y"
1422checkbootparam noconfigcheat && NOCONFIGCHEAT="Y"
1423
1424if [ -z "$NOCONFIGCD" ]; then
1425        # Check for extra shellscript on CD-Rom (/cdrom/${FLL_IMAGE_DIR}/knoppix.sh)
1426        MYCONFIG="$(ls -1d /cdrom/${FLL_IMAGE_DIR}/[Kk][Nn][Oo][Pp][Pp][Ii][Xx].[Ss][Hh] 2>/dev/null)"
1427        if [ -n "$MYCONFIG" -a -f "$MYCONFIG" -a -z "$NOCONFIGCD" ]; then
1428                echo ""
1429                echo " ${GREEN}${FLL_DISTRO_NAME} Configuration file found on CD, executing ${MAGENTA}$MYCONFIG${GREEN}.${NORMAL}"
1430                echo "6" > /proc/sys/kernel/printk
1431                source "$MYCONFIG" /cdrom/${FLL_IMAGE_DIR} || true
1432                echo "0" > /proc/sys/kernel/printk
1433        fi
1434fi
1435
1436# Check for persistent homedir option and eventually mount /home from there,
1437# or use a loopback file.
1438HOMEDIR="$(getbootparam home)"
1439MYHOMEDEVICE=""
1440MYHOMEMOUNTPOINT=""
1441MYHOMEDIR=""
1442if [ -n "$HOMEDIR" ]; then
1443        case "$HOMEDIR" in
1444                /dev/*)
1445                        MYHOMEDEVICE="${HOMEDIR##/dev/}"
1446                        MYHOMEDEVICE="/dev/${MYHOMEDEVICE%%/*}"
1447                        MYHOMEMOUNTPOINT=$(grep $MYHOMEDEVICE /proc/mounts | cut -d' ' -f2)
1448                        [ -z "$MYHOMEMOUNTPOINT" ] && MYHOMEMOUNTPOINT="/media/${MYHOMEDEVICE##/dev/}"
1449                        MYHOMEDIR="/media/${HOMEDIR##/dev/}"
1450                        ;;
1451                /media/*)
1452                        MYHOMEDEVICE="${HOMEDIR##/media/}"
1453                        MYHOMEDEVICE="/dev/${MYHOMEDEVICE%%/*}"
1454                        MYHOMEMOUNTPOINT=$(grep $MYHOMEDEVICE /proc/mounts | cut -d' ' -f2)
1455                        [ -z "$MYHOMEMOUNTPOINT" ] && MYHOMEMOUNTPOINT="/media/${MYHOMEDEVICE##/dev/}"
1456                        MYHOMEDIR="$HOMEDIR"
1457                        ;;
1458                [Aa][Uu][Tt][Oo]|[Ss][Cc][Aa][Nn]|[Ff][Ii][Nn][Dd])
1459                        MYHOMEDIR="$(findfile knoppix.img)"
1460                        MYHOMEDEVICE="${MYHOMEDIR##/media/}"
1461                        MYHOMEDEVICE="/dev/${MYHOMEDEVICE%%/*}"
1462                        MYHOMEMOUNTPOINT=$(grep $MYHOMEDEVICE /proc/mounts | cut -d' ' -f2)
1463                        [ -z "$MYHOMEMOUNTPOINT" ] && MYHOMEMOUNTPOINT="/media/${MYHOMEDEVICE##/dev/}"
1464                        ;;
1465                *)
1466                        echo "${CRE}${RED}Invalid ${CYAN}home=${RED} option '$HOMEDIR' specified (must start with /dev/ or /media/ or 'scan').${NORMAL}"
1467                        echo "${CRE}${RED}Option ignored.${NORMAL}"
1468                        ;;
1469        esac
1470fi
1471
1472if [ -n "$MYHOMEDIR" ]; then
1473        if trymount "$MYHOMEDEVICE" "$MYHOMEMOUNTPOINT"; then
1474                [ -f "$MYHOMEMOUNTPOINT/knoppix.img" ] && MYHOMEDIR="$MYHOMEMOUNTPOINT/knoppix.img"
1475                while read device mountpoint fs relax; do
1476                        case "$mountpoint" in
1477                                *$MYHOMEMOUNTPOINT*)
1478                                        case "$fs" in
1479                                                *[Nn][Tt][Ff][Ss]*)
1480                                                        umount "$MYHOMEMOUNTPOINT"; echo " ${RED}ERROR: WON'T MOUNT NTFS FILESYSTEM ON $MYHOMEDEVICE READ/WRITE!"
1481                                                        break
1482                                                        ;;
1483                                                *[Ff][Aa][Tt]*)
1484                                                        # Note: This currently won't work with encrypted partitions
1485                                                        mount -o remount,rw,uid=${FLL_LIVE_USER},gid=$(getent passwd "$FLL_LIVE_USER" | cut -d\: -f 4),umask=002,shortname=mixed,quiet "$MYHOMEDEVICE" "$MYHOMEMOUNTPOINT"
1486                                                        if [ ! -f "$MYHOMEDIR" ]; then
1487                                                                echo " ${RED}WARNING: FAT32 is not a good filesystem option for /home/${FLL_LIVE_USER} (missing socket/symlink support).${NORMAL}"
1488                                                                echo " ${RED}WARNING: Better use an ext2 loopback file on this device, and boot with home=$MYHOMEDEVICE/knoppix.img.${NORMAL}"
1489                                                        fi
1490                                                ;;
1491                                        esac
1492                                        if mount -o remount,rw "$MYHOMEMOUNTPOINT"; then
1493                                                echo -n " ${GREEN}Mounting ${YELLOW}$MYHOMEDIR${GREEN} as ${YELLOW}/home/${FLL_LIVE_USER}${GREEN}... "
1494                                                if [ -f "$MYHOMEDIR" ]; then
1495                                                        # It's a loopback file, mount it over the /home/${FLL_LIVE_USER} directory
1496                                                        trymount "$MYHOMEDIR" /home/${FLL_LIVE_USER}
1497                                                        RC="$?"
1498                                                        [ "$RC" = "0" ] && ERROR="$(mount -o remount,rw /home/${FLL_LIVE_USER} 2>&1)"
1499                                                        RC="$?"
1500                                                else
1501                                                        # Do a --bind mount
1502                                                        ERROR="$(mount --bind "$MYHOMEDIR" /home/${FLL_LIVE_USER} 2>&1)"
1503                                                        RC="$?"
1504                                                fi
1505                                                [ "$RC" = "0" ] && echo "${GREEN}/home/${FLL_LIVE_USER} mounted OK.${NORMAL}" || { echo "${RED}FAILED."; echo "$ERROR${NORMAL}"; }
1506                                        fi
1507                                        break
1508                                        ;;
1509                        esac
1510                done <<EOT
1511$(cat /proc/mounts)
1512EOT
1513        fi
1514fi
1515
1516for unioncheat in unionro unionrw unionfs ; do
1517        DOUNION=""
1518        grep $unioncheat /home/${FLL_LIVE_USER}/.union >/dev/null 2>&1 && DOUNION="Yes" && MYPARAM="$(grep $unioncheat /home/${FLL_LIVE_USER}/.union 2>/dev/null | cut -d'=' -f2)"
1519        checkbootparam "$unioncheat" && DOUNION="Yes" && MYPARAM="$(getbootparam "$unioncheat")"
1520        if [ -n "$DOUNION" ] ;then
1521                [ -z "$UNIONMADE" ] && mount -t unionfs -o dirs=/${FLL_IMAGE_DIR} none /${FLL_IMAGE_DIR} && UNIONMADE="yes" >/dev/null
1522                echo " ${GREEN}Enable ${YELLOW} $unioncheat ${GREEN}support.${NORMAL}"
1523                UNIONMNTOPT=""
1524                [ "$unioncheat" == "unionro" ] && UNIONMNTOPT="-o ro"
1525                [ "$unioncheat" == "unionfs" ] && MYPARAM="/ramdisk/var/tmp/union/" && mkdir -p $MYPARAM
1526                getfiledev
1527                if [ -n "$filedev" ]; then
1528                        if grep $filedev /etc/fstab 2>&1>/dev/null && ! grep $filedev /proc/mounts 2>&1>/dev/null; then
1529                                mount $UNIONMNTOPT $filedev >/dev/null
1530                                getfilepath
1531                                MYPARAM="$(grep -v ^[:space:]*\# /etc/fstab | grep $filedev | head -n 1 | awk '{print $2}')"
1532                                MYPARAM="$MYPARAM/$filepath"
1533                        else
1534                                if ! grep $filedev /proc/mounts; then
1535                                        mkdir -p /tmp/$unioncheat >/dev/null
1536                                        mount $UNIONMNTOPT $filedev /tmp/$unioncheat >/dev/null
1537                                        getfilepath
1538                                        MYPARAM="/ramdisk/var/tmp/$unioncheat/$filepath"
1539                                else
1540                                        getfilepath
1541                                        MYPARAM="$(grep $filedev /proc/mounts | tail -n 1 | awk '{ print $2 }' -)"
1542                                        grep $MYPARAM /proc/mounts | awk '{print $4 }' - | grep ro &>/dev/null && mount -o remount,rw $filedev $MYPARAM >/dev/null
1543                                        MYPARAM="$MYPARAM/$filepath"
1544                                fi
1545                        fi
1546                fi
1547                if [ -f "$MYPARAM" ]; then
1548                        mkdir -p /tmp/$unioncheat-loop >/dev/null
1549                        mount -o loop $UNIONMNTOPT $MYPARAM /tmp/$unioncheat-loop >/dev/null
1550                        MYPARAM="/ramdisk/var/tmp/$unioncheat-loop"
1551                fi
1552                [ -n "$MYPARAM" ] && unionctl /${FLL_IMAGE_DIR} --add $MYPARAM >/dev/null && echo " ${Green}Union ${YELLOW}$MYPARAM ${GREEN}enabled.${Normal}"
1553                [ -z "$UNIONTIDY" ] && unionctl /${FLL_IMAGE_DIR} --mode /${FLL_IMAGE_DIR} ro > /dev/null && UNIONTIDY="yes"
1554                [ -n "$UNIONMNTOPT" ] && unionctl /${FLL_IMAGE_DIR} --mode $MYPARAM ro > /dev/null
1555        fi
1556done
1557
1558if [ -z "$NOCONFIGCHEAT" ]; then
1559        # Check for configuration floppy add-on if not running from HD
1560        if [ -n "$MYCONF" ]; then
1561                FOUND_CONFIG=""
1562                if [ -n "$MYCONFDIR" ]; then
1563                        case "$MYCONFDIR" in
1564                                /dev/*)
1565                                        MYCONFDEVICE="${MYCONFDIR##/dev/}"
1566                                        MYCONFDEVICE="/dev/${MYCONFDEVICE%%/*}"
1567                                        MYCONFMOUNTPOINT="/media/${MYCONFDEVICE##/dev/}"
1568                                        MYCONFDIR="/media/${MYCONFDIR##/dev/}"
1569                                        ;;
1570                                /media/*)
1571                                        MYCONFDEVICE="${MYCONFDIR##/media/}"
1572                                        MYCONFDEVICE="/dev/${MYCONFDEVICE%%/*}"
1573                                        MYCONFMOUNTPOINT="/media/${MYCONFDEVICE##/dev/}"
1574                                        ;;
1575                                [Aa][Uu][Tt][Oo]|[Ss][Cc][Aa][Nn]|[Ff][Ii][Nn][Dd])
1576                                        MYCONFDIR="$(findfile knoppix.sh)"
1577                                        if [ -n "$MYCONFDIR" ]; then
1578                                                MYCONFDEVICE="${MYCONFDIR##/media/}"
1579                                                MYCONFDEVICE="/dev/${MYCONFDEVICE%%/*}"
1580                                                MYCONFMOUNTPOINT="/media/${MYCONFDEVICE##/dev/}"
1581                                                MYCONFDIR="${MYCONFMOUNTPOINT}"
1582                                        else
1583                                                FOUND_CONFIG="none"
1584                                        fi
1585                                        ;;
1586                                *)
1587                                        echo "${CRE}${RED}Invalid configdir '$MYCONFDIR' specified (must start with /dev/ or /media/ or 'scan').${NORMAL}"
1588                                        echo "${CRE}${RED}Option ignored.${NORMAL}"
1589                                        FOUND_CONFIG="invalid"
1590                                        ;;
1591                        esac
1592                else
1593                        MYCONFDEVICE="/dev/fd0"
1594                        MYCONFMOUNTPOINT="/media/floppy0"
1595                        MYCONFDIR="/media/floppy0"
1596                fi
1597
1598                if [ -z "$FOUND_CONFIG" ]; then
1599                        echo -n "${CRE}${BLUE}Checking ${MAGENTA}${MYCONFDIR}${BLUE} for ${FLL_DISTRO_NAME} configuration files...${NORMAL}"
1600                        if trymount "$MYCONFDEVICE" "$MYCONFMOUNTPOINT"; then
1601                                MYCONFIG="$(ls -1d $MYCONFDIR/[Kk][Nn][Oo][Pp][Pp][Ii][Xx].[Ss][Hh] 2>/dev/null)"
1602                                if [ -n "$MYCONFIG" -a -f "$MYCONFIG" ]; then
1603                                        echo ""
1604                                        FOUND_CONFIG="yes"
1605                                        echo " ${GREEN}Found, now executing ${MAGENTA}$MYCONFIG${GREEN}.${NORMAL}"
1606                                        echo "6" > /proc/sys/kernel/printk
1607                                        source "$MYCONFIG" "$MYCONFDIR" || true
1608                                        echo "0" > /proc/sys/kernel/printk
1609                                fi
1610                                umount "$MYCONFMOUNTPOINT" 2>/dev/null
1611                        fi
1612                fi
1613                [ -n "$FOUND_CONFIG" ] || echo " ${BLUE}Not present.${NORMAL}"
1614        fi
1615fi
1616
1617if [ -z "$NOCONFIGHOME" -a -f /home/${FLL_LIVE_USER}/.[Kk][Nn][Oo][Pp][Pp][Ii][Xx].[Ss][Hh] ]; then
1618        MYCONFIG="$(ls -1d /home/${FLL_LIVE_USER}/.[Kk][Nn][Oo][Pp][Pp][Ii][Xx].[Ss][Hh] 2>/dev/null)"
1619        echo " ${GREEN}Found, now executing ${MAGENTA}$MYCONFIG${GREEN}.${NORMAL}"
1620        echo "6" > /proc/sys/kernel/printk
1621        source "$MYCONFIG" "/home/${FLL_LIVE_USER}" || true
1622        echo "0" > /proc/sys/kernel/printk     
1623fi
1624
1625
1626# modem detection
1627if ! checkbootparam "nomodem"; then
1628        if lspci|grep Intel|grep -q "AC'97 Modem Controller"; then
1629                /etc/init.d/sl-modem-daemon start &>/dev/null
1630                grep -q ^sl-modem-daemon /etc/sysconfig/services &>/dev/null || echo sl-modem-daemon >> /etc/sysconfig/services
1631        fi
1632fi
1633
1634# powernow detection
1635if ! checkbootparam "nopowernow"; then
1636        CPUINFO=/proc/cpuinfo
1637        IOPORTS=/proc/ioports
1638
1639        [ -f $CPUINFO ] || exit 0
1640
1641        MODEL_NAME=$(grep '^model name' "$CPUINFO" | head -1 | sed -e 's/^.*: //;')
1642        VENDOR_ID=$(grep -E '^vendor_id[^:]+:' "$CPUINFO" | head -1 | sed -e 's/^.*: //;')
1643        CPU_FAMILY=$(sed -e '/^cpu family/ {s/.*: //;p;Q};d' $CPUINFO)
1644
1645        POWERNOW=
1646
1647        # Two modules for PIII-M depending the chipset.
1648        if [ -f $IOPORTS ] && grep -q 'Intel .*ICH' $IOPORTS ; then
1649                PIII_POWERNOW=speedstep-ich
1650        else
1651                PIII_POWERNOW=speedstep-smi
1652        fi
1653
1654        case "$VENDOR_ID" in
1655               
1656                GenuineIntel*)
1657                        # If the CPU has the est flag, it supports enhanced speedstep and should
1658                        # use the acpi-cpufreq driver (speedstep-centrino is deprecated)
1659                        if grep -q est $CPUINFO; then
1660                                POWERNOW=acpi-cpufreq;
1661                        elif [ $CPU_FAMILY = 15 ]; then
1662                                # Right. Check if it's a P4 without est.
1663                                # Could be speedstep-ich.
1664                                POWERNOW=speedstep-ich;
1665                        else
1666                                # So it doesn't have Enhanced Speedstep, and it's not a P4. It could be
1667                                # a Speedstep PIII, or it may be unsupported. There's no terribly good
1668                                # programmatic way of telling.
1669                                case "$MODEL_NAME" in
1670                                        Intel\(R\)\ Pentium\(R\)\ III\ Mobile\ CPU*)
1671                                                POWERNOW=$PIII_POWERNOW
1672                                                ;;
1673                                       
1674                                        # JD: says this works with   cpufreq_userspace
1675                                        Mobile\ Intel\(R\)\ Pentium\(R\)\ III\ CPU\ -\ M*)
1676                                                POWERNOW=$PIII_POWERNOW
1677                                                ;;
1678                                       
1679                                        # https://bugzilla.ubuntu.com/show_bug.cgi?id=4262
1680                                        # UNCONFIRMED
1681                                        Pentium\ III\ \(Coppermine\)*)
1682                                                POWERNOW=$PIII_POWERNOW
1683                                                ;;
1684                                esac
1685                        fi
1686                        ;;
1687               
1688                AuthenticAMD*)
1689                        # Hurrah. This is nice and easy.
1690                        case $CPU_FAMILY in
1691                                5)
1692                                        # K6
1693                                        POWERNOW=powernow-k6
1694                                        ;;
1695                                6)
1696                                        # K7
1697                                        POWERNOW=powernow-k7
1698                                        ;;
1699                                15)
1700                                        # K8
1701                                        POWERNOW=powernow-k8
1702                                        ;;
1703                        esac
1704                        ;;
1705               
1706                CentaurHauls*)
1707                        # VIA
1708                        if [ $CPU_FAMILY = 6 ]; then
1709                                POWERNOW=longhaul;
1710                        fi
1711                        ;;
1712               
1713                GenuineTMx86*)
1714                        # Transmeta
1715                        if grep -q longrun $CPUINFO; then
1716                                POWERNOW=longrun
1717                        fi
1718                        ;;
1719
1720        esac
1721        if [ "$POWERNOW" ]; then
1722                echo " ${GREEN}Enable ${YELLOW}Powernow${GREEN}.${NORMAL}"
1723                modprobe $POWERNOW &>/dev/null
1724                if [ -x /etc/init.d/powernowd ]; then
1725                        /etc/init.d/powernowd start &>/dev/null
1726                        grep -q ^powernowd /etc/sysconfig/services &>/dev/null || echo powernowd >>/etc/sysconfig/services
1727                fi
1728                if [ -x /etc/init.d/powersaved ]; then
1729                        /etc/init.d/powersaved start &>/dev/null
1730                        grep -q ^powersaved /etc/sysconfig/services &>/dev/null || echo powersaved >>/etc/sysconfig/services
1731                fi
1732        fi
1733else
1734        echo "${BLUE}Skipping Powernow detection as requested on boot commandline.${NORMAL}"
1735fi
1736
1737# MS MM keyboard add-on
1738# fix
1739setkeycodes e001 126 &>/dev/null
1740setkeycodes e059 127 &>/dev/null
1741# fn keys
1742setkeycodes e03b 59 &>/dev/null
1743setkeycodes e008 60 &>/dev/null
1744setkeycodes e007 61 &>/dev/null
1745setkeycodes e03e 62 &>/dev/null
1746setkeycodes e03f 63 &>/dev/null
1747setkeycodes e040 64 &>/dev/null
1748setkeycodes e041 65 &>/dev/null
1749setkeycodes e042 66 &>/dev/null
1750setkeycodes e043 67 &>/dev/null
1751setkeycodes e023 68 &>/dev/null
1752setkeycodes e057 87 &>/dev/null
1753setkeycodes e058 88 &>/dev/null
1754
1755# enable hotkeys
1756[ -x /etc/init.d/hotkey-setup ] && /etc/init.d/hotkey-setup start
1757
1758echo "6" > /proc/sys/kernel/printk
1759
1760# Re-enable signals
1761trap 2 3 11
1762
1763exit 0
Note: See TracBrowser for help on using the repository browser.