File: netenv-de.html

package info (click to toggle)
netenv 0.94.3-21
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k
  • size: 444 kB
  • ctags: 66
  • sloc: sh: 879; ansic: 136; makefile: 30
file content (1008 lines) | stat: -rw-r--r-- 30,852 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>Netenv 0.94 - Linux Laptop in verschiedenen Netzwerkumgebungen</title>
  </head>

  <body>
      <h2><a name="top">Nutzen Sie einen Linux Laptop in verschiedenen Netzwerkumgebungen ?</a></h2>

    Zu Hause ? Im Bro ? Bei einem Kunden ?
    <p>
      Falls ja, kann das kleine Paket <i>netenv</i> ntzlich fr Sie sein. Beim
      Booten des Laptops knnen Sie die aktuelle Netzwerkumgebung mit Hilfe
      eines einfachen Mens auswhlen. Sind Sie zum ersten Mal in
      einer Umgebung, so knnen Sie einige Grunddaten zur spteren
      Verwendung eingeben.
    <p>
      <I>Netenv</I> erstellt eine Datei mit einigen Variablen, die die
      aktuelle Netzwerkumgebung beschreiben. Diese Datei wird dann beim
      PCMCIA-Start benutzt (so z.B. in Debian, RedHat und SuSe). Der
      Mechanismus kann auch fr Laptops genutzt werden, die eine
      Netzwerkkarte (oft NIC genannt) onboard haben.
    <p>
      So sieht die Auswahlbox von <i>netenv</i> aus:
    <p>

<img src="netenv-chooser-box.png">
    <p>

      Neben der Grundfunktionalitt der Konfiguration der
      NIC kann <i>netenv</i> fr weitere Aufgaben genutzt werden:
    <ul>
      <li>Auswahl einer XF86Config
	<p>

	Ntzlich z.B. dann, wenn man das Laptop mal standalone mit dem
	Touchpad und mal mit einem CRT Monitor und externer Maus
	nutzen mchte.
	<p>
      <li>Konfiguration des DNS
	<p>
	  Mit den <i>netenv</i>-Daten kann eine geeignete /etc/resolv.conf
	  angelegt werden.
	<p>
      <li>Drucker Umgebung
	<p>
	  Mit einer Zuweisung fr z.B. PRINTER kann der Defaultdrucker
          gesetzt werden.
	<p>

      <li>Netscape preferences editieren
	<p>
	  So knnen lstige Timeouts vermieden werden, wenn ohne
	  Verbindung zu einem Netz gearbeitet wird und nur lokale
	  Dateien betrachtet werden sollen.
<p>
      <li>Fetchmail anpassen
	<p>
          Wenn ich eine permanente Verbindung zu meinem Mailserver
          habe, nutze ich <i>netenv</i>, um fetchmail als Dmon
          aufzurufen. Die Mail wird dann zyklisch abgeholt. 
	<p>
      <li>Linking /dev/pilot
	<p>
          Wenn Sie einen Palm nutzen, knnen Sie /dev/pilot auf das
          korrekte serielle Device linken wenn ein Cradle
          angeschlossen ist. Andernfalls zeigt der Link auf den IRDA-Port.

    </ul>
    <p>
      <I>Netenv</I> gibt es als Paket fr Debian und RedHat
      Linux. Mandrake- und SuSe-Benutzer knnen das RedHat-Paket
      benutzen. Selbstverstndlich ist auch ein tar-File verfgbar.
      Fr das Mensystem bentigt <i>netenv</i> dialog(1) bzw. gdialog (in
      den genannten Distributionen immer enthalten).
    <p>
Ein Wort an alle Experten: Ich versuche hier, die Dinge mit Blick auf
Nicht-Experten zu erklren - also bitte Geduld.

      <hr>
<p>
<a name="toc">Inhaltsbersicht</a>
<p>
<a href="#top">Was macht <i>netenv</i> ?</a>
<p>
<a href="#download">Wo bekommt man <i>netenv</i> ?</a>
<p>
<a href="#installation">Hinweise zur Installation</a>
<p>
<a href="#basics">Grundlagen</a>
<p>
<a href="#firsttimeconfig">Erstes Erstellen einer Umgebungsbeschreibung</a>
<p>
<a href="#config">Konfiguration</a>
<p>
<a href="#examples">Beispiele</a>
<p>
<a href="#dns">Bemerkungen zu DNS</a>
<p>
<a href="#suse">Bemerkungen fr SuSe 7.3 Benutzer</a>
<p>
<a href="#alternatives">Alternativen zu <i>netenv</i></a>
<p>
<a href="#final">Schluwort</a>
<p>
      <hr>


<h2><a name="download">Wo bekommt man <i>netenv</i> ?</h2>

<I>Netenv</I> hat eine Webseite bei Sourceforge:

<a href="http://netenv.sourceforge.net">http://netenv.sourceforge.net</a>
    <p>
Aber das wissen Sie wohl schon ...
<p>
Dort ist sowohl das tar-File als auch das RedHat-Paket
verfgbar. Letzteres sollte auch fr Mandrake und Suse benutzbar sein.
<p>
Debian-User
<p>
<I>Netenv</I> gibt es schon recht lange als Debian-Paket. Nheres
siehe unter <a href="http://www.debian.org/distrib/packages">http://www.debian.org/distrib/packages</a>.
<p>
<a href="#toc">Zurck zur Inhaltsbersicht</a>

