File: TWDT.html

package info (click to toggle)
lg-issue88 1-1
  • links: PTS
  • area: main
  • in suites: sarge
  • size: 2,236 kB
  • ctags: 288
  • sloc: makefile: 34; sh: 34
file content (8172 lines) | stat: -rw-r--r-- 323,761 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
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222
2223
2224
2225
2226
2227
2228
2229
2230
2231
2232
2233
2234
2235
2236
2237
2238
2239
2240
2241
2242
2243
2244
2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
2264
2265
2266
2267
2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
2280
2281
2282
2283
2284
2285
2286
2287
2288
2289
2290
2291
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
2304
2305
2306
2307
2308
2309
2310
2311
2312
2313
2314
2315
2316
2317
2318
2319
2320
2321
2322
2323
2324
2325
2326
2327
2328
2329
2330
2331
2332
2333
2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348
2349
2350
2351
2352
2353
2354
2355
2356
2357
2358
2359
2360
2361
2362
2363
2364
2365
2366
2367
2368
2369
2370
2371
2372
2373
2374
2375
2376
2377
2378
2379
2380
2381
2382
2383
2384
2385
2386
2387
2388
2389
2390
2391
2392
2393
2394
2395
2396
2397
2398
2399
2400
2401
2402
2403
2404
2405
2406
2407
2408
2409
2410
2411
2412
2413
2414
2415
2416
2417
2418
2419
2420
2421
2422
2423
2424
2425
2426
2427
2428
2429
2430
2431
2432
2433
2434
2435
2436
2437
2438
2439
2440
2441
2442
2443
2444
2445
2446
2447
2448
2449
2450
2451
2452
2453
2454
2455
2456
2457
2458
2459
2460
2461
2462
2463
2464
2465
2466
2467
2468
2469
2470
2471
2472
2473
2474
2475
2476
2477
2478
2479
2480
2481
2482
2483
2484
2485
2486
2487
2488
2489
2490
2491
2492
2493
2494
2495
2496
2497
2498
2499
2500
2501
2502
2503
2504
2505
2506
2507
2508
2509
2510
2511
2512
2513
2514
2515
2516
2517
2518
2519
2520
2521
2522
2523
2524
2525
2526
2527
2528
2529
2530
2531
2532
2533
2534
2535
2536
2537
2538
2539
2540
2541
2542
2543
2544
2545
2546
2547
2548
2549
2550
2551
2552
2553
2554
2555
2556
2557
2558
2559
2560
2561
2562
2563
2564
2565
2566
2567
2568
2569
2570
2571
2572
2573
2574
2575
2576
2577
2578
2579
2580
2581
2582
2583
2584
2585
2586
2587
2588
2589
2590
2591
2592
2593
2594
2595
2596
2597
2598
2599
2600
2601
2602
2603
2604
2605
2606
2607
2608
2609
2610
2611
2612
2613
2614
2615
2616
2617
2618
2619
2620
2621
2622
2623
2624
2625
2626
2627
2628
2629
2630
2631
2632
2633
2634
2635
2636
2637
2638
2639
2640
2641
2642
2643
2644
2645
2646
2647
2648
2649
2650
2651
2652
2653
2654
2655
2656
2657
2658
2659
2660
2661
2662
2663
2664
2665
2666
2667
2668
2669
2670
2671
2672
2673
2674
2675
2676
2677
2678
2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
2689
2690
2691
2692
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
2703
2704
2705
2706
2707
2708
2709
2710
2711
2712
2713
2714
2715
2716
2717
2718
2719
2720
2721
2722
2723
2724
2725
2726
2727
2728
2729
2730
2731
2732
2733
2734
2735
2736
2737
2738
2739
2740
2741
2742
2743
2744
2745
2746
2747
2748
2749
2750
2751
2752
2753
2754
2755
2756
2757
2758
2759
2760
2761
2762
2763
2764
2765
2766
2767
2768
2769
2770
2771
2772
2773
2774
2775
2776
2777
2778
2779
2780
2781
2782
2783
2784
2785
2786
2787
2788
2789
2790
2791
2792
2793
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
2804
2805
2806
2807
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
2818
2819
2820
2821
2822
2823
2824
2825
2826
2827
2828
2829
2830
2831
2832
2833
2834
2835
2836
2837
2838
2839
2840
2841
2842
2843
2844
2845
2846
2847
2848
2849
2850
2851
2852
2853
2854
2855
2856
2857
2858
2859
2860
2861
2862
2863
2864
2865
2866
2867
2868
2869
2870
2871
2872
2873
2874
2875
2876
2877
2878
2879
2880
2881
2882
2883
2884
2885
2886
2887
2888
2889
2890
2891
2892
2893
2894
2895
2896
2897
2898
2899
2900
2901
2902
2903
2904
2905
2906
2907
2908
2909
2910
2911
2912
2913
2914
2915
2916
2917
2918
2919
2920
2921
2922
2923
2924
2925
2926
2927
2928
2929
2930
2931
2932
2933
2934
2935
2936
2937
2938
2939
2940
2941
2942
2943
2944
2945
2946
2947
2948
2949
2950
2951
2952
2953
2954
2955
2956
2957
2958
2959
2960
2961
2962
2963
2964
2965
2966
2967
2968
2969
2970
2971
2972
2973
2974
2975
2976
2977
2978
2979
2980
2981
2982
2983
2984
2985
2986
2987
2988
2989
2990
2991
2992
2993
2994
2995
2996
2997
2998
2999
3000
3001
3002
3003
3004
3005
3006
3007
3008
3009
3010
3011
3012
3013
3014
3015
3016
3017
3018
3019
3020
3021
3022
3023
3024
3025
3026
3027
3028
3029
3030
3031
3032
3033
3034
3035
3036
3037
3038
3039
3040
3041
3042
3043
3044
3045
3046
3047
3048
3049
3050
3051
3052
3053
3054
3055
3056
3057
3058
3059
3060
3061
3062
3063
3064
3065
3066
3067
3068
3069
3070
3071
3072
3073
3074
3075
3076
3077
3078
3079
3080
3081
3082
3083
3084
3085
3086
3087
3088
3089
3090
3091
3092
3093
3094
3095
3096
3097
3098
3099
3100
3101
3102
3103
3104
3105
3106
3107
3108
3109
3110
3111
3112
3113
3114
3115
3116
3117
3118
3119
3120
3121
3122
3123
3124
3125
3126
3127
3128
3129
3130
3131
3132
3133
3134
3135
3136
3137
3138
3139
3140
3141
3142
3143
3144
3145
3146
3147
3148
3149
3150
3151
3152
3153
3154
3155
3156
3157
3158
3159
3160
3161
3162
3163
3164
3165
3166
3167
3168
3169
3170
3171
3172
3173
3174
3175
3176
3177
3178
3179
3180
3181
3182
3183
3184
3185
3186
3187
3188
3189
3190
3191
3192
3193
3194
3195
3196
3197
3198
3199
3200
3201
3202
3203
3204
3205
3206
3207
3208
3209
3210
3211
3212
3213
3214
3215
3216
3217
3218
3219
3220
3221
3222
3223
3224
3225
3226
3227
3228
3229
3230
3231
3232
3233
3234
3235
3236
3237
3238
3239
3240
3241
3242
3243
3244
3245
3246
3247
3248
3249
3250
3251
3252
3253
3254
3255
3256
3257
3258
3259
3260
3261
3262
3263
3264
3265
3266
3267
3268
3269
3270
3271
3272
3273
3274
3275
3276
3277
3278
3279
3280
3281
3282
3283
3284
3285
3286
3287
3288
3289
3290
3291
3292
3293
3294
3295
3296
3297
3298
3299
3300
3301
3302
3303
3304
3305
3306
3307
3308
3309
3310
3311
3312
3313
3314
3315
3316
3317
3318
3319
3320
3321
3322
3323
3324
3325
3326
3327
3328
3329
3330
3331
3332
3333
3334
3335
3336
3337
3338
3339
3340
3341
3342
3343
3344
3345
3346
3347
3348
3349
3350
3351
3352
3353
3354
3355
3356
3357
3358
3359
3360
3361
3362
3363
3364
3365
3366
3367
3368
3369
3370
3371
3372
3373
3374
3375
3376
3377
3378
3379
3380
3381
3382
3383
3384
3385
3386
3387
3388
3389
3390
3391
3392
3393
3394
3395
3396
3397
3398
3399
3400
3401
3402
3403
3404
3405
3406
3407
3408
3409
3410
3411
3412
3413
3414
3415
3416
3417
3418
3419
3420
3421
3422
3423
3424
3425
3426
3427
3428
3429
3430
3431
3432
3433
3434
3435
3436
3437
3438
3439
3440
3441
3442
3443
3444
3445
3446
3447
3448
3449
3450
3451
3452
3453
3454
3455
3456
3457
3458
3459
3460
3461
3462
3463
3464
3465
3466
3467
3468
3469
3470
3471
3472
3473
3474
3475
3476
3477
3478
3479
3480
3481
3482
3483
3484
3485
3486
3487
3488
3489
3490
3491
3492
3493
3494
3495
3496
3497
3498
3499
3500
3501
3502
3503
3504
3505
3506
3507
3508
3509
3510
3511
3512
3513
3514
3515
3516
3517
3518
3519
3520
3521
3522
3523
3524
3525
3526
3527
3528
3529
3530
3531
3532
3533
3534
3535
3536
3537
3538
3539
3540
3541
3542
3543
3544
3545
3546
3547
3548
3549
3550
3551
3552
3553
3554
3555
3556
3557
3558
3559
3560
3561
3562
3563
3564
3565
3566
3567
3568
3569
3570
3571
3572
3573
3574
3575
3576
3577
3578
3579
3580
3581
3582
3583
3584
3585
3586
3587
3588
3589
3590
3591
3592
3593
3594
3595
3596
3597
3598
3599
3600
3601
3602
3603
3604
3605
3606
3607
3608
3609
3610
3611
3612
3613
3614
3615
3616
3617
3618
3619
3620
3621
3622
3623
3624
3625
3626
3627
3628
3629
3630
3631
3632
3633
3634
3635
3636
3637
3638
3639
3640
3641
3642
3643
3644
3645
3646
3647
3648
3649
3650
3651
3652
3653
3654
3655
3656
3657
3658
3659
3660
3661
3662
3663
3664
3665
3666
3667
3668
3669
3670
3671
3672
3673
3674
3675
3676
3677
3678
3679
3680
3681
3682
3683
3684
3685
3686
3687
3688
3689
3690
3691
3692
3693
3694
3695
3696
3697
3698
3699
3700
3701
3702
3703
3704
3705
3706
3707
3708
3709
3710
3711
3712
3713
3714
3715
3716
3717
3718
3719
3720
3721
3722
3723
3724
3725
3726
3727
3728
3729
3730
3731
3732
3733
3734
3735
3736
3737
3738
3739
3740
3741
3742
3743
3744
3745
3746
3747
3748
3749
3750
3751
3752
3753
3754
3755
3756
3757
3758
3759
3760
3761
3762
3763
3764
3765
3766
3767
3768
3769
3770
3771
3772
3773
3774
3775
3776
3777
3778
3779
3780
3781
3782
3783
3784
3785
3786
3787
3788
3789
3790
3791
3792
3793
3794
3795
3796
3797
3798
3799
3800
3801
3802
3803
3804
3805
3806
3807
3808
3809
3810
3811
3812
3813
3814
3815
3816
3817
3818
3819
3820
3821
3822
3823
3824
3825
3826
3827
3828
3829
3830
3831
3832
3833
3834
3835
3836
3837
3838
3839
3840
3841
3842
3843
3844
3845
3846
3847
3848
3849
3850
3851
3852
3853
3854
3855
3856
3857
3858
3859
3860
3861
3862
3863
3864
3865
3866
3867
3868
3869
3870
3871
3872
3873
3874
3875
3876
3877
3878
3879
3880
3881
3882
3883
3884
3885
3886
3887
3888
3889
3890
3891
3892
3893
3894
3895
3896
3897
3898
3899
3900
3901
3902
3903
3904
3905
3906
3907
3908
3909
3910
3911
3912
3913
3914
3915
3916
3917
3918
3919
3920
3921
3922
3923
3924
3925
3926
3927
3928
3929
3930
3931
3932
3933
3934
3935
3936
3937
3938
3939
3940
3941
3942
3943
3944
3945
3946
3947
3948
3949
3950
3951
3952
3953
3954
3955
3956
3957
3958
3959
3960
3961
3962
3963
3964
3965
3966
3967
3968
3969
3970
3971
3972
3973
3974
3975
3976
3977
3978
3979
3980
3981
3982
3983
3984
3985
3986
3987
3988
3989
3990
3991
3992
3993
3994
3995
3996
3997
3998
3999
4000
4001
4002
4003
4004
4005
4006
4007
4008
4009
4010
4011
4012
4013
4014
4015
4016
4017
4018
4019
4020
4021
4022
4023
4024
4025
4026
4027
4028
4029
4030
4031
4032
4033
4034
4035
4036
4037
4038
4039
4040
4041
4042
4043
4044
4045
4046
4047
4048
4049
4050
4051
4052
4053
4054
4055
4056
4057
4058
4059
4060
4061
4062
4063
4064
4065
4066
4067
4068
4069
4070
4071
4072
4073
4074
4075
4076
4077
4078
4079
4080
4081
4082
4083
4084
4085
4086
4087
4088
4089
4090
4091
4092
4093
4094
4095
4096
4097
4098
4099
4100
4101
4102
4103
4104
4105
4106
4107
4108
4109
4110
4111
4112
4113
4114
4115
4116
4117
4118
4119
4120
4121
4122
4123
4124
4125
4126
4127
4128
4129
4130
4131
4132
4133
4134
4135
4136
4137
4138
4139
4140
4141
4142
4143
4144
4145
4146
4147
4148
4149
4150
4151
4152
4153
4154
4155
4156
4157
4158
4159
4160
4161
4162
4163
4164
4165
4166
4167
4168
4169
4170
4171
4172
4173
4174
4175
4176
4177
4178
4179
4180
4181
4182
4183
4184
4185
4186
4187
4188
4189
4190
4191
4192
4193
4194
4195
4196
4197
4198
4199
4200
4201
4202
4203
4204
4205
4206
4207
4208
4209
4210
4211
4212
4213
4214
4215
4216
4217
4218
4219
4220
4221
4222
4223
4224
4225
4226
4227
4228
4229
4230
4231
4232
4233
4234
4235
4236
4237
4238
4239
4240
4241
4242
4243
4244
4245
4246
4247
4248
4249
4250
4251
4252
4253
4254
4255
4256
4257
4258
4259
4260
4261
4262
4263
4264
4265
4266
4267
4268
4269
4270
4271
4272
4273
4274
4275
4276
4277
4278
4279
4280
4281
4282
4283
4284
4285
4286
4287
4288
4289
4290
4291
4292
4293
4294
4295
4296
4297
4298
4299
4300
4301
4302
4303
4304
4305
4306
4307
4308
4309
4310
4311
4312
4313
4314
4315
4316
4317
4318
4319
4320
4321
4322
4323
4324
4325
4326
4327
4328
4329
4330
4331
4332
4333
4334
4335
4336
4337
4338
4339
4340
4341
4342
4343
4344
4345
4346
4347
4348
4349
4350
4351
4352
4353
4354
4355
4356
4357
4358
4359
4360
4361
4362
4363
4364
4365
4366
4367
4368
4369
4370
4371
4372
4373
4374
4375
4376
4377
4378
4379
4380
4381
4382
4383
4384
4385
4386
4387
4388
4389
4390
4391
4392
4393
4394
4395
4396
4397
4398
4399
4400
4401
4402
4403
4404
4405
4406
4407
4408
4409
4410
4411
4412
4413
4414
4415
4416
4417
4418
4419
4420
4421
4422
4423
4424
4425
4426
4427
4428
4429
4430
4431
4432
4433
4434
4435
4436
4437
4438
4439
4440
4441
4442
4443
4444
4445
4446
4447
4448
4449
4450
4451
4452
4453
4454
4455
4456
4457
4458
4459
4460
4461
4462
4463
4464
4465
4466
4467
4468
4469
4470
4471
4472
4473
4474
4475
4476
4477
4478
4479
4480
4481
4482
4483
4484
4485
4486
4487
4488
4489
4490
4491
4492
4493
4494
4495
4496
4497
4498
4499
4500
4501
4502
4503
4504
4505
4506
4507
4508
4509
4510
4511
4512
4513
4514
4515
4516
4517
4518
4519
4520
4521
4522
4523
4524
4525
4526
4527
4528
4529
4530
4531
4532
4533
4534
4535
4536
4537
4538
4539
4540
4541
4542
4543
4544
4545
4546
4547
4548
4549
4550
4551
4552
4553
4554
4555
4556
4557
4558
4559
4560
4561
4562
4563
4564
4565
4566
4567
4568
4569
4570
4571
4572
4573
4574
4575
4576
4577
4578
4579
4580
4581
4582
4583
4584
4585
4586
4587
4588
4589
4590
4591
4592
4593
4594
4595
4596
4597
4598
4599
4600
4601
4602
4603
4604
4605
4606
4607
4608
4609
4610
4611
4612
4613
4614
4615
4616
4617
4618
4619
4620
4621
4622
4623
4624
4625
4626
4627
4628
4629
4630
4631
4632
4633
4634
4635
4636
4637
4638
4639
4640
4641
4642
4643
4644
4645
4646
4647
4648
4649
4650
4651
4652
4653
4654
4655
4656
4657
4658
4659
4660
4661
4662
4663
4664
4665
4666
4667
4668
4669
4670
4671
4672
4673
4674
4675
4676
4677
4678
4679
4680
4681
4682
4683
4684
4685
4686
4687
4688
4689
4690
4691
4692
4693
4694
4695
4696
4697
4698
4699
4700
4701
4702
4703
4704
4705
4706
4707
4708
4709
4710
4711
4712
4713
4714
4715
4716
4717
4718
4719
4720
4721
4722
4723
4724
4725
4726
4727
4728
4729
4730
4731
4732
4733
4734
4735
4736
4737
4738
4739
4740
4741
4742
4743
4744
4745
4746
4747
4748
4749
4750
4751
4752
4753
4754
4755
4756
4757
4758
4759
4760
4761
4762
4763
4764
4765
4766
4767
4768
4769
4770
4771
4772
4773
4774
4775
4776
4777
4778
4779
4780
4781
4782
4783
4784
4785
4786
4787
4788
4789
4790
4791
4792
4793
4794
4795
4796
4797
4798
4799
4800
4801
4802
4803
4804
4805
4806
4807
4808
4809
4810
4811
4812
4813
4814
4815
4816
4817
4818
4819
4820
4821
4822
4823
4824
4825
4826
4827
4828
4829
4830
4831
4832
4833
4834
4835
4836
4837
4838
4839
4840
4841
4842
4843
4844
4845
4846
4847
4848
4849
4850
4851
4852
4853
4854
4855
4856
4857
4858
4859
4860
4861
4862
4863
4864
4865
4866
4867
4868
4869
4870
4871
4872
4873
4874
4875
4876
4877
4878
4879
4880
4881
4882
4883
4884
4885
4886
4887
4888
4889
4890
4891
4892
4893
4894
4895
4896
4897
4898
4899
4900
4901
4902
4903
4904
4905
4906
4907
4908
4909
4910
4911
4912
4913
4914
4915
4916
4917
4918
4919
4920
4921
4922
4923
4924
4925
4926
4927
4928
4929
4930
4931
4932
4933
4934
4935
4936
4937
4938
4939
4940
4941
4942
4943
4944
4945
4946
4947
4948
4949
4950
4951
4952
4953
4954
4955
4956
4957
4958
4959
4960
4961
4962
4963
4964
4965
4966
4967
4968
4969
4970
4971
4972
4973
4974
4975
4976
4977
4978
4979
4980
4981
4982
4983
4984
4985
4986
4987
4988
4989
4990
4991
4992
4993
4994
4995
4996
4997
4998
4999
5000
5001
5002
5003
5004
5005
5006
5007
5008
5009
5010
5011
5012
5013
5014
5015
5016
5017
5018
5019
5020
5021
5022
5023
5024
5025
5026
5027
5028
5029
5030
5031
5032
5033
5034
5035
5036
5037
5038
5039
5040
5041
5042
5043
5044
5045
5046
5047
5048
5049
5050
5051
5052
5053
5054
5055
5056
5057
5058
5059
5060
5061
5062
5063
5064
5065
5066
5067
5068
5069
5070
5071
5072
5073
5074
5075
5076
5077
5078
5079
5080
5081
5082
5083
5084
5085
5086
5087
5088
5089
5090
5091
5092
5093
5094
5095
5096
5097
5098
5099
5100
5101
5102
5103
5104
5105
5106
5107
5108
5109
5110
5111
5112
5113
5114
5115
5116
5117
5118
5119
5120
5121
5122
5123
5124
5125
5126
5127
5128
5129
5130
5131
5132
5133
5134
5135
5136
5137
5138
5139
5140
5141
5142
5143
5144
5145
5146
5147
5148
5149
5150
5151
5152
5153
5154
5155
5156
5157
5158
5159
5160
5161
5162
5163
5164
5165
5166
5167
5168
5169
5170
5171
5172
5173
5174
5175
5176
5177
5178
5179
5180
5181
5182
5183
5184
5185
5186
5187
5188
5189
5190
5191
5192
5193
5194
5195
5196
5197
5198
5199
5200
5201
5202
5203
5204
5205
5206
5207
5208
5209
5210
5211
5212
5213
5214
5215
5216
5217
5218
5219
5220
5221
5222
5223
5224
5225
5226
5227
5228
5229
5230
5231
5232
5233
5234
5235
5236
5237
5238
5239
5240
5241
5242
5243
5244
5245
5246
5247
5248
5249
5250
5251
5252
5253
5254
5255
5256
5257
5258
5259
5260
5261
5262
5263
5264
5265
5266
5267
5268
5269
5270
5271
5272
5273
5274
5275
5276
5277
5278
5279
5280
5281
5282
5283
5284
5285
5286
5287
5288
5289
5290
5291
5292
5293
5294
5295
5296
5297
5298
5299
5300
5301
5302
5303
5304
5305
5306
5307
5308
5309
5310
5311
5312
5313
5314
5315
5316
5317
5318
5319
5320
5321
5322
5323
5324
5325
5326
5327
5328
5329
5330
5331
5332
5333
5334
5335
5336
5337
5338
5339
5340
5341
5342
5343
5344
5345
5346
5347
5348
5349
5350
5351
5352
5353
5354
5355
5356
5357
5358
5359
5360
5361
5362
5363
5364
5365
5366
5367
5368
5369
5370
5371
5372
5373
5374
5375
5376
5377
5378
5379
5380
5381
5382
5383
5384
5385
5386
5387
5388
5389
5390
5391
5392
5393
5394
5395
5396
5397
5398
5399
5400
5401
5402
5403
5404
5405
5406
5407
5408
5409
5410
5411
5412
5413
5414
5415
5416
5417
5418
5419
5420
5421
5422
5423
5424
5425
5426
5427
5428
5429
5430
5431
5432
5433
5434
5435
5436
5437
5438
5439
5440
5441
5442
5443
5444
5445
5446
5447
5448
5449
5450
5451
5452
5453
5454
5455
5456
5457
5458
5459
5460
5461
5462
5463
5464
5465
5466
5467
5468
5469
5470
5471
5472
5473
5474
5475
5476
5477
5478
5479
5480
5481
5482
5483
5484
5485
5486
5487
5488
5489
5490
5491
5492
5493
5494
5495
5496
5497
5498
5499
5500
5501
5502
5503
5504
5505
5506
5507
5508
5509
5510
5511
5512
5513
5514
5515
5516
5517
5518
5519
5520
5521
5522
5523
5524
5525
5526
5527
5528
5529
5530
5531
5532
5533
5534
5535
5536
5537
5538
5539
5540
5541
5542
5543
5544
5545
5546
5547
5548
5549
5550
5551
5552
5553
5554
5555
5556
5557
5558
5559
5560
5561
5562
5563
5564
5565
5566
5567
5568
5569
5570
5571
5572
5573
5574
5575
5576
5577
5578
5579
5580
5581
5582
5583
5584
5585
5586
5587
5588
5589
5590
5591
5592
5593
5594
5595
5596
5597
5598
5599
5600
5601
5602
5603
5604
5605
5606
5607
5608
5609
5610
5611
5612
5613
5614
5615
5616
5617
5618
5619
5620
5621
5622
5623
5624
5625
5626
5627
5628
5629
5630
5631
5632
5633
5634
5635
5636
5637
5638
5639
5640
5641
5642
5643
5644
5645
5646
5647
5648
5649
5650
5651
5652
5653
5654
5655
5656
5657
5658
5659
5660
5661
5662
5663
5664
5665
5666
5667
5668
5669
5670
5671
5672
5673
5674
5675
5676
5677
5678
5679
5680
5681
5682
5683
5684
5685
5686
5687
5688
5689
5690
5691
5692
5693
5694
5695
5696
5697
5698
5699
5700
5701
5702
5703
5704
5705
5706
5707
5708
5709
5710
5711
5712
5713
5714
5715
5716
5717
5718
5719
5720
5721
5722
5723
5724
5725
5726
5727
5728
5729
5730
5731
5732
5733
5734
5735
5736
5737
5738
5739
5740
5741
5742
5743
5744
5745
5746
5747
5748
5749
5750
5751
5752
5753
5754
5755
5756
5757
5758
5759
5760
5761
5762
5763
5764
5765
5766
5767
5768
5769
5770
5771
5772
5773
5774
5775
5776
5777
5778
5779
5780
5781
5782
5783
5784
5785
5786
5787
5788
5789
5790
5791
5792
5793
5794
5795
5796
5797
5798
5799
5800
5801
5802
5803
5804
5805
5806
5807
5808
5809
5810
5811
5812
5813
5814
5815
5816
5817
5818
5819
5820
5821
5822
5823
5824
5825
5826
5827
5828
5829
5830
5831
5832
5833
5834
5835
5836
5837
5838
5839
5840
5841
5842
5843
5844
5845
5846
5847
5848
5849
5850
5851
5852
5853
5854
5855
5856
5857
5858
5859
5860
5861
5862
5863
5864
5865
5866
5867
5868
5869
5870
5871
5872
5873
5874
5875
5876
5877
5878
5879
5880
5881
5882
5883
5884
5885
5886
5887
5888
5889
5890
5891
5892
5893
5894
5895
5896
5897
5898
5899
5900
5901
5902
5903
5904
5905
5906
5907
5908
5909
5910
5911
5912
5913
5914
5915
5916
5917
5918
5919
5920
5921
5922
5923
5924
5925
5926
5927
5928
5929
5930
5931
5932
5933
5934
5935
5936
5937
5938
5939
5940
5941
5942
5943
5944
5945
5946
5947
5948
5949
5950
5951
5952
5953
5954
5955
5956
5957
5958
5959
5960
5961
5962
5963
5964
5965
5966
5967
5968
5969
5970
5971
5972
5973
5974
5975
5976
5977
5978
5979
5980
5981
5982
5983
5984
5985
5986
5987
5988
5989
5990
5991
5992
5993
5994
5995
5996
5997
5998
5999
6000
6001
6002
6003
6004
6005
6006
6007
6008
6009
6010
6011
6012
6013
6014
6015
6016
6017
6018
6019
6020
6021
6022
6023
6024
6025
6026
6027
6028
6029
6030
6031
6032
6033
6034
6035
6036
6037
6038
6039
6040
6041
6042
6043
6044
6045
6046
6047
6048
6049
6050
6051
6052
6053
6054
6055
6056
6057
6058
6059
6060
6061
6062
6063
6064
6065
6066
6067
6068
6069
6070
6071
6072
6073
6074
6075
6076
6077
6078
6079
6080
6081
6082
6083
6084
6085
6086
6087
6088
6089
6090
6091
6092
6093
6094
6095
6096
6097
6098
6099
6100
6101
6102
6103
6104
6105
6106
6107
6108
6109
6110
6111
6112
6113
6114
6115
6116
6117
6118
6119
6120
6121
6122
6123
6124
6125
6126
6127
6128
6129
6130
6131
6132
6133
6134
6135
6136
6137
6138
6139
6140
6141
6142
6143
6144
6145
6146
6147
6148
6149
6150
6151
6152
6153
6154
6155
6156
6157
6158
6159
6160
6161
6162
6163
6164
6165
6166
6167
6168
6169
6170
6171
6172
6173
6174
6175
6176
6177
6178
6179
6180
6181
6182
6183
6184
6185
6186
6187
6188
6189
6190
6191
6192
6193
6194
6195
6196
6197
6198
6199
6200
6201
6202
6203
6204
6205
6206
6207
6208
6209
6210
6211
6212
6213
6214
6215
6216
6217
6218
6219
6220
6221
6222
6223
6224
6225
6226
6227
6228
6229
6230
6231
6232
6233
6234
6235
6236
6237
6238
6239
6240
6241
6242
6243
6244
6245
6246
6247
6248
6249
6250
6251
6252
6253
6254
6255
6256
6257
6258
6259
6260
6261
6262
6263
6264
6265
6266
6267
6268
6269
6270
6271
6272
6273
6274
6275
6276
6277
6278
6279
6280
6281
6282
6283
6284
6285
6286
6287
6288
6289
6290
6291
6292
6293
6294
6295
6296
6297
6298
6299
6300
6301
6302
6303
6304
6305
6306
6307
6308
6309
6310
6311
6312
6313
6314
6315
6316
6317
6318
6319
6320
6321
6322
6323
6324
6325
6326
6327
6328
6329
6330
6331
6332
6333
6334
6335
6336
6337
6338
6339
6340
6341
6342
6343
6344
6345
6346
6347
6348
6349
6350
6351
6352
6353
6354
6355
6356
6357
6358
6359
6360
6361
6362
6363
6364
6365
6366
6367
6368
6369
6370
6371
6372
6373
6374
6375
6376
6377
6378
6379
6380
6381
6382
6383
6384
6385
6386
6387
6388
6389
6390
6391
6392
6393
6394
6395
6396
6397
6398
6399
6400
6401
6402
6403
6404
6405
6406
6407
6408
6409
6410
6411
6412
6413
6414
6415
6416
6417
6418
6419
6420
6421
6422
6423
6424
6425
6426
6427
6428
6429
6430
6431
6432
6433
6434
6435
6436
6437
6438
6439
6440
6441
6442
6443
6444
6445
6446
6447
6448
6449
6450
6451
6452
6453
6454
6455
6456
6457
6458
6459
6460
6461
6462
6463
6464
6465
6466
6467
6468
6469
6470
6471
6472
6473
6474
6475
6476
6477
6478
6479
6480
6481
6482
6483
6484
6485
6486
6487
6488
6489
6490
6491
6492
6493
6494
6495
6496
6497
6498
6499
6500
6501
6502
6503
6504
6505
6506
6507
6508
6509
6510
6511
6512
6513
6514
6515
6516
6517
6518
6519
6520
6521
6522
6523
6524
6525
6526
6527
6528
6529
6530
6531
6532
6533
6534
6535
6536
6537
6538
6539
6540
6541
6542
6543
6544
6545
6546
6547
6548
6549
6550
6551
6552
6553
6554
6555
6556
6557
6558
6559
6560
6561
6562
6563
6564
6565
6566
6567
6568
6569
6570
6571
6572
6573
6574
6575
6576
6577
6578
6579
6580
6581
6582
6583
6584
6585
6586
6587
6588
6589
6590
6591
6592
6593
6594
6595
6596
6597
6598
6599
6600
6601
6602
6603
6604
6605
6606
6607
6608
6609
6610
6611
6612
6613
6614
6615
6616
6617
6618
6619
6620
6621
6622
6623
6624
6625
6626
6627
6628
6629
6630
6631
6632
6633
6634
6635
6636
6637
6638
6639
6640
6641
6642
6643
6644
6645
6646
6647
6648
6649
6650
6651
6652
6653
6654
6655
6656
6657
6658
6659
6660
6661
6662
6663
6664
6665
6666
6667
6668
6669
6670
6671
6672
6673
6674
6675
6676
6677
6678
6679
6680
6681
6682
6683
6684
6685
6686
6687
6688
6689
6690
6691
6692
6693
6694
6695
6696
6697
6698
6699
6700
6701
6702
6703
6704
6705
6706
6707
6708
6709
6710
6711
6712
6713
6714
6715
6716
6717
6718
6719
6720
6721
6722
6723
6724
6725
6726
6727
6728
6729
6730
6731
6732
6733
6734
6735
6736
6737
6738
6739
6740
6741
6742
6743
6744
6745
6746
6747
6748
6749
6750
6751
6752
6753
6754
6755
6756
6757
6758
6759
6760
6761
6762
6763
6764
6765
6766
6767
6768
6769
6770
6771
6772
6773
6774
6775
6776
6777
6778
6779
6780
6781
6782
6783
6784
6785
6786
6787
6788
6789
6790
6791
6792
6793
6794
6795
6796
6797
6798
6799
6800
6801
6802
6803
6804
6805
6806
6807
6808
6809
6810
6811
6812
6813
6814
6815
6816
6817
6818
6819
6820
6821
6822
6823
6824
6825
6826
6827
6828
6829
6830
6831
6832
6833
6834
6835
6836
6837
6838
6839
6840
6841
6842
6843
6844
6845
6846
6847
6848
6849
6850
6851
6852
6853
6854
6855
6856
6857
6858
6859
6860
6861
6862
6863
6864
6865
6866
6867
6868
6869
6870
6871
6872
6873
6874
6875
6876
6877
6878
6879
6880
6881
6882
6883
6884
6885
6886
6887
6888
6889
6890
6891
6892
6893
6894
6895
6896
6897
6898
6899
6900
6901
6902
6903
6904
6905
6906
6907
6908
6909
6910
6911
6912
6913
6914
6915
6916
6917
6918
6919
6920
6921
6922
6923
6924
6925
6926
6927
6928
6929
6930
6931
6932
6933
6934
6935
6936
6937
6938
6939
6940
6941
6942
6943
6944
6945
6946
6947
6948
6949
6950
6951
6952
6953
6954
6955
6956
6957
6958
6959
6960
6961
6962
6963
6964
6965
6966
6967
6968
6969
6970
6971
6972
6973
6974
6975
6976
6977
6978
6979
6980
6981
6982
6983
6984
6985
6986
6987
6988
6989
6990
6991
6992
6993
6994
6995
6996
6997
6998
6999
7000
7001
7002
7003
7004
7005
7006
7007
7008
7009
7010
7011
7012
7013
7014
7015
7016
7017
7018
7019
7020
7021
7022
7023
7024
7025
7026
7027
7028
7029
7030
7031
7032
7033
7034
7035
7036
7037
7038
7039
7040
7041
7042
7043
7044
7045
7046
7047
7048
7049
7050
7051
7052
7053
7054
7055
7056
7057
7058
7059
7060
7061
7062
7063
7064
7065
7066
7067
7068
7069
7070
7071
7072
7073
7074
7075
7076
7077
7078
7079
7080
7081
7082
7083
7084
7085
7086
7087
7088
7089
7090
7091
7092
7093
7094
7095
7096
7097
7098
7099
7100
7101
7102
7103
7104
7105
7106
7107
7108
7109
7110
7111
7112
7113
7114
7115
7116
7117
7118
7119
7120
7121
7122
7123
7124
7125
7126
7127
7128
7129
7130
7131
7132
7133
7134
7135
7136
7137
7138
7139
7140
7141
7142
7143
7144
7145
7146
7147
7148
7149
7150
7151
7152
7153
7154
7155
7156
7157
7158
7159
7160
7161
7162
7163
7164
7165
7166
7167
7168
7169
7170
7171
7172
7173
7174
7175
7176
7177
7178
7179
7180
7181
7182
7183
7184
7185
7186
7187
7188
7189
7190
7191
7192
7193
7194
7195
7196
7197
7198
7199
7200
7201
7202
7203
7204
7205
7206
7207
7208
7209
7210
7211
7212
7213
7214
7215
7216
7217
7218
7219
7220
7221
7222
7223
7224
7225
7226
7227
7228
7229
7230
7231
7232
7233
7234
7235
7236
7237
7238
7239
7240
7241
7242
7243
7244
7245
7246
7247
7248
7249
7250
7251
7252
7253
7254
7255
7256
7257
7258
7259
7260
7261
7262
7263
7264
7265
7266
7267
7268
7269
7270
7271
7272
7273
7274
7275
7276
7277
7278
7279
7280
7281
7282
7283
7284
7285
7286
7287
7288
7289
7290
7291
7292
7293
7294
7295
7296
7297
7298
7299
7300
7301
7302
7303
7304
7305
7306
7307
7308
7309
7310
7311
7312
7313
7314
7315
7316
7317
7318
7319
7320
7321
7322
7323
7324
7325
7326
7327
7328
7329
7330
7331
7332
7333
7334
7335
7336
7337
7338
7339
7340
7341
7342
7343
7344
7345
7346
7347
7348
7349
7350
7351
7352
7353
7354
7355
7356
7357
7358
7359
7360
7361
7362
7363
7364
7365
7366
7367
7368
7369
7370
7371
7372
7373
7374
7375
7376
7377
7378
7379
7380
7381
7382
7383
7384
7385
7386
7387
7388
7389
7390
7391
7392
7393
7394
7395
7396
7397
7398
7399
7400
7401
7402
7403
7404
7405
7406
7407
7408
7409
7410
7411
7412
7413
7414
7415
7416
7417
7418
7419
7420
7421
7422
7423
7424
7425
7426
7427
7428
7429
7430
7431
7432
7433
7434
7435
7436
7437
7438
7439
7440
7441
7442
7443
7444
7445
7446
7447
7448
7449
7450
7451
7452
7453
7454
7455
7456
7457
7458
7459
7460
7461
7462
7463
7464
7465
7466
7467
7468
7469
7470
7471
7472
7473
7474
7475
7476
7477
7478
7479
7480
7481
7482
7483
7484
7485
7486
7487
7488
7489
7490
7491
7492
7493
7494
7495
7496
7497
7498
7499
7500
7501
7502
7503
7504
7505
7506
7507
7508
7509
7510
7511
7512
7513
7514
7515
7516
7517
7518
7519
7520
7521
7522
7523
7524
7525
7526
7527
7528
7529
7530
7531
7532
7533
7534
7535
7536
7537
7538
7539
7540
7541
7542
7543
7544
7545
7546
7547
7548
7549
7550
7551
7552
7553
7554
7555
7556
7557
7558
7559
7560
7561
7562
7563
7564
7565
7566
7567
7568
7569
7570
7571
7572
7573
7574
7575
7576
7577
7578
7579
7580
7581
7582
7583
7584
7585
7586
7587
7588
7589
7590
7591
7592
7593
7594
7595
7596
7597
7598
7599
7600
7601
7602
7603
7604
7605
7606
7607
7608
7609
7610
7611
7612
7613
7614
7615
7616
7617
7618
7619
7620
7621
7622
7623
7624
7625
7626
7627
7628
7629
7630
7631
7632
7633
7634
7635
7636
7637
7638
7639
7640
7641
7642
7643
7644
7645
7646
7647
7648
7649
7650
7651
7652
7653
7654
7655
7656
7657
7658
7659
7660
7661
7662
7663
7664
7665
7666
7667
7668
7669
7670
7671
7672
7673
7674
7675
7676
7677
7678
7679
7680
7681
7682
7683
7684
7685
7686
7687
7688
7689
7690
7691
7692
7693
7694
7695
7696
7697
7698
7699
7700
7701
7702
7703
7704
7705
7706
7707
7708
7709
7710
7711
7712
7713
7714
7715
7716
7717
7718
7719
7720
7721
7722
7723
7724
7725
7726
7727
7728
7729
7730
7731
7732
7733
7734
7735
7736
7737
7738
7739
7740
7741
7742
7743
7744
7745
7746
7747
7748
7749
7750
7751
7752
7753
7754
7755
7756
7757
7758
7759
7760
7761
7762
7763
7764
7765
7766
7767
7768
7769
7770
7771
7772
7773
7774
7775
7776
7777
7778
7779
7780
7781
7782
7783
7784
7785
7786
7787
7788
7789
7790
7791
7792
7793
7794
7795
7796
7797
7798
7799
7800
7801
7802
7803
7804
7805
7806
7807
7808
7809
7810
7811
7812
7813
7814
7815
7816
7817
7818
7819
7820
7821
7822
7823
7824
7825
7826
7827
7828
7829
7830
7831
7832
7833
7834
7835
7836
7837
7838
7839
7840
7841
7842
7843
7844
7845
7846
7847
7848
7849
7850
7851
7852
7853
7854
7855
7856
7857
7858
7859
7860
7861
7862
7863
7864
7865
7866
7867
7868
7869
7870
7871
7872
7873
7874
7875
7876
7877
7878
7879
7880
7881
7882
7883
7884
7885
7886
7887
7888
7889
7890
7891
7892
7893
7894
7895
7896
7897
7898
7899
7900
7901
7902
7903
7904
7905
7906
7907
7908
7909
7910
7911
7912
7913
7914
7915
7916
7917
7918
7919
7920
7921
7922
7923
7924
7925
7926
7927
7928
7929
7930
7931
7932
7933
7934
7935
7936
7937
7938
7939
7940
7941
7942
7943
7944
7945
7946
7947
7948
7949
7950
7951
7952
7953
7954
7955
7956
7957
7958
7959
7960
7961
7962
7963
7964
7965
7966
7967
7968
7969
7970
7971
7972
7973
7974
7975
7976
7977
7978
7979
7980
7981
7982
7983
7984
7985
7986
7987
7988
7989
7990
7991
7992
7993
7994
7995
7996
7997
7998
7999
8000
8001
8002
8003
8004
8005
8006
8007
8008
8009
8010
8011
8012
8013
8014
8015
8016
8017
8018
8019
8020
8021
8022
8023
8024
8025
8026
8027
8028
8029
8030
8031
8032
8033
8034
8035
8036
8037
8038
8039
8040
8041
8042
8043
8044
8045
8046
8047
8048
8049
8050
8051
8052
8053
8054
8055
8056
8057
8058
8059
8060
8061
8062
8063
8064
8065
8066
8067
8068
8069
8070
8071
8072
8073
8074
8075
8076
8077
8078
8079
8080
8081
8082
8083
8084
8085
8086
8087
8088
8089
8090
8091
8092
8093
8094
8095
8096
8097
8098
8099
8100
8101
8102
8103
8104
8105
8106
8107
8108
8109
8110
8111
8112
8113
8114
8115
8116
8117
8118
8119
8120
8121
8122
8123
8124
8125
8126
8127
8128
8129
8130
8131
8132
8133
8134
8135
8136
8137
8138
8139
8140
8141
8142
8143
8144
8145
8146
8147
8148
8149
8150
8151
8152
8153
8154
8155
8156
8157
8158
8159
8160
8161
8162
8163
8164
8165
8166
8167
8168
8169
8170
8171
8172
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML><HEAD><TITLE> Linux Gazette Table of Contents LG #88</TITLE></HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#0000AF"
ALINK="#FF0000" >
<center>
<!-- A HREF="http://www.linuxgazette.com/">
<H1><IMG SRC="../gx/newlogo.jpg" ALT="LINUX GAZETTE" border="0"></H1></A> --> 
<A HREF="http://www.linuxgazette.com/">
<H1><IMG ALT="LINUX GAZETTE" SRC="../gx/lglogo.png" 
	WIDTH="600" HEIGHT="124" border="0"></H1></A> 
<H2>March 2003, Issue 88 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Published by <I>Linux Journal</I></H2> 

<A HREF="../index.html">Front Page</A> &nbsp;|&nbsp;
<A HREF="../index.html">Back Issues</A> &nbsp;|&nbsp;
<A HREF="../lg_faq.html">FAQ</A> &nbsp;|&nbsp;
<A HREF="../mirrors.html">Mirrors</A> <!-- &nbsp;|&nbsp; --><BR>
<A HREF="../tag-kb.html">The Answer Gang knowledge base</A> (your Linux questions here!) <!-- &nbsp;|&nbsp; --><BR>
<A HREF="http://www.linuxgazette.com/search.html">Search (www.linuxgazette.com)</A> 
<!-- *** BEGIN mirror site search link *** -->
<!-- &nbsp; <A HREF="http://www.linuxgazette.com/search.html">(SITE.COM
mirror)</A> -->
<!-- *** END mirror site search link *** -->

</CENTER>

<HR NOSHADE>
<!--=================================================================-->

<!-- H1><font color="#BB0000">Table of Contents:</font></H1 -->




<!-- *** BEGIN toc *** -->
<UL>
<LI> <A HREF="lg_mail.html">The MailBag</A>
<LI> <A HREF="lg_tips.html">More 2-Cent Tips</A>
<LI> <A HREF="lg_answer.html">The Answer Gang</A>
<LI> <A HREF="lg_bytes.html">News Bytes</A>, <EM>by Michael Conry</EM>
<LI> <A HREF="collinge.html">HelpDex</A>, <EM>by Shane Collinge</EM>
<LI> <A HREF="ecol.html">Ecol</A>, <EM>by Javier Malonda</EM>
<LI> <A HREF="jenkins.html">Fonts for the Common Desktop Environment (or: How To Alias Your Fonts)</A>, <EM>by Graham Jenkins</EM>
<LI> <A HREF="lodato.html">Linux-Based Telecom</A>, <EM>by Janine M Lodato</EM>
<LI> <A HREF="lodato2.html">The Sushi Pub at the World Internet Center</A>, <EM>by Janine M Lodato</EM>
<LI> <A HREF="okopnik.html">Perl One-Liner of the Month: Good Enough For Government Work</A>, <EM>by Ben Okopnik</EM>
<LI> <A HREF="piszcz.html">Optimizing GCC</A>, <EM>by Justin Piszcz</EM>
<LI> <A HREF="pramode.html">Programming the SA1110 Watchdog timer on the Simputer </A>, <EM>by Pramode C.E</EM>
<LI> <A HREF="puryear.html">Book Review: Unix Storage Management</A>, <EM>by Dustin Puryear</EM>
<LI> <A HREF="shekhar.html">Doing Things in GNU/Linux</A>, <EM>by Raj Shekhar, Anirban Biswas, Jason P Barto and John Murray</EM>
</UL>

<!-- *** END toc *** -->




<HR NOSHADE>
<!--=================================================================-->

<H3 ALIGN="center"><EM>Linux Gazette</EM> Staff and The Answer Gang</H3>
<BLOCKQUOTE>
<STRONG>Editor:</STRONG> Michael Orr<BR>
<STRONG>Technical Editor:</STRONG> Heather Stern<BR>
<STRONG>Senior Contributing Editor:</STRONG> Jim Dennis<BR>
<STRONG>Contributing Editors:</STRONG>
Ben Okopnik, Dan Wilder, Don Marti
</BLOCKQUOTE>

<HR NOSHADE>
<!--=================================================================-->

<A HREF="TWDT.txt.gz">TWDT 1 (gzipped text file)</A><BR>
<A HREF="TWDT.html">TWDT 2 (HTML file)</A><BR>
are files containing the entire issue: one in text format, one in HTML. 
They are provided 
strictly as a way to save the contents as one file for later printing in
the format of your choice; 
there is no guarantee of working links in the HTML version.
<HR NOSHADE>
<!--=================================================================-->

<center>
<I>Linux Gazette</I><img alt="[tm]" src="../gx/tm.gif">, 
<A HREF="http://www.linuxgazette.com/">http://www.linuxgazette.com/</A><BR> 
This page maintained by the Editor of <I>Linux Gazette</I>,
<A HREF="mailto: gazette@ssc.com"> gazette@ssc.com</A>
<P> 
<H5>Copyright &copy; 1996-2003 Specialized Systems Consultants, Inc.</H5>
</center>

<HR NOSHADE>
<!--=================================================================-->


<!-- *** BEGIN navbar *** -->
<IMG ALT="" SRC="../gx/navbar/left.jpg" WIDTH="14" HEIGHT="45" BORDER="0" ALIGN="bottom"><A HREF="index.html"><IMG ALT="[ Table of Contents ]" SRC="../gx/navbar/toc.jpg" WIDTH="220" HEIGHT="45" BORDER="0" ALIGN="bottom" ></A><A HREF="../index.html"><IMG ALT="[ Front Page ]" SRC="../gx/navbar/frontpage.jpg" WIDTH="137" HEIGHT="45" BORDER="0" ALIGN="bottom"></A><A HREF="http://www.linuxgazette.com/cgi-bin/talkback/all.py?site=LG&article=http://www.linuxgazette.com/issue88/lg_mail.html"><IMG ALT="[ Talkback ]" SRC="../gx/navbar/talkback.jpg" WIDTH="121" HEIGHT="45" BORDER="0" ALIGN="bottom"  ></A><A HREF="../lg_faq.html"><IMG ALT="[ FAQ ]" SRC="./../gx/navbar/faq.jpg"WIDTH="62" HEIGHT="45" BORDER="0" ALIGN="bottom"></A><A HREF="lg_tips.html"><IMG ALT="[ Next ]" SRC="../gx/navbar/next.jpg" WIDTH="15" HEIGHT="45" BORDER="0" ALIGN="bottom"  ></A><IMG ALT="" SRC="../gx/navbar/right.jpg" WIDTH="15" HEIGHT="45" ALIGN="bottom">
<!-- *** END navbar *** -->

<!--endcut ============================================================-->

<TABLE BORDER><TR><TD WIDTH="200">
<A HREF="http://www.linuxgazette.com/">
<IMG ALT="LINUX GAZETTE" SRC="../gx/2002/lglogo_200x41.png" 
	WIDTH="200" HEIGHT="41" border="0"></A>
<BR CLEAR="all">
<SMALL>...<I>making Linux just a little more fun!</I></SMALL>
</TD><TD>


<center>
<BIG><BIG><STRONG><FONT COLOR="maroon">The Mailbag</FONT></STRONG></BIG></BIG><BR>
<!-- BEGIN wanted -->

<STRONG>From <A HREF="mailto:gazette@ssc.com">The Readers of <i>Linux Gazette</I></A></STRONG></BIG>
</TD></TR>
</TABLE>
<P>

<!-- END header -->
<HR>
<center>
<BIG><STRONG><FONT COLOR="maroon">HELP WANTED : Article Ideas</FONT></STRONG></BIG>
<BR>
<STRONG>Submit comments about articles, or articles themselves (after reading <a href="../faq/author.html">our guidelines</a>) to <A HREF="mailto:gazette@ssc.com">The Editors of <i>Linux Gazette</I></A>, and technical answers and tips about Linux to <A HREF="mailto:linux-questions-only@ssc.com">The Answer Gang</A>. 
</STRONG>
</center><HR>
<UL>
<!-- index_text begins -->
<li><A HREF="#wanted.1"
	><strong>devfs problem</strong></a>
<li><A HREF="#wanted.2"
	><strong>traffic shaping for the internal network; tc filter for source addresses?</strong></a>
<li><A HREF="#wanted.3"
	><strong>PS/2 port still live after shutdown</strong></a>
<li><A HREF="#wanted.4"
	><strong>Only USB mouse/keyboard recognized by KDE.</strong></a>
<li><A HREF="#wanted.5"
	><strong>linux statistics</strong></a>
<!-- index_text ends -->
</UL>
<!--     .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.     -->
<P> <A NAME="wanted.1"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/envelope.gif">
<FONT COLOR="navy">devfs problem</FONT></H3>
30 Jan 2003 08:22:53 +0200
<BR>Stelian Iancu (<a href="mailto:linux-questions-only@ssc.com?cc=stelian.iancu@gmx.net&subject=%20Re%3A%20%5BLG%2088%5D%20help%20wanted%20%231%20devfs">stelian.iancu from gmx.net</a>)


<P>
Hello!
</P>
<P>
I just switched from Gnome 2.0 to <A HREF="http://www.kde.org/">KDE</A> 3.1 and I notice that the settings
for the devices created by devfsd aren't save between reboots. So I read
through the docs and I saw that I have to create some dev-state dir.
Well, I already have that dir in <TT>/lib</TT> and devfsd is set to save the
settings (in <TT>/etc/devfsd.conf</TT>). And if I change the permissions on some
devices (<TT>/dev/dsp</TT> for example), the change is also visible in
<TT>/lib/dev-state</TT> directory. However, after I reboot, the same problem. I
don't have permissions. And this is really annoying me.
</P>
<P>
So any suggestions are greatly appreciated!
</P>
<P>
P.S. I am using Mandrake 9.0 with the default kernel.
</P>
<P>
Thanks!
</P>
<P>
Regards,
<br>Stelian I.
</P>
<!-- sig -->

<!-- end 1 -->
<!--     .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.     -->
<P> <A NAME="wanted.2"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/envelope.gif">
<FONT COLOR="navy">traffic shaping for the internal network; tc filter for source addresses?</FONT></H3>
Sun, 2 Feb 2003 07:55:01 -0800 (PST)
<BR>Radu Negut (<a href="mailto:linux-questions-only@ssc.com?cc=rnegut@yahoo.com&subject=%20Re%3A%20%5BLG%2088%5D%20help%20wanted%20%232%20traffic%20shaping">rnegut from yahoo.com</a>)


<P>
Hi!
</P>
<P>
I've got my home LAN behind a cable modem, masqueraded
to the outside world. The masquerading machine runs
RedHat 7.3. What I'm trying to achieve is equally
share the bandwidth between the machines (about 7)
following this algorithm: if only one host is making a
connection at a given time, it gets the whole
bandwidth; when a second connection from a second
masqueraded machine arrives at the gateway, the
bandwidth is equally divided between the two machines;
if a third machine makes a connection, the bandwidth
is split in three equal shares and so on. Now if one
of the machines that has already opened a connection,
makes a second one, I would want this connection to be
allocated inside the machine's share, not as a
separate member participating in the bandwidth
division. Following this idea, if someone has 4 open
downloads, someone else 7 and a third machine only 1,
then bandwidth should be divided only by three and not
12.
</P>
<P>
I've already read about SFQ, qdiscs and tc filter from
the 'Advanced routing HOW-TO' but I couldn't find any
info on how to shape/police traffic dynamically and
based on ip source addresses. I do not want to split
the bandwidth into seven slices from the beginning
since not everybody is online all the time and this
would waste available bandwidth for the others. I'd
rather have the traffic shaped depending on how many
internal hosts wish to access the internet at a given
time.
</P>
<P>
I'm not really interested in providing differentiated
traffic based on content (interactive, bulk, etc.)
just a fair sharing of bandwidth, ignorant of how many
download managers/ftp's each and everyone is running,
and not allowing anyone to suffocate the shared
internet connection with his/her requests.
</P>
<P>
Thank you very much in advance for the time taken to
<BR>answer this,
</P>
<P>
Radu Negut
</P>
<!-- sig -->
<!-- sig -->

<!-- end 2 -->
<!--     .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.     -->
<P> <A NAME="wanted.3"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/envelope.gif">
<FONT COLOR="navy">PS/2 port still live after shutdown</FONT></H3>
Wed, 26 Feb 2003 21:43:00 +1300
<BR>D & E Radel (<a href="mailto:linux-questions-only@ssc.com?cc=radel@inet.net.nz&subject=%20Re%3A%20%5BLG%2088%5D%20help%20wanted%20%233%20ps2%20shutdown">radel from inet.net.nz</a>)


<P>
Hi everyone.
</P>
<P>
When Linux shutsdown with halt -p, my pc will turn off,
but Linux won't switch off the power to my PS/2 port. It is
turned on when X starts, but when X shuts down, or the PC
is shut down, the port remains on - and my Optical Mouse
stays on. Light remains glowing, etc.
</P>
<P>
.... However, Windows 98SE will shut this down properly
every time. I have kernel 2.4.20 and have tried enabling ACPI
and APM. And of course I have an ATX PSU, and nothing weird
enabled either in cmos or jumpered.
</P>
<P>
I know that some boards just have power going through PS/2
ports after soft shutdown as a feature/bug, but Win98SE manages
to shut down this one ok.
</P>
<P>
If someone knows how to fix this, I would really appreciate your
help.
</P>
<P>
Thanks in advance.
<BR>D.Radel.
</P>
<P>
PS. Sorry for mentioning that <EM>other</EM> OS in this email.
</P>
<!-- sig -->

<!-- end 3 -->
<!--     .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.     -->
<P> <A NAME="wanted.4"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/envelope.gif">
<FONT COLOR="navy">Only USB mouse/keyboard recognized by KDE.</FONT></H3>
Thu, 30 Jan 2003 04:14:27 -0800 (PST)
<BR>Stephen (<a href="mailto:linux-questions-only@ssc.com?cc=&subject=%20Re%3A%20%5BLG%2088%5D%20help%20wanted%20%234%20usb%20only"><em>anonymous</em></a>)


<P>
Greetings.I installed <A HREF="http://www.redhat.com/">Red Hat</A> Linux 8.0 on my desktop
computer.  I used my PS/2 keboard and mouse to install
the software from CD images downloaded from Red Hat.
After software installation completed my computer
rebooted to the <A HREF="http://www.kde.org/">KDE</A> login screen.  My PS/2 keyboard
and mouse does not work.  Only a USB keyboard and
mouse work.  When I boot my system into run level 3 my
PS/2 keyboard works.  How do I configure my system so
that I can use my PS/2 mouse and keyboard with KDE?
</P>
<P>
Any information is appreciated.  Thanks.
</P>
<!-- sig -->
<!-- sig -->

<!-- end 4 -->
<!--     .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.     -->
<P> <A NAME="wanted.5"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/envelope.gif">
<FONT COLOR="navy">linux statistics</FONT></H3>
Tue, 25 Feb 2003 13:48:32 +0600
<BR>Sanjaya Singharage (<a href="mailto:linux-questions-only@ssc.com?cc=SanjayaS@jkcs.slt.lk&subject=%20Re%3A%20%5BLG%2088%5D%20help%20wanted%20%235%20statistics">SanjayaS from jkcs.slt.lk</a>)


<P>
Hi all,
<br>are there any reputable statistics available on the web comparing linux,
*nixes and <EM>windows</EM> on the enterprise server market? Can somebody give
some pointers or links? Any reputable articles would also be welcome. I've
been rummaging the web the whole day but couldn't find anything useful.
<br>Thanks.
</P>

<!-- end 5 -->
<HR>
<center>
<BIG><STRONG><FONT COLOR="maroon">GENERAL MAIL</FONT></STRONG></BIG>
<BR>
</center><HR>
<UL>
<!-- index_text begins -->
<li><A HREF="#mailbag.1"
	><strong>What a great service you have done me</strong></a>
<li><A HREF="#mailbag.2"
	><strong>The Ultimate Editor</strong></a>
<li><A HREF="#mailbag.3"
	><strong>editor's comment...</strong></a>
<li><A HREF="#mailbag.4"
	><strong>wordsmithing in Gibberish</strong></a>
<li><A HREF="#mailbag.5"
	><strong>Point of Sale</strong></a>
<!-- index_text ends -->
</UL>
<!--     .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.     -->
<P> <A NAME="mailbag.1"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/envelope.gif">
<FONT COLOR="navy">What a great service you have done me</FONT></H3>
Tue, 04 Feb 2003 13:05:37 +0100
<BR>Joe Programmer (<a href="mailto:gazette@ssc.com?subject=%20Re%3A%20%5BLG%2088%5D%20mailbag%20%231%20%20interface%20library">ctio from lycos.co.uk</a>)


<P><STRONG>
Dear Mike,
</STRONG></P>
<P><STRONG>
After my 
<A HREF="../issue87/bint.html">first article</A> was published, about thirty
people downloaded my console interface library. In the few days since you
published my second, over ninety people have come for it. If only ten percent
of those try to write an editor like I described, you will have turned my dream
into a reality.
</STRONG></P>
<P><STRONG>
When I cycled into the city to log on at the daycentre this morning, I had
been in the countryside for a week. I had no idea I had been published
because I expected it would be in the March edition. I agreed with your
comments about C++ not being the universal language I made it out to be
and was going to rewrite it with your suggestions in mind.
</STRONG></P>
<P>
Unless the author says he plans to do a revision, I assume the article is
finished when I receive it.  -- Mike
</P>
<P><STRONG>
Now I realise it's gone out and I've seen the response, I don't care how
bigotted people think I am 
<IMG SRC="../gx/dennis/smily.gif" ALT=":)" 
		height="24" width="20" align="middle">
</STRONG></P>
<P><STRONG>
I cannot thank you enough.
</STRONG></P>
<P><STRONG>
Your faithfully,
Stephen Bint
</STRONG></P>

<blockquote><font color="#000066">We have encouraged Stephen to write or be involved in more articles;  you'll
see some of the results when they're ready for publication.
 -- Heather</font></blockquote>
<P>
Thanks for the encouragement.  It was good to hear what the article is doing
for you. -- Mike
</P>
<HR width="10%" align="center"><P><STRONG>
Mike,
</STRONG></P>
<P><STRONG>
Thank you for pointing out that I gave the misleading
impression, that C++ is the first language of all Linux
users in my article, The Ultimate Editor (LG#87). Obviously
Linux users vary widely in their choice of first language.
</STRONG></P>
<P><STRONG>
It would be a boon to the users of any language, especially
beginners, to have an editor which is extensible in their
own language. C++ users seem to be the only group who do not
have one yet.
</STRONG></P>
<P><STRONG>
Stephen Bint
</STRONG></P>

<!-- end 1 -->
<!--     .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.     -->
<P> <A NAME="mailbag.2"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/envelope.gif">
<FONT COLOR="navy">The Ultimate Editor</FONT></H3>
Sun, 23 Feb 2003 18:25:46 +0800
<BR>Jim Dennis (<a href="mailto:gazette@ssc.com?subject=%20Re%3A%20%5BLG%2088%5D%20mailbag%20%232%20ultimate%20editor%20disagreement"><em>Linux Gazette</em> Sr. Contributing Editor</a>)
<BR>Question by Peter (pfheiss from philonline.com)

<P><STRONG>
Dear Editor,
</STRONG></P>
<P><STRONG>
I can not fully understand the article "The Ultimate Editor" in Feb. LG.
Having migrated from DOS to Linux without passing MSWindooze I have to ask
what is wrong with the Linux text editors such as joe, xedit, gedit, gxedit,
xeditplus, kedit, kwrite, kate, vim, gvim, cooledit, any more?, yes I am
sure.
</STRONG></P>
<P><STRONG>
I have seen the text editor in Windooze and thought it a joke compared with
some of the Linux text editors mentioned.
</STRONG></P>
<P><STRONG>
May be Stephen Bint should try them all first before picking up more
cigarette butts in the gutter thus damaging his lungs and consequently
his brain.
</STRONG></P>
<P><STRONG>
Regards
<BR>Peter Heiss
</STRONG></P>
<P>
Well, I can understand the article.  I can also disagree with it, but
first I have to understand it.  The title seems destined to invite
flames (perhaps he's asking for a light for those soggy gutter butts).
</P>
<P>
He doesn't like the Linux text/console editors he's tried.  He doesn't
bother to lay out the criteria against which he's rating them.  Other
than that it's simply an announcement of a library which is built over
the top of SLang which, of course is built over the top of ncurses.
</P>
<P>
It would be easy to cast aspersions, even to question my fellow editors
on the merits of including this article.  However, I'll just let the
article speak for itself.  I'll ask, why doesn't xemacs support mouse
on the console or within some form of xterm (xemacs does support ncurses
color, and menus)?  How about vim?
</P>
<P>
Personally I mostly use vim or xemacs in viper (vi emulation) mode.
There are about 100 other text editors for Linux and UNIX text mode
(and more for X --- nedit being the one I suggest for new users who
don't want to learn vi --- or who decide they hate it even after they
learn it).
</P>
<P>
-- Jim Dennis
</P>

<blockquote><font color="#000066">I hope that Stephen's comment in the previous portion clarifies what he
was really thinking.  On the cigarette analogy, he has roll-your-own
papers in his pocket, of a C++ variety, but needs someone to share loose
tobacco.  Then everyone sharing this particular vice can enjoy having a
smoke together... downwind of folk who already like their text-editors :D
Yes, folk who are used to seeing their brand down at the liquor store
are likely to think making your own cigarettes is either quaint or
nutty.   But it's a big world out here, and the open source world is
built by folk who like to roll their own...
 -- Heather</font></blockquote>

<blockquote><font color="green">Let's remember that when Stephen complains,
he doesn't just whine and expect others to do things his way.  Rather, he takes
it upon himself to 
contribute code that does whatever it is he's complaining about.  See
<A HREF="../issue86/bint.html">I Broke the Console Barrier</A> in issue 86.
That was the main reason I published 
<A HREF="../issue87/bint.html">The Ultimate Editor</A>, even though I strongly
objected to his assumptions that (1) C/C++ are the only worthwhile
languages and (2) emacs should be flogged over the head for not using menus
and keystrokes &agrave; la DOS <TT>edit</TT>.  The first bothered me enough to insert
an Editor's note saying there are other issues involved.  The second didn't bother me quite
as much, so I sent the author a private e-mail listing the C/C++ objections and
asked him to consider a follow-up article or Mailbag letter that took them into
account.  And it worked: we had a great discussion between Stephen and the
Editors' list about C/C++ vs scripting languages, and that led to some excellent
article ideas.  

<P> Also remember that Stephen is homeless, and his Internet access
is limited to an hour here, an hour there on public-access terminals.  A far cry
from simply sitting in front of your computer that happens to be already on.
So he is putting a high level of commitment into writing these articles and
programs, higher than many people would be willing to do.  It's unfortunate
that his limited Internet access prevented me from knowing at press time that
he had decided on a last-minute revision to tone down the article and make it
more balanced, but c'est la vie.  

-- Iron</font></blockquote>

<!-- end 2 -->
<!--     .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.     -->
<P> <A NAME="mailbag.3"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/envelope.gif">
<FONT COLOR="navy">editor's comment...</FONT></H3>
Tue, 4 Feb 2003 11:16:59 +0100
<BR>james (<a href="mailto:gazette@ssc.com?subject=%20Re%3A%20%5BLG%2088%5D%20mailbag%20%233%20editot%20to%20editor">jamiergroberts from mailsnare.net</a>)


<P>
In Linux Gazette ( a most excellent ongoing effort, btw):
</P>

<blockquote><font color="#000066">On behalf of the staff and the Gang, thanks!
 -- Heather</font></blockquote>
<P>
<A HREF="../issue87/bint.html"
	>http://www.linuxgazette.com/issue87/bint.html</A>
</P>
<P>
there's an editorial aside:
</P>
<P><STRONG><FONT COLOR="#006633"><EM><BLOCKQuote>
The Ultimate Editor would be what emacs should have been: an extensible
editor with an intuitive mouse-and-menu interface. [Editor's note: emacs
was born before mice and pulldown menus were invented.]
</BLOCKQuote></EM></FONT></STRONG></P>
<P>
AFAIK, nope 
<IMG SRC="../gx/dennis/smily.gif" ALT=":-)" 
		height="24" width="20" align="middle"> Or at least, not exactly! This would be better:
</P>

<TABLE WIDTH="95%" BORDER="1" BGCOLOR="#FFFFCC"><TR><TD>
<p align="center">...............</p>
<P><BLOCKQuote>
[Editor's note: emacs was born before mice and pulldown menus were *widely
known outside research institutes*.]
</BLOCKQuote></P><p align="center">...............</p>
</TD></TR></TABLE>
<P>
Though of course, RMS was <EM>at</EM> a research institute, so may have known of
mice by then 
<IMG SRC="../gx/dennis/smily.gif" ALT=":-)" 
		height="24" width="20" align="middle">
</P>
<P>
For mouse references, see (amongst many other possibilities):
</P>
<P><BLOCKQuote>
<A HREF="http://www.digibarn.com/friends/butler-lampson/index.html"
	>http://www.digibarn.com/friends/butler-lampson/index.html</A>
</BLOCKQuote></P>
<P>
or any of the Engelbart stuff. Mice were pretty well known by '72, Emacs
dates from '76: TECO (Emacs' predecessor) does however date back almost to
the invention of the mouse - I haven't found out exactly when TECO was
initiated, around '64 I guess (but see
</P>
<P>
<A HREF="http://www.ibiblio.org/pub/academic/computer-science/history/pdp-11/teco/doc/tecolore.txt"
	>http://www.ibiblio.org/pub/academic/computer-science/history/pdp-11/teco/doc/tecolore.txt</A>
</P>
<P>
if the question is really of interest).
</P>

<blockquote><font color="#000066">I think, strictly speaking, that the editor macros were by their nature
trapped in the environment of the editor they were macros <EM>for</EM> : TECO.
So it isn't precisely right to say that TECO was emacs' predecessor;
"parent" or "original environment" maybe, but I don't believe TECO was
intended to be a general purpose editor ... much less the incredible
power beyond that, that the emacs environment grew into after taking off
on its own.
</font></blockquote>
<blockquote><font color="#000066">Not all menus are pull-down, nor should a mouse be required to reach
pull-down menus... a matter of style and usability.  For my own opinion,
I feel that emacs does have menus; they just don't always look the part.
 -- Heather</font></blockquote>
<P>
This is all, I agree, excessively pedantic - I've also offered my services
as occasional proofreader 
<IMG SRC="../gx/dennis/smily.gif" ALT=":-)" 
		height="24" width="20" align="middle">
</P>
<P>
JR
</P>
<BLOCKQUOTE><FONT COLOR="green">Thanks to everybody who offered to proofread.
We now have some twenty voluteers.
-- Iron</FONT></BLOCKQUOTE> 

<!-- end 3 -->
<!--     .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.     -->
<P> <A NAME="mailbag.4"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/envelope.gif">
<FONT COLOR="navy">wordsmithing in Gibberish</FONT></H3>
Mon, 24 Feb 2003 08:10:15 -0800 (PST)
<BR>Raj Shekhar (<a href="mailto:gazette@ssc.com?subject=%20Re%3A%20%5BLG%2088%5D%20mailbag%20%234%20gibberish">lunatech3007 from yahoo.com</a>)


<P>
Dear Ben,
</P>
<P>
This is with reference to "Perl One-Liner of the Month: The Case of
the Evil Spambots" which was published in th LG#86. I especially
enjoyed you defination of Gibberish.
</P>
<P>
Here is something I found in my fortune files. I am pretty sure
wordsmithing in the Marketroid language is done using this
procedure. Please keep up the good work of giving underhand blows to
the Marketroid.
</P>

<TABLE WIDTH="95%" BORDER="1" BGCOLOR="#FFFFCC"><TR><TD>
<p align="center">...............</p>

<blockquote><pre>Column 1		Column 2		Column 3

0. integrated		0. management		0. options
1. total		1. organizational	1. flexibility
2. systematized		2. monitored		2. capability
3. parallel		3. reciprocal		3. mobility
4. functional		4. digital		4. programming
5. responsive		5. logistical		5. concept
6. optional		6. transitional		6. time-phase
7. synchronized		7. incremental		7. projection
8. compatible		8. third-generation	8. hardware
9. balanced		9. policy		9. contingency
</pre></blockquote>
<P>
The procedure is simple.  Think of any three-digit number, then
select the corresponding buzzword from each column.  For instance,
number 257 produces "systematized logistical projection," a phrase
that can be dropped into virtually any report with that ring of
decisive, knowledgeable authority.  "No one will have the remotest
idea of what you're talking about," says Broughton, "but the important
thing is that they're not about to admit it."
</P>
<P>
- Philip Broughton, "How to Win at Wordsmanship"
</P><p align="center">...............</p>
</TD></TR></TABLE>
<P>
Cheers
Raj Shekhar
</P>
<!-- sig -->
<!-- sig -->

<!-- end 4 -->
<!--     .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.     -->
<P> <A NAME="mailbag.5"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/envelope.gif">
<FONT COLOR="navy">Point of Sale</FONT></H3>
Tue, 11 Feb 2003 14:44:29 -0800
<BR>Gene Mosher (<a href="mailto:gazette@ssc.com?subject=%20Re%3A%20%5BLG%2088%5D%20mailbag%20%235%20point%20of%20sale">gene from viewtouch.com</a>)



<blockquote><font color="#000066">Gene's HTML-only email barely escaped the spam trap, when Mike recognized
that it was a followup to
<a href="../issue87/lg_mail.html#mailbag.2">Issue 87, Mailbag #2</a>
</font></blockquote>
<blockquote><font color="#000066">Folks, while our main publication form is HTML, we have our own style
guidelines and pre-processing to do;  if you're not submitting a full
article, we greatly prefer plain text.
 -- Heather</font></blockquote>
<P><STRONG>
There's always the real thing.
</STRONG></P>
<P><STRONG>
ViewTouch is genuine killer app.  My life's work resulted in the sales
of millions of computers in the 26 years since I first started writing
and using POS software.  I invented many of the concepts in use today
worldwide in retail software, including virtual touchscreen graphics
to represent the universe of retail business operations.  Much of what
we are doing today will become standard in the future.  ViewTouch is
the original and longest-lived.  Thanks for your comments.
</STRONG></P>
<P><STRONG>
Gene Mosher
</STRONG></P>
<P>
Hello, Gene - I remember talking to you when I wanted to install VT for
a client in Florida a few years back (they backed out of the deal by
trying to rip me off, but, erm, I had the root password. We parted ways,
and they're still without a POS last I heard. 
<IMG SRC="../gx/dennis/smily.gif" ALT=":)" 
		height="24" width="20" align="middle"> As I'd mentioned, I
really like the look and feel of your app; however, good as it is, not
being Open Source limits its applicability in the Linux world. If I
remember correctly, that was the upshot of our discussion here.
</P>
<P>
Just for the record, folks - Gene was very friendly and very helpful
despite the fact that the client had not yet bought a license from him;
given his help, the setup (at least the part that I got done before the
blow-up) was nicely painless.
</P>
<P>
Ben Okopnik
</P>

<blockquote><font color="#000066">We also got a request for aid finding a POS from a fellow with a pizza
parlor;  luckily, Linux folk have already dealt with Pizza, although
it's worth following the old articles over at <EM>LJ</EM> and seeing how that
project moved along.   We're still looking for news or articles from
people using or developing open source Point of Sale, and I re-emphasize,
we mean physical cash registers, not just e-commerce.  E-commerce apps
we've got by the boatload, on sale and in "AS IS" condition.
 -- Heather</font></blockquote>

<!-- end 5 -->
<HR>
<center>
<BIG><STRONG><FONT COLOR="maroon">GAZETTE MATTERS</FONT></STRONG></BIG>
<BR>
</center><HR>
<UL>
<!-- index_text begins -->
<li><A HREF="#gaz.1"
	><strong>April/May/June schedule</strong></a>
<!-- index_text ends -->
</UL>
<!--     .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.     -->
<P> <A NAME="gaz.1"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/envelope.gif">
<FONT COLOR="navy">April/May/June schedule</FONT></H3>
Thu, 27 Feb 2003 13:08:57 -0800
<BR>Mike ("Iron") Orr (<a href="mailto:gazette@ssc.com?subject=%20Re%3A%20%5BLG%2088%5D%20gazette%20matters%20%231%20schedule"><em>Linux Gazette</em> Editor</a>)

<P>
I will be out of town March 18 - April 3 at the
<A HREF="http://www.python.org/pycon/">Python conference</A>
and <A HREF="http://www.python.org/cgi-bin/moinmoin/WebwareSprint">Webware
sprint</A> (and visiting New York, Chicago, and Columbus [Ohio]), Heather will
be busy the week before Memorial Day (May 26), and I'll be gone Memorial Day
weekend.
</P>
<P>
This means I'll need to finalize the April issue by March 14, so the
article deadline is March 10.  I've let the recent authors know.
</P>
<P>
May's issue will be normal.
</P>
<P>
For June, the article deadline will be May 19 (a week early).
</P>

<!-- end 1 -->
<!-- *** BEGIN copyright *** -->
<hr>
<CENTER><SMALL><STRONG>
<h5>This page edited and maintained by the Editors of <I>Linux Gazette</I><br>HTML script maintained by <A HREF="mailto:star@starshine.org">Heather Stern</a> of Starshine Technical Services, <A HREF="http://www.starshine.org/">http://www.starshine.org/</A>
<br>Copyright &copy; 2003
<br>Copying license <A HREF="http://www.linuxgazette.com/copying.html">http://www.linuxgazette.com/copying.html</A>
<BR>Published in Issue 88 of <i>Linux Gazette</i>, March 2003</H5>
</STRONG></SMALL></CENTER>
<!-- *** END copyright *** -->
<HR>




<TABLE BORDER><TR><TD WIDTH="200">
<A HREF="http://www.linuxgazette.com/">
<IMG ALT="LINUX GAZETTE" SRC="/../gx/2002/lglogo_200x41.png" 
	WIDTH="200" HEIGHT="41" border="0"></A>
<BR CLEAR="all">
<SMALL>...<I>making Linux just a little more fun!</I></SMALL>
</TD><TD>


<center>
<BIG><BIG><STRONG><FONT COLOR="maroon">More 2&cent; Tips!</FONT></STRONG></BIG></BIG><BR>
<!-- BEGIN tips -->

<STRONG>By <A HREF="mailto:linux-questions-only@ssc.com">The Readers of <i>Linux Gazette</I></A></STRONG></BIG>
</TD></TR>
</TABLE>
<P>

<!-- END header -->
<center><STRONG>See also: The Answer Gang's 
<a href="../tag/kb.html">Knowledge Base</a>
and the <i>LG</i> 
<a href="http://www.linuxgazette.com/search.html">Search Engine</a></STRONG>
</center><HR>
<UL>
<!-- index_text begins -->
<li><A HREF="#tips.1"
	><strong>make in future? I'm confused *now*</strong></a>
<li><A HREF="#tips.2"
	><strong>H/W detection in Debian ?</strong></a>
<li><A HREF="#tips.3"
	><strong>ppp over nullmodem cable - Linux client, win2k RAS server</strong></a>
<li><A HREF="#tips.4"
	><strong>kernels?  make your own!</strong></a>
<li><A HREF="#tips.5"
	><strong>Ipchains vs. Iptables</strong></a>
<li><A HREF="#tips.6"
	><strong>a new language</strong></a>
<li><A HREF="#tips.7"
	><strong>Key Remapping....</strong></a>
<li><A HREF="#tips.8"
	><strong>Palm magic</strong></a>
<li><A HREF="#tips.9"
	><strong>Initial thoughts on ratpoison</strong></a>
<li><A HREF="#tips.10"
	><strong>rc.local in debian</strong></a>
<li><A HREF="#tips.11"
	><strong>recording sounds on linux for windows</strong></a>
<li><A HREF="#tips.12"
	><strong>Secure Password Authorization - NTCR ?</strong></a>
<li><A HREF="#tips.13"
	><strong>Fwd: Terminating Misbehaving Programs</strong></a>
<li><A HREF="#tips.14"
	><strong>Two sound cards</strong></a>
<!-- index_text ends -->
</UL>
<!--     .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.     -->
<P> <A NAME="tips.1"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
<FONT COLOR="navy">make in future? I'm confused *now*</FONT></H3>
Tue, 28 Jan 2003 00:35:59 -0600
<BR>Mike Orr (<a href="mailto:linux-questions-only@ssc.com?cc=hi_subri@hotmail.com&subject=%20Re%3A%20%5BLG%2088%5D%202c%20Tips%20%231"><em>Linux Gazette</em> Editor</a>)
<BR>Question by Subramanian Varadarajan (hi_subri from hotmail.com)

<P><STRONG>
hai,
</STRONG></P>
<P><STRONG>
I am subbu and I encounterd this problem when i ran
</STRONG></P>

<pre><strong>make - filename.
</strong></pre>
<P><STRONG>
How to fix this problem?Can you help me.
</STRONG></P>

<pre><strong>make: *** Warning: File `makefile.machine' has modification time in
the future (2003-01-28 07:07:00 &gt; 2003-01-28 00:09:19)
make: Nothing to be done for `all'.
make: warning:  Clock skew detected.  Your build may be incomplete.
</strong></pre>
<P><STRONG>
I guess that my  real-time clock has set incorrectly. how to correct
it.
</STRONG></P>
<P><STRONG>
I appreciate your time.
</STRONG></P>
<P><STRONG>
thanks,
<BR>subbu
</STRONG></P>

<blockquote><font color="#000066">Ugly HTML had to be beaten up and reformatted.
Please send messages to The Answer Gang in text format.
 -- Heather</font></blockquote>
<BLOCKQUOTE>
[Mike] 
The message means what it says: 'make' found a file that "was"
modified in the future.  That may or may not be a problem, and if
it is, it may or may not be significant.  Do you know by other
means whether 'makefile.machine' should have been updated?  I.e., did you
modify any file related to it?
</BLOCKQUOTE>
<BLOCKQUOTE>
How did that file get on your machine in the first place?  Did you
copy or untar it from another computer in a way that would have
preserved the foreign timestamp?  If so, then the clock on the
other computer may be wrong.
</BLOCKQUOTE>
<BLOCKQUOTE>
To check your own computer's clock, see the 'date' and 'hwclock'
commands.  'date' shows and sets Linux's time; 'hwclock' shows and
sets the real-time clock.  First set Linux's time correctly, then
use 'hwclock --utc --systohc' to reset the hardware clock.
</BLOCKQUOTE>
<BLOCKQUOTE>
If your hardware clock is pretty unreliable (as many are), you can
use 'hwclock --adjust' periodically (see "man hwclock"), run ntp
or chrony to synchronize your time with an Internet time server,
or put the kernel in "eleven-minute mode" where it resets the
hardware clock every eleven minutes.  (Answer Gang, how do you
activate eleven-minute mode anyway?)
</BLOCKQUOTE>
<BLOCKQUOTE>
[Ben] 
In the "hwclock" man page:
</BLOCKQUOTE>
<BLOCKQUOTE><BLOCKQuote>
This mode (we'll call it "11 minute mode") is off until something turns it
on.  The ntp  daemon  xntpd  is  one thing that turns it on.  You can turn
it off by running anything, including hwclock --hctosys, that sets the
System Time the oldfashioned way.
</BLOCKQuote></BLOCKQUOTE>
<BLOCKQUOTE>
Also, see the "kernel" option under "man ntpd".
</BLOCKQUOTE>

<!-- end 1 -->
<!--     .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.     -->
<P> <A NAME="tips.2"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
<FONT COLOR="navy">H/W detection in Debian ?</FONT></H3>
Sun, 02 Feb 2003 02:49:05 +0000
<BR>Jimmy O'Regan (<a href="mailto:linux-questions-only@ssc.com?cc=jimregan@dol.ie&subject=%20Re%3A%20%5BLG%2088%5D%202c%20Tips%20%232">jimregan from dol.ie</a>)



<blockquote><font color="#000066">In reference to:
<a href="http://www.linuxgazette.com/issue87/lg_mail.html#wanted.1">Issue87, help wanted #1</a>
 -- Heather</font></blockquote>
<P>
You could try installing libdetect, and then running <TT>/usr/sbin/detect</TT>
(detect is also used by Mandrake). Aside from that, the only thing I can
suggest is filing bugs with <A HREF="http://www.debian.org/">Debian</A>.
</P>

<!-- end 2 -->
<!--     .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.     -->
<P> <A NAME="tips.3"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
<FONT COLOR="navy">ppp over nullmodem cable - Linux client, win2k RAS server</FONT></H3>
Sun, 02 Feb 2003 03:13:36 +0000
<BR>Jimmy O'Regan (<a href="mailto:linux-questions-only@ssc.com?cc=jimregan@dol.ie&subject=%20Re%3A%20%5BLG%2088%5D%202c%20Tips%20%233">jimregan from dol.ie</a>)



<blockquote><font color="#000066">In reference to:
<a href="http://www.linuxgazette.com/issue87/lg_mail.html#wanted.1">Issue87, help wanted #2</a>
 -- Heather</font></blockquote>
<P>
The problem is the authentication on the Win2K side. Check out
<A HREF="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/apcguide/htm/appdevisv_8.asp"
	>http://msdn.microsoft.com/library/default.asp?url=/library/en-us/apcguide/htm/appdevisv_8.asp</A>
Basically, since I assume the RAS server is running etc, you just need
to enter this command on NT:
</P>

<blockquote><pre>netsh ras set authmode NODCC
</pre></blockquote>
<P>
Last month Linux Magazine (UK -
<A HREF="http://www.linux-magazine.com/issue/26/index_html"
	>http://www.linux-magazine.com/issue/26/index_html</A>) ran an article on
setting up Direct Cable Connections with NT. I'll send on the details
when I find where I left the magazine. You may try searching
<A HREF="http://linux-magazin.de"
	>http://linux-magazin.de</A> since Linux Magazine is a translated version of
that.
</P>
<P>
<A HREF="http://www.tldp.org/HOWTO/Modem-Dialup-NT-HOWTO-9.html"
	>http://www.tldp.org/HOWTO/Modem-Dialup-NT-HOWTO-9.html</A>
</P>
<P>
This page may also be of use.
</P>
<!-- sig -->

<!-- end 3 -->
<!--     .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.     -->
<P> <A NAME="tips.4"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
<FONT COLOR="navy">kernels?  make your own!</FONT></H3>
Thu, 6 Feb 2003 02:08:18 -0800 (PST)
<BR>j l (<a href="mailto:linux-questions-only@ssc.com?cc=cs25x@yahoo.com&subject=%20Re%3A%20%5BLG%2088%5D%202c%20Tips%20%234">cs25x from yahoo.com</a>)



<blockquote><font color="#000066">In reference to:
<a href="http://www.linuxgazette.com/issue87/lg_mail.html#wanted.1">Issue87, help wanted #1</a>
 -- Heather</font></blockquote>
<P>
Solution: stop using redhat, debian, mandrake kernels,
download a fresh kernel from kernel.org and build with
that.
</P>
<P>
The other answer, is to look in you Makefile, and
check the line beginning with "EXTRAVERSION=" If you
add your own name to that line, and run make, you
brand the kernel and modules with that name.
Hope that fixes your problem.
</P>
<HR width="10%" align="center">
<blockquote><code><font color="#000033"><br>"Sean Shannon" &lt;sean@dolphins.org&gt;
<br>Tue, 4 Feb 2003 10:48:20 -0500
</font></code></blockquote>
<P><STRONG>
The hardest part in compiling a kernel is making the ".config" file. Some
things to check:
</STRONG></P>

<p><Strong><ol>
<LI>modify the Makefile changing EXTRA VERSION variable (looks like you did
this since the 2.4.18custom directory is made)


<LI>make sure when you configure ( I use make menuconfig) that you select
"enable module support"


<LI>make sure to run "make dep" after "make menuconfig"
</ol></Strong></p>
<BLOCKQUOTE>
[Thomas Adams] 
Yep -- good idea.
</BLOCKQUOTE>

<p><Strong><ol>
<LI>Are you sure that "make modules" and "make bzImage" completed
successfully?
</ol></Strong></p>
<BLOCKQUOTE>
[Thomas Adams]
</BLOCKQUOTE>
<BLOCKQUOTE>
Well, I usually do something like:
</BLOCKQUOTE>

<blockquote><pre>alias beep='echo -e "\a"'

make modules &amp;&amp; for i in $(seq 10); do beep; done &amp;&amp;
make bzImage &amp;&amp; for i in $(seq 10); do beep; done
</pre></blockquote>

<p><Strong><ol>
<LI>here is the install procedure I use (System.map is a symbolic link,
RedHat 7.0, I use raid 1 disk device /dev/md0, you'll probably use
/dev/hda )
</ol></Strong></p>
<BLOCKQUOTE>
[Thomas Adams] 
or <TT>/dev/sda</TT> if s/he has a SCSI
</BLOCKQUOTE>
<P><STRONG>
To install the new kernel:
</STRONG></P>
<P><STRONG><BLOCKQuote>
Copy the new kernel and system map to the boot directory
</BLOCKQuote></STRONG></P>

<pre><strong>cp  /usr/src/linux/arch/i386/boot/bzImage   /boot/vmlinuz-2.2.16-22-custom
cp  /usr/src/linux/System.map  /boot/System.map-2.2.16-22-custom
</strong></pre>
<P><STRONG>
Edit file: /etc/lilo.conf. Add a new image section (add everything below
)
</STRONG></P>
<p align="center">See attached <tt><a href="misc/tips/customkernel.lilo.conf.txt">customkernel.lilo.conf.txt</a></tt></p>
<BLOCKQUOTE>
[Thomas Adams] 
Often called a "stanza". Be careful though. I'd be
more inclined to "label" this as "linux-test" so that
it doesn't infringe on the "old" version of the
kernel. Remember that up until this point, you're
still testing (a trial run) the new kernel.
</BLOCKQUOTE>
<P><STRONG>
Activate the change as of next re-boot
</STRONG></P>

<pre><strong>/sbin/lilo
</strong></pre>
<P><STRONG>
Install new System.map
</STRONG></P>

<pre><strong>rm  /boot/System.map
ln -s  /boot/System.map-2.2.16-22-custom  /boot/System.map
</strong></pre>
<P><STRONG>
Reboot the system to build module.dep file
</STRONG></P>

<pre><strong>shutdown -r now
</strong></pre>
<BLOCKQUOTE>
[Thomas Adams] 
Hmmm, deprecated. "Init 6" is a better way.
</BLOCKQUOTE>
<P><STRONG>
Reboot the system after the login prompt appears
Enter alt-ctrl-del key combination
</STRONG></P>
<P><STRONG>
Reboot performed because modules.dep is created on first boot (if not, try
running the "depmod" command manually then reboot)
</STRONG></P>
<BLOCKQUOTE>
[Thomas Adam] 
Not necessary. "depmod" is ran through all of the init
levels on a modern Linux system......
</BLOCKQUOTE>
<P><STRONG>
Good luck.
Sean Shannon
</STRONG></P>
<BLOCKQUOTE>
[Jim Dennis] 
Most of this can be automated down to just two lines:
</BLOCKQUOTE>
<BLOCKQUOTE><BLOCKQUOTE><CODE>
make menuconfig
<BR>make clean dep bzImage modules modules_install install
</CODE></BLOCKQUOTE></BLOCKQUOTE>
<BLOCKQUOTE>
... note the list of multiple targets all on one line.
Make install will look for an executable (usually a shell script)
named <TT>/sbin/installkernel</TT> (or even ~/bin/installkernel) and call
that with a set of arguments as documented in ... (<TT>/usr/src/linux</TT>)
arch/i386/boot/install.sh
</BLOCKQUOTE>
<BLOCKQUOTE>
Here's a relevant excerpt:
</BLOCKQUOTE>

<blockquote><pre># Copyright (C) 1995 by Linus Torvalds
# Adapted from code in arch/i386/boot/Makefile by H. Peter Anvin
# "make install" script for i386 architecture
# Arguments:
#   $1 - kernel version
#   $2 - kernel image file
#   $3 - kernel map file
#   $4 - default install path (blank if root directory)
#
# User may have a custom install script

if [ -x ~/bin/installkernel ]; then exec ~/bin/installkernel "$@"; fi
if [ -x /sbin/installkernel ]; then exec /sbin/installkernel "$@"; fi
</pre></blockquote>
<BLOCKQUOTE>
So this can put the approprite files into the appropriate places
and run <TT>/sbin/lilo</TT> or whatever is necessary on your system.
</BLOCKQUOTE>
<BLOCKQUOTE>
I like to copy .config into <TT>/boot/config-$KERNELVERSION</TT>
Also, in my case the script as to mount -o remount,rw <TT>/boot</TT>
since I normally keep <TT>/boot</TT> mounted in read-only mode.
The script remounts it back to ro mode after running <TT>/sbin/lilo.</TT>
</BLOCKQUOTE>
<BLOCKQUOTE>
For new kernels you can save some time in menuconfig by preceding
that make with:
</BLOCKQUOTE>

<blockquote><pre> 	cp /boot/config-$RECENTKERNELVERSION ./.config.old
	make oldconfig
</pre></blockquote>
<BLOCKQUOTE>
... which will set all the new config options to match any
corresponding settings in the old config.  Then you can focus
on the new stuff in menuconfig.
</BLOCKQUOTE>
<BLOCKQUOTE>
Another useful tweak for some people is to edit ... (<TT>/usr/src/linux</TT>)
<TT>.../scripts/Menuconfig</TT> and find the single_menu_mode variable:
</BLOCKQUOTE>

<blockquote><pre># Change this to TRUE if you prefer all kernel options listed
# in a single menu rather than the standard menu hierarchy.
#
single_menu_mode=
</pre></blockquote>
<BLOCKQUOTE>
... for those that don't like to have to expend extra keystrokes
popping in and out of subsections of the menuconfig dialogs.
</BLOCKQUOTE>
<BLOCKQUOTE>
Sadly this particular featuer as changed (at least by 2.5.59)
with the inclusion of a new kconfig system (instead of menuconfig).
</BLOCKQUOTE>
<BLOCKQUOTE>
You can get a collapsible try of menu options in the new system
using: make menuconfig MENUCONFIG=single_menu
(However, it it starts with all branches collapsed. &lt;grump!&gt
<IMG SRC="../gx/dennis/smily.gif" ALT=";)" 
		height="24" width="20" align="middle">
</BLOCKQUOTE>

<!-- end 4 -->
<!--     .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.     -->
<P> <A NAME="tips.5"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
<FONT COLOR="navy">Ipchains vs. Iptables</FONT></H3>
Fri, 14 Feb 2003 11:06:01 +0100
<BR>De Groote, Patrick (<a href="mailto:linux-questions-only@ssc.com?cc=Patrick.DeGroote@NETnet.be&subject=%20Re%3A%20%5BLG%2088%5D%202c%20Tips%20%235">Patrick.DeGroote from NETnet.be</a>)



<blockquote><font color="#000066">In reference to:
<a href="http://www.linuxgazette.com/issue87/lg_mail.html#wanted.1">Issue87, help wanted #6</a>
 -- Heather</font></blockquote>
<P>
if you use ipchains, then you should look at masquerading and
port-forwarding.
</P>
<P>
following command
</P>

<blockquote><pre>ipmasqadm portfw -a -P tcp -L $4 4662 -R 192.168.1.100 4662
</pre></blockquote>
<P>
should do the trick.
</P>
<P>
rgds
Patrick De Groote
</P>
<HR width="10%" align="center">
<blockquote><code><font color="#000033"><br>Bruce Ferrell &lt;bferrell@baywinds.org&gt;
<br>Sat, 22 Feb 2003 17:30:34 -0800
</font></code></blockquote>
<P>
if you're using ipchains you need something like this:
</P>

<blockquote><pre>/usr/sbin/ipmasqadm portfw -a -P tcp -L &lt;EXTERNAL ADDRESS&gt; 11900 -R &lt;INTERNAL ADDRESS&gt; 11900
</pre></blockquote>

<blockquote><font color="#000066">The point is, whether you use a variable or hardwire in an address, you
need to specify both sides of the forwarding connection.  Also note that
the two examples selected a different port to play on, but the principle
is the same.  I hope that leaving both examples in makes it all clearer
to readers.
 -- Heather</font></blockquote>
<HR width="10%" align="center">
<blockquote><code><font color="#000033"><br>Jim Kielman &lt;jimk@midbc.com&gt;
<br>05 Feb 2003 23:30:27 -0800
</font></code></blockquote>
<P>
I ran into a similar problem with a client that had to have PCAnywhere
access to one of the computers on his network. My solution was to use
"ipmasqadm portfw" to forward the ports PCAnywhere needed to access. The
server is running <A HREF="http://www.debian.org/">Debian</A> potato with a stock 2.2.20 kernel. Here is what
I use:
</P>

<blockquote><pre>ipmasqadm portfw -a -P tcp -L &lt;internet IP&gt; 4162 -R &lt;mldonkey IP&gt; 4162
ipmasqadm portfw -a -P udp -L &lt;internet IP&gt; 4162 -R &lt;mldonkey IP&gt; 4162
ipmasqadm portfw -a -P tcp -L &lt;internet IP&gt; 4161 -R &lt;mldonkey IP&gt; 4161
ipmasqadm portfw -a -P udp -L &lt;internet IP&gt; 4161 -R &lt;mldonkey IP&gt; 4161
</pre></blockquote>
<P>
internet IP = the IP address of the computer connected to the internet.
</P>
<P>
mldonkey IP = the IP address of the computer running mldonkey.
</P>
<P>
I don't know if you need both udp and tcp, but it works for me. Hope
this helps.
</P>
<P>
Regards
<BR>Jim Kielman
</P>

<!-- end 5 -->
<!--     .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.     -->
<P> <A NAME="tips.6"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
<FONT COLOR="navy">a new language</FONT></H3>
Mon, 10 Feb 2003 00:16:49 -0800
<BR>Rick Moen (<a href="mailto:linux-questions-only@ssc.com?cc=rick@linuxmafia.com&subject=%20Re%3A%20%5BLG%2088%5D%202c%20Tips%20%236">the <em>LG</em> Answer Gang</a>)



<blockquote><font color="#000066">In reference to:
<a href="http://www.linuxgazette.com/issue86/lg_tips.html#tips.3">Issue 86, 2c Tips #3</a>
 -- Heather</font></blockquote>
<P>
John Karns:
</P>
<P><STRONG><BLOCKQuote>
Cool - thnks for the pointer.  I think I'll check it out.  I knew that
some IDE's exist for Linux, but never really took the time to look at one.
</BLOCKQuote></STRONG></P>
<P><DL><DT>
Why look at only one when you can look at over a hundred?
<DD><A HREF="http://linuxmafia.com/~rick/linux-info/applications-ides.html"
	>http://linuxmafia.com/~rick/linux-info/applications-ides.html</A>
</DL></P>

<blockquote><font color="#000066">Note we're pointing to his gathered list of numerous "integrated
development ennvironments" - the previous entry pointed to his
description answering that (1) yes we have them, lots and lots; and
(2) that if you think you're seeking one, you should make sure you
are solving the right problem first.
 -- Heather</font></blockquote>

<!-- end 6 -->
<!--     .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.     -->
<P> <A NAME="tips.7"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
<FONT COLOR="navy">Key Remapping....</FONT></H3>
Thu, 30 Jan 2003 13:37:20 -0800
<BR>Mike Orr (<a href="mailto:linux-questions-only@ssc.com?cc=jscott@sangoma.com&subject=%20Re%3A%20%5BLG%2088%5D%202c%20Tips%20%237"><em>Linux Gazette</em> Editor</a>)
<BR>Question by James Scott (jscott from sangoma.com)

<P><STRONG>
Is it possible to remap the &lt;tab&gt; key to another key on the keyboard??  One
of my co-workers has a broken left pinky and is going insane not being able
to use the tab key to complete commands.
</STRONG></P>
<P><STRONG>
I done a fair amount of searching to no avail... any help would be greatly
appreciated.
</STRONG></P>
<BLOCKQUOTE>
[Mike] 
Grr, I just read yesterday about somebody turning Scroll Lock into another
Escape key, now where was it...?
</BLOCKQUOTE>
<BLOCKQUOTE>
You can remap any key using the "loadkeys", "showkey" (singular) and "dumpkeys"
commands.  That's on the console.  You have to do additional steps for X.  See
the Keyboard and Console HOWTO
</BLOCKQUOTE>
<BLOCKQUOTE>
<A HREF="http://www.tldp.org/HOWTO/Keyboard-and-Console-HOWTO.html"
	>http://www.tldp.org/HOWTO/Keyboard-and-Console-HOWTO.html</A>
</BLOCKQUOTE>
<P><STRONG>
Thanks for the quick reply. Helps a lot.
</STRONG></P>
<P><STRONG>
James
</STRONG></P>

<!-- end 7 -->
<!--     .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.     -->
<P> <A NAME="tips.8"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
<FONT COLOR="navy">Palm magic</FONT></H3>
Sun, 2 Feb 2003 10:21:46 +0100
<BR>Ben Okopnik (<a href="mailto:linux-questions-only@ssc.com?cc=huibert_alblas@web.de&subject=%20Re%3A%20%5BLG%2088%5D%202c%20Tips%20%238">the <em>LG</em> Answer Gang</a>)
<BR>Question by Huibert Alblas (huibert_alblas from web.de)

<P>
I was desperatly trying to use my palm with the evolution mailer, recompiled everything but the kitchen sink to get Gnome2 and Gnome1.4 capplets and applets totlaly mixed up in the end, it was working, but gnome was broken, so now I'm repairing Gnome2, and then try to write the apropriate spells for my Paml connetion
</P>

<blockquote><font color="#000066">Halb uses the Sorceror distro, which refers to compiling its scripts and
packages as "casting spells".
 -- Heather</font></blockquote>
<BLOCKQUOTE>
[Ben] 
I've found the "appropriate spells" for the Palm - for my M-125 with the
USB cable, at least - to be "jpilot" and "coldsync". "jpilot" is really
well done, except for the selection interface in the "Install" menu
(select a file, click "Add". Select next file, click "Add". And so on
for, say, 50 files.) "coldsync" works at a lower level - it's great for
reinitializing user info, a quick install with <EM>or</EM> without synching,
and generally tweaking Palm comms. As an example, among the files that I
carry on the Palm, I have The Moby Shakespeare collection (all of The
Bard in one file) and Gibbon's "Decline and Fall of the Roman Empire",
volumes 1-6; both rather large (~5MB). "jpilot" refused to load them
(segfaulted). So did my brother's Wind*ws Palm desktop. "coldsync",
however, when used with the "slow sync" option, managed it just fine.
<A HREF="http://www.kde.org/">KDE</A>'s palm app, though, is severely broken (to its credit, it mentions
that in the initial screens); it hosed my Palm so hard that I had to do
a hard reset, and re-init the user (another thing that "jpilot" couldn't
handle.)
</BLOCKQUOTE>
<P><STRONG>
Yes, well thanks for the info, Jpilot and stuff works like a charm (Palm M105 the small one), but I wanted to Sync my mailadresses in evolution........ wich is based upon gnome 1.4 (c)applets, which are horible to get to play nice with the Gonme2.0 install.
</STRONG></P>
<P><STRONG>
Good to know about the big files though...
</STRONG></P>

<!-- end 8 -->
<!--     .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.     -->
<P> <A NAME="tips.9"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
<FONT COLOR="navy">Initial thoughts on ratpoison</FONT></H3>
Mon, 24 Feb 2003 09:40:55 -0700
<BR>Jason Creighton (<a href="mailto:linux-questions-only@ssc.com?cc=androflux@softhome.net&subject=%20Re%3A%20%5BLG%2088%5D%202c%20Tips%20%239">androflux from softhome.net</a>)


<P>
For those of you who don't know, ratpoison is a light (<EM>very</EM> light) window
manager. (<A HREF="http://ratpoison.sourceforge.net"
	>http://ratpoison.sourceforge.net</A>). The basic scheme is to have all
apps fullscreen, using screen-like key bindings to switch between windows.
I've been using it for about an hour or so now (Hint: Look at the
sample.ratpoisonrc in the doc directory. Don't end up hacking the source code
to change the prefix key like I did.), and I'm liking it. The best thing, of
course, is the tons of screen real estate you get without any window title
bars, borders, etc.
</P>
<P>
If you like doing everything with the keyboard or you want tons of screen real
estates, give ratpoison a whirl.
</P>
<P>
Also see this article on freshmeat: <A HREF="http://freshmeat.net/articles/view/581"
	>http://freshmeat.net/articles/view/581</A>
</P>

<!-- end 9 -->
<!--     .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.     -->
<P> <A NAME="tips.10"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
<FONT COLOR="navy">rc.local in debian</FONT></H3>
Sun, 9 Feb 2003 15:42:07 +0530
<BR>Rick Moen (<a href="mailto:linux-questions-only@ssc.com?cc=joy12@vsnl.net&cc=rick@linuxmafia.com&subject=%20Re%3A%20%5BLG%2088%5D%202c%20Tips%20%2310">the <em>LG</em> Answer Gang</a>)
<BR>Question by Joydeep Bakshi (joy12 from vsnl.net)

<P><STRONG>
If you aren't using RHL, simply edit <TT>/etc/rc.d/rc.local</TT>
</STRONG></P>
<P><STRONG>
Atul
</STRONG></P>
<P><STRONG>
but there is no such file in debian . what file should I edit in <EM>debian</EM> ?
</STRONG></P>
<P><STRONG>
thanks in advanced.
</STRONG></P>
<BLOCKQUOTE>
The Linux Oracle has pondered your question deeply.
</BLOCKQUOTE>
<BLOCKQUOTE>
And in response, thus spake the Oracle:
</BLOCKQUOTE>

<blockquote><pre>echo '#!/bin/sh' &gt; /etc/rc.local
chmod 744 /etc/rc.local
RL=`grep ':initdefault:' /etc/inittab | cut -d: -f2`
echo "LO:$RL:once:/etc/rc.local" &gt;&gt; /etc/inittab
killall -HUP init
</pre></blockquote>
<BLOCKQUOTE>
You owe the Oracle a better understanding of why subverting the SysVInit
architecture is fundamentally a bad idea in the first place.
</BLOCKQUOTE>

<!-- end 10 -->
<!--     .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.     -->
<P> <A NAME="tips.11"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
<FONT COLOR="navy">recording sounds on linux for windows</FONT></H3>
Wed, 19 Feb 2003 02:19:49 +0800
<BR>Huibert Alblas (<a href="mailto:linux-questions-only@ssc.com?cc=50258246@student.cityu.edu.hk&cc=huibert_alblas@web.de&subject=%20Re%3A%20%5BLG%2088%5D%202c%20Tips%20%2311">huibert_alblas from web.de</a>)
<BR>Question by 50258246 (50258246 from student.cityu.edu.hk)

<P><STRONG>
Hi!i'm rayho, i would like to ask how to receive sound from the microphone and
then transmit the sound from the linux os to the window os system.Also,I'm not
understand where the sound source is stored in which file in the linux os and
what hardware and software do i need to do this transmition.Thankyou for your
help!!
</STRONG></P>
<BLOCKQUOTE>
[Halb] 
Hi there,
</BLOCKQUOTE>
<BLOCKQUOTE>
This may sound a bit simple but I would do it like this:
</BLOCKQUOTE>

<blockQuote><ul>
<LI>record your sound with anything that works (grecord or something)

<LI>save as any file format you like (wav, mp3, ogg)

<LI>copy this file over to the windoze box (samba)

<LI>play file on windows (media-player, realplayer,..)
</ul></blockQuote>
<BLOCKQUOTE>
needed Hardware:
</BLOCKQUOTE>

<blockQuote><ul>
<LI>2 pc with networking cards (rj45, Wlan,..)

<LI>microphone

<LI>loudspeakers (? I looked this one up in dict.leo.org)
</ul></blockQuote>
<BLOCKQUOTE>
needed software:
</BLOCKQUOTE>

<blockQuote><ul>
<LI>Linux (any flavour you like)

<LI>Windoze
</ul></blockQuote>
<BLOCKQUOTE>
On the other hand, you might not want  to transport single files, but want to do some kind of Internet audio broadcasting or something. You might want to look into
</BLOCKQUOTE>

<blockQuote><ul>
<LI><A HREF="http://www.shoutcast.com"
	>http://www.shoutcast.com</A>

<LI><A HREF="http://www.peercast.org"
	>http://www.peercast.org</A> ( p2p radio based on the gnutella protokol, I don't know about the license, but source is available)

<LI><A HREF="http://streamerp2p.com/streamer.htm"
	>http://streamerp2p.com/streamer.htm</A> ( p2p radio GPLed)
</ul></blockQuote>
<BLOCKQUOTE>
What did you have in mind?
</BLOCKQUOTE>

<!-- end 11 -->
<!--     .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.     -->
<P> <A NAME="tips.12"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
<FONT COLOR="navy">Secure Password Authorization - NTCR ?</FONT></H3>
Fri, 14 Feb 2003 01:18:41 +0000
<BR>Jimmy O'Regan (<a href="mailto:linux-questions-only@ssc.com?cc=ursine90@msn.com&cc=jimregan@dol.ie&subject=%20Re%3A%20%5BLG%2088%5D%202c%20Tips%20%2312">jimregan from dol.ie</a>)
<BR>Question by Neil Belsky (ursine90 from msn.com)

<P>
Neil Belsky wrote:
</P>
<P><STRONG><DL><DT>
Were you ever able to solve this problem?
<DD><A HREF="../issue64/lg_mail64.html#wanted/1"
	>http://www.linuxgazette.com/issue64/lg_mail64.html#wanted/1</A>
</DL></STRONG></P>
<P>
NTCR is another name for NTLM, which is supported by fetchmail.
</P>

<!-- end 12 -->
<!--     .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.     -->
<P> <A NAME="tips.13"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
<FONT COLOR="navy">Fwd: Terminating Misbehaving Programs</FONT></H3>
Wed, 12 Feb 2003 22:48:50 -0800 (PST)
<BR>Raj Shekhar (<a href="mailto:linux-questions-only@ssc.com?cc=lunatech3007@yahoo.com&subject=%20Re%3A%20%5BLG%2088%5D%202c%20Tips%20%2313">lunatech3007 from yahoo.com</a>)


<P><STRONG>
I receieved this tip for inclusion in my HOWTO
</STRONG></P>
<P><STRONG>
<A HREF="http://geocities.com/lunatech3007/doing-things-howto.html"
	>http://geocities.com/lunatech3007/doing-things-howto.html</A>
</STRONG></P>
<P><STRONG>
However as it a bit advanced for a newbie's howto I did
not include it. i am forwarding it to you.
</STRONG></P>
<P><STRONG>
Regards
<BR>Raj
</STRONG></P>
<BLOCKQUOTE>
[C.R. Bryan III] 
Subject: Doing Things in GNU/Linux
</BLOCKQUOTE>
<BLOCKQUOTE>
Good stuff 
<IMG SRC="../gx/dennis/smily.gif" ALT=":)" 
		height="24" width="20" align="middle"> Something I can put on a firewall
machine when I put it onsite (since I leave <A HREF="http://www.apache.org/">Apache</A>
in for a status.cgi page anyway)
</BLOCKQUOTE>
<BLOCKQUOTE>
In the section "Terminating Misbehaving Programs":
</BLOCKQUOTE>
<BLOCKQUOTE><BLOCKQuote>
If the afflicted machine is on a network with
another Linux machine, or a Windows machine with
PuTTY, there are additional steps that can be taken
before hitting the Big Red Two-by-Four switch. (My
network runs RHL 6.2 on older boxes, old as in P133,
so I get practice in this every time Netscape walks
into a Java site and freezes.)
</BLOCKQuote></BLOCKQUOTE>

<blockQuote><ol>
<LI>Shell into the afflicted machine.

Use ssh if you've got it, telnet otherwise. If VNC
is installed at both ends, maybe you can use that.
Just because the local desktop is frozen doesn't
always mean that all desktop functioning is frozen.

If the machine won't log you in, obviously it's
game-over, so at that point you have to reset the
box. Often, though, especially on older boxen, it's
just X that's either frozen or in a really deep
thrashing session, and you can get a shell prompt.
Root-to-root ssh is most convenient.


<LI>Get root on the afflicted box with su.


<LI>Try to kill off just the program that's freezing
things, and try to do it nicely.

<br>&nbsp;<br>
a. If you can get X apps to forward, or you can get
a VNC window open, you can bring up kpm (the KDE
process manager), which, with all the information
presented, allows you to pinpoint just the app to
kill with a right-click. Try several times to get it
to go away, starting with Hangup, then Terminate,
then Kill. The more of a chance you give the program
to clean up its exit, the less garbage you'll leave
lying around in the system.

<br>&nbsp;<br>
b. If you know the name of the program that has
gotten hung, and only one instance of it is running,
use killall. Let's assume for example that it's
netscape:

<br>&nbsp;<br>
<tt># killall -HUP netscape
<br># killall -TERM netscape
<br># killall -KILL netscape</tt>

<br>&nbsp;<br>
Killall does just that, kills off every instance of
a program that it finds. That's appropriate for
netscape, since it has a session-manager core which
is usually the part that's locked up. If you've got
a dozen xterms open, and ytree running in half of
them, though, killing off every ytree might not be
what you want; often, it's the helper-app that ytree
launched that's frozen up (lynx, for instance) and
you can killall that.

<br>&nbsp;<br>
c. Use top and other shell tools to zero in on which
process to kill, then use kill.
(Here I don't have that much experience: when I need
to use top and kill, it's on a firewall without X,
where all the running processes fit in an xterm/ssh
window, so it's simple to fish out the pid to kill.)


<LI>If it won't kill, or you can't figure out who to
kill, or things just seem hosed at the X level, as
long as you can get root on a shell command-line,
you can tell it:

<br>&nbsp;<br>

<tt># init 3;init 5</tt>

<br>&nbsp;<br>

...and that'll do what ctrl-alt-bs would do, restart
X to a graphic login. Your underlying filesystem
will have cores and DEADJOEs left lying around from
the X-level programs that had to abort, but you
won't have to fsck everything on a dirty boot.


<LI>If you think you might have stuck ports and locks from
the killed X-level processes, and the machine
doesn't have duties that would prevent it, or if X
won't come back up, you can do a clean reboot to put
things back in order, probably in less time than
it'd take to find and free the stuck resources...

<br>&nbsp;<br>
<tt># shutdown -r now</tt>

<br>&nbsp;<br>

That'll take down the X level, giving the X programs
a chance to clean up after themselves, then the rest
of the machine, and your filesystem will be
unmounted and rebooted cleanly.
</ol></blockQuote>
<BLOCKQUOTE>
Bottom line: if you can shell or VNC into the frozen
machine, there are things you can do to avoid losing
data in the innocent processes you're running in X
or corrupting your filesystem. You can even do some
of these things from Windows if you have the right
tools (telnet, ssh, PuTTY, VNC), as long as you have
two or more machines on the same network.
</BLOCKQUOTE>
<BLOCKQUOTE>
How much of this you think might be appropriate to a
newbie-help, I don't know, but that's my experience,
anyway 
<IMG SRC="../gx/dennis/smily.gif" ALT=":)" 
		height="24" width="20" align="middle">
</BLOCKQUOTE>

<!-- end 13 -->
<!--     .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.     -->
<P> <A NAME="tips.14"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
<FONT COLOR="navy">Two sound cards</FONT></H3>
Wed, 5 Feb 2003 11:52:43 +0100
<BR>Dean Buhrmann (<a href="mailto:linux-questions-only@ssc.com?cc=d.buhrmann@chello.nl&subject=%20Re%3A%20%5BLG%2088%5D%202c%20Tips%20%2314">d.buhrmann from chello.nl</a>)



<blockquote><font color="#000066">In reference to:
<a href="http://www.linuxgazette.com/issue87/lg_tips.html#tips.1">Issue 87, 2c Tips #1</a>
 -- Heather</font></blockquote>
<P>
Hello,
</P>
<P>
Great how you tackled this problem. I have a simple Sounblaster 16 card.
This card (with this chipset) appeared to be multichannel.
</P>
<P>
I play online games on the internet (Tribes2) and we use for communication a
voice communication program (Teamspeak2). I also want to hear the sound of
the game. Teamspeak2 is able to use a different channel (dsp0/dsp1).
</P>
<P>
So i adress the gamesound to dev/dsp1 and the voice communication to
<TT>/dev/dsp0.</TT> I couldn't get it working with alsa drivers, but others with
different soundcards can. So i used the OSS driver. It works great with only
one soundcard.
</P>
<P>
If a program only wants to adress the default <TT>/dev/dsp</TT> (dsp0) and you want to
let it use <TT>/dev/dsp1</TT> you can change the link <TT>/dev/dsp</TT> --&gt; <TT>/dev/dsp1</TT>
</P>
<P>
More information on <A HREF="http://www.teamspeak.org"
	>http://www.teamspeak.org</A>
</P>
<P>
Linux is a very stable platform for games and there is now a (free)
voicecommunication program too.
</P>

<!-- end 14 -->
<!-- *** BEGIN copyright *** -->
<hr>
<CENTER><SMALL><STRONG>
<h5>This page edited and maintained by the Editors of <I>Linux Gazette</I><br>HTML script maintained by <A HREF="mailto:star@starshine.org">Heather Stern</a> of Starshine Technical Services, <A HREF="http://www.starshine.org/">http://www.starshine.org/</A>
<br>Copyright &copy; 2003
<br>Copying license <A HREF="http://www.linuxgazette.com/copying.html">http://www.linuxgazette.com/copying.html</A>
<BR>Published in Issue 88 of <i>Linux Gazette</i>, March 2003</H5>
</STRONG></SMALL></CENTER>
<!-- *** END copyright *** -->
<HR>


<H3>Contents:</H3>
<dl>
<dt><a href="#tag/greeting"
	><strong>&para;: Greetings From Heather Stern</strong></A></dl>

<DL>
<!-- index_text begins -->
<dt><A HREF="#tag.1"
	><img src="../gx/dennis/qbub.gif" height="28" width="50"
	  alt="(?)" border="0"
	><strong>How can I turn on pc into two (effecively)?</strong></a>
<dt><A HREF="#tag.2"
	><img src="../gx/dennis/qbub.gif" height="28" width="50"
	  alt="(?)" border="0"
	></a>H/W detection in Debian ? --or--
<dd><A HREF="#tag.2"
	><strong>There's More Than One Way To Detect It</strong></a>
<br>TMT1WTDI: not just for perl hackers anymore
<dt><A HREF="#tag.3"
	><img src="../gx/dennis/qbub.gif" height="28" width="50"
	  alt="(?)" border="0"
	></a>Regarding the paper entitled "Maintainability of the Linux Kernel" --or--
<dd><A HREF="#tag.3"
	><strong>Linux Kernel Maintainability: Bees Can't Fly</strong></a>
<br>but a Hurd of them might go Mach speed...
<dt><A HREF="#tag.4"
	><img src="../gx/dennis/qbub.gif" height="28" width="50"
	  alt="(?)" border="0"
	><strong>routing to internet from home . Kernel 2.4</strong></a>
<!-- index_text ends -->
</DL>
<!--     .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.     -->
<A NAME="tag/greeting"><HR WIDTH="75%" ALIGN="center"></A>
<H3 align="left"><img src="../gx/dennis/hbubble.gif" 
	height="50" width="60" alt="(&para;) " border="0"
	>Greetings from Heather Stern</H3>
<!-- begin hgreeting -->
<p><em>Whew</em>!  One thing I can say, there was a lot of good stuff this month.  There's so many good things to say and I just can't edit them all.

<p>But don't you worry.  We've got something for everyone this month.  Newbies can enjoy a list of a bunch of apps designed to help setup be a little more fun (or at minimum, a little less headache).  The intelligencia can see what the Gang thinks of some academic notions for the future of kernels.  And everyone hungering for more about routing has something keen to get their teeth into.  Experimenters... nice trick with two monitors, here.

<p>In the world of Linux there's more to politicking than just the DMCA guys trying to get us to stop ever looking at "their" precious copyrighted works ever again.   Among the Linux kernel folk there's snatches here and there of an ongoing debate about source code control systems.   You see, BitKeeper has the power to do grand things... but for people who have <em>not</em> decided that they hate CVS, it's a bit of a pain to pull out small patches.   For people who don't qualify to use BitKeeper under their only-almost-free license (you can't use it if you work for someone who produces a competing sourcecode control system, if I read things right ... thus anyone who works for RH shouldn't, et al.) this is a bad thing.

<p>For that matter I'm a bit of a programmer myself, but if I'm going to even 
glance in the kernel's direction, I need much smaller peices to chew on, and I really didn't want to spend the better part of a month learning yet another source system.  (Not being paid for doing so, being a guiding factor in this case.)  
I had to thrash around the net quite a bit to get a look at the much smaller portion of the whole.

<p>So some of the kernel gang wrote some scripts to help them with using the somewhat friendly web interface (folks, these definitions of "friendly" still need a lot of work) and Larry threatened to close down bkweb if that bandwidth hit got too high.   In my opinion, just about the worst thing he could have said at that moment - it highlights why people are trying to escape proprietary protocols - they want features, but Linux folk, having tasted the clean air of freedom, don't want to be locked indoors just because a roof over their code's head is good to have at times.  

<p>Don't get me wrong.  Giant public mirrors of giant public projects are great things, and as far as I can tell BitKeeper is still committed to a friendly hosting of the 2.5.x kernel source tree, among a huge number of other projects.  Likewise SourceForge.  But we also need ways to be sure that the projects themselves can outlast the birth and death of companies, friendships, or the interest of any given individual to be a part of the project.  The immortality of software depends on the right to copy it as much as you need to and store it anywhere or in any form you like.  If the software you are using isn't immortal in this sense then neither are the documents, plans, hopes, or dreams that you store in it.  More than the "viral freedom" clauses in the GPL or the "use it anywhere, just indemnify us for your dumb mistakes" nature of the MIT and BSDish licenses, this is the nature of the current free software movement.  And you can quote me on that.

<p>Readers, if you have any tales of your own escapes from proprietary environments into Linux native software, especially any where it has made your life a little more fun, then by all means, we'd love to see your articles and comments.  Thank you, and have a great springtime.
<!-- end hgreeting -->
<!--     .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.     -->
<A NAME="tag.1"><HR WIDTH="75%" ALIGN="center"></A>
<!-- begin 1 -->
<H3 align="left"><img src="../gx/dennis/qbubble.gif" 
	height="50" width="60" alt="(?) " border="0"
	>How can I turn on pc into two (effecively)?</H3>


<p><strong>From Chris Gibbs 
</strong></p> 
<p></strong></p>

<p align="right"><strong>Answered By  Jimmy O'Regan, Jim Dennis
</strong></p>
<P><STRONG>
<IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> 
Hi ya,
</STRONG></P>
<P><STRONG>
I have a dual headed system. I am not really happy with xinerama cause
having a different resolution on each monitor does not make sense for
me, and having two seperate Desktops for a single X session seems
limiting.  Neither solution works well for apps like kwintv.
</STRONG></P>
<P><STRONG>
But this is linux!  I don't just want to have cake and eat it I want the
factory that makes it!  What I really want is to have a ps2 mouse and
keyboard associated with one monitor and associate a usb mouse and
keyboard with the other monitor and have ability not just to run X from
each, but to have text mode available also.
</STRONG></P>
<P><STRONG>
Idea also being I could have text mode session and X session at the same
time, that way I can have kwintv fullscreen and play advmame in svga
mode full screen at the same time
<IMG SRC="../gx/dennis/smily.gif" ALT=";-)" 
		height="24" width="20" align="middle">
</STRONG></P>
<P><STRONG>
So how do I initialise the second video card (one pci, one agp) so I can
make it tty2 monitor or similar?
</STRONG></P>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Jimmy] 
Google
</blockQuote>
<blockQuote>
<A HREF="http://www.google.com/linux?hl=en&amp;lr=&amp;ie=UTF-8&amp;oe=utf-8&amp;q=two+keyboards+two+mice+two+keyboards&amp;btnG=Google+Search"
	>http://www.google.com/linux?hl=en&amp;lr=&amp;ie=UTF-8&amp;oe=utf-8&amp;q=two+keyboards+two+mice+two+keyboards&amp;btnG=Google+Search</A>
</blockQuote>
<blockQuote>
came up with these links:
<A HREF="http://www.ssc.com/pipermail/linux-list/1999-November/028191.html"
	>http://www.ssc.com/pipermail/linux-list/1999-November/028191.html</A>
<A HREF="http://www.linuxplanet.com/linuxplanet/tutorials/3100/1"
	>http://www.linuxplanet.com/linuxplanet/tutorials/3100/1</A>
</blockQuote>
<P><STRONG>
<IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> 
Am I greedy or wot?
</STRONG></P>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Jimmy] 
Nah, cost effective. "Able to maximise the potential of sparse
resources". Some good CV-grade B.S.
</blockQuote>
<P><STRONG>
<IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> 
These links are to articles about X, I already know I can have X however
I want it accross the monitors.  Thats easy...
</STRONG></P>
<P><STRONG>
What I want is seperate text mode consoles, so at risk of repeating
myself how do I initialise the second video card for text mode (not for
X) and how do I associate it with specific tty's
</STRONG></P>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Jimmy] 
Well, you could set up the first set for the console and use the second
for X Okay, not what you asked 
<IMG SRC="../gx/dennis/smily.gif" ALT=":)" 
		height="24" width="20" align="middle">. So, to your <EM>actual</EM> question.
</blockQuote>
<blockQuote>
The device should be <TT>/dev/fb1</TT>, or <TT>/dev/vcs1</TT> and <TT>/dev/vcsa1</TT> on older
kernels. You should have better luck with a kernel with Framebuffer
support - according to the Linux Console Project
(<A HREF="http://linuxconsole.sourceforge.net"
	>http://linuxconsole.sourceforge.net</A>) there's hotplug support &amp;
multiple monitor support. The Framebuffer HOWTO has a section on setting
up two consoles (<A HREF="http://www.tldp.org/HOWTO/Framebuffer-HOWTO-14.html"
	>http://www.tldp.org/HOWTO/Framebuffer-HOWTO-14.html</A>).
The example focuses on setting up dual headed X again, but it should
contain what you need - "an example command would be "con2fb <TT>/dev/fb1</TT>
<TT>/dev/tty6</TT>" to move virtual console number six over to the second
monitor. Use Ctrl-Alt-F6 to move over to that console and see that it
does indeed show up on the second monitor."
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [JimD] 
It's serendipitous that yhou should ask this question since I just came
across a slightly dated article on how to do this:
</blockQuote>
<blockQuote><BLOCKQuote>
<A HREF="http://www.linuxplanet.com/linuxplanet/tutorials/3100/1"
	>http://www.linuxplanet.com/linuxplanet/tutorials/3100/1</A>
</BLOCKQuote></blockQuote>
<blockQuote>
Some of the steps in this process might be unnecessary in newer
versions of XFree86 and the kernel.  I can't tell you for sure as I
haven't tried this.  Heck, I haven't even gotten around to configuring
a dual headed Xinerama system, yet.
</blockQuote>

<!-- end 1 -->
<!--     .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.     -->
<A NAME="tag.2"><HR WIDTH="75%" ALIGN="center"></A>
<!-- begin 2 -->
<H3 align="left"><img src="../gx/dennis/qbubble.gif" 
	height="50" width="60" alt="(?) " border="0"
	>There's More Than One Way To Detect It</H3>
<H4 ALIGN="center">TMT1WTDI: not just for perl hackers anymore</H4>


<p><strong>From Joydeep Bakshi 
</strong></p> 
<p></strong></p>
<!-- ::
There's More Than One Way To Detect It
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
TMT1WTDI: not just for perl hackers anymore
:: -->

<p align="right"><strong>Answered By  Rick Moen, Dave Bechtel, Heather Stern
</strong></p>

<blockquote><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Heather] All this is in response to last month's
<a href="../issue87/lg_mail.html#wanted.1">Help Wanted #1</a>
</blockquote>
<P><STRONG>
<IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> 
1) kudzu is the DEFAULT H/W detection tool in RH &amp; harddrake in MDK.
is there anything in debian?
</STRONG></P>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Rick] 
As usual, the <A HREF="http://www.debian.org/">Debian</A> answer is "Sure, which ones do you want?"
</blockQuote>
<blockQuote><dl><dt>
discover
<dd>
Hardware identification system (thank you, Progeny Systems, Inc.),
for various PCI, PCMCIA, and USB devices.
</dl></blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Dave]
</blockQuote>

<blockquote><pre>apt-get update; apt-get install discover

(' apt-cache search discover ': )
discover - hardware identification system
discover-data - hardware lists for libdiscover1
libdiscover-dev - hardware identification library development files
libdiscover1 - hardware identification library
</pre></blockquote>

<blockquote><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Heather] Worthwhile to also search on the words "detect" and "config" and "cfg"
since many of the configurators or their helper apps have those words
in their package names.
</blockquote>
<P><STRONG>
<IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> 
discover only detects the h/w, but kudzu does one task extra that is it also
configure the h/w. do u have any info. whether the latest version of discover
do this auto-config. ? ( I am in debian 3.0).
</STRONG></P>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Rick] 
I'm unclear on what you mean by "configure the hardware".  Discover
scans the PCI, USB, IDE, PCMCIA, and SCSI buses.  (Optionally, it scans
ISA devices, and the parallel and serial ports.)  It looks (by default)
for all of these hardware types at boot time:  bridge cdrom disk
ethernet ide scsi sound usb video.  Based on those probes, it does
appropriate insmods and resetting of some device symlinks.
</blockQuote>
<blockQuote>
What problem are you trying to solve?
</blockQuote>

<blockquote><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Heather] For many people there's a bit of a difference between "the machine
notices the hardware" and "my apps which want to use a given piece of
hardware work without me having to touch them."  In fact, finishing up
the magic that makes the second part happen is the province of various
apps that help configure XFree86 (SaX2/SuSE, Xconfigurator/RedHat,
XF86Setup and their kindred) - some of which are better at having that
magical "just works" feeling than others.  Others are surely called on
by the fancier installation systems too.  Thus Rick has a considerable
list below.
</blockquote>
<blockquote>For ide, scsi, cdrom it all seems rather simple; either the drives work,
or they don't.  I haven't seen any distros auto-detect that I have a cd
burner and do any extra work for that, though.
</blockquote>
<blockquote>PCMCIA and USB are both environments that are well aware of the hot
swapping uses they're put to - generally once your cardbus bridge and
usb hub types are detected everything else goes well. or your device is
too new to have a driver for its part of the puzzle.  You must load up
(or have automatically loaded by runlevels) the userland half of the
sypport, though. (package names: pcmcia-cs, usbmgr)
</blockquote>
<blockquote>There are apps to configure X and one can hope that svgalib "just works"
on its own since it has some effort to video detection built-in.  If you
don't like what you get, try using a framebuffer enabled kernel, then
tell X to use the framebuffer device - slower, but darn near guaranteed
to work.  svgalib will spot your framebuffer and use it.  My favorite
svgalib app is zgv, and there are some games that use it too.
</blockquote>
<blockquote>I know of no app which is sufficiently telepathic to decide what your
network addresses should be, the first time through.  However, if you're
a mobile user, there are a number of apps that you can train to look for
your few favorite hosting gateways and configure the rest magically from
there, using data you gave them ahead of time.  PCMCIA schemes can also
be used to handle this.
</blockquote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Rick] 
<dl><dt>
kudzu, kudzu-vesa
<dd>
Hardware-probing tool (thank you, <A HREF="http://www.redhat.com/">Red Hat</A> Software, Inc.) intended to
be run at boot time.  Requires hwdata package.  kudzu-vesa is the
VBE/DDC stuff for autodetecting monitor characteristics.
</dl></blockQuote>
<blockQuote><dl><dt>
mdetect
<dd>
Mouse device autodetection tool.  If present, it will be used to aid
XFree86 configuration tools.
</dl></blockQuote>
<blockQuote><dl><dt>
printtool
<dd>
Autodetection of printers and PPD support, via an enhanced version of
Red Hat Software's Tk-based printtool.  Requires the pconf-detect
command-line utility for detecting parallel-port, USB, and
network-connected printers (which can be installed separately as
package pconf-detect).
</dl></blockQuote>
<blockQuote><dl><dt>
read-edid
<dd>
Hardware information-gathering tool for VESA PnP monitors.  If
present, it will be used to aid XFree86 configuration tools.
</dl></blockQuote>

<blockquote><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Heather] Used alone, it's an extremely weird way to ask the monitor what its
preferred modelines are.  Provided your monitor is bright enough to
respond with an EDID block, the results can then be used to prepare
an optimum X configuration.  I say "be used" for this purpose because
the results are very raw and you really want one of the apps that
configure X to deal with this headache for you.  Trust me - I've used
it directly a few times.
</blockquote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Rick] 
<dl><dt>
sndconfig
<dd>
Sound configuration (thank you, Red Hat Software, Inc.), using isapnp
detection.  Requires kernel with OSS sound modules.  Uses kudzu,
aumix, and sox.
</dl></blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Dave] 
BTW, Knoppix also has excellent detection, and is also free and
Debian-based:
<A HREF="ftp://ftp.uni-kl.de/pub/linux/knoppix"
	>ftp://ftp.uni-kl.de/pub/linux/knoppix</A>
</blockQuote>

<blockquote><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Heather] Personally I found his sound configuration to be the best I've
encountered;  SuSE does a pretty good job <EM>if</EM> your card is supported
under ALSA.
</blockquote>
<blockquote>When you decide to roll your own kernel, it's critical to doublecheck
which of the three available methods for sound setup you're using, so
that you can compile the right modules in - ALSA, OSS, or kernel-native
drivers.  Debian's make-kpkg facility makes keeping extra packages that
depend directly on kernel parts - like pcmcia and alsa - able to keep in
sync with your customizations, by making it easy for you to prepare the
modules .deb file to go with your new kernel.
</blockquote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Rick] 
<dl><dt>
hotplug
<dd>
USB/PCI device hotplugging support, and network autoconfig.
</dl></blockQuote>
<blockQuote><dl><dt>
nictools-nopci
<dd>
Diagnostic and setup tools for many non-PCI ethernet cards
</dl></blockQuote>
<blockQuote><dl><dt>
nictools-pci
<dd>
Diagnostic and setup tools for many PCI ethernet cards.
</dl></blockQuote>
<blockQuote><dl><dt>
mii-diag
<dd>
"A little tool to manipulate network cards" (examines and sets the MII
registers of network cards).
</dl></blockQuote>
<P><STRONG>
<IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> 
2) I have installed <EM>kudzu</EM> in debian 3.0 , but it is not running as a
service. it needs to execute the command <EM>kudzu</EM> manually.
</STRONG></P>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Rick] 
No, pretty much the same thing in both cases.  You're just used to
seeing it run automatically via a System V init script in Red Hat.  If
you'd like it to be done likewise in Debian, copy <TT>/etc/init.d/skeleton</TT>
to <TT>/etc/init.d/kudzu</TT> and modify it to do kudzu stuff.  Then, use
update-rc.d to populate the <TT>/etc/rc?.d/</TT> runlevel directories.
</blockQuote>
<P><STRONG>
<IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> 
Finally the exact solution. I was searching 4 this looong.
Rick, can't understand howto give u thanks.
take care.
</STRONG></P>
<P><STRONG>
<IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> 
moreover it couldn't detect my epson C21SX printer. but under MDK 9.0
kudzu detected the printer .
</STRONG></P>

<blockquote><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Heather] Perhaps it helpfully informed you what it used to get the printer going?
Many of the rpm based systems are using CUPS as their print spooler;
it's a little smoother under cups than some of its competitors, to have
it auto-configure printers by determining what weird driver they need
under the hood.  My own fancy Epson color printer needed gimp-print,
which I used the linuxprinting.org "foomatic" entries to link into my
boring little lpd environment happily.  Some printers are supported
directly by ghostscript... which you will need anyway, since many GUI
apps produce postscript within their "print" or "print to file" features.
</blockquote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Rick] 
Would that be an Epson Stylus C21SX?  I can't find anything quite like
that name listed at:
</blockQuote>
<blockQuote><BLOCKQuote>
<A HREF="http://www.linuxprinting.org/printer_list.cgi?make=Epson"
	>http://www.linuxprinting.org/printer_list.cgi?make=Epson</A>
</BLOCKQuote></blockQuote>
<blockQuote>
I would guess this must be a really new, low-end inkjet printer.
</blockQuote>
<blockQuote>
The version of kudzu (and hwdata) you have in Debian's stable branch
(3.0) is probably a bit old.  That's an inherent part of what you always
get on the stable branch.  If you want versions that are a bit closer to
the cutting edge, you might want to switch to the "testing" branch,
which is currently the one named "sarge".   To do that, edit
<TT>/etc/apt/sources.list</TT> like this:
</blockQuote>

<blockquote><pre>deb http://http.us.debian.org/debian testing main contrib non-free
deb http://non-us.debian.org/debian-non-US testing/non-US main contrib non-free
deb http://security.debian.org testing/updates main contrib non-free
deb http://security.debian.org stable/updates main contrib non-free
</pre></blockquote>
<blockQuote>
Then, do "apt-get update &amp;&amp; apt-get dist-upgrade".  Hilarity ensues.  
<IMG SRC="../gx/dennis/smily.gif" ALT=";-&gt;" 
		height="24" width="20" align="middle">
</blockQuote>
<blockQuote>
(OK, I'll be nice:  This takes you <em>off</em> Debian-stable and onto a branch
with a lower commitment on behalf the Debian project to keep everything
rock-solid, let alone security-updated.  But you might like it.)
</blockQuote>
<P><STRONG>
<IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> 
a nice discussion. thanks a lot.
</STRONG></P>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Rick] 
All of those information items are now in my cumulative Debian Tips
collection, <A HREF="http://linuxmafia.com/debian/tips"
	>http://linuxmafia.com/debian/tips</A> .  (Pardon the dust.)
</blockQuote>
<P><STRONG>
<IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> 
ok, thanks a lot. u have clarified evrything very well. now I must not have
any prob. regarding auto-detection in deb..
</STRONG></P>
<P><STRONG>
Great site !
</STRONG></P>

<blockquote><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Heather] For anyone looking at this and thinking "Oy, I don't already have debian
installed, can I avoid this headache?" - Yes, you probably can, for a
price.  While debian users from both commercial and
homegrown computing environments alike get the great upgrade system,
this is where getting one of the commercial variants of Debian can be
worth the bucks for some people.  Note that commercial distros usually
come with a bunch of software which is definitely not free - and not
legal to copy for your pals.  How easy they make it to seperate out what
you could freely tweak, rewrite, or give away varies widely.
</blockquote>
<blockquote><dl><dt>Libranet
  <dd><A HREF="http://www.libranet.com"
	>http://www.libranet.com</A>
  <br>Canadian company, text based installer based on but just a little more
  tuned up than the generic debian one.  Installs about a 600 MB "base"
  that's very usable then offers to add some worthwhile software kits
  on your first boot.
</dL></blockquote>
<blockquote><dl><dt>Xandros
  <dd><A HREF="http://www.xandros.com"
	>http://www.xandros.com</A>
  <br>The current bearer of the torch that Corel Linux first lit.  Reviews
  about it sing its newbie-friendly praises.
</dl></blockquote>
<blockquote><dl><dt>Lindows
  <dd><A HREF="http://www.lindows.com"
	>http://www.lindows.com</A>
  <br>Mostly arriving pre-installed in really cheap Linux machines near you
  in stores that you just wouldn't think of as computer shops.  But it
  runs MSwin software out of the box too.
</dl></blockquote>
<blockquote><dl><dt>Progeny
  <dd><A HREF="http://www.progenylinux.com"
	>http://www.progenylinux.com</A>
  <br>More into offering professional services for your corporate or perhaps
  even industrial Linux needs than particularly a distribution anymore,
  they committed their installer program to the auspices of the Debian
  project.  So it should be possible for someone to whip up install
  discs that use that instead of the usual geek-friendly textmenu
  installer.
</dl></blockquote>
<blockquote>If you find any old Corel Linux or Stormix discs lying around, they'll make
an okay installer, provided your video card setup is old enough for them
to deal with.  After they succeed you'll want to poke around, see what
they autodetected, takes some notes, then upgrade the poor beasties to
current Debian.
</blockquote>
<blockquote>In a slightly less commercial vein,
</blockquote>
<blockquote><dl><dt>Knoppix
  <dd><A HREF="http://www.knopper.net/knoppix"
	>http://www.knopper.net/knoppix</A>
  <br>[Base page in German, multiple languages available] while not strictly
  designed as a distro for people to install, has <EM>great</EM> hardware
  detection in its own accord, and a crude installer program available.
  At minimum, you can boot from its CD, play around a bit, and take
  notes now that it has detected and configured itself.  A runs-from-CD
  distribution.  If you can't take the hit from downloading a 700 MB
  CD all at once - it takes hours and hours on my link, and I'm faster
  than most modems - he lists a few places that will sell a recent disc
  and ship it to you.
</dl></blockquote>
<blockquote><dl><dt>Good-Day GNU-Linux
  <dd><A HREF="http://ggl.good-day.net"
	>http://ggl.good-day.net</A>
  <br>LWN's pointer went stale but this is where it moved to; the company
  produced sylpheed and has some interesting things bundled in this.
  It also looks like they preload notebooks, but I can't read japanese
  to tell you more.
</dl></blockquote>
<blockquote>And of course the usual Debian installer discs.
</blockquote>
<blockquote>Anytime you can ask a manufacturer to preload linux - even if you plan
to replace it with another flavor - let them.  You will tell them that
you're a Linux and not a Windows user, and you'll get to look at the
preconfiguration they put in.  If they had to write any custom drivers,
you can preserve them for your new installation.  Likewise whatever time
they put into the config files.
</blockquote>
<blockquote>There's a stack more at the LWN Distributions page
(<A HREF="http://old.lwn.net/Distributions"
	>http://old.lwn.net/Distributions</A>) if you search on the word Debian,
although many are localize, some are specialty distros, and a few are
based on older forms of the distro.
</blockquote>

<!-- end 2 -->
<!--     .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.     -->
<A NAME="tag.3"><HR WIDTH="75%" ALIGN="center"></A>
<!-- begin 3 -->
<H3 align="left"><img src="../gx/dennis/qbubble.gif" 
	height="50" width="60" alt="(?) " border="0"
	>Linux Kernel Maintainability: Bees Can't Fly</H3>
<H4 ALIGN="center">but a Hurd of them might go Mach speed...</H4>


<p><strong>From Beth Richardson 
</strong></p> 
<p></strong></p>
<!-- ::
Linux Kernel Maintainability: Bees Can't Fly
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
but a Hurd of them might go Mach speed...
:: -->

<p align="right"><strong>Answered By  Jim Dennis, Jason Creigton, Benjamin A. Okopnik, Kapil Hari Paranjape,
 Dan Wilder, Pradeep Padala, Heather Stern
</strong></p>
<P><STRONG>
Hello,
</STRONG></P>
<P><STRONG>
I am a Linux fan and user (although a newbie).  Recently I read the
paper entitled "Maintainability of the Linux Kernel"
(<A HREF="http://www.isse.gmu.edu/faculty/ofut/rsrch/papers/linux-maint.pdf"
	>http://www.isse.gmu.edu/faculty/ofut/rsrch/papers/linux-maint.pdf</A>) in a
course I am enrolled in at Colorado State University.  The paper is
essentially saying that the Linux kernel is growing linearly, but that
common coupling (if you are like me and cannot remember what kind of
coupling is what - think global variables here.) is increasing at an
exponential rate.  Side note, for what it is worth - the paper was
published in what I have been told is one of the "most respected"
software journals.
</STRONG></P>
<P><STRONG>
I have searched around on the web and have been unable to find any kind
of a reply to this paper from a knowledgeable Linux supporter.  I would
be very interested in hearing the viewpoint from the "other side" of
this issue!
</STRONG></P>
<P><STRONG>
Thanks for your time,
Beth Richardson
</STRONG></P>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [JimD] 
Basically it sounds like they're trying to prove that bees can't
fly.
</blockQuote>
<blockQuote>
(Traditional aerodynamic theories and the Bernoulli principle can't
be used to explain how bees and houseflies can remain aloft; this
is actually proof of some limitations in those theories.  In reality
the weight of a bee or a fly relative to air density means that
insect can do something a little closer to "swimming" through the
air --- their mass makes air relatively viscous to them.  Traditional
aerodynamic formulae are written to cover the case where the mass of
the aircraft is so high vs. air density that some factors can be
ignored.).
</blockQuote>
<blockQuote>
I glanced at the article, which is written in typically opaque academic
style.  In other words, it's hard to read.  I'll admit that I didn't
have the time to analyze (decipher) it; and I don't have the stature
of any of these researchers.  However, you've asked me, so I'll give
my unqualified opinion.
</blockQuote>
<blockQuote>
Basically they're predicting that maintainance of the Linux kernel
will grow increasing difficult over time because a large number of
new developments (modules, device drivers, etc) are "coupled"
(depend on) a core set of global variables.
</blockQuote>
<P><STRONG>
<IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Jason] 
Wouldn't this affect <EM>any</EM> OS? I view modules/device drives depending on a core
as a good thing, when compared to the alterative, which is depending on a wide
range on varibles. (Or perheps the writers have a different idea in mind. But
what other alterative to depending a core would there be other than depending on
a lot of things?)
</STRONG></P>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Ben] 
You said it yourself further down; "micro-kernel". It seems to be the
favorite rant of the ivory-tower CS academic (by their maunderings shall
ye know them...), although proof of this world-shattering marvel seems
to be long in coming. Hurd's Mach kernel's been out, what, a year and
more?
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Kapil] 
Here comes a Hurd of skeletons out of my closet! Being a very marginal
Hurd hacker myself, I couldn't let some of the remarks about the Hurd
pass. Most of the things below have been better written of elsewhere
by more competent people (the Hurd Wiki for example,
<A HREF="http://hurd.gnufans.org"
	>http://hurd.gnufans.org</A>) but here goes anyway...
</blockQuote>
<blockQuote>
The Mach micro-kernel is what the Hurd runs on the top of. In some
ways Hurd/Mach is more like <A HREF="http://www.apache.org/">Apache</A>/Linux. Mach is <EM>not</EM> a part of the
Hurd. The newer Hurd runs over the top of a version of Mach built
using Utah's "oskit". Others have run the "Hurd" over "L-4" and other
micro-kernels.
</blockQuote>
<blockQuote>
The lack of <EM>hardware</EM> and other support in the existing micro-kernels
is certainly <EM>one</EM> of things that is holding back the common
acceptance of the Hurd. (For example neither "mach" nor "oskit" have
support for my video card--i810--for which support came late in the
Linux 2.2 series).
</blockQuote>
<blockQuote>
Now, if only Linux was written in a sufficiently "de-coupled" way to
allow the stripping away of the file-system and execution system, we
would have a good micro-kernel already! The way things are, the "oskit"
guys are perenially playing catch-up to incorporate Linux kernel
drivers. Since these drivers are not sufficiently de-coupled they are
harder to incorporate.
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [JimD] 
This suggests that the programming models are too divergent in
some ways.  For each class of device there are a small number of
operations (fops, bops, ioctl()s) that have to be supported
(open, seek, close, read, write, etc).  There are relatively few
interactions with the rest of the kernel for most of this
(which is why simple device driver coding is in a different class
from other forms of kernel hacking).
</blockQuote>
<blockQuote>
The hardest part of device driver coding is getting enough information
from a vendor to actually implement each required operation.  In some
cases there are significant complications for some very complex devices
(particularly in the case of video drivers; which, under Linux
sans framebuffer drivers, are often implemented in user space by
XFree86.)
</blockQuote>
<blockQuote>
It's hard to imagine that any one device driver would be that difficult
to port from Linux to any other reasonable OS.  Of course the fact that
there are THOUSANDS of device drivers and variants within each device
driver does make it more difficult.  It suggestst the HURD needs
thousands (or at least hundreds) of people working on the porting.
Obiviously, if five hundred HURD hackers could crank out a device
driver every 2 months for about a year --- they'd probably be caught up
with Linux device driver support.
</blockQuote>
<blockQuote>
Of course I've only written one device driver for Linux (and that was
a dirt simple watchdog driver NAS system motherboard) and helped on a
couple more (MTD/flash drivers, same hardware).  It's not so much
"writing a driver" as plugging a few new values into someone else's
driver, and reworking a few bits here or there.
</blockQuote>
<blockQuote>
One wonders if many device drivers could be consolidated into some
form of very clever table-driven code.  (Undoubtedly what the UDDI
movement of a few years ago was trying to foist on everyone).
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Kapil] 
One the other side Linux "interferes too much" with user processes
making Hurd/Linux quite hard and probably impossible---but one can
dream...
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [JimD] 
Linux was running on Mach (mkLinux) about 5 years ago.  I seem to
recall that someone was running a port of Linux (or mkLinux) on
an L4 microkernel about 4 years ago (on a PA RISC system if I
recall correctly).
</blockQuote>
<blockQuote>
It's still not HURD/Linux --- but, as you say, it could (eventually) be.
</blockQuote>
<blockQuote>
Linux isn't really monolithic, but it certainly isn't a microkernel.
This bothers purists; but it works.
</blockQuote>
<blockQuote>
Future releases of Linux might focus considerably more on restructing
the code, providing greater modularity and massively increasing the
number of build-time configuration options.  Normal users (server and
workstation) don't want more kernel configuration options.  However,
embedded systems and hardware engineers (especially for the big
NUMA machines and clustering system) <EM>need</EM> them.  So the toolchain
and build environment for the Linux kernel will have to be refined.
</blockQuote>
<blockQuote>
As for features we don't have yet (in the mainstream Linux kernel):
translucent/overlay/union filesystems, transparent process checkpoint
and restore,  true swapping (in addition to paging, might come
naturally out of checkpointing), network console, SSI (system
system image) HA clustering (something like VAX clusters would be
nice from what I hear), and the crashdump, interactive debuggers,
trace toolkit, dprobes and other stuff that was "left out" of
2.5 in the later stages before the feature freeze last year.
</blockQuote>
<blockQuote>
I'm sure there are things I'm forgetting and others that I've never
even thought of.  With all the journaling, EAs and ACLs, and the LSM
hooks and various MAC (mandatory access contol) mechanisms in LIDS,
SELinux, LOMAC, RSBAC and other patches, we aren't missing much that
was ever available in other forms of UNIX or other server operating
systems.  (The new IPSec and crypto code will also need considerable
refinement).
</blockQuote>
<blockQuote>
After that, maybe Linux really will settle down to maintenance;
to optimization, restructuring, consolidation, and dead code
removal.  Linus will might find that stuff terminally boring and
move on to some new project.
</blockQuote>
<P><STRONG>
<IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [JimD] 
What else is there to add the kernel?
</STRONG></P>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Pradeep] 
Like my advisor says, Every thing that is never thought before. 
<IMG SRC="../gx/dennis/smily.gif" ALT=":-)" 
		height="24" width="20" align="middle">
Lot of people feel the same about systems research. I am planning to
specialize in systems. What do you guys think about systems research?
Is is as pessimistic as Rob Pike sounds?
<A HREF="http://www.cs.bell-labs.com/who/rob/utah2000.pdf"
	>http://www.cs.bell-labs.com/who/rob/utah2000.pdf</A>
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Dan] 
Some would say, "streams". (he ducks!)
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [JimD] 
LiS is there for those that really need it.  It'll probably never be
in the mainstream kernel.  However, I envision something a like a cross
between the <A HREF="http://www.debian.org/">Debian</A> APT system and the <A HREF="http://www.freebsd.org/">FreeBSD</A> ports system (or LNX-BBCs
Gar or Gentoo's source/package systems) for the kernel.
</blockQuote>
<blockQuote>
In this case some niche, non-mainstream kernel patches would not be
included in Linus' tarball, but hooks would be found in a vendor
augmented kbuild (and/or Makefile collection) that could present
options for many additional patches (like the FOLK/WOLK {Fully,Working}
OverLoaded Kernel).  If you selected any of these enhancements then the
appropriate set of patches would be automatically fetched and applied,
and any submenus to the configuration dialog would appear.
</blockQuote>
<blockQuote>
Such a system would have the benefit of allowing Linus to keep working
exactly as he does now, keeping pristine kernels, while making it vastly
easier for sysadmins and developers to incorporate those patches that
they want to try.
</blockQuote>
<blockQuote>
If it was done <EM>right</EM> it would be part of UnitedLinux, <A HREF="http://www.redhat.com/">Red Hat</A>, and
Debian.  There would be a small independent group that would maintain
the augmented build system.
</blockQuote>
<blockQuote>
The biggest technical hurdle would be patch ordering.  In some cases
portions of some patches might have to be consolidated into one or more
patches that exist solely to prevent unintended dependency loops.  We see
this among Debian GNU/Linux patches fairly often --- though those are
binary package dependencies rather than source code patch dependencies.
We'd never want a case where you <EM>had</EM> to include LiS patches because
the patch maintainer applied it first in his/her sequence and one of
its changes became the context for another patch --- some patch that
didn't <EM>functionally</EM> depend on LiS but only seemed to for context.
</blockQuote>
<blockQuote>
I think something like this was part of Eric S. Raymond's vision for
his ill-fated CML2.  However, ESR's work wasn't in vain; a kbuild
system in C was written and will be refined over time.  Eventually it
may develop into something with the same features that he wanted to
see (though it will take longer).
</blockQuote>
<blockQuote>
As examples of more radical changes that some niches might need or want
in their kernels: there used to be a suite of 'ps' utilities that
worked without needing <TT>/proc.</TT>  The traditional ps utils worked by
walking through <TT>/dev/kmem</TT> traversing a couple of data structures there.
I even remember seeing another "devps" suite, which provided a simple
device interface alternative to proc.  The purpose of this was to allow
deeply embedded, tightly memory constrained kernels to work in a
smaller footprint.  These run applications that have little or no need
for some of the introspection that is provided by <TT>/proc</TT> trees, and have
only the most minimal process control needs. It may be that <TT>/proc</TT> has become
so interwoven into the Linux internals that a kernel simply can't be built
with out it (that the build option simply affects whether <TT>/proc</TT> is
visible from userspace).  These embedded systems engineers might still
want to introduce a fair number of #defines to optionally trim out
large parts of <TT>/proc.</TT>  Another example is the patch I read about that
effectively refines the printk macro as a C comment; thus making a
megabyte (uncompressed) of <TT> prink()</TT>' calls disappear in the
pre-processor pass.
</blockQuote>
<blockQuote>
These are things that normal users (general purpose servers and
workstations) should NOT mess with.  Things that would break a variety
of general purpose programs.  However, they can be vital to some
niches.  I doubt we'll ever see Linux compete with eCOS on the low end;
but having a healthy overlap would be good.
</blockQuote>
<P><STRONG>
<IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [JimD] 
Are there any major 32 or 64
bit processors to which Linux has not been ported?
</STRONG></P>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Ben] 
I don't mean to denigrate the effort of the folks that wrote Hurd,
but... so what? Linux serenely rolls on (though <EM>how</EM> something as
horrible, antiquated, and useless as a monolithic kernel can hold its
head up given the existence of The One True Kernel is a puzzle), and
cooked spaghetti still sticks to the ceiling. All is (amazingly) still
right with the world.
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Jason] 
You know, every time I get to thinking about what the Linux kernel should have,
I find out it's in 2.5. Really. I was thinking, Linux is great but it needs
better security, more than just standard linux permissions. Then I look at 2.5:
Linux Security Modules. Well, we need a generic was to assign attributes to
files, other then the permission bits. 2.5 has extened attribues (name:value
pairs at the inode level) and extended POSIX ACLs.
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Ben] 
That's the key, AFAIC; a 99% solution that's being worked on by
thousands of people is <EM>miles</EM> better than a 100% solution that's still
under development. It's one of the things I love most about Linux; the
amazing roiling, boiling cauldron of creative ideas I see implemented in
each new kernel and presented on <A HREF="http://www.freshmeat.net/">Freshmeat</A>. 
<IMG SRC="../gx/dennis/smily.gif" ALT="&lt;grin&gt;" 
		height="24" width="20" align="middle"> The damn thing's
alive, I tell ya.
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Kapil] 
What you are saying is true and is (according to me) <EM>the</EM> reason why
people will be running the Hurd a few years from now!
</blockQuote>
<blockQuote>
The point is that many features of micro-kernels (such as a
user-process running it's own filesystem and execution system a la
user-mode-linux) are becoming features of Linux. At some point folks
will say "Wait a minute! I'm only using the (micro) kernel part of
Linux as root. Why don't I move all the other stuff into user space?"
At this point they <EM>will</EM> be running the Hurd/Linux or something like
it.
</blockQuote>
<blockQuote>
Think of the situation in 89-91 when folks on DOS or Minix were
jumping through hoops in order to make their boxes run gcc and
emacs. Suddenly, the hoops could be removed because of Linux. The same
way the "coupled" parts of Linux <EM>are</EM> preventing <EM>some</EM> people from
doing things they would like to do with their system. As more people
are obstructed by those parts---voila Linux becomes (or gives way to)
a micro-kernel based system.
</blockQuote>
<blockQuote>
Didn't someone say "... and the state shall wither away".
</blockQuote>

<blockquote><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Heather] Yes, but it's been said:
</blockquote>
<blockquote>"Do not confuse the assignment of blame with the solution to the
problem. In space, it is far more vital to fix your air leak than
to find the man with the pin." - Fiona L. Zimmer
</blockquote>
<blockquote>Problems as experienced by sysadmins and users are not solely the
fault of designs or languages selected to write our code in.
</blockquote>
<blockquote>...and also:
</blockquote>
<blockquote>"Established technology tends to persist in the face of new technology."
- G. Blaauw, one of the designers of System 360
</blockquote>
<blockquote>...not coincidentally, at least in <EM>our</EM> world, likely to persist inside
"new" technology, as well, possibly in the form of "intuitive"
keystrokes and "standard" protocols which would not be the results if
designs were started fresh.   Of course truly fresh implementations
take a while to complete, which brings us back to the case of the
partially completed Hurd environment very neatly.
</blockquote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [JimD] 
Thus any change to the
core requires an explosion of changes to all the modules which
depended upon it.  They are correct (to a degree).  However they
gloss over a few points (lying with statistics).
</blockQuote>
<blockQuote>
First point: no one said that maintaining and developing kernels
should be easy.  It is recognized as one of the most difficult
undertakings in programming (whether it's an operating system kernel
or an RDBMS "engine" --- kernel).  "Difficult" is subjective.  It
falls far short of "impossible."
</blockQuote>
<blockQuote>
Second point: They accept it as already proven that "common" coupling
leads to increasing numbers of regression faults (giving references
to other documents that allege to prove this) and then they provide
metrics about what <EM>they</EM> are calling common coupling.  Nowhere do they
give an example of <EM>one</EM> variable that is "common coupled" and explain
how different things are coupled to it.  Nor do they show an example
of how the kernel might be "restructured with common coupling reduced
to a bare minimum" (p.13).
</blockQuote>
<blockQuote>
So, it's a research paper that was funded by the NSF (National Science
Foundation).  I'm sure the authors got good grades on it.  However,
like too much academic "work" it is of little consequence to the rest
of us.  They fail to show a practical alternative and fail to enlighten
us.
</blockQuote>
<blockQuote>
Mostly this paper sounds like the periodic whining that used to come
up on the kernel mailing list: "Linux should be re-written in C++
and should be based on an object-oriented design."  The usual response
amounts to: go to it; come back when you want to show us a working
prototype.
</blockQuote>
<P><STRONG>
<IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Jason] 
Couldn't parts of the kernel be written in C, and others in C++? (okay,
technically it would probably all be C++ if such a shift did occur, but
you can write C in a C++ compiler just fine. Right? Or maybe I just don't
know what I'm talking about.)
</STRONG></P>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Pradeep] 
There are many view points to this. But why would you want to rewrite
parts of it in C++?
</blockQuote>
<blockQuote>
Popular answer is: C++ is object-oriented, it has
polymorphism, inheritance etc. Umm, I can do all that in C and kernel
folks have used those methods extensively. The function pointers,
gotos may not be as clean as real virtual functions and exception
handling. But those C++ features come with a price. The compilers
haven't progressed enough to deliver the performance equivalent to
hand-written C code.
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Dan] 
At one point, oh, maybe it was in the 1.3 kernel days, Linus
proposed moving kernel development to C++.
</blockQuote>
<blockQuote>
The developer community roundly shot down the idea.  What you
say about C++ compilers was true in spades with respect to
the g++ of those days.
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Pradeep] 
What is the status of g++ today? I still see a performance hit when I
compile my C programs with g++. Compilation time is also a major
factor. g++ takes lot of time to compile especially with templates.
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [JimD] 
I'm sure that the authors would argue that "better programming and
design techniques" (undoubtedly on their aggenda for their next
NSF grant proposal) would result in less of this "common" coupling
and more of the "elite" coupling.  (Personally I have no problem
coupling with commoners --- just do it safely!)
</blockQuote>
<blockQuote>
As for writing "parts" of Linux in C++ --- there is the rather major
issue of identifier mangling.  In order to support polymorphism and
especially function overloading and over-riding, C++ compilers have
to modify the identifiers in their symbol tables in ways that C
compiler never have to do.  As a consequence of this it is very
difficult to link C and C++ modules.  Remember, loadable modules in
Linux are linkable .o files.  It just so happens that they are
dynmically loaded (a little like some .so files in user space, through
the <TT> dlopen()</TT> API --- but different because this is kernel space and
you can't use <TT> dlopen()</TT> or anything like it).
</blockQuote>
<blockQuote>
I can only guess about how bad this issue would be but a quick
perusal of the first C++ FAQ that could find on the topic:
</blockQuote>
<blockQuote><BLOCKQuote>
<A HREF="http://users.utu.fi/sisasa/oasis/cppfaq/mixing-c-and-cpp.html"
	>http://users.utu.fi/sisasa/oasis/cppfaq/mixing-c-and-cpp.html</A>
</BLOCKQuote></blockQuote>
<blockQuote>
... doesn't sound promising.
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [JimD] 
I'm also disappointed that the only quotations in this paper were
the ones of Ken Thompson claiming that Linux will "not be very
successful in the long run" (repeated TWICE in their 15 page paper)
and that Linux is less reliable (in his experience) than MS Windows.
</blockQuote>
<P><STRONG>
<IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Jason] 
I'm reminded of a quote: "Linux is obsolete" -- Andrew Tanenbaum. He said this
in the (now) famous flame-war between himself and Linus Torvalds. His main
argument was the micro-kernels are better than monolithic kernels and thus Linux
was terribly outdated. (His other point was that linux wasn't portable.) BTW, I
plan to get my hands on some Debian/hurd (Or is that "GNU/hurd"? 
<IMG SRC="../gx/dennis/smily.gif" ALT=":-)" 
		height="24" width="20" align="middle"> ) CDs so I
can see for myself what the fuss over micro-kernels is all about.
</STRONG></P>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [JimD] 
Run MacOS X --- it's a BSD 4.4 personality over a Mach microkernel.
</blockQuote>
<blockQuote>
(And is more mature than HURD --- in part because a significant amount
of the underpinnings of MacOS X are NeXT Step which was first released
in the late '80s even before Linux).
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Ben] 
To quote Debian's Hurd page,
</blockQuote>

<TABLE WIDTH="95%" BORDER="1" BGCOLOR="#FFFFCC"><TR><TD>
<p align="center">...............</p>
<blockQuote>
The Hurd is under active development, but does not provide the
performance and stability you would expect from a production system.
Also, only about every second Debian package has been ported to the
GNU/Hurd. There is a lot of work to do before we can make a release.
</blockQuote><p align="center">...............</p>
</TD></TR></TABLE>
<blockQuote>
Do toss out a few bytes of info if you do download and install it. I'm
not against micro-kernels at all; I'm just slightly annoyed by people
whose credentials don't include the Hard Knocks U. screaming "Your
kernel sucks! You should stab yourself with a plastic fork!" My approach
is sorta like the one reported in c.o.l.: "Let's see the significant
benefits."
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [JimD] 
These were anecdotal comments in an press interview --- they were
not intended to be delivered with scholastic rigor.  I think it
weakens the paper considerably (for reasons quite apart from my
disagreement with the statements themselves).
</blockQuote>
<blockQuote>
What is "the Long run?"  Unix is a hair over 30 years old.  The entire
field of electronic computing is about 50 or 60 years old. Linux is
about 12 years old.  Linux is still growing rapidly and probably won't
peak in marketshare for at last 5 to 10 years.  Thus Linux could easily
last longer than proprietary forms of UNIX did.  (This is not to say
that Linux is the ultimate operating system.  In 5 to 10 years there
is likely to be an emerging contender like EROS (<A HREF="http://www.eros-os.org"
	>http://www.eros-os.org</A> )
or something I've never heard of.  In 15 to 20 years we might be
discussing a paper that quotes Linus Torvalds as saying: "I've read
some of the EROS code, and it's not going to be a success in the long
run."
</blockQuote>
<blockQuote>
(We won't even get into the criteria for "success" in Ken Thompson's
comment --- because I think that Linux' current status is already been
a huge success by the standards of it's advocates and to the chagrin
of it's detractors.  By many accounts Linux is already more
"successful" than UNIX --- having been installed on more systems than
all UNIX predecessors combined --- an installation base that is only
recently rivaled by MacOS X in the UNIX world)
</blockQuote>

<!-- end 3 -->
<!--     .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.     -->
<A NAME="tag.4"><HR WIDTH="75%" ALIGN="center"></A>
<!-- begin 4 -->
<H3 align="left"><img src="../gx/dennis/qbubble.gif" 
	height="50" width="60" alt="(?) " border="0"
	>routing to internet from home . Kernel 2.4</H3>


<p><strong>From Jose Avalis 
</strong></p> 
<p></strong></p>

<p align="right"><strong>Answered By  Faber Fedor,
 Jason Creighton,
 Benjamin A. Okopnik,
 John Karns
</strong></p>
<P><STRONG>
Hi guys and thanks in advance fro your time. I'm Joe From Toronto.
</STRONG></P>
<P><STRONG>
I have this scenario at home.
</STRONG></P>

<blockquote><code><font color="#000033"><br>    3 WS with Winxx
<br>    1 Linux redhat  7.3
<br>    1 DSL  Connection (Bell / Sympatico)
</font></code></blockquote>
<P><STRONG>
I would like to use the linux machine as a router for the internal PC&gt;
Could you help me with that, please???
</STRONG></P>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Ben] 
OK, I'll give it a shot. You <EM>have</EM> read and followed the advice in the
IP-Masquerade HOWTO, right? If not, it's always available at the Linux
Documentation Project &lt;<A HREF="http://www.linuxdoc.org&gt"
	>http://www.linuxdoc.org&gt</A>;, or possibly on your own
system under <TT>/usr/doc/HOWTO</TT> or <TT>/usr/share/doc/HOWTO.</TT>
</blockQuote>
<P><STRONG>
<IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> 
The  Linux Machine has 2 NIC    eth0 (10.15.1.10 | 16 ) is connected
to the internal net (hub)  , while the other ETH1 (10.16.1.10 | 16) is
connected to the DSL Modem.
</STRONG></P>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Ben] 
You have private IPs on both interfaces. Given a DSL modem on one of
them, it would usually have an Internet-valid address, either one that
you automatically get via DHCP or a static one that you get from your
ISP (that's become unusual for non-commercial accounts.) Looks like you
have a PPPoE setup - so you're not actually going to be hooking eth0 to
eth1, but eth0 to ppp0.
</blockQuote>
<P><STRONG>
<IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> 
as you can see in the following text, everything is Up and run  and
I can access internet from the Linux machine.
</STRONG></P>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Jason] 
This may see like a stupid question, but do the internal PCs have valid
internet address? (i.e., those outside the 10.*.*.*,
172.16.*.*-172.31.*.* or 192.168.*.* ranges) If they don't, you need to
do IP masquerading. This is not all that hard, I could give a quick &amp;
dirty answer as to how to do it (Or you could look at the
IP-Masquerading-HOWTO, for the long answer), but I'd like to know if
that's your situation first. Yes, I am <EM>that</EM> lazy. 
<IMG SRC="../gx/dennis/smily.gif" ALT=":-)" 
		height="24" width="20" align="middle">
</blockQuote>
<P><STRONG>
<IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> 
ifconfig says
</STRONG></P>
<p align="center">See attached <tt><a href="misc/tag/jose.ifconfig-before.txt">jose.ifconfig-before.txt</a></tt></p>
<p align="center">See attached <tt><a href="misc/tag/jose.ping-before.txt">jose.ping-before.txt</a></tt></p>
<P><STRONG>
The problem is that when I try to access the internet from the
internal lan. I can't access it.
</STRONG></P>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Ben] 
Yep, that's what it is. That MTU of 1492 is a good hint: that's the
correct setting for PPPoE, and that's your only interface with a
Net-valid IP.
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [John] 
The adjusted MTU for PPPoE (from the usual 1500 to 1492) is necessary, but
can cause problems with the other machines on the LAN unless they too are
adjusted for MTU.
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Ben] 
Right - although not quite as bad as the gateway's MTU (that one can
chase its own tail forever - looks like there's no connection!)
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [John] 
I've been stuck with using PPPoE for about a month now,
and have found the Roaring Penguin pkg (<A HREF="http://www.roaringpenguin.com"
	>http://www.roaringpenguin.com</A>) to
work quite well, once it's configured.  I seem to remember reading that it
does the MTU adjustment internally, and alleviates the headache of having
to adjust the rest of the machines on the LAN to use the PPPoE gateway
(see the ifconfig output below).
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Ben] 
Oh, _sweet._ I'm not sure how you'd do that "internally", but I'm no
network-programming guru, and that would save a bunch of headaches.
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [John] 
Especially nice if one of the LAN nodes
is a laptop that gets carried around to different LAN environments - would
be a real PITA to have to reset the MTU all the time.
</blockQuote>

<blockquote><pre># ifconfig eth1

eth1      Link encap:Ethernet  HWaddr 00:40:F4:6D:AA:3F
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:21257 errors:0 dropped:0 overruns:0 frame:0
          TX packets:14201 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          RX bytes:4568502 (4.3 Mb)  TX bytes:1093173 (1.0 Mb)
          Interrupt:11 Base address:0xcc00
</pre></blockquote>
<blockQuote>
Then I just tacked on the firewall <TT>/</TT> masq script I've been using right
along, with the only change being the external interface from eth0 to
ppp0.  PPPoE is also a freak in that the NIC that connects to the modem
doesn't get an assigned IP.
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Ben] 
Yep, that's what got me thinking "PPPoE" in the first place. Two
RFC-1918 addresses - huh? An MTU of 1492 for ppp0 and reasonably short
ping times to the Net - oh. 
<IMG SRC="../gx/dennis/smily.gif" ALT=":)" 
		height="24" width="20" align="middle">
</blockQuote>
<P><STRONG>
<IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> 
all  the PCs in the net have as Default gateway  10.15.1.10 (Linux
internal NIC )
</STRONG></P>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Ben] 
That part is OK.
</blockQuote>
<P><STRONG>
<IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> 
Linux's  default gateway is the ppp0 adapter
</STRONG></P>

<pre><strong>[root@linuxrh root]# netstat -nr
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
64.229.190.1    0.0.0.0         255.255.255.255 UH       40 0          0 ppp0
10.16.0.0       0.0.0.0         255.255.0.0     U        40 0          0 eth1
10.15.0.0       0.0.0.0         255.255.0.0     U        40 0          0 eth0
127.0.0.0       0.0.0.0         255.0.0.0       U        40 0          0 lo
0.0.0.0         64.229.190.1    0.0.0.0         UG       40 0          0 ppp0
[root@linuxrh root]#
</strong></pre>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Ben] 
Yep, that's what "netstat" says. I've never done masquerading with
PPP-to-Ethernet, but it should work just fine, provided you do the
masquerading correctly.
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Ben] 
Can you guys give me some cues of what my problem is ???
</blockQuote>
<blockQuote>
I don't have any firewall installed.
</blockQuote>
<blockQuote>
Thanks a lot.
JOE
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Ben] 
That's probably the problem. Seriously - a firewall is nothing more than
a set of routing rules; in order to do masquerading, you need - guess
what? - some routing rules (as well as having it enabled in the kernel.)
Here are the steps in brief - detailed in the Masquerading HOWTO:
</blockQuote>

<blockQuote><ol>
<LI>Make sure that your kernel supports masquerading; reconfigure and




<LI>Load the "ip_masq" module if necessary.



<LI>Enable IP forwarding (ensure that /proc/sys/net/ipv4/ip_forward is




<LI>Set up the rule set (the HOWTO has good examples.)

</ol></blockQuote>
<blockQuote>
That's the whole story. If you're missing any part of it, go thou and
fix it until it cries "Lo, I surrender!" If you run into problems while
following the advice in the HOWTO, feel free to ask here.
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Faber] 
One thing you didn't mention doing is turning on forwarding between the
NICs; you have to tell the Linux to forward packets from one NIC to the
other.  To see if it is turned on, do this:
</blockQuote>

<blockquote><pre>cat /proc/sys/net/ipv4/ip_forward
</pre></blockquote>
<blockQuote>
If it says "0", then it's not turned on.  To turn it on, type
</blockQuote>

<blockquote><pre>echo "1" &gt; /proc/sys/net/ipv4/ip_forward
</pre></blockquote>
<blockQuote>
And see if your Win boxen can see the internet.
</blockQuote>
<blockQuote>
If that is your problem, once you reboot the Linux box you'll lose the
setting.  There are two ways not to lose the setting.  One  is to put
the echo command above into your <TT>/etc/rc.local</TT> file.  The second and
Approved <A HREF="http://www.redhat.com/">Red Hat</A> Way is to put the line
</blockQuote>

<blockquote><pre>net.ipv4.ip_forward = 1
</pre></blockquote>
<blockQuote>
in your <TT>/etc/sysctl.conf</TT> file.  I don't have any Red Hat 7.3 boxes lying
around, so I don't know if Red Hat changed the syntax between 7.x and
8.x.  One way to check is to run
</blockQuote>

<blockquote><pre>/sbin/sysctl -a | grep forward
</pre></blockquote>
<blockQuote>
and see which one looks most like what I have.
</blockQuote>
<P><STRONG>
<IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> 
Hey Faber in NJ <TT>/....</TT> thanks for your clues. In fact it was in  0, I
changed it to 1, I've restarted tehe box and it is in 1 now; but it is
still not working.
</STRONG></P>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Faber] 
Well, that's a start.  There's no way it would have worked with it being
0!
</blockQuote>
<P><STRONG>
<IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> 
First at all, m I right with this setup method?   I mean using Linux
as a router only ???  or shoud I set up a masquerading  and use the NAT
facility to populate all my internal addresses in Internet?
</STRONG></P>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Faber] 
Whoops!  Forgot that piece!  Yes, you'll hve to do masquerading/NAT (I
can never keep the two distinct in my head).
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Jason] 
It seems to me that you would want the DSL modem
(eth1) to be the default route to the internet, not the modem (ppp0).
</blockQuote>
<P><STRONG>
<IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> 
Because maybe the problem is that I'm trying to route my internal net
to the DSL net and Internet and maybe it is not a valid proc.
</STRONG></P>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Faber] 
Well, it can be done, that's for sure.  We just have to get all the t's
dotted and the i's crossed. 
<IMG SRC="../gx/dennis/smily.gif" ALT=":-)" 
		height="24" width="20" align="middle">
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Jason] 
IP-Masquerading.  Here's the HOWTO:
</blockQuote>
<blockQuote><BLOCKQuote>
<A HREF="http://www.tldp.org/HOWTO/IP-Masquerade-HOWTO"
	>http://www.tldp.org/HOWTO/IP-Masquerade-HOWTO</A>
</BLOCKQuote></blockQuote>
<blockQuote>
And here's a script that's supposed (I've never used it) to just be a
"fill in the blanks and go":
</blockQuote>
<blockQuote><BLOCKQuote>
<A HREF="http://www.tldp.org/HOWTO/IP-Masquerade-HOWTO/firewall-examples.html#RC.FIREWALL-2.4.X"
	>http://www.tldp.org/HOWTO/IP-Masquerade-HOWTO/firewall-examples.html#RC.FIREWALL-2.4.X</A>
</BLOCKQuote></blockQuote>
<blockQuote>
Note this is in the HOWTO, it's just later on after explaining all the
gory details of NATing.
</blockQuote>
<HR width="10%" align="left"><P><STRONG>
<IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> 
Hey, thanks for your mail, the thing is working now. I didnt know that the
NAT functions in Linux are called Masquerading.
</STRONG></P>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Ben] 
Yeah, that's an odd one.
</blockQuote>
<blockQuote>
Masquerading is only a specific case (one-to-many) of NAT. As an example
of other stuff that NAT can do, IBM had an ad for the Olympics a while
back (their equipment handled all the traffic for the website); they did
"many-to-many" NAT to split up the load.
</blockQuote>
<P><STRONG>
<IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> 
Thanks again for your help, due to I'm new in Linux, it took me a while to
learn of the terminology in this platform.
</STRONG></P>
<P><STRONG>
To many NOS in may head.
</STRONG></P>
<P><STRONG>
I have averything working now, including the firewall, I had to compile
the kernel again, but it was ok.
</STRONG></P>
<P><STRONG>
C U.
</STRONG></P>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Ben] 

<IMG SRC="../gx/dennis/smily.gif" ALT="&lt;grin&gt;" 
		height="24" width="20" align="middle"> You're welcome! Glad we could help.
</blockQuote>

<!-- end 4 -->
<!-- *** BEGIN copyright *** -->
<hr>
<CENTER><SMALL><STRONG>
<h5>
<br>Copyright &copy; 2003
<br>Copying license <A HREF="">http://www.linuxgazette.com/copying.html</A>
<BR>Published in Issue 88 of <i>Linux Gazette</i>, March 2003</H5>
</STRONG></SMALL></CENTER>
<!-- *** END copyright *** -->

<SMALL><CENTER><H6 ALIGN="center">HTML script maintained by
        <A HREF="mailto:star@starshine.org">Heather Stern</a> of
        Starshine Technical Services,
       <A HREF="http://www.starshine.org/">http://www.starshine.org/</A>
</H6></SMALL></CENTER>
<HR>

<table border="1"><tbody><tr><td width="200">
<a href="http://www.linuxgazette.com/">
<img alt="LINUX GAZETTE" src="../gx/2002/lglogo_200x41.png" width="200" height="41" border="0"></a> 
<br clear="all">
<small>...<i>making Linux just a little more fun!</i></small>
</td><td width="380">



<center>
<BIG><BIG><STRONG><FONT
COLOR="maroon">News Bytes</FONT></STRONG></BIG></BIG><BR>
<STRONG>By <A HREF="http://www.linuxgazette.com/authors/conry.html">Michael Conry</A></STRONG></BIG>

</TD></TR>
</TABLE>
<P>

<!-- END header -->



</p><center>
<table cellpadding="7"><tbody><tr><td>
<img src="../gx/bytes.gif" border="1" alt="News Bytes">
</td><td>
<h3>Contents:</h3>
<ul>
<li><a href="#leg">Legislation and More Legislation</a>
</li><li><a href="#links">Linux Links</a>
</li><li><a href="#conferences">Conferences and Events</a>
</li><li><a href="#general">News in General</a>
</li><li><a href="#distro">Distro News</a>
</li><li><a href="#commercial">Software and Product News</a>
</li></ul>
</td></tr></tbody></table>

<strong>Selected and formatted by  <a href="mailto:michael.conry@softhome.net">Michael Conry</a></strong>
</center>


<p> Submitters, send your News Bytes items in 
<font size="+2"><strong>PLAIN TEXT</strong></font>
format.  Other formats may be rejected without reading.  You have been
warned!  A one- or two-paragraph summary plus URL gets you a better
announcement than an entire press release. Submit items to
<a href="mailto:gazette@ssc.com">gazette@ssc.com</a>


</p><hr> <p> 
<!-- =================================================================== -->

</p><h3><img alt=" " src="../gx/bolt.gif">
<font color="green">
March 2003 <i>Linux Journal</i>
</font>
</h3>

<img alt="[issue 107 cover image]" src="misc/bytes/lj-cover107.png" width="200" height="268" align="left" hspace="20">

The March issue of <a href="http://www.linuxjournal.com/"><i>Linux
Journal</i></a> is on newsstands now.
This issue focuses on On-Line Fora.  Click 
<a href="http://www.linuxjournal.com/modules.php?op=modload&amp;name=NS-lj-issues/issue107&amp;file=index">here</a>
to view the table of contents, or 
<a href="http://www.linuxjournal.com/subscribe/">here</a> 
to subscribe.

<p>
<font color="green">All articles older than three months are available for
public reading at 
<a href="http://www.linuxjournal.com/magazine.php">http://www.linuxjournal.com/magazine.php</a></font>.  
Recent articles are available on-line for subscribers only at 
<a href="http://interactive.linuxjournal.com/">http://interactive.linuxjournal.com/</a>.  







<BR CLEAR="all">
<!-- =================================================================== -->

<a name="leg"></a>
<p><hr><p>
<!-- =================================================================== -->
<center><H3><font color="green">Legislation and More Legislation</font></H3></center>


<P>
Fox News report on
<a href="http://foxnews.com/story/0,2933,78729,00.html">
the US Congress's tech agenda</a>.
<P>
<a href="http://www.itworld.com/Net/4087/030131euantipiracy/">
ITworld.com reported</a>
that the European Commission has
presented a draft directive that punishes copyright infringement for
commercial purposes, but spares home music downloaders, irritating music
industry lobby groups
(<a href="http://yro.slashdot.org/article.pl?sid=03/02/02/0229224&mode=nested&tid=141&tid=158">from Slashdot</a>).
Also reported 
<a href="http://www.theregister.co.uk/content/4/29184.html">
at The Register</a>.
<P>
Washington Post 
<a href="http://www.washingtonpost.com/wp-dyn/articles/A6320-2003Jan31.html">
reports</a>
that Howard Schmidt, the new cybersecurity czar, is a former Microsoft
security chief.
(<a href="http://slashdot.org/article.pl?sid=03/02/02/1358206&mode=nested&tid=172">from
Slashdot</a>).
<P>
<a href="http://www.theregister.co.uk/content/4/29157.html">
The Register reports</a>
how US gov reps "defanged" pro open source declaration.
<P>
<a href="http://www.eff.org/IP/DMCA/german_comments.php">
EFF's comments</a> on the "German DMCA" 
as part of its ongoing effort to avoid the worldwide export of over broad
DMCA-type legislation.  The German judicial commission is currently holding
hearings on draft German legislation to implement the 2001 European Union
Copyright Directive (EUCD).
<P>
After winning the initial judgement 
<a href="http://mobilix.org/mobilix_asterix.html">
in a trademark suit</a>, the
German software firm MobiliX had to 
<a href="http://www.theregister.co.uk/content/4/29244.html">
give up its name after all</a>
to the publishers of a similarly-named comic book character.
MobilX.org is now
<a href="http://tuxmobil.org/">
TuxMobil.org</a>.
(<A HREF="http://newsvac.newsforge.com/article.pl?sid=03/02/21/1457244">NewsForge 
announcement.</A>)
<P>
The EFF has announced the release of 
"<a href="http://www.eff.org/IP/DMCA/finkelstein_on_dmca2.php">Winning (DMCA) Exemptions, The Next Round</a>",
a succinct guide to the comment-making process written by Seth Finkelstein,
who proposed one of the only two exemptions granted in the last Library of
Congress Rule-making.
<P>
The Register reports that the 
<a href="http://www.theregister.co.uk/content/55/29318.html">
DMCA has been invoked in DirecTV hack</a>.  17 have been charged.
<P>
<a href="http://interviews.slashdot.org/article.pl?sid=03/02/20/1544245&mode=nested&tid=117&tid=123">
Slashdot Interview with Prof. Eben Moglen
</a>
who has been the FSF's pro bono general counsel since 1993.
<P> 


<a name="links"></a>
<p><hr><p>
<!-- =================================================================== -->
<center><H3><font color="green">Linux Links</font></H3></center>

<P>
The Happypenguin Awards for the
<a href="http://happypenguin.org/forums/viewtopic.php?t=549">
25 Best Linux Games</a> 
(<a href="http://newsvac.newsforge.com/article.pl?sid=03/01/29/2050245">courtesy NewsVac</a>).
<P>
Lindows launches 
<a href="http://siliconvalley.internet.com/news/article.php/1575991">
$329 mini PC</a>, ubiquity beckons.
<P>
ZDNet UK
<a href="http://news.zdnet.co.uk/story/0,,t269-s2129482,00.html">
reports</a>
on how KDE's new version has responded to government needs.
<P>
NewsForge report:
<a href="http://newsforge.com/article.pl?sid=03/01/31/1420212">
The rise of the $99 'consumer' Linux distribution</a>
<P>
A look at installing Bayesian filtering using
<a href="http://linux.oreillynet.com/pub/a/linux/synd/2003/01/30/bogofilter.html">
Bogofilter and Sylpheed Claws</a>.
<P>
Doc Searls at <em>Linux Journal</em> writes on the value shifts
<a href="http://www.linuxjournal.com//article.php?sid=6601">
underpinning the spread of Linux and free software</a>.
<P>
<a href="http://newsvac.newsforge.com/article.pl?sid=03/02/06/172206">
PC-To-Phone calls available for GNU/Linux</a>.
<P>
Wired reports on
<a href="http://www.wired.com/news/mac/0,2125,57565,00.html">
getting an iPod to run on linux</a>.
<P>
Jay Beale (of Bastille Linux) 
with an 
<a href="http://www.infosecuritymag.com/2003/feb/linuxguru.shtml">
article on computer security</a>, and how to tell if you've been hacked
(<a href="http://newsvac.newsforge.com/article.pl?sid=03/02/12/2315254">from NewsVac</a>).
<P>
Monthly Monster Machines back in action
LinuxLookup.com have 
<a href="http://newsvac.newsforge.com/article.pl?sid=03/02/12/2310225">
announced</a>
a monthly feature
<a href="http://www.linuxlookup.com/modules.php?op=modload&name=MMM&file=index">
Monthly Monster Machines</a>.  This is a monthly updated spec of budget,
workstation, and dream Linux machines.
<P>
<a href="http://newsvac.newsforge.com/article.pl?sid=03/02/15/1453242">
It has been reported that</a>
starting this year, the Swiss State of Geneva will mail all tax forms with a CD
which includes OpenOffice and Mozilla.  This replaces an Excel sheet.
<P>
Recent NewsForge 
<a href="http://newsforge.com/article.pl?sid=03/02/18/1540254">
IRC chat</a>
with OpenOffice.org publicist/activist Sam Hiser.
<P>
Open Source 
<a href="http://www.theregister.co.uk/content/53/29416.html">
security manual</a>.
There is a report on this 
<a href="http://newsforge.com/newsforge/03/02/20/1635246.shtml?tid=2">
at NewsForge</a>.
<P>
Possible data write 
<a href="http://newsvac.newsforge.com/newsvac/03/02/21/0540225.shtml?tid=23">
corruption problem</a>
on Linux.
<P>
NewsForge
<a href="http://newsforge.com/article.pl?sid=03/02/21/1534259">
report</a> on the launch of the new
<a href="http://www.linuxineducation.org">
Linux in Education</a>
portal.
<P>
Slashdot
<a href="http://slashdot.org/article.pl?sid=03/02/21/182216&mode=nested&tid=163">
highlighted</a> a recent Business Week feature of Linux comprising 
<a href="http://www.businessweek.com/magazine/toc/03_09/B382203linux.htm">
9 articles</a>.
<P>
<a href="http://slashdot.org/articles/03/02/04/0033239.shtml?tid=109&tid=126&tid=164">
Slashdotters respond</a>
to an article about the Microsoft Home of Tomorrow by
speculating what an AppleHouse, SunHouse and LinuxHouse would look like.
<P>
<a href="http://geocities.com/lunatech3007/doing-things-howto.html">
Howto do things in GNU/Linux</a>
<P>
<a href="http://unix.se/article/articleview/950/1/24">
Interview with Dennis Ritchie</a>, a founding father of Unix and C.
<P>
Some Links from 
<a href="http://www.lwn.net/">Linux Weekly News</a>:
<ul>
<li>
    South Africa moves positively with regard to 
    <a href="http://news.com.com/2100-1001-983315.html">
    Linux in government</a>.
</li>
<li>
    SCO
    <a href="http://lwn.net/Articles/20973/">
    hires lawyers</a>
    to comb through Linux to see if it infringes on any of SCO's patents or
    copyrights; SCO owns the rights on the original UNIX.  SCO is being
    tight-lipped about what it would do if it finds anything.  Also
    reported 
    <a href="http://www.osopinion.com/perl/story/20717.html">
    at OS Opinion</a>.
</li>
<li>
    Multi-part interview with Guido van Rossum, parts
    <a href="http://www.artima.com/intv/python.html">
    1</a>,
    <a href="http://www.artima.com/intv/pyscale.html">
    2</a>,
    <a href="http://www.artima.com/intv/speed.html">
    3</a>,
    <a href="http://www.artima.com/intv/pycontract.html">
    4</a>,
    <a href="http://www.artima.com/intv/strongweak.html">
    5</a> and
    <a href="http://www.artima.com/intv/pycomm.html">
    6</a>.
</li>
</ul>
<P>
For the Chinese readers among you, a
<a href="http://eulerkhc.130th.net/chinese.html">
Chinese translation</a>
of the Peruvian 
<a href="http://eulerkhc.130th.net/index.html">
refutation</a>
of Microsoft FUD.

<P>


<a name="conferences"></a>
<p><hr><p>
<!-- =================================================================== -->
<center><H3><font color="green">Upcoming conferences and events</font></H3></center>

<P> Listings courtesy <EM>Linux Journal</EM>.  See <EM>LBJ</EM>'s
<A HREF="http://www.linuxjournal.com/events.php">Events</A> page for the
latest goings-on.

<table cellpadding=5 border=0 width=100%>


<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>


<tr><td valign=top>
        <b>Game Developers Conference</b><BR>
        <td valign=top>March 4-8, 2003<BR>San Jose, CA<BR>
        <a href="http://www.gdconf.com/" target="_blank">
        http://www.gdconf.com/</A><BR>

<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>

<tr><td valign=top>
        <b>SXSW</b><BR>
        <td valign=top>March 7-11, 2003<BR>Austin, TX<BR>
        <a href="http://www.sxsw.com/interactive" target="_blank">
        http://www.sxsw.com/interactive</A><BR>

<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>

<tr><td valign=top>
        <b>CeBIT</b><BR>
        <td valign=top>March 12-19, 2003<BR>Hannover, Germany<BR>
        <a href="http://www.cebit.de/" target="_blank">
        http://www.cebit.de/</A><BR>

<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>

<tr><td valign=top>
        <b>City Open Source Community Workshop</b><BR>
        <td valign=top>March 22, 2003<BR>Thessaloniki, Greece<BR>
        <a href="http://www.city.academic.gr/cosc" target="_blank">
        http://www.city.academic.gr/cosc</A><BR>

<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>

<tr><td valign=top>
        <b>Software Development Conference & Expo</b><BR>
        <td valign=top>March 24-28, 2003<BR>Santa Clara, CA<BR>
        <a href="http://www.sdexpo.com/" target="_blank">
        http://www.sdexpo.com/</A><BR>

<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>

<tr><td valign=top>
        <b>Linux Clusters Institute (LCI) Workshop</b><BR>
        <td valign=top>March 24-28, 2003<BR>Urbana-Champaign, IL<BR>
        <a href="http://www.linuxclustersinstitute.org/" target="_blank">
        http://www.linuxclustersinstitute.org/</A><BR>

<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>


<tr><td valign=top>
        <b>4th USENIX Symposium on Internet Technologies and Systems</b><BR>
        <td valign=top>March 26-28, 2003<BR>Seattle, WA<BR>
        <a href="http://www.usenix.org/events/" target="_blank">
        http://www.usenix.org/events/</A><BR>

<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>

<tr><td valign=top>
        <b>PyCon DC 2003</b><BR>
        <td valign=top>March 26-28, 2003<BR>Washington, DC<BR>
        <a href="http://www.python.org/pycon/" target="_blank">
        http://www.python.org/pycon/</A><BR>

<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>

<tr><td valign=top>
        <b>Linux on Wall Street Show & Conference</b><BR>
        <td valign=top>April 7, 2003<BR>New York, NY<BR>
        <a href="http://www.linuxonwallstreet.com" target="_blank">
        http://www.linuxonwallstreet.com</A><BR>

<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>

<tr><td valign=top>
        <b>AIIM</b><BR>
        <td valign=top>April 7-9, 2003<BR>New York, NY<BR>
        <a href="http://www.advanstar.com/" target="_blank">
        http://www.advanstar.com/</A><BR>

<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>

<tr><td valign=top>
        <b>FOSE</b><BR>
        <td valign=top>April 8-10, 2003<BR>Washington, DC<BR>
        <a href="http://www.fose.com/" target="_blank">
        http://www.fose.com/</A><BR>

<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>

<tr><td valign=top>
        <b>MySQL Users Conference & Expo 2003</b><BR>
        <td valign=top>April 8-10, 2003<BR>San Jose, CA<BR>
        <a href="http://www.mysql.com/events/uc2003/" target="_blank">
        http://www.mysql.com/events/uc2003/</A><BR>

<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>

<tr><td valign=top>
        <b>LinuxFest Northwest 2003</b><BR>
        <td valign=top>April 26, 2003<BR>Bellingham, WA<BR>
        <a href="http://www.linuxnorthwest.org/" target="_blank">
        http://www.linuxnorthwest.org/</A><BR>

<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>

<tr><td valign=top>
        <b>Real World Linux Conference and Expo</b><BR>
        <td valign=top>April 28-30, 2003<BR>Toronto, Ontario<BR>
        <a href="http://www.realworldlinux.com/" target="_blank">
        http://www.realworldlinux.com</A><BR>


<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>

<tr><td valign=top>
        <b>USENIX First International Conference on Mobile Systems, 
	Applications, and Services (MobiSys)</b><BR>
        <td valign=top>May 5-8, 2003<BR>San Francisco, CA<BR>
        <a href="http://www.usenix.org/events/" target="_blank">
        http://www.usenix.org/events/</A><BR>

<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>

<tr><td valign=top>
        <b>USENIX Annual Technical Conference</b><BR>
        <td valign=top>June 9-14, 2003<BR>San Antonio, TX<BR>
        <a href="http://www.usenix.org/events/" target="_blank">
        http://www.usenix.org/events/</A><BR>

<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>

<tr><td valign=top>
        <b>CeBIT America</b><BR>
        <td valign=top>June 18-20, 2003<BR>New York, NY<BR>
        <a href="http://www.cebit-america.com/" target="_blank">
        http://www.cebit-america.com/</A><BR>

<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>

<tr><td valign=top>
        <b>ClusterWorld Conference and Expo</b><BR>
        <td valign=top>June 24-26, 2003<BR>San Jose, CA<BR>
        <a href="http://www.linuxclustersinstitute.org/Linux-HPC-Revolution" 
	target="_blank">
        http://www.linuxclustersinstitute.org/Linux-HPC-Revolution</A><BR>


<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>

<tr><td valign=top>
        <b>O'Reilly Open Source Convention</b><BR>
        <td valign=top>July 7-11, 2003<BR>Portland, OR<BR>
        <a href="http://conferences.oreilly.com/" target="_blank">
        http://conferences.oreilly.com/</A><BR>

<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>

<tr><td valign=top>
        <b>12th USENIX Security Symposium</b><BR>
        <td valign=top>August 4-8, 2003<BR>Washington, DC<BR>
        <a href="http://www.usenix.org/events/" target="_blank">
        http://www.usenix.org/events/</A><BR>

<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>

<tr><td valign=top>
        <b>LinuxWorld Conference & Expo</b><BR>
        <td valign=top>August 5-7, 2003<BR>San Francisco, CA<BR>
        <a href="http://www.linuxworldexpo.com" target="_blank">
        http://www.linuxworldexpo.com</A><BR>

<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>

<tr><td valign=top>
        <b>Linux Lunacy</b><BR><i>Brought to you by Linux Journal and
	Geek Cruises!</i><br>
        <td valign=top>September 13-20, 2003<BR>Alaska's Inside Passage<BR>
        <a href="http://www.geekcruises.com/home/ll3_home.html" target="_blank">
        http://www.geekcruises.com/home/ll3_home.html</A><BR>

<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>

<tr><td valign=top>
        <b>Software Development Conference & Expo</b><BR>
        <td valign=top>September 15-19, 2003<BR>Boston, MA<BR>
        <a href="http://www.sdexpo.com" target="_blank">
        http://www.sdexpo.com</A><BR>

<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>

<tr><td valign=top>
        <b>PC Expo</b><BR>
        <td valign=top>September 16-18, 2003<BR>New York, NY<BR>
        <a href="http://www.http://www.techxny.com/pcexpo_techxny.cfm"
target="_blank">
        http://www.techxny.com/pcexpo_techxny.cfm</A><BR>

<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>

<tr><td valign=top>
        <b>COMDEX Canada</b><BR>
        <td valign=top>September 16-18, 2003<BR>Toronto, Ontario<BR>
        <a href="http://www.comdex.com/canada/" target="_blank">
        http://www.comdex.com/canada/</A><BR>

<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>

<tr><td valign=top>
        <b>LISA (17th USENIX Systems Administration Conference)</b><BR>
        <td valign=top>October 26-30, 2003<BR>San Diego, CA<BR>
        <a href="http://www.usenix.org/events/lisa03/" target="_blank">
        http://www.usenix.org/events/lisa03/</A><BR>

<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>

<tr><td valign=top>
        <b>HiverCon 2003</b><BR>
        <td valign=top>November 6-7, 2003<BR>Dublin, Ireland<BR>
        <a href="http://www.hivercon.com/" target="_blank">
        http://www.hivercon.com/</A><BR>

<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>

<tr><td valign=top>
        <b>COMDEX Fall</b><BR>
        <td valign=top>November 17-21, 2003<BR>Las Vegas, NV<BR>
        <a href="http://www.comdex.com/fall2003/" target="_blank">
        http://www.comdex.com/fall2003/</A><BR>

<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>

</table>

<a name="general"></a>
<p><hr><p>
<!-- =================================================================== -->
<center><H3><font color="green">News in General</font></H3></center>




<P> <hr> <P> 
<!-- =================================================================== -->
<H3><IMG ALT=" "   SRC="../gx/bolt.gif">
<FONT COLOR="green">IBM and Smallpox
</FONT>
</H3> 



<P> 
<a href="http://www.ibm.com">
IBM</a>,
United Devices and Accelrys have announced a project supporting a global
research effort that is focused on the development of new drugs that could
potentially combat the smallpox virus post infection.
The Smallpox Research Grid Project is powered by an
IBM infrastructure, which includes IBM eServer[tm] p690 systems and IBM's
Shark Enterprise Storage Server running DB2[r] database software using AIX
and Linux.



<P> <hr> <P> 
<!-- =================================================================== -->
<H3><IMG ALT=" "   SRC="../gx/bolt.gif">
<FONT COLOR="green">Opera and the Swedish Chef Go After Microsoft
</FONT>
</H3> 
<P>
<a href="http://www.opera.com/">
Opera Software</a> has released a very special Bork edition of its Opera 7 for
Windows browser.  The Bork edition behaves differently on one Web site:
MSN. Users accessing the MSN site
<a href="http://www.msn.com/">
http://www.msn.com/</a>
will see the page transformed into the language of the famous Swedish Chef
from the Muppet Show: Bork, Bork, Bork!  This is retaliation to apparent
targeting by MSN of Opera users.  Opera browser users were supplied with a
different stylesheet to MSIE users, which made the site display in a less
appealing way.


<a name="distro"></a>
<p><hr><p>
<!-- =================================================================== -->
<center><H3><font color="green">Distro News</font></H3></center>
<P> <hr> <P> 
<!-- =================================================================== -->
<H3><IMG ALT=" "   SRC="../gx/bolt.gif">
<FONT COLOR="green">Debian
</FONT>
</H3> 
<P>
Debian Weekly News
<a href="http://www.debian.org/News/weekly/2003/05/">
reported</a>
the
<a href="http://lists.debian.org/debian-devel-announce-0301/msg00009.html">
announcement</a>
of the new
<a href="http://ftp-master.debian.org/ziyi_key_2003.asc">
archive key</a> for 2003.  This is used to sign the Release file for the
main, non-US and security archives, and can be used with apt-check-sigs to
improve security when using mirrors.
<P>
<hr width="20%" noshade>
<P>
Also 
<a href="http://www.debian.org/News/weekly/2003/05/">
from DWN</a>, and of use to many Debian users, is
<a href="http://lists.debian.org/debian-openoffice-0301/msg00169.html">
Adrian Bunk's announcement</a>
of the backport of OpenOffice.org 1.0.2 to woody.  Packages are 
<a href="http://www.fs.tum.de/~bunk/packages/">
available online</a>.
<P>
<hr width="20%" noshade>
<P>
Debian 
<a href="http://newsvac.newsforge.com/article.pl?sid=03/02/07/2232216">
powers PRISMIQ MediaPlayer</a>
home entertainment gateway device.
<P> <hr> <P> 
<!-- =================================================================== -->
<H3><IMG ALT=" "   SRC="../gx/bolt.gif">
<FONT COLOR="green">Knoppix
</FONT>
</H3> 
<P>
IBM developerWorks has published a 
<a href="http://www-106.ibm.com/developerworks/linux/library/l-knopp.html?ca=dgr-lnxw02Knoppix">
recent article</a> on Knoppix.
<P> <hr> <P> 
<!-- =================================================================== -->
<H3><IMG ALT=" "   SRC="../gx/bolt.gif">
<FONT COLOR="green">Mandrake
</FONT>
</H3> 
<P>
<a href="http://www.distrowatch.com/dwres.php?resource=review-mandrake">
Part 4</a>
of DistroWatch's review of Mandrake 9.1 is online
<P> <hr> <P> 
<!-- =================================================================== -->
<H3><IMG ALT=" "   SRC="../gx/bolt.gif">
<FONT COLOR="green">SuSE
</FONT>
</H3> 
<P>
<a href="http://www.ofb.biz/modules.php?name=News&file=article&sid=199">
Open For Business</a>
has published
<a href="http://www.ofb.biz/modules.php?name=News&file=article&sid=199">
a review</a>
of SuSE Linux 8.1
<P>
NewsForge has
<a href="http://newsforge.com/article.pl?sid=03/02/17/1411244">
reviewed</a>
SuSE Linux Office Desktop.



<P> <hr> <P> 
<!-- =================================================================== -->
<H3><IMG ALT=" "   SRC="../gx/bolt.gif">
<FONT COLOR="green">Vector
</FONT>
</H3> 
LinuxHardware.org have
<a href="http://www.linuxhardware.org/article.pl?sid=03/01/28/159200">
reviewed</a>
Vector Linux 2.5 SOHO edition.
While 
<a href="http://www.madpenguin.org/article.php?sid=62">
Mad Penguin reports</a>
the release of version 3.2.


<a name="commercial"></a>
<p><hr><p>
<!-- =================================================================== -->
<center><H3><font color="green">Software and Product News</font></H3></center>

<P> <hr> <P> 
<!-- =================================================================== -->
<H3><IMG ALT=" "   SRC="../gx/bolt.gif">
<FONT COLOR="green">C.O.L.A software news
</FONT>
</H3> 
A small selection of
<a
href="http://groups.google.com/groups?hl=en&lr=lang_en|lang_fr&ie=UTF-8&group=comp.os.linux.announce">
announcements from February</a>:
<ul>
<li>
The GUI library wxWindoes version 2.4.0
<a href="http://groups.google.com/groups?dq=&hl=en&lr=lang_en|lang_fr&ie=UTF-8&group=comp.os.linux.announce&selm=YgQY9.48099%24ZE.1355872%40twister2.libero.it">
has been released</a>.
</li>
<li>
The release of Version 22.4.1 of LILO has
<a href="http://groups.google.com/groups?dq=&hl=en&lr=lang_en|lang_fr&ie=UTF-8&group=comp.os.linux.announce&selm=2iui3v0f63j8gulutuhbuj37gtai93rhfa%404ax.com">
been announced</a>.
</li>
<li>
teTeX version 2.0 
<a href="http://groups.google.com/groups?dq=&hl=en&lr=lang_en|lang_fr&ie=UTF-8&group=comp.os.linux.announce&selm=b1k4kd%243n%241%40newsserver.rrzn.uni-hannover.de">
is now available</a> as is
<a href="http://groups.google.com/groups?dq=&hl=en&lr=lang_en|lang_fr&ie=UTF-8&group=comp.os.linux.announce&selm=20030207102557.GA71474%40compsoc.man.ac.uk">
Lyx version 1.3.0</a>.
</li>
</ul>
<P> <hr> <P> 
<!-- =================================================================== -->
<H3><IMG ALT=" "   SRC="../gx/bolt.gif">
<FONT COLOR="green">Candy Cruncher
</FONT>
</H3> 
<P>
<a href="http://www.linuxgamepublishing.com/">
LGP</a>
is pleased to announce that
<a href="http://www.linuxgamepublishing.com/info.php?id=10">
Candy Cruncher</a>
has arrived from the replicators and is available immediately.
<P> <hr> <P> 
<!-- =================================================================== -->
<H3><IMG ALT=" "   SRC="../gx/bolt.gif">
<FONT COLOR="green">CourseForum 1.3
</FONT>
</H3> 
<P>
<a href="http://www.courseforum.com">
CourseForum Technologies</a>
today introduced CourseForum 1.3, its web-based
software for e-learning content creation, sharing and discussion.
CourseForum can be hosted on MacOS X, Windows 98/ME/NT/2000/XP, Linux or
other Unixes, while users need only a standard web browser.
<P> <hr> <P> 
<!-- =================================================================== -->
<H3><IMG ALT=" "   SRC="../gx/bolt.gif">
<FONT COLOR="green">ProjectForum 1.3
</FONT>
</H3> 
<P>
CourseForum Technologies today introduced 
<a href="http://www.projectforum.com">
ProjectForum 1.3</a>,
a web-based software for flexible workgroup collaboration and coordination
of projects and teams.  ProjectForum can be hosted on MacOS X, Windows
98/ME/NT/2000/XP, Linux or other Unixes, while users need only a standard
web browser.  Licenses start at US$199, and a free version is also
available.
<P> <hr> <P> 
<!-- =================================================================== -->
<H3><IMG ALT=" "   SRC="../gx/bolt.gif">
<FONT COLOR="green">AquaFold
</FONT>
</H3> 
<P> 
<a href="http://www.aquafold.com/">
AquaFold, Inc</a>
have 
<a href="http://www.aquafold.com/press_2_24_2003.html">
announced</a>
the latest version of
<a href="http://www.aquafold.com/downloads.html">
Aqua Data Studio</a>, a
universal database tool for building, managing and maintaining enterprise
relational databases.  Aqua Data Studio includes support for all major
database platforms such as Oracle 8i/9i, IBM DB2, Sybase Adaptive Server,
Microsoft SQL Server and the open source databases MySQL and PostgreSQL.
Developed with the Java programming language, Aqua Data Studio supports all
major operating systems, including Linux, Microsoft Windows, Mac OSX, and Solaris.
<a href="http://www.aquafold.com/screenshots.html">
Screenshots</a> and
<a href="http://www.aquafold.com/downloads.html">
downloads</a> available online.



<!-- =================================================================== -->


<!-- *** BEGIN bio *** -->

<!-- *** END bio *** -->

<!-- *** BEGIN copyright *** -->
<hr>
<CENTER><SMALL><STRONG>
This page written and maintained by the Editor of the <I>Linux Gazette</I>,<BR>
<A HREF=mailto:gazette@ssc.com>gazette@ssc.com</A><BR>

Copyright &copy; 2003, Michael Conry.
Copying license <A
+HREF="../copying.html">http://www.linuxgazette.com/copying.html</A><BR>
Published in Issue 88 of <i>Linux Gazette</i>, March
2003</H5>
</STRONG></SMALL></CENTER>
<!-- *** END copyright *** -->
<HR>




<TABLE BORDER><TR><TD WIDTH="200">
<A HREF="http://www.linuxgazette.com/">
<IMG ALT="LINUX GAZETTE" SRC="../gx/2002/lglogo_200x41.png" 
	WIDTH="200" HEIGHT="41" border="0"></A> 
<BR CLEAR="all">
<SMALL>...<I>making Linux just a little more fun!</I></SMALL>
</TD><TD WIDTH="380">


<CENTER>
<BIG><BIG><STRONG><FONT COLOR="maroon">HelpDex</FONT></STRONG></BIG></BIG>
<BR>
<STRONG>By <A HREF="../authors/collinge.html">Shane Collinge</A></STRONG>
</CENTER>

</TD></TR>
</TABLE>
<P>

<!-- END header -->
















<EM>These cartoons are scaled down to minimize horizontal scrolling.
	To see a panel in all its clarity, click on it.</EM>


<P>

<A HREF="misc/collinge/385columbia.jpg">
<IMG ALT="[cartoon]" SRC="misc/collinge/385columbia.jpg" 
	WIDTH="640" HEIGHT="240"></A>
<BR CLEAR="all">


<P> Tux continues his career as an
<A HREF="../issue87/collinge.html">Eminem wannabe</A>.
<BR>
<A HREF="misc/collinge/386minuslt.jpg">
<IMG ALT="[cartoon]" SRC="misc/collinge/386minuslt.jpg" 
	WIDTH="640" HEIGHT="240"></A>
<BR CLEAR="all">


<A HREF="misc/collinge/387yuuuse.jpg">
<IMG ALT="[cartoon]" SRC="misc/collinge/387yuuuse.jpg" 
	WIDTH="640" HEIGHT="240"></A>
<BR CLEAR="all">


<A HREF="misc/collinge/388backwards.jpg">
<IMG ALT="[cartoon]" SRC="misc/collinge/388backwards.jpg" 
	WIDTH="640" HEIGHT="240"></A>
<BR CLEAR="all">


<P> And other topics...
<BR>
<A HREF="misc/collinge/390popup.jpg">
<IMG ALT="[cartoon]" SRC="misc/collinge/390popup.jpg" 
	WIDTH="640" HEIGHT="240"></A>
<BR CLEAR="all">


<A HREF="misc/collinge/392whales.jpg">
<IMG ALT="[cartoon]" SRC="misc/collinge/392whales.jpg" 
	WIDTH="640" HEIGHT="240"></A>
<BR CLEAR="all">


<A HREF="misc/collinge/393pre_unix.jpg">
<IMG ALT="[cartoon]" SRC="misc/collinge/393pre_unix.jpg" 
	WIDTH="640" HEIGHT="240"></A>
<BR CLEAR="all">


<A HREF="misc/collinge/394despues.jpg">
<IMG ALT="[cartoon]" SRC="misc/collinge/394despues.jpg" 
	WIDTH="640" HEIGHT="240"></A>
<BR CLEAR="all">


<A HREF="misc/collinge/395javier.jpg">
<IMG ALT="[cartoon]" SRC="misc/collinge/395javier.jpg" 
	WIDTH="640" HEIGHT="240"></A>
<BR CLEAR="all">


<A HREF="misc/collinge/396facts.jpg">
<IMG ALT="[cartoon]" SRC="misc/collinge/396facts.jpg" 
	WIDTH="640" HEIGHT="240"></A>
<BR CLEAR="all">


<A HREF="misc/collinge/400stages.jpg">
<IMG ALT="[cartoon]" SRC="misc/collinge/400stages.jpg" 
	WIDTH="640" HEIGHT="240"></A>
<BR CLEAR="all">


<A HREF="misc/collinge/391espana.jpg">
<IMG ALT="[cartoon]" SRC="misc/collinge/391espana.jpg" 
	WIDTH="640" HEIGHT="240"></A>
<BR CLEAR="all">




<P> All HelpDex cartoons are at Shane's web site,
<A HREF="http://www.shanecollinge.com/">www.shanecollinge.com</A>.
















<!-- *** BEGIN author bio *** -->
<P>&nbsp;
<P>
<!-- *** BEGIN bio *** -->
<P>
<img ALIGN="LEFT" ALT="[BIO]" SRC="../gx/2002/note.png">
<em>
Part computer programmer, part cartoonist, part Mars Bar. At night, he runs
around in a pair of colorful tights fighting criminals. During the day... well,
he just runs around.  He eats when he's hungry and sleeps when he's sleepy.
</em>
<br CLEAR="all">
<!-- *** END bio *** -->

<!-- *** END author bio *** -->


<!-- *** BEGIN copyright *** -->
<hr>
<CENTER><SMALL><STRONG>
Copyright &copy; 2003, Shane Collinge.
Copying license <A HREF="../copying.html">http://www.linuxgazette.com/copying.html</A><BR> 
Published in Issue 88 of <i>Linux Gazette</i>, March 2003
</STRONG></SMALL></CENTER>
<!-- *** END copyright *** -->
<HR>


<TABLE BORDER><TR><TD WIDTH="200">
<A HREF="http://www.linuxgazette.com/">
<IMG ALT="LINUX GAZETTE" SRC="../gx/2002/lglogo_200x41.png" 
	WIDTH="200" HEIGHT="41" border="0"></A> 
<BR CLEAR="all">
<SMALL>...<I>making Linux just a little more fun!</I></SMALL>
</TD><TD WIDTH="380">


<CENTER>
<BIG><BIG><STRONG><FONT COLOR="maroon">Ecol</FONT></STRONG></BIG></BIG>
<BR>
<STRONG>By <A HREF="../authors/malonda.html">Javier Malonda</A></STRONG>
</CENTER>

</TD></TR>
</TABLE>
<P>

<!-- END header -->



The Ecol comic strip is written for 
<A HREF="http://escomposlinux.org">escomposlinux.org</A> (ECOL), the web site that
supports, es.comp.os.linux, the Spanish USENET newsgroup for Linux.  The strips
are drawn in Spanish and then translated to English by the author.  Text
commentary on this page is by LG Editor Iron.  Your browser has shrunk the
images to conform to the horizontal size limit for LG articles.  For better
picture quality, click on each cartoon to see it full size.

<P> 
<A HREF="misc/ecol/ecol-098-e.png"><IMG SRC="misc/ecol/ecol-098-e.png" WIDTH="600" HEIGHT="240"></A>

<HR NOSHADE> <!-- ****************************************************** -->

<A HREF="misc/ecol/ecol-100-e.png"><IMG SRC="misc/ecol/ecol-100-e.png" WIDTH="600" HEIGHT="240"></A>

<HR NOSHADE> <!-- ****************************************************** -->

Ecol is now available in <EM>three</EM> languages: English, Spanish and
Catalan.
<BR>

<A HREF="misc/ecol/ecol-099-e.png"><IMG SRC="misc/ecol/ecol-099-e.png" WIDTH="600" HEIGHT="240"></A>
<P>
<A HREF="misc/ecol/ecol-099.png"><IMG SRC="misc/ecol/ecol-099.png" WIDTH="600" HEIGHT="240"></A>
<P>
<A HREF="misc/ecol/ecol-099-catalan.png"><IMG SRC="misc/ecol/ecol-099-catalan.png" WIDTH="600" HEIGHT="240"></A>

<P>
Your Editor couldn't resist getting Javier to do the same cartoon in Esperanto.
<BR>
<A HREF="misc/ecol/ecol-099-esperanto.png"><IMG SRC="misc/ecol/ecol-099-esperanto.png" WIDTH="600" HEIGHT="240"></A>



<HR NOSHADE> <!-- ****************************************************** -->

All Ecol cartoons are at
<A HREF="http://tira.escomposlinux.org/">tira.escomposlinux.org</A> (Spanish),
<A HREF="http://comic.escomposlinux.org/">comic.escomposlinux.org</A> (English) and
<A HREF="http://tira.puntbarra.com/">http://tira.puntbarra.com/</A> (Catalan).
The Catalan version is translated by the people who run the site; only a few
episodes are currently available.

<P> <SMALL>These cartoons are copyright Javier Malonda.  They may be copied, linked
or distributed by any means.  However, you may not distribute modifications.  If 
you link to a cartoon, please <A
HREF="mailto:jmr@escomposlinux.org">notify</A> Javier, who would appreciate 
hearing from you.
</SMALL>


















<!-- *** BEGIN author bio *** -->
<P>&nbsp;
<P>
<!-- *** BEGIN bio *** -->
<!-- P>
<img ALIGN="LEFT" ALT="[BIO]" SRC="../gx/2002/note.png">
<em>
</em>
<br CLEAR="all" -->
<!-- *** END bio *** -->

<!-- *** END author bio *** -->


<!-- *** BEGIN copyright *** -->
<hr>
<CENTER><SMALL><STRONG>
Copyright &copy; 2003, Javier Malonda.
Copying license <A HREF="../copying.html">http://www.linuxgazette.com/copying.html</A><BR> 
Published in Issue 88 of <i>Linux Gazette</i>, March 2003
</STRONG></SMALL></CENTER>
<!-- *** END copyright *** -->
<HR>


<TABLE BORDER><TR><TD WIDTH="200">
<A HREF="http://www.linuxgazette.com/">
<IMG ALT="LINUX GAZETTE" SRC="../gx/2002/lglogo_200x41.png" 
	WIDTH="200" HEIGHT="41" border="0"></A> 
<BR CLEAR="all">
<SMALL>...<I>making Linux just a little more fun!</I></SMALL>
</TD><TD WIDTH="380">


<CENTER>
<BIG><BIG><STRONG><FONT COLOR="maroon">Fonts for the Common Desktop Environment (or: How To Alias Your Fonts)</FONT></STRONG></BIG></BIG>
<BR>
<STRONG>By <A HREF="../authors/jenkins.graham.html">Graham Jenkins</A></STRONG>
</CENTER>

</TD></TR>
</TABLE>
<P>

<!-- END header -->









<h2>Yet Another New Desktop Environment?</h2>

<p>Actually, it's not. The Common Desktop Environment (CDE) has been around
for as long as some of those who will be reading this article. It was
jointly developed by IBM, Sun, HP and Novell so as to provide a unified
"look and feel" to users of their systems. It was also adopted by other
companies (notably Digital Equipment).
You can find further details at
<a href="http://www-1.ibm.com/servers/aix/cde/cdewhat.html">
"IBM AIX: What is CDE?"</a>.</p>

<P>
[<A HREF="misc/jenkins/ScreenShot.jpg">Screenshot: a typical CDE screen</A>]

<p>The early versions of KDE appear to have been based on CDE, and the
more recent releases of XFce have a look-and-feel which is very similar
to that of CDE. A key difference here is that both KDE and XFce are
Open Source developments.</p>

<img src="misc/jenkins/FontSize1.jpg" width="480" height="306" border="0"
align="right" hspace="10" vspace="10" alt="DeskTop Terminal (dtterm)">

<p>One of the most-used CDE applications is probably its desktop terminal
'dtterm' which was based on 'xterm' with some extra menu-bar capabilities;
its look is not unlike that of 'gnome-terminal'. There are also image-viewer,
performance-monitoring, mail-reader and other useful tools.</p>

<h2>Why Should I Care?</h2>

<p>I work in an environment where I am required to access and manage a
number of Solaris and HP-UX servers. Most of my work is done at a
NetBSD-based Xterminal, managed by a remote Solaris machine so that I
have a CDE desktop. There are times it is managed instead by a remote
Linux machine so that I have a Gnome desktop. And there are times
(too many of them!) when I work from home, using a Linux machine with
a locally-managed Gnome desktop.</p>
<br clear="all">

<p>It matters little where I am working; as soon as I open up a CDE utility
such as 'dtterm', my Xserver starts looking for CDE-specific fonts. It seems
that a number of vendor-supplied backup and other utilities also make use
of these fonts.</p>

<img src="misc/jenkins/FontSize2.jpg" width="480" height="306" border="0"
align="right" hspace="10" vspace="10" alt="DeskTop Terminal without Font Support">

<p>In the case of 'dtterm' the end-result is that an attempt
to select a different-sized font produces a selection list containing eight
fonts, and seven of these can't be found. It is actually possible to get
around this by redefining on the Solaris or HP host the names of the fonts
which are used for the 'dtterm' application. This can be done at either a
system-wide or a user-specific level; either way, it's hardly an elegant
solution.<p>

<p>In the case of a splash-screen produced at CDE-login time, the result
can be quite dire: the user is unable to read the login prompts or error
messages!  More recent versions of both Solaris and HP-UX get around this
by attempting to append an entry like 'tcp/hpmachine:7100' to the
font-path at login time. That's fine unless your site security policy
prohibits the activation of font service on your Solaris and HP servers.</p>

<h2>Why Not Use Specialised Font Server Machines?</h2>

<p>You can designate a couple of machines as font-servers for your site. These
can be small dedicated machines, or they can offer other services (such as
DHCP, NTP, etc.) as well. That's actually the way that it's done with 'thin'
Xterminals from companies like IBM, NCD and HP.</p>

<p>There are several issues. First up, you have to actually install
the CDE-fonts on the font-server machines; there may be some copyright
issues here if you are installing (for instance) HP CDE fonts on Linux
machines.</p>

<p>Something we noticed in practice is that the Xserver software
we are using doesn't seem smart enough to do a transparent fail-over in the
event of a  single server disconnection. So what happens is that
a user suddenly finds himself presented with a blank screen.</p>

<p>If you are working from home with a modem connection to the LAN
on which your font-servers reside, it can take some time for required
fonts to arrive when you start a 'dtterm' application.<p>

<h2>Install on Every Xserver?</h2>

<p>This is certainly a possibility, and if you can live with the
copyright issues, it will solve most of the problems outlined above. But it
will require an extra 10Mb of filespace on each system.<p>

<h2>There is Another Way!</h2>

<p>The good news is that you don't have to lose sleep over the copyright
issues. And you don't have to install strange fonts all over your
font directories.</p>

<p>All you need do is identify some commonly-available fonts which
closely match the CDE-specific fonts, and create one 'fonts.alias' file.
Place it in an appropriate directory (e.g. '/usr/X11R6/lib/X11/fonts/local'),
and run 'mkfontdir' in that directory. Then ensure that the directory
name is included in your font-server configuration
file (e.g. '/usr/X11R6/lib/X11/fs/config'). If your version of Linux
(or NetBSD, or FreeBSD ..) doesn't include a term like 'unix/:7100'
in its 'XF86Config' (or similar) server configuration file, you should
place the name of your selected font directory in that configuration file.</p>

<h2>The Intimate Details</h2>

<p>Here's what the 'fonts.alias'
<a href="misc/jenkins/fonts.alias.txt"> file</a> looks like. 
For clarity, I've shown just the first two and the last alias hereunder, and
I've broken each line at the whitespace between the alias-name and it's
corresponding real font. There wasn't a great deal of science went
into the development of this file, although I did use a couple of
simple scripts to assemble it.  It was just a matter of finding, for each alias,
a font having similar characteristics and size.</p>

<pre>
 ! XFree86-cdefonts-1.0-2
 ! Font Aliases for Common Desktop Environment using XFree86 fonts.
 ! Graham Jenkins &lt;grahjenk@au1.ibm.com&gt; October 2001.
 -dt-application-bold-i-normal-serif-11-80-100-100-m-60-iso8859-1
   "-adobe-courier-bold-o-normal--11-80-100-100-m-60-iso8859-1"
 -dt-application-bold-i-normal-serif-14-100-100-100-m-90-iso8859-1
   "-adobe-courier-bold-o-normal--14-100-100-100-m-90-iso8859-1"
  ...
 "-dt-interface user-medium-r-normal-xxl serif-21-210-72-72-m-140-hp-roman8"
   "-b&amp;h-lucidatypewriter-medium-r-normal-sans-24-240-75-75-m-140-iso8859-1"
</pre>


<h2>Read My Lips</h2>

<p>OK, so you've read this far, and you're still asking "Why Should I Care?".
My guess is that eighty percent of you have never used CDE and are unlikely
to use it in the future.</p>

<p>But what I can guarantee is that most of you are going to run an application
one day, and wonder why it's fonts don't display or scale properly. My hope is
that when that happens, you'll recall what you've read here - and apply it to
the creation of an appropriate 'fonts.alias' file as outlined above.</p>












<!-- *** BEGIN author bio *** -->
<P>&nbsp;
<P>
<!-- *** BEGIN bio *** -->
<P>
<img ALIGN="LEFT" ALT="[picture]" SRC="../gx/2003/authors/Graham_Jenkins.jpg"
WIDTH="223" HEIGHT="207">
<em>
Graham is a Unix Specialist at IBM Global Services, Australia. He lives
in Melbourne and has
built and managed many flavors of proprietary and open systems on several
hardware platforms.
</em>
<br CLEAR="all">
<!-- *** END bio *** -->

<!-- *** END author bio *** -->


<!-- *** BEGIN copyright *** -->
<hr>
<CENTER><SMALL><STRONG>
Copyright &copy; 2003, Graham Jenkins.
Copying license <A HREF="../copying.html">http://www.linuxgazette.com/copying.html</A><BR> 
Published in Issue 88 of <i>Linux Gazette</i>, March 2003
</STRONG></SMALL></CENTER>
<!-- *** END copyright *** -->
<HR>


<TABLE BORDER><TR><TD WIDTH="200">
<A HREF="http://www.linuxgazette.com/">
<IMG ALT="LINUX GAZETTE" SRC="../gx/2002/lglogo_200x41.png" 
	WIDTH="200" HEIGHT="41" border="0"></A> 
<BR CLEAR="all">
<SMALL>...<I>making Linux just a little more fun!</I></SMALL>
</TD><TD WIDTH="380">


<CENTER>
<BIG><BIG><STRONG><FONT COLOR="maroon">Linux-Based Telecom</FONT></STRONG></BIG></BIG>
<BR>
<STRONG>By <A HREF="../authors/lodato.html">Janine M Lodato</A></STRONG>
</CENTER>

</TD></TR>
</TABLE>
<P>

<!-- END header -->





<P> Because the baby-boom generation will soon be the senior population, 
the market for voice-activated telephone services will be tremendous.  An 
open-minded company such 
as IBM or Hewlett-Packard will surely find a way to meet the market demand.
     What is needed by this aging population is a unified messaging system --
preferably voice-activated -- that lets the user check for caller ID, receive 
short messages, check for incoming and outgoing e-mail, access address books 
for both telephone numbers and e-mail addresses, and place telephone calls.  

<P>  Everything that is now done by typing and text will be more quickly and 
easily performed with voice recognition.  That is, a voice will identify a 
caller, read short messages aloud, provide e-mail services in both 
text-to-voice reading of the incoming e-mail and voice-to-text for outgoing 
e-mail, voice access of address books, and voice-activated placing phone calls
(and ending them when you're done).   
         Once the users are able to answer, make and end a call using just 
their voices, working with the telephone will be a breeze and seniors will 
not feel isolated and lonely.  What a boon to society voice-activated 
telephone services will be.  
     Whether or not users are at all computer-savvy, e-mail will also be an 
option applied to the telephone.  It is, after all, a form of communication 
as is the telephone. It is a Linux-based unified communication system. 

<P>  Of great value to the user would be e-mail and its corresponding address 
book.  As e-mail comes  in, messages could be read by way of  a text-to-voice 
method.  
Also of great value would be a telephone system with its corresponding 
address book and numbers.  Short messaging could be read through 
text-to-voice technology and short messages can be left using voice-to-text 
methodology.

<P> One of the most advanced and productive uses of such simple Linux-based 
communication devices is to search the web without going on-line to a  search 
engine. Instead, one can just send an e-mail to Agora in Japan and do multiple
Google searches with a single e-mail. You do not even need a browser.  For
example, we are interested how Linux has been recently doing in the press in
connection with the life sciences and medical applications. Just send a single
e-mail to a free service such as <STRONG>Agora at dna.affrc.go.jp</STRONG>.

In the body of a single e-mail one can put a number of searches. Of course, 
one can modify the search terms:

<PRE>
Send http://www.google.com/search?q=Linux+press+2003+life*sciences\&amp;num=50

Send http://www.google.com/search?q=Linux+press+2003+medical*devices\&amp;num=50

Send http://www.google.com/search?q=Linux+press+2003+telemedicine\&amp;num=50
</PRE>

Within thirty minutes or so, depending on the time of the day and
the load the Agora server is under, you get a number of e-mails back, one for 
each send command in your email. Each e-mail lists the URLs, accompanied by a 
one-paragraph review of the corresponding web site, which fits the keywords 
one has specified in the send command. Then just simply select the reference 
number next to the URL you are interested in and list them in a reply email 
back to Agora, and they will send the web page you have selected. Or you can 
use the deep command to get the entire web-site for the URL. To learn more 
send a Help e-mail to the Agora server for details.

<P> How productive one can get, but do not abuse these fine services since 
they are for the researchers. Use it when it's nighttime in Japan: after 7pm on
the US west coast, after 4pm on the US east coast, and after 11am in western
Europe.

<P>  Anything that allows independence for the user is bound to be helpful to 
every aspect of society.
 
<P>  With the attractive price of a Linux-based unified communication device 
encompassing all the applications mentioned above, users can be connected and 
productive without the need for an expensive Windows system.  

<H2>Resources</H2>

<P> There's a list of Agora and www4mail servers at
<A HREF="http://www.expita.com/servers.html">http://www.expita.com/servers.html</A>.
Two other (less reliable) Agora servers are <STRONG>agora at kamakura.mss.co.jp</STRONG>
(Japan) and <STRONG>agora at www.eng.dmu.ac.uk</STRONG> (UK).  

<P> Www4mail is a very modern type of server that works similar to Agora.
Two servers the author has tested are <STRONG>www4mail at kabissa.org</STRONG> and
<STRONG>www4mail at web.bellanet.org</STRONG>.  Send an e-mail with the words
"SEND HELP" in the body for instructions.



<!-- *** BEGIN author bio *** -->
<P>&nbsp;
<P>
<!-- *** BEGIN bio *** -->
<!-- P>
<img ALIGN="LEFT" ALT="[BIO]" SRC="../gx/2002/note.png">
<em>
</em>
<br CLEAR="all" -->
<!-- *** END bio *** -->

<!-- *** END author bio *** -->


<!-- *** BEGIN copyright *** -->
<hr>
<CENTER><SMALL><STRONG>
Copyright &copy; 2003, Janine M Lodato.
Copying license <A HREF="../copying.html">http://www.linuxgazette.com/copying.html</A><BR> 
Published in Issue 88 of <i>Linux Gazette</i>, March 2003
</STRONG></SMALL></CENTER>
<!-- *** END copyright *** -->
<HR>


<TABLE BORDER><TR><TD WIDTH="200">
<A HREF="http://www.linuxgazette.com/">
<IMG ALT="LINUX GAZETTE" SRC="../gx/2002/lglogo_200x41.png" 
	WIDTH="200" HEIGHT="41" border="0"></A> 
<BR CLEAR="all">
<SMALL>...<I>making Linux just a little more fun!</I></SMALL>
</TD><TD WIDTH="380">


<CENTER>
<BIG><BIG><STRONG><FONT COLOR="maroon">The Sushi Pub at the World Internet Center</FONT></STRONG></BIG></BIG>
<BR>
<STRONG>By <A HREF="../authors/lodato.html">Janine M Lodato</A></STRONG>
</CENTER>

</TD></TR>
</TABLE>
<P>

<!-- END header -->



<BLOCKQUOTE><EM>
    The most important capital of an alliance: people,
        successfully collaborating via the Internet.
</EM></BLOCKQUOTE>
 
Hope springs eternal at the World Internet Center (The Center) in Palo Alto, 
California.  Located in an upstairs suite at the historic Stanford Barn, The 
Center hosts a weekly social event on Thursdays from 5 to 7 PM called "the 
Pub". Aside from sushi and wine provided by The Center at nominal cost to 
those who attend, the networking that takes place at the Pub offers hope to 
millions of people.     

<P>  The Center brings hope by connecting Silicon Valley entrepreneurs, 
corporate executives and technologists, all wanting to forge a start-up 
company that will make a mark on today's economy using info-tech such as the 
Internet.  From the business opportunities that develop, the beneficiaries of 
such opportunities are not just the businessmen putting together the deal.  
In the long run, the beneficiaries may also include people around the world 
afflicted with physical malfunctions and illnesses.
<P>   The Pub allows people to put together start-up firms of varying 
interests.  Small, narrowly-focused companies such as those concentrating on 
life sciences, soon to be headquartered in Singapore, rely on larger 
businesses to disseminate their services and capabilities.  These larger 
businesses are called systems integrators.

<P> Visitors to The Center come from as far away as Russia, Australia, Iran, 
Europe, China, Japan, Chile, Brazil and, of course, from Silicon Valley. 
California's Silicon Valley is the Mecca of high technology: telecom, 
multimedia telecom, computers, Internet and e-commerce, attracting countries 
wanting to ride the high-tech wave of the future because of its potential for 
financial gain.
<P>  Because people forming a team and working well together as a group make 
for the success of a new company, the elbow-rubbing they do socially at the 
Pub is an indication of how things will work out in the long run.  People 
make the deal work, not technology, not ideas, not money, but people with 
those things.  If new businesses can speed along medical help for people with 
all sorts of physical malfunctions, The Center will have achieved a major 
milestone: lowering the cost of medicine and improving the lives of the 
needy.  
<P>  The main theme of The Center is to connect its current and past large 
corporate sponsors such as Amdocs, Deutsche Telekom, HP, IBM, SAP, Sun with 
with small high-tech companies and expert individuals in the form of a series 
of focused think-tanks.

<P> Because my husband, Laszlo Rakoczi, a Hungarian revolutionary who emigrated 
to the USA after the revolution in Hungary was crushed by the Evil Empire 
(the Soviet Union), is a member of the Advisory Board of The Center, many 
small companies seek him out to discuss the potential of collaborative 
strategic alliance type business arrangements. One such high-tech company 
recently approaching him is Sensitron.net. Dr. Rajiv Jaluria, founder and CEO,
met Laszlo through The Center. Sensitron is a small high-tech firm which 
built an end-to-end system to connect medical instruments to monitoring 
stations and databases thus improving the productivity of the medical 
professionals and increasing the quality of medical care. Of course the 
question of what type of platform should the application run on came up. 
Laszlo immediately introduced the idea of embedded Linux based systems for 
the medical instruments as well as for the PDAs and Tablets for the 
professionals and even the potential of Linux based servers and databases. 
Laszlo suggested these since Linux would allow...
<UL>
<LI> a more reliable end-to-end system
<LI> easier maintenance of the system
<LI> a much lower cost end-to-end system
<LI> application specific, simple, productive GUI for the professionals
<LI> a GUI for the patients with telephone type simplicity so the can
connect in telemedicine fashion to the professionals supporting
them.
</UL>
<P> Laszlo could not resist pointing out that the real Evil Empire
which is holding down and fighting the real revolution -- the simple and low 
cost collaboration of all peoples via the Internet, not just the ones who can 
pay for the high cost of a Windows based PC -- is Microsoft with their 
monopolistic pressure tactics.  One of such evil practices of Microsoft is 
the campaign under which they embrace a small company like Sensitron, enhance 
their application of Sensitron, then extinguish the original team. Embrace, 
enhance, extinguish. The Soviets were never that good and imaginative in 
their tyrannical approach. Maybe that is the reason they have failed.

<P> As the biotech and IT arenas converge, IT enables life sciences companies to 
accelerate the development, testing and marketing of their intellectual 
properties, products and services.  Life sciences encompass the fields of 
biotechnology, medical equipment and pharmaceutical products and services.  
Such companies include many small, as well as large entities like Pfizer, 
Chiron, Philips and Agilent.
<P>           It is hard to believe such a sophisticated, practical idea 
could come from people socializing over wine and sushi, but that is indeed 
the case.  Many future start-up companies in the Silicon Valley will have the 
World Internet Center and its weekly Pub to thank for their conception.
 
<P>  One such important think tank, currently in formation stages looking for 
corporate sponsors, is an NIH-funded project for the disabled, aging and 
ailing.  This proposed think tank planning to investigate the potential of 
collaborative telemedicine. For example, due to the shortage of medical 
professionals, China must use telemedicine to connect the small clinics in 
260,000 communities to the 100 large teaching hospitals via VSAT type
Internet linkage.  NeuSoft of China is putting together such a
system and of course they do not want to fall prey to Microsoft's
overpriced systems. In fact Linux is the major platform China wants for all 
their applications supported by  the Red Flag project. 
<P>  Telemed systems of this type apply to a very large group, including 
disabled, aging and ailing people as well as the professionals supporting 
them. The sum of these people account for half the population of the world 
and very few of them can afford the artificially high cost of Windows-based 
systems. Telemed can lower the cost of medicine, improve the capabilities of 
the medical professionals and at the same time improve the quality of life of 
the patients.
<P> Sensitron, with the support of NeuSoft will propose that NIH should 
provide a grant to their strategic alliance under which a disabled and female 
investigator will do a clinical study of the potential of significantly 
improved condition of health via Internet-based collaborative virtual 
community style involvement.  This significant upgrade of self-supported 
health improvement can be achieved using assistive technologies (AT) 
connected via the web.  However, such AT technologies must be upgraded to 
allow collaboration between the health service professionals and their
patients linked via the virtual community.  
The AT based virtual community needs functions such as...
<UL>
<LI> simple and telemed-specific user interface.
<LI> voice based interaction via computer/telephone.
<LI> always-on and always-available systems.
</UL>
     An important point: the AT technologies we would apply
to the disabled and the aging can also be used for the
eyes-busy, hands-busy professionals.  It could be
sold via a for-profit Internet company, with some of
the profits paid back to the non-profit think tank
in the form of grants and matching grants.        
      
<P> Melbourne, Singapore, Dailan, Shanghai, Hong Kong, Kuala Lampur, Munich, 
Budapest, Vienna, Lund, Bern, Helsinki, Shenyang, Dublin, London, Stuttgart, 
Hawaii, Vancouver, Toronto,  etc.,  would all love to come to Silicon Valley 
in this virtual community manner, through a club equipped with a standard 
wireless local area network (WLAN), connected to a virtual private network 
(VPN). This cross-oceanic virtual private network will have kiosk-based 
unified messaging (UM) between the clubs. This would also including very 
low-cost voice over the Internet protocol (VoIP) connected in all major APEC, 
Asian Pacific economic community, cities with the VoIP and UMoIP as well as 
through carrier allies with IP backbone to 120 of the important cities in 
USA/Canada as well as many in the EU. 

   
<P> Those of us with neurological dysfunctions such as MS, ALS, ALD, Parkinsons, 
Alzheimers and myriad more, have a very special personal stake in the 
networking that goes on over sushi and wine.  Life sciences and information 
technology working together can aid these patients in a very effective way. 
For example, techniques like neuroprosthetics -- interaction with devices 
using voice and eye signals -- can develop.  
<P>   As I sit in the only quiet spot at The Center during its weekly, 
after-hours social event, I notice the networking that takes place.  The 
Center provides a great opportunity for people to share ideas for business.  
Everyone from the original architects of the Valley to new entrepreneurs is 
there.   Investors look for good investment opportunities, and start-up 
companies look for anyone wanting to put money into their new venture.  
Basically, it's a people-to-people scene and is exciting to observe.
<P>  Then there are those who find the allure of the event as a singles bar 
irresistible.  Where else can they find stimulating company, fresh sushi and 
good wine at such a fair price?  Personally, having attended the weekly 
occasion for so many months now because my husband, Laszlo, is a member of 
The Center's Advisory Board, I could care less if I ever see sushi again in 
my life!
<P>   By now I have my own circle of friends at this gathering.   And I find 
those wanting to do business with my important husband very courteous and 
attentive to me.  In general, the entire encounter is an "upper" for me, a 
technology midget among giants.
<P>   Nibbling on the cheese set before me, my taste for sushi having long 
since expired, I fulfill my role as a mouse in the boardroom to the max.  I 
overhear conversations of businessmen from the already-mentioned countries 
exchanging e-mail addresses to further negotiate via the Internet.   The 
Center has achieved its goal.      
<P>   I smile a little inward smile, realizing medical researchers around the 
world have been sharing ideas and breakthroughs on the Internet for years.   
A medical Manhattan Project has been globalized thanks to the Internet.  I 
know a lot of afflicted people who were ready for medical help yesterday.
<P>   What can we do besides raise money to hurry things along?  Hope the 
convergence of biotechnology and IT accelerates treatments for physical 
malfunctions worldwide and promotes the free exchange of intellectual 
property among biotechnology companies and research institutions, that's 
what.  And keep that sushi and wine readily available for the Thursday night 
Pub at the World Internet Center. 





<!-- *** BEGIN author bio *** -->
<P>&nbsp;
<P>
<!-- *** BEGIN bio *** -->
<!-- P>
<img ALIGN="LEFT" ALT="[BIO]" SRC="../gx/2002/note.png">
<em>
</em>
<br CLEAR="all" -->
<!-- *** END bio *** -->

<!-- *** END author bio *** -->


<!-- *** BEGIN copyright *** -->
<hr>
<CENTER><SMALL><STRONG>
Copyright &copy; 2003, Janine M Lodato.
Copying license <A HREF="../copying.html">http://www.linuxgazette.com/copying.html</A><BR> 
Published in Issue 88 of <i>Linux Gazette</i>, March 2003
</STRONG></SMALL></CENTER>
<!-- *** END copyright *** -->
<HR>


<TABLE BORDER><TR><TD WIDTH="200">
<A HREF="http://www.linuxgazette.com/">
<IMG ALT="LINUX GAZETTE" SRC="../gx/2002/lglogo_200x41.png" 
	WIDTH="200" HEIGHT="41" border="0"></A> 
<BR CLEAR="all">
<SMALL>...<I>making Linux just a little more fun!</I></SMALL>
</TD><TD WIDTH="380">


<CENTER>
<BIG><BIG><STRONG><FONT COLOR="maroon">Perl One-Liner of the Month: Good Enough For Government Work</FONT></STRONG></BIG></BIG>
<BR>
<STRONG>By <A HREF="../authors/okopnik.html">Ben Okopnik</A></STRONG>
</CENTER>

</TD></TR>
</TABLE>
<P>

<!-- END header -->



<p>When Woomert Foonly answered the door in response to an insistent knocking,
he found himself confronted by two refrigerator-sized (and shaped) men
in dark coats who wore scowling expressions. He noted that they were both
reaching into their coats, and his years of training in the martial arts
and razor-sharp attention to detail resulted in an instant reaction.
<p>- "Hello - you're obviously with the government, and you're here to
help me, even if didn't call you. May I see those IDs?... Ah. <i>That</i>
agency. Do come in, gentlemen.  Feel free to remove your professional scowls
along with your coats, you won't need them. Pardon me while I call your
superiors just to make sure everything is all right; I need to be sure
of your credentials. Please have a seat."
<p>Some moments later, he put down the phone.
<p>- "Very well; everything seems right. How may I help you, or, more to
the point, help your associates who have a programming problem? I realize
that security is very tight these days, and your organization prefers face-to-face
meetings in a secure environment, so I'm mystified as to your purpose here;
I don't normally judge people by appearances, but you're clearly not programmers."
<p>The men glanced at each other, got up without a word, and began a minute
security survey of Woomert's living room - and Woomert himself - using
a variety of expensive-looking tools. When they finished a few minutes
later, they once again looked at each other, and nodded in unison. Then,
each of them reached into the depths of their coat and extracted a rumpled-looking
programmer apiece, both of whom they carefully placed in front of Woomert.
The look-and-nod ritual was repeated, after which they each retired to
the opposite corners of the room to lurk like very large shadows.
<p>Woomert blinked.
<p>- "Well. The requirements of security shall be served... no matter what
it takes. Have a seat, gentlemen; I'll brew some tea."
<p>A few minutes later, after introductions and hot tea - the names of
the human cargo turned out to be Ceedee Tilde and Artie Effem - they got
down to business. Artie turned out to be the spokesman for the pair.
<p>- "Mr. Foonly, our big challenge these days is image processing. As
you can imagine, we get a lot of surveillance data... well, it comes to
us in a standardized format that contains quite a lot of information besides
the image: the IP of the originating site, a comment field, position information,
etc. The problem is, both of us are very familiar with text processing
under Perl but have no idea how to approach extracting a set of non-text
records - or, for that matter, how to avoid reading in a 200MB image file
when all we need is the header info... I'll admit, we're rather stuck.
Our resident C++ guru keeps trying to convince us that this can only be
done in his language of choice - it wouldn't take him more than a week,
or so he says, but we've heard <i>that</i> story before." After an enthusiastic
nod of agreement from Ceedee he went on. "Anyway, we thought we'd consult
you - there just <b>has</b> to be something you can do!"
<p>Woomert nodded.
<p>- "There is. One thing, though: since we're not dealing with actual
classified data or anything that requires a clearance - I assume you've
brought me a carefully-vetted specification sheet, yes? - I want my assistant,
Frink Ooblick, to be in on the discussion. This is, in fact, similar to
the kind of work he's been trying to do lately, so he should find it useful
as well."
<p>Frink was brought in and debugged by the pair Woomert had dubbed Strong
and Silent, although "perl -d" <a href="#[1]">[1]</a> was nowhere in evidence.
After introductions all around, he settled into his favorite easy chair
from which he could see Woomert's screen.
<p>- "All right, let's look at the spec sheet. Hmmm... the header is 1024
bytes; four bytes worth of raw IP address, a forty-byte comment field,
latitude and longitude of top left and bottom right, each of the four measurements
preceded by a length-definition character... well, that'll be enough for
a start; you should be able to extrapolate from the solution for the above."
<p>"What do you think, Frink? Any ideas on how to approach this one?"
<p>Frink was already sitting back in his chair, eyes narrowed in thought.
<p>- "Yes, actually - at least the first part. Since they're reading a
binary file, ``read'' seems like the right answer. As for the second...
well, ``substr'', maybe..."
<p>- "Close, but not quite. ``read'' is correct: we want to get a fixed-length
chunk of the file. However, "substr" isn't particularly great for non-text
strings - and hopeless when we don't know what the field length is ahead
of time, as is the case with the four lat/long measurements. However, we
do have a much bigger gun... whoa, boys, calm down!" he added as Strong
and Silent stepped out of their corners, "it's just a figure of speech!"
<p>"Anyway," he continued, with a twinkle in his eye that hinted at the
"slip" being not-so-accidental, "we have a better <i>tool</i> we can use
for the job, one that's got plenty of pep and some to spare: ``unpack''.
Here, try this:
<pre>
<hr WIDTH="100%"># Code fragment only; actually processing the retrieved data is left as an
# excercise, etc. :)
...
$A="file.img";open A or die "$A: $!";read A,$b,1024;@c=unpack "C4A40(A/A)4", $b
...
<hr WIDTH="100%"></pre>
The moment of silence stretched until Ceedee cleared his throat.
<p>- "Ah... Mr. Foonly... what the heck is <b>that?</b> I can understand
the ``open'' function, even though it looks sort of odd... ``read'' looks
reasonable too... but what's that ``unpack'' syntax? It looks as weird
as snake suspenders."
<p>Woomert glanced around. Artie was nodding in agreement, and even Frink
looked slightly bewildered. He smiled and took another sip of tea.
<p>- "Nothing to worry about, gentlemen; it's just an ``unpack'' <i>template</i>,
a pattern which tells it how to handle the data. Here, I'll walk through
it for you. First, though, let's expand this one-liner into something a
bit more readable, maybe add a few comments:
<pre><hr WIDTH="100%">
$A = "file.img";		# Set $A equal to the file name
open A or die "$A: $!";		# Open using the "new" syntax
read A, $b, 1024;		# Read 1kB from 'A' into $b
@c = unpack "C4A40(A/A)4", $b;	# Unpack $b into @c per template
<hr WIDTH="100%"></pre>
The new syntax of "open" (starting with Perl 5.6.0) allows us to "combine"
the filehandle name and the filename, as I did in the first two lines;
the name of the variable (without the '$' sigil) is used as the filehandle.
If you take a look at ``perldoc -f pack'', it contains a longish list of
template specifications, pretty much anything you might want for conversions;
you can convert various types of data, move forward, back up, and in general
dance a merry jig. The above was rather simple, really:
<pre>
<hr WIDTH="100%">
C4	An unsigned "char" value repeated 4 times
A40	An ASCII string 40 characters long
(A/A)4  ASCII string preceded by a "length" argument which is itself a single 
            ASCII character, repeated 4 times
<hr WIDTH="100%"></pre>
The resulting output was assigned to @c, which now contains something like
this:
<pre>
<hr WIDTH="100%">$a[0]   The first octet of the IP quad
$a[1]    "  second  "    "    "    "
$a[2]    "  third   "    "    "    "
$a[3]    "  fourth  "    "    "    "
$a[4]   The comment field
$a[5]   The latitude of the upper left corner
$a[6]    "  longitude    "    "    "    "    "
$a[7]   The latitude of the lower right corner
$a[8]    "  longitude    "    "    "    "    "
<hr WIDTH="100%"></pre>
Obviously, you can extend this process to your entire data layout. What
do you think, gentlemen - does this fit your requirements?"
<br> 
<br> 
<p>After the now-enthusiastic Artie and Ceedee had been bundled off by
their hulking keepers and the place was once again as roomy as it had been
before their arrival, Woomert opened a bottle of Hennessy's "Paradise"
cognac and brought out a pair of small but fragrant cigars which proved
to be top-grade Cohibas.
<p>- "Well, Flink - that's another case solved; something that never fails
to make me feel cheery and upbeat. As for you - hit those books, young
man! - at least when we get done with this little treat. ``perldoc perlopentut''
will make a good introduction to the various ways to open a file, duplicate
a filehandle, etc.; ``perldoc -f pack'' and ``perldoc -f unpack'' will
explain those functions in detail. When you think you've got it, find a
documented binary file format and write a parser that will pull out the
data for examination. By this time tomorrow, you should be quite expert
in the use of these tools..."
<br> 
<br> 
<p>
<hr WIDTH="100%">
<br><a NAME="[1]"></a>[1] Perl comes with a very powerful built-in debugger;
see "perldoc perldebtut" and "perldoc perldebug" for more information.
Note, however, that it's not very good at locating hidden transmitters
or wiretaps...




<!-- *** BEGIN author bio *** -->
<P>&nbsp;
<P>
<P> Ben is a Contributing Editor for Linux Gazette and a member of
The Answer Gang.

<!-- *** BEGIN bio *** -->
<P>
<IMG ALT="picture" SRC="../../gx/2002/tagbio/ben-okopnik.jpg" WIDTH="199"
   HEIGHT="200" ALIGN="left"  HSPACE="10" VSPACE="10">
<em>
Ben was born in Moscow, Russia in 1962. He became interested in
electricity at age six--promptly demonstrating it by sticking a fork into
a socket and starting a fire--and has been falling down technological mineshafts
ever since. He has been working with computers since the Elder Days, when
they had to be built by soldering parts onto printed circuit boards and
programs had to fit into 4k of memory.  He would gladly pay good money to any
psychologist who can cure him of the resulting nightmares.

<p>Ben's subsequent experiences include creating software in nearly a dozen
languages, network and database maintenance during the approach of a hurricane,
and writing articles for publications ranging from sailing magazines to
technological journals. Having recently completed a seven-year
Atlantic/Caribbean cruise under sail, he is currently docked in Baltimore, MD,
where he works as a technical instructor for Sun Microsystems.

<p>Ben has been working with Linux since 1997, and credits it with his complete
loss of interest in waging nuclear warfare on parts of the Pacific Northwest.
</em>
<br CLEAR="all">
<!-- *** END bio *** -->

<!-- *** END author bio *** -->


<!-- *** BEGIN copyright *** -->
<hr>
<CENTER><SMALL><STRONG>
Copyright &copy; 2003, Ben Okopnik.
Copying license <A HREF="../copying.html">http://www.linuxgazette.com/copying.html</A><BR> 
Published in Issue 88 of <i>Linux Gazette</i>, March 2003
</STRONG></SMALL></CENTER>
<!-- *** END copyright *** -->
<HR>


<TABLE BORDER><TR><TD WIDTH="200">
<A HREF="http://www.linuxgazette.com/">
<IMG ALT="LINUX GAZETTE" SRC="../gx/2002/lglogo_200x41.png" 
	WIDTH="200" HEIGHT="41" border="0"></A> 
<BR CLEAR="all">
<SMALL>...<I>making Linux just a little more fun!</I></SMALL>
</TD><TD WIDTH="380">


<CENTER>
<BIG><BIG><STRONG><FONT COLOR="maroon">Optimizing GCC</FONT></STRONG></BIG></BIG>
<BR>
<STRONG>By <A HREF="../authors/piszcz.html">Justin Piszcz</A></STRONG>
</CENTER>

</TD></TR>
</TABLE>
<P>

<!-- END header -->










   I have a Pentium 3 866MHZ CPU. After reading the
<A HREF="http://freshmeat.net/articles/view/730/">freshmeat article on 
optimizing GCC</A> a few days ago, it got me thinking.


   So I posed the following question:

   How much faster would gcc compile the kernel if gcc itself was optimized?

   I chose to benchmark kernel compilation times, because I think it is a good
   benchmark, and many other people also use it to benchmark system performance.
   Also, at one point or another, most Linux users will have to take the step and
   compile the kernel, so I thought I'd benchmark something that is useful and
   something that people have a general idea of how long it takes to compile without
   optimizations.
   So my test is comprised of the following:

<OL>
<LI> Run 10 kernel compilations and calculate the average time.
      <UL>
      <LI> Regular GCC build.
      <LI> Optimized GCC build.
      </UL>

<LI> The kernel in question is the latest stable Linux kernel.
      <UL>
      <LI> At this time, 2.4.20 remains the latest stable Linux kernel.
      </UL>

<LI> The GCC used with this test is the latest stable gcc.
      <UL>
      <LI> At this time, 3.2.2 remains the lastest stable gcc.
      </UL>
</OL>


<P>
   With an non-optimized compiler, (configure;make;make install)<BR>

   Average of 10 'make bzImage':<BR>

   TIME: 12.42 minutes (762 seconds)


<P>
   With an optimized compiler,
   I specifically used: 
<PRE>
-O3 -pipe -fomit-frame-pointer -funroll-loops -march=pentium3 -mcpu=pentium3
-mfpmath=sse -mmmx -msse
</PRE>


   In case you are wondering how to do this, it is in the FAQ of the gcc tarball.


   The following line is what I used:

<PRE>
   ./configure ; make BOOT_CFLAGS="optimization flags" bootstrap ; make install
</PRE>


   Average of 10 'make bzImage'<BR>

   TIME: 9.31 minutes (571 seconds)


<P>
   I compile almost everything I run on my Linux box.
   I use a package manager called 
<A HREF="http://relink.sourceforge.net/">relink</A> to manage
   all of my installed packages.


<P>
   Optimizing the compiler alone:
   offers a speed increase of: 33% (or 3:11 minutes, 191 seconds faster).
   This may not seem like a lot, but for compiling big programs, it will significantly
   reduce compile time making those QT &amp; Mozilla builds that much faster :)


   The actual test consisted of this:

<PRE>
cd /usr/src/Linux

for i in `seq 1 10`

do

  make dep

  make clean

  /usr/bin/time bzImage 2&gt;&gt; /home/war/log

done
</PRE>


In case you're wondering about the time elapsed per build and how much
the CPU was utilized, here they are:

<PRE>
No Optimization (Standard GCC-3.2.2):

   720.88user 34.54system 12:43.97elapsed 98%CPU (0avgtext+0avgdata 0maxresident)k

   719.06user 35.69system 12:42.09elapsed 99%CPU (0avgtext+0avgdata 0maxresident)k

   719.14user 34.37system 12:39.64elapsed 99%CPU (0avgtext+0avgdata 0maxresident)k

   720.52user 36.42system 12:46.68elapsed 98%CPU (0avgtext+0avgdata 0maxresident)k

   721.07user 33.86system 12:41.59elapsed 99%CPU (0avgtext+0avgdata 0maxresident)k

   718.95user 35.65system 12:41.31elapsed 99%CPU (0avgtext+0avgdata 0maxresident)k

   721.83user 36.26system 12:51.54elapsed 98%CPU (0avgtext+0avgdata 0maxresident)k

   720.29user 34.18system 12:40.63elapsed 99%CPU (0avgtext+0avgdata 0maxresident)k

   719.14user 34.80system 12:39.19elapsed 99%CPU (0avgtext+0avgdata 0maxresident)k

   721.16user 33.88system 12:41.93elapsed 99%CPU (0avgtext+0avgdata 0maxresident)k


Optimized Compiler (GCC-3.2.2 w/ "-O3 -pipe -fomit-frame-pointer -funroll-loops
-march=pentium3 -mcpu=pentium3 -mfpmath=sse -mmmx -msse")

   532.09user 33.62system 9:32.76elapsed 98%CPU (0avgtext+0avgdata 0maxresident)k

   531.57user 32.92system 9:29.25elapsed 99%CPU (0avgtext+0avgdata 0maxresident)k

   532.99user 33.12system 9:31.18elapsed 99%CPU (0avgtext+0avgdata 0maxresident)k

   532.58user 33.16system 9:30.57elapsed 99%CPU (0avgtext+0avgdata 0maxresident)k

   533.18user 32.96system 9:31.34elapsed 99%CPU (0avgtext+0avgdata 0maxresident)k

   534.01user 32.21system 9:32.50elapsed 98%CPU (0avgtext+0avgdata 0maxresident)k

   532.59user 33.41system 9:31.56elapsed 99%CPU (0avgtext+0avgdata 0maxresident)k

   532.76user 33.68system 9:32.01elapsed 99%CPU (0avgtext+0avgdata 0maxresident)k

   534.19user 32.54system 9:31.92elapsed 99%CPU (0avgtext+0avgdata 0maxresident)k

   534.11user 32.76system 9:32.40elapsed 99%CPU (0avgtext+0avgdata 0maxresident)k
</PRE>


   Note:

   I realize some of the optimizations, most specifically (-fomit-frame-pointer) may
   not be a good optimization feature, especially for debugging.  However, my
   goal is to increase compiler performance and not worry about debugging.












<!-- *** BEGIN author bio *** -->
<P>&nbsp;
<P>
<!-- *** BEGIN bio *** -->
<!-- P>
<img ALIGN="LEFT" ALT="[BIO]" SRC="../gx/2002/note.png">
<em>
I am currently in my final year for my A.S. in Computer Science at a
local community college.  I then plan on transferring to another college
for a B.S. in Computer Science.  I have been using UNIX on and off since
1989.  I grew up around Macintosh computers.  In 1996 however, I became
frusturated with Macs and how unstable they were.  So in December, 1996
I installed LinuxPPC R3, this is when I began using Linux daily.  This
distrubution came with kernel 2.1.24, and kde 0.2 I believe, but I
primarily used the CLI because xpmac and gnome/kde was not quite
complete yet.  Then, in 1998 I built a good x86 box and now use Red Hat
for my desktop machine and Slackware for my Linux router/server.  I have
been using Linux every day since then.
</em>
<br CLEAR="all" -->
<!-- *** END bio *** -->

<!-- *** END author bio *** -->


<!-- *** BEGIN copyright *** -->
<hr>
<CENTER><SMALL><STRONG>
Copyright &copy; 2003, Justin Piszcz.
Copying license <A HREF="../copying.html">http://www.linuxgazette.com/copying.html</A><BR> 
Published in Issue 88 of <i>Linux Gazette</i>, March 2003
</STRONG></SMALL></CENTER>
<!-- *** END copyright *** -->
<HR>


<TABLE BORDER><TR><TD WIDTH="200">
<A HREF="http://www.linuxgazette.com/">
<IMG ALT="LINUX GAZETTE" SRC="../gx/2002/lglogo_200x41.png" 
	WIDTH="200" HEIGHT="41" border="0"></A> 
<BR CLEAR="all">
<SMALL>...<I>making Linux just a little more fun!</I></SMALL>
</TD><TD WIDTH="380">


<CENTER>
<BIG><BIG><STRONG><FONT COLOR="maroon">Programming the SA1110 Watchdog timer on the Simputer </FONT></STRONG></BIG></BIG>
<BR>
<STRONG>By <A HREF="../authors/pramode.html">Pramode C.E</A></STRONG>
</CENTER>

</TD></TR>
</TABLE>
<P>

<!-- END header -->



<p>

In last month's article (Fun with Simputer and Embedded Linux),
I had described the process of developing programs for the
Simputer, a StrongArm based handheld device. The Simputer
can be used as a platform for learning microprocessor and
embedded systems programming. This article describes my
attempts at programming the watchdog timer unit attached
to the SA1110 CPU which powers the Simputer. The experiments
should work on any Linux based handheld which uses the same
CPU. 

<h2> The Watchdog timer </h2>

<p>

Due to obscure bugs, your computer system is going to lock
up once in a while - the only way out would be to reset
the unit. But what if you are not there to press the switch?
You need to have some form of `automatic reset'.
The watchdog timer presents such a solution.

<p>

Imagine that your microprocessor contains two registers -
one which gets incremented every time there is a low to
high (or high to low) transition of a clock signal (generated
internal to the microprocessor or coming from some external
source) and another one which simply stores a number. Let's
assume that the first register starts out at zero and is
incremented at a rate of 4,000,000 per second. Lets assume
that the second register contains the number 4,000,000,0.
The microprocessor hardware compares these two registers
every time the first register is incremented and issues
a reset signal (which has the result of rebooting the system)
when the value of these registers match. Now, if we do not
modify the value in the second register, our system is sure
to reboot in 10 seconds - the time required for the values
in both registers to become equal.

<p>

The trick is this - we do not allow the values in these registers
to become equal. We run a program (either as part of the
OS kernel or in user space) which keeps on moving the value
in the second register forward before the values of both
become equal. If this program does not execute (because
of a system freeze), then the unit would be automatically
rebooted the moment the value of the two registers match.
Hopefully, the system will start functioning normally after
the reboot.

<h2> Resetting the SA1110 </h2>

<p>

The Intel StrongArm manual specifies that a software reset
is invoked when the Software Reset (SWR) bit of a register
called RSRR (Reset Controller Software Register) is set.
The SWR bit is bit D0 of this 32 bit register. My first
experiment was to try resetting the Simputer by setting
this bit. I was able to do so by compiling a simple module
whose `init_module' contained only one line:

<p>
RSRR = RSRR | 0x1
</p>

<h2> The Operating System Timer </h2>

<p>

The StrongArm CPU contains a 32 bit timer that is clocked
by a 3.6864MHz oscillator. The timer contains an OSCR (operating
system count register) which is an up counter and four 32
bit match registers (OSMR0 to OSMR3). Of special interest
to us is the OSMR3.

<p>

If bit D0 of the OS Timer Watchdog Match Enable Register
(OWER) is set, a reset is issued by the hardware when the
value in OSMR3 becomes equal to the value in OSCR. It seems
that bit D3 of the OS Timer Interrupt Enable Register (OIER)
should also be set for the reset to occur.

<p>

Using these ideas, it is easy to write a simple character
driver with only one method - `write'. A write will delay
the reset by a period defined by the constant `TIMEOUT'. 

<p>
[<A HREF="misc/pramode/watchdog.c.txt">Text version of this listing</A>]

<p>
<pre>

/*
 * A watchdog timer. 
 */

#include &lt;linux/module.h&gt;
#include &lt;linux/ioport.h&gt;
#include &lt;linux/sched.h&gt;
#include &lt;asm-arm/irq.h&gt;
#include &lt;asm/io.h&gt;

#define WME 1
#define OSCLK 3686400 /* The OS counter gets incremented
                       * at this rate
                       * every second 
                       */

#define TIMEOUT 20 /*  20 seconds timeout */

static int major;
static char *name = "watchdog";

void
enable_watchdog(void)
{
    OWER = OWER | WME;
}

void
enable_interrupt(void)
{
    OIER = OIER | 0x8;
}

ssize_t 
watchdog_write(struct file *filp, const char *buf, size_t
               count, loff_t *offp)
{
    OSMR3 = OSCR + TIMEOUT*OSCLK;   
    printk("OSMR3 updated...\n");
    return count;
}

static struct file_operations fops = {write:watchdog_write};

int
init_module(void)
{
    major = register_chrdev(0, name, &amp;fops);
    if(major &lt; 0) {
       printk("error in init_module...\n");
       return major;
    }
    printk("Major = %d\n", major);
    OSMR3 = OSCR + TIMEOUT*OSCLK;
    enable_watchdog();
    enable_interrupt();
    return 0;
}


void
cleanup_module()
{
    unregister_chrdev(major, name);
}

</pre>
</p>

<p>
It would be nice to add an `ioctl' method which can be used
at least for getting and setting the timeout period.

<p>

Once the module is loaded, we can think of running the following
program in the background (of course, we have to first create
a device file called `watchdog' with the major number which
`init_module' had printed). As long as this program keeps 
running, the system will not reboot.

<p>
[<A HREF="misc/pramode/shutter_upper.c.txt">Text version of this listing</A>]

<p>
<pre>

#include &lt;sys/types.h&gt;
#include &lt;sys/stat.h&gt;
#include &lt;fcntl.h&gt;

#define TIMEOUT 20

main()
{
        int fd, buf;
        fd = open("watchdog", O_WRONLY);
        if(fd &lt; 0) {
                perror("Error in open");
                exit(1);
        }
        while(1) {
                if(write(fd, &amp;buf, sizeof(buf)) &lt; 0) {
                        perror("Error in write, System may reboot any moment...\n");
                        exit(1);
                }
                sleep(TIMEOUT/2);
        }
}

</pre>
</p>

<h2> Conclusion </h2>
<p>
If you are not bored to death reading this, you may
be interested in knowing more about Linux on handheld
devices (and in general, embedded applications). So,
till next time, Bye!




<!-- *** BEGIN author bio *** -->
<P>&nbsp;
<P>
<!-- *** BEGIN bio *** -->
<P>
<img ALIGN="LEFT" ALT="[BIO]" SRC="../gx/2002/note.png">
<em>
I am an instructor working for IC Software in Kerala, India. I would have loved
becoming an organic chemist, but I do the second best thing possible, which is
play with Linux and teach programming!
</em>
<br CLEAR="all">
<!-- *** END bio *** -->

<!-- *** END author bio *** -->


<!-- *** BEGIN copyright *** -->
<hr>
<CENTER><SMALL><STRONG>
Copyright &copy; 2003, Pramode C.E.
Copying license <A HREF="../copying.html">http://www.linuxgazette.com/copying.html</A><BR> 
Published in Issue 88 of <i>Linux Gazette</i>, March 2003
</STRONG></SMALL></CENTER>
<!-- *** END copyright *** -->
<HR>


<TABLE BORDER><TR><TD WIDTH="200">
<A HREF="http://www.linuxgazette.com/">
<IMG ALT="LINUX GAZETTE" SRC="../gx/2002/lglogo_200x41.png" 
	WIDTH="200" HEIGHT="41" border="0"></A> 
<BR CLEAR="all">
<SMALL>...<I>making Linux just a little more fun!</I></SMALL>
</TD><TD WIDTH="380">


<CENTER>
<BIG><BIG><STRONG><FONT COLOR="maroon">Book Review: Unix Storage Management</FONT></STRONG></BIG></BIG>
<BR>
<STRONG>By <A HREF="../authors/puryear.html">Dustin Puryear</A></STRONG>
</CENTER>

</TD></TR>
</TABLE>
<P>

<!-- END header -->



Title: Unix Storage Management<BR>
Authors: Ray A. Kampa, Lydia V. Bell<BR>
Publisher: Apress<BR>
Year: 2003

<P> There are some rather complex--and dare I say it--arcane
issues involved in managing storage in a Unix environment.
Indeed, Unix storage management can be a complicated affair. This is
especially true when you consider the many needs business places on storage
systems such as fault tolerance, redundancy, speed, and capacity.
Apress has published a book that they promote
as being written specifically about this topic, which weighs
in at a comfortable 302 pages of actual material.

<P> In general, I find <I>Unix Storage Management</I> to be a good
primer on storage management. However, I am a little
disappointed in the lack of focus on actually administering
storage. When requesting the book I assumed that I would
learn how to pull up my sleeves and tune and tweak file
system performance, optimize access to network-based
storage, and in general get a real feel for managing storage
in a Unix environment. But alas, that isn't the case. <I>Unix
Storage Management</I> deals mostly with the higher-level
details of understanding how storage works, determining what
kind you need, and then working to integrate that storage
into your network.

<P> This isn't to say that the book doesn't do a good job of
introducing the reader to the major components of modern
Unix storage systems. Indeed, technologies covered include
RAID, SANS, NAS, and backups, to name just a few. Kampa and
Bell actually do a good job of introducing this material,
but they do not treat the subject matter in great depth.
Essentially, after reading the text, readers will have enough
knowledge to do more research and know what they are looking
for, but they doubtless would not be in a position to
actually implement a solution in a demanding environment.

<P> The target audience for this book, whether intentional or
not, are IT managers and those that want a broad overview of
how storage systems work. Administrators that are in the
trenches would also enjoy skimming this book if for no other
reason than to remind themselves of the technologies
available for them. Also, most administrators will look
favorably on the chapter "Performance Analysis", which does
a rather good job of detailing the process of collecting and
analyzing performance information on storage systems. All in
all, this is not a bad book as long as you aren't expecting
to walk away with guru-like powers over Unix storage
systems.





<!-- *** BEGIN author bio *** -->
<P>&nbsp;
<P>
<!-- *** BEGIN bio *** -->
<P>
<img ALIGN="LEFT" ALT="[BIO]" SRC="../gx/2002/note.png">
<em>
Dustin Puryear, a respected authority on Windows
and UNIX systems, is founder and Principle Consultant of Puryear
Information Technology. In addition to consulting in the information
technology industry, Dustin is a conference speaker; has written
articles about numerous technology issues; and authored "Integrate
Linux Solutions into Your Windows Network," which focuses on
integrating Linux-based solutions in Windows environments.
</em>
<br CLEAR="all">
<!-- *** END bio *** -->

<!-- *** END author bio *** -->


<!-- *** BEGIN copyright *** -->
<hr>
<CENTER><SMALL><STRONG>
Copyright &copy; 2003, Dustin Puryear.
Copying license <A HREF="../copying.html">http://www.linuxgazette.com/copying.html</A><BR> 
Published in Issue 88 of <i>Linux Gazette</i>, March 2003
</STRONG></SMALL></CENTER>
<!-- *** END copyright *** -->
<HR>


<TABLE BORDER><TR><TD WIDTH="200">
<A HREF="http://www.linuxgazette.com/">
<IMG ALT="LINUX GAZETTE" SRC="../gx/2002/lglogo_200x41.png" 
	WIDTH="200" HEIGHT="41" border="0"></A> 
<BR CLEAR="all">
<SMALL>...<I>making Linux just a little more fun!</I></SMALL>
</TD><TD WIDTH="380">


<CENTER>
<BIG><BIG><STRONG><FONT COLOR="maroon">Doing Things in GNU/Linux</FONT></STRONG></BIG></BIG>
<BR>
<STRONG>By <A HREF="../authors/shekhar.html">Raj Shekhar</A>, <A HREF="../authors/biswas.html">Anirban Biswas</A>, <A HREF="../authors/barto.html">Jason P Barto</A> and <A HREF="../authors/murray.html">John Murray</A></STRONG>
</CENTER>

</TD></TR>
</TABLE>
<P>

<!-- END header -->

































<blockquote>&nbsp;
<table BORDER=0 CELLSPACING=0 >
<tr>
<td ALIGN=LEFT VALIGN=TOP><a href="#SEC1">1. Chatting / Instant
Messaging with Linux</a></td>

<td>&nbsp;</td>

<td ALIGN=LEFT VALIGN=TOP></td>
</tr>

<tr>
<td ALIGN=LEFT VALIGN=TOP><a href="#SEC15">2. Printing</a></td>

<td>&nbsp;</td>

<td ALIGN=LEFT VALIGN=TOP></td>
</tr>

<tr>
<td ALIGN=LEFT VALIGN=TOP><a href="#SEC20">3. Installing and Managing
Software with RPM</a></td>

<td>&nbsp;</td>

<td ALIGN=LEFT VALIGN=TOP></td>
</tr>

<tr>
<td ALIGN=LEFT VALIGN=TOP><a href="#SEC42">4. Playing and Recording
Music</a></td>

<td>&nbsp;</td>

<td ALIGN=LEFT VALIGN=TOP></td>
</tr>

<tr>
<td ALIGN=LEFT VALIGN=TOP><a href="#SEC55">5. Linux in the Office</a></td>

<td>&nbsp;</td>

<td ALIGN=LEFT VALIGN=TOP></td>
</tr>

<tr>
<td ALIGN=LEFT VALIGN=TOP><a href="#SEC81">6. Gaming With Linux</a></td>

<td>&nbsp;</td>

<td ALIGN=LEFT VALIGN=TOP></td>
</tr>

<tr>
<td ALIGN=LEFT VALIGN=TOP><a href="#SEC88">7. The Post-Install
Tune-up</a></td>

<td>&nbsp;</td>

<td ALIGN=LEFT VALIGN=TOP></td>
</tr>

<tr>
<td ALIGN=LEFT VALIGN=TOP><a href="#SEC99">8. End Note</a></td>

<td>&nbsp;</td>

<td ALIGN=LEFT VALIGN=TOP></td>
</tr>
</table>
</blockquote>
<a NAME="SEC1"></a>
<h1>
1. Chatting / Instant Messaging with Linux</h1>
<!--docid::SEC1::-->
<p>
 <a NAME="SEC2"></a>
<h2>
1.1 History of chatting</h2>
<!--docid::SEC2::-->Many normal users think that GNU/Linux is not for them,
but only for geeks. One reason for this is they believe they can not do
the basic things like chatting under GNU/Linux. They believe that there
are no Instant Messenger clients for Yahoo, MSN, and ICQ in GNU/Linux,
but this is absolutely wrong - chatting was actually first implemented
in UNIX. (Linux is a UNIX like free/open operating system).
<p><tt>talk</tt> was the first chatting program developed from UNIX long
ago when there was no MS trying to capture the Internet. The computing
world was a free land then, and you could share any program with any one,
you could change them too to suit your needs - much like what
<a href="http://www.gnu.org/fsf/fsf.html">Free
Software</a> is trying to do. <tt>talk</tt> is still available with UNIX
&amp; GNU/Linux .
<p>From <tt>talk</tt>, other chatting concepts were developed. IRC was the
first to be developed,then other companies came and hence ICQ, Yahoo, MSN,
Jabber, AIM etc. chat systems were developed.
<p>I shall try to touch on each of the chat systems here.
<p>
 <a NAME="SEC3"></a>
<h2>
1.2 talk</h2>
<!--docid::SEC3::-->It is the most basic chat system but still popular
in LAN's. If you are in a college or office and can access only a UNIX
or Linux terminal then you can chat with your friends. First of all the
talk server daemon must running.
<p>To chat with your friend then all you have to do the following
<br><tt>[anirban@anirban anirban]$ talk &lt;username&gt;@host &lt;tty&gt;</tt>
<br>i.e. if the user name is raj (it will the same as the login name to
the system) and his host computer is www.anyhost.com then it will be
<br><tt>[anirban@anirban anirban]$ talk raj@www.anyhost.com</tt>
<p>You may be wondering what <tt>tty</tt> is? Suppose your friend opened
many terminals - the terminal in which you want to send the message is
specified by the tty number. Numbers start from 0 and only integers are
allowed.
<p>You can do the above with <tt>write</tt> too.
<br><tt>[anirban@anirban anirban]$ write &lt;username@host&gt; &lt;tty&gt;</tt>
<p>If you want not to receive any chat invitition or any chatting then
you have to give the command.
<br><tt>[anirban@anirban anirban]$ mesg n</tt>
<br>to remove the blocking you have to do
<br><tt>[anirban@anirban anirban]$ mesg y</tt>
<p>If you a GUI lover and a heavy Yahoo or MSN chatter then you may not
like this kind of chatting, but for many of us who like GNU/Linux this
old system is still gold.
<p>
 <a NAME="SEC4"></a>
<h2>
1.3 IRC or Internet Relay Chat</h2>
<!--docid::SEC4::-->After <tt>talk</tt> came <i>IRC</i> and it is still
popular. I think that if you really want a high class chatting experience
without the flooding or other bad stuff of Yahoo and MSN, then IRC is the
thing for you. Also, there are many rooms (known as channels in IRC) from
where you can get really good help on GNU/Linux, C/C++ programming, maintaining
your Linux box and much more. (As an aside, in my personal experience I
was a Yahoo chatter and did not get any thing more than flooding and 4
or 5 guys running for a girl in the room. But from IRC I received really
good help when I was stuck.  IRC can really be a great source of help.)
<p>
 <a NAME="SEC5"></a>
<h3>
1.3.1 Basic concept of IRC</h3>
<!--docid::SEC5::-->IRC is a little bit different from Yahoo or MSN chat
since IRC is not owned by any company. It is free/open like GNU/Linux and
generally run by volunteers.
<p>The main difference is that you do not have to sign up to get a ID or
password. So what do you do instead? Choose a nickname and a host (IRC server)
to connect to. Since it is not run by a single company you have to know the
host address, like you have to know the URL to visit a page on Internet. You
can get the addresses of different hosts from the internet and also to which
topic
it is dedicated; for example,
irc.openprojects.net is dedicated to the betterment of open source
projects and open source developers.
<p>So you have to provide your nickname and the host you want to connect
to. If the nickname you pick is already taken then you'll have to provide
another nickname.
<p>IRC newbies should check out the
<a href="http://www.irchelp.org/irchelp/ircprimer.html">IRC Primer</a>
before using IRC for the first time.
<p>
 <a NAME="SEC6"></a>
<h3>
1.3.2 Software for IRC</h3>
<!--docid::SEC6::-->There are many IRC chat applications available but
I think <tt>Xchat</tt> is the best. Most distributions provide it with
their installation CDs and it is often included in default installations.
If it isn't already installed, fear not; you can find it in the installation
CDs or download it from
<a href="http://www.xchat.org">http://www.xchat.org</a>.
You will generally find it in RPM format so installation will not be difficult.
<p>
 <a NAME="SEC7"></a>
<h3>
1.3.3 Configuring Xchat</h3>
<!--docid::SEC7::-->After installation type <tt>xchat</tt> in a terminal
or click the xchat icon (you will find it in <tt>`Main Menu &gt; Internet
&gt; Chat'</tt>).
<p>The first window of Xchat will appear. Provide the nickname you would
like. You can provide more than one. In case a nickname is already taken
in a room xchat will use the other nickname you provided, else it will
pick the first nickname in the list. You also can provide your real name
and as which user you want to use it - (generally you do not have to provide
all these; the system guesses it for you from your system login name and
real name).
<p>Now choose a host from the list of hosts and double click it or click
on <tt>`Connect'</tt> at the bottom. A new window will open with some text
flowing in it. It will take a little time to connect, then after connecting
it will show the rules you should follow to chat in this host. Since IRC
generally is a volunteer effort by good-at-heart people and not by any
company, please try to follow it or else you may get banned. Maintainers
of IRC chat rooms are very strict about the rules.  (That is why chatting
experience is much better here than yahoo or MSN).
<p>Now you will see a single line text box where you can write both what you
want to say, and also commands to navigate.
Commands all start with a <tt>/</tt> (ie. slash). To get the list of
rooms (or channels) in the host type <tt>/list</tt> . You will see all
the rooms, choose the one which suits you and then type <tt>/join #&lt;roomname&gt;</tt>
and then click <tt>`Enter'</tt>. Please note that you have to always give
the number sign (<tt>#</tt>) before any room name.
<p>Now you will enter that room and start chatting. At the extreme right
there will be the list of all users/chatters in that room; selecting any
one will get info about him /her. You will find many buttons at the right
side of your chat window, by selecting a user and clicking the buttons
you can ban or block a user, get info about him/her, invite him/her in
a personal chat or even transfer files in IRC.
<p>So I think you will now be able to chat in IRC. Some day you may even
meet me in IRC. I generally live in the host irc.openprojects.net and in
the room linux (you have to give a number sign ie. # before joining ie.
<tt>/join #linux</tt>).
<p>
 <a NAME="SEC8"></a>
<h2>
1.4 Instant Messaging</h2>
<!--docid::SEC8::-->
 <a NAME="SEC9"></a>
<h3>
1.4.1 ICQ</h3>
<!--docid::SEC9::-->There are several <a href="http://www.icq.com/">ICQ</a>
chat clients in GNU/Linux, and <i>Licq</i> is one of the most popular.
You will find it inside the internet or network sections of the main menu
i.e. KDE main menu ( so <tt>`Main Menu &gt; Internet/Networking &gt; Instant
messenger'</tt>) or just type <tt>licq</tt> in a terminal. After starting
for the first time it will want you to register to their server to get
a ID and password. Then you can login with that ID and password as you
do with most of the Window's versions of ICQ clients.
<p>
 <a NAME="SEC10"></a>
<h3>
1.4.2 Yahoo!</h3>
<!--docid::SEC10::-->Yahoo provides its own yahoo messenger for Linux and
it is similar to the windows version except that you may find some features
missing. To get more details go to <a href="http://www.yahoo.com">yahoo</a>.
<p>Since it is similar to the windows version you will find <tt>`Add Friends,
Your Status, Ban'</tt> etc buttons in their usual places, generally as
part of a menu at the top of Yahoo Messenger. Currently you can send files, invite
people to group chat, and get email notifications.
<p>
 <a NAME="SEC11"></a>
<h3>
1.4.3 AIM</h3>
<!--docid::SEC11::--><a href="http://kitclient.sourceforge.net">Kit</a>
is the AIM client for Linux (KDE). You will find it in the main menu under
network / internet or just type <tt>`kit'</tt> in a terminal. At the first
startup it will ask you to create a profile and if you do not have a account
in AOL it will ask you to create one by going to their site. The current
version of Netscape also has a built-in AIM client.
<p>
 <a NAME="SEC12"></a>
<h2>
1.5 All-In-One IM Clients</h2>
<!--docid::SEC12::-->
 <a NAME="SEC13"></a>
<h3>
1.5.1 Everybuddy</h3>
<!--docid::SEC13::-->Do you use or need several different instant messaging
clients? Everybuddy is an Open Source IM client that supports AIM, ICQ,
MSN, Yahoo!, and Jabber chat, as well as having some file transfer capabilities.
In other words, a single Everybuddy client can take the place of several
single-purpose clients. It is included (and often installed by default)
with some distros, or you can download it from the <a href="http://freshmeat.net/projects/everybuddy/">Everybuddy
homepage</a>.
<p>
 <a NAME="SEC14"></a>
<h3>
1.5.2 GAIM</h3>
<!--docid::SEC14::-->GAIM is another all-in-one client resembling AIM that
works with AIM, ICQ, MSN, Yahoo! and more. If you don't have it already
installed, check out your installation CDs or go to the
<a href="http://sourceforge.net/projects/gaim/">GAIM
website</a>.
<p><a NAME="Printing"></a>
 <a NAME="SEC15"></a>
<h1>
2. Printing</h1>
<!--docid::SEC15::-->
 <a NAME="SEC16"></a>
<h2>
2.1 Which Printer to Use</h2>
<!--docid::SEC16::-->First check to see if your printer is supported by
Linux. Most Epson, HP, and Canon printers will be supported, though there
are some cheap printers which have less hardware hence need special software
to simulate the hardware. This special software isn't generally available
for Linux, so you cannot use these printers. But I would not recommend
you buy these types of printer anyway since their performance is less than
normal printers.
<p>You can find the list of printers that are supported by GNU/linux at
<a href="http://www.linuxprinting.org/database.html">linuxprinting.org</a>.
I have used RH 7.3 and a HP 810c Printer here as an example.
<p>
 <a NAME="SEC17"></a>
<h2>
2.2 Connecting the Printer to the Computer</h2>
<!--docid::SEC17::-->After choosing the printer, check how it connects
to the computer; that is which interface it uses, eg.USB (universal serial
bus) or parallel port. Most printers use parallel port, but modern printers
generally have both options. My printer (HP 810c) can be connected to the
computer by parallel port or USB - I chose the parallel port interface.
After connecting the printer comes the software part.
<p>
 <a NAME="SEC18"></a>
<h2>
2.3 Installing the Printer</h2>
<!--docid::SEC18::-->A standard installation of Red Hat (any version from
6.1) will contain the required software for installing the printer, but
old versions of the software can be difficult to configure. Here I will
focus on RH 7.1 to Rh 7.3 using KDE, though it can also be done from GNOME.
<p>
 <a NAME="SEC19"></a>
<h3>
2.3.1 Configuration Program</h3>
<!--docid::SEC19::-->Now to install printer do the following:
<ol>
<li>
In KDE click the <tt>`kontrol panel'</tt> on the desktop and then click
<tt>`Printer
Configuration'</tt>.</li>

<li>
Click <tt>`New'</tt> and a printer configuration wizard will appear (In
RH 7.1 and 7.2 a wizard will not appear but a new window will appear; however,
the procedure is almost the same).</li>

<li>
Next you have to specify the kind of printer that you want to add, that
is
<tt>`Network Printer'</tt> or <tt>`local Printer'</tt>. Choose local
printer since the printer is attached to the machine from where you are
configuring it. You have to also specify a name to identify the printer.
A name must only have alphabet characters, numbers, "_" (i.e underscore
) and "-"(i.e hyphen). Now click <tt>`New'</tt>.</li>

<li>
If it is a normal printer the interface it uses will be automatically detected.
If not, specify it. For example if it is on the first parallel port it
will be <tt>/dev/lp0</tt>, if it is in the second parallel port it will
be <tt>/dev/lp1</tt> and so on. Now click <tt>`Next'</tt>.</li>

<li>
Next choose the driver for your printer from the given list, you will find
drivers for most normal printers. Different brands of printers (like HP,
Canon, Epson, etc) are listed; choose the appropriate brand and then expand
it by clicking the
<tt>`arrow'</tt> at the left side of the brand name
or double clicking the brand name.</li>

<li>
Choose your printer from the list and expand it to find the driver. Now,
you may find more than one driver has been created for your printer by
different people. Generally choose the driver supported by your brand,
eg. the driver named "hpijs" is supported by HP and although other drivers
also work "hpijs" works better.</li>

<li>
Next click <tt>`Finish'</tt> and you will be back to the main window. Now
click <tt>`Apply'</tt> and then choose <tt>`Save Changes'</tt> from File
in the main menu. ( i.e <tt>`File &gt; Save Changes'</tt>).</li>

<li>
Now choose <tt>`Restart lpd'</tt> from File in the main menu (i.e <tt>`File
&gt; Restart lpd'</tt>). It will restart the printer daemon or process and
your system will be ready for printing.</li>

<li>
You can test if the installation of printer was successful by selecting
<tt>`test'</tt>
in the main menu.</li>
</ol>
If you have trouble setting up the printer, you can use
<a href="http://www.linuxprinting.org/">The
Linux Printing HOWTO</a> for help in troubleshooting.
<p><a NAME="Installing and Managing Software with RPM"></a>
 <a NAME="SEC20"></a>
<h1>
3. Installing and Managing Software with RPM</h1>
<!--docid::SEC20::-->
 <a NAME="SEC21"></a>
<h2>
3.1 What is RPM?</h2>
<!--docid::SEC21::-->RPM stands for <b>R</b>ed Hat <b>P</b>ackage <b>M</b>anager,
and is an easy to use and widely adopted tool for installing, deleting,
upgrading, querying and building software packages. There are other systems
in use (Debian's DEB for example), though RPM is by far the most popular,
and is what you'll get with Red Hat, Mandrake, SuSE and some others.
<p>
 <a NAME="SEC22"></a>
<h2>
3.2 What is a Software Package?</h2>
<!--docid::SEC22::-->Under GNU/Linux, programs are often distributed as
single files known as RPM packages. These packages contain the actual program
files, its documentation or manual pages, a summary of what the program
does, menu entries and icons, plus information on where each file in the
package should be installed. The package also contains information on any
other files requires to run the program (<i>dependencies</i>), disk space
required and so on. It's not unusual for a program to consist of a hundred
or more files, so you can see that packaging them all into a single RPM
file greatly simplifies the tasks of adding or removing programs. When
you install an RPM package, it is uncompressed and broken down into its
individual files which are then put into their correct places. RPM also
checks to see whether other files necessary to run the new package (dependencies)
are present. Another feature of RPM is the building and maintenance of
a database of all packages installed on your computer. This means that
you can quickly check to see which packages are installed, the files belonging
to a particular package, or the package that provides a particular file.
<p>
 <a NAME="SEC23"></a>
<h2>
3.3 Using RPM</h2>
<!--docid::SEC23::-->You can use RPM from the command line, or if you prefer
point'n'click, there are several graphical tools available. KDE has a particularly
good one named <i>kpackage</i>; there are similar apps for users of other
desktop environments, and distribution builders such as Mandrake have their
own RPM front ends. I tend to use kpackage for removing un-needed packages
to free up disk space, and the command line for everything else; but it
doesn't really matter which tool you use. There are significant advantages
to becoming familiar with using RPM from the command line; firstly it will
be available on any RPM based system you may encounter, regardless of the
desktop environment installed, plus it allows you to manage packages on
machines that can't or don't run X. The ability to use wild cards (eg.*)
to install multiple packages from a group at once is another feature of
the command line - for example
<tt>rpm -ivh mysql*</tt>
<p>Just remember that generally speaking, you'll need to be running as
root to install, upgrade or delete packages. However any user can run queries.
<p>
 <a NAME="SEC24"></a>
<h2>
3.4 Installing Packages</h2>
<!--docid::SEC24::-->In all the examples below, we'll use the Mozilla web
browser package as a sample. To install it, first navigate into the directory
holding the package, either from the command line or a graphical file manager.
This directory might be one of your Linux installation CDs, or your home
folder if you've downloaded the package. Using the command line, you would
type:
<br><tt>rpm -ivh mozilla-0.9.8-10mdk.i586.rpm</tt> (your version of Mozilla
might be different..)
<br>Note that you only need to type in the complete file name when you
are working with a package that is not yet installed, otherwise the basic
package name (in this case "mozilla") is enough. And don't forget the tab
key to auto-complete the long file names. If you prefer graphical tools,
clicking on the RPM file in most file managers (Konqueror for example)
will open the appropriate tool, or you can right click and use the "Open
With" dialog box. It's then just a matter of clicking the <tt>`Install'</tt>
button.
<p>
 <a NAME="SEC25"></a>
<h2>
3.5 Updating Packages</h2>
<!--docid::SEC25::-->Updating an existing program with a later version
is done in almost exactly the same way as installing. From the command
line:
<br><tt>rpm-Uvh mozilla-0.9.8-10mdk.i586.rpm</tt><i> (note the uppercase
"U")</i>
<br>Or click the <tt>`Update'</tt> button from kpackage or similar tools.
<p>
 <a NAME="SEC26"></a>
<h2>
3.6 Downgrading Packages</h2>
<!--docid::SEC26::-->What if you upgrade, and then find that you preferred
the older version? You can use the <tt>`"--oldpackage"'</tt> option from
the command line like this:
<br><tt>rpm -Uvh --oldpackage mozilla-0.9.8-10mdk.i586.rpm</tt>.
<p>
 <a NAME="SEC27"></a>
<h2>
3.7 Uninstalling Packages</h2>
<!--docid::SEC27::-->To uninstall from the command line:
<br><tt>rpm -e mozilla</tt>(the complete package name isn't required)
<p>Or start your graphical tool, either from the menu or a terminal. You'll
see a list of all the installed packages. Click on the package you want
to remove, then click the <tt>`Uninstall'</tt> button. Note that if there
are other packages installed that require files from the one you are deleting,
a warning will appear and the uninstall won't go ahead. You can override
this by using
<br><tt>rpm -e --nodeps mozilla</tt> (command line),
<br>or selecting "Ignore Dependencies" (GUI tool), but be aware that this
will break the other programs.
<p>
 <a NAME="SEC28"></a>
<h2>
3.8 Querying packages</h2>
<!--docid::SEC28::-->Listing all installed packages is easy. From the command
line type:
<br><tt>rpm -qa</tt>
<br>If the list is too big to view you can pipe it through less like this:
<br><tt>rpm -qa | less</tt>
<br>Graphical tools will usually show the list of installed packages on
start up.
<p>
 <a NAME="SEC29"></a>
<h3>
3.8.1 Listing all of the files installed by a package</h3>
<!--docid::SEC29::-->This is done with the <tt>rpm -ql</tt> command. Using
mozilla again as an example we would type:
<br><tt>rpm -ql mozilla</tt>
<br>Under a GUI tool just select the package and then click on the " File
List" (or equivalent) button. Listing all of the files supplied by a package
not yet installed - is done with the <tt>rpm -qpl</tt> command. Requires
the complete file name.
<br>Eg.<tt> rpm -qpl mozilla-0.9.8-10mdk.i586.rpm</tt>.
<p>
 <a NAME="SEC30"></a>
<h3>
3.8.2 Listing a description of an installed package</h3>
<!--docid::SEC30::-->can be performed with the <tt>rpm -qi</tt> command.
For example:
<br><tt>rpm -qi mozilla</tt>.
<br>Using a GUI tool, just click on the desired package. To see a description
and other information of an package not yet installed, use the <tt>rpm
-qpi</tt> command. You'll need to use the complete file name for this one.
For example:
<br><tt>rpm -qpi mozilla-0.9.8-10mdk.i586.rpm</tt>.
<br>With a GUI, select the package, or just click on the file from within
your file manager (eg. Konqueror)
<p>
 <a NAME="SEC31"></a>
<h3>
3.8.3 To find the package to which a file belongs</h3>
<!--docid::SEC31::-->To find the package to which a file belongs is done
with the <tt>rpm -q --whatprovides</tt> command. Example:
<br><tt>rpm -q --whatprovides/usr/lib/mozilla/xpicleanup</tt>
<p>
 <a NAME="SEC32"></a>
<h3>
3.8.4 To list all the packages a package depends on</h3>
<!--docid::SEC32::-->Use <tt>rpm -qR</tt> like this:
<br><tt>rpm -qR -mozilla</tt>
<br>(For a package not yet installed use <tt>rpm -qpR</tt>, with the full
file name )
<p>
 <a NAME="SEC33"></a>
<h2>
3.9 Resolving Dependency Problems</h2>
<!--docid::SEC33::-->The most common problem encountered when installing
software is an unsatisfied dependency. You might be already familiar with
this problem if you've installed new software under Windows and then found
it refuses to run, with a "missing ***DLL" error message.
<p>GNU/Linux is subject to the same problems, except that RPM will advise
you of the problem before the program is installed. Many problems can be
avoided when you install Linux - selecting Gnome and KDE for installation
will help, even if you don't intend to run them, as many other programs
use the same libraries.
<p>So what do you do when RPM complains that a package can't be installed,
because of missing packages or files. Write down the missing package/file
names, and check your installation CD-ROMs for packages with similar names
to the ones required. You can use the <tt>rpm-qpl</tt> command to view
the files supplied by a not-yet-installed package. Often it is just a matter
of installing these packages to resolve the problem. Sometimes, though,
it leads to even more dependencies, so it can be a rather lengthy process.
<p>
 <a NAME="SEC34"></a>
<h2>
3.10 Using RPMFind and RPMBone</h2>
<!--docid::SEC34::-->There is another extremely useful tool for finding
files and packages, and that's the <a href="http://rpmfind.net/linux/">RPMFind
website</a>. Type the name of the needed file or package into the box on
the main page and click on the search button; you'll then be presented
with some relevant information and links to the package. Often you'll already
have the package on your Linux CDROM - using the information from RPMFind
you'll know which one to look for. RPMFind can provide a list of dependencies
for a package; the file names in this list link back to their parent package.
Usually, there is also a link to the package's home site. <a href="http://rpm.pbone.net/">RPMBone</a>
is another site that's useful for finding and downloading RPM packages,
and is somewhat similar to RPMFind. RPMBone has a more flexible search
function; you can narrow down your search to only give results for a certain
distribution or architecture for example. It also provides links to a huge
number of ftp servers for downloading. If you need to find a package containing
a particular file to satisfy a dependency, however, RPMFind should be your
first stop.
<p>
 <a NAME="SEC35"></a>
<h2>
3.11 Circular Dependencies</h2>
<!--docid::SEC35::-->Occasionally, you might come across a circular dependency.
This is when package A won't install because package B is missing, but
when you try to install package B, RPM complains that package A is missing.
What you do here is use the <tt>`--nodeps'</tt> option. For example:
<br><tt>rpm -ivh --nodeps mozilla-0.9.8-10mdk.i586.rpm</tt>.
<br>If you are using a GUI tool, click on the "Ignore Dependencies" button.
<p>
 <a NAME="SEC36"></a>
<h2>
3.12 Library Version Problems</h2>
<!--docid::SEC36::-->Sometimes a package will refuse to install because
it requires a library file version later than the one already installed.
This is easily fixed by upgrading the package to which the file belongs.
While library files are usually backwards compatible, occasionally a package
will refuse to install because a certain version of a file is missing,
even though a later version is present. While you could downgrade the library
package, this might well break other programs. Try creating a symbolic
link with the name of the older library file that points to the existing
newer version. If for example the package you are trying to install insists
on having <i>foo.so.3</i>, and you already have <i>foo.so.4</i> installed
in
<tt>/usr/lib</tt>, do this (as root): <tt>ln -s /usr/lib/foo.so.3 /usr/lib/foo.so.4</tt>
<p>
 <a NAME="SEC37"></a>
<h2>
3.13 Automatic Dependency Resolution Tools</h2>
<!--docid::SEC37::-->Automatic Dependency Resolution Tools are available
with some distributions. Mandrake for example has <tt>`urpmi'</tt>, RedHat
has <tt>`up2date'</tt>,while Ximian has
<a href="http://www.ximian.com/products/redcarpet/">RedCarpet</a>.
There are also tools like <a href="http://apt4rpm.sourceforge.net/faq.html">apt4rpm</a>.
These can automatically download and install required packages for you.
See your distributions documentation or the relevant website for details.
<p>
 <a NAME="SEC38"></a>
<h2>
3.14 Miscellaneous</h2>
<!--docid::SEC38::-->
 <a NAME="SEC39"></a>
<h3>
3.14.1 RPM Version Incompatibilities</h3>
<!--docid::SEC39::-->You probably won't have to worry about this unless
your Linux installation is fairly old. Earlier Linux distributions were
packaged with version 3.x of RPM, and are unable to handle the later 4.x
series of packages. The exception to this seems to be version 3.05, you
could update RPM to this version, or just replace your distribution with
something newer. The RPM 4.x series is backwards compatible with the older
series.
<p>
 <a NAME="SEC40"></a>
<h3>
3.14.2 Midnight Commander</h3>
<!--docid::SEC40::-->Occasionally you might want to copy files from an
RPM package without actually installing it. You can do this with a file
manager known as <i>mc</i> (for Midnight Commander). Despite being somewhat
ugly, it is extremely capable. It is supplied (though not always installed
by default) with most distributions, and can be started from a terminal
window by typing <tt>mc</tt>. You can then navigate around the package
as if it was a normal folder, and copy individual files from it.
<p>
 <a NAME="SEC41"></a>
<h3>
3.14.3 Learning More</h3>
<!--docid::SEC41::-->This article only covers the bare basics of RPM, if
you'd like to learn more you could read the RPM manual page (type <tt>man
rpm</tt>), or follow the links below:
<br><a href="http://www.linuxlaboratory.org/modules.php?op=modloadandname=Sectionsandfile=indexandreq=viewarticleandartid=14">RPM
One Liners</a> - A concise guide by Brian Jones, worth downloading and
printing for reference.
<br><a href="http://www.tldp.org/HOWTO/RPM-HOWTO/index.html">The RPM HOWTO</a>
- The "official" HOWTO at the Linux Documentation Project.
<br><a href="http://www.rpm.org/max-rpm/">Maximum RPM</a> - An extremely
thorough guide to just about anything that can be done with RPM. (All these
resources were used in the writing of this article)
<p><a NAME="Playing and Recording Music"></a>
 <a NAME="SEC42"></a>
<h1>
4. Playing and Recording Music</h1>
<!--docid::SEC42::-->It's easy to enjoy music with Linux, whether you are
playing an audio CD, an mp3 or OGG files you recorded yourself onto CDR
or hard disk. You can download tracks, or copy them from your own audio
cds. While there are plenty of tools for audio work under Linux in both
command line and GUI form, I'll be mainly concentrating on the command
line as these tools are available on nearly all Linux distributions. Familiarity
with the command line tools will also make configuring GUI programs much
easier. I'll assume you already have a sound card installed and working.
<p><b>*Warning*</b>
<br>Breach of copyright is taken very seriously in most parts of the world
- this article in no way encourages users to break the law.
<p>
 <a NAME="SEC43"></a>
<h2>
4.1 The Basics</h2>
<!--docid::SEC43::-->Since much of this story involves CDs, perhaps we
should start with a brief look at both audio and data CDs.
<p>Ordinary audio CDs like the ones you'd play in your home stereo differ
from data CDs in that the music is recorded onto the disk as raw data,
that is, there is no file system on the disk. That's why if you put an
ordinary audio CD into your CD drive and try to read the contents in a
file manager, you won't find anything. Your computer is looking for a file
system where there is none. An audio CD doesn't need to be mounted to be
read or burnt - unlike data disks.
<p>Data CDs on the other hand use a file system to organize the way in
which the data is written to and read from the disk, similar to the file
system on a hard disk. Music files in formats such as .mp3, wav, or ogg
are written onto data CDs using a file system just like any other CDROM.
These CDs can be opened in a file manager or from the command line, and
the music played using the appropriate program.
<p>
 <a NAME="SEC44"></a>
<h2>
4.2 Playing Audio Cds</h2>
<!--docid::SEC44::-->There are several GUI tools available for playing
audio CDs. For example Gnome has <tt>gtcd</tt>, KDE has <tt>kscd</tt>,
and <tt>xmms</tt> can also play CDs if you have the audio CD plugin enabled.
These can be started from the Multimedia section of your menu. From the
command line you could try the <tt>cdplay</tt> program, though it's not
very intuitive. Read the manual page (<tt>man cdplay</tt>) to find out
more. Or you can simply use the <tt>`play/skip/stop'</tt> buttons on your
CD drive to play audio CDs.
<p>
 <a NAME="SEC45"></a>
<h2>
4.3 Playing MP3 Files</h2>
<!--docid::SEC45::-->The mp3 format is a hugely popular way of storing
and sharing music. One reason for its popularity is its compact size compared
to other formats or conventional audio CDs. A typical mp3 file is usually
only about a tenth of the size of the same file in .wav or audio CD form.
This means you can fit the equivalent of ten audio CDs on a single CD using
the mp3 format. Other advantages include the reduction in space used when
storing music on a hard disk, and the smaller file size also makes transferring
files over a network much more practical. The disadvantage is that mp3
CDs can't be played on most normal CD players (although mp3 compatibility
is starting to appear on some portable Walkman type players), so you can
only play them on your computer. The most popular player for Linux is probably
<tt>xmms</tt>, an excellent clone of the Windows Winamp player.
<p>
 <a NAME="SEC46"></a>
<h2>
4.4 Using XMMS</h2>
<!--docid::SEC46::-->Xmms (<b>X</b> <b>M</b>ulti<b>M</b>edia <b>S</b>ystem)
is a widely used multi purpose sound file player that is included with
most common distributions. It's mostly used for playing mp3 files, but
it can do much more than that. It is also capable of playing wav files,
<i>ogg-vorbis</i> files (an open source alternative to mp3), streaming
audio etc. Starting xmms can be done from the menus (look under "Sound"
or "Multimedia"), or from a command line just type <tt>xmms</tt>. The interface
is much like that of a CD or tape player, with buttons and sliders to control
starting, stopping, pausing. skip, repeat, volume, balance and so on. It
also includes an equalizer function (the <tt>`eq'</tt> button) and allows
you to set up play lists. To choose a track to play, hit the <tt>L</tt>
key or press the eject <tt>("^")</tt> button. This brings up a window allowing
you navigate to the folder holding your music files. Once there, you can
select a track or tracks to play, or you can choose to play every file
in the folder. As well as the audio options, xmms also has visual options,
and different skins can be selected to change the appearance of the player.
It can even use Windows Winamp skins. Despite the multitude of options,
xmms is exceptionally easy to use. If you want to explore its options and
capabilities, click on the small <tt>O</tt> on the left hand side of the
display.
<p>
 <a NAME="SEC47"></a>
<h2>
4.5 Recording (or ripping) Tracks from Audio CDs</h2>
<!--docid::SEC47::-->There are several tools for recording audio CDs to
hard disk. You can record a single track, selected tracks or the entire
CD at once. The music will be converted to a file format that can be read
by your computer (usually .wav) as it is recorded. While there are both
command line and graphical tools for the job, my favorite is the command
line program <tt>cdparanoia</tt>. If you prefer GUI tools, you might like
to check out grip. One of the things I particularly like about cdparanoia
is the way it can correct jitters or skips on marked or scratched disks.
Here are some examples of how to record tracks from an audio CD using cdparanoia:
<br>To record a single track type:
<p><tt>cdparanoia n</tt>
<p>`n` specifies the track number to record. By default the track will
be recorded to a file named <i>cdda.wav</i>. If cdda.wav already exists
it will be overwritten, so be careful if you are recording several tracks!
You can specify your own file name like this:
<p><tt>cdparanoia n filename.wav</tt>
<br>To record the entire CD type: <tt>cdparanoia -B</tt>
<p>The -B in the above command simply ensures that the tracks are put into
separate files (track1.wav, track2.wav etc.). Cdparanoia has many more
options and an easy to understand manual page; type <tt>man cdparanoia</tt>
to read it.
<p>
 <a NAME="SEC48"></a>
<h2>
4.6 Converting .wav files to mp3</h2>
<!--docid::SEC48::-->If you intend to burn files to an audio CD, you should
leave them in .wav format. On the other hand, if you want to play them
from your hard drive, or burn a data CD that you'll play from your computer,
you'll probably want to convert them to the mp3 format to save space. One
of the most popular tools for this is <i>bladeenc</i>. To convert a .wav
file into a .mp3 use this command:
<p><tt>bladeenc filename.wav</tt>
<p>This will produce a file with the same name as the source file, but
with the .mp3 suffix. If you want to specify a destination filename you
can add it to the end like this:
<p><tt>bladeenc filename.wav filename.mp3</tt>
<p>By default, bladeenc will encode the file at 128kbit/sec, this is the
most commonly used bitrate and results in a very compact file of reasonable
quality. Higher rates can be specified, giving a better sound quality at
the expense of a slightly bigger file size, though it's hard to detect
any improvement in sound quality using sampling rates above 160kbits/sec.
To convert a file at 160kbits/sec use:
<p><tt>bladeenc -160 filename.wav</tt>
<p>
 <a NAME="SEC49"></a>
<h2>
4.7 The Ogg-Vorbis Format</h2>
<!--docid::SEC49::--><i>Ogg -Vorbis</i> is a completely free and open alternative
to the mp3 format. The sound quality is at least as good as mp3, and ogg
files can be played on players such as xmms. You'll need the <a href="http://www.vorbis.com/download_unix.psp">vorbis-toolspackage</a>
(check your distributions installation CDs) to convert .wav files to .ogg.
Converting is easy:
<p><tt>oggenc filename.wav</tt>
<p>As with bladeenc, the sampling rate (and sound quality) can be specified.
This is done by using the following command:
<p><tt>oggenc -q n filename.wav</tt> (where n is the quality level)
<p>The default level is 3, but can be any number between 1 and 10. Level
5 seems to be roughly equivalent to an mp3 encoded at 160kbits/sec.
<p>
 <a NAME="SEC50"></a>
<h2>
4.8 Converting .mp3 files into .wav format</h2>
<!--docid::SEC50::-->Audio CDs are usually burned from a collection of
.wav or .cdr files - you can't directly burn mp3s to an audio cd unless
you convert them to one of these formats. The <i>mpg123</i> program can
do this for you and is often installed by default with many distributions.
To convert an .mp3 to a .wav, type:
<p><tt>mpg123 -w filename.wav filename.mp3</tt> (note - the destination
filename comes first)
<p>Note also that there is some slight loss of sound quality when a .wav
file is converted to mp3 format, and this isn't regained when converting
back to .wav - so if possible, you should try to use .wav files that have
been ripped from an audio CD rather than converting back from mp3s.
<p>
 <a NAME="SEC51"></a>
<h2>
4.9 To Normalize a group of .wav files</h2>
<!--docid::SEC51::-->Creating an audio CD using tracks from different sources
can lead to variations in volume amongst the tracks. By using a program
named
<i>normalize</i>, you can equalize the volume level of a group of
files. You'd normally do this to a group of .wav files before burning them
to CD. Normalize is a command line tool; to equalize the volume of all
the .wav files in a folder type:
<p><tt>normalize -m /path/to/files/*.wav</tt>
<p>
 <a NAME="SEC52"></a>
<h2>
4.10 Recording (or burning) an Audio CD</h2>
<!--docid::SEC52::-->I'll assume that you have a CDR or CDRW drive installed
and configured already - if you don't, see the links section at the end
of this article for more information on set-up details. I'll also assume
that you'll be using <i>cdrecord</i> to burn your disks - it's the most
popular tool for this and is also what's used by most graphical front-ends
like
<i>XCDRoast</i> etc. Your files will need to be in .wav or .cdr format;
most likely they will be .wavs. Put all the files you want to burn into
a separate folder to simplify the burning process, and make sure that they
will fit onto the disk (you can check by changing into the folder and running
the <tt>du</tt> command). Now it's just a matter of typing this command:
<br><tt>cdrecord -v speed=4 dev=0,0,0 -audio -pad *.wav</tt>
<p>Of course, your speed and device numbers might be different - you can
use <tt>cdrecord -scanbus</tt> to find the device address, and the speed
setting will depend on your CD burners' speed rating. In general, burning
will be more reliable at slower speeds, especially on older machines.
<p>
 <a NAME="SEC53"></a>
<h2>
4.11 Recording a Data CD (mp3 or ogg)</h2>
<!--docid::SEC53::-->If you only plan to play a music CD on your computer
or other mp3 capable device, you can burn mp3 or ogg files in exactly the
same way as an ordinary data CD. Because data CDs use a file system, we'll
use
<tt>mkisofs</tt> (to create the file system) and <tt>cdrecord</tt>
to burn the disk. As in the audio CD example above, put all the files into
a separate folder. The two operations can be combined into a single command
like this:
<p><tt>mkisofs -R /path/to/folder_to_record/ | cdrecord -v speed=4 dev=0,0,0
-</tt>
<p>Don't forget the hyphen at the end! As in the example for burning audio
CDs, you might have to use different speed and dev numbers. Older or slower
computers might have difficulties running both mkisofs and cdrecord at
once - if so you can do it as two separate operations like this:
<p><tt>mkisofs -R -o cdimage.raw /path/to/folder_to_record/</tt>
<p>This creates an image named cdimage.raw. Then burn the disk:
<p><tt>cdrecord -v speed=4 dev=0,0,0 cdimage.raw</tt> (using suitable speed
and device settings..)
<p>
 <a NAME="SEC54"></a>
<h2>
4.12 Some detailed information on related topics:</h2>
<!--docid::SEC54::--><a href="http://www.tldp.org/HOWTO/MP3-HOWTO.html">The
Linux MP3 HOWTO</a>
<br><a href="http://www.tldp.org/HOWTO/mini/MP3-CD-Burning/index.html">The
Linux MP3 CD Burning HOWTO</a>
<br><a href="http://sox.sourceforge.net">The SOX Homepage</a>- The swiss
army knife of Linux sound tools.
<br><a href="http://www.cs.columbia.edu/~cvaill/normalize">The Normalize
Homepage</a>
<br><a href="http://www.linuxgazette.com/issue57/feenberg.html">Installing
and Setting Up a CDR/CDRW</a> - <b>*Note*</b> Modern desktop distributions
can usually detect and setup a CD burner without any manual configuration
required. This page may be useful however for older/difficult distributions
that require manualinstallation.
<br><a href="http://www.vorbis.com/">The OggVorbis Homepage</a>
<br><a href="http://bladeenc.mp3.no/">The Bladeenc Homepage</a>
<br><a href="http://www.fokus.gmd.de/research/cc/glone/employees/joerg.scchilling/private/cdrecord.html">The
CDRecord Homepage</a>
<br><a href="http://www.xiph.org/paranoia">The CDParanoia Homepage</a>
<br><a href="http://www.mpg123.org/">The mpg123 Homepage</a>
<p><a NAME="Linux in the Office"></a>
 <a NAME="SEC55"></a>
<h1>
5. Linux in the Office</h1>
<!--docid::SEC55::-->Office applications for Linux are now quite mature.
Linux desktop productivity tools are in fact so capable and feature rich
that corporations are beginning to look at alternatives to MS Office with
its high TCO, and leaning towards office suites like OpenOffice and StarOffice.
OpenOffice in fact is a part of discussion being held between multiple
companies including Boeing Aeronautics, a major international technology
contractor, to begin to define a standard for Office document formats.
Allowing greater portability of documents between office suites; XML of
course is being discussed as the most viable vehicle for the mission. But
I digress, to sum it up, if someone wishes to do all of their word processing,
spreadsheets, and so on on the Linux desktop they would find themselves
very satisfied with today's applications.
<p>
 <a NAME="SEC56"></a>
<h2>
5.1 Word Processing</h2>
<!--docid::SEC56::-->User's choices for word processing on Linux are varied
and diverse. To list several applications would probably only begin to
scratch the surface of what is available. So in an effort to simplify things
I will include a review of those applications with which I have experience
and list a few more with which I do not. In addition all of the Word Processors
I have used in the past are Microsoft Word compatible - meaning that they
can both read and write MS Word documents. This will come in handy for
all those who are afraid they will never be able to open a '.Doc' (Word
Document) once they move over to Linux.
<p>
 <a NAME="SEC57"></a>
<h3>
5.1.1 StarOffice Star Writer</h3>
<!--docid::SEC57::-->StarOffice is an office suite written for Unix / Linux
and developed by Sun Microsystems. Until recently StarOffice was a freely
available download but recently with their newest version (I believe StarOffice
6.0) they have begun charging a license fee. I haven't used StarOffice
6.0 but I am familiar with the final release just before it. StarOffice
is a functional Office suite with many additional features. When you first
open StarOffice you are presented with a screen very similar in appearance
to the MS Windows desktop complete with 'Start' bar. StarOffice provides
the full suite of functionality including word processing, spreadsheets,
email, and MS PowerPoint-like presentations. And again, any and all documents
written in StarOffice can be saved in the equivalent MS Office format so
you lose no compatibility with co-workers / family members / unconverted
Windows- but-soon-to-be-Linux users. StarOffice, along with all the other
applications I review here provides a very similar interface to MS Word.
So there is little to any learning curve involved with using it. In fact
the only real difference between the list of applications reviewed here
and those in MS Office is how well the applications can read and write
in the MS format. StarOffice does a very adequate job of processing MS
Word documents. The only area where StarOffice runs into trouble is reading
and writing MS Word documents that have tables embedded in them or those
containing forms. However if it is merely straight text, such as a report
there is typically no problem involved. But it is my unconfirmed suspicion
that even this has changed now that you can pay for StarOffice. Again I
have not checked this first hand but I believe the reason Sun now charges
for StarOffice is because they paid Microsoft for the APIs that allow StarOffice
to read and write MS Office documents. Up until now the formats have merely
been reverse-engineered, kind of a best guess at how to interpret the symbols
in a MS Word document. For more information, and to confirm / deny my crazy
allegations check out StarOffice at <a href="http://www.staroffice.com">http://www.staroffice.com</a>.
<p>
 <a NAME="SEC58"></a>
<h3>
5.1.2 OpenOffice Writer</h3>
<!--docid::SEC58::-->OpenOffice is a spinoff of Sun's StarOffice (as the
name may suggest). And like StarOffice, OpenOffice also provides a suite
of applications including word processing, spreadsheets, and MS PowerPoint-like
presentations. OpenOffice also supports the reading and writing of MS Office
documents. Recently I rewrote my resume (and being a Linux-only kinda guy
I of course couldn't use MS Word) using OpenOffice. This consisted of multiple
fonts and font sizes, the embedding of tables so as to properly position
the many elements of my resume, and also included bullets. After completing
my resume I proceeded to save it in both the native OpenOffice format as
well as the MS Word 2000 format. Of course before shipping it out to employers
I wanted to check to see how it would look in MS Word. So when I went to
work the next day I proceeded to open it using (the very expensive) MS
Word 2000. Much to my surprise, with the exception of some bullets the
resume had made it through quite well. All the tables were properly in
place, the fonts well represented in their multiple sizes, and the only
thing wrong with the bullets was that instead of the
<tt>`>'</tt> arrow
I had originally had, it was replaced with a round bullet (I guess perhaps
that MS Word didn't support the particular type of bullet I had specified.)
So OpenOffice (if you absolutely refuse to pay for software) will do very
well for your Office and Word Processing needs. More can be learned about
OpenOffice (you can download a copy of OpenOffice from here too) at <a href="http://www.openoffice.org">http://www.openoffice.org</a>.
<p>
 <a NAME="SEC59"></a>
<h3>
5.1.3 AbiWord</h3>
<!--docid::SEC59::-->The only complaint I can really make concerning AbiWord
can be summed up in one word - tables. While AbiWord does support tables
the interface and handling of tables has a long way to go. Otherwise AbiWord
is much like StarOffice and OpenOffice. Reads and writes simple MS Word
documents, very MS-like interface, etc. Another nice feature of AbiWord
is its support of Gnome themes; a feature that neither OpenOffice or StarOffice
provide.
<p>
 <a NAME="SEC60"></a>
<h2>
5.2 Others Word Processors</h2>
<!--docid::SEC60::-->
 <a NAME="SEC61"></a>
<h3>
5.2.1 Kword</h3>
<!--docid::SEC61::-->Kword is part of the KOffice office suite for the
KDE desktop. It has all the usual bells and whistles, frames, numbering,
bullets, tables, paragraph alignment, etc. However from what I can see
at on the webpage KOffice does not support reading and writing of MS Word
documents. If you would like to learn more point your browser to
<br><a href="http://www.koffice.org">http://www.koffice.org</a>
 <a NAME="SEC62"></a>
<h3>
5.2.2 Corel WordPerfect</h3>
<!--docid::SEC62::-->WordPerfect was once the dominant word processor for
PCs, and the latest available version for Linux is WordPerfect2000. It
is a fully featured application and is unusual in that it is not Linux
native, but is essentially the Windows binaries running under a built-in
version of Wine. For this reason, it may not be as stable or fast as some
of the others. You can find out more about Corel WordPerfect 2000 at:
<br><a href="http://linux.corel.com/products/wpo2000_linux/index.htm">http://linux.corel.com/products/wpo2000_linux/index.htm</a>
<p><a NAME="IDX1"></a>
 <a NAME="SEC63"></a>
<h2>
5.3 Spreadsheets</h2>
<!--docid::SEC63::-->Spreadsheets are possibly the most widely used Office
program, and as with word processors, Linux users have several quality
offerings to choose from.
<p>
 <a NAME="SEC64"></a>
<h3>
5.3.1 Gnumeric</h3>
<!--docid::SEC64::-->Gnumeric is the GNOME projects spreadsheet, and it
is a mature and stable program. Compatability with MS Excel files is quite
good, and gnumeric is often installed by default with many distros, or
at least is available on the installation CDs. A good choice for those
who don't want to install a big, fullblown suite like Star/Open Office.
<p>
 <a NAME="SEC65"></a>
<h3>
5.3.2 StarOffice/OpenOffice Calc</h3>
<!--docid::SEC65::-->The Calc spreadsheet is another very competent office
tool, with very good Excel compatability. Possibly the best choice for
heavy duty spreadsheet users.
<p>
 <a NAME="SEC66"></a>
<h3>
5.3.3 kspread</h3>
<!--docid::SEC66::-->Koffices' spreadsheet, kspread, is a good looking,
powerful app, however its Excel compatability is somewhat limited, so if
this is important to you, perhaps one of the others would be a better choice.
Otherwise an excellent spreadsheet.
<p>
 <a NAME="SEC67"></a>
<h2>
5.4 Other Office Applications</h2>
<!--docid::SEC67::-->The number and quality of office type apps. has grown
rapidly in the last couple of years. Some of these are listed below, along
with a brief description and links. Most people will probably find these
will meet their needs, though some may find they are dependant on certain
features of Microsoft Office apps. that just aren't available under Linux
yet. For these users, a proprietary product known as
<a href="http://www.codeweavers.com/products/office/">Codeweavers
Crossover Office</a> allows MS Office (as well as some others) to be installed
and run directly from Linux. I've only listed the more well known programs
here, and some of these are probably already installed on your computer.
If you need to install them, most of these packages can be found on your
installation CDs, otherwise just follow the links. The KDE apps listed
here are mainly included in the
<a href="http://www.koffice.org/">koffice</a>
package, while the GNOME programs are usually separate packages.
<p>
 <a NAME="SEC68"></a>
<h3>
5.4.1 Address Books</h3>
<!--docid::SEC68::-->GNOME has <tt>`gnomecard'</tt> (part of the gnome-pim
package), KDE uses <tt>`kaddressbook'</tt>.
<p>
 <a NAME="SEC69"></a>
<h3>
5.4.2 Fax Apps</h3>
<!--docid::SEC69::-->There is <tt>`kfax'</tt> with KDE, <a href="http://www.gnome.org/gnome-office/gfax.shtml">gfax</a>
for GNOME. Programs like hylafax and mgetty+sendfax are also popular.
<p>
 <a NAME="SEC70"></a>
<h3>
5.4.3 Email/PIM</h3>
<!--docid::SEC70::-->Outlook users will probably be most interested in
Ximians'
<a href="http://www.gnome.org/gnome-office/evolution.shtml">Evolution</a>,
a fully featured email/PIM program.
<br>There is also a proprietary add-on for Evolution named Connector, and
this can enable Evolution to function as an MS Exchange client. As well
as email, it has address book, calendar and task-scheduling/alarm features.
<p>
 <a NAME="SEC71"></a>
<h3>
5.4.4 Drawing/Graphics</h3>
<!--docid::SEC71::--><a href="http://www.gnome.org/gnome-office/dia.shtml">Dia</a>
is a structured diagrams program similar to Visio, while
<a href="http://www.gnome.org/gnome-office/sketch.shtml">Sketch</a>
is a vector drawing package.
<br>KDE has
<a href="http://www.koffice.org/kontour/">Kontour </a>(another
vector drawing tool), <a href="http://www.thekompany.com/projects/kivio/">Kivio
</a>for flowcharts, and <a href="http://www.koffice.org/kchart/">KChart</a>
kchart for drawing charts/graphs.
<p>
 <a NAME="SEC72"></a>
<h3>
5.4.5 Financial</h3>
<!--docid::SEC72::--><a href="http://www.gnome.org/gnome-office/gnucash.shtml">Gnucash</a>
is a popular personal finance manager, though there are several others.
And if you just can't survive without Quicken, you'll be pleased to know
it will run under Linux using Codeweavers Crossover Office.
<p>
 <a NAME="SEC73"></a>
<h3>
5.4.6 Database</h3>
<!--docid::SEC73::--><a href="http://www.postgresql.org">postgreSQL</a>
is included with distros such as Mandrake and RedHat, also there is
<a href="http://www.MySQL.com/">MySQL</a>,
a somewhat simpler database.
<br>As well, there are databases such as
<a href="http://www.borland.com/interbase/">Interbase</a>,
and
<a href="http://www.ibphoenix.com/main.nfs?a=ibphoenix&amp;page=ibp_development">Firebird</a>
a free, open source version of Interbase.
<br>The big names like
<a href="http://www.oracle.com/ip/deploy/database/oracle9i/index.html?db_linux.html">Oracle</a>
and <a href="http://www-3.ibm.com/software/data/db2/linux/">IBM</a> (DB2
for Linux) support Linux too.
<p>
 <a NAME="SEC74"></a>
<h3>
5.4.7 Presentation Apps.</h3>
<!--docid::SEC74::-->The major office suites (StarOffice, OpenOffice, Applix,
KOffice) all have functional presentation programs. The StarOffice and
OpenOffice versions can handle MS PowerPoint format files.
<p>
 <a NAME="SEC75"></a>
<h3>
5.4.8 Organizers</h3>
<!--docid::SEC75::-->If you are looking for something a little lighter
than Evolution, KDE has
<tt>`korganizer'</tt>, and GNOME uses <tt>`gnomecal'</tt>
(part of the gnome-pim package).
<p>
 <a NAME="SEC76"></a>
<h3>
5.4.9 Calculators</h3>
<!--docid::SEC76::-->RedHat distribution installs three calculators by
default. <i>Xcalc,GNOME Calculator,KCalc</i>.
<p><i>Xcalc</i> is a scientific calculator desktop accessory that can emulate
a TI-30 or an HP-10C. Xcalc can be started from a terminal emulator or
from the Run dialog box by typing <tt>xcalc</tt>. It takes the following
command line argument (among others)
<dl COMPACT>
<dt>
<tt>-rpn</tt></dt>

<dd>
This option indicates that Reverse Polish Notation should be used. In this
mode the calculator will look and behave like an HP-10C. Without this flag,
it will emulate a TI-30.</dd>
</dl>
<i>GNOME Calculator</i> is a double precision calculator application. GNOME
Calculator is included in the <tt>gnome-utils</tt> package, which is part
of the GNOME desktop environment. It is intended as a GNOME replacement
for xcalc. To run GNOME Calculator, select gcalc from the Utilities submenu
of the Main Menu in GNOME, or type
<tt>gcalc</tt> on the command line in
a terminal emulator or Run Program dialog box.
<p><i>KCalc</i> can be started by typing <tt>kcalc</tt> on the command
prompt or in the Run Program Dialog box.
<p>
 <a NAME="SEC77"></a>
<h3>
5.4.10 PDF Files Viewer</h3>
<!--docid::SEC77::-->PDF (Adobe's Portable Document Format) is a format
for transfering documents with formatting (including fonts, sizes, etc)
with a few more extra features (such as URLs). It is a quite common format
for publishing documents - it is generally quite difficult to edit such
a document, but relativly easy to show it, as it already contains an exact
definition of the document (somewhat similar to postscript). There are
a number of viewers for PDF documents under GNU/Linux.
<p>
 <a NAME="SEC78"></a>
<h4>
5.4.10.1 XPdf</h4>
<!--docid::SEC78::--><tt>`xpdf'</tt> supports most of PDFs features, including
LZW-compressed images URLs and encryption. It can be started from command
prompt by typing <tt>xpdf</tt>. xpdf's home is at
<a href="http://www.foolabs.com/xpdf/">http://www.foolabs.com/xpdf/</a>
. It also comes with a number of distros, including RedHat, Mandrake and
SuSE.
<p>
 <a NAME="SEC79"></a>
<h4>
5.4.10.2 Adobe Acrobat Reader</h4>
<!--docid::SEC79::-->This is not free software (although it can be used
free of charge for non-commercial use). Free software gives you permission
to use, copy, study and improve the software. You can learn more about
Free Software
<a href="http://www.gnu.org/philosophy/free-sw.html">here</a>.
<p>You can get Adobe Acrobat Reader from:
<a href="http://www.adobe.com/products/acrobat/readstep2.html">http://www.adobe.com/products/acrobat/readstep2.html</a>
<p>
 <a NAME="SEC80"></a>
<h2>
5.5 Links</h2>
<!--docid::SEC80::-->It's impossible to cover all the available office
type programs in just a few paragraphs; if you need to know more try the
links below:
<p><a href="http://www.Linux-Office.net/">The Linux-Office Site</a> is
a very useful resource for Linux office apps.
<br><a href="http://www.koffice.org/">The KOffice website</a>
<br><a href="http://www.gnome.org/gnome-office/index.shtml">The Gnome-Office
website</a>
<br><a href="http://www.codeweavers.com/products/office/">Codeweavers Crossover
Office</a> can run Windows apps like MS Office, Lotus Notes and others
under Linux.
<p><a NAME="Gaming With Linux"></a>
 <a NAME="SEC81"></a>
<h1>
6. Gaming With Linux</h1>
<!--docid::SEC81::-->Okay, you've got your word processor and spreadsheet
set up under Linux, plus a web browser, an email client and a million other
boring programs. But what about the important stuff? <i>Where are the games?</i>
Most people probably wouldn't think of Linux as being a gamer's platform,
and it's true that the real hard-core gamer might need to stick with a
dual boot system for the time being at least. But for the rest of us, Linux
can offer a great environment for playing games. There are plenty of good
ones on offer, and accelerated 3D is no longer a pain to set up for many
common cards. And now that lots of Windows games are playable using emulators
like WineX, we've never had so much choice.
<p>
 <a NAME="SEC82"></a>
<h2>
6.1 Where to Get Them</h2>
<!--docid::SEC82::-->Most distros come with a variety of games, and you
probably have some already installed. Look in your GNOME or KDE menus under
"Games" or "Amusements". If you don't have any installed, check your installation
CDs for packages named "kdegames" and "gnome-games". These packages include
a wide variety of games ranging from Arcade style games (Tetris and Jezzball
clones, Snakerace etc.), board games (Chess, Mahjongg, Reversi and so on),
to card games, plus games to test your strategic skills and much more.
As well as the ones in the KDE and GNOME packages, some distros include
others like Maelstrom, Bzflag (a popular tank game), FrozenBubble (one
of my favourites), and even 3D games such as Tuxracer and Chromium. Browse
the package directory of your distro CDs to see what's available. There
are also lots of games freely available from the internet, plus some commercially
produced/ported titles for sale.
<p>
 <a NAME="SEC83"></a>
<h2>
6.2 Commercial Games</h2>
<!--docid::SEC83::-->A few companies make or have made games available
to Linux users. Perhaps the best known of these was Loki, who are sadly
no longer in business. Loki ported quite a few popular titles to linux,
(QuakeIII Arena, HeavyGearII, Descent III etc), and you might even find
some of them still available for sale. Probably the best way to find out
what's available is to check out online stores like
<a href="http://www.tuxgames.com/">TuxGames</a>.
<p>
 <a NAME="SEC84"></a>
<h2>
6.3 Hardware and Software Requirements</h2>
<!--docid::SEC84::-->Broadly speaking, games can be split into two groups;
those that require accelerated 3D support, and those that don't. The first
group would include 3D games such as QuakeIII, UnrealTournament, Tuxracer
and so on, while the second group includes the 2D style of games such as
those found in the GNOME and KDE game packages (and of course the old style
text games would be in this group too). Games in the 2D group don't need
anything special to run them; if you can run GNOME or KDE you'll have no
problems. The 3D games however are much more fussy about what they'll run
on; as well as having enough RAM and CPU power, you'll also need a Linux-supported
3D graphics card (or on-board chip). Individual game requirements vary
widely, but as rough guide, the recommended minimum for QuakeIII is a 233Mhz
CPU with an 8meg graphics card and 64 meg. of RAM. Keep in mind that this
is the bare minimum required just to run the game; you'd probably need
to double those figures to get reasonable performance.
<p>Setting up 3D graphics with Linux used to be a bit tricky, but now many
modern distros will set up the appropriate drivers during installation,
giving accelerated 3D out of the box. When you are setting up your machine,
keep in mind that it isn't the brand of graphics card you have that is
important, but rather the brand of chipset it uses. In other words, you
would use ATI drivers for a card with an ATI chipset, regardless of its
brand. Currently, most Linux gamers seem to prefer nVidia based cards,
and with good reason. NVidia write their own (closed source) drivers for
Linux; these are easy to install and set up and their performance is generally
on a par with their Windows counterparts. ATI based cards are also popular,
and ATI have recently released unified drivers for Linux users with their
higher end cards. Check out
<a href="http://linuxgamers.net/lsd/hardwaretalk/x42.html">this
site</a> to see what cards are supported. As well as suitable hardware,
you'll also want to use a recent version (&gt;4.0) of XFree86. Later versions
have much better 3D support, so if you are having problems an XFree86 upgrade
should be one of your first steps.
<p>
 <a NAME="SEC85"></a>
<h2>
6.4 Setting up NVidia Based Graphics Cards</h2>
<!--docid::SEC85::-->As I mentioned earlier, nVidia based cards have become
a favourite amongst Linux gamers. While these cards will usually work perfectly
out of the box for normal 2D work, you'll probably have to install nVidia's
drivers to get accelerated 3D. Some recent distros will install these for
you during installation of Linux; even so, you might want to read on so
you can update to the current drivers. These drivers are "unified", ie.
the same drivers are used for all versions of nVidia based cards. Before
you start, you should check that you are running a reasonably recent version
of XFree86. There are two drivers that will need to be installed, the NVIDIA_kernel
package and the NVIDIA_GLX package. The kernel package is available in
several versions to suit most common distros; if there isn't one to suit
your distro you can also get tarballs. And if you aren't sure which package
to get there is a script you can download from nVidia that will advise
you of the best package to use.
<p>Once you've downloaded the packages, you should exit X (not strictly
necessary, but it makes recovery easier if things go wrong..) and install
the kernel package and then the GLX package. If you are upgrading rather
than installing, nVidia recommend removing the old GLX package first instead
of upgrading over it. Now all you need to do is edit a couple of lines
in your XF86 configuration file (usually this will be /etc/X11/XF86Config-4).
Assuming you already have an XF86Config file working with a different driver
(such as the 'nv' or 'vesa' driver that is installed by default), then
all you need to do is find the relevant Device section and replace the
line:
<br><tt>Driver "nv" (or Driver "vesa")</tt>
<br>with
<br><tt>Driver "nvidia"</tt>.
<br>In the Module section, make sure you have:
<br><tt>Load "glx"</tt>
<br>You should also remove the following lines:
<br><tt>Load "dri"</tt>
<br><tt>Load "GLcore"</tt>
<br>if they exist. Now restart X to use the new drivers. If you have any
problems, check the <tt>`XF86'</tt> log file (named <tt>` /var/log/XFree86.0.log'</tt>
or similar) for clues. Also read the documentation on the nVidia website
and in the README file included in the NVIDIA_GLX package.
<p>
 <a NAME="SEC86"></a>
<h2>
6.5 Playing Windows Games With Linux</h2>
<!--docid::SEC86::-->Some well known games produced for windows have Linux
binaries available (Return To Castle Wolfenstein etc). The Linux binaries
allow you to install the data files from your Windows game CD, and then
run the game directly from Linux. Some games include the Linux binaries
on the CD (rare, but hopefully this will become commonplace), or you may
have to download them.
<p>Another way to run Windows games is to use an emulator like Wine, or
WineX. The list of programs that will run well under Wine is growing steadily,
though for gaming you'll probably be more interested in WineX by Transgaming.
WineX is a commercial offshoot of the Wine project, and while Wine aims
to enable Windows programs in general to be run under Linux, WineX focusses
exclusively on games. Many Windows games install and play perfectly with
WineX, including Max Payne, Warcraft III, Diablo II, The Sims etc. There
is a list of games at the <a href="http://www.transgaming.com/">TransGaming</a>
website, however I have found that there are some games not listed that
will still play under WineX. Try searching
<a href="http://google.com">Google</a>
for <i>name of game + winex</i> for help on unlisted games. You can download
the WineX source from the CVS tree for free, but compiling and configuring
can be confusing for a newbie. Much better is the precompiled packages
that are available to subscribers. Subscriptions cost US$5 per month, with
a 3 month minimum. There are some other benefits to subscribers, though
I think the binaries alone are worth the price.
<p>
 <a NAME="SEC87"></a>
<h2>
6.6 Links</h2>
<!--docid::SEC87::-->Obviously this has been no more than a very brief
overview of Linux gaming; see the sites listed below for more info.
<p><a href="http://www.tldp.org/HOWTO/Linux-Gamers-HOWTO/index.html">The
Linux Gamers HOWTO</a> - I can't recommend this one highly enough; if you
are serious about gaming with Linux, read this doc!
<br><a href="http://www.linuxforkids.com/">Linux for Kids</a> - This site
has lots of links and info about games and educational apps. You don't
have to be a kid to enjoy this stuff - adults will probably find some good
stuff here too.
<br><a href="http://www.icculus.org/lgfaq/">The Linux Game FAQ</a> - A
comprehensive list of Frequently Asked Questions about Linux gaming.
<br><a href="http://www.happypenguin.org/news">The Linux Game Tome</a>
- Definitely worth a look!
<br><a href="http://www.newbreedsoftware.com/linux/">New Breed Software</a>
- Bill Kendrick and co. have written some good games, mainly for kids.
<br><a href="http://www.racer.nl/">Racer</a> - is a promising race car
game with extremely good graphics and physics. Not finished yet, but still
playable, and makes a nice change from the shooters.
<br><a href="http://www.transgaming.com/">Transgamings Winex Homepage</a>
<br><a href="http://linuxgamers.net/">LinuxGamers</a> is another interesting
game site.
<p><a NAME="The Post-Install Tune-up"></a>
 <a NAME="SEC88"></a>
<h1>
7. The Post-Install Tune-up</h1>
<!--docid::SEC88::-->Many Linux distributions install lots of stuff that
many people never use. Often there are services or daemons set to run that
aren't needed, and system configuration settings are conservative so as
to run on the widest range of hardware. All these things can detract from
your Linux desktops performance, and that's what this article is about;
getting more performance from your box by performing a post-install tune-up.
Here's what we'll be doing:
<ul>
<li>
Tidying up the boot-up process</li>

<li>
Freeing resources by removing un-needed services/daemons from boot scripts</li>

<li>
Freeing hard disk space</li>

<li>
Speeding up hard disk performance with <tt>hdparm</tt></li>

<li>
Recompiling the kernel for better system performance</li>
</ul>
You don't need to do <b>all</b> these things by the way, only those that
you need or want to, the rest are optional. Be aware that if your box is
reasonably configured to begin with (and most distributions are, out of
the box), you are unlikely to get a dramatic improvement from any one of
these things.
<p>However, by doing some or all of them you should end up with a system
that boots more quickly, has more disk space and slightly more free memory,
and a small but noticeable improvement in performance. The one thing you
can do that will have a profound effect on performance is run lightweight,
efficient software, so you should make that your first priority when building
a fast Linux desktop.
<p>
 <a NAME="SEC89"></a>
<h2>
7.1 Disclaimer</h2>
<!--docid::SEC89::-->I don't guarantee the accuracy of anything that follows,
so use this information at your own risk. In other words, if by following
this guide you trash your computer, don't blame me.
<p>
 <a NAME="SEC90"></a>
<h2>
7.2 Before You Start</h2>
<!--docid::SEC90::-->
<p>I'll assume you'll be running a <i>SysV type system</i>, as this is
the most common and what you'll have if you are running a Red Hat-type
distribution. SysV simply refers to the way services etc are started at
boot time. If you are running some other system, you can still clean up
the boot process; check your distribution's documentation for details.
It's a good idea to browse through any documentation that came with your
distribution anyway. This might be in the form of HTML files or a printed
manual, and with many modern distributions is very comprehensive. The documentation
should be able to provide you with details of any variations to the boot
process used by your particular distribution, though I think the common
distributions are pretty much all the same in this regard.
<p>If this is a fresh installation, you should make sure all your hardware
is properly configured first. Linux has really come a long way as far as
hardware recognition goes, and chances are you won't have to do anything,
though things like sound cards sometimes have to be setup manually. Once
you are sure everything is going to work, you can continue with the tuning
<font size=-1>....</font>
<p>
 <a NAME="SEC91"></a>
<h2>
7.3 The Boot-Up</h2>
<!--docid::SEC91::-->We probably should start with a brief description
of what actually happens when you boot your Linux box. You can skip this
bit if you want to, but I think an understanding of what goes on at boot-up
can often be helpful, so stick around <font size=-1>....</font>
<p>After the kernel is kicked into life by GRUB or LILO or whatever, the
following steps occur (with possible minor variations):
<ol>
<li>
The kernel gets it's own internal systems set up.</li>

<li>
The <tt>init</tt> program is started.</li>

<li>
init reads the <tt>`/etc/inittab'</tt> file. This file provides init with
the default run level for the system (eg console, graphical, single-user
etc.) Take a look at <tt>`/etc/initab'</tt> yourself so you understand
what the various run levels do.</li>

<li>
<tt>init</tt> then runs a script (usually <tt>`/etc/rc.d/rc.modules'</tt>)
to load auto loaded kernel modules.</li>

<li>
Depending on the default run level (from <tt>`/etc/inittab'</tt>),
<tt>init</tt>
then starts or stops all the services in that particular run level directory.
For example, if <b>runlevel 5</b> is the default according to <tt>`/etc/inittab'</tt>,
then all the scripts in <tt>`/etc/rc.d/rc5.d/'</tt> are run.</li>

<li>
<tt>init</tt> then runs another script (usually <tt>`/etc/rc.d/rc.local'</tt>)
. This is where the user can put stuff that he/she wants to be started
automatically at boot-up. You might want to start your OSS sound driver
from here for example. Users of older versions of Mandrake can edit this
file to get rid of that damn ugly penguin <font size=-1>....</font></li>
</ol>
This is a bit over-simplified, but I hope you get the idea. If you take
a look at the scripts in <tt>`/etc/rc.d/rc5.d'</tt> (or whatever your default
runlevel is), you'll see that the names of the scripts all start with an
<b>S</b>(for Start) or a <b>K</b>(for Kill or stop) followed by a number.
The number determines the order in which the scripts are run. Most distributions
start a diverse range of services or daemons at boot time, and while this
automatically covers the needs of the majority of users, it also means
that there will probably be several processes started that aren't required.
This results in longer boot-up times, increased memory usage, and more
potential security holes. Stripping un-needed stuff from the start-up scripts
is easy; the hard part is determining what does what, and what you do and
don't need. Hopefully the listing below will be of some help, it notes
some of the most commonly found services and gives a brief description
of what they do. And don't forget to make backups or notes of your changes,
just in case you find you really did need to have that daemon started after
all
<font size=-1>....</font> (this list is courtesy of Stan and Peter
Klimas' Linux Newbie Administrators Guide)
<dl COMPACT>
<dt>
<tt>anacron</tt></dt>

<dd>
checks <tt>cron</tt> jobs that were left out due to down time and executes
them. Useful if you have <tt>cron</tt> jobs scheduled but don't run your
machine all the time--anacron will detect that during bootup.</dd>

<dt>
<tt>amd</tt></dt>

<dd>
automount daemon (automatically mounts removable media).</dd>

<dt>
<tt>apmd</tt></dt>

<dd>
Advanced Power Management BIOS daemon. For use on machines, especially
laptops, thatsupport apm.</dd>

<dt>
<tt>arpwatch</tt></dt>

<dd>
keeps watch for ethernet/ip address pairings.</dd>

<dt>
<tt>atd</tt></dt>

<dd>
runs jobs queued by the "at" command.</dd>

<dt>
<tt>autofs</tt></dt>

<dd>
control the operation of automount daemons (competition to <tt>amd</tt>).</dd>

<dt>
<tt>bootparamd</tt></dt>

<dd>
server process that provides information to diskless clients necessary
for booting.</dd>

<dt>
<tt>crond</tt></dt>

<dd>
automatic task scheduler. Manages the execution of tasks that are executed
at regular but infrequent intervals, such as rotating log files, cleaning
up <tt>/tmp</tt> directories, etc.</dd>

<dt>
<tt>cupsd</tt></dt>

<dd>
the <i>Common UNIX Printing System (CUPS)</i> daemon. CUPS is an advanced
printer spooling system which allows setting of printer options and automatic
availability of a printer configured on one server in the whole network.
The default printing system of Linux Mandrake.</dd>

<dt>
<tt>dhcpd</tt></dt>

<dd>
implements the Dynamic Host Configuration Protocol (DHCP) and the Internet
Bootstrap Protocol (BOOTP).</dd>

<dt>
<tt>gated</tt></dt>

<dd>
routing daemon that handles multiple routing protocols and replaces
<tt>routed</tt>
and <tt>egpup</tt>.</dd>

<dt>
<tt>gpm</tt></dt>

<dd>
useful mouse server for applications running on the Linux text console.</dd>

<dt>
<tt>httpd</tt></dt>

<dd>
daemon for the Apache webserver.</dd>

<dt>
<tt>inetd</tt></dt>

<dd>
listens for service requests on network connections, particularly dial-in
services. This daemon can automatically load and unload other daemons (ftpd,
telnetd, etc.), thereby economizing on system resources. Newer systems
use <tt>xinetd</tt> instead.</dd>

<dt>
<tt>isdn4linux</tt></dt>

<dd>
for users of ISDN cards.</dd>

<dt>
<tt>kerneld</tt></dt>

<dd>
automatically loads and unloads kernel modules.</dd>

<dt>
<tt>klogd</tt></dt>

<dd>
the daemon that intercepts and displays/logs the kernel messages depending
on the priority level of the messages. The messages typically go to the
appropriately named files in the directory
<tt>/var/log/kernel</tt>.</dd>

<dt>
<tt>kudzu</tt></dt>

<dd>
detects and configures new or changed hardware during boot.</dd>

<dt>
<tt>keytable</tt></dt>

<dd>
loads selected keyboard map.</dd>

<dt>
<tt>linuxconf</tt></dt>

<dd>
the linuxconf configuration tool. The automated part is run if you want
linuxconf to perform various tasks at boottime to maintain the system configuration.</dd>

<dt>
<tt>lpd</tt></dt>

<dd>
printing daemon.</dd>

<dt>
<tt>mcserv</tt></dt>

<dd>
server program for the Midnight Commander networking file system. It provides
access to the host file system to clients running the Midnight file system
(currently, only the Midnight Commander file manager). If the program is
run as root the program will try to get a reserved port otherwise it will
use 9876 as the port. If the system has a portmapper running, then the
port will be registered with the portmapper and thus clients will automatically
connect to the right port. If the system does not have a portmapper, then
a port should be manually specified with the -p option (see below).</dd>

<dt>
<tt>named</tt></dt>

<dd>
the Internet Domain Name Server (DNS) daemon.</dd>

<dt>
<tt>netfs</tt></dt>

<dd>
network filesystem mounter. Used for mounting nfs, smb and ncp shares on
boot.</dd>

<dt>
<tt>network</tt></dt>

<dd>
activates all network interfaces at boot time by calling scripts in
<tt>`/etc/sysconfig/network-scripts'</tt>.</dd>

<dt>
<tt>nfsd</tt></dt>

<dd>
used for exporting nfs shares when requested by remote systems.</dd>

<dt>
<tt>nfslock</tt></dt>

<dd>
starts and stops nfs file locking service.</dd>

<dt>
<tt>numlock</tt></dt>

<dd>
locks numlock key at init runlevel change.</dd>

<dt>
<tt>pcmcia</tt></dt>

<dd>
generic services for pcmcia cards in laptops.</dd>

<dt>
<tt>portmap</tt></dt>

<dd>
needed for Remote Procedure Calls. Most likely, you need it for running
network.</dd>

<dt>
<tt>postfix</tt></dt>

<dd>
mail transport agent which is a replacement for sendmail. Now the default
on desktop installations of Mandrake (RedHat uses sendmail instead).</dd>

<dt>
<tt>random</tt></dt>

<dd>
saves and restores the "entropy" pool for higher quality random number
generation.</dd>

<dt>
<tt>routed</tt></dt>

<dd>
daemon that manages routing tables.</dd>

<dt>
<tt>rstatd</tt></dt>

<dd>
kernel statistics server.</dd>

<dt>
<tt>rusersd, rwalld</tt></dt>

<dd>
identification of users and "wall" messaging services for remote users.</dd>

<dt>
<tt>rwhod</tt></dt>

<dd>
server which maintains the database used by the <tt>rwho(1)</tt> and
<tt>ruptime(1)</tt>
programs. Its operation depends on the ability to broadcast messages on
a network.</dd>

<dt>
<tt>sendmail</tt></dt>

<dd>
mail transfer agent. This is the agent that comes with Red Hat.</dd>

<dt>
<tt>smbd</tt></dt>

<dd>
the SAMBA (or smb) daemon, a network connectivity services to MS Windows
computers on your network (hard drive sharing, printers, etc).</dd>

<dt>
<tt>squid</tt></dt>

<dd>
An http proxy with caching. Proxies relay requests from clients to the
outside world, and return the results. You would use this particular proxy
if you wanted to use your linux computer as a gateway to the Internet for
other computer on your network. Another (and probably safer at home) way
to do it, is to set up masquarading.</dd>

<dt>
<tt>syslogd</tt></dt>

<dd>
manages system activity logging. The configuration file is
<tt>`/etc/syslog.conf'</tt>
.</dd>

<dt>
<tt>smtpd</tt></dt>

<dd>
Simple Mail Transfer Protocol, designed for the exchange of electronic
mail messages. Several daemons that support SMTP are available, including
sendmail, smtpd, rsmtpd, qmail, zmail, etc.</dd>

<dt>
<tt>usb</tt></dt>

<dd>
daemon for devices on Universal Serial Bus.</dd>

<dt>
<tt>xfs</tt></dt>

<dd>
X font server.</dd>

<dt>
<tt>xntpd</tt></dt>

<dd>
finds the server for a NIS domain and stores the information about it in
a binding file.</dd>

<dt>
<tt>ypbind</tt></dt>

<dd>
NIS binder. Needed if computer is part of Network Information Service domain.</dd>
</dl>
Many users will find they have a lot of unnecessary stuff in their
<tt>/etc/rc.d/rc*.d/</tt>
folders. If you aren't sure if you need something or not, just move it
somewhere else temporarily (but <b>don't delete</b> it), re-boot and see
how things go. If you find that you do need it, just move it back and re-boot.
<p>
 <a NAME="SEC92"></a>
<h2>
7.4 How To Make The Changes</h2>
<!--docid::SEC92::-->I usually just fire up a file manager and make a new
folder in
<tt>/etc/rc.d</tt> called <tt>JunkFromRc5</tt> or something similar.
Then I just drag the unneeded scripts from <tt>/etc/rc.d/rc5.d/</tt> into
the new folder (obviously my default runlevel is 5, you might need to use
something different..). Alternatively, you can use a graphical tool like
<tt>tksysv</tt>, or perhaps your distribution has it's own tool. You might
also want to edit <tt>`/etc/rc.d/rc/local'</tt>. Apart from user's entries,
this often has a few lines that overwrite <tt>`/etc/issue'</tt> with some
system specs (and/or that hideous penguin), and the contents of the
<tt>`/etc/issue'</tt>
file are displayed just before the login screen. Many people prefer to
delete this bit and insert a line to display a fortune here instead, eg.
<tt>/usr/games/fortune &gt; /etc/issue</tt>. As usual, if you aren't sure
what you are doing, make a backup copy of the file first.
<p>
 <a NAME="SEC93"></a>
<h2>
7.5 Re-Claiming Hard Disk Space</h2>
<!--docid::SEC93::-->This bit is easy, if a little time consuming. I usually
start by getting rid of unneeded software packages. Fire up your favorite
package management tool (like <tt>kpackage</tt>) and spend some time browsing
through the list of installed programs. Tools like kpackage are ideal for
this kind of work as they can easily show you the size of each package,
a summary (so you know what the package is for), and any related dependencies.
<p>Do you really need six editors, four file managers, five shells, three
ftp clients etc.? Don't be surprised to get rid of a hundred megs or more
of stuff. Packages like the Tex related ones, Emacs/Xemacs, and various
emulators are never used by many, yet they occupy lots of space. If you
are doubtful about removing some packages, keep some notes so you can re
install them later if you have to.
<p>Many distributions also install lots of documentation (check out
<tt>/usr/doc</tt>
or <tt>/usr/share/doc</tt> ). You'll probably find that there are only
a few files in there worth keeping, and remember most of this stuff is
available on the Web anyway. The <tt>du</tt> tool is invaluable for finding
disk hogs. Also look for core files left over from crashes; these are only
really useful to debuggers and can be deleted.
<p>
 <a NAME="SEC94"></a>
<h2>
7.6 Hard Disk Tuning</h2>
<!--docid::SEC94::-->I've seen a few articles claiming huge performance
gains from using
<tt>hdparm</tt>, a command line tool for setting (IDE)
hard disk parameters. The claimed gains are sometimes in the order of several
hundred percent. While I'm not doubting these figures, I have to wonder
whether they just indicate that the disk was horribly mis-configured to
start with. I've tried using hdparm on a few disks, and have found modest
gains in performance. Keep in mind that disk performance is only one factor
in overall system performance, and even a fairly big jump in disk performance
might not make a perceptible difference to the overall speed of your system.
If a disk was noticeably slow, I would certainly give hdparm a try, but
otherwise I wouldn't worry about it too much. Some common distributions
already set some of the optimizing parameters at boot time anyway, so as
I said before, unless you think there is a problem, you could probably
just leave well enough alone. If you do decide to give it a go, make sure
you read (and understand) the man page (at a terminal emulator type <tt>man
hdparm</tt>), and be aware that with some of the adjustments there is a
small but real risk that things can go spectacularly wrong, ie. corruption
of the file system. If you'd like to give hdparm a try, here's the basic
usage:
<br><tt>hdparm [-flag] device</tt>
<p>Running hdparm without any flags (or with the <tt>-v</tt> flag) will
display the current settings. To see the current settings for my first
hard disk (/dev/hda) for example, I would use: <tt>hdparm /dev/hda</tt>.
To do a basic check of the speed of the first hard disk I would use: <tt>hdparm
-Tt /dev/hda</tt>. Some more commonly used flags:
<dl COMPACT>
<dt>
<tt>-c3</tt></dt>

<dd>
Enables IDE 32 bit I/O support</dd>

<dt>
<tt>-a [sectcount]</tt></dt>

<dd>
Get/set sector count for read ahead</dd>

<dt>
<tt>-m16</tt></dt>

<dd>
Sets multi-sector I/O (in this example 16 sectors, you may need to experiment
to find the optimal number for your disk)</dd>

<dt>
<tt>-u1</tt></dt>

<dd>
Unmasks interupts</dd>

<dt>
<tt>-d1 -X34</tt></dt>

<dd>
Unable DMA mode2 transfers</dd>

<dt>
<tt>-d1 -X66</tt></dt>

<dd>
Enable UltraDMA mode2 transfers</dd>
</dl>
Read the man page for more options.
<p>I guess the logical way to use hdparm would be to find out what your
disk supports, then set hdparm accordingly. More commonly though, trial
and error is used, changing one setting at a time and measuring the performance
after each change. Don't use settings recommended by someone else ; while
they may have worked perfectly on that persons disk, your disk might be
completely different and the results may not be good. There are several
tools available for testing disk performance, one of the better known ones
is <i>bonnie</i>. And remember the changes will be lost when you re-boot,
so if you want to make them permanent, you'll have to add them to a boot
script like <tt>`/etc/rc.d/rc.local'</tt>.
<p>
 <a NAME="SEC95"></a>
<h2>
7.7 Filesystem</h2>
<!--docid::SEC95::-->Linux updates a <i>last access time</i> attribute
every time you open a file. If you are after all the speed you can get,
and you are sure you don't need this feature, you can add <tt>noatime</tt>
to the mount options listed in <tt>`/etc/fstab'</tt>. For example:
<br>In the <tt>`/etc/fstab'</tt> file add the line <tt>/dev/hda5/ ext2
defaults,noatime 11</tt> if you do not wish to update last access time
on the files in <tt>/dev/hda5</tt><b>partition</b>.
<p>
 <a NAME="SEC96"></a>
<h3>
7.7.1 Alternative Filesystems</h3>
<!--docid::SEC96::-->You might have tried (or read about) alternatives
to the traditional ext2 file system, and at present the most common seem
to be ReiserFS and Ext3. These have some advantages over ext2, including
quicker performance, so if you are about to start a new Linux installation
you should certainly consider using the Reiser file system. However, as
with hdparm, unless you are doing something unusually disk intensive, the
gains are likely to be minor, and if your current system is doing the job
I'd stick with it.
<p>
 <a NAME="SEC97"></a>
<h2>
7.8 Kernel Recompilation</h2>
<!--docid::SEC97::-->This is another one of those things that is often
recommended in the Linux tune-up guides. While it may have been important
years ago, it is probably of questionable value now that modular kernels
are the norm. So unless you need to compile in some special feature, or
you are using a pre-historic non-modular kernel (in which case you could
probably benefit from updating your Linux installation), I wouldn't bother.
Most recent distributions come with a variety of optimized kernels, and
automatically install the one that best suits your system. Of course, you
might want to recompile just for its sheer geek entertainment value, and
I guess that's as good a reason as any.... I won't go into the details
of kernel compilation here, check your distribution's documentation or
the
<a href="http://www.linuxdoc.org/HOWTO/Kernel-HOWTO.html">Kernel HOWTO</a> for
details.
<p>
 <a NAME="SEC98"></a>
<h2>
7.9 Miscellaneous Tips</h2>
<!--docid::SEC98::-->This article has only covered the very basic stuff
- if you are interested in reading some much more detailed info about configuring
Linux read the
<a href="http://www.linuxdoc.org/HOWTO/Config-HOWTO/index.html">Configuration
HOWTO</a>.
<P>
If you are serious about tuning your Linux box, you'll need some benchmarking
tools. To get started, take a look at this site:
<a href="http://www.tux.org/bench/">The Linux Benchmarking Project</a>.
<p>Obviously you'll be aiming to conserve memory as much as possible. Use
the <tt>free</tt> command from a terminal emulator to see memory usage
details. Ideally, you'll be able to balance usage against available memory
so that swap isn't used.
<p>You can save some memory by using a plain background on your desktop,
rather than an image file.
<p>Other useful tools are <tt>ps -aux</tt> (shows details of running processes),
and <tt>top</tt> (similar to ps but continually updates).
<p>Help reduce the time it takes X to update the screen on low-end machines
by not using a greater colour depth than necessary, eg. use 16bit instead
of 32 bit. You can check X's performance with x11bench, which is often
installed by default.
<p><a NAME="End Note"></a>
 <a NAME="SEC99"></a>
<h1>
8. End Note</h1>
<!--docid::SEC99::-->These are only a few of the chapters that we have
covered in our HOWTO "Doing Things In GNU/Linux". You can get the
complete HOWTO from <a
href="http://geocities.com/lunatech3007/doing-things-howto.html">here</a>,
or <a href="http://users.netwit.net.au/~pursang/dtil/">here</a>. If
you find any mistakes, please mail mail your suggestions to <tt>
lunatech3007 at yahoo dot com </tt>. This HOWTO needs active
participation from the readers and I welcome suggestions, praises and
curses. Feel free to ask for help on a topic - just check that your
question isn't answered here first .  If you don't understand the any
topic please tell us, so we can explain it better. General philosophy
is: if you need to ask for help, then something needs to be fixed so
you (and others) don't need to ask for help.






































<!-- *** BEGIN author bio *** -->
<P>&nbsp;
<P>
<H4>Raj Shekhar</H4>
<!-- *** BEGIN bio *** -->
<P>
<img ALIGN="LEFT" ALT="[BIO]" SRC="../gx/2002/note.png">
<em>
I have completed my Bachelor in Information Technology from University
of Delhi. I have been a Linux fan  since the time I read "Unix Network
Programming" by Richard Stevens and started  programming in GNU/Linux in my seventh
semaster . I have been trying to convert people right, left and center ever
since.
</em>
<br CLEAR="all">
<!-- *** END bio *** -->

<H4>Anirban Biswas</H4>
<!-- *** BEGIN bio *** -->
<P>
<img ALIGN="LEFT" ALT="[BIO]" SRC="../gx/2002/note.png">
<em>
I am Anirban Biswas from Calcutta, India.  I have been using Linux for 4 years
(from RH 6.1 to RH 8.0, then to MDK 9.0). Currently I'm in the
final year of computer enginnering.
</em>
<br CLEAR="all">
<!-- *** END bio *** -->

<H4>Jason P Barto</H4>
<!-- *** BEGIN bio *** -->
<P>
<img ALIGN="LEFT" ALT="[BIO]" SRC="../gx/2002/note.png">
<em>
I am from Pittsburgh, Pennsylvania and have been using Linux for 7 years.  My 
first distro was Redhat 3 or something like that. back when configuring the X
server was a real adventure.  I'm currently an avid Slackware fan, and have been
working in software development for Lockheed Martin Corporation for three
years.
</em>
<br CLEAR="all">
<!-- *** END bio *** -->

<H4>John Murray</H4>
<!-- *** BEGIN bio *** -->
<P>
<img ALIGN="LEFT" ALT="[BIO]" SRC="../gx/2002/note.png">
<em>
John is  a part-time geek from Orange, Australia. He has been using
Linux for four years and has written several <a
href="http://users.netwit.net.au/~pursang/">Linux related
articles</a>.
</em>
<br CLEAR="all">
<!-- *** END bio *** -->


<!-- *** END author bio *** -->


<!-- *** BEGIN copyright *** -->
<hr>
<CENTER><SMALL><STRONG>
Copyright &copy; 2003, Raj Shekhar, Anirban Biswas, Jason P Barto and John Murray.
Copying license <A HREF="../copying.html">http://www.linuxgazette.com/copying.html</A><BR> 
Published in Issue 88 of <i>Linux Gazette</i>, March 2003
</STRONG></SMALL></CENTER>
<!-- *** END copyright *** -->
<HR>

</BODY></HTML>