File: netenv-de.html

package info (click to toggle)
netenv 0.94.3-12
  • links: PTS
  • area: main
  • in suites: sarge
  • size: 360 kB
  • ctags: 98
  • sloc: sh: 958; ansic: 136; makefile: 92
file content (1369 lines) | stat: -rw-r--r-- 46,996 bytes parent folder | download
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
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>Netenv 0.94 - Linux Laptop in verschiedenen Netzwerkumgebungen</title>
    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-15">
  </head>

<body>
<p>Zur <a href="#toc" >Inhaltsbersicht</a></p>
<h2><a name="top">Nutzen Sie einen Linux Laptop in verschiedenen Netzwerkumgebungen ?</a></h2>

    <p>Zu Hause ? Im Bro ? Bei einem Kunden ?</p>
    <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>

    <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>

<p> So sieht die Auswahlbox von <i>netenv</i> aus: </p>

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

<p> Neben der Grundfunktionalitt der Konfiguration der
      NIC kann <i>netenv</i> fr weitere Aufgaben genutzt werden: </p>

<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>
<h2><a name="toc">Inhaltsbersicht</a></h2>
<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="#debian">Bemerkungen fr Debian-Benutzer</a><br>
<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>

oder einfach <kbd>apt-get install netenv</kbd>

<p>
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. Auerdem wird ein init-Skript erstellt, das netenv beim
Booten aufruft.

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<a href="#footnote1" >[1]</a> 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>

Bei der Installation des Debian-Pakets versucht dieses, eine
funktionierende Konfiguration einzurichten, die den aktuellen
Netzwerkeinstellungen entspricht. Leider ist bei Debian die
Netzwerkkonfiguration grundstzlich anders gelst als bei den brigen
Distributionen, und es gibt auch noch zwei Mglichkeiten. Daher sind
sowohl bei der Installation als auch beim Einrichten weiterer
Konfigurationen manuelle Eingriffe ntig. Erluterungen dazu gibt es
weiter unten unter <a href="#debian">Bemerkungen fr
Debian-Benutzer</a>.

<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<a href="#footnote1" >[1]</a>.
<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<a href="#footnote1" >[1]</a>
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.

<p>
<strong>Dies ist ein Sicherheitsrisiko! Jeder, der physikalisch Zugang
zum Computer hat, erhlt so eine Shell mit <kbd>root</kbd>-Rechten,
ohne ein Passwort eingeben zu mssen!</strong> 
</p>

<p>Daher steht diese Funktion in Debian nicht zur Verfgung, es sei
denn, Sie setzen in <kbd>netenv.conf</kbd> die Variable
<kbd>ALLOW_EXPERT</kbd> auf <kbd>"YES"</kbd> (siehe <a
href="#debian-features" >unten</a>).</p>


<h3>Sicherheitshinweis:</h3>

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="debian">Bemerkungen fr Debian-Benutzer</a></h2>

<h3>bersicht</h3>

<a href="#debian-config" >Installation und Konfiguration</a>
<ul>
  <li><a href="#debian-interfaces" >Konfiguration in <kbd>/etc/network/interfaces</kbd></a>
</li>
<li><a href="#debian-network-opts" >Konfiguration in <kbd>/etc/pcmcia/network.opts</kbd></a>
</li>
</ul>
<p><a href="#debian-features" >Zustzliche Mglichkeiten mit Debian</a>
</p>
<p><a href="#debian-wwwoffle" >netenv und der Offline-http-Proxy wwwoffle</a>
</p>


<h3><a name="debian-config" ></a>Installation und Konfiguration</h3>

<p>Bei der Installation des Debian-Pakets versucht dieses, eine
funktionierende Konfiguration einzurichten, die den aktuellen
Netzwerkeinstellungen entspricht. Leider ist bei Debian die
Netzwerkkonfiguration grundstzlich anders gelst als bei den brigen
Distributionen, und es gibt auch noch zwei Mglichkeiten dafr. Daher
sind, je nachdem, entweder bei der Installation oder beim Einrichten
weiterer Konfigurationen manuelle Eingriffe ntig. </p>

<p>Wenn es <em>netenv</em> nicht gelingt, die aktuelle Konfiguration
auszulesen, dann wird es beim Booten nicht aufgerufen, und der Rechner
verhlt sich wie vor der Installation. Man muss dann wie im folgenden
beschrieben eine funktionierende Konfiguration erzeugen und
anschlieend mit <pre>update-rc.d netenv start 40 S</pre> den ntigen
Link auf das init-Skript erzeugen. </p>