<h2><a name="installation">Hinweise zur Installation</h2>

Hngt natrlich von der Distribution ab. Bei allen, die rpm-Pakete
benutzen, als root z.B.:

<pre>
rpm -i netenv-0.94-2.i386.rpm
</pre>

In Debian z.B.:

<pre>
dpkg -i netenv-0.92-2.i386.deb
</pre>

Andernfalls:

<pre>
tar xvf netenv-0.94-2.tar
</pre>

Es wird damit ein Shellskript namens <kbd>netenv</kbd>,
ein kleines Hilfsprogramm trpnc, Konfigurationsbeispiele sowie diese Doku
installiert. 

Abhngig von der Distribution ist nun ein wenig Handarbeit ntig -
oder eben auch nicht.

<h3>RedHat</h3>

<em>Ich habe keine Kenntnis ber aktuelle
RedHat-Versionen. Wahrscheinlich sind die folgenden Hinweise vllig
veraltet. Vielleicht finden sich im Abschnitt <a
href="#how-to-use-tar">Zur Verwendung des tar-files</a> ntzliche Hinweise.</em>
    <p>

Das <i>netenv</i>-RPM wurde unter RedHat 6.1 gepackt. Damit kann es in
allen Distributionen, die RPM nutzen, installiert werden. 
<p>
Das Postinstall-Script sorgt dafr, da

    <ul>
      <li><i>netenv</i> in <kbd>/etc/rc.d/rc.sysinit</kbd> aufgerufen wird
      <li>die Einbindung in die Konfiguration der Netzwerkkarte erfolgt.
    </ul>

<kbd>/etc/rc.d/rc.sysinit</kbd> sieht dann wie folgt aus:

<pre>
lulu:/home/bav> tail -2 /etc/rc.d/rc.sysinit
# Added by package netenv on 06.03.2000 19:53:10
/usr/sbin/netenv
</pre>

Ferner wird <kbd>/etc/sysconfig/network-scripts/ifcfg-eth0</kbd>
gendert. Direkt nach der Erstinstallation von Redhat sieht diese
Datei z.B. so aus:

<pre>
lulu:/etc/sysconfig/network-scripts>>> cat ifcfg-eth0 
DEVICE=eth0
BROADCAST=192.168.200.255
IPADDR=192.168.200.201
NETMASK=255.255.255.0
NETWORK=192.168.200.0
ONBOOT=yes
</pre>

Die Installation von <i>netenv</i> fgt zwei Zeilen hinzu:

<pre>
lulu:/etc/sysconfig/network-scripts>>> tail -3 ifcfg-eth0
ONBOOT=yes
# Added by package netenv on 06.03.2000 19:53:10
if [ -r /tmp/netenv ]; then . /tmp/netenv; fi
</pre>


<h3>SuSe</h3>

Mit Suse 8.x haben sich beim Systemanlauf und bei der
Netzwerkkonfiguration eine Vielzahl von nderungen ergeben. Die aktuelle
Prozedur geht von Suse 8.1 aus, sollte jedoch auch mit 8.0
funktionieren. Fr ltere Versionen siehe den nchsten Abschnitt.

<h4><a name="suse-8-1">SuSe 8.1</h4>

Das Postinstall-Script fgt zwei Zeilen zu /etc/init.d/boot.local hinzu:

<pre>lulu:/etc/init.d> tail -3 boot.local
#
# Added by package netenv on 06.12.2002 10:45:10
/usr/sbin/netenv
</pre>

Damit wird dafr gesorgt, da netenv beim Systemanlauf berhaupt
aufgerufen wird. Netenv nimmt als zu konfigurierende NIC eth0 an. Daher wird
an die Datei <pre>/etc/sysconfig/network/ifcfg-eth0</pre> die Zeile

<pre>if [ -r /tmp/netenv ]; then . /tmp/netenv; fi
</pre>

angehngt. Das ganze sieht dann wie folgt aus:

<pre>lulu:/etc/sysconfig/network> cat ifcfg-eth0
FIREWALL="YES"
BOOTPROTO='static'
BROADCAST='nn.nn.nn.nn'
IPADDR='nn.nn.nn.nn'
NETMASK='nn.nn.nn.nn'
NETWORK='nn.nn.nn.nn'
REMOTE_IPADDR=''
STARTMODE='onboot'
UNIQUE='oxTw.yHaVEFCrUXE'
WIRELESS='no'
if [ -r /tmp/netenv ]; then . /tmp/netenv; fi
</pre>

Die Eintrge IPADDR, NETMASK usw. rhren von der Grundinstallation
her und brauchen nicht gelscht werden. Sie werden durch die
Zuweisungen in /tmp/netenv bersteuert. In diesem Beispiel wird
unterstellt, da die verwendete NIC keine PCMCIA-Karte ist. Falls
doch, mu aus

<pre>STARTMODE='onboot'</pre>

<pre>STARTMODE='hotplug'</pre>

werden.

<h4>SuSe 7.3</h4>

Das Postinstall-Script fgt zwei Zeilen zu /etc/rc.d/boot.local hinzu:

<pre>
mweb@guru:/etc/rc.d > tail -3 boot.local 
# before we're going to the first run level.
#
# Added by package netenv on 06.02.2001 20:28:10
/usr/sbin/netenv
</pre>

