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

Revision 5147, 47.3 KB checked in by alanbach-guest, 4 years ago (diff)
  • Start dbus before HAL
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="PARSIX"
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                # Default/General
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="Etc/UTC"
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_SNAME
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 &>/dev/null
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/parsix \
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/parsix
879echo "LANG=\"$LANG\""                  > /etc/sysconfig/parsix
880echo "COUNTRY=\"$COUNTRY\""           >> /etc/sysconfig/parsix
881echo "LANGUAGE=\"$LANGUAGE\""         >> /etc/sysconfig/parsix
882echo "CHARSET=\"$CHARSET\""           >> /etc/sysconfig/parsix
883echo "KEYTABLE=\"$KEYTABLE\""         >> /etc/sysconfig/parsix
884echo "XKEYBOARD=\"$XKEYBOARD\""       >> /etc/sysconfig/parsix
885echo "KDEKEYBOARD=\"$KDEKEYBOARD\""   >> /etc/sysconfig/parsix
886echo "KDEKEYBOARDS=\"$KDEKEYBOARDS\"" >> /etc/sysconfig/parsix
887echo "DESKTOP=\"$DESKTOP\""           >> /etc/sysconfig/parsix
888echo "TZ=\"$TZ\""                     >> /etc/sysconfig/parsix
889
890# Write DPI setting if specified
891[ "$CUSTOM_DPI" ] && echo "CUSTOM_DPI=\"$CUSTOM_DPI\""  >> /etc/sysconfig/parsix
892
893# disable 915resolution hack
894checkbootparam "no915res" && echo "NO915RES=\"yes\"" >> /etc/sysconfig/parsix
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# Print CPU info
918echo -n "${GREEN}"
919awk -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
920echo -n "${NORMAL}"
921
922# udev support
923
924if checkbootparam "noudev"; then
925        echo "${BLUE}Skipping udev as requested on boot commandline.${NORMAL}"
926else
927        echo " ${GREEN}Enable ${YELLOW}udev${GREEN}.${NORMAL}"
928        mkdir -p /media
929        if ! pidof udevd >&-; then
930        RUNLEVEL=S /etc/init.d/udev start &>/dev/null
931                # load capability LSM (needed for hal)
932                modprobe capability &>/dev/null                 
933        fi                                                                                                           
934fi
935
936# Mount /dev/pts
937stringinfile "/dev/pts" /proc/mounts || mount -t devpts -o mode=0622 /dev/pts /dev/pts 2>/dev/null
938
939# check if usbcore is already loaded.
940USBCORE_TIMEOUT="$(getbootparam usbwait 2>/dev/null)"
941[ -z "$USBCORE_TIMEOUT" ] && USBCORE_TIMEOUT=5
942USBCORE_TIMEOUT=$((USBCORE_TIMEOUT))
943[ $USBCORE_TIMEOUT -lt 0 -o $USBCORE_TIMEOUT -gt 60 ] && USBCORE_TIMEOUT=5
944
945echo -n "${BLUE}Waiting for ${YELLOW}usbcore${BLUE}. ${NORMAL}"
946for x in $(seq ${USBCORE_TIMEOUT}); do
947        stringinfile "usbcore" /proc/modules && break
948        echo -n "${BLUE}$((${USBCORE_TIMEOUT}-${x})) s${NORMAL}"
949        for y in $(seq 10); do
950                stringinfile "usbcore" /proc/modules && break
951                sleep 0.1
952        done
953        for z in $(seq $((${#x}+2))); do echo -ne "\b \b"; done
954done
955stringinfile "usbcore" /proc/modules && echo "${GREEN}Done.${NORMAL}" || echo "${RED}Timeout reached.${NORMAL}"
956
957# Activate usbfs
958stringinfile "/proc/bus/usb" /proc/mounts || mount -o devmode=0666 -t usbfs /proc/bus/usb /proc/bus/usb 2>/dev/null
959
960if [ -d /proc/acpi ]; then
961        # ACPI
962        if checkbootparam "noacpi"; then
963                echo " ${BLUE}Skipping ACPI Bios detection as requested on boot commandline.${NORMAL}"
964        else
965                echo -n " ${GREEN}ACPI Bios found, activating modules:"
966                found=""
967                for a in /lib/modules/$KERNEL/kernel/drivers/acpi/*; do
968                        basename="${a##*/}"
969                        basename="${basename%%.*}"
970                        case "$basename" in *_acpi)
971                                egrep -qi "${basename%%_acpi}" /proc/acpi/dsdt 2>/dev/null &>/dev/null || continue ;;
972                        esac
973                        modprobe $basename &>/dev/null && echo -n " ${YELLOW}$basename${GREEN}" && found="yes"
974                done
975                test -z "$found" && echo -n "${BLUE}(none)"
976                echo "${NORMAL}"
977                fuser -k /proc/acpi/event &>/dev/null &>/dev/null
978                /etc/init.d/acpid start &>/dev/null &>/dev/null
979        fi
980else
981        # APM
982        if checkbootparam "noapm"; then
983                echo " ${BLUE}Skipping APM Bios detection as requested on boot commandline.${NORMAL}"
984        else
985                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}"
986        fi
987fi
988
989# laptop?
990unset IS_LAPTOP
991if laptop-detect 2>/dev/null; then
992        IS_LAPTOP=true
993fi
994
995if [ -n "$IS_LAPTOP" ]; then
996        # acpi-support
997        if pidof acpid >/dev/null && /etc/init.d/acpi-support start >/dev/null 2>&1; then
998                printf " ${GREEN}Starting ${YELLOW}acpi-support${GREEN} subsystem.${NORMAL}\n"
999        fi
1000fi
1001
1002# First: PCMCIA Check/Setup
1003# This needs to be done before other modules are being loaded by hwsetup
1004
1005if checkbootparam "nopcmcia"; then
1006        echo " ${BLUE}Skipping PCMCIA detection as requested on boot commandline.${NORMAL}"
1007else
1008        modprobe pcmcia_core &>/dev/null
1009        # Try Cardbus or normal PCMCIA socket drivers
1010        modprobe yenta_socket &>/dev/null || modprobe i82365 &>/dev/null || modprobe tcic &>/dev/null
1011        if [ "$?" = "0" ]; then
1012                modprobe ds &>/dev/null
1013                if cardmgr &>/dev/null; then
1014                        echo " ${GREEN}PCMCIA found, cardmgr started.${NORMAL}"
1015                        sleep 4
1016                fi
1017        fi
1018fi
1019
1020# Second: Search & configure supported hardware
1021# Check for options relevant to hwsetup
1022NOSERIAL=""
1023checkbootparam noserial &>/dev/null && NOSERIAL="yes"
1024[ -n "$NOSERIAL" ] && HWSETUP_NOSERIAL="-m"
1025# load serial module
1026modprobe 8250 &>/dev/null
1027
1028# load psmouse module
1029modprobe psmouse &>/dev/null
1030echo -n "${WHITE}"
1031if hwsetup $HWSETUP_NOSERIAL >/dev/null; then
1032        echo -n "${NORMAL}"
1033else
1034        echo " ${RED}Please check.${NORMAL}"
1035fi
1036
1037# activate PC Speaker
1038modprobe pcspkr &>/dev/null
1039
1040# Load fuse module
1041modprobe fuse &>/dev/null
1042
1043# activate input driver for char event devices
1044modprobe evdev &>/dev/null
1045
1046# dwl520e1 detection
1047if lspci -nv|grep 1260:3873 -A1|grep -q 1186:3700; then
1048        /usr/sbin/dwl520e1_fw_load >/dev/null 2>&1
1049        printf "install hostap_pci /sbin/modprobe --ignore-install hostap_pci && /usr/sbin/dwl520e1_fw_load >/dev/null 2>&1\n" > \
1050                /etc/modprobe.d/dwl520e1
1051fi
1052
1053# soft modem detection
1054if ! checkbootparam "nomodem"; then
1055        if lspci | grep Intel | grep -q "AC'97 Modem Controller"; then
1056                /etc/init.d/sl-modem-daemon start >/dev/null
1057        fi
1058fi
1059
1060# Handle special options for ALSA sound drivers
1061rm -f /etc/modprobe.d/alsa-special
1062SYS=$(cut -f2 -d: /sys/devices/pci*/{,*/}*/modalias 2>/dev/null)
1063ALSA_SPECIAL=""
1064for sysid in $SYS; do
1065        # ALSA_SPECIAL is [kernel module with _ not -] [needed options]
1066        case "$sysid" in
1067                v000010DEd0000026Csv00001043sd000081CBbc*)
1068                        # ASUS M2NPV-VM
1069                        ALSA_SPECIAL="snd_hda_intel position_fix=1 model=3stack"
1070                        break
1071                        ;;
1072                v00008086d000027D8sv00001854sd0000005Fbc*)
1073                        # LG Electronics P1-J302E1
1074                        ALSA_SPECIAL="snd_hda_intel model=lg"
1075                        break
1076                        ;;
1077                v00008086d0000284Bsv00008086sd0000284Bbc*)
1078                        # MSI MS-7235
1079                        ALSA_SPECIAL="snd_hda_intel position_fix=1"
1080                        break
1081                        ;;
1082        esac
1083done
1084if [ -n "$ALSA_SPECIAL" ]; then
1085        printf "options $ALSA_SPECIAL\n" > /etc/modprobe.d/alsa-special
1086        if [ -d "/sys/module/${ALSA_SPECIAL%% *}" ]; then
1087                rmmod "${ALSA_SPECIAL%% *}"
1088                modprobe "$ALSA_SPECIAL"
1089        fi
1090fi
1091
1092# Read in what hwsetup has found
1093[ -f /etc/sysconfig/parsix ] && source /etc/sysconfig/parsix
1094
1095# Workaround for new mouse detection
1096if [ -f /etc/sysconfig/mouse ]; then
1097        source /etc/sysconfig/mouse
1098        if [ "$MOUSETYPE" == "ps2" ]; then
1099                ln -sf /dev/psaux /dev/mouse
1100                perl -pi -e "s|/dev/input/mice|/dev/psaux|" /etc/sysconfig/mouse /etc/sysconfig/parsix
1101                source /etc/sysconfig/mouse
1102                source /etc/sysconfig/parsix
1103        fi
1104fi
1105       
1106# Mouse
1107if [ -n "$MOUSE_DEVICE" ]; then
1108        echo " ${GREEN}Mouse is ${YELLOW}${MOUSE_FULLNAME}${GREEN} at ${MAGENTA}${MOUSE_DEVICE}${NORMAL}"
1109fi
1110
1111# Soundcard
1112if [ -n "$SOUND_FULLNAME" -o -n "$SOUND_DRIVER" ]; then
1113        SOUNDCARD="$SOUND_DRIVER"
1114        printf " ${GREEN}Soundcard is"
1115        [ -n "$SOUND_FULLNAME" ] && printf " ${YELLOW}$SOUND_FULLNAME${GREEN}"
1116        [ -n "$SOUNDCARD" ] && printf ", ALSA module is ${MAGENTA}$SOUNDCARD${GREEN}"
1117        printf "${NORMAL}\n"
1118fi
1119
1120# Get max. sound volume
1121VOL="$(getbootparam vol 2>/dev/null)"
1122if [ -z "$VOL" ] || [ "$VOL" -lt 0 ] || [ "$VOL" -gt 100 ]; then
1123        VOL=50
1124fi
1125
1126# Fast ALSA detection
1127case "$SOUND_DRIVER" in
1128        snd*)
1129                printf "alias snd-card-0 $SOUND_DRIVER\n"  > /etc/modprobe.d/sound
1130                printf "options $SOUND_DRIVER index=0\n"  >> /etc/modprobe.d/sound
1131                #set_mixers
1132                aumix -m 0 -v $VOL -w $VOL -c $VOL >/dev/null 2>&1
1133                ;;
1134esac
1135
1136# Read default keyboard from config file.
1137# There seems to be no reliable autoprobe possible.
1138[ -f /etc/sysconfig/keyboard ] && source /etc/sysconfig/keyboard
1139# Set default keyboard before interactive setup
1140[ -n "$KEYTABLE" ] && loadkeys -q $KEYTABLE
1141[ -n "$CONSOLEFONT" ] && consolechars -f $CONSOLEFONT
1142
1143if [ -n "$INTERACTIVE" ]; then
1144        # Interactive configuration
1145        echo "${BLUE}Entering interactive configuration second stage.${NORMAL}"
1146
1147        echo " ${GREEN}Your console keyboard defaults to: ${MAGENTA}${KEYTABLE}"
1148        echo -n "${CYAN}Do you want to (re)configure your console keyboard?${NORMAL} [Y/n] "
1149        read a
1150        [ "$a" != "n" ] && /usr/sbin/kbdconfig
1151        # kbdconfig already loads the keyboard if modified.
1152
1153        echo -n "${CYAN}Do you want to (re)configure your soundcard?${NORMAL} [Y/n] "
1154        read a
1155        [ "$a" != "n" ] && sndconfig && ( exec aumix -m 0 &>/dev/null & )
1156
1157        if [ -n "$MOUSE_FULLNAME" -o -n "$MOUSE_DEVICE" ]; then
1158                echo -n " ${GREEN}Your mouse has been autodetected as: ${MAGENTA}"
1159                ls -l /dev/mouse | awk '{print $9 " " $10 " " $11}'
1160                echo -n "${NORMAL}"
1161        fi
1162
1163        echo -n "${CYAN}Do you want to (re)configure your mouse?${NORMAL} [Y/n] "
1164        read a
1165        [ -f /etc/sysconfig/mouse ] && source /etc/sysconfig/mouse
1166        [ "$a" != "n" ] && mouseconfig
1167fi
1168
1169# KNOPPIX automatic XFree86 Setup
1170if ! checkbootparam "nomkxf86config"; then
1171        [ -x /usr/sbin/mkxf86config ] && /usr/sbin/mkxf86config
1172fi
1173
1174# Read in changes
1175[ -f /etc/sysconfig/parsix ] && source /etc/sysconfig/parsix
1176
1177if [ -n "$INTERACTIVE" ]; then
1178        echo -n "${CYAN}Do you want to (re)configure your graphics (X11) subsystem?${NORMAL} [Y/n] "
1179        read a
1180        [ "$a" != "n" ] && xf86cfg -textmode -xf86config /etc/X11/xorg.conf >/dev/console 2>&1 </dev/console
1181        echo " ${GREEN}Interactive configuration finished. Everything else should be fine for now.${NORMAL}"
1182fi
1183
1184# Start FC detection on vt10
1185NOFC=""
1186checkbootparam "nofc" && NOFC="yes"
1187[ -e /etc/drdsl/modules.inc ] && NOFC="yes"
1188if [ -z "$NOFC" ]; then
1189        echo " ${GREEN}Starting ${YELLOW}FC${GREEN} detection on ${YELLOW}vt10${GREEN}.${NORMAL}"
1190        if [ -x /usr/sbin/detect-fc ]; then
1191                open -c 10 /usr/sbin/detect-fc
1192        elif [ -x /usr/local/bin/detect-fc.bash ]; then
1193                open -c 10 /usr/local/bin/detect-fc.bash
1194        fi
1195fi
1196
1197RUNLEVEL="$(runlevel)"
1198
1199# Add cdrom devices to /etc/fstab
1200for c in $(ls -d /dev/cdrom* 2>/dev/null); do
1201        m=${c#/dev}
1202        [ "$m" == "/cdrom" ] && m="/cdrom0"
1203        [ -d /media$m ] || mkdir -p /media$m
1204        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
1205done
1206
1207# Add floppy devices to /etc/fstab
1208for f in $(ls -d /sys/block/fd* 2>/dev/null); do
1209        [ -d /media/floppy${f#/sys/block/fd} ] || mkdir -p /media/floppy${f#/sys/block/fd}
1210        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
1211done
1212
1213NOSWAP=""
1214checkbootparam "noswap" && NOSWAP="yes"
1215
1216# Collect partitions from /proc/partitions
1217partitions=""
1218while read major minor blocks partition relax; do
1219        partition="${partition##*/}"
1220        [ -z "$partition" -o ! -e "/dev/$partition" ] && continue
1221        case "$partition" in
1222                hd?) ;;                                               # IDE Harddisk, entire disk
1223                sd?) ;;                                               # SCSI Harddisk, entire disk
1224                [hs]d*) partitions="$partitions /dev/$partition";;    # IDE or SCSI disk partition
1225        esac
1226done <<EOT
1227$(awk 'BEGIN{old="__start"}{if($0==old){exit}else{old=$0;if($4&&$4!="name"){print $0}}}' /proc/partitions)
1228EOT
1229
1230# Disable DMA for all IDE drives now if not enabled (and if not already done by linuxrc).
1231# This is already done by linuxrc now.
1232# However, for a harddisk-installed version, we are doing it again here.
1233if checkbootparam "nodma"; then
1234        #echo " ${BLUE}Skipping DMA accelleration as requested on boot commandline.${NORMAL}"
1235#else
1236        for d in $(cd /proc/ide 2>/dev/null && echo hd[a-z]); do
1237                if test -d /proc/ide/$d; then
1238                        if egrep -q 'using_dma[ \t]+1' /proc/ide/$d/settings 2>/dev/null; then
1239                                MODEL="$(cat /proc/ide/$d/model 2>/dev/null)"
1240                                test -z "$MODEL" && MODEL="[GENERIC IDE DEVICE]"
1241                                echo "${BLUE}Disabling DMA acceleration for: ${MAGENTA}$d       ${YELLOW}[${MODEL}]${NORMAL}"
1242                                echo "using_dma:0" >/proc/ide/$d/settings
1243                        fi
1244                fi
1245        done
1246fi
1247
1248# Start creating /etc/fstab with HD partitions and USB SCSI devices now
1249if checkbootparam "nofstab"; then
1250        echo " ${BLUE}Skipping /etc/fstab creation as requested on boot commandline.${NORMAL}"
1251else
1252        echo -n "${BLUE}Scanning for Harddisk partitions and creating ${YELLOW}/etc/fstab${BLUE}... "
1253        [ -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
1254        if [ -e /var/run/rebuildfstab.pid ]; then
1255                # Another instance of rebuildfstab, probably from hotplug, is still running, so just wait.
1256                sleep 8
1257        fi
1258        echo "${GREEN}Done.${NORMAL}"
1259fi
1260
1261if [ -n "$partitions" ]; then
1262        while read p m f relax; do
1263                case "$p" in *fd0*|*proc*|*pts*|*sys*|*cdrom*|\#*) continue;; esac
1264                options="users,exec"
1265                fnew=""
1266                case "$f" in swap)
1267                        if [ -n "$NOSWAP" ]; then
1268                                echo "${BLUE}Ignoring swap partition ${MAGENTA}$p${BLUE} as requested.${NORMAL}"
1269                        else
1270                                echo "${BLUE}Using swap partition ${MAGENTA}$p${BLUE}.${NORMAL}"
1271                                swapon $p 2>/dev/null
1272                        fi
1273                        continue
1274                        ;;
1275                esac
1276                # Create mountdir if not already present
1277                d="/media/${p##*/}" ; [ -d "$d" ] || mkdir -p "$d"
1278                case "$f" in vfat|msdos)
1279                        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
1280                                if [ -f $d/${FLL_DISTRO_NAME}.swp ]; then
1281                                        mount -o remount,rw $d
1282                                        if swapon $d/${FLL_DISTRO_NAME}.swp 2>/dev/null; then
1283                                                echo "${BLUE}Using ${FLL_DISTRO_NAME} swapfile ${MAGENTA}$d/${FLL_DISTRO_NAME}.swp${BLUE}.${NORMAL}"
1284                                                mount -o remount,ro $d 2>/dev/null
1285                                                fnew="$d/${FLL_DISTRO_NAME}.swp none            swap    sw              0       0"
1286                                                stringinfile "$fnew" "/etc/fstab" || echo "$fnew" >> /etc/fstab
1287                                        else
1288                                                umount $d
1289                                        fi
1290                                else
1291                                        umount $d
1292                                fi
1293                        fi
1294                        ;;
1295                        esac
1296                done <<EOT
1297$(cat /etc/fstab)
1298EOT
1299fi
1300
1301# New: Interactively create swapfiles on DOS partitions
1302# (if necessary and possible)
1303FREEMEM="$(awk 'BEGIN{m=0};/MemFree|Cached|SwapFree/{m+=$2};END{print m}' /proc/meminfo)"
1304
1305if [ "$FREEMEM" -lt 80000 -a -x /usr/bin/kdeinit -a -x /usr/sbin/mkdosswapfile ]; then
1306        case "$LANGUAGE" in
1307                de)
1308                        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."
1309                        ;;
1310                *)
1311                        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."
1312                        ;;
1313        esac
1314                dialog --msgbox "$LOWMEM" 12 65 </dev/console >/dev/console 2>&1
1315                /usr/sbin/mkdosswapfile </dev/console >/dev/console 2>&1
1316fi
1317
1318# Fat-Client-Version: DHCP Broadcast for IP address
1319#if checkbootparam "nodhcp"; then
1320#       echo " ${BLUE}Skipping DHCP broadcast/network detection as requested on boot commandline.${NORMAL}"
1321#else
1322#       NETDEVICES="$(awk -F: '/ath.:|eth.:|tr.:|wlan.:/{print $1}' /proc/net/dev 2>/dev/null)"
1323#       for DEVICE in $NETDEVICES; do
1324#               echo -n " ${GREEN}Network device ${MAGENTA}$DEVICE${GREEN} detected, DHCP broadcasting for IP.${NORMAL}"
1325#               trap 2 3 11
1326#               pump -i $DEVICE &>/dev/null &
1327#               trap "" 2 3 11
1328#               sleep 1
1329#               echo " ${BLUE}(Backgrounding)${NORMAL}"
1330#       done
1331#fi
1332
1333
1334# Load DBUS
1335echo " ${GREEN}Starting ${YELLOW}DBUS${GREEN} Service...${NORMAL}"
1336/etc/init.d/dbus start
1337
1338# Load HAL
1339echo " ${GREEN}Starting ${YELLOW}HAL${GREEN} Service...${NORMAL}"
1340/etc/init.d/hal start
1341
1342# Load NetworkManager
1343echo " ${GREEN}Starting ${YELLOW}NetworkManager${GREEN} Service...${NORMAL}"
1344/etc/init.d/network-manager start
1345
1346findfile(){
1347        FOUND=""
1348        # search all partitions for a file in the root directory
1349        for i in /media/[sh]d[a-z] /media/[sh]d[a-z][1-9] /media/[sh]d[a-z][1-9]?*; do
1350                # See if it's already mounted
1351                [ -f "$i/$1" ] &&  { echo "$i/$1"; return 0; }
1352                if [ -d "$i" ] && mount -r "$i" 2>/dev/null; then
1353                        [ -f "$i/$1" ] && FOUND="$i/$1"
1354                        umount -l "$i" 2>/dev/null
1355                        [ -n "$FOUND" ] && { echo "$FOUND"; return 0; }
1356                fi
1357        done
1358        return 2
1359}
1360
1361# Load aes and cryptoloop
1362modprobe aes 2>/dev/null
1363modprobe cryptoloop 2>/dev/null
1364
1365# Try to mount this filesystem read-only, without or with encryption
1366trymount(){
1367        # Check if already mounted
1368        case "$(cat /proc/mounts)" in *\ $2\ *) return 0;; esac
1369        # Apparently, mount-aes DOES autodetect AES loopback files.
1370        [ -b "$1" ] && { mount -t auto -o ro "$1" "$2" 2>/dev/null; RC="$?"; }
1371        # We need to mount crypto-loop files with initial rw support
1372        [ -f "$1" ] && { mount -t auto -o loop,rw "$1" "$2" 2>/dev/null; RC="$?"; }
1373        # Mount succeeded?
1374        [ "$RC" = "0" ] && return 0
1375        echo ""
1376        echo "${CYAN}Filesystem not autodetected, trying to mount $1 with AES256 encryption${NORMAL}"
1377        a="y"
1378        while [ "$a" != "n" -a "$a" != "N" ]; do
1379                # We need to mount crypto-loop files with initial rw support
1380                mount -t auto -o loop,rw,encryption=AES256 "$1" "$2" && return 0
1381                echo -n "${RED}Mount failed, retry? [Y/n] ${NORMAL}"
1382                read a
1383        done
1384        return 1
1385}
1386
1387# Unionfs
1388getfiledev(){
1389        filedev="$(echo $MYPARAM | grep ^/media/ | tail -n 1 | sed s/\\/media\\/\\\([^\\/]\\+\\\).*/\\/dev\\/\\\1/)"
1390        [ -z "$filedev" ] && filedev="$(echo $MYPARAM | grep ^/dev/ | tail -n 1 | sed s/\\/dev\\/\\\([^\\/]\\+\\\).*/\\/dev\\/\\\1/)"
1391}
1392
1393getfilepath(){
1394        filepath="$(echo $MYPARAM | grep ^/media/ | sed s/\\/media\\/\\\([^\\/]\\+\\\)\\///)"
1395        [ -z "$filepath" ] && filepath="$(echo $MYPARAM | grep ^/dev/ | sed s/\\/dev\\/\\\([^\\/]\\+\\\)\\///)"
1396}
1397
1398# Move up with other cheats code later
1399checkbootparam noconfigall && NOCONFIGCD="Y" && NOCONFIGHOME="Y" && NOCONFIGCHEAT="Y"
1400checkbootparam noconfigcd && NOCONFIGCD="Y"
1401checkbootparam noconfighome && NOCONFIGHOME="Y"
1402checkbootparam noconfigcheat && NOCONFIGCHEAT="Y"
1403
1404if [ -z "$NOCONFIGCD" ]; then
1405        # Check for extra shellscript on CD-Rom (/cdrom/${FLL_IMAGE_DIR}/knoppix.sh)
1406        MYCONFIG="$(ls -1d /cdrom/${FLL_IMAGE_DIR}/[Kk][Nn][Oo][Pp][Pp][Ii][Xx].[Ss][Hh] 2>/dev/null)"
1407        if [ -n "$MYCONFIG" -a -f "$MYCONFIG" -a -z "$NOCONFIGCD" ]; then
1408                echo ""
1409                echo " ${GREEN}${FLL_DISTRO_NAME} Configuration file found on CD, executing ${MAGENTA}$MYCONFIG${GREEN}.${NORMAL}"
1410                echo "6" > /proc/sys/kernel/printk
1411                source "$MYCONFIG" /cdrom/${FLL_IMAGE_DIR} || true
1412                echo "0" > /proc/sys/kernel/printk
1413        fi
1414fi
1415
1416# Check for persistent homedir option and eventually mount /home from there,
1417# or use a loopback file.
1418HOMEDIR="$(getbootparam home)"
1419MYHOMEDEVICE=""
1420MYHOMEMOUNTPOINT=""
1421MYHOMEDIR=""
1422if [ -n "$HOMEDIR" ]; then
1423        case "$HOMEDIR" in
1424                /dev/*)
1425                        MYHOMEDEVICE="${HOMEDIR##/dev/}"
1426                        MYHOMEDEVICE="/dev/${MYHOMEDEVICE%%/*}"
1427                        MYHOMEMOUNTPOINT=$(grep $MYHOMEDEVICE /proc/mounts | cut -d' ' -f2)
1428                        [ -z "$MYHOMEMOUNTPOINT" ] && MYHOMEMOUNTPOINT="/media/${MYHOMEDEVICE##/dev/}"
1429                        MYHOMEDIR="/media/${HOMEDIR##/dev/}"
1430                        ;;
1431                /media/*)
1432                        MYHOMEDEVICE="${HOMEDIR##/media/}"
1433                        MYHOMEDEVICE="/dev/${MYHOMEDEVICE%%/*}"
1434                        MYHOMEMOUNTPOINT=$(grep $MYHOMEDEVICE /proc/mounts | cut -d' ' -f2)
1435                        [ -z "$MYHOMEMOUNTPOINT" ] && MYHOMEMOUNTPOINT="/media/${MYHOMEDEVICE##/dev/}"
1436                        MYHOMEDIR="$HOMEDIR"
1437                        ;;
1438                [Aa][Uu][Tt][Oo]|[Ss][Cc][Aa][Nn]|[Ff][Ii][Nn][Dd])
1439                        MYHOMEDIR="$(findfile knoppix.img)"
1440                        MYHOMEDEVICE="${MYHOMEDIR##/media/}"
1441                        MYHOMEDEVICE="/dev/${MYHOMEDEVICE%%/*}"
1442                        MYHOMEMOUNTPOINT=$(grep $MYHOMEDEVICE /proc/mounts | cut -d' ' -f2)
1443                        [ -z "$MYHOMEMOUNTPOINT" ] && MYHOMEMOUNTPOINT="/media/${MYHOMEDEVICE##/dev/}"
1444                        ;;
1445                *)
1446                        echo "${CRE}${RED}Invalid ${CYAN}home=${RED} option '$HOMEDIR' specified (must start with /dev/ or /media/ or 'scan').${NORMAL}"
1447                        echo "${CRE}${RED}Option ignored.${NORMAL}"
1448                        ;;
1449        esac
1450fi
1451
1452if [ -n "$MYHOMEDIR" ]; then
1453        if trymount "$MYHOMEDEVICE" "$MYHOMEMOUNTPOINT"; then
1454                [ -f "$MYHOMEMOUNTPOINT/knoppix.img" ] && MYHOMEDIR="$MYHOMEMOUNTPOINT/knoppix.img"
1455                while read device mountpoint fs relax; do
1456                        case "$mountpoint" in
1457                                *$MYHOMEMOUNTPOINT*)
1458                                        case "$fs" in
1459                                                *[Nn][Tt][Ff][Ss]*)
1460                                                        umount "$MYHOMEMOUNTPOINT"; echo " ${RED}ERROR: WON'T MOUNT NTFS FILESYSTEM ON $MYHOMEDEVICE READ/WRITE!"
1461                                                        break
1462                                                        ;;
1463                                                *[Ff][Aa][Tt]*)
1464                                                        # Note: This currently won't work with encrypted partitions
1465                                                        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"
1466                                                        if [ ! -f "$MYHOMEDIR" ]; then
1467                                                                echo " ${RED}WARNING: FAT32 is not a good filesystem option for /home/${FLL_LIVE_USER} (missing socket/symlink support).${NORMAL}"
1468                                                                echo " ${RED}WARNING: Better use an ext2 loopback file on this device, and boot with home=$MYHOMEDEVICE/knoppix.img.${NORMAL}"
1469                                                        fi
1470                                                ;;
1471                                        esac
1472                                        if mount -o remount,rw "$MYHOMEMOUNTPOINT"; then
1473                                                echo -n " ${GREEN}Mounting ${YELLOW}$MYHOMEDIR${GREEN} as ${YELLOW}/home/${FLL_LIVE_USER}${GREEN}... "
1474                                                if [ -f "$MYHOMEDIR" ]; then
1475                                                        # It's a loopback file, mount it over the /home/${FLL_LIVE_USER} directory
1476                                                        trymount "$MYHOMEDIR" /home/${FLL_LIVE_USER}
1477                                                        RC="$?"
1478                                                        [ "$RC" = "0" ] && ERROR="$(mount -o remount,rw /home/${FLL_LIVE_USER} 2>&1)"
1479                                                        RC="$?"
1480                                                else
1481                                                        # Do a --bind mount
1482                                                        ERROR="$(mount --bind "$MYHOMEDIR" /home/${FLL_LIVE_USER} 2>&1)"
1483                                                        RC="$?"
1484                                                fi
1485                                                [ "$RC" = "0" ] && echo "${GREEN}/home/${FLL_LIVE_USER} mounted OK.${NORMAL}" || { echo "${RED}FAILED."; echo "$ERROR${NORMAL}"; }
1486                                        fi
1487                                        break
1488                                        ;;
1489                        esac
1490                done <<EOT
1491$(cat /proc/mounts)
1492EOT
1493        fi
1494fi
1495
1496for unioncheat in unionro unionrw unionfs ; do
1497        DOUNION=""
1498        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)"
1499        checkbootparam "$unioncheat" && DOUNION="Yes" && MYPARAM="$(getbootparam "$unioncheat")"
1500        if [ -n "$DOUNION" ] ;then
1501                [ -z "$UNIONMADE" ] && mount -t unionfs -o dirs=/${FLL_IMAGE_DIR} none /${FLL_IMAGE_DIR} && UNIONMADE="yes" >/dev/null
1502                echo " ${GREEN}Enable ${YELLOW} $unioncheat ${GREEN}support.${NORMAL}"
1503                UNIONMNTOPT=""
1504                [ "$unioncheat" == "unionro" ] && UNIONMNTOPT="-o ro"
1505                [ "$unioncheat" == "unionfs" ] && MYPARAM="/ramdisk/var/tmp/union/" && mkdir -p $MYPARAM
1506                getfiledev
1507                if [ -n "$filedev" ]; then
1508                        if grep $filedev /etc/fstab 2>&1>/dev/null && ! grep $filedev /proc/mounts 2>&1>/dev/null; then
1509                                mount $UNIONMNTOPT $filedev >/dev/null
1510                                getfilepath
1511                                MYPARAM="$(grep -v ^[:space:]*\# /etc/fstab | grep $filedev | head -n 1 | awk '{print $2}')"
1512                                MYPARAM="$MYPARAM/$filepath"
1513                        else
1514                                if ! grep $filedev /proc/mounts; then
1515                                        mkdir -p /tmp/$unioncheat >/dev/null
1516                                        mount $UNIONMNTOPT $filedev /tmp/$unioncheat >/dev/null
1517                                        getfilepath
1518                                        MYPARAM="/ramdisk/var/tmp/$unioncheat/$filepath"
1519                                else
1520                                        getfilepath
1521                                        MYPARAM="$(grep $filedev /proc/mounts | tail -n 1 | awk '{ print $2 }' -)"
1522                                        grep $MYPARAM /proc/mounts | awk '{print $4 }' - | grep ro &>/dev/null && mount -o remount,rw $filedev $MYPARAM >/dev/null
1523                                        MYPARAM="$MYPARAM/$filepath"
1524                                fi
1525                        fi
1526                fi
1527                if [ -f "$MYPARAM" ]; then
1528                        mkdir -p /tmp/$unioncheat-loop >/dev/null
1529                        mount -o loop $UNIONMNTOPT $MYPARAM /tmp/$unioncheat-loop >/dev/null
1530                        MYPARAM="/ramdisk/var/tmp/$unioncheat-loop"
1531                fi
1532                [ -n "$MYPARAM" ] && unionctl /${FLL_IMAGE_DIR} --add $MYPARAM >/dev/null && echo " ${Green}Union ${YELLOW}$MYPARAM ${GREEN}enabled.${Normal}"
1533                [ -z "$UNIONTIDY" ] && unionctl /${FLL_IMAGE_DIR} --mode /${FLL_IMAGE_DIR} ro > /dev/null && UNIONTIDY="yes"
1534                [ -n "$UNIONMNTOPT" ] && unionctl /${FLL_IMAGE_DIR} --mode $MYPARAM ro > /dev/null
1535        fi
1536done
1537
1538if [ -z "$NOCONFIGCHEAT" ]; then
1539        # Check for configuration floppy add-on if not running from HD
1540        if [ -n "$MYCONF" ]; then
1541                FOUND_CONFIG=""
1542                if [ -n "$MYCONFDIR" ]; then
1543                        case "$MYCONFDIR" in
1544                                /dev/*)
1545                                        MYCONFDEVICE="${MYCONFDIR##/dev/}"
1546                                        MYCONFDEVICE="/dev/${MYCONFDEVICE%%/*}"
1547                                        MYCONFMOUNTPOINT="/media/${MYCONFDEVICE##/dev/}"
1548                                        MYCONFDIR="/media/${MYCONFDIR##/dev/}"
1549                                        ;;
1550                                /media/*)
1551                                        MYCONFDEVICE="${MYCONFDIR##/media/}"
1552                                        MYCONFDEVICE="/dev/${MYCONFDEVICE%%/*}"
1553                                        MYCONFMOUNTPOINT="/media/${MYCONFDEVICE##/dev/}"
1554                                        ;;
1555                                [Aa][Uu][Tt][Oo]|[Ss][Cc][Aa][Nn]|[Ff][Ii][Nn][Dd])
1556                                        MYCONFDIR="$(findfile knoppix.sh)"
1557                                        if [ -n "$MYCONFDIR" ]; then
1558                                                MYCONFDEVICE="${MYCONFDIR##/media/}"
1559                                                MYCONFDEVICE="/dev/${MYCONFDEVICE%%/*}"
1560                                                MYCONFMOUNTPOINT="/media/${MYCONFDEVICE##/dev/}"
1561                                                MYCONFDIR="${MYCONFMOUNTPOINT}"
1562                                        else
1563                                                FOUND_CONFIG="none"
1564                                        fi
1565                                        ;;
1566                                *)
1567                                        echo "${CRE}${RED}Invalid configdir '$MYCONFDIR' specified (must start with /dev/ or /media/ or 'scan').${NORMAL}"
1568                                        echo "${CRE}${RED}Option ignored.${NORMAL}"
1569                                        FOUND_CONFIG="invalid"
1570                                        ;;
1571                        esac
1572                else
1573                        MYCONFDEVICE="/dev/fd0"
1574                        MYCONFMOUNTPOINT="/media/floppy0"
1575                        MYCONFDIR="/media/floppy0"
1576                fi
1577
1578                if [ -z "$FOUND_CONFIG" ]; then
1579                        echo -n "${CRE}${BLUE}Checking ${MAGENTA}${MYCONFDIR}${BLUE} for ${FLL_DISTRO_NAME} configuration files...${NORMAL}"
1580                        if trymount "$MYCONFDEVICE" "$MYCONFMOUNTPOINT"; then
1581                                MYCONFIG="$(ls -1d $MYCONFDIR/[Kk][Nn][Oo][Pp][Pp][Ii][Xx].[Ss][Hh] 2>/dev/null)"
1582                                if [ -n "$MYCONFIG" -a -f "$MYCONFIG" ]; then
1583                                        echo ""
1584                                        FOUND_CONFIG="yes"
1585                                        echo " ${GREEN}Found, now executing ${MAGENTA}$MYCONFIG${GREEN}.${NORMAL}"
1586                                        echo "6" > /proc/sys/kernel/printk
1587                                        source "$MYCONFIG" "$MYCONFDIR" || true
1588                                        echo "0" > /proc/sys/kernel/printk
1589                                fi
1590                                umount "$MYCONFMOUNTPOINT" 2>/dev/null
1591                        fi
1592                fi
1593                [ -n "$FOUND_CONFIG" ] || echo " ${BLUE}Not present.${NORMAL}"
1594        fi
1595fi
1596
1597if [ -z "$NOCONFIGHOME" -a -f /home/${FLL_LIVE_USER}/.[Kk][Nn][Oo][Pp][Pp][Ii][Xx].[Ss][Hh] ]; then
1598        MYCONFIG="$(ls -1d /home/${FLL_LIVE_USER}/.[Kk][Nn][Oo][Pp][Pp][Ii][Xx].[Ss][Hh] 2>/dev/null)"
1599        echo " ${GREEN}Found, now executing ${MAGENTA}$MYCONFIG${GREEN}.${NORMAL}"
1600        echo "6" > /proc/sys/kernel/printk
1601        source "$MYCONFIG" "/home/${FLL_LIVE_USER}" || true
1602        echo "0" > /proc/sys/kernel/printk     
1603fi
1604
1605# powernow detection
1606if ! checkbootparam "nopowernow"; then
1607        CPUINFO=/proc/cpuinfo
1608        IOPORTS=/proc/ioports
1609
1610        [ -f $CPUINFO ] || exit 0
1611
1612        MODEL_NAME=$(grep '^model name' "$CPUINFO" | head -1 | sed -e 's/^.*: //;')
1613        VENDOR_ID=$(grep -E '^vendor_id[^:]+:' "$CPUINFO" | head -1 | sed -e 's/^.*: //;')
1614        CPU_FAMILY=$(sed -e '/^cpu family/ {s/.*: //;p;Q};d' $CPUINFO)
1615
1616        POWERNOW=
1617
1618        # Two modules for PIII-M depending the chipset.
1619        if [ -f $IOPORTS ] && grep -q 'Intel .*ICH' $IOPORTS ; then
1620                PIII_POWERNOW=speedstep-ich
1621        else
1622                PIII_POWERNOW=speedstep-smi
1623        fi
1624
1625        case "$VENDOR_ID" in
1626               
1627                GenuineIntel*)
1628                        # If the CPU has the est flag, it supports enhanced speedstep and should
1629                        # use the acpi-cpufreq driver (speedstep-centrino is deprecated)
1630                        if grep -q est $CPUINFO; then
1631                                POWERNOW=acpi-cpufreq;
1632                        elif [ $CPU_FAMILY = 15 ]; then
1633                                # Right. Check if it's a P4 without est.
1634                                # Could be speedstep-ich.
1635                                POWERNOW=speedstep-ich;
1636                        else
1637                                # So it doesn't have Enhanced Speedstep, and it's not a P4. It could be
1638                                # a Speedstep PIII, or it may be unsupported. There's no terribly good
1639                                # programmatic way of telling.
1640                                case "$MODEL_NAME" in
1641                                        Intel\(R\)\ Pentium\(R\)\ III\ Mobile\ CPU*)
1642                                                POWERNOW=$PIII_POWERNOW
1643                                                ;;
1644                                       
1645                                        # JD: says this works with   cpufreq_userspace
1646                                        Mobile\ Intel\(R\)\ Pentium\(R\)\ III\ CPU\ -\ M*)
1647                                                POWERNOW=$PIII_POWERNOW
1648                                                ;;
1649                                       
1650                                        # https://bugzilla.ubuntu.com/show_bug.cgi?id=4262
1651                                        # UNCONFIRMED
1652                                        Pentium\ III\ \(Coppermine\)*)
1653                                                POWERNOW=$PIII_POWERNOW
1654                                                ;;
1655                                esac
1656                        fi
1657                        ;;
1658               
1659                AuthenticAMD*)
1660                        # Hurrah. This is nice and easy.
1661                        case $CPU_FAMILY in
1662                                5)
1663                                        # K6
1664                                        POWERNOW=powernow-k6
1665                                        ;;
1666                                6)
1667                                        # K7
1668                                        POWERNOW=powernow-k7
1669                                        ;;
1670                                15)
1671                                        # K8
1672                                        POWERNOW=powernow-k8
1673                                        ;;
1674                        esac
1675                        ;;
1676               
1677                CentaurHauls*)
1678                        # VIA
1679                        if [ $CPU_FAMILY = 6 ]; then
1680                                POWERNOW=longhaul;
1681                        fi
1682                        ;;
1683               
1684                GenuineTMx86*)
1685                        # Transmeta
1686                        if grep -q longrun $CPUINFO; then
1687                                POWERNOW=longrun
1688                        fi
1689                        ;;
1690
1691        esac
1692        if [ "$POWERNOW" ]; then
1693                echo " ${GREEN}Enable ${YELLOW}Powernow${GREEN}.${NORMAL}"
1694                modprobe $POWERNOW &>/dev/null
1695                if [ -x /etc/init.d/powernowd ]; then
1696                        /etc/init.d/powernowd start &>/dev/null
1697                        grep -q ^powernowd /etc/sysconfig/services &>/dev/null || echo powernowd >>/etc/sysconfig/services
1698                fi
1699                if [ -x /etc/init.d/powersaved ]; then
1700                        /etc/init.d/powersaved start &>/dev/null
1701                        grep -q ^powersaved /etc/sysconfig/services &>/dev/null || echo powersaved >>/etc/sysconfig/services
1702                fi
1703        fi
1704else
1705        echo "${BLUE}Skipping Powernow detection as requested on boot commandline.${NORMAL}"
1706fi
1707
1708# MS MM keyboard add-on
1709# fix
1710setkeycodes e001 126 &>/dev/null
1711setkeycodes e059 127 &>/dev/null
1712# fn keys
1713setkeycodes e03b 59 &>/dev/null
1714setkeycodes e008 60 &>/dev/null
1715setkeycodes e007 61 &>/dev/null
1716setkeycodes e03e 62 &>/dev/null
1717setkeycodes e03f 63 &>/dev/null
1718setkeycodes e040 64 &>/dev/null
1719setkeycodes e041 65 &>/dev/null
1720setkeycodes e042 66 &>/dev/null
1721setkeycodes e043 67 &>/dev/null
1722setkeycodes e023 68 &>/dev/null
1723setkeycodes e057 87 &>/dev/null
1724setkeycodes e058 88 &>/dev/null
1725
1726# enable hotkeys
1727[ -x /etc/init.d/hotkey-setup ] && /etc/init.d/hotkey-setup start
1728
1729echo "6" > /proc/sys/kernel/printk
1730
1731# Re-enable signals
1732trap 2 3 11
1733
1734exit 0
Note: See TracBrowser for help on using the repository browser.