<p>Die folgenden Abstze beschreiben, welche Benutzereingriffe
erforderlich sind: Stehen die <a href="#debian-interfaces"
>Netzwerkeinstellungen bisher in
<kbd>/etc/network/interfaces</kbd></a>, so ist <i>netenv</i> zwar
sofort funktionsfhig, aber die Einrichtung neuer
Netzwerkkonfigurationen fr die Auswahlliste ist etwas
komplizierter. Diese Methode wird bei Debian mit eingebauten
("on-board") Netzwerkkarten und manchmal mit PCMCIA-Karten
verwendet. Die zweite Methode, mit den <a href="#debian-network-opts"
>Netzwerkeinstellungen in <kbd>/etc/pcmcia/network.opts</kbd></a>,
kann dagegen nur mit PCMCIA-Karten angewandt werden.</p>

<p> Die Installationsroutine ermittelt, welche Methode verwendet wird,
und erstellt eine passende Musterkonfiguration. Allerdings sind in
beiden Fllen noch Nutzereingriffe notwendig! Werden in beiden Dateien
oder in keiner Netzwerkinformationen gefunden, so wird keine
Konfiguration erstellt und <i>netenv</i> beim Booten vorerst nicht
aufgerufen. </p>

<h4><a name="debian-interfaces">Konfiguration in <kbd>/etc/network/interfaces</kbd></a></h4>

<p> Die Syntax von <kbd>interfaces</kbd> ist grundstzlich anders als
netenv es erwartet, es wird also nicht mit Variablenzuweisungen
gearbeitet. Daher gibt es auch keine Mglichkeit, die Informationen
aus dieser Datei einfach zu "berschreiben". Stattdessen wird
<i>netenv</i> angewiesen, nach der Auswahl einer Netzwerkumgebung ein
Skript auszufhren, in dem symbolische Links verndert werden. Das
Ergebnis sieht zum Beispiel so aus: </p>

<pre>
ls -l /etc/network/interfaces*
 /etc/network/interfaces -> /etc/network/interfaces.work
 /etc/network/interfaces.home
 /etc/network/interfaces.work
 /etc/network/interfaces.offline
 /etc/network/interfaces.old -> /etc/network/interfaces.offline
</pre>

<p>Es werden also nicht die Dateien verndert, sondern nur der
symbolische Link <kbd>/etc/network/interfaces</kbd> auf das jeweils
passende Ziel umgeleitet. Auch die Datei <kbd>/etc/resolv.conf</kbd>
muss genauso behandelt werden. Beachten Sie, dass man auch zum
offline-Betrieb ein <kbd>lo</kbd>-Device in <kbd>interfaces</kbd>
braucht. </p>

<p>Die Befehle, mit denen diese Links verndert werden, knnte man
direkt in die Konfigurationsdatei fr die jeweilige Netzwerkumgebung
schreiben. Auf einem Rechner mit Namen <kbd>lulu</kbd> knnten sie
<kbd>/etc/netenv/lulu-home</kbd>, <kbd>/etc/netenv/lulu-office</kbd>
usw. heissen. Es ist allerdings vom Autor von <i>netenv</i> empfohlen,
in diesen Dateien nur Variablenzuweisungen durchzufhren. Wenn
speziell die Variable NETENV_SCRIPT definiert wird, dann wird dieses
Skript automatisch ausgefhrt und setzt die Links.</p>

<p>Eine Beispielkonfiguration auf Rechner <kbd>lulu</kbd> knnte
demnach so aussehen: In <kbd>/etc/netenv/</kbd> befinden sich folgende
Dateien:</p>

<pre>
lulu        lulu-customer  lulu-offline      setup-customer      setup-offline
lulu-work   lulu-home      netenv.conf       setup-work          setup-home
</pre>

(Beachten Sie, dass es immer eine Datei (oder einen symbolischen Link)
mit dem Rechnernamen und ohne den Anhang <kbd>-irgendwo</kbd> geben
muss. Ich verwende diese Datei normalerweise fr meine
default-Konfiguration.)
<p>
In <kbd>lulu-work</kbd> steht zum Beispiel:</p>

<pre>
netenv_id=Arbeit
export NETENV_SCRIPT=/etc/netenv/setup-work

# you can set any variable here. export it!
</pre>

<p>Die Variable <kbd>netenv_id</kbd> wird im Auswahldialog von
<i>netenv</i> verwendet, das Skript <kbd>setup-work</kbd> wird
ausgefhrt (genauer gesagt gesourcet), sobald <kbd>lulu-work</kbd>
eingelesen wurde. Es sieht folgendermaen aus:</p>