Fr PCMCIA-Karten wird ein Eintrag in /etc/pcmcia/network.opts
vorgenommen: 

<pre>
mweb@guru:/etc/pcmcia > tail -2 network.opts 
esac
# Added by package netenv on 06.02.2001 20:28:10
if [ -r /tmp/netenv ]; then . /tmp/netenv; fi
</pre>

Falls das Laptop eine eingebaute Netzwerkkarte hat und so auf PCMCIA
verzichtet werden kann, knnen die mit YAST eingetragenen Parameter
wie folgt bersteuert werden (manuell eintragen !):

<pre>
mweb@guru:/etc/rc.d > head -16 network 
#! /bin/sh
# Copyright (c) 1996 SuSE GmbH Nuernberg, Germany.  All rights reserved.
#
# Author: Florian La Roche <florian@suse.de>, 1996
#       Werner Fink <werner@suse.de>, 1996
#       Burchard Steinbild <bs@suse.de>, 1996
#       Rolf Haberrecker <rolf@suse.de>, 1998
#       Werner Fink <werner@suse.de> (based on a patch of Andries Brouwer) 1999
#
# /sbin/init.d/network
#

. /etc/rc.status
. /etc/rc.config
if [ -r /tmp/netenv ] ; then . /tmp/netenv; fi
</pre>

<h3>Debian</h3>

Das Debian-Paket netenv wird aktuell berarbeitet. Soweit mir bekannt,
knnen PCMCIA-NIC's ohne weitere Konfiguration genutzt
werden.
    <p>
Onboard-NIC's allerdings erfordern eine genderte /etc/network/interfaces.
Man kann das mit netenv-Mitteln machen, siehe das Beispielskript
netenv_setup_debian_example. Tut man nichts, wird die NIC immer so wie
bei der Systeminstallation konfiguriert - ganz gleich, was man in
netenv ausgewhlt hat.


<h3>Mandrake</h3>

Mandrake 9 User berichteten, da der splash-screen abgeschaltet werden
mu (disable vga=nnn in /etc/lilo.conf), da andernfalls keine Eingabe
whrend des Systemanlaufs mglich ist. Ferner scheint das verwendete
cdialog nicht stabil zu sein. Erst durch Einsatz eines SuSe-dialog
konnte der Fehler behoben werden.

<h3><a name="how-to-use-tar">Zur Verwendung des tar-Files</h3>

Folgende Schritte sind zu tun:

<pre>
tar zxvf netenv-0.94-2.tar.gz
cd netenv-0.94-2
make
make install # ab hier mu das als user root geschehen !
make config
</pre>

Abhngig von der Distribution mu der letzte Schritt zur Einbindung
von netenv <kbd>make config</kbd> evtl. manuell vorgenommen werden.
    <p>
netenv mu <b>vor</b> dem normalen Netzwerk- oder PCMCIA-Start
aufgerufen werden. Suchen Sie nach <kbd>/etc/init.d/boot.local</kbd>
oder einem quivalent. Fr weitere Details siehe den
<a href="#suse-8-1">SuSE 8.1</a> Abschnitt.
<p>
Nachdem so sichergestellt ist, da netenv beim Systemanlauf aufgerufen
wird, mssen die Konfigurationsdaten von den Netzwerk scripts gelesen
werden. Aktuelle Distributionen nutzen <kbd>ifup</kbd> um eine
vorkonfigurierte Netzwerk-Karte zu starten. Dann siehe den
<a href="#suse-8-1">SuSE 8.1</a> Abschnitt fr weitere Details.
    <p>
Eine hufige Fehlerquelle besteht in der Verwechslung von eth0 und
eth1 wenn es eine onboard NIC und eine PCMCIA NIC. Oft ist eth0
onboard und eth1 PCMCIA NIC. Man kann das mit <kbd> dmesg | grep
eth</kbd> und <kbd>lspci</kbd> berprfen.
    <p>
Netenv prft ob eine eth1 vorhanden ist. Dies ist allerdings
unzulnglich, da der Laptop zum Zeitpunkt der Installation vielleicht
gerade in einer anderen Konfiguration betrieben wurde.
<p>

<a href="#toc">Zurck zur Inhaltsbersicht</a>

<h2><a name="basics">Grundlagen</h2>

Die grundlegende Idee ist, da der Laptopbenutzer whrend des
Bootvorgangs eine Information darber eingibt, wo er sich mit seinem
Laptop gerade befindet. Dies geschieht <b>vor</b> dem Erreichen des run
level 2, d.h. also bevor eine Netzwerkkarte konfiguriert wird.
    <p>
Dazu wird dialog(1) benutzt, ein einfaches und den meisten Benutzern
vertrautes Mensystem. Der Bootvorgang wird solange angehalten, bis der
Benutzer seine Wahl getroffen hat. Fr eine voreingestellte Umgebung
reicht es, einmal CR zu drcken.
    <p>

Wenn man "lilo" als Bootmanager benutzt, kann man alternativ auch
z.B. eingeben:
    <p>
<pre>
linux NETENV=lavie
</pre>

Damit wird eine Shellvariable "NETENV" mit dem Wert "lavie"
definiert. In meinem Fall heit das: Ich bin mit meinem Laptop namens
lulu im Bro. Die Datei mit den Zuweisungen fr IP-Addresse usw. hat
den Namen /etc/netenv/lulu-lavie. Der Linuxkern startet den
init-Prozess mit der Variablen NETENV als Teil seiner Umgebung. Das
gleiche tut dann init mit den sog. rc-Skripten.
<p>
Das netenv-Skript prft, ob NETENV gesetzt ist. Falls ja, wird der
Hochlauf fortgesetzt, ohne da das Auswahlmen erscheint. 
    <p>
Wenn die aktuelle Umgebung bestimmt ist, kopiert netenv die zugehrige
Beschreibungsdatei nach /tmp/netenv.
<p>
Diese Datei hat die Rechte 644, ist also von jedem Benutzer lesbar. 
Sie kann so fr benutzerspezifische Konfiguration genutzt werden.
<p>
<a href="#toc">Zurck zur Inhaltsbersicht</a>

<h2><a name="firsttimeconfig">Erstes Erstellen einer Umgebungsbeschreibung</a></h2>

Nach der Installation sollte der Benutzer root netenv aufrufen. Dazu:

<pre>
netenv
</pre>

Es erscheint eine Eingabemaske, die nur eine Wahlmglichkeit bietet:

<pre>
    new  Set_up_new_environment  
</pre>

Es werden dann nacheinander abgefragt:
<pre>
   Enter the current IP-Address or the keyword dhcp ...
   Enter the netmask of the current subnet ...
   Enter the IP-Address of the current network ...
   Enter the Broadcast-Address of the current network ...
   Enter the Gateway-Address of the current network ...  
   Enter the IP-address of the current nameserver ...  
</pre>

Falls man sich in einem Netzwerk mit DHCP-Server befindet, gibt man
statt der IP-Addresse dhcp ein. Es wird dann eine /tmp/netenv
erstellt, die nur

<pre>
BOOTPROTO='dhcp'
STARTMODE='hotplug'
</pre>

enthlt. Alle anderen Werte werden dann gem der DHCP-Konfiguration
ermittelt. Falls die NIC onboard ist, sollte netenv 
<pre>
STARTMODE='onboot'
</pre>
gesetzt haben.
    <p>
Bei statischer IP-Addresse wird nach Eingabe des Wertes fr die
folgenden Werte ein in vielen Fllen sinnvoller Vorschlag eingeblendet. 
<p>
Es kommt dann die Frage, ob diese Konfiguration gesichert werden soll:
<pre>
    Do you want to save this configuration ?
</pre>

Fr den Namen, den man hier angibt, bitte <b>keine</b> Leerzeichen
verwenden !
<p>
netenv bietet abhngig von der Distribution an, das Netzwerk zu
restarten und so die nderungen zu aktivieren.
    <p>
Andernfalls kann man bei einer PCMCIA-NIC entweder die Karte entnehmen und
wieder einfhren <b>oder</b> als Benutzer root das PCMCIA-Skript
ausfhren: 

<pre>
/etc/init.d/pcmcia restart
</pre>

In beiden Fllen sollte der cardmanager aus dem PCMCIA-Paket aktiv
werden und die Schnittstelle konfiguriert werden.
<p>
Ein ping auf die angegebene Gateway-Addresse wird es zeigen !
<p>
Falls nicht: Leuchtet die Link-LED ? Prfen Sie die Ausgabe von
<pre>ifconfig eth0</pre>
<p>
Das gerade beschriebene Vorgehen ist auch dann zu whlen, wenn bei
laufendem Laptop zwischen zwei Netzwerkumgebungen gewechselt werden
soll. Auch hier ist ein Reboot nicht ntig - wir nutzen ja Linux ... 
<p>
Diejenigen, die statt PCMCIA eine Netzwerkkarte onboard nutzen, mssen
ihr Netzwerk restarten.
<p>
In RedHat 7.0 oder SuSE dazu z.B..
<pre>
/etc/init.d/network restart
</pre>

Netenv fhrt dies bei entsprechender Besttigung aus.
    <p>

<a href="#toc">Zurck zur Inhaltsbersicht</a>

<h2><a name="config">Konfiguration</a></h2>

<I>Netenv</I> wird mit Beschreibungdateien konfiguriert. Diese liegen in
<kbd>/etc/netenv</kbd>. Auf einem Laptop mit dem Namen "lulu" werden
Dateien lulu, lulu-foo, lulu-bar usw. ausgewertet.

Das Namensschema ist damit wie folgt:
<pre>
/etc/netenv/&lt;NODE-NAME&gt;-&lt;VALUE-OF-VARIABLE-NETENV&gt;
</pre>

Die Datei, die den Hostnamen des Laptops hat, erscheint im Auswahlmen
immer ganz oben. Hier reicht also einmal auslsen, um den Bootvorgang
fortzusetzen. In dieser Datei sollte also sinnvollerweise die
Beschreibung der am hufigsten genutzten Netzwerkumgebung liegen.
<p>

Die Beschreibungsdateien enthalten Zuweisungen in Shell Syntax, z.B.

<pre>
netenv_id=At_Home_LCD_WheelMouse_pcmcia
...
IPADDR=123.456.78.9
...
NETSCAPE_PROXY_TYPE=2
</pre>