<pre>
#!/bin/sh

if [ -r /etc/network/interfaces.work ]; then
  mv /etc/network/interfaces /etc/network/interfaces.old
  ln -s /etc/network/interfaces.work /etc/network/interfaces
fi
if [ -r /etc/resolv.conf.work ]; then
  mv /etc/resolv.conf /etc/resolv.conf.old
  ln -s /etc/resolv.conf.work /etc/resolv.conf
fi
if [ -r /etc/exim/exim.conf.work ]; then
  mv /etc/exim/exim.conf /etc/exim/exim.conf.old
  ln -s /etc/exim/exim.conf.work /etc/exim/exim.conf
fi
</pre>

<p>Wie man sieht, knnen auch andere Dateien bequem so angepasst
werden. Wenn einmal eine Konfiguration erstellt ist - was ja
normalerweise das Debian-Setup bernimmt - sollte es leicht sein,
weitere hinzuzufgen.</p>

<p>Allerdings kann der Menpunkt "new" im Auswahldialog von
<i>netenv</i> nicht zur Erstellung einer neuen Konfiguration verwendet
werden, denn dort werden nur Variablenzuweisungen in die Dateien im
Verzeichnis <kbd>/etc/netenv/</kbd> eingetragen! Stattdessen muss man
dort Dateien erzeugen, die genauso aufgebaut sind wie oben
beschrieben: <i><kbd>$rechnername-$netzname</kbd></i> definiert das
NETENV_SCRIPT, dieses lenkt die symbolischen Links um. Das
Debian-Setup erstellt brigens diese Dateien unter den Namen
<i><kbd>$rechnername</kbd></i> (Konfigurationsdatei)
bzw. <kbd>setup-default</kbd> (NETENV_SCRIPT). </p>

<h5>Alternativen mit <kbd>/etc/network/interfaces</kbd></h5>

<p>Es gibt noch weitere Mglichkeiten zur Konfiguration von <i>netenv</i>, wenn
die Netzwerkeinstellungen in <kbd>/etc/network/interfaces</kbd>
erwartet werden. Besonders sei auf den "mapping"-Mechanismus
hingewiesen, der in der Manpage zu <kbd>interfaces(5)</kbd>
beschrieben ist. Ein anderer Weg ist in der Datei
<kbd>netenv_setup_debian_example</kbd> angedeutet.</p>

<h4><a name="debian-network-opts">Konfiguration in <kbd>/etc/pcmcia/network.opts</kbd></a></h4>

Wenn die Netzwerkeinstellungen in <kbd>/etc/pcmcia/network.opts</kbd>
gespeichert werden, hat man einen groen Vorteil: Dort wird mit
Variablenzuordnungen gearbeitet, zum Beispiel

<pre>IPADDR="123.456.789.12"</pre>

<p>Dies ist genau die Methode, fr die <i>netenv</i> ursprnglich
eingerichtet wurde. Daher kann man in diesem Fall einfach ber den
Menpunkt "new" (<kbd>Set_up_new_environment</kbd>) im Auswahldialog
neue Netzwerkumgebungen einrichten. </p>

<p>Damit diese Variablen aber beim Starten der Netzwerkkarte berhaupt
wirksam werden, mssen sie in <kbd>/etc/pcmcia/network.opts</kbd>
zunchst eingelesen werden. Da diese Datei zum Paket <i>pcmcia-cs</i>
gehrt, darf <i>netenv</i> sie nicht einfach verndern. Wohl aber darf
das der Benutzer (bzw. Administrator). Am einfachsten ist es, einfach
die Zeile</p>

<pre>. /var/tmp/netenv</pre>

<p>ans Ende dieser Datei einzutragen<a href="#footnote1" >[1]</a> (Ja,
mit dem fhrenden Punkt!). Etwas ausgefeilter wre es, folgenden Patch
anzuwenden (er ist in der Datei <kbd>netenv-network.opts.patch</kbd>
enthalten):</p>

<pre>
--- etc/network.opts.orig	Sat Nov  8 12:10:56 2003
+++ etc/network.opts	Sat Nov  8 12:42:27 2003
@@ -21,6 +21,8 @@
     PPPOE="n"
     # Use WHEREAMI (via the whereami package)? [y/n]
     WHEREAMI="n"
+    # Use NETENV (via the netenv package)? [y/n]
+    USE_NETENV="y"
     # Host's IP address, netmask, network address, broadcast address
     IPADDR=""
     NETMASK="255.255.255.0"