Leerzeichen fhren hier (wie immer in der Shell) zu Problemen.
Fr eine erfolgreiche Konfiguration einer Netzwerkkarte sind
mindestens Zuweisungen von

<pre>
IPADDR
NETMASK
NETWORK
BROADCAST
</pre>


erforderlich. Abhngig von der jeweiligen Situation kann auch
<pre>
GATEWAY
DNS_1
</pre>

notwendig sein. <b>Man kann hier beliebige Variablendefinitionen einfgen -
Hauptsache, alles bleibt syntaktisch korrekt.</b>

Eine Zuweisung in der Form

<pre>
NETENV_SCRIPT=/etc/netenv/netenv_setup
</pre>

nimmt eine Sonderstellung ein. Wenn die hier angezogene
Datei lesbar ist, wird netenv diese Datei nach
der Auswahl der aktuellen Netzwerkumgebung ausfhren (genauer:
sourcen). 
    <p>
<b>Achtung ! Dies gescheht in einem frhen Status des Bootvorgangs. Es
ist noch kein Netzwerk aktiv ! NETENV_SCRIPT wird mit root-Rechten ausgefhrt !</b> 
    <p>
Mit Hilfe des hier angezogenen Skriptes kann man dann etliche
sinnvolle Sachen machen. Dazu mehr bei den <a href="#examples">Beispielen</a>.
<p>

<h3>Experten Modus</h3>

Wenn man in der netenv-dialog-box CANCEL whlt, kann man in eine shell
verzweigen. Verlt man diese, steht die Auswahlbox erneut zur
Verfgung.

<b>Sicherheitshinweis:</b>

Das Verzeichnis /etc/netenv und darin liegende Dateien drfen nur fr
den Benutzer root schreibbar sein. netenv prft dies.
<p>
<a href="#toc">Zurck zur Inhaltsbersicht</a>

<h2><a name="examples">Beispiele</a></h2>

Dies ist natrlich der bei weitem wichtigste Abschnitt dieser Doku ...
<p>
Diese Beispiele sind aufeinander aufbauend beschrieben. Also bitte
hintereinander lesen !

<h3>StandAlone_Touchpad</h3>

<pre>
lulu:/etc/netenv>>> cat lulu-touch-pad 
netenv_id=StandAlone_Touchpad_no_eth
STARTMODE=manual
export XF86CONFIG_FILE=/etc/X11/XF86Config-4-lcd-touch
NETENV_SCRIPT=/etc/netenv/netenv_setup
# This may be used to edit ~/.netscape/preferences.js
NETSCAPE_PROXY_TYPE=3
</pre>

Dies nutze ich, wenn mein Laptop keine Verbindung zu einem Netz
hat.
<p>
Der Wert der Variablen netenv_id (wie gesagt: Bitte <b>ohne</b>
Leerzeichen) wird als Beschreibung im Auswahlmen benutzt.
<p>
Es wird keine IP-Addresse zugewiesen. Durch das STARTMODE=manual wird
beim Systemanlauf keine NIC konfiguriert. Ich setze
NETENV_SCRIPT=/etc/netenv/netenv_setup. Dieses ist eine
Datei mit Shell-Befehlen. Sie ist dieser Dokumentation <a
href="netenv_setup">hier beigefgt</a>.
    <p>
Das Beispiel ist einfach gehalten und kann so als Ausgangsbasis fr
eigene Anpassungen dienen. Hier relevanter Code ist:


<pre>
lulu:/etc/netenv>>> cat netenv_setup
...
# Simple way to configure the X-Server 
if [ -r $XF86CONFIG_FILE ]; then
    echo $XF86CONFIG_FILE will be used for configuring the X-Server ...
    mv /etc/X11/XF86Config /etc/X11/XF86Config.old
    ln -s $XF86CONFIG_FILE /etc/X11/XF86Config
fi
...
</pre>

Da ich XF86CONFIG_FILE einen Wert zugewiesen habe, wird ein Link angelegt.
Diesmal von der Beschreibungsdatei, die ich fr mein LCD mit Touchpad
erstellt habe.
    <p>
Typischerweise fhre ich mit netenv_setup alle die Aktionen aus, fr
die der User root ntig ist und die das ganze Systeme
betreffen. Einstellungen hingegen, die nur fr meine Arbeitsumgebung
wichtig sind, werden in meiner .xinitrc getroffen. Dazu ein Beispiel:
<p>
NETSCAPE_PROXY_TYPE nutze ich in meiner ganz privaten Konfiguration:

<pre>
lulu:/home/bav> cat .xinitrc
#!/bin/sh
...
if [ -r /tmp/netenv ]; then
. /tmp/netenv
fi
if [ -n "$NETSCAPE_PROXY_TYPE" ]; then
   ~/tools/edit-ns-preferences $NETSCAPE_PROXY_TYPE
fi
...
</pre>

Das angezogene Skript edit-ns-preferences findet sich bei der
<i>netenv</i>-Dokumentation. Ich vermeide so unntige Network-Timeouts, wenn
ich den Browser starte.

<h3>In_the_Office</h3>

<pre>
lulu:/etc/netenv>>> cat lulu-lavie
# Networkenvironment: netask
netenv_id="lavie_pcmcia_dhcp"
export BOOTPROTO=dhcp
export STARTMODE=hotplug
export PRINTER=cc_hp
NETSCAPE_PROXY_TYPE=2
FETCHMAIL_POLL_INTERVALL=900
</pre>

Im Bro bekomme ich meine Netzwerkkonfiguration von einem
DHCP-Server. STARTMODE=hotplug ist gesetzt, weil mein Laptop keine
onboard-NIC hat und daher die PCMCIA-NIC genutzt werden mu.
    <p>
Mit
PRINTER=cc_hp wird der Defaultdrucker auf den Drucker im Bro
gesetzt. NETSCAPE_PROXY_TYPE=2 aktiviert die automatische Proxykonfiguration im Netscape.
<p>
Wenn ich im Bro arbeite, mchte ich, das zyklisch Email
abgeholt wird. Dazu dient FETCHMAIL_POLL_INTERVALL. Folgende Zeilen in
meiner <kbd>~/.xinitrc</kbd> starten fetchmail als Dmon, der dann alle 15 min
gem den Definitionen in meiner <kbd>~/.fetchmailrc</kbd> arbeitet:
<pre>
if [ -n "$FETCHMAIL_POLL_INTERVALL" ]; then 
   fetchmail -d $FETCHMAIL_POLL_INTERVALL
fi
</pre>

<h3>Laptop_at_home</h3>

Zu Hause nutze ich folgende Beschreibungsdatei. Da ich meistens hier
arbeite, ist der Dateiname gleich dem Nodenamen meines Laptops und
damit der Default. Es reicht also, im Netenv-Auswahlmen einmal auszulsen:

<pre>
lulu:/etc/netenv>>> cat lulu
netenv_id=At_Home_Docking_LCD_WheelMouse_onboard_VPN
IPADDR=nnn.nn.nnn.nnn
NETMASK=nnn.nnn.nnn.nnn
NETWORK=nnn.nn.nnn.nnn
BROADCAST=nnn.nn.nnn.nnn
GATEWAY=nnn.nn.nnn.nnn
SEARCH=foo.bar.com
DNS_1=nnn.nn.nn.nn
DNS_2=nnn.nn.nn.nn

FETCHMAIL_POLL_INTERVALL=900

# If the variable NETENV_SCRIPT points to an readable file,
# it will be run when netenv is executed
NETENV_SCRIPT=/etc/netenv/netenv_setup
ICEWM_INCLUDE_FILE=home
# This defines my CRT with 1024x768 and a wheelmouse
XF86CONFIG_FILE=/etc/X11/XF86Config-4-lcd-wheel
# This may be used to edit ~/.netscape/preferences.js
NETSCAPE_PROXY_TYPE=2
# This may be used to edit ~/.opera/opera6.ini
OPERA_PROXY_FILE=proxy-fsc.ini

# NIC is in the docking unit - like it were onboard
STARTMODE='onboot'
</pre>

Aus der netenv_setup ist hier folgender Abschnitt von Bedeutung:
<pre>
lulu:/etc/netenv>>> cat netenv_setup
...
PROFILE=$1
...
if [ "$PROFILE" = "default" ]; then
   print_action linking /dev/pilot
   rm -f /dev/pilot; ln -s /dev/ttyS0 /dev/pilot
   print_status
   print_action calling ptal-init start
   /usr/sbin/ptal-init start 
   print_status
else
   # When there is no docking station, start irattach appropiately and
   # link /dev/pilot to ircomm0.
   print_action running irattach
   /usr/sbin/irattach /dev/ttyS3 -s
   print_status
   print_status linking /dev/pilot
   rm -f /dev/pilot; ln -s /dev/ircomm0 /dev/pilot
   print_status
fi
...
</pre>

netenv_setup wird mit dem Parameter PROFILE aufgerufen, der hier den Wert
"default" hat (sonst immer Name der Beschreibungsdatei abzglich Hostname).  
    <p>
Zu Hause habe ich einen Cradle fr meinen Palm. Daher sorge ich dafr,
da /dev/pilot auf den entsprechenden seriellen Anschlu zeigt. Ferner
mu die Software fr meinen HP Officejet gestartet werden. In allen
anderen Umgebungen kann ich den Palm nur ber IRDA ansprechen. ptal
braucht dann nicht gestartet werden.
    <p>
Zu Hause befindet sich mein Laptop in einer Docking-Unit. Diese
enthlt eine NIC. Um diese zu verwenden, mu

<pre>STARTMODE='onboot'</pre>

gesetzt werden.

<h3>At_Customer_Foobar</h3>

Frhere Versionen der libc boten einem nicht privilegierten Benutzer
die Mglichkeit, durch Setzen der Umgebungsvariablen HOSTALIASES quasi
eine private /etc/hosts anzulegen. Aus Sicherheitsgrnden steht dieser
Weg in aktuellen Distributionen nicht mehr zur Verfgung.
<p>
Will man nun seine /etc/hosts nicht jedesmal manuell editieren, kann folgender
Mechanismus helfen. Fr mich ist er auch deshalb praktisch, wenn ich
in unterschiedlichen Umgebungen Rechner mit gleichen Namen aber
unterschiedlichen IP-Nummern antreffe.
<p>
Ich habe in meine /etc/hosts Marken wie folgt eingetragen:
<pre>
lulu:/home/bav> cat /etc/hosts
...
# netenv hosts begin
# netenv hosts end
...
</pre>