@@ -55,5 +57,13 @@
     # Card eject policy options
     NO_CHECK=n
     NO_FUSER=n
+    if [ $USE_NETENV = y ]; then
+      if [ -r /var/tmp/netenv ]; then
+	. /var/tmp/netenv
+      else
+	echo "/var/tmp/netenv unreadable. Perhaps you should set"
+	echo "USE_NETENV=n in /etc/pcmcia/network.opts"
+      fi
+    fi
     ;;
 esac
</pre>

Dies ermglicht zum einen, <i>netenv</i> einfach zu deaktivieren. Zum
anderen wird das erste Zeilenpaar dort eingefgt, wo schon
<i>whereami</i>, ein Programm mit hnlicher Funktionalitt wie
<i>netenv</i>, konfiguriert wird - ein Auenstehender findet so
leichter heraus, dass <i>netenv</i> verwendet wird, zum Beispiel bei
Bugreports. Und drittens gibt es eine zustzliche berprfung, ob die
Datei vorhanden und lesbar ist, in der <i>netenv</i> die Informationen
fr diesen Rechnerstart speichert.

<h3><a name="debian-features" ></a>Zustzliche Mglichkeiten mit
Debian</h3>

Das Debian-Paket bietet derzeit zwei zustzliche
&quot;features&quot;. Um sie zu verwenden, muss man die
Konfigurationsdatei <kbd>/etc/netenv/netenv.conf</kbd> editieren.

<dl>
  <dt><strong>Expertenmodus</strong>
  <dd>Der <a href="#configuration" >Expertenmodus</a> ist ein
    Sicherheitsrisiko, denn man erhlt so eine <kbd>root</kbd>-Shell,
    ohne ein Passwort eingeben zu mssen. Daher steht er in Debian
    zunchst nicht zur Verfgung. Wenn Sie ihn trotzdem verwenden
    wollen, verwenden sie in <kbd>netenv.conf</kbd> die
    Variablenzuweisung
    <pre>ALLOW_EXPERT=YES</pre>
    Sie wurden gewarnt!

  <dt><strong>Automatische Auswahl einer
    Standardkonfiguration</strong>
  <dd>Das dialog-Programm von Debian besitzt eine
    timeout-Funktion. Setzt man die Variable <kbd>NETENV_TIMEOUT</kbd>
    auf eine ganze Zahl grer 0, dann wartet der Dialog beim booten
    so viele Sekunden wie angegeben. Ist bis dahin keine Eingabe
    erfolgt, so wird mit der default-Konfiguration gebootet. Das
    heit, es wird die Datei in <kbd>/etc/netenv/</kbd> verwendet,
    die den Hostnamen des Rechners hat. Wenn <kbd>NETENV_TIMEOUT</kbd>
    auf Null gesetzt wird, dann wartet der Rechner, bis eine Eingabe
    erfolgt. Beachten Sie, dass dies ein remote-Booten unmglich
    macht! 

  <dt><strong>Merken der letzten Auswahl.</strong>
  <dd>Debian's <i>netenv</i> kann sich merken, welche Konfiguration
    zuletzt ausgewhlt wurde. Dies wird eingeschaltet, indem man die Variable
    <kbd>NETENV_REMEMBER_LAST</kbd> auf <kbd>yes</kbd> setzt. Wenn sie
    stattdessen auf <kbd>default</kbd> steht, dann wird beim Erreichen
    des timeouts anstatt der nomalen Default-Konfiguration (s.o.) die
    zuletzt verwendete Auswahl gebootet

  <dt><strong>Automatischer Neustart von Dmonen</strong>
  <dd>Ab Version 0.94 von <i>netenv</i> ist es mglich, das Programm im laufenden
    Betrieb aufzurufen und die Netzwerkkonfiguration zu
    verndern. Einige Hintergrundprozesse (Dmonen) mssen dann aber
    neu gestartet werden oder ihre Konfigurationsdateien (die sich
    mglicherweise auch verndert haben, s.u.) neu einlesen. Alle
    <kbd>init</kbd>-Skripte, die in der Konfigurationsdatei der
    Variablen <kbd>NETENV_RUN_INIT_SCRIPTS</kbd> zugewiesen
    werden, werden nach dem Wechsel der Netzwerkkonfiguration mit dem
    Parameter <kbd>restart</kbd> aufgerufen. Man gibt die Skripte als
    eine in Anfhrungszeichen eingeschlossene, durch Leerzeichen
    separierte Liste an, z.B.
    <pre>NETENV_RUN_INIT_SCRIPTS="chrony myinitscript"</pre>.
    <kbd>/etc/init.d/networking</kbd> wird auf jeden Fall ausgefhrt.

  <dt><strong>Auswahl der Standardkonfiguration per Variable</strong>
  <dd>Zur Standardkonfiguration von <i>netenv</i> gehrt die Datei
     <kbd>/etc/netenv/<i>$hostname</i></kbd> (ohne angehngtes
    "<kbd>-ort</kbd>"). Normalerweise kann man den Auswahldialog
    unterdrcken, indem man die Variable <kbd>NETENV</kbd> auf den
    Namen des <kbd><i>ort</i></kbd>es setzt, entweder als
    Kernel-Argument, oder als Umgebungsvariable im laufenden Betrieb.
    Damit ist es aber nicht mglich, die Defaultkonfiguration
    auszuwhlen, denn das wrde einer leeren
    <kbd>NETENV</kbd>-Variable entsprechen. In Debian kann man
    stattdessen den Hostnamen angeben: Auf einem Computer namens lulu
    wechselt 
    <pre>NETENV=irgendwo netenv</pre>
    zur in der Datei <kbd>/etc/netenv/lulu-irgendwo</kbd> angegebenen
    Konfiguration, whrend
    <pre>NETENV=lulu netenv</pre>
    die Konfiguration in <kbd>/etc/netenv/lulu</kbd> verwendet.

  <dt><strong>berspringen des "restart networking now?"-Dialogs</strong>
  <dd>Bevor, wie oben beschrieben, die Hintergrundprozesse neu
    gestartet werden, fragt <kbd>netenv</kbd> (falls es im laufenden
    Betrieb aufgerufen wird) ob das geschehen soll. Diese Frage wird
    bersprungen, wenn in <kbd>netenv.conf</kbd> die Variable
    <kbd>NETENV_DO_RESTART</kbd> gesetzt wird, und zwar auf
    <kbd>yes</kbd> (um im laufenden Betrieb immer neu zu starten, ohne
    zu fragen) oder <kbd>never</kbd> (um ohne Frage niemals neu zu
    starten). 