In meiner aktuellen Beschreibungsdatei definiere ich eine Reihe von
Rechnern mit den dazugehrigen IP-Addressen, die ich erreichen mchte:

<pre>
NETENV_HOST_ENTRIES="192.168.10.11 abba:192.168.10.12 bebe:192.168.10.3  alfa-sw:\
192.168.10.4  beta-sw:192.168.10.13 coca:192.168.10.14 cola"
</pre>

Folgendes Codefragment aus meiner /etc/netenv/netenv_setup sorgt nun
dafr, da nach Auswahl der Umgebung automatisch /etc/hosts editiert
wird:

<pre>
if [ -n "$NETENV_HOST_ENTRIES" ]; then
   if egrep '^# netenv hosts begin$' /etc/hosts > /dev/null 2>&1; then
      (
      awk 'NR==1,/^# netenv hosts begin$/' /etc/hosts
      echo $NETENV_HOST_ENTRIES | awk -F'\:' '{ for ( j=1; j<=NF; j++ ) print $j }'
      awk '/^# netenv hosts end$/,/*/' /etc/hosts
      ) > /etc/hosts.netenv
      mv /etc/hosts.netenv /etc/hosts
      chmod 644 /etc/hosts
      echo netenv_setup: /etc/hosts was modified ...
   fi
else
   if egrep '^# netenv hosts begin$' /etc/hosts > /dev/null 2>&1; then
      (
      awk 'NR==1,/^# netenv hosts begin$/' /etc/hosts
      awk '/^# netenv hosts end$/,/*/' /etc/hosts
      ) > /etc/hosts.netenv
      mv /etc/hosts.netenv /etc/hosts
      chmod 644 /etc/hosts
      echo netenv_setup: /etc/hosts was cleaned up ...
   fi
fi
</pre>

Die /etc/hosts stellt sich danach wie folgt dar:

<pre>
...
# netenv hosts begin
192.168.10.11 abba
192.168.10.12 bebe
192.168.10.3 alfa-sw
192.168.10.4 beta-sw
192.168.10.13 coca
192.168.10.14 cola
# netenv hosts end
...
</pre>

Alle diese Rechner sind fr mich vertrauenswrdig, daher nutze ich in
meiner <kbd>~/.xinitrc</kbd> diesen Mechanismus und sorge noch dafr, da
automatisch X-Displays von diesen Rechner akzeptiert werden:

<pre>
XHOST_PLUS_LISTE=`awk '/^# netenv hosts begin$/,/^# netenv hosts end$/' /etc/hosts | awk '!/^#/ {print $2}'`
xhost $XHOST_PLUS_LISTE
</pre>
 
Anschlieend liefert xhost mir dann:
<pre>
lulu:/home/bav> xhost 
access control enabled, only authorized clients can connect
INET:cola
INET:coca
INET:beta-sw
INET:alfa-sw
INET:bebe
INET:abba
</pre>

<p>

<a href="#toc">Zurck zur Inhaltsbersicht</a>

<h2><a name="dns">Bemerkungen zu DNS</h2>

<I>Netenv</I> nimmt <b>keine</b> DNS Konfiguration vor. Leider gibt es gerade
hier etliche Unterschiede zwischen den Distributionen.
<p>
Der Mechanismus, den David Hinds in seinem PCMCIA-Paket implementiert
hatte, schien mir immer hinreichend (Skript network, Teil des
pcmcia-package). Ein Ausschnitt macht deutlich, was dort geschieht:

<pre>
        # Update DNS stuff
        cp /etc/resolv.conf /etc/resolv.new
        echo "# $DEVICE begin" >> /etc/resolv.new
        test "$DOMAIN" && echo "domain $DOMAIN" >> /etc/resolv.new
        if [ "$DNSSRVS $DNS_1 $DNS_2 $DNS_3" != "   " ] ; then
            for DNS in $DNSSRVS $DNS_1 $DNS_2 $DNS_3 ; do
                echo "nameserver $DNS" >> /etc/resolv.new
            done
        fi
        echo "# $DEVICE end" >> /etc/resolv.new
        mv /etc/resolv.new /etc/resolv.conf
</pre>

Die Datei <kbd>/etc/resolv.conf</kbd> wird auf eine temporre
umkopiert. Wenn eine der Variablen <kbd>DOMAIN, DNSSRVS, DNS_1,
DNS_2</kbd> oder <kbd>DNS_3</kbd> einen Wert haben, werden die
entsprechenden Kommandos abgesetzt. Dieser neue Abschnitt beginnt
mit z.B. <kbd># eth0 begin</kbd> und endet mit z.B. <kbd># eth0
end</kbd>. Dies wird beim Beenden des PCMCIA-Services benutzt, um
diesen Abschnitt wieder zu entfernen. Danach wird die
<kbd>/etc/resolv.conf</kbd> wieder im Originalzustand sein.
<p>
Um dies zu nutzen, ist es also hinreichend, z.B. DNS_1 zu setzen.
<p>
Wenn man das mit <i>netenv</i> machen mchte, kann z.B. folgender Code in
/etc/netenv/netenv_setup eingefgt werden:

<pre>
if [ ! -z "$DNS_1" ]; then 
    (
    echo "# resolv.conf autogenerated by netenv "`date`
    if [ ! -z "$DOMAIN" ]; then echo domain $DOMAIN; fi
    if [ ! -z "$SEARCH" ]; then echo search $SEARCH; fi
    echo nameserver $DNS_1
    if [ ! -z "$DNS_2" ]; then echo nameserver $DNS_2; fi
    ) > /etc/resolv.conf
    chmod 644 /etc/resolv.conf
    echo netenv: /etc/resolv.conf was set up ...
fi
</pre>

<p>

<a href="#toc">Zurck zur Inhaltsbersicht</a>

<h2><a name="suse">Bemerkungen fr SuSe 7.3 Benutzer</h2>

Wenn man eine Onboard-Ethernetschnittstelle hat (also gar keine
PCMCIA-NIC nutzen mu), mu der normale Eintrag in /etc/rc.config
bersteuert werden. Dies geschieht durch eine Zuweisung der Form
<pre>
IFCONFIG_0="172.25.64.130 broadcast 172.25.64.255 netmask 255.255.255.0 up"
</pre>
Wenn man hingegen DHCP verwenden mchte, mu der Eintrag 
<pre>
IFCONFIG_0="dhcpclient"
</pre>
lauten. Dies kann mit mit netenv wie folgt tun. Zunchst das
zugehrige Profil:
<pre>
elli:/etc/netenv> cat elli-ht 
# Networkenvironment: DHCP
export USE_DHCP=yes
NETENV_SCRIPT=/etc/netenv/netenv_setup
</pre>

Ferner braucht man ein netenv_setup-Skript mit mindestens folgendem
Inhalt:
<pre>
elli:/etc/netenv> cat netenv_setup
edit_rc_config()
{
   if [ ! -r /etc/rc.config ]; then
      echo No /etc/rc.config, probably not a SuSE-System, giving up ...
      return 1
   fi
   VARIABLE_TO_CHANGE=$1
   shift
   echo ${VARIABLE_TO_CHANGE}'="'$*'"' > /tmp/.netenv.tmp.$$
   LINE=`awk '/^'$VARIABLE_TO_CHANGE'=/ {LINE=NR} END {print LINE}' /etc/rc.config`
   awk -v LINE=$LINE 'NR<LINE' /etc/rc.config > /tmp/.rc.config.netenv 
   cat /tmp/.netenv.tmp.$$ >> /tmp/.rc.config.netenv
   awk -v LINE=$LINE 'NR>LINE' /etc/rc.config >> /tmp/.rc.config.netenv 
   cat /tmp/.rc.config.netenv > /etc/rc.config
   rm -f /tmp/.rc.config.netenv /tmp/.netenv.tmp.$$
   echo netenv_setup: rc.config edited, Variable $VARIABLE_TO_CHANGE set to $*
}


if [ "$USE_DHCP" = yes ]; then
   edit_rc_config IFCONFIG_0 dhcpclient 
else
   edit_rc_config IFCONFIG_0 "$IPADDR broadcast $BROADCAST netmask $NETMASK up"
fi
</pre>

<p>
Fr das statische Routing nutzt SuSe die Datei /etc/route.conf. Eine
Default-Route sieht hier wie folgt aus:
<pre>
default                 172.246.2.1
</pre>
Ausgehend von dem Beispiel, in dem gezeigt wird, wie man mit netenv
die /etc/hosts editiert, kann man hier entsprechend vorgehen. Als
Beispiel: 

<pre>
if grep SuSE /etc/issue 1>/dev/null; then
   if [ ! -z "$GATEWAY" ]; then
    (
    echo "# route.conf autogenerated by netenv "`date`
    echo default $GATEWAY 0.0.0.0 eth0
    ) > /etc/route.conf
    echo netenv_setup: /etc/route.conf was modified ...
   fi
fi
</pre>

<p>

<a href="#toc">Zurck zur Inhaltsbersicht</a>


<h2><a name="alternatives">Alternativen zu <i>netenv</i></h2>

Wie so oft in Linux gibt es Auswahl. Alternativen zu <i>netenv</i> sind im
<a href="http://tuxmobil.org/Mobile-Guide.db/Mobile-Guide.html">Linux on the
Road - A Guide for Laptops and Mobile Devices</a> von Werner Heuser beschrieben.
<p>
Die, die ich nher angeschaut habe, versuchen, die Netzwerkumgebung zu
bestimmen, indem sie entsprechende arp requests versenden. SuSe
liefert mit 8.x das System Configuration Profile Management scpm. Dies
ist sicherlich mchtig, mir fehlt jedoch ein Benutzerinterface beim Booten.
<p>

<a href="#toc">Zurck zur Inhaltsbersicht</a>

<h2><a name="final">Schluwort</h2>

Ich hoffe, <i>netenv</i> wird Ihnen ntzlich sein. Bei Fragen und
Kommentaren senden Sie eine Mail an <a href="mailto:bav@epost.de">bav@epost.de</a>. 
<p>

<a href="#toc">Zurck zur Inhaltsbersicht</a>

      <hr>
      <address><a href="mailto:bav@epost.de">Gerd Bavendiek</a></address>
<!-- Created: Mon Apr 13 21:25:07 CEST 1998 -->
<!-- hhmts start -->
Last modified: Tue Apr  1 20:55:15 CEST 2003
<!-- hhmts end -->
  </body>
</html>