</dl>

<h3><a name="debian-wwwoffle">netenv und der Offline-http-Proxy wwwoffle</a></h3>

<p>Wie oben beschrieben kann man <kbd>netenv</kbd> anweisen, bestimmte
 Dmonen ber deren init-Skripte neu zu starten. Bei
 <kbd>wwwoffle</kbd> funktioniert dies leider
 nicht. <kbd>wwwoffle</kbd> merkt sich nmlich vor dem Anhalten des
 Dienstes den Status (online oder offline?) und stellt ihn nach dem
 Neustart wieder her. Dies ist unter bestimmten Bedingungen sinnvoll
 (z.B. wenn man das wwwoffle-Paket updated, whrend man online
 ist). Es fhrt aber dazu, dass man den Aufruf
 <pre>/etc/init.d/wwwoffle restart</pre> nicht verwenden kann, wenn
 man gerade von einer offline- zu einer online-Konfiguration wechselt
 oder umgekehrt.</p>

 <p>Daher gibt es fr <kbd>wwwoffle</kbd> (und fr andere Skripte mit
 hnlichem Verhalten) eine weitere Variable,
 <kbd>NETENV_START_STOP_SCRIPTS</kbd>. In ihr aufgefhrte Skripte
 werden nicht mit <kbd>restart</kbd>, sondern zunchst mit
 <kbd>stop</kbd> und dann mit <kbd>start</kbd> aufgerufen.</p>

 <p>Im brigen hlt der Debian-Maintainer von <kbd>netenv</kbd> dieses
 Verhalten des wwwoffle-Pakets fr einen Bug, siehe <a
href="http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=224937"
>http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=224937</a>.</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 Gerd Bavendiek, <a
href="mailto:bav@epost.de">bav@epost.de</a>.  <p>

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

<h1><a name="footnotes">Funoten</a></h1>

 <a name="footnote1">[1]</a> In Debian wird statt
 <kbd>/tmp/netenv</kbd> die Datei <kbd>/var/tmp/netenv</kbd>
 verwendet. Dies liegt daran, dass im Bootprozess nach dem Aufrufen
 von <cite>netenv</cite> das <kbd>/tmp/</kbd>-Verzeichnis geleert
 wird. <cite>netenv</cite> wrde zwar funktionieren, aber man knnte
 nicht mehr die aktuelle Konfiguration aus dieser Datei ermitteln.
 

 
      <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; modified for Debian by Frank Kster, 2003-11-17
<!-- hhmts end -->
  </body>
</html>