File: TWDT.html

package info (click to toggle)
lg-issue101 1-1
  • links: PTS
  • area: main
  • in suites: sarge
  • size: 2,380 kB
  • ctags: 281
  • sloc: sh: 98; makefile: 34
file content (4879 lines) | stat: -rw-r--r-- 186,522 bytes parent folder | download | duplicates (2)
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


<html>
<head>
<link href="../lg.css" rel="stylesheet" type="text/css" />
<title>
Linux Gazette : April 2004 (#101) 
</title>

<style type="text/css">
<!--

.twdtarticle {
	margin:0px;
	left:0px;
}

#twdtbody {
	margin-left:0px;
	margin-right:0px;
}

.twdtarticle h1 {
	font-size:19px;
	text-align:center;
}
		

-->
</style>


</head>

<body id="twdtbody">


<img src="../gx/2003/newlogo-blank-200-gold2.jpg" alt="Linux Gazette" id="twdtlogo"/>




<div class="content" id="lgissuecontents">

<h2>April 2004 (#101):</h2>

<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>, by <i>Michael Conry</i></li>

	<li><a href="brown.html">Leaning Out of Windows</a>, by <i>Tom Brown</i></li>

	<li><a href="collinge.html">Help Dex</a>, by <i>Shane Collinge</i></li>

	<li><a href="ecol.html">Ecol</a>, by <i>Javier Malonda</i></li>

	<li><a href="qubism.html">Qubism</a>, by <i>Jon "Sir Flakey" Harsem</i></li>

	<li><a href="foolish.html">The Foolish Things We Do With Our Computers</a>, by <i>Ben Okopnik</i></li>

	<li><a href="levkovich.html">Home Folder Server For Windows Clients</a>, by <i>Avinoam Levkovich</i></li>

	<li><a href="pramode.html">Simple Joystick control of a servo motor with RTAI/Linux</a>, by <i>Pramode C.E</i></li>

	<li><a href="sunil.html">Designing Simple front ends with dialog/Xdialog </h1></a>, by <i>Sunil Thomas Thonikuzhiyil</i></li>

	<li><a href="lg_backpage.html">The Back Page</a>, by <i>Ben Okopnik</i></li>

</ul>

<p id="twdt">
<i>or read <a href="TWDT.html">TWDT</a></i>
</p>

</div>








<br />


<div class="content twdtarticle">


<h1>The Mailbag</h1>


</b>
</p>


<p>
<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@linuxgazette.net">The Editors of <i>Linux Gazette</I></A>, and technical answers and tips about Linux to <A HREF="mailto:tag@linuxgazette.net">The Answer Gang</A>. 
</STRONG>
</center><HR>
<UL>
<!-- index_text begins -->
<li><A HREF="#wanted.1"
	><strong>installing mandrake 10.0</strong></a>
<li><A HREF="#wanted.2"
	><strong>More Cool Answers</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">installing mandrake 10.0</FONT></H3>
Wed, 24 Mar 2004 20:58:16 +0000
<BR>spb (<a href="mailto:tag@linuxgazette.net?cc=t14497867@netscape.net&subject=%20Re%3A%20%5BLG%20101%5D%20help%20wanted%20%231">t14497867 from netscape.net</a>)


<P>
Greetings I installedd disks 1 and 2 linux mandrake 10.0 as an upgrade
to my linux mandrake 9.2, immediately all froze onsgreen . Need an
answer- my 9.2 works ok. thanks.
</P>

<blockquote><font color="#000066">Wanted point number 1: clearer requests.
 -- Heather</font></blockquote>
<BLOCKQUOTE>
[Thomas] 
Hi, unfortunately I often have trouble decyphering <EM>all</EM> that information
that you poured into such a well thought out e-mail. You obviously spent a
lot of time thinking about your problem, listing all the symptoms, etc.
You should give yourself credit for it.
</BLOCKQUOTE>
<BLOCKQUOTE>
Here's a tip though:
</BLOCKQUOTE>
<BLOCKQUOTE><BLOCKQuote>
<A HREF="http://linuxgazette.net/tag/ask-the-gang.html"
	>http://linuxgazette.net/tag/ask-the-gang.html</A>
</BLOCKQuote></BLOCKQUOTE>
<BLOCKQUOTE>
Oh, if you send HTML e-mail to this list again, there's a high chance
you'll get ignored. Seriously we need more information about <EM>what</EM> id
freezing, whether or not you completed your upgrade, whether or not your
kernel boots....etc.... Otherwise, how can we help you?
</BLOCKQUOTE>
<P><STRONG>
Greetings answer gang, I reply to your mail yesterday.
</STRONG></P>

<blockquote><font color="#000066">Alas, he still sent text+html email.  Wanted point number 2:  I can't
use your webmail's HTML folks.  Don't waste the bandwidth (about 3x
the space!) sending those extra bits.
 -- Heather</font></blockquote>
<P><STRONG>
The computer using today has Microsft ME os,  I cannot send any info to
you from my linux PC, as when I loaded the upgrade mandrake 10.0 on top
of my Mandrake 9.2-( purchased from Mandrake central USA} when after
some time(I thought it had installed 10.0) it returned to the welcome
desktop screen, from there it is completely frozen, the mouse, the arrow
keys , tab key and function keys, so restart many times( by power off
and on only,my only option at the moment} I arrive each time to this
situation, I cannot get to bios settings  to change device priority for
startup. to use  a boot disk or floppy.
</STRONG></P>
<BLOCKQUOTE>
[THomas] 
Presumably you managed to boot off of a CD just fine. In that case, I
suggest (no, I urge you) to download knoppix [1] and boot from that. If
you  have not the facilities to burn CDs, then find someone who can. Why
exactly can't you access your BIOS?
</BLOCKQUOTE>

<blockquote><font color="#000066">That's where you come in, dear readers :D
 -- Heather</font></blockquote>
<P><STRONG>
I purchased Mandrake 10.0 from
Linuz.org in USA  they sent two cd's by airmail  without any other info
except invoice.
</STRONG></P>
<BLOCKQUOTE>
[Thomas] 
Also, as this is Mandrake, I suggest when you next boot into Linux, you issue:
</BLOCKQUOTE>
<BLOCKQUOTE><BLOCKQuote>
linux 3
</BLOCKQuote></BLOCKQUOTE>
<BLOCKQUOTE>
(at the LILO/Grub prompt) so that you're forced into a text-only mode.
Hoipefully you should be able to report back to us whether you can login
or not, and whether your keyboard is still locked, etc.
</BLOCKQUOTE>
<P><STRONG>
Please advise a good Linux Tutorial book for home users,
I am not IT boffin thank you .spbramwell.
</STRONG></P>
<BLOCKQUOTE>
[Thomas] 
The book I used wqas "Running Linux", Matt Walsh, et al. Publsihed by
O'reilly. You'll find it on amazon no problems.
</BLOCKQUOTE>
<BLOCKQUOTE>
[Heather] 
The book I got started with was "Unix as a Second Language" by Sobell,
which has now become several books, for different flavors of UNIX.  The
current one of the Linux flavor shows a penguin belly flopping down a
snow bank 
<IMG SRC="../gx/dennis/smily.gif" ALT=":)" 
		height="24" width="20" align="middle">  It also got renmaed though ... the name escapes me at this
hour ...  Any of the series though, will definitely make your starting
out a little more fun.
</BLOCKQUOTE>
<BLOCKQUOTE>
Readers: more good book suggestions?
</BLOCKQUOTE>

<!-- 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">More Cool Answers</FONT></H3>
Wed, 31 Mar 2004 11:35:38 -0800
<BR>Heather Stern (<a href="mailto:tag@linuxgazette.net?cc=star@starshine.org&subject=%20Re%3A%20%5BLG%20101%5D%20help%20wanted%20%232">The Answer Gang's Editor Gal</a>)


<P>
There's some dark chocolate waiting in the Answer Gang's back lounge for
new folk inclined to send in their good tips or a nice long chat about
how some useful part of Linux really works.   You don't have to join the
TAG list either -- just send your bits in to <A HREF="mailto:tag@linuxgazette.net"
	>tag@linuxgazette.net</A>.
</P>

<!-- end 2 -->
<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>My sig, and Linux Gazette... :)</strong></a>
<li><A HREF="#mailbag.2"
	><strong>[cc] Looking for Stephen Bint</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">My sig, and Linux Gazette... :)</FONT></H3>
Mon, 8 Mar 2004 02:18:52 -0800 (PST)
<BR>Dave Bechtel (<a href="mailto:gazette@linuxgazette.net?subject=%20Re%3A%20%5BLG%20101%5D%20mailbag%20%231">kingneutron from yahoo.com</a>)
<BR>Question by carla (carla from bratgrrl.com)

<P>
re: <A HREF="http://linuxgazette.net/100/lg_mail.html"
	>http://linuxgazette.net/100/lg_mail.html</A>
</P>
<P>
Glad you liked my .sig. 
<IMG SRC="../gx/dennis/smily.gif" ALT=":)" 
		height="24" width="20" align="middle">  I have fond feelings for the original Muppets,
including the Sesame Street ones. Even have some mpeg's of them, such as two
aliens and a hippie singing "Manomonot" on the Muppet Show, as well as the
Intro to the Fraggle Rock show -- in Swedish (I think - it's called
"Fragglarna".)
</P>
<P>
IIRC, I saw a similar 1337 .sig on <A HREF="http://www.slashdot.org/">Slashdot</A> or somewhere a few years ago,
and adapted it for the Muppets.  I got a real charge out of seeing it posted
in LG.Net (twice now, no less!) and the response it generated.  LOL.
</P>
<P>
<IMG SRC="../gx/dennis/smily.gif" ALT=";-)" 
		height="24" width="20" align="middle">
</P>
<P>
(You have my permission to publish this letter or share with LG.Net colleagues
if you see fit.)
</P>
<P>
Best wishes.  (And LG, please tell Thomas Adam I'm sorry for being so short
with him.  I was going through a bad time, and ended up having to move in
order to get away from the situation.)
</P>

<blockquote><font color="#000066">Linux, making Sesame Street more fun...
 -- Heather</font></blockquote>

<!-- 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">[cc] Looking for Stephen Bint</FONT></H3>
Thu, 1 Apr 2004 00:20:47 -0500
<BR>Ben Okopnik (<a href="mailto:gazette@linuxgazette.net?subject=%20Re%3A%20%5BLG%20101%5D%20mailbag%20%232"><em>LG</em> Technical Editor</a>)
<BR>Question by Heather (star from starshine.org)

<P><STRONG>
Hello Heather,
</STRONG></P>
<P>
Hi, Gianfranco -
</P>
<P>
I'm not Heather, but I'm the fellow who receives mail at the editor@
address these days. 
<IMG SRC="../gx/dennis/smily.gif" ALT=":)" 
		height="24" width="20" align="middle">
</P>
<P><STRONG>
I lost contact to Stephen Bint who used
to be a member in the Answer Gang. Messages
to him are bouncing.
</STRONG></P>
<P><STRONG>
Please be so kind and let him know
that he should get in touch with me.
</STRONG></P>
<P><STRONG>
Thank you very much.
</STRONG></P>
<P><STRONG>
--
gianfranco accardo
gfa2c gmx.net
</STRONG></P>
<P>
Stephen Bint was never a member of The Answer Gang; he wrote a couple of
articles for LG. I'm afraid we have no way to contact him beyond his
email, and given his own statement of his lifestyle:
</P>
<P><BLOCKQuote>
Stephen is a homeless Englishman who lives in a tent in the woods. He eats out
of bins and smokes cigarette butts he finds on the road. Though he once worked
for a short time as a C programmer, he prefers to describe himself as a "keen
amateur".
</BLOCKQuote></P>
<P>
- losing track of him is not an unlikely occurence. I'll CC Heather on
this, but I doubt that she'll be able to help you any more than I could.
</P>

<blockquote><font color="#000066">Presuming that he occasionally sneaks into a cybercafe to read <EM>LG</EM> and
write an article now and then, we'll pub the request in the <EM>Gazette</EM> and
see if he responds.  To which end, I've left gianfranco's address
visible.  I apologize in advance if the spambeasts find it too. 
<IMG SRC="../gx/dennis/unsmily.gif" ALT=":(" 
		height="24" width="20" align="middle">
 -- Heather</font></blockquote>

<!-- end 2 -->
<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>Back issues of lg as pdbs</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">Back issues of lg as pdbs</FONT></H3>
Mon, 1 Mar 2004 11:56:12 -0000 (GMT)
<BR>Alan Pope (<a href="mailto:gazette@linuxgazette.net?subject=%20Re%3A%20%5BLG%20101%5D%20gazette%20matters%20%231">alan from popey.com</a>)


<P>
Hi all,
</P>
<P>
I spoke with Thomas on IRC last night about this but it was late and I'm
not sure I made myself clear.
</P>
<P>
I'd like to be able to read the lg on my palm device. Now I know I can
click the TWDT link on the front page of the site, whereupon some magic
cgi-bin foo generates a pdb file for me to download. I guess this is
taking the text version of TWDT and generating the pdb on the fly?
</P>
<P>
My question is this. That process is fine and dandy for the current
release, but I'd like to read older issues on my palm. Can the pdbs be
made available on the ftp site?
</P>
<BLOCKQUOTE>
[Sluggo] 
linuxgazette.net doesn't have an FTP site.  It now uses a portion of
the website for tarball downloads.
</BLOCKQUOTE>
<BLOCKQUOTE>
The biggest issue with putting Palm-format files in that directory is
they will be picked up by the mirrors.  We'd have to check with the
mirrors whether the bandwidth/size would be a hardship.  We also look
at how widely used the files would be.  The tarballs can be used on any
platforms with any OS.  Palm files work only with certain brands of
palmtops and exclude everything else.
</BLOCKQUOTE>
<BLOCKQUOTE>
[Thomas] 
Hence I agree that generating them on-the-fly (talking of that,
congratulations, Ben!!) is a far better thing to do.
</BLOCKQUOTE>
<BLOCKQUOTE>
[Ben] 
Actually, AFAIK, the Palm Reader is available for several different
platforms; certainly for Wind0ws, WinCE and both of the Linux distros
made for the iPaq. However, I agree that we shouldn't clutter our
tarballs with these things; that was the point of doing this stuff "on
the fly" for the folks who want it.
</BLOCKQUOTE>
<P><STRONG>
I could convert the files myself I suppose which would probably involve
lynxing the TWDT text version of the file and then using "some tool" to
generate the pdb from the .txt file. However I just wondered if as that
particular wheel has already been invented, it might save some work?
</STRONG></P>
<P><STRONG>
Cheers,
Al.
</STRONG></P>
<BLOCKQUOTE>
[Ben] 
Nope, there's nothing set up. I'd suggest grabbing "bibelot" from
<A HREF="http://www.freshmeat.net/">Freshmeat</A> and converting whichever TWDT you'd like. Here's the simplest
way I can think of:
</BLOCKQUOTE>
<BLOCKQUOTE><BLOCKQUOTE><CODE>
lynx -dump -nolist <A HREF="http://linuxgazette.net/issueXX/TWDT.html"
	>http://linuxgazette.net/issueXX/TWDT.html</A>|bibelot -f -t twdtXX.pdb
</CODE></BLOCKQUOTE></BLOCKQUOTE>
<BLOCKQUOTE>
where XX is the number of the issue. If you wanted to do a bunch of them
in one shot, you could even do a "for" loop:
</BLOCKQUOTE>

<blockquote><pre>for n in `seq $first $last`; do ... done
</pre></blockquote>
<BLOCKQUOTE>
where $first and $last would delimit the range of issues that you want to convert.
</BLOCKQUOTE>
<P><STRONG>
Sure, and I wasn't suggesting that you should add pdb to the tarball or
the ftp server, just asking if the process is already there to generate
pdbs, why not make it available for back issues too?
</STRONG></P>
<P><STRONG>
Hence me saying why reinvent the wheel.
</STRONG></P>
<P><STRONG>
I don't have a problem downloading the TWDTs and converting them, just
thought it would be easier to use whats already there.
</STRONG></P>
<P><STRONG>
Cheers,
Al.
</STRONG></P>

<!-- end 1 -->
<hr>
<CENTER><Font face="Helvetica"><STRONG>
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>
</STRONG></Font></CENTER>
<hr>

</p>



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




<div id="articlefooter">




<p>
Published in Issue 101 of Linux Gazette, April 2004
</p>

</div>




</div>

<br />


<div class="content twdtarticle">


<h1>More 2 Cent Tips!</h1>


</b>
</p>


<p>
<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.net/search.html">Search Engine</a></STRONG>
</center><HR>
<UL>
<!-- index_text begins -->
<li><A HREF="#tips.1"
	></a>Re: [LG 100] 2c Tips #2 --or--
<br><A HREF="#tips.1"
	><strong>Pushing Files To Multiple Hosts</strong></a>

<li><A HREF="#tips.2"
	><strong>Connecting Mac OS9/10 to a Linux Samba Domain</strong></a>
<li><A HREF="#tips.3"
	><strong>CDROM not seen by RH9</strong></a>
<li><A HREF="#tips.4"
	><strong>In Short, Dig This</strong></a>
<li><A HREF="#tips.5"
	><strong>DNS proxy/cache (Tip)</strong></a>
<li><A HREF="#tips.6"
	><strong>Making filenames lowercase</strong></a>
<li><A HREF="#tips.7"
	><strong>measuring the temperature in your computer room</strong></a>
<li><A HREF="#tips.8"
	><strong>Troubleshooting mail delivery</strong></a>
<li><A HREF="#tips.9"
	><strong>vmlinuz from when and where?</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">Pushing Files To Multiple Hosts</FONT></H3>
Sun, 07 Mar 2004 20:46:45 -0500
<BR>Sean Johnson (<a href="mailto:tag@linuxgazette.net?cc=sean@gutenpress.org&subject=%20Re%3A%20%5BLG%20101%5D%202c%20Tips%20%231">sean from gutenpress.org</a>)


<!-- ::
Pushing Files To Multiple Hosts
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:: -->
<P><STRONG>
While it might be overkill for your situation, this is a perfect place
to use cfengine ( <A HREF="http://www.cfengine.org"
	>http://www.cfengine.org</A> ).
</STRONG></P>
<P><STRONG>
Perhaps I should write up an article for Linux Gazette? 
<IMG SRC="../gx/dennis/smily.gif" ALT=":)" 
		height="24" width="20" align="middle">
</STRONG></P>
<P><STRONG>
Cheers,
</STRONG></P>
<P><STRONG>
Sean
</STRONG></P>
<BLOCKQUOTE>
[Thomas] 
You're more than welcome to do so. Author submission guidelines can be
found in the FAQ, found here:
</BLOCKQUOTE>
<BLOCKQUOTE><BLOCKQuote>
<A HREF="http://linuxgazette.net/faq/author.html"
	>http://linuxgazette.net/faq/author.html</A>
</BLOCKQuote></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">Connecting Mac OS9/10 to a Linux Samba Domain</FONT></H3>
Thu, 05 Feb 2004 12:22:12 +0300
<BR>Thomas Adam, Breen Mullins (<a href="mailto:tag@linuxgazette.net?cc=jgnasser@mpala.org&subject=%20Re%3A%20%5BLG%20101%5D%202c%20Tips%20%232">The <em>LG</em> Answer Gang</a>)
<BR>Question by JG Nasser Olwero (jgnasser from mpala.org)

<P><STRONG>
I run Samba 2.2.3a on RH Linux 7.3 as the Domain Controller.  I have all
my Windows clients connecting fine to it but have trouble with Mac
clients, no idea how to log them on.  I also attempted to have the Mac
client connect to the Linux POP3 and SMTP server (Sendmail) to no avail
probably because the Mac is not welcome on the network. I am connecting
the Mac using wired ethernet to a Network switch.
</STRONG></P>
<BLOCKQUOTE>
[Thomas] 
You need to ensure that you're using the 'appletalk' protocol. This has to
be enabled in the kernel. There are also userspace programs that are
needed for this.
</BLOCKQUOTE>
<BLOCKQUOTE>
<A HREF="http://ftp.linux.org.uk/pub/linux/appletalk"
	>http://ftp.linux.org.uk/pub/linux/appletalk</A>
</BLOCKQUOTE>
<BLOCKQUOTE>
might be of interest.
</BLOCKQUOTE>
<BLOCKQUOTE>
Hope That Helps
</BLOCKQUOTE>
<BLOCKQUOTE>
[Breen] 
You don't use AppleTalk to connect to a POP or SMTP server. That's pure
TCP/IP.
</BLOCKQUOTE>
<BLOCKQUOTE>
If we're talking about a Mac OS X client, that comes with Windows
filesharing built in. Classic Mac OS is of course a different problem.
</BLOCKQUOTE>

<blockquote><font color="#000066">Actually, MacOS X knows how to speak Samba/mswin sharing now too; their
client side tool is called DAVE, and it used to be third party software
for MacOS 9.  If you want to install Mac style sharing on your Linux
box, the app you're looking for is called netatalk.  I used it years ago
and it was a breeze to setup - had 'em working faster than their mswin
cousins in the same office.
 -- Heather</font></blockquote>
<BLOCKQUOTE>
[Breen] 
If you're using OS X you can call up a connect dialog with Cmd-K and
enter the address smb://&lt;ip_of_server&gt;. You'll need an IP address, of course
-- check your network preferences pane to make sure.
</BLOCKQUOTE>
<BLOCKQUOTE>
Beyond that, you're probably looking at a Mac client issue. You might
try asking for help at a Mac specific site. (I recommend
<A HREF="http://forums.macosxhints.com"
	>http://forums.macosxhints.com</A>, if you're using X.)
</BLOCKQUOTE>

<!-- 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">CDROM not seen by RH9</FONT></H3>
Thu, 11 Mar 2004 16:29:46 -0500
<BR>Thomas Adam (<a href="mailto:tag@linuxgazette.net?cc=ah300@torfree.net&cc=thomas_adam16@yahoo.com&subject=%20Re%3A%20%5BLG%20101%5D%202c%20Tips%20%233">The <em>LG</em> Weekend Mechanic</a>)
<BR>Question by Joseph Lalingo (ah300 from torfree.net)

<P>
Hi,
</P>
<P>
I installed RedHat Linux 9 via the cd-rw, successfully, but the cdrom
was not seen. I know the cdrom is still connected internally as I
haven't interfered with the system's insides (which came with a a cdrom
and cd-rw) internally. The cd-rw is understood to be the cdrom and there
is now NO <TT>/mnt/cdrom1</TT> but there IS a <TT>/mnt/cdrom.</TT>
</P>
<P>
The cdrom door does not open, yet the light of the cdrom is on.
</P>
<P>
Joe
</P>
<BLOCKQUOTE>
[Thomas] 
"The lights are on but there's no one home". <TT>/mnt/cdrom</TT> is the mount-point
location of your cdrom drive. It is arbitrary and you can use anything you
like. These are defined (or should be) in <TT>/etc/fstab.</TT>
</BLOCKQUOTE>
<BLOCKQUOTE>
If you look in that file, you should have a line similar to:
</BLOCKQUOTE>

<blockquote><pre>/dev/cdrom      /cdrom          iso9660 ro,user,noauto          0       0
</pre></blockquote>
<BLOCKQUOTE>
Here, <TT>/dev/cdrom</TT> is in turn a symlink that points to my main cdrom device:
<TT>/dev/hdd.</TT> This then gets mounted to <TT>/cdrom</TT>, when I issue the command:
</BLOCKQUOTE>

<blockquote><pre>mount /cdrom
</pre></blockquote>
<BLOCKQUOTE>
I suspect your troubles come from you missing an entry in <TT>/etc/fstab.</TT> If
you wanted to mount the second drive as <TT>/mnt/cdrom1</TT>, then look at the
existing line in the <TT>/etc/fstab</TT> file, and modify it to reflect the new
drive.
</BLOCKQUOTE>
<BLOCKQUOTE>
The device name (<TT>/dev/xxx</TT>) can be got from viewing:
</BLOCKQUOTE>

<blockquote><pre>dmesg | less
</pre></blockquote>

<!-- 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">In Short, Dig This</FONT></H3>
Wed, 31 Mar 2004 01:45:38 -0800
<BR>Jim Dennis (<a href="mailto:tag@linuxgazette.net?cc=jimd@starshine.org&subject=%20Re%3A%20%5BLG%20101%5D%202c%20Tips%20%234">the <em>LG</em> Answer Guy</a>)


<P>
Possibly there's not a sysadmin around who hasn't needed to do a host
lookup now and then, to make sure they know what addresses are really
being found when a DNS lookup is made.
</P>
<P>
nslookup is deprecated, host can be confusing, dig is the nice tool for
the job - regardless of attempts to claim it is old too, it will be
around a long time.  But who really wants to get a long listing full of
semicolon comments and things?
</P>

<blockquote><pre>; &lt;&lt;&gt;&gt; DiG 9.2.3rc4 &lt;&lt;&gt;&gt; linuxgazette.net
;; global options:  printcmd
;; Got answer:
;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 605
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2

;; QUESTION SECTION:
;linuxgazette.net.		IN	A

;; ANSWER SECTION:
linuxgazette.net.	86400	IN	A	64.246.26.120

;; AUTHORITY SECTION:
linuxgazette.net.	86400	IN	NS	ns1.linuxmafia.com.
linuxgazette.net.	86400	IN	NS	ns1.genetikayos.com.

;; ADDITIONAL SECTION:
ns1.linuxmafia.com.	61864	IN	A	198.144.195.186
ns1.genetikayos.com.	61864	IN	A	64.246.26.120

;; Query time: 153 msec
;; SERVER: 216.240.40.162#53(216.240.40.162)
;; WHEN: Wed Mar 31 01:39:18 2004
;; MSG SIZE  rcvd: 144
</pre></blockquote>
<P>
Unless I'm tracking the path of authority rather than just checking the
address, I don't care either.
</P>

<blockquote><pre>(jimd@phobos) ~$ dig +short a linuxgazette.net
64.246.26.120
</pre></blockquote>
<P>
Short, sweet, and to the point. Replace "a" with "mx" or "ns" as you
please, but this is a <EM>lot</EM> handier for scripting; I don't have to
invoke my talent for awk and grep one-liners on DNS checks anymore.
</P>

<!-- 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">DNS proxy/cache (Tip)</FONT></H3>
Tue, 16 Mar 2004 00:11:33 +0100
<BR>Karl-Heinz Herrmann (<a href="mailto:tag@linuxgazette.net?cc=kh1dump@khherrmann.de&subject=%20Re%3A%20%5BLG%20101%5D%202c%20Tips%20%235">kh1dump from khherrmann.de</a>)


<P>
Hi,
</P>
<P>
I had an annoying little problem: My home network has grown to 3 PC's --
one directly on the phone line, the others connected via WLAN. Usually I
would pick one dial-up provider and stick with that. Unfortunately the
German ISP's are a big mess of call-by call providers with constantly
changing tarifs.
</P>
<P>
The directly connected box is only the dial-in and firewall/NAT Router,
the other two are my Laptop and desktop.
</P>
<P>
The annoying problem: Everytime I change the provider I had to change
the resolv.conf on all systems according to the new nameservers as
transmitted via [i]ppp protocol.
</P>
<P><DL><DT>
My solution: dproxy
<DD><A HREF="http://dproxy.sourceforge.net"
	>http://dproxy.sourceforge.net</A>
</DL></P>
<P>
It serves as a proxy/cache for DNS lookups. It uses regular sys-calls
for namelookups and reacts instantly (no kill -HUP or similar) to new
entries in <TT>/etc/resolv.conf.</TT> This is on the router of course and
everytime pppd changes the resolv.conf for the new provider it simply
uses the new values.
</P>
<P>
The other two machines have the router as the nameserver and always get
the correct information (even offline, so a connection is of course not
possible). No manual changing anymore.
</P>
<P>
K.-H.
</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">Making filenames lowercase</FONT></H3>
Wed, 31 Mar 2004 10:05:38 -0500
<BR>Ben Okopnik (<a href="mailto:tag@linuxgazette.net?cc=ben@callahans.org&subject=%20Re%3A%20%5BLG%20101%5D%202c%20Tips%20%236"><em>LG</em> Technical Editor</a>)


<P>
Sometimes, despite our best eforts with "unzip -L", we end up with a
bunch of files the names of which are ALL IN CAPS. The easy way to deal
with these is with a simple utility that I call "lc". (Also, should you
ever need such a thing, creating a complementary "uc" would be an
obvious modification.)
</P>

<blockquote><pre>#!/usr/bin/perl -w
# Created by Ben Okopnik on Fri Jul 25 09:13:22 EDT 2003

die "Usage: ", $0 =~ /([^\/]+)$/, " &lt;FILE[S]_TO_LOWERCASE&gt;\n" unless @ARGV;

rename $_, lc for @ARGV
</pre></blockquote>
<P>
Note that you can specify multiple files or even shell wildcards at the
command line; it's perfectly happy to chew on whatever you supply.
</P>

<!-- 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">measuring the temperature in your computer room</FONT></H3>
Wed, 17 Mar 2004 13:12:23 -0800
<BR>Yan-Fa Li (<a href="mailto:tag@linuxgazette.net?cc=yanfali@best.com&subject=%20Re%3A%20%5BLG%20101%5D%202c%20Tips%20%237">yanfali from best.com</a>)


<P>
Hi,
</P>
<P>
I've found a useful side effect of running smartd on my drives at home
which I've used for a while now
to monitor the temperature in my apartment.  A lot of newer IDE drives,
especially IBM/Hitachi's and SCSI
hard disks monitor the drive temperature.  I've found this to be a
useful way to figure out how hot it is
in my computer room at home :D
</P>
<P>
Assuming you've already installed smartmontools, this was tested with
version 5.26:
</P>

<blockquote><pre># smartctl -a /dev/hda | grep 194
194 Temperature_Celsius     0x0002   161   161   000    Old_age
Always       -       34 (Lifetime Min/Max 20/37)
</pre></blockquote>
<P>
As you can see the drive is a toasty 34 degrees celsius.  Of about 5-7
degrees above ambient, it's about 27-29C
or 80-85F in that room right now.  Not great for the equipment but
survivable.  Anyway, not terribly useful,
but interesting nonetheless :D
</P>
<P>
Yan
</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">Troubleshooting mail delivery</FONT></H3>
Thu, 1 Apr 2004 22:33:59 -0500
<BR>Ben Okopnik (<a href="mailto:tag@linuxgazette.net?cc=ben@callahans.org&subject=%20Re%3A%20%5BLG%20101%5D%202c%20Tips%20%238"><em>LG</em> Technical Editor</a>)


<P>
There are times when the mail just won't go through, for any of a host
of reasons. Your ISP's server may be down, your own mail programs don't
work, whatever - and of course, this happens at the most critical times,
"when it absolutely, positively has to be there." Well, assuming that
your recipient's mail server is working, you can bypass most of the
chain - at least your end of it. This can also be a good testing tool.
It lacks a few refinements (e.g., there's no subject and the address you
supply is actually used as the normally hidden "From" header rather than
the friendlier and visible "From:"), but it will at least get the
content across.
</P>

<blockquote><pre>ben@Fenrir:~/Docs$ telnet badabing.com 25
Trying badabing.com...
Connected to badabing.com.
Escape character is '^]'.
220 badabing.com ESMTP Postfix (Debian/GNU)
HELO myserver.net
250 badabing.com
MAIL FROM: me@myserver.net
250 Ok
RCPT TO: joe@badabing.com
250 Ok
DATA
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;

Hi, Joe - it's me!

.
250 Ok: queued as D1F8F160B4
QUIT
</pre></blockquote>
<P>
To recap - I connected to port 25 (SMTP) at badabing.com, identified my
server via HELO ("hello"), to which the server responded with its own
name. I then told it who the MAIL was FROM: and who the recipient (RCPT)
is supposed to be, and asked it to stand by for the actual DATA, which
it told me to end with a return, a period, and a return. When I was
done, I typed "QUIT" to exit.
</P>
<P>
This is not for everyday use, but can be a very handy tool for those
times when you've just got to get your mail across despite problems.
</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">vmlinuz from when and where?</FONT></H3>
Wed, 31 Mar 2004 01:45:38 -0800
<BR>Heather Stern (<a href="mailto:tag@linuxgazette.net?cc=star@starshine.org&subject=%20Re%3A%20%5BLG%20101%5D%202c%20Tips%20%239">The Answer Gang's Editor Gal</a>)


<P>
In my consulting I find myself running into an awful lot of systems
booting off of 'vmlinuz' in the root directory.  What kernel is that?
How the heck would I know?
</P>
<P>
I'll tell you how I ask it :D
</P>

<blockquote><pre>[root@somebox] /# strings vmlinuz | grep 200
2.6.0-test7-1-386 (herbert@gondolin) #1 Sun Oct 12 10:29:56 EST 2003
</pre></blockquote>
<P>
Why does this work?  Because now that we're a few years into the
century, nearly all the kernels contain something with a year 2000 or
later, and we'll have 200n year numbers for a while yet.  On an older
system, try 199 - Linux isn't old enough to have kernels from 1980
unless someone is playing serious games with their clock.  You could
probably look for the @ sign, but chances are too good of finding one
alone somewhere in the binary portion of the code.
</P>

<!-- end 9 -->
<hr>
<CENTER><Font face="Helvetica"><STRONG>
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>
</STRONG></Font></CENTER>
<hr>

</p>



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




<div id="articlefooter">




<p>
Published in Issue 101 of Linux Gazette, April 2004
</p>

</div>




</div>

<br />


<div class="content twdtarticle">


<h1>The Answer Gang</h1>


</b>
</p>


<p>
<p>
<TABLE width="100%" BORDER="2">
<tr>
<td>
<table border="0">
<TR>
<TD ALIGN="left">
        <img src="../gx/dennis/qbubble.gif" alt="(?)" border="0" align="left">
</TD>
<TD width="90%">
<center>
<A NAME="answer"><STRONG>By Jim Dennis, Ben Okopnik, Dan Wilder, Breen, Chris, and...
        (<a href="../tag/bios.html">meet the Gang</a>) ...
                the Editors of <i>Linux Gazette</i>...
                        and You! 
</STRONG></TD>
<TD ALIGN="left">
        <img src="../gx/dennis/qbubble.gif" alt="(?)" border="0" align="right">
</TD>
</TR>
</TABLE>
</td>
</tr>
</table>
<P>

<center><p>
<br>We have guidelines for <a href="../tag/ask-the-gang.html">asking</a> and <a
href="../tag/members-faq.html">answering</a> questions.  Linux questions only, please.
</STRONG>
<br><em><font color="#7F0000">We make <b>no guarantees</b> about answers, but you can be <b>anonymous</b> on request.</font></em>
<br>See also: The Answer Gang's 
<a href="../tag/kb.html">Knowledge Base</a>
and the <i>LG</i> 
<a href="http://linuxgazette.net/search.html">Search Engine</a>
</center>
<br></p></center>

<HR>
<!-- BEGIN message -->
<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>Compile on one, run on another machine</strong></a>
<dt><A HREF="#tag.2"
	><img src="../gx/dennis/qbub.gif" height="28" width="50"
	  alt="(?)" border="0"
	><strong>Dedicated Linux application</strong></a>
<dt><A HREF="#tag.3"
	><img src="../gx/dennis/qbub.gif" height="28" width="50"
	  alt="(?)" border="0"
	><strong>Diagnosing a Linux crash</strong></a>
<dt><A HREF="#tag.4"
	><img src="../gx/dennis/qbub.gif" height="28" width="50"
	  alt="(?)" border="0"
	><strong>I blew out Fedora with yum and 2.62</strong></a>
<dt><A HREF="#tag.5"
	><img src="../gx/dennis/qbub.gif" height="28" width="50"
	  alt="(?)" border="0"
	><strong>2c tip: filtering in-place</strong></a>
<dt><A HREF="#tag.6"
	><img src="../gx/dennis/qbub.gif" height="28" width="50"
	  alt="(?)" border="0"
	><strong>framebuffer colors</strong></a>
<dt><A HREF="#tag.7"
	><img src="../gx/dennis/qbub.gif" height="28" width="50"
	  alt="(?)" border="0"
	><strong>Mirror 2 web servers</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>
Greetings, folks, and welcome to the world of The Answer Gang.  It's
been a rough and tumble time here... I've got some hardware in a
shambles.  It's just not my week.  Just looking at all these scattered
parts makes me wonder if I could build a robot out of them.  I've got
enough backups I've certainly my pick of linux flavors...
</p><p>
Then some folks in an IRC channel got into discussing what sort of
mayhem we would see if various window managers were thrown into a
gladiatorial arena and forced to duke it out, <em>mano a mano</em>, claw
to saw.  "Fight! Fight!" cried our Weekend Mechanic -- as he cheerfully
<a href="../issue100/adam.html">added parts</a> to the house favorite --
and the battle was on.   
</p>
<h4 align="center">WM-bot Wars</h4>
<p>
In our first round of the competition, we have the little guys.  Heck,
you might have even heard of some of them.   Aren't they so cute!
Minimal is the name of the game here.  Let's weigh in, the advantage is
they're light, the disads are what features they left out - the
underpower crowd roars for these underdogs - here you have 'em
folks:</p>

<ul>
<li><a href="http://ratpoison.sourceforge.net/">Ratpoison</a> - throw
that mouse away, kids.... and also menus.  
<li><a href="http://www.red-bean.com/~decklin/aewm/">aewm</a> -
aesthetic? Maybe.  But its place in the very brief 
limelight has been taken by its many children.
<li><a
href="http://www.informatik.hu-berlin.de/~sperling/prog/swm.html">sWM</a>
- a failsafe, just enough to manage windows - meaning where the events
  go, and moving them - forget everything else.
<li><a href="http://www.nickgravgaard.com/windowlab/">windowlab</a>. You
Amiga fans out there might like this one.  Slam that mouse around.  Zip
across the screen. Whee!
</ul>

<p>The fight begins, with these and crowds of other small fry swarming to the
<a
href="http://freshmeat.net/search/?q=window+managers&section=projects&Go.x=0&Go.y=0">freshmeat</a>.
<a href="http://www.taiyaki.org/amaterus/index.en.html">Amaterus</a>
makes a pretty good start but it <em>has</em> a menu - just a sucky
one.  Someone hops a <a
href="http://www.ibiblio.org/propaganda/pogo/">pogo</a> stick and <a
href="http://offog.org/code/">virtual desktops</a> sprout.
Apps being executed everywhere.  A <a
href="http://pypanel.sourceforge.net/">pypanel</a> confers, <a
href="http://www.oroborus.org/">Oroborus</a> nearly trapped against the
obscurity wall when <a href="http://oroborosx.sourceforge.net/">MacOSX</a> 
rescues it.  And the first round goes to the happy <a
href="http://blackboxwm.sourceforge.net/">Blackbox</a> family, including
<a href="http://scrudgeware.org/projects/Hackedbox">hacked</a>, <a
href="http://icculus.org/openbox/">open</a>, and <a
href="http://fluxbox.sourceforge.net/">flux</a> box for creative menu
tricks <a href="http://poundtemp.org/~char/menuRank/">ranking recently
used apps</a>.</p>

<p>The bell rings and we clear out a few smoking ruins - now for the
midsize mayhem.</p>

<p><a href="http://www.windowmaker.org/">WindowMaker</a> wades in - or
is that widowmaker - docks his jaws around <a
href="http://www.afterstep.org/">AfterStep</a>. Tiny <a
href="http://www.plig.org/xwinman/vtwm.html">Tom</a>'s wm escapes the
system spikes, but <a href="http://ctwm.free.lp.se/">Claude</a> has the
extra edge.  <e  href="http://www.icewm.org/">IceWM</a> is looking cool
until he hits the arena's flame trap "I wanna look like..." but won't
fall for that - escapes the pit!  Menus click, swap thrashes, and catlike
<a href="http://www.fvwm.org/">fvwm</a> takes control of the mouse,
scripting rings around the others.</p>

<p>Now for a page from the masters.  We know those flames are tough, 
and it's time to let the survivors here get a chance to commit before 
the next round... the big noisy battle of them all... Desktops.</p>

<p>Gnome and KDE both <a href="http://www.freedesktop.org/">extend their
hints</a> against the competition, crushing smaller opponents.  <a
href="http://www.enlightenment.org/">Enlightenment</a> upgrades to 16.6 and
stands its ground.  FVWM laughs and sprouts modules to extend itself, while
<a href="http://flwm.sourceforge.net/">fast light wm</a> joins it in
pushing the brutes into the arena's <a
href="http://lwn.net/2001/0412/a/oom-patch.php3">OOM killer</a>.  Parts are
flying everywhere!  Chipping through the armor, flames are getting through
... ooh! FVWM escapes by shedding its modules again, while K is trapped.
Something's bound to <a
href="http://sourceforge.net/projects/wolk/">overload</a>... K's gears
grind slowly to a halt, while Gnome has the <a
href="http://www.gnome.org/start/2.2/notes/rnwm.html">metacity</a> to pick
on E's <a href="http://enlightenment.org/pages/join.html"
>incomplete brother</a> which valiantly struggles to code up <a
>href="http://enlightenment.org/pages/news.html">new features</a> 
before timeout.  <a href="http://www.xfce.org/index.php">XFce</a> zooms
into the fray -- "wanna piece of me?"   Then the commercial desktops enter
the fray, xig's CDE-like <a
href="http://www.xig.com/Pages/DeXtopGUI.html">DeXtop</a> rushing forward
only to wedge in the pit of interoperability.  <a
href="http://www.rocklyte.com/athene/">Athene</a> constantly regenerates
but when the battle gets toe to toe, the obscurity spikes pin it down, the
<a href="http://themes.freshmeat.net/">theme of the day</a> turns <a
href="http://fvwm-themes.sourceforge.net/">Fvwm's way</a> -- and it looks
like we've a champion.</p> </p>

<p>But what's this? The arena has been invaded.  Who are these interlopers?
<a href="http://www.gnu.org/software/screen/">screen</a> has taken to the 
field, with <a href="http://sourceforge.net/projects/twin/">twin</a> 
nipping at its heels. A growl from behind, but they squish <a
href="http://www.devolution.com/~slouken/projects/splitvt/">splitvt</a>
together, <a href="http://dtach.sourceforge.net/">dtach</a> another tiny
opponent, then turn back to each other -- only to wail
as <a href="http://www.gnu.org/software/emacs/">emacs</a> turns its 
<a href="http://www.gnu.org/">Gnu</a>-like 
head in their direction, establishing a sessions server...</p>

<p>Is it possible for there to be any more carnage than this?  Probably.
Seen on alt.sysadmin.recovery:</p>
<blockquote>
I am now taking bets on when this planet will reach its window manager
event horizon. At some distant point in the future some sort of
alien life-form is going to land on this planet and find everything dead
except for a lone Sparcstation in an abandoned building waiting
for a consignment of small lemon-soaked <a href="http://w3.pppl.gov/misc/motif/MotifStyleGuide/en_US/OSFMotif_Widgets_and_Components_Correspondence.html">Motif widgets</a> to be loaded.
</blockquote>
<p align=right>-- Peter Gutmann</p>

<p>Ok, ok. That was overkill.  I'm sorry, really sorry that I had to pub
late this month, but as you can see now, my place is a shambles.  But I
did find something cool while finishing up... hooray! Someone in Ireland
actually *<strong>CAUGHT</strong>* a spammer.  Better yet, got them
<a
href="http://www.theregister.co.uk/2004/04/05/gardai_capture_alleged_419er/">hauled
away by the cops</a>.  (Alleged, hah.  Caught with everything but a
patsy present in person and teary-eyed.)  Not even April fooling.  Enjoy 
your month, folks.  I know I will.</p>

<p><img alt="[NOTE]" src="../gx/2002/note.png"
  ><em>So that's it.  Answers by Jim Dennis, Ben Okopnik, Thomas, Faber,
many others among The Answer Gang... and you!  If you've got some great
Linux answers - <a href="mailto:tag@linuxgazette.net">send them to
us</a>.  Ideally the answers explain why things work in a friendly
manaer and with some enthusiasm, thus </em>Making Linux Just A Little
More Fun<em>!  Good short bits will probably go in Two Cent Tips, but
truly juicy explanations, especially those that get the Gnag jumping in,
could end up here.  We don't promise that we'll publish everything,
though.  Also - you can be anonymous, either asking or answering - just
tell us so, and Tux will eat the herring we wrote your name on.  We
swear.</em></p>
<!-- 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"
	>Compile on one, run on another machine</H3>


<p><strong>From Ferenc-Jan 
</strong></p> 
<p></strong></p>

<p align="right"><strong>Answered By:  Thomas Adam
</strong></p>
<P><STRONG>
Hi there!
</STRONG></P>
<P><STRONG>
I've got a question that may be of interest to the linuxgazette
community. Where does one go to find out more about cross compiling?
(I'm not even sure cross compiling is the correct term for this.)
</STRONG></P>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Thomas] 
Cross-compiling refers to compiling applications on a computer that is not
intended for the same computer because often the target computer has a
different architecture.
</blockQuote>
<P><STRONG>
<IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> 
The case is this: I often want to compile stuff on one machine but
run it on another. My permanently-in-disrepair, bleedingly fast &amp;
incredibly messy test system is the machine of choice for compiling
all kinds of linux stuff. The barely alive, old laptop or the lean &amp;
mean firewall box aren't - besides, I don't want a full blown gcc
environment on those. But I run into problems most of the time.
</STRONG></P>
<P><STRONG>
Approach A: compile it as per instructions. Then I have to go and
find all the nitty bitty parts of the package, that are now residing
everywhere on the test system's drive. This often fails because
missing parts don't always generate comprehensible error messages.
</STRONG></P>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Thomas] 
This is not an approach, this is what usually happens when you compile a
program.
</blockQuote>
<P><STRONG>
<IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> 
Approach B: try to install it to a different directory, i.e. <TT>/tmp/</TT>
and then move it to the other machine. This often founders on hard
coded file location, i.e. when <TT>/tmp/lib/something</TT> is actually at
<TT>/usr/local/lib/something</TT> (like it should be.)
</STRONG></P>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Thomas] 
This is dependant upon how ldconfig registers where the libraries are
(possibly by way of $LD_LIBRARY_PATH).
</blockQuote>
<P><STRONG>
<IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> 
I don't consider myself a beginner, but who does. I don't seem to be
able to google the answer to this problem, but surely I'm not the
only one running into this?
</STRONG></P>
<P><STRONG>
Any hints would be much appreciated, but I understand this must be
relevant to linuxzgazette before you can spend your time on this.
</STRONG></P>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Thomas] 
I'm not quite sure what it is you're asking. If it is "how can I compile
applications such that I can minimise the number of (likely) errors", then
the answer is to compile it statically so that the application doesn't
have to go using any external libraries. Thr only disadvantage with this
is that the resultant binary is often very large.
</blockQuote>
<blockQuote>
Dynamic libararies are the most popular -- much smaller, but it does mean
that it is up to the user to ensure that these libraries are installed.
'ldd' goes a long way to checking and ensuring that is the case. But at
compilation time, the user is often told what libraries (if any) are
needed.
</blockQuote>

<font color="red"><blockquote><em>The querent then reported back that all was right with the world and
that he found what he was after. I suppose we call all learn a lesson
here in that being precise is important when asking questions, otherwise
your question may never get the correct answer!
 -- Thomas Adam</em></blockquote></font>
<P><STRONG>
<IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> 
Anyway, another helpful soul came up with the answer on usenet:
</STRONG></P>

<pre><strong>make prefix=/tmp/foo install.
</strong></pre>
<P><STRONG>
That is exactly what I'm looking for. With  this I can drop everything in
an empty dir, gzip it, move it to another machine and unpack it &amp; run it.
Never thought it would be this simple, I tried this with
configure --prefix=/tmp/foo, but that's where <TT>/tmp/foo</TT> gets into the compiled
files.
</STRONG></P>

<!-- 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"
	>Dedicated Linux application</H3>


<p><strong>From Jon Aldrich 
</strong></p> 
<p></strong></p>

<p align="right"><strong>Answered By:  Thomas Adam, Kapil Hari Paranjape, Jay R. Ashworth
</strong></p>
<P><STRONG>
I am in the process of developing a linux app (for gaming).  I want the
final product to reside on a linux box that, after booting, automatically
runs the application.  What is the preferred method for doing this?
</STRONG></P>
<P><STRONG>
1)  An 'auto login' for a special user on one of the system consoles, who's
user profile starts the application.
</STRONG></P>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Thomas] 
You could add something like this to the user's ~/.bashrc
</blockQuote>

<blockquote><pre>[ "$(tac ~/.xsession | sed -n '2p')" = "the_name_of_my_game" ] &amp;&amp; {
   startx &amp;
}
</pre></blockquote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Thomas] 
which says that if the penultimate line starts with your game program name
then launch X, otherwise don't bother. Why the penultimate line? Because
the last line in ~/.xsession should ALWAYS an "exec call" to your window
manager. Of course, should you add anything to that file, the number
passed to sed will have to be changed.
</blockQuote>
<P><STRONG>
<IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> 
2)  Start the app with an inittab entry.
</STRONG></P>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Thomas] 
No. Doing this is deprecated and will cause all kinds of weird errors.
What happens say, if X crashes? Each time X tries to start (based on the
run-level X starts in) the game will also try to load, and so you get a
feedback loop. In the case of <A HREF="http://www.debian.org/">Debian</A>, X is started throughout runlevels
2-5.
</blockQuote>
<P><STRONG>
<IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> 
3)  Something else?
</STRONG></P>
<P><STRONG>
The app will produce graphics output and get user input, so it can't run as
just a backgroud type daemon. It will run on a secure, dedicated network
</STRONG></P>
<P><STRONG>
Is there an info source or HOWTO for this sort of "bringing  to market,
implementation" kind of topic?
</STRONG></P>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Thomas] 
I would just have it launched from within the user's ~/.xsession file (see
above).
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Kapil] 
One of the lesser known methods. An "@reboot" entry in the crontab. This
will start a program just after "crond" is started.
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Thomas] 
Not unless you have read: 'man 5 crontab', it isn't!!
</blockQuote>
<P><STRONG>
<IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> 
One other small question.  Is it possible to display a flash screen of some
sort during the boot sequence and pipe the boot data to the bit bucket?
Sort of a  "boot -quiet" option.
</STRONG></P>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Kapil] 
I think there is a "bootsplash" patch to the kernel that does this.
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Thomas] 
I think Jon was referring specifically to his game's flashscreen.
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Jay] 
You'll get lots of opinions, I suspect, but mine is 'put it in
inittab'.  That and (optionally) an sshd should be about it: you should
know <EM>everything</EM> that's running in a ps, in this kind of environment.
</blockQuote>
<blockQuote>
Make sure the bios boots the HD (<TT>/flash</TT> image) and nothing else, and is
passworded.  Yes, even if there isn't a hardware keyboard.
</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"
	>Diagnosing a Linux crash</H3>


<p><strong>From Tom Brown 
</strong></p> 
<p></strong></p>

<p align="right"><strong>Answered By:  Thomas Adam, Karl-Heinz Herrmann
</strong></p>
<P><STRONG>
OK guys, here's a n00b question for you that probably crosses over into
Sys Admin territory.
</STRONG></P>
<P><STRONG>
What steps should someone follow after Linux crashes to figure out what
went wrong?
</STRONG></P>
<P><STRONG>
Where do I start, and where do I look for clues?
</STRONG></P>
<P><STRONG>
Are all the logs found in <TT>/var/log</TT>, or are there others?
</STRONG></P>
<P><STRONG>
In what order should I look at the logs, and what should I look for?
</STRONG></P>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Thomas] 
It depends what you think went wrong. Essentially:
</blockQuote>

<blockquote><pre>/var/log/messages
</pre></blockquote>
<blockQuote>
is where syslogd will dump all its data and so is the best place to look.
But there may well be application specific data in <TT>/var/log</TT>
(XFree86.0.log) is one such example.
</blockQuote>
<P><STRONG>
<IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> 
Any pro-active steps I should be taking to get more info, should it
happen again?
</STRONG></P>
<P><STRONG>
The specifics of my case: my file server (a 750 Mhz Athlon running Suse
9) simply locked up, and I couldn't get anything to display (GUI or
command line). I knew the machine was in trouble, when it didn't respond
to pings. I had to hit the reset button to get it back (and deal with
fsck, naturally). Funny thing is, the system clock reset itself to 28
minutes after midnight (when it should have read the middle of the
afternoon), but didn't loose the date. Odd, that. The machine's been
running 24/7 for about three weeks now (I set it up around then), and no
sign of problems until now.
</STRONG></P>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Thomas] 
This might be framebuffer related. At the lilo/grub prompt, type:
</blockQuote>

<blockquote><pre>linux video=vga16:off
</pre></blockquote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Thomas] 
to see if that has any effect.
</blockQuote>
<blockQuote>
There have been snippets of these effects metioned in the past. The one
that springs to mind is:
</blockQuote>
<blockQuote><BLOCKQuote>
<A HREF="..issue74/tag/9.html"
	>http://linuxgazette.net/issue74/tag/9.html</A>
</BLOCKQuote></blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [K.-H] 
There are ways of still getting kernel info (pro active steps):
</blockQuote>

<blockQuote><ul>
<!-- *) plug an old printer into the lpX port and declare it the system console -->

<LI>plug an old printer into the lpX port and declare it the system console

<!--   (kernel kompile parameter, and I don't know how exactly you activate it -->
  (kernel kompile parameter, and I don't know how exactly you activate it

<!--   -- maybe inittab). -->
  -- maybe inittab).

<!--  -->


<!-- *) When running switch to system console (Alt-Ctrl-F10 on SuSE) and leave -->

<LI>When running switch to system console (Alt-Ctrl-F10 on SuSE) and leave

<!--   it there. It *might* show a kernel oops/panic there next crash. -->
  it there. It <EM>might</EM> show a kernel oops/panic there next crash.

<!--  -->


<!-- *) search SuSE config for Magic SysRequest keys -- the function should be -->

<LI>search SuSE config for Magic SysRequest keys -- the function should be

<!--   compiled in the kernel but has to be activated. Then you can press -->
  compiled in the kernel but has to be activated. Then you can press

<!--   weird key-combinations like Alt-Ctrl-Sysreq-R for register dump, ...S -->
  weird key-combinations like Alt-Ctrl-Sysreq-R for register dump, ...S

<!--   for disk sync,... see /usr/src/linux/Documentation for details. -->
  for disk sync,... see /usr/src/linux/Documentation for details.

<!--  -->


<!-- *) File server? What hardware? I had SCSI disks locking my system for -->

<LI>File server? What hardware? I had SCSI disks locking my system for

<!--   various reasons (Tagged queuing incompatibilites of indiv. drives, too -->
  various reasons (Tagged queuing incompatibilites of indiv. drives, too

<!--   long cables,..) -->
  long cables,..)
</ul></blockQuote>
<P><STRONG>
<IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> 
I'm going to keep your response handy -- several things to try.
Meantime, I realized I was booting the thing into runlevel 5 (rather
stupid, actually), so I've since changed it to 3. If it is, as someone
suggested, a framebuffer problem, maybe that will solve it for now. I'm
using a real old Voodoo 3 card I scrounged from my parts bin. If it
happens again, I'll have to tear the machine apart and start playing
with the memory, as someone else here suggested.
</STRONG></P>
<P><STRONG>
<IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> 
install and configure Linux is one thing. Learning how to do an autopsy
seems to be quite another!
</STRONG></P>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Thomas] 
That's because generally one doesn't do it quite like that. Problem
diagnosis is situation dependant. In any givem situation there is often a
small set of files and related information that you can analyse without
having to worry about the rest of the system.
</blockQuote>
<blockQuote>
Granted, this is related to how much information one is told at the time
(if you've been on this list for as long as I have, you'll come to realise
that usually we don't get any), and whether or not the person has tried to
remedy it.
</blockQuote>
<blockQuote>
In general though, poking around, taking an aspect of your system, looking
at what it does, and how is all related and helful to you when you have to
come to diagnose anything.
</blockQuote>
<P><STRONG>
<IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> 
Yes, well, I looked at the messages log, but saw only a gap time-wise
between cron processing around 4 in the morning, and the time of the
crash. I'm not sure which of the other logs are important in that case.
Where do I find the register dump (although I suspect it won't make much
sense to me, rather like those register dumps you get in Windows XP)?
</STRONG></P>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Thomas] 
Syslogd might have logged it, if the problem was software related, and
indeed if the said program produced any errors. If hardware then it
might not have, depending on the severity of the hardware failure.
</blockQuote>
<P><STRONG>
<IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> 
I'm using a real old Voodoo 3 card I scrounged from my parts bin. If it
happens again, I'll have to tear the machine apart and start playing
with the memory, as someone else here suggested.
</STRONG></P>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Thomas] 
It <EM>might</EM> be memory, but as the link I have you last time around said,
memory problems tend to be more 'visible' in the sense that you get a lot
of applications SEGFAULTing and SEGABRTing for no apparant reason. In such
instances, installing and running 'memtest86' is usually of help.
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [K.-H] 
Most of the time I had the great luck of oopes and
kernel crashes occuring in the scsi layer, often hardware problems. If
the scsi layer is in trouble nothing will get written to disk. What's
software related regarding the kernel? The kernel deals with hardware,
and it's supposed to handle error conditions gracefully, i.e. not just
freeze without a hints whats gone wrong. But there are situations where
the kernel doesn't have a chance of leaving hints on harddrive.
</blockQuote>
<blockQuote>
Then a few thing might be useful: (to Tom B)
</blockQuote>

<blockQuote><ul>
<!-- *) run the box without X as you suggested yourself -->

<LI>run the box without X as you suggested yourself

<!--  -->


<!-- *) switch to konsole 10 (sys messages). Even if the kernel might not be -->

<LI>switch to konsole 10 (sys messages). Even if the kernel might not be

<!--   able to leave a trace on the HD it might give a hint here. -->
  able to leave a trace on the HD it might give a hint here.

<!--  -->


<!-- *) for any reg dump on konsole 10 or syslog you *need* to run it through -->

<LI>for any reg dump on konsole 10 or syslog you <EM>need</EM> to run it through

<!--   ksymoops to make it useful. That's something nobody can take over -->
  ksymoops to make it useful. That's something nobody can take over

<!--   because it has to be done on your system, with your kernel and kernel -->
  because it has to be done on your system, with your kernel and kernel

<!--   symbols. I hope SuSE set everything needed up correctly. -->
  symbols. I hope SuSE set everything needed up correctly.

<!--   As you mentioned WinXX reg dumps -- in Linux they are about as useful -->
  As you mentioned WinXX reg dumps -- in Linux they are about as useful

<!--   as in WinXX, but Linux has the tools to decode them (ksymoops) to make -->
  as in WinXX, but Linux has the tools to decode them (ksymoops) to make

<!--   them useful. -->
  them useful.

<!--  -->


<!-- *) If you gain any information (and yes you will have to note it down on -->

<LI>If you gain any information (and yes you will have to note it down on

<!--   paper and give it to ksymoops after reboot) you can try here oo with the -->
  paper and give it to ksymoops after reboot) you can try here oo with the

<!--   kernel people. -->
  kernel people.

<!--  -->


<!-- *) this is an *option* to follow if you are interested *why* your system -->

<LI>this is an <EM>option</EM> to follow if you are interested <EM>why</EM> your system

<!--   crashes. As it's crashing very irregular this is a rather difficult -->
  crashes. As it's crashing very irregular this is a rather difficult

<!--   situation and a very slow process.  But "the machine was dead on the -->
  situation and a very slow process.  But "the machine was dead on the

<!--   next morning" wont help you next time it happens. Above mentioned things -->
  next morning" wont help you next time it happens. Above mentioned things

<!--   (along with running a  printer or a serial line console) would also help -->
  (along with running a  printer or a serial line console) would also help

<!--   in getting the syslog right up to the crash. -->
  in getting the syslog right up to the crash.
</ul></blockQuote>
<blockQuote>
suggested reading:
</blockQuote>
<blockQuote><BLOCKQuote>
/usr/src/linux/Documentation/oops-tracing.txt
</BLOCKQuote></blockQuote>
<blockQuote>
ksymoops man page
</blockQuote>
<blockQuote>
But I have to say that often enough I also do not try to hunt spurious
crashes which <EM>do</EM> occasionally happen. Either hardware causes or whatever.
You always can try a different kernel or simply hope for the best.
</blockQuote>
<blockQuote>
Still -- keeping the system on konsole 10 is not a difficult thing to do
and it just might give you something useful next time (note it down for
ksymoops if it's a oops or panic).
</blockQuote>
<blockQuote>
<A HREF="http://www.suse.com/">SuSE</A> has memtest as bootoption -- run it if you suspect the RAM, run it
long (several passes) and the full test suite if you don't find any
errors on the first go.
</blockQuote>
<P><STRONG>
<IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> 
Thanks Karl and Thomas. This is the starting point I needed. (For one
thing, I didn't even know about konsole10: looks helpful).  I just wish
I had more from the crash than just a black screen, but that's what I
get for running X on bootup for a file server. Between the two of you, I
think I have the answers I was looking for when I started this thread:
not what went wrong exactly, but how to dig in, and try to figure it out
for myself.
</STRONG></P>
<P><STRONG>
Oh, Thomas, when I rebooted to runlevel 3, I entered that video setting
you suggested as well.
</STRONG></P>
<P><STRONG>
I just know I'll be back with more questions, though. One way or
another, I'll figure this Linux thing out.
</STRONG></P>
<P><STRONG>
Thanks again, guys. Your help, as always, is much appreciated.
</STRONG></P>

<!-- 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"
	>I blew out Fedora with yum and 2.62</H3>


<p><strong>From Jack Sprat 
</strong></p> 
<p></strong></p>

<p align="right"><strong>Answered By:  Benjamin A. Okopnik, Thomas Adam
</strong></p>
<P><STRONG>
I will try and balance brevity with information.
</STRONG></P>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Thomas] 
Always a good thing 
<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"
	> 
I was on dial-up with kppp on an old 266MHz PC with Fedora running 2.6.2
kernel and running yum for the first time. I did not like the large
number of not small files being downloaded to my machine and did a "kill
-9" on the process. Bad bad bad. "ls" produced "Segmentation fault" as
did several other commands. Machine would not reboot. Booted from rescue
CDROM and "chroot" gave Segmentation fault".
</STRONG></P>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Thomas] 
This is indicative that glibc had yet to upgrade. You should never hault
the system in an upgrade if you can help it. <A HREF="http://www.debian.org/">Debian</A> does a good job of
recovery, but the point is that if you do, you'll have damaged and
incomplete packages which will invariably break your system. Then you have
to go down the route of rescue CDs and the like.
</blockQuote>
<P><STRONG>
<IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> 
Read up on chroot and  created a static linked bash on a second machine
and was able to chroot once this was in place. "ls" failed as did "vi"; pwd
worked. On a good  machine I compiled a static linked "ls"
</STRONG></P>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Ben] 
*Ouch.*
</blockQuote>

<blockquote><pre>ben@Fenrir:~$ ldd `which ls`
                librt.so.1 =&gt; /lib/tls/librt.so.1 (0x4002a000)
        libacl.so.1 =&gt; /lib/libacl.so.1 (0x40030000)
        libc.so.6 =&gt; /lib/tls/libc.so.6 (0x40038000)
        libpthread.so.0 =&gt; /lib/tls/libpthread.so.0 (0x40171000)
        /lib/ld-linux.so.2 =&gt; /lib/ld-linux.so.2 (0x40000000)
        libattr.so.1 =&gt; /lib/libattr.so.1 (0x40180000)

When any one of those libs isn't happy, ain't *nobody* happy; almost
all of them are critical core libraries from the "libc6" kit.
</pre></blockquote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Thomas] 
pwd worked because you were using the bash builtin as opposed to the ELF
version.
</blockQuote>
<P><STRONG>
<IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> 
(I had to add -static to linker  and it complained about one function not
being linked in, but seems to  work. Should not one be able to make static
linked copies of  utilities/programs such as are in Fedora coreutils?).
</STRONG></P>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Thomas] 
No, the whole point of having dynamically linked files is that their size
is reduced, making them easy to put onto floppy diskettes, etc. Not only
that it allows for greater portability.
</blockQuote>
<P><STRONG>
<IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> 
With "ls" in place on the damaged machine, I was able to see what I was
doing and recovered <TT>/lib</TT> from a two week old backup after "chroot"ing to
the damaged file  system. I have cowardly retreated to Fedora kernels and the system boots and I have discovered no problems with one exception.
</STRONG></P>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Thomas] 
Usually something like:
</blockQuote>

<blockquote><pre>mount /dev/abc /mnt &amp;&amp; chroot /mnt /bin/bash
</pre></blockquote>
<blockQuote>
where <TT>/dev/abc</TT> is your damaged partition, is sufficient.
</blockQuote>
<P><STRONG>
<IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> 
On my good machine the route table when on dial up had a route to the
server I am hooked up to and the name is resolved. On my damaged machine
"host" and "dig" work in resolving names or IPs but the server name is
not resolved in the route table.  The real problem is neither Konqueror
non Mozilla will go to any Internet site regardless of whether IPs or
names are used. If an IP is used, such as 000.00.00.0 the name is
resolved in the error message stating that "www.aaaaaaa.aaaaa.com not
resolved.". Text browser lynx does work, although I am worse than a
</STRONG></P>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Thomas] 
Sounds like you're missing:
</blockQuote>

<blockquote><pre>/etc/resolv.conf
</pre></blockquote>
<blockQuote>
and valid entries in there.
</blockQuote>
<blockQuote>
Hint: man resolv.conf
</blockQuote>
<P><STRONG>
<IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> 
newbie with it. I have checked network files in <TT>/etc</TT> and its
subdirectories  and compared to my good machine until I am blue. I have
turned off the firewall and commented out hosts.&lt;deny allow&gt;. I have
done "rpm -V" on all installed rpms. Although the listing is not
perfectly clean, neither is it on my good machine.  I suspect something
in the <TT>/usr/lib</TT> directory. I do not believe I have been hacked but of
course who knows? How would you proceed?
</STRONG></P>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Thomas] 
This is not a <TT>/usr/lib</TT> issue, but more a question of configuration. As
well as checking for <TT>/etc/resolv.conf</TT>, ensure that in the file:
</blockQuote>

<blockquote><pre>/etc/nsswitch.conf
</pre></blockquote>
<blockQuote>
you have the line:
</blockQuote>

<blockquote><pre>hosts:          files dns
</pre></blockquote>
<blockQuote>
That, is, make sure that dns is listed after files, as above.
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Ben] 
I'm amazed at your persistence and quite tickled by yet another
demonstration of how tough Linux is. In my experience and in the stories
that I've heard from others, Linux systems can be rescued from all sorts
of incredible damage - and you've (mostly) managed to pull it off.
</blockQuote>
<blockQuote>
I would back up all my data, clear out the partition, do a fresh
install, and put the data back on. Yeah, you could be macho about it and
try to trace everything down by function... which would leave you open
to problems with subsystems you're currently not using (this will, of
course, happen long after you've forgotten that this damage even
occured.) Since you don't know exactly what you broke, you'll never know
everything you need to fix; this is one of the situations where I'd
apply my mechanic friend Ken's dictum of "keep removing stuff until you
get to something you <EM>know</EM> is good and build up from there." It's also
the most efficient approach at this point, IMO.
</blockQuote>
<P><STRONG>
<IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> 
I hate to clog your mailbox, but I wanted to thank Ben O. and Thomas A.
for their rapid response to my 2/20 question and their insights.
</STRONG></P>
<P><STRONG>
I have decided to restore my backups (only two weeks old) and if that
fails, reinstall from scratch and reload my data.
</STRONG></P>

<!-- end 4 -->
<!--     .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.     -->
<A NAME="tag.5"><HR WIDTH="75%" ALIGN="center"></A>
<!-- begin 5 -->
<H3 align="left"><img src="../gx/dennis/qbubble.gif" 
	height="50" width="60" alt="(?) " border="0"
	>2c tip: filtering in-place</H3>


<p><strong>From Kapil Hari Paranjape 
</strong></p> 
<p></strong></p>

<p align="right"><strong>Answered By:  Kapil Hari Paranjape, Ben A. Okopnik, Thomas Adam, Jay R. Ashworth
</strong></p>
<P><STRONG>
Hello,
</STRONG></P>
<P><STRONG>
I have always thought that filtering files "in-place" was
not possible from the command line...
...until today---one lives and learns.
</STRONG></P>

<pre><strong>  dd if=file bs=4k | filter | dd of=file bs=4k conv=notrunc
</strong></pre>
<P><STRONG>
Where "file" is the file you want to filter and "filter"
is the filtering program you want to apply.
</STRONG></P>
<P><STRONG>
Examples:
</STRONG></P>

<p><Strong><ul>
<!-- *) Use rot13 as the filter and you get (rather minimal) encryption -->

<LI>Use rot13 as the filter and you get (rather minimal) encryption

<!--     of the file contents. -->
    of the file contents.

<!--  -->


<!-- *) Use tr '[A-Z]' '[a-z]' as the filter and you can downcase a file. -->

<LI>Use tr '[A-Z]' '[a-z]' as the filter and you can downcase a file.
</ul></Strong></p>
<P><STRONG>
<A HREF="http://www.itworld.com/nl/unix_sys_adm/09252002"
	>http://www.itworld.com/nl/unix_sys_adm/09252002</A>
</STRONG></P>
<P><STRONG>
have a perl solution.
</STRONG></P>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Thomas] 
Perl/sed/ruby all honour the '-i' flag, which is a started, then just
apply regexps to match anything but the filter expression.
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Ben] 
The "buffer" program does exactly the same as the above; the process is
called "reblocking".
</blockQuote>

<blockquote><pre>buffer &lt; foo | filter &gt; foo
</pre></blockquote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Ben] 
If the file is bigger than 1MB, you'll need to specify a larger queue
with the "-m" option, but that's usually not an issue.
</blockQuote>
<blockQuote>
Conversely, as Thomas mentioned, you could use Perl's, etc. "in-place
edit" switch:
</blockQuote>

<blockquote><pre># rot13
perl -i -wpe'y/a-zA-Z/n-za-mN-ZA-M/' file

# lc everything
perl -i -wpe'$_=lc' file
</pre></blockquote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Ben] 
buffer &lt; foo | filter &gt; foo
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Jay] 
Oh, cause buffer reads the entire file before the '&gt;' can stomp it?
</blockQuote>
<blockQuote>
Well, that's not <EM>exactly</EM> the same... 
<IMG SRC="../gx/dennis/smily.gif" ALT=":-)" 
		height="24" width="20" align="middle">
</blockQuote>
<blockQuote>
Doesn't that still depend on order of evaluation by the shell?  Is that
defined?
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Thomas] 
Well, yes....
</blockQuote>

<blockQuote><ol>
<LI>buffer &lt; foo


<LI>| filer is acted upon


<LI>Resultant output to file

</ol></blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Jay] 
Well, not necessarily.
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Ben] 
Well, <EM>yeah</EM> - just about as definitively as anything in Bash is.
Otherwise Kapil's method wouldn't work either. Neither would piping
anything through "sort". The left side of the pipe has to terminate
before the right side can do anything with the output; in many cases,
there <em>  is  </em> no output until just before the left side terminates.
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Jay] 
In fact I think that's wrong: I don't think the dd method <EM>does</EM> depend
on order of eval; the writing copy of dd can't try to write a block
until it <EM>has</EM> it, so I believe that that method is <EM>guaranteed</EM> never
to stomp data.
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Jay] 
A shell could (un)reasonably decide to evaluate the output redirection
(ie: stomp on the file) before the buffer program can read it.  At
best, it might be a race condition between the two sides of the pipe.
</blockQuote>
<blockQuote>
I don't think, intuitively, that it's at all reliable, where as I think
the dd approach probably is.
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Ben] 
Uh, not any shell that contains a <em>  working  </em> implementation of IPC. One
that's broken, certainly. Chances are that if time ran backwards, it
probably wouldn't work too well either...
</blockQuote>
<blockQuote>
Please state the mean and the average probabilities and the relevant
confidence levels for the accuracy of your intuitive approach. The data
generated in the course of your study may or may not be used as grounds
for questioning during your exam. 
<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"
	> [Jay] 
Every shell programing I've read in 20 years warns againts that
construct, precisely because most shells <EM>will</EM> set up the redirect
first and stomp the output file.  As for the pipeline, I believe that
most shells exec the last component first.  Maybe bash has changed
that; I remember a warning about it in the Bourne book.
</blockQuote>
<HR width="10%" align="left">
<font color="red"><blockquote><em>The nature of the thread changes slightly
 -- Thomas Adam</em></blockquote></font>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Kapil]
</blockQuote>
<blockQuote>
Hi,
</blockQuote>
<blockQuote>
Just a few additional remarks:
</blockQuote>
<blockQuote><BLOCKQuote>
(a) perl, python and vi/ex do offer alternate solutions ...  but see below.
</BLOCKQuote></blockQuote>
<blockQuote>
(b) I couldn't locate "buffer"---where do I find it?
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Thomas] 
Oddly enough, under <A HREF="http://www.debian.org/">Debian</A> it is in the 'buffer' package.
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Kapil] 
(c) Just to defend the "dd" solution a bit:
</blockQuote>
<blockQuote><BLOCKQuote>
When the "dd" command-line given in the earlier mail is terminated
(for any reason like a Control-C), it outputs the number of blocks
read/written. Thus, the intrepid user can restart the process by
modifying it with suitable "seek" and "skip" commands. Of course, this
assumes that the filter operates on data sizes less than 4k
independently.
</BLOCKQuote></blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Thomas] 
See the "-S", "-s", and "-z" to buffer(1) 
<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"
	> [Kapil] 
I became aware of this "dd" procedure while trying to (yes I'm crazy)
encrypt one entire disk partition in-place. The problem with the other
solutions is that they require a lot of memory to run.
</blockQuote>
<blockQuote>
As far reading and writing to pipes is concerned, here is how I
understand it---please correct me if I am wrong. The kernel has its
own <EM>internal</EM> settings on how much data is buffered before a writing
process is put at the back of the queue and the reading process is woken
up. Thus killing any one process in the "dd" pipeline could only result
in <EM>less</EM> data being written than was read---an error from which one can
recover as described above.
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Ben] 
Since the source and the target file are the same, wouldn't you end up
with some truncated version of your data (i.e., the source being gone no
matter what)? It seems to me that the difference between complete
destruction of data and truncation of it at some random point can only
matter theoretically, except in a vanishingly small number of
situations.
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Jay] 
No, you wouldn't.
</blockQuote>
<blockQuote>
The target side dd is doing <EM>random access</EM>.
</blockQuote>
<blockQuote>
It writes the blocks sequentially, but it writes them <EM>into</EM> the
standing file, one at a time, without touching the blocks around them.
Likewise on the read side.  The killer is the <EM>redirection</EM>, which his
approach does not use, at all.  Not the pipe.
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Ben] 
Ah. I hadn't realized that. In that case, I agree; there's a large
difference. I've just tried it on a 100MB file I've made up for the
purpose, and it seems that you're right.
</blockQuote>

<!-- end 5 -->
<!--     .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.     -->
<A NAME="tag.6"><HR WIDTH="75%" ALIGN="center"></A>
<!-- begin 6 -->
<H3 align="left"><img src="../gx/dennis/qbubble.gif" 
	height="50" width="60" alt="(?) " border="0"
	>framebuffer colors</H3>


<p><strong>From frank.n. dale 
</strong></p> 
<p></strong></p>

<p align="right"><strong>Answered By:  Thomas Adam
</strong></p>
<P><STRONG>
Hello Gang,
</STRONG></P>
<P><STRONG>
Assume X is not running and your framebuffer
allows for 256 colors or more.
</STRONG></P>
<P><STRONG>
Please give manual instructions (or C code)
to write on the screen 64 characters in
different colors.
</STRONG></P>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Thomas] 
Hi, there. Assume for a moment that we cared. Then realise that actually
this is The Answer Gang to do with Linux questions. Then assume that we do
not answer homework questions. Then assume that you want to look here:
</blockQuote>
<blockQuote><BLOCKQuote>
<A HREF="..tag/ask-the-gang.html"
	>http://linuxgazette.net/tag/ask-the-gang.html</A>
</BLOCKQuote></blockQuote>
<blockQuote>
If you assume all of these, then you have a tautology.
</blockQuote>
<blockQuote>
Of course your programming homework is quite easy to do, it just requires
that you do a little research first, as with any academic course you might
be studying. It takes work, and if you are not prepared to put any in, why
bother with it? If you do not understand it, then that is a different
matter, to be taken up with your lecturer.
</blockQuote>
<P><STRONG>
<IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> 
Please do not forward this query to Thomas Adam, he
does not know.
</STRONG></P>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Thomas] 
Unfortunately, I do.
</blockQuote>
<P><STRONG>
<IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> 
How do you set and get colors outside the range 0-F hex
when using framebuffer in the Linux console?
</STRONG></P>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Thomas] 
For this, you will have to look at vga.c in the kernel source, and at
fb.c. You will almost certainly have to hack the kernel source to allow
this.
</blockQuote>
<P><STRONG>
<IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> 
This query is not a home work exercise. It is based on
fruitless Goggle search of many hours over a span of
several months. The major framebuffer sites
</STRONG></P>
<P><STRONG>
<A HREF="http://linuxconsole.sourceforge.net/fbdev"
	>http://linuxconsole.sourceforge.net/fbdev</A>
<A HREF="http://linux-fbdev.sourceforge.net"
	>http://linux-fbdev.sourceforge.net</A>
<A HREF="http://www.directfb.org"
	>http://www.directfb.org</A>
</STRONG></P>
<P><STRONG>
do not deal with it nor does the HOWTO-framebuffer.
Also the console escape sequences for colors only apply
to colors 0-F.
</STRONG></P>
<P><STRONG>
The only solution found so far involves the SVGALib
which is too much of an overhead. There must be a
simpler solution. Do you know more than I do?
</STRONG></P>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Thomas] 
SVGALib is nothing to do with framebuffers, but it will allow you to
display console screen resolutions higher than the default.
</blockQuote>

<font color="#000066"><blockquote><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Heather] Other than the vague bit about it being able to use FBDev as its video
type, if you have a framebuffer enabled kernel and your monitor settings
are right in /etc/libvga.config.
</blockquote></font>
<P><STRONG>
<IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> 
The query is relevant for syntax coloring in the Linux
console (text, no X). With the standard 16 foreground
and 8 background colors, syntax coloring is a pain in
the eyes. With the 256 colors or more that you get from
framebuffer, syntax coloring could become pleasant and
effective.
</STRONG></P>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Thomas] 
So why not run your console with a setting of:
</blockQuote>

<blockquote><pre>vga=0x317
</pre></blockquote>
<blockQuote>
while will run a 1024x786x256 colours.
</blockQuote>
<blockQuote>
Look here:
</blockQuote>

<blockquote><pre>Colours   640x400 640x480 800x600 1024x768 1152x864 1280x1024 1600x1200
--------+--------------------------------------------------------------
 4 bits |    ?       ?     0x302      ?        ?        ?         ?
 8 bits |  0x300   0x301   0x303    0x305    0x161    0x307     0x31C
15 bits |    ?     0x310   0x313    0x316    0x162    0x319     0x31D
16 bits |    ?     0x311   0x314    0x317    0x163    0x31A     0x31E
24 bits |    ?     0x312   0x315    0x318      ?      0x31B     0x31F
32 bits |    ?       ?       ?        ?      0x164      ?
</pre></blockquote>
<blockQuote>
(this is for: vga=&lt;foo&gt; in <TT>/etc/lilo.conf</TT>).
</blockQuote>

<!-- end 6 -->
<!--     .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.     -->
<A NAME="tag.7"><HR WIDTH="75%" ALIGN="center"></A>
<!-- begin 7 -->
<H3 align="left"><img src="../gx/dennis/qbubble.gif" 
	height="50" width="60" alt="(?) " border="0"
	>Mirror 2 web servers</H3>


<p><strong>From Bradley Chapman, Thomas Adam, John Karns, Ben Okopnik 
</strong></p> 
<p></strong></p>
<P><STRONG>
Hi  folks at ,The Answer Gang
</STRONG></P>
<P><STRONG>
I have two webservers running linux (redhat)
one of them is the primary server and the other one acts as backup
</STRONG></P>
<P><STRONG>
the thing is that i want to be able to mirror these servers in both ways
</STRONG></P>
<P><STRONG>
including this:
</STRONG></P>

<p><Strong><ul>
<!-- * mysql databases -->

<LI>mysql databases

<!-- * http folder -->

<LI>http folder

<!-- * httpdconfig -->

<LI>httpdconfig
</ul></Strong></p>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Bradley] 
Well, since you're using a MySQL database, have you considered moving the MySQL
database and DBMS onto a third machine which is more powerful than the two
webservers, and simply having the webservers query the database using your
favorite RDBMS protocol. Or you could use the MySQL mirroring and load balancing
features (Google turns up a lot of links).
</blockQuote>
<blockQuote>
Many online websites, such as discussion forums, often place the DB onto a
separate machine and the Web server software onto another one (or two, or any
value of N), and use DNS round robin to rotate amongst the Web servers, thus
lessening the risk that a single machine failure will kill the site.
</blockQuote>
<P><STRONG>
<IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> 
i was thinking a shell script would do the trick!
but my competence ends just after #!/bin/bash!
</STRONG></P>
<P><STRONG>
i am not asking for a complete script
</STRONG></P>
<P><STRONG>
just some were to turn for help 
<IMG SRC="../gx/dennis/smily.gif" ALT=":)" 
		height="24" width="20" align="middle">
</STRONG></P>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Bradley] 
You can help us by supplying ASCII art defining your network topology - the
really smart people who know DBs and stuff on this list will probably need it

<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"
	> [Thomas] 
Have a look at the 'rsync' utility -- that will fit your needs quite
happily.
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [John] 
Just thought I'd mention a few general suggestions.
</blockQuote>
<blockQuote>
To read up on bash scripting, you might want to take a look at the
"advanced bash scripting guide" at one of the following URL's.
</blockQuote>

<TABLE WIDTH="95%" BORDER="1" BGCOLOR="#FFFFCC"><TR><TD>
<p align="center">...............</p>
<blockQuote>
Linux Documentation Project:
<A HREF="http://www.tldp.org/LDP/abs/html"
	>http://www.tldp.org/LDP/abs/html</A>
<A HREF="http://www.tldp.org/LDP/abs/html/index.html"
	>http://www.tldp.org/LDP/abs/html/index.html</A>
<A HREF="http://www.tldp.org/LDP/abs/abs-guide.html.tar.gz"
	>http://www.tldp.org/LDP/abs/abs-guide.html.tar.gz</A>
<A HREF="http://www.tldp.org/LDP/abs/abs-guide.pdf"
	>http://www.tldp.org/LDP/abs/abs-guide.pdf</A>
</blockQuote>
<blockQuote><DL><DT>
Sunsite:
<DD><A HREF="http://www.ibiblio.org/pub/Linux/docs/linux-doc-project/abs-guide"
	>http://www.ibiblio.org/pub/Linux/docs/linux-doc-project/abs-guide</A>
</DL></blockQuote>
<blockQuote><DL><DT>
Postscript --
<DD><A HREF="http://www.ibiblio.org/pub/Linux/docs/linux-doc-project/abs-guide/abs-guide.ps.gz"
	>http://www.ibiblio.org/pub/Linux/docs/linux-doc-project/abs-guide/abs-guide.ps.gz</A>
</DL></blockQuote>
<blockQuote><DL><DT>
Text --
<DD><A HREF="http://www.ibiblio.org/pub/Linux/docs/linux-doc-project/abs-guide/abs-guide.txt.gz"
	>http://www.ibiblio.org/pub/Linux/docs/linux-doc-project/abs-guide/abs-guide.txt.gz</A>
</DL></blockQuote>
<blockQuote><DL><DT>
Sunsite:
<DD><A HREF="http://www.ibiblio.org/pub/Linux/docs/linux-doc-project/abs-guide"
	>http://www.ibiblio.org/pub/Linux/docs/linux-doc-project/abs-guide</A>
</DL></blockQuote>
<blockQuote>
Author's home page:
<A HREF="http://personal.riverusers.com/~thegrendel/abs-guide-2.6.tar.bz2"
	>http://personal.riverusers.com/~thegrendel/abs-guide-2.6.tar.bz2</A>
[ 624k ] (bzip2-ed tarball containing SGML source, all example scripts, and rendered HTML)
</blockQuote><p align="center">...............</p>
</TD></TR></TABLE>
<blockQuote>
"man bash" at the command prompt will yield the extensive bash man page,
assuming that you have it available on your system.
</blockQuote>
<blockQuote>
Also, there are some articles on the subject in the archives of the Linux
Gazette, some of which were authored by Ben Okopnik, one of the members of
the answer gang.
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Ben] 
Yep. Just search for "shell scripting" (including the double-quotes) at
&lt;<A HREF="..search.html&gt"
	>http://linuxgazette.net/search.html&gt</A>; and you'll see it right at the top
of the stack.
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [John] 
The rsync utility is often used for mirroring and can save bandwidth.  For
the MySQL side of it, you may need to get a bit more creative.  I would
suggest fishing around on the 'net for DB mirroring with MySQL, as I
think rsync is intended more as a tool to deal with plain ASCII files,
although I could be off on that.
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
	HEIGHT="28" WIDTH="50" BORDER="0"
	> [Ben] 
[grin] Just a little, John. "rsync" is intended for file transfer in
general, no restriction as to type. I use it with the "-e ssh" option
(actually, I have "RSYNC_RSH=/usr/bin/ssh" set in my "~/.bash_profile"),
so it uses SSH as the underlying mechanism, but "rsh", although
deprecated in most situations, is also type-independent (although it's
somewhat clunky - the STDIN/STDOUT method of transferring data does make
it <em>  look  </em> like a text-specific gadget.)
</blockQuote>

<!-- end 7 -->
<P> <hr> </p>
<div id="articlefooter">
<H5 align="center">This page edited and maintained by the Editors
        of <I>Linux Gazette</I>
<br><a href="http://linuxgazette.net/copying.html"
        >Copyright &copy;</a> its authors, 2004
<BR>Published in issue 101 of <I>Linux Gazette</I> April 2004</H5>
<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>
</div>
<!-- end: articlecontent -->
</div>
<!--startcut ======================================================= -->
</BODY></HTML>
<!--endcut ========================================================= -->

</p>



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




<div id="articlefooter">




<p>
Published in Issue 101 of Linux Gazette, April 2004
</p>

</div>




</div>

<br />


<div class="content twdtarticle">


<h1>News Bytes</h1>
<p id="by"><b>By <A HREF="authors/conry.html">Michael Conry</A></b></p>


</b>
</p>


<p>
<p>
</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="#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>
</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:bytes@linuxgazette.net">bytes@linuxgazette.net</a>

<BR CLEAR="all">

<a name="leg"></a>
<P><hr><P>
<!-- ========= -->
<center><h3><font color="green">Legislation and  More Legislation</font></h3></center>
<P><hr><P>
<!-- ========= -->
<h3><img alt=" " src="../gx/bolt.gif">
<font color="green">EU IP Enforcement</font>
</h3>
<p>
<a href="http://www.eff.org/news/breaking/archives/2004_03.php#001256">The EFF has reported</a> on a recent vote in the European Parliament, adopting the Directive on Intellectual Property Enforcement.  This gives rights holders new tools with which to attack intellectual property infringers.  The proposals make little distinction between unintentional, non-commercial infringement by consumers, as opposed to the for-profit quasi-industrial infringement practised by professional pirates. 
</p>
<P><hr><P>
<!-- ========= -->
<h3><img alt=" " src="../gx/bolt.gif">
<font color="green">European Microsoft Case</font>
</h3>
<p>
As  <a href="http://www.theregister.co.uk/content/4/36496.html">reported by The Register</a> The European Commission has found that Microsoft has  <a href="http://europa.eu.int/rapid/start/cgi/guesten.ksh?p_action.gettxt=gt&amp;doc=IP/04/382|0|RAPID&amp;lg=EN;">abused its position as a monopoly</a> in the market.  The findings centered on Microsoft's use of its dominant position in the OS sector to acquire market share in associated products (e.g. media player). 
</p>
<p>
The  <a href="http://europa.eu.int/rapid/start/cgi/guesten.ksh?p_action.gettxt=gt&amp;doc=IP/04/382|0|RAPID&amp;lg=EN;">remedies imposed include</a> requiring the  disclosure of interface documentation to allow non-Microsoft work group servers to inter-operate with Windows systems.  This information must be updated as products change, and Microsoft will be entitled to remuneration "To the extent that any of this interface information might be protected by intellectual property in the European Economic Area".  Microsoft will also have to offer to PC manufacturers a version of Windows without Windows Media Player.  A fine was also imposed. 
</p>
<p>
Though some, such as Sun Microsystems,  <a href="http://www.theregister.co.uk/content/4/36498.html">have strongly welcomed the ruling</a>,  <a href="http://www.newsforge.com/article.pl?sid=04/03/23/0035227">others are more sceptical about its potential to change matters</a>. Indeed, the <a href="http://www.theregister.co.uk/content/4/36520.html">licensing of APIs may offer a welcome new revenue stream</a> to the Redmond company. 
</p>
<a name="links"></a>
<P><hr><P>
<!-- ========= -->
<center><h3><font color="green">Linux Links</font></h3></center>
<p>
<a href="http://www.thenetworkadministrator.com/EuropeanParliament.htm">Concerns about European patents</a> 
</p>
<p>
<a href="http://linuxdevices.com/articles/AT8693703925.html">LinuxDevices.com's Embedded Linux Market Survey</a> 
</p>
<p>
<a href="http://www.newsforge.com/article.pl?sid=04/03/05/1757235">How Not To</a> sell Linux Products
</p>
<p>
<a href="http://lxer.com/">LXer</a> (pronounced Elexer) is a newish (January) Linux news site.  Well worth a look. 
</p>
<p>
<a href="http://www.theregister.co.uk/content/68/36611.html">Simputer uses Linux</a> 
</p>
<p>
<a href="http://www.eetimes.com/sys/news/showArticle.jhtml%3Bjsessionid=3XREN4PNRRNFUQSNDBCSKHY?articleID=18401004">Linux in the living room</a> 
</p>
<p>
<a href="http://www.eweek.com/article2/0,1759,1553990,00.asp">8 rules for open-source business strategy</a> 
</p>
<p>
<a href="http://www.osnews.com/story.php?news_id=6443">Video production with Linux</a> 
</p>
<p>
<a href="http://www.linux.com/article.pl?sid=04/03/25/1650210">creating PDF files with ps2pdf</a> 
</p>
<p>
<a href="http://www.linuxdevcenter.com/pub/a/linux/2004/03/25/ps2_linux.html">A look at the state of Linux on PS2</a> 
</p>
<p>
<a href="http://www.illuminata.com/cgi-local/pub.cgi?docid=linux26">Linux 2.6</a> at illuminata 
</p>
<p>
<a href="http://news.com.com/2100-7344_3-5170061.html">Macromedia to offer Linux support</a> on a trial basis 
</p>
<p>
<a href="http://www.itmanagersjournal.com/management/04/02/27/2210254.shtml">Hiring Open Source Developers</a> 
</p>
<p>
Linux Warcry asks <a href="http://linux.warcry.com/scripts/news/view_news.phtml?site=26&amp;id=15941">what are the alternatives to XFree86</a> while The Age has a useful report on the  <a href="http://www.theage.com.au/articles/2004/03/04/1078295485888.html">licence issues between Apache, XFree86 and FSF</a> 
</p>
<p>
<a href="http://www-106.ibm.com/developerworks/library/wi-enable.html?ca=dgr-lnxw02Linux4Wireless">Wireless Linux</a> 
</p>
<p>
<a href="http://www.computerworld.com.au/index.php?id=1316895686&amp;fp=16&amp;fpid=0">CEOs say Open Source keeps IT spending down</a> and <a href="http://www.linuxinsider.com/perl/story/33013.html">and saves money</a> 
</p>
<p>
<a href="http://www.atimes.com/atimes/China/FC02Ad02.html">Comic-book publisher turned IT-company</a> aims to bring Linux and new hardware platforms to China at large 
</p>
<p>
<a href="http://www.newsforge.com/technology/04/02/25/1548203.shtml">Ian Murdock on the future shape of Linux distributions</a> 
</p>
<p>
<a href="http://www.linuxdevcenter.com/pub/a/linux/2004/02/26/linux_distros.html">Linux distributions around the world</a> 
</p>
<p>
<a href="http://www.linuxelectrons.com/article.php?story=20040226231747944">Hyper-threading and Linux</a> 
</p>
<p>
<a href="http://www.groklaw.net/article.php?story=20040301025634926">SCO goes quiet in Germany</a> following an out of court settlement with Univention.  Effectively, they seem to be prevented from publicly expressing most of the statements behind their case. 
</p>
<p>
<a href="http://www.csmonitor.com/2004/0301/p11s01-almp.html">Copyright law stifling art</a> with DJ Danger Mouse's  <a href="http://www.google.ie/search?q=grey+album&amp;ie=UTF-8&amp;oe=UTF-8&amp;hl=en&amp;btnG=Google+Search&amp;meta=">Grey Album</a> 
</p>
<p>
<a href="http://www-106.ibm.com/developerworks/linux/library/l-net26.html?ca=dgr-lnxw02KCNetwork">Networking improvements in the 2.6 Kernel</a> 
</p>
<p>
<a href="http://www.onlamp.com/pub/wlg/4546">Introduction to the Gumstix</a>, a tiny Linux computer 
</p>
<p>
<a href="http://www.linuxdevcenter.com/pub/a/linux/2004/03/04/screen_capture_movies.html">Creating UNIX screen-capture movies</a> 
</p>
<p>
<a href="http://linuxdevices.com/articles/AT2184776431.html">Migrating to 2.6</a> 
</p>
<p>
<a href="http://news.bbc.co.uk/2/hi/technology/3537165.stm">Cold war between open and closed source camps</a> 
</p>
<p>
<a href="http://www.2cpu.com/articles/98_1.html">Comparison of Linux 2.6.4 vs 2.4.25</a> while <a class="nonexistent" href="/~mconry/cgi-bin/wiki/moin.cgi/NewsForge">NewsForge</a> asks <a href="http://software.newsforge.com/software/04/03/19/1912222.shtml?tid=132&amp;tid=2&amp;tid=82&amp;tid=94">is the 2.6 kernel ready for general distribution?</a> 
</p>
<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">GNOME</font>
</h3>
<p>
The <a href="http://www.gnome.org/">GNOME Project</a> had the misfortune to experience an intrusion on the server hosting www.gnome.org and some related gnome.org websites.  However, it is unlikely that sources were tampered with, and by all accounts <a href="http://www.theregister.co.uk/content/53/36507.html">this was a minor intrusion</a>. 
</p>
<P><hr><P>
<!-- ========= -->
<h3><img alt=" " src="../gx/bolt.gif">
<font color="green">Apache</font>
</h3>
<p>
The Apache Software Foundation, and The Apache HTTP Server Project have announced the release of version 2.0.49 of the Apache HTTP Server. As well as fixing three security vulnerabilities, this new release also includes numerous enhancements and new features. 
</p>
<P><hr><P>
<!-- ========= -->
<h3><img alt=" " src="../gx/bolt.gif">
<font color="green">OpenOffice.org</font>
</h3>
<p>
<a href="http://www.openoffice.org/">OpenOffice.org</a>
has released a new version of the popular office productivity suite: <a class="nonexistent" href="/~mconry/cgi-bin/wiki/moin.cgi/OpenOffice">OpenOffice</a>.org 1.1.1.  This is primarily  <a href="http://download.openoffice.org/1.1.1/release_notes_1.1.1.html">a bug-fix release</a> though it does include a few new features as well. 
</p>
<P><hr><P>
<!-- ========= -->
<h3><img alt=" " src="../gx/bolt.gif">
<font color="green">The Gimp</font>
</h3>
<p>
The Free image manipulation and graphics tool <a href="http://www.gimp.org/">the Gimp</a> has reached version 2.0.  This is a major release, and marks the advent of official support for the software on MS Windows and Mac OS X, as well as the traditional Unix-based operating systems. As well as the <a href="http://brix.gimp.org/files/presspack/pressrelease.pdf">official press release</a> you may be interested to read the descriptions of the  <a href="http://brix.gimp.org/files/presspack/about.pdf">new features included in this release</a>. The software can be downloaded now from <a href="http://www.gimp.org/downloads/">various mirror sites</a>. 
</p>
<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 <a href="http://lwn.net/Articles/76622/">votes to keep non-free</a>. 
</p>
<p>
The Debian package <a href="http://popcon.debian.org/">Popularity Contest</a> aims to help order the applications that will be included on the estimated 13 binary CDs sarge will ship on when released.  Participation is simply a matter of installing the  <a href="http://packages.debian.org/cgi-bin/search_packages.pl?searchon=names&amp;version=all&amp;exact=1&amp;keywords=popularity-contest">popularity contest package</a>. 
</p>
<P><hr><P>
<!-- ========= -->
<h3><img alt=" " src="../gx/bolt.gif">
<font color="green">Gentoo</font>
</h3>
<p>
The O'Reilly Linux devcenter has published an account by Danny O'Brien of <a href="http://www.linuxdevcenter.com/pub/a/linux/2004/03/15/gentoo.html">a talk given by Daniel Robbins, Gentoo's chief architect</a>. Also of interest is <a href="http://lxer.com/module/newswire/view/8009/index.html">the review of Gentoo</a> at LXer.
</p>
<P><hr><P>
<!-- ========= -->
<h3><img alt=" " src="../gx/bolt.gif">
<font color="green">Mandrake</font>
</h3>
<p>
<a href="http://www.mandrakesoft.com/company/investors/newsletter/sn040304?wslang=en">Mandrake has relisted on the stock market</a> after filing a plan for the repayment over the next nine years of its outstanding debts. 
</p>
<p>
Mandrake has also released a new revision of their operating system <a href="http://www.mandrakelinux.com/en/10.0/100PR.php3">Mandrake 10.0 Community</a>, which features the new 2.6 kernel. 
</p>
<P><hr><P>
<!-- ========= -->
<h3><img alt=" " src="../gx/bolt.gif">
<font color="green">UserLinux</font>
</h3>
<p>
<a href="http://www.linuxworld.com/story/44103.htm?DE=1">Bruce Perens on UserLinux</a> 
</p>

<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">GFI</font>
</h3>
<p>
<a href="http://www.gfi.com">GFI</a> has announced that it is developing a Linux version of its GFI <a class="nonexistent" href="/~mconry/cgi-bin/wiki/moin.cgi/MailSecurity">MailSecurity</a> product, and that it will be adding support for Linux-oriented features in all its products.  Previously, GFI <a class="nonexistent" href="/~mconry/cgi-bin/wiki/moin.cgi/MailSecurity">MailSecurity</a> was available for Microsoft Windows. 
</p>
<P><hr><P>
<!-- ========= -->
<h3><img alt=" " src="../gx/bolt.gif">
<font color="green">Linux Pocket Guide</font>
</h3>
<p>
O'Reilly has launched a new Linux reference book. The new  "<a href="http://www.oreilly.com/catalog/linuxpg/">Linux Pocket Guide</a>" by Daniel Barrett aims to be a useful reference for new and experienced Linux users who need a quick and handy means to look up Linux commands.   
</p>



</p>



<!-- *** BEGIN author bio *** -->
	<P> Mick is LG's News Bytes Editor.

<!-- *** BEGIN bio *** -->
<P>
<IMG ALIGN="LEFT" VALIGN="top" ALT="[Picture]" SRC="../gx/2002/tagbio/conry.jpg"
    WIDTH="128" HEIGHT="158">
<em>Born some time ago in Ireland, Michael is currently working on
a PhD thesis in the Department of Mechanical Engineering, University
College Dublin.  The topic of this work is the use of Lamb waves in
nondestructive testing.  GNU/Linux has been very useful in this work, and
Michael has a strong interest in applying free software solutions to
other problems in engineering.  When his thesis is completed, Michael
plans to take a long walk.
</em>
<br CLEAR="all">
<!-- *** END bio *** -->

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




<div id="articlefooter">



<p>
Copyright &copy; 2004, <A HREF="authors/conry.html">Michael Conry</A>. Copying license 
<a href="http://linuxgazette.net/copying.html">http://linuxgazette.net/copying.html</a>
</p>



<p>
Published in Issue 101 of Linux Gazette, April 2004
</p>

</div>




</div>

<br />


<div class="content twdtarticle">


<h1>Leaning Out of Windows</h1>
<p id="by"><b>By <A HREF="authors/brown.html">Tom Brown</A></b></p>


</b>
</p>


<p>
<P>This is a follow-up to my earlier article, "I Don't Think We're in Redmond Anymore, Toto" (<a href="../issue97/brown.html">Issue #97, December 2003</a>), in which I described my introduction to, and first impressions of, Linux. In this article, I wanted to give you my further impressions and experiences, so you have some idea what it's been like to go full-time (more or less) from Windows to Linux. In the process, I hope to pass on some helpful tips. Hopefully, you who follow in my footsteps can avoid stepping in some of the doggy-doo that I faced (<i>faced?</i> now there's a mental picture I could have done without).

<P><H2>Choosing a Linux Distro</H2>

<P>The first thing you need to do after deciding to give Linux a try is choose a distro. There are a lot of them out there, with different features and benefits to each one. I myself started out with Mandrake, and was happy with it until I raised my computer's memory to 1GB, at which point the default version of Mandrake refused to run. Unwilling to play around with it, I changed over to Red Hat 8 (and subsequently upgraded to Red Hat 9). My main reason for choosing Red Hat was the large number of companies that used it. In time, I'd like to make a living using Linux, so it seemed like a natural choice. In my opinion, RHL9 wasn't as easy to use as Mandrake, but it worked well enough. 

<P>One day, I received the "end of life" email from Red Hat, which gave me the choice of upgrading to their Enterprise version, Red Hat Enterprise Linux, or switching to the "hobbyist" version, Fedora Core (I refuse to call it "Fedora", since that name has been in use since 1998 by Cornell University and the University of Virginia for a different project). Suddenly, I was back to choosing a Linux distro again. The one choice from Red Hat was too expensive, and the other looked like a permanent beta version to me (sorry guys, I know some of you disagree). I decided to look at other distros, and finally settled on SuSE 9 Professional.

<P>In the course of this article, I'll mention some of the features in SuSE that attracted me to it, and which have made my life easier. Everyone has their favorite distro, of course, so before you jump into the Linux universe, talk to others about which distro they're using and why. Even if you're just playing around with Linux, you'll be a lot happier if you do your homework first. 

<P><H2>Installation</H2>

<P>Most Linux distributions are simple and straightforward to install (some don't even need installing, but run right from the CD). As long as the distro's new enough to recognize your equipment (or your equipment is old enough), installation's a snap. 

<P>At this point in your exploration of Linux, your biggest problem is going to be hardware support. I already mentioned that Mandrake didn't support my 1GB of memory. Neither Mandrake nor Red Hat recognized my Promise Raid controller (Red Hat saw it as two separate disk drives, and wanted to "fix" them for me). Red Hat also had problems using my LCD monitor. You may have to make some decisions here: do you want to stick with the distro you selected, or do you want to use that one piece of hardware? Someone that knows a good bit about Linux can probably fix what's wrong, but if that someone isn't you, you'll have to choose. When I discovered that SuSE supported all my hardware, my choice was made.

<P><H2>Getting It Just Right</H2>

<P>For many, once Linux is installed, that's the end of it. Time now to start playing with it. But what if you need to change something?  Perhaps you want to share a directory with a Windows machine on your local network, change the settings of the firewall, or use that 15-year-old laser printer that's sitting in the attic collecting dust.

<P>These tasks, and others, aren't as simple as you might think from your experience with Windows, but they're not impossible, either. Different distros may have their own custom tools to make these jobs easier, but many times, it comes down to manually editing a configuration text file.

<P>There are a lot of good text editors to help you here. Some are character-mode DOS-like applications(e.g., vim, emacs, joe, jstar), while others are Windows-like GUI apps (e.g., kvim, xemacs, Kwrite, Kate, Gedit), so use the one you're most comfortable with. In any case, you'll find the configuration files off the root directory under /etc. Now, you're going to need help understanding these files, which means searching the web for "HOWTO" docs for the job you're trying to do (e.g., "Samba-HOWTO-Collection.pdf"). 

<P>[ <I>Some distributions have a collection of HOWTOs available as an installable package,
or you can simply search the Net for "&lt;keyword&gt; HOWTO". - Editor</I> ]

<P>This is one of the places where SuSE attracted my attention. SuSE has a tool called "Yast2" (for "Yet Another Setup Tool"), which eliminates most of the work configuring both hardware and services. Most Yast screens have a separately-scrolling help panel on the left side, describing the fields to be configured on the right side panel. This help usually supplies you with enough information about the fields to make the correct entries. Each of the system changes I mentioned above (Windows share, firewall, printer setup) are a snap using Yast2. When you click the "Finish" button, Yast2 does whatever is necessary to make your change effective, including restarting services (otherwise, you'd have to go to the command line, and do it yourself). Someone comfortable with Linux, the command line, and the <i>/etc</i> directory, would want to do most of this manually. For someone from the Windows universe, however, a tool such as Yast2 makes Linux a lot less intimidating. This doesn't completely eliminate editing <i>/etc</i> files, but it handles most jobs.

<P>Other distros have their own methods of making configuring your system easier. Red Hat, for example, uses a lot of little programs, instead of the one monolithic one used by SuSE. As I said above, ask people what distro they use, and how this sort of feature works there. I can only tell you from my own experience. I like Yast2, and it (along with the distro's default use of KDE instead of Gnome) are what sold me on it. YMMV.

<P><H2>Disaster Recovery</H2>

<P>Even the experts make mistakes. Those of us still near the beginning of the Linux learning curve make a lot of them, so prepare for the worst. Once you have your system set just the way you want it, perform a backup of two things: the <i>/etc</i> directory (that's where all your carefully-crafted system settings are stored), and the contents of your home directory. One important tip here (from personal experience): if you're using drag-and-drop to copy the files somewhere, make sure you tell the file manager to show hidden files (in KDE, it's under the View menu) first. Files that begin with a period are hidden from the GUI file manager by default, and that's where your personal settings are stored. If they're not visible, they're not going to get copied. You've been warned.

<P>Another note on the SuSE 9 distro. The install CD (and the DVD) has a GUI-based system repair tool. One of the things it will repair is the boot process (e.g., if a Windows re-install overwrites the Grub boot sector), but it checks for, and fixes, a load of potential problems as well. It's saved me on more than one occasion.

<P><H2>My Security Rant</H2>

<P>OK, I'm gonna get on my soap box with this one. There has been a lot of talk in the press about viruses, trojans, and worms (oh, my!) attacking Windows. A lot of you may be thinking about moving to Linux to avoid all of that. Some say that the reason Windows gets attacked and Linux doesn't is that Windows has a lot more users.

<P>As Sherman Potter of the 4077th would say, "Horse hockey"! Windows, IMHO, is inherently insecure, mainly due to design decisions that go to the heart of the operating system. This cannot be corrected without fundamental changes to Windows, which no doubt would break nearly all existing applications. Applications and system services are integrated to operate together on a very low level. In many cases, they have to be in order to work. Notice the recent Microsoft announcement that XP Service Pack 2 will break some applications because of its security enhancements. When a flaw surfaces in one Windows application or service, it can seriously impact the entire system. This is like having repeated unprotected group sex with complete strangers (I think that's another mental image I didn't need). This goes beyond the question of allowing Outlook to execute code inside an email. The modular structure of Linux discourages this sort of behavior, helping to keep programs from interacting in ways they shouldn't. 

<P>If you want to secure your Linux installation against attack, I have a few suggestions. Home users don't need to run an antivirus in Linux if they follow a few precautions. First, don't run a web or ftp server that's visible outside your private network. Second, keep your computer behind a router (which is also the easiest way to share a cable or DSL modem between two machines). Third, if you're connecting to the Internet via WI-FI, enable the strongest protection you have (WEP, WPA, etc.), and make sure your Access Point will only connect with the MAC addresses of your own machines, so strangers can't come in. Fourth, don't run any script or program from a source you can't trust. Note that Windows programs won't run in Linux (unless you run them in Wine), so they're not a problem. Finally, don't poke unnecessary holes in your firewall. It's like leaving the windows open (if you'll excuse the expression) in a parked car. If you don't see a problem leaving your car windows open all night, then it's obvious you've never been to my old neighborhood.

<P><H2>Installing More Programs</H2>

<P>At some point, you'll want to install programs that didn't come with your Linux distro. After hardware configuration, this is the most difficult part of Linux to adjust to for the Windows user. Some distributions, such as Mandrake, Red Hat, and SuSE, use "RPM packages", a format originally designed by Red Hat. Many of these packages can be used on any Linux that accepts RPM files, but there are a few that may be specific to one distro or another. Many packages that can be used in any Linux are marked as specific to Red Hat, so you may have to look around, or ask someone, to find out if it will work with your distro. You could just try it, of course, if you're feeling lucky (for a moment there, I thought I heard Clint Eastwood). These packages are installed using the command line, and a program called "rpm". A good tip for using the "rpm" command (which I mentioned before) is to always use the "-v", or verbose option. This will give you a better idea what went wrong.

<P>RPM packages can suffer from a dependency problem. For example, if a package needs version 2.3 of a particular library to work, and you only have 2.0 on your machine, that's a dependency problem. This hasn't happened to me lately, but I've been keeping my system up-to-date (Yast2 can automatically check for, and apply, updates), so perhaps that's the key to success.

<P>While I've never worked with it, I understand that Debian has something called "Advanced Package Tool", or APT, that solves the dependency issue. But, as I said, I've never used Debian, so can't tell you how well APT works. People I've talked to swear by it, however, and would never use anything else. 

<P>It doesn't solve dependencies, but the Yast2 tool in SuSE automatically opens when you double-click the icon of an RPM package. The tool allows you to see a description of the package, and a list of the files in it (including the complete file path of each). You install the package with the click of a button. Yast2 isn't perfect. I've experienced problems with installing a few packages, and was forced to use the "rpm" command from a shell, but this didn't happen very often. All in all, SuSE makes installing RPM programs a lot easier than using "rpm" by itself.

<P>Another method you'll see for installing programs is the use of a shell script (usually with the file extension ".run"). The ones I've looked at have what appears to be random characters at the end. This is normal, and constitutes the material to be installed. You just run the script to install the program. As with all shell scripts, if you can't run it, check its permissions (in KDE, you'll find it in the Permissions tab of the icon's Properties dialog) to see if the file can be executed. Unlike Windows, Linux won't run any script or program file that doesn't have the "execute" bit set.

<P>Finally, we have an installation method that is both better and worse than the others. You download a "tarball" containing source code, then compile and install it. A tarball is a archive file, usually compressed with "gzip", with the extension ".tar.gz" (or sometimes just ".tgz"), which you have to unpack into a directory before you can do anything with it. From a command line, you can type the following to do so:

<PRE>
tom@MYMACHINE:~/temp&gt; tar xvzf programname.tar.gz
</PRE>

<P>If you're using KDE's file manager, there's another way: right-click on the tarball's icon, and select "extract here", "extract" or "extract to". The first menu option uses the program "Ark", while the other two use the program "Karchiver". If your familiar with using a flavor of "zip" on Windows, you know that not everyone creates an archive so that the contents extract into their own directory. This can make as much of a mess in Linux as it does in Windows, so always unpack the tarball in an empty directory, where it won't make a mess.

<P>Once you've unpacked the tarball, you're ready to compile and install. Don't be scared of this, even if you've never done any programming. All you have to do is type three separate commands into a shell:

<PRE>
tom@MYMACHINE:~/temp/expanded_tarball_dir&gt; ./configure
tom@MYMACHINE:~/temp/expanded_tarball_dir&gt; make
tom@MYMACHINE:~/temp/expanded_tarball_dir&gt; make install
</PRE>


<P>When this works, which is most of the time, it's great. I've occasionally had trouble with it, however. Sometimes, it's a matter of running some (or all) of the commands as root. Sometimes, the tarball is missing a file. Other times, it fails because it can't find the source it needs from elsewhere in your system. The benefit of this installation method is that the resulting binaries are built specifically for your system. You do, however, need to have the proper compilers installed.

<P>If you run into any problems, or see error messages you don't understand, just step back, take a deep breath, and check out Ben Okopnik's excellent Linux Gazette article <a href="../issue74/okopnik.html">"Installing Software From Source"</a>, from Issue #74. It goes into a lot more detail about this, and is a good starting point for tracking down your problem and fixing it.

<P><H2>Running Windows Programs in Linux</H2>

<P>You can run some windows programs in Linux. Not all of them, but a few of the key ones can be used if you know how. "How" is through a program called Wine (which stands for "Wine Is Not an Emulator"). The best way to use Wine is to make a copy of a real Windows directory (I use an old installation of Windows 98), and have Wine use it as part of a "fake c drive". You install programs into this fake drive by inserting the appropriate installation CD (for example, a Microsoft Office CD), and entering a shell command such as: 

<PRE>
tom@MYMACHINE:~&gt; wine /media/cdrom/setup.exe
</PRE>

<P>You'll see the familiar Windows installation screens. Not every program will work, however. For example, I haven't gotten Visio 2000 (the one from Visio Corp, not Microsoft) to install yet. Once a program is installed, you run it using a shell command such as the following.

<PRE>
tom@MYMACHINE:~&gt; wine "/c/Program Files/Microsoft Office/Office/winword.exe"
</PRE>

<P>I believe the most compatible version of Microsoft Office is 97. Later versions may not work completely. Where possible, though, you should avoid using Windows programs in Linux, since many programs work best when working with their native operating system. There are a lot of open source Linux programs out there, and you should check them out before falling back on a Windows app. Besides, your goal is to migrate away from Windows, right?

<P><H2>The Open Office Word Processor</H2>

<P>OK, I confess! The only part of Microsoft Office I really use is Word. I've mostly had good luck using the Open Office word processor, but I've had a few problems when loading a Word document, editing it, then saving changes out to the same file. Most of those problems dealt with tables, and resulted in a scrambled page when viewed in Word. The same page would look just fine in Open Office.

<P>My advice when editing word documents is to double-check the document's appearance in Word itself if the document has complex formatting (i.e., is not a straight-forward bit of text). The version of Open Office I used was 1.1, and this sort of problem may be corrected in newer versions. I fixed the document mentioned above by re-creating the table format from scratch in Open Office, then copying the text from the original document.

<P>Similar to using Wine, I recommend sticking with the native format in Open Office, and only save the document in Word format when you're ready to give it to someone. 

<P><H2>Games</H2>

<P>I still end up playing video games in Windows, rather than Linux. Mostly, it's because there aren't a lot of new games released for Linux. And, while some older games will work under Wine (e.g., Jedi Knight Outcast), not all of them will. A common problem I've seen is that a game will install under Wine, but when you go to run it, it complains that you're running a debugger. It tells you to exit the debugger and try again. This is a copy protection mechanism, and I don't know if there's a work-around for it. 

<P>Another problem I've seen in Wine is with games that come on two CD's. Midway through the install, it tells you to change disks. Sometimes you can, and sometimes you can't.

<P>Then you get a game such as Unreal Tournament 2004. It's available natively for Linux (no Wine needed), and runs beautifully. Besides being a fabulous game, it looks great under Linux, and runs fast, even with all the eye candy turned on (I have an nVidia Gforce 4 card with the nVidia 3D driver).  Disclaimer: to date, I've only been able to play the demo.

<P>Some manufacturers give you a Linux engine for their games, but you have to supply the rest of it yourself (e.g., levels). An example of this is Serious Sam First and Second Encounters. You download an installer for free, which asks you to insert the original game CD. While both of these particular games work OK, they don't recognize all of the mouse buttons (Logitech's two thumb buttons in particular). In contrast, Return to Castle Wolfenstein works perfectly, mouse buttons and all. If you already have the Windows version of one of these types of games, download the Linux installer and try it.

<P>Don't ignore the games that come free with Linux, however. My favorites are Frozen-Bubble (simple, and very addictive) and Armagetron (a 3D version of the Light Cycles in the movie Tron).

<P><H2>Ripping and Burning CD's</H2>

<P>So you just bought a new audio CD, and want to convert the songs on it to MP3 or Ogg Vorbis format then burn a CD for use in your portable player. This can get complicated for the Windows user. In Linux, you're often dealing with a lot of separate programs for this, instead of a do-it-all program like MusicMatch or iTunes. Some of these programs are actually command-line driven, with a separate program to serve as a GUI shell. 

<P>You're going to need a program to convert from the audio CD's ".wav" format to MP3 or Ogg. When dealing with MP3, the most common conversion program is called "Lame" (there are others). Once you have a copy of Lame (or whatever), you just plug it into the program you're using to "rip" the CD (e.g., "Grip").

<P>You can use the command line programs alone for burning CD's, but you don't have to. There are several GUI alternatives out there, such as K3B and cdbakeoven (I lean more towards cdbakeoven). I haven't tried burning a DVD in Linux yet, so I can't tell you whether, and how well, these two programs work for DVDs.

<P><H2>Network Sharing</H2>

<P>One of the things I wanted to do was take an old 750 MHZ computer, and turn it into a file server for both Linux and Windows clients. Yast2 made quick work of setting up both Samba (Windows sharing) and NFS (native Linux/Unix sharing). If you're not using SuSE, you can use the Samba browser tool, or just write both configuration files (Samba and NFS) by hand with a text editor. Find and read the HOWTO documents, and follow the examples. I had only one problem with my installation: I was using my router for DHCP (in which each computer in the network gets its IP address from the router), but couldn't fetch the IP address of the other network computers from the router. I ended up giving each computer a fixed IP address. Not pretty, but it works.

<P><H2>Getting Rid of Internet Ads</H2>

<P>Internet ads pay for the web site you're viewing, and are generally a fair trade-off for the information you're getting. Some ads, however, are so distracting and annoying that you just want to turn them off, particularly the animated ones. In Windows, I use Norton Internet Security to remove ads from the browser. Since there is no Linux tool (that I know of) to do the same, I had to find a few work-arounds, which I'll now pass on to you. I use Mozilla 1.6 as my web browser.

<P>First, using Mozilla, go to "Privacy and Security" in the Preferences dialog, and checkmark "Block unrequested popup windows". You have now stopped unwanted popup windows from appearing in Mozilla.

<P>There are two ways to block regular ads. The first is to  put the URL of the ad site in your "hosts" file, referencing it to the same IP address as the Localhost:

<PRE>
127.0.0.0   ads.fictitious.net
</PRE>

<P>This will work with any browser. The second, again in Mozilla, is to right-click on the ad (most of them will be a picture, not text), and select "Block Images From This Server" from the resulting popup menu. Using these two methods, you can block some ad servers, while allowing the rest.

<P>Finally, we have those annoying Flash ads. If you use Mozilla's new Firefox browser, you can add a plugin (see the Properties dialog) which replaces all Flash ads with a link that says something like "Click to play". The ad won't appear now unless you tell it to.

<P><H2>Playing Windows Media Video in Linux</H2>

<P>There are codecs available that allow you to play back at least some ".wmv" video files in Linux. Once a matching codec is installed (I use version 5.2-1 of "w32codec"), it's easy to configure something like xine to play the video. 

<P><H2>The Bottom Line</H2>

<P>Generally, I've been very happy with my migration to Linux. I haven't solved all my problems yet, but I'm making good progress. In fact, I'm down to two minor issues, too small to really worry about for the moment. I'll mention them briefly, to give you some idea of what's left in my to-do list. 

<P>Sound. I'd like to get 5.1 surround sound to work on my Creative Labs Live sound card when playing a movie in Xine. 

<P>Printing. I have a 15 year old postscript printer that only prints in Linux using Laserjet emulation. Postscript works fine in Windows, but not in Linux, no matter what page descriptor file I use. I'm too cheap to buy a new printer, and besides, I'm still on the original toner cartridge. It should be good for at least another 15 years.

<P><H2>Finally...</H2>

<P>The Windows Defector series is intended to educate and encourage people who are contemplating the switch from Windows to Linux (including me), so if you have any corrections, suggestions or solutions, please share them with everyone by sending a copy of your email to <a href="http://linuxgazette.net/tag/ask-the-gang.html">The Linux Gazette Answer Gang</a>, rather than just to me. Flames and brickbats, however, you can continue to send just to me, as I don't want to clog-up the mailing list with all that extra volume. :-)





. 


</p>



<!-- *** BEGIN author bio *** -->
	<!-- *** BEGIN bio *** -->
<P>
<img ALIGN="LEFT" ALT="[BIO]" SRC="../gx/2002/note.png">
<em>
Tom has been a software developer since the early days of the Commodore 64,
with such commercial classics as Prototerm-64 and Colorez-128, and has seen
lots of operating systems come and go. Every one he's liked is either
discontinued (OS/2) or out of business (Commodore Amiga). He currently likes
Red Hat Linux, which won't be supported after April '04. As a result, we've
been trying to get him to fall in love with Windows, but so far no luck.
</em>
<br CLEAR="all">
<!-- *** END bio *** -->

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




<div id="articlefooter">



<p>
Copyright &copy; 2004, <A HREF="authors/brown.html">Tom Brown</A>. Copying license 
<a href="http://linuxgazette.net/copying.html">http://linuxgazette.net/copying.html</a>
</p>



<p>
Published in Issue 101 of Linux Gazette, April 2004
</p>

</div>




</div>

<br />


<div class="content twdtarticle">


<h1>Help Dex</h1>
<p id="by"><b>By <A HREF="authors/collinge.html">Shane Collinge</A></b></p>


</b>
</p>


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


<P>

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

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






<P>

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

</p>



<!-- *** BEGIN author bio *** -->
	<!-- *** 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 *** -->




<div id="articlefooter">



<p>
Copyright &copy; 2004, <A HREF="authors/collinge.html">Shane Collinge</A>. Copying license 
<a href="http://linuxgazette.net/copying.html">http://linuxgazette.net/copying.html</a>
</p>



<p>
Published in Issue 101 of Linux Gazette, April 2004
</p>

</div>




</div>

<br />


<div class="content twdtarticle">


<h1>Ecol</h1>
<p id="by"><b>By <A HREF="authors/malonda.html">Javier Malonda</A></b></p>


</b>
</p>


<p>
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.
<P>
<EM>These images are scaled down to minimize horizontal scrolling.
	To see a panel in all its clarity, click on it.</EM>


<P>

<A HREF="misc/ecol/ecol-152-e.png">
<IMG ALT="[cartoon]" SRC="misc/ecol/ecol-152-e.png" 
	WIDTH="640" HEIGHT="240"></A>
<BR CLEAR="all">

<A HREF="misc/ecol/ecol-150-e.png">
<IMG ALT="[cartoon]" SRC="misc/ecol/ecol-150-e.png" 
	WIDTH="640" HEIGHT="240"></A>
<BR CLEAR="all">

<A HREF="misc/ecol/ecol-150.png">
<IMG ALT="[cartoon]" SRC="misc/ecol/ecol-150.png" 
	WIDTH="640" HEIGHT="240"></A>
<BR CLEAR="all">

<A HREF="misc/ecol/ecol-151-e.png">
<IMG ALT="[cartoon]" SRC="misc/ecol/ecol-151-e.png" 
	WIDTH="640" HEIGHT="240"></A>
<BR CLEAR="all">

<A HREF="misc/ecol/ecol-153-e.png">
<IMG ALT="[cartoon]" SRC="misc/ecol/ecol-153-e.png" 
	WIDTH="640" HEIGHT="240"></A>
<BR CLEAR="all">

<A HREF="misc/ecol/ecol-153.png">
<IMG ALT="[cartoon]" SRC="misc/ecol/ecol-153.png" 
	WIDTH="640" HEIGHT="240"></A>
<BR CLEAR="all">






<P>

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>

</p>



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

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




<div id="articlefooter">



<p>
Copyright &copy; 2004, <A HREF="authors/malonda.html">Javier Malonda</A>. Copying license 
<a href="http://linuxgazette.net/copying.html">http://linuxgazette.net/copying.html</a>
</p>



<p>
Published in Issue 101 of Linux Gazette, April 2004
</p>

</div>




</div>

<br />


<div class="content twdtarticle">


<h1>Qubism</h1>
<p id="by"><b>By <A HREF="authors/harsem.html">Jon "Sir Flakey" Harsem</A></b></p>


</b>
</p>


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


<P>

<A HREF="misc/qubism/qb-antim101.jpg">
<IMG ALT="[cartoon]" SRC="misc/qubism/qb-antim101.jpg" 
	WIDTH="640" HEIGHT="240"></A>
<BR CLEAR="all">

<P>

All Qubism cartoons are
<A HREF="http://www.core.org.au/modules.php?name=Cartoons">here</A>
at the CORE web site.

</p>



<!-- *** BEGIN author bio *** -->
	<!-- *** BEGIN bio *** -->
<P>
<img ALIGN="LEFT" ALT="[BIO]" SRC="../gx/2002/note.png">
<em>
Jon is the creator of the Qubism cartoon strip and current
Editor-in-Chief of the 
<A HREF="http://www.core.org.au/">CORE</A> News Site.  
Somewhere along the early stages of
his life he picked up a pencil and started drawing on the wallpaper.  Now
his cartoons appear 5 days a week on-line, go figure. He confesses to
owning a Mac but swears it is for "personal use".
</em>
<br CLEAR="all">
<!-- *** END bio *** -->

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




<div id="articlefooter">



<p>
Copyright &copy; 2004, <A HREF="authors/harsem.html">Jon "Sir Flakey" Harsem</A>. Copying license 
<a href="http://linuxgazette.net/copying.html">http://linuxgazette.net/copying.html</a>
</p>



<p>
Published in Issue 101 of Linux Gazette, April 2004
</p>

</div>




</div>

<br />


<div class="content twdtarticle">


<h1>The Foolish Things We Do With Our Computers</h1>
<p id="by"><b>By <A HREF="authors/okopnik.html">Ben Okopnik</A></b></p>


</b>
</p>


<p>
<h3>Whack-A-Rack, or Impact-Based PC Repair</a></h3>
<p id="by"><b>from Thomas Adam</b></p>

<p>
[ ** This was posted to my LUG. I have obtained permission from Isaac, who
said we can publish this for next month's edition of LG. ** ]

<pre>
 --- ISAAC CLOSE <nospam@somedomain.com> wrote: 
 --- Thomas Adam <nospam1@somedomain.com> wrote:
&gt; --- Paul Tansom <nospam2@somedomain.com> wrote: 
&gt; 
&gt; &gt; Strangely enough I think that is all I remember of my assembly
&gt; &gt; programming on either 68000 or Z80 processors, although I still have
&gt; &gt; my faithful Z80 programming reference book somewhere.  Were computers
&gt; &gt; really more fun back then or am I just jaded now?!
&gt; 
&gt; Nope, it is all good fun. I have a unit at the moment, which is
&gt; assembly programming on the 68HC05 (a motorola chip), although most of
&gt; my assembly programming I learnt from my BBC Micro.

the ol' 6502 - 2MHz ?
cant remember nothing else tho ;)

funny...

A possibly well known trick to bring an hdd back to
life, is to smack it on the side with a soft hammer.
not too hard, but a whack indeed and presto. 
born again.

One time, I dropped a 14" Samsung monitor face down -
smack onto a concrete step and watched helplessly as it
rolled down a further twenty or so, in the pouring rain.
No problem, took it home, let it dry out a couple of
days, works fine - still gottit, but a bit 'chipped' on
the screen!

and...

My development server was found lid off in horrendous
rain, (old ibm p166), I payed five quid for it. 
(i166MMX/64MBRAM/2.5GBHDD/100MB/s-LAN)

Took it home, two days later switch on - fine ! 
even put a 40GB drive in it. Bios thort it was 8.5GB
(the old limit) but nope all 39GB useable. 

Then one day, I overclocked it, and it died! 
but came back to life strangley about a day or so 
later, I did nothing to it, just tried the power 
switch and it returned to life ? 

Then, another day, I set it up on the floor, dead.
put it on a table, fine. back on the floor, dead,
table, fine - wtf.

Then, sold it to a woman in Lewisham SE London,
she phoned me about a week later saying it bust.
So I went up their with spare bits. This damn computer
would not accept any hdd or cable! just ignored them
all. So, I took it back home. Plugged it in.
Guess what...

It is now sitting in my cupboard, last reboot 10 days
ago. Longest uptime (before I had to swap some plugs)
was over four months.

And the only computer I ever heard of that suffered from
the millenium bug was mine! (seen a few since) when I
booted my 30 day trial paint shop pro had expired by
about 32000 days, but worked fine for six months.

I could go on and on, but maybe another time.

Isaac
</pre>
<hr>

<h3>Rootless Wanderer Saved By SSH</a></h3>
<p id="by"><b>from Heather Stern</b></p>

<p>
Once upon a time I was logged into a system.  I wasn't too careful about
the terminal type setting - and I certainly wasn't careful enough -
let's just say the setting was a little iffy, going from this nice
FreeBSD box to my remote Solaris account.  I didn't let this faze me
since I know vi even in primitive keys mode without cursors, and I just
needed something edited rather quickly.

<p>
As root. Whoops.

<p>
The passwd file, to fix a path.  Carefully, carefully.  Not carefully
enough to avoid bumping into an extended key code just before the magic
of ZZ took effect and saved the file...

<p> ...with the username <strong>root</strong> changed to the case
sensitive and utterly different name <strong>Root</strong> from what shows
in shadow, and guess who can't log in now.  To put an even finer point on
it, Solaris of that particular vintage has a few system functions that want
to be the user <strong>root</strong> except - can you guess?  Bet you
can... by name, not by number.  No such user.  Bad things start happening
like that great Garfield cartoon where all the things are going kerplooey
and he races to the kitchen to see that all the warranties have expired.

<p>
Luckily having been logged in only moments ago I know what the problem
is.  Unluckily I know it will require root ... err... user 0 type
access.  Can I do it?  ssh ... long pause ... authenticates me, and I am
in. Hooray.  THe normal authentication mechanism was one of the dying
breed but ssh ignored it as I passed muster with my key.  With sudo I
raced to repair the damaged character and the day was saved.

<p>
I'll always be a fan of ssh and sudo.  No doubt at all.
<hr>

<h3>A Nice Clean Computer</a></h3>
<p id="by"><b>from Tom Brown</b></p>

<p> A while back, I had the case off an old 486 "pizza-box" computer:
removing something or adding something, I don't remember what. Anyway,
while my back was turned, my son (who was 5 years old at the time) had come
into the room. He was looking into the guts of the computer when his hand
slipped on the glass of water he was holding, and the entire contents
spilled into the machine. Only the fact that the computer was off, and the
power cord pulled, saved us both from what would have been a dramatic light
show.

<p>Recognizing the better part of valor, my son vanished from the room,
taking his now-empty glass with him.

<p>The first thing I did was carry the computer to the nearest sink, and
pour the water out of it. There was quite a lot, as the glass had been
nearly full. From there, I disassembled every last part of the machine, and
spent the rest of the afternoon applying my wife's hair drier on the soaked
motherboard, memory, and assorted IDE cards.  Lucky it was water, and not
something like juice or soda! Surprisingly enough, when everything was dry,
and reassembled, the computer worked, although, periodically, the machine
would refuse to boot, and I had to push and pull on the components a bit,
flexing the motherboard until it booted. Guess I missed a spot.

<p>As for my son, he never again went near a computer with a drink in his
hand.

<hr>

<i>[ If you have a story about something foolish or ingenious you did to
your computer, send it to <a
href="articles@linuxgazette.net">articles@linuxgazette.net</a>. -Ben ]</i>

</p>



<!-- *** BEGIN author bio *** -->
	<P> Ben is the Technical Editor for Linux Gazette and a member of
The Answer Gang; this month, he's also standing in for the Editor-in-Chief,
Mike Orr, who is away on vacation.

<!-- *** 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>His 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. After a seven-year Atlantic/Caribbean
cruise under sail and passages up and down the East coast of the US, he is
currently anchored in St. Augustine, Florida. He works as a technical
instructor for Sun Microsystems and a private consultant. His current set
of hobbies includes flying, yoga, 18th century reenactment, blacksmithing,
sea-shanty singing, and writing; his Palm Pilot is crammed full of alarms,
most of which contain exclamation points.

<p>He 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 *** -->




<div id="articlefooter">



<p>
Copyright &copy; 2004, <A HREF="authors/okopnik.html">Ben Okopnik</A>. Copying license 
<a href="http://linuxgazette.net/copying.html">http://linuxgazette.net/copying.html</a>
</p>



<p>
Published in Issue 101 of Linux Gazette, April 2004
</p>

</div>




</div>

<br />


<div class="content twdtarticle">


<h1>Home Folder Server For Windows Clients</h1>
<p id="by"><b>By <A HREF="authors/levkovich.html">Avinoam Levkovich</A></b></p>


</b>
</p>


<p>
<p>
One of the strategies to protect the data on user's personal computer is
using a Home-Folders Server. This server contains folders for each user
where the user can save his precious data, the server is backed up every
night. At login, the Home-Folders Share (which contains your home folder)
is mounted on the local machine, and the user can access it like any other
local drive.

<p>
Home-Folders Server has a big overhead for the IT staff. Managing the
ownership, shares, quota, permissions, and the never ending changes isn't
one of the most pleasant tasks for any Sys-Admin.

<p>
The story begins when my organization old Home-Folders Server started
showing signs of retirement wishes, we decided that it is time to build a new
Home-Folders server. We started looking for a solution that will take the
management overhead from the IT stuff, since our budget was low we wanted
cheap but reliable system. Naturally, we started thinking about building a
Linux server. We wanted this system to perform the following tasks:

<b>
<ol>
<li>This system will be integrated into the organization's existing Win-2K
active directory infrastructure.

<li>
The system should function automatically. When we add a new user to the
domain, the system will automatically create his home folder, grant the
appropriate permissions and configure the user's quota.

<li>
We will map the home-folder by using login scripts (<a href="http://www.kixtart.org/">KIX</a>).

<li> The System will monitor the Server RAID-System, when the RAID is out of
sync (damaged disk, Bad Controller, etc.) the script send a warning e-mail
to the IT staff.
</ol>
</b>

<p>
Since our budget was low, we decided to save money and still get good
performance by using a new desktop PC (P4 1.6GHZ, 1GB RAM). To make the
system reliable we decided to use four HDs (IDE, 120GB each) configured as
RAID-5, for the Home-Folders partition. All other system partitions will use
two HD (IDE, 12GB each) with RAID-1 (mirror). To get the extra IDE
controllers I used PROMISE 133TX2, IDE Card (PCI), which works great with
RedHat.

<h2>The Home-Folder System Installation and Configuration</h2>

<p>
After installing Linux (we used Redhat) and configuring the RAID system,
take the following steps to finish the configuration of the Home-Folders
Server:

<ol>
<li>Install and configure the Samba server, share the Home-Folders partition
with read/write permission (we will limit the access to the users' folders
by using the system permissions.)

<li> Configure Winbind. Winbind is part of the Samba package which makes
the integration to the windows domain easy.

<br> By using Winbind, Windows Users can access the Linux server using their
logon credentials. Winbind verifies the user with the domain controller like
any other Windows server. You can find more info on Winbind installation in
this article : <a
href="http://us2.samba.org/samba/docs/man/winbindd.8.html">http://us2.samba.org/samba/docs/man/winbindd.8.html</a>
<br>
After installing Winbind, check its functionality by running the command:

<pre>
# getent passwd
</pre>

The output should be the list of users in the domain. If you do not receive
this output, check your Winbind configuration.

<li>  Configure quota support for the Home-Folders partition. You can find
more info about quota configuration here:
<a href="http://www.tldp.org/HOWTO/Quota.html">http://www.tldp.org/HOWTO/Quota.html</a>

<br>
Next, plan and decide how much space you wish to grant to each user, create a
template user and assign a quota equal to the amount of space you decided.
Later on we will use this user as a quota template.

<p>
<b>Note:</b> this step is optional and only required if you want to use the quota
system.
</ol>

<h2>Home-Folders Creator Script</h2>

The following script is the heart of the system, the script retrieves the
domain users list from the domain controller server into a file and removes
all the unneeded data from the list. At this stage the system verifies that
each user in this list owns a home-folder. If the user already has a
home-folder the system write the char "." to the stdout and moves on, if
the user is a new user and he still doesn't have a home-folder, the system
will create a folder (the folder name will be the same as the username),
grant ownership to the user, and apply the quota for this folder by copying
the quota from the template quota user to this new user.

<p>
The system will log the new users home-folder creation to the system log file
(/var/log/messages).

<p>
The Home-Folders creator script can be found <a
href="misc/levkovich/home-folders.bash.txt"><b>here</b></a>.

You need to change the following parameters to reflect your server configuration:

<p>
<b>HOME_FOLDERS_PATH</b> - Assign the path to the Home-Folders
Directory/Partition, it is essential to put the character "/" at the end of
the path (e.g. /home/).

<p>
<b>SEPERATOR</b> - Assign the Winbind separator as it configured in the smb.conf
file.

<p>
<b>TEMP_USER</b> - (OPTIONAL) if you want to use quota, you should uncomment this
variable and Assign the username you created to act as a quota template. if
so please remember to uncomment the line "edquota -p $TEMP_USER $DOMAIN$SEPERATOR$Folder_Name"

<h2>The RAID system watchdog script</h2>

<p>
The following script creates an endless loop that check the RAID system
every 5 minutes, if the RAID is out of sync (damaged disk, Bad Controller
etc..) the script will send an e-mail to a predefine mail address ( change
the MAIL variable to reflect your mail address).

<p>
you can use this script as an independent RAID WatchDog for your other
RAID-Systems.

<p>
In order to start this script automatically after reboot, you can add the
path to the script to your rc.local file.

The script can be found <a
href="misc/levkovich/watchdog.bash.txt"><b>here</b></a>.

<p>

<h2>Make the system function automatically</h2>

<p>
To automate the system you should execute the Home-Folders creator script
as root at predefined intervals. By adding the following line to the root's cron
jobs (using "crontab -e"), the Home-Folders script will execute every hour.
(Change the script path to match your configuration.)

<pre>
*/59 * * * * /etc/Home-Folders-creator.sh
</pre>

<h2>Mapping the Home-Folder to the users during the logon process</h2>

<p>
By using a simple logon scripts system (I use <a
href="http://www.kixtart.org/">KIX</a>) you can map the Home-Folder Samba
share during the user login process.



</p>



<!-- *** BEGIN author bio *** -->
	<!-- *** BEGIN bio *** -->
<P>
<img ALIGN="LEFT" ALT="[BIO]" SRC="../gx/2002/note.png">
<em>
Avinoam Levkovich is an RHCE in Israel, currently working
as the Linux Sys-Admin at the Rambam Medical Center.
      
</em>
<br CLEAR="all">
<!-- *** END bio *** -->


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




<div id="articlefooter">



<p>
Copyright &copy; 2004, <A HREF="authors/levkovich.html">Avinoam Levkovich</A>. Copying license 
<a href="http://linuxgazette.net/copying.html">http://linuxgazette.net/copying.html</a>
</p>



<p>
Published in Issue 101 of Linux Gazette, April 2004
</p>

</div>




</div>

<br />


<div class="content twdtarticle">


<h1>Simple Joystick control of a servo motor with RTAI/Linux</h1>
<p id="by"><b>By <A HREF="authors/pramode.html">Pramode C.E</A></b></p>


</b>
</p>


<p>
<p>
The analog joystick which plugs onto the PC game port
is a cool little device - you don't need to be a hardware
wizard to learn how it works, and you can make it do
fun and absolutely useless stuff like turn a stepper or
servo motor. This article describes an experiment which
I did with a joystick and a Futaba S2003 servo motor, both
controlled by the  real time operating environment for
Linux called <a href="http://www.aero.polimi.it/~rtai">RTAI</a>. Readers who
are not familiar with RTAI might like to refer to the 
<a href="../issue95/pramode.html">introductory article</a> I had
written earlier before continuing.

<h2>The Joystick</h2>
<p>
If you are game-crazy, you are sure to have used
one. As far as electronics is concerned, it is a very 
primitive device - so is the game port which it
plugs into. You will find adequate hardware 
descriptions <a href="http://documents.epanorama.net/documents/joystick/pc_joystick.html">here</a>. The <a href="http://www.tldp.org/HOWTO/IO-Port-Programming.html">
Linux IO-Port Programming Mini-HOWTO</a> also provides 
sufficient information to get started with hacking the joystick.

<h2>Reading the buttons</h2>
<p>
Your first joystick programming assignment should
be reading the state of the buttons. For this, you
have to know the ISA port address which the gameport
uses. Loading the standard Linux joystick driver
(you will have to modprobe three modules - joydev,
ns558 and analog) and doing `cat /dev/ioports' on
my ASUS A7N266VM motherboard showed this to be 0x200.
<p>
The state of two of my joystick buttons is encoded
in bits D4 and D5 of the 8 bit value returned by
an `inb' on 0x200 (D0 is least significant bit and D7
is most significant bit). If the value is 1, the 
button is in the `released' state and if it is 0, the
button is in the `pressed' state. Here is a small
program which tests this out:
<p>
<a href="misc/pramode/button.txt">Listing 1</a>
<pre>

#include &lt;asm/io.h&gt;
#define JS_PORT 0x200

main()
{
    iopl(3);
    while(1)
        printf("%x\n", (inb(JS_PORT) &gt;&gt; 4)&amp;1);
		
}

</pre>

<h2>Reading the X and Y positions</h2>
<p>

Moving the joystick results in a potentiometer 
turning - the potentiometer is connected to the game port,
which contains a 555 timer based circuit. A simple
`outb' to 0x200 (the value written doesn't matter)
will result in the circuit getting `reset' - now
a read (ie, an `inb') from 0x200 will yield a bit
pattern whose D0 and D1 bits are 1's. Keep on reading
- after a short time these bits become zero. Measure
the time it takes for the bits to become zero. Take
the measurements with the joystick at the extreme left,
middle and extreme right endpoints of the X axis as
well as the top, middle and bottom points of the Y axis
as part of a `calibration' process. Now, whatever be
the position of the joystick along the X-Y axes,
measuring the time it takes
for the D0 (X axis) and D1 (Y axis) bits to become zero's after a
`reset' (note, we `reset' by writing something to 0x200)
should help us find it out (assuming that time varies linearly
with distance between the middle and left/top as well as middle and
right/bottom endpoints - which I really haven't verified).

<p>
Here is a program which measures the time it takes for the X-axis
bit to become zero after a reset. It uses the `time stamp counter'
which is a 64 bit counter available on all machines with, I believe,
a Pentium and above CPU. If you have a 1GHz CPU, the timer gets
incremented at a rate of 1,000,000,000 per second. My Athlon XP CPU
runs at a clock speed of 1462.904 MHz (read from /proc/cpuinfo) - 
with this information, it is easy to compute the time elapsed 
between any two points in your program. The time stamp counter
(TSC) can be read using a macro called `rdtsc' defined in the 
file /usr/src/linux/include/asm/msr.h.

<p>
<a href="misc/pramode/xmeasure.txt">Listing 2</a>
<pre>

#include &lt;asm/io.h&gt;
#include &lt;asm/msr.h&gt;

#define JS_PORT 0x200
#define CPU_HZ 1462904000

void  trigger(void)
{
    outb(0x0, JS_PORT);
}

main()
{
    unsigned int low1, high1, low2, high2;
    iopl(3);
    trigger();
    rdtsc(low1, high1);
    while(inb(JS_PORT) &amp; 1);
    rdtsc(low2, high2);
    printf("low1=%u, high1=%u, low2=%u, high2=%u\n", low1, high1, low2, high2);
    printf("low2 - low1 = %u\n", low2 - low1);
    printf("in ms = %f\n", (((double)(low2-low1))/CPU_HZ)*1000);
}

</pre>
<p>
The program should be compiled like this:
<pre>

cc -I/usr/src/linux/include -O2 xmeasure.c

</pre>
I got readings of 0.0262ms, 0.68ms and 1.60ms for the
left, middle and right positions.
<p>
One  trouble with this crude form of analog-to-digital
conversion is that you have to sit in a loop waiting for the
bits to drop to zero - this burns up CPU cycles. A better
design would have been for the joystick hardware itself to perform
the A-D conversion and send the resulting numbers to the PC - thus
avoiding lots of software overhead.

<h2>Using a periodic RTAI task to sense joystick position</h2>
<p>
My experiment is this: I have a servo motor connected to the parallel
port. The servo is not capable of rotating the full 360 degrees - it
describes an arc of about 180 degrees. When  I turn the joystick left, the
servo also moves to the left end of the arc. When the joystick is in the
`middle' position, the servo positions itself near the centre of the 180
degree arc and when the joystick moves towards the right end, the servo
also moves towards the right end of the arc. Note that I try to sense only
three joystick positions - left, middle and right.
<p>
<img src="misc/pramode/servosmall.jpg">
<p>
The picture above shows two servo motors - the one at the bottom serving to
rotate the platform resting on it - it is this servo which I will be moving
with the joystick.
<p>
The idea is simple. A periodic task (period .33 milliseconds) monitors
the joystick. At the first activation of this task (lets say at time 0), we
`trigger' the game port (by writing to it) and assume that joystick position
is `LEFT'. The next activation of the task would be at 0.33 milliseconds. If
reading from the game port tells us that the X axis bit (D0) is still set, we
assume that the joystick is in the `MIDDLE' position. The next activation of
the task would be at 0.66 milliseconds - but we are not interested in checking
the X axis bit at this point - we will take it that the joystick is in the
`MIDDLE' position if the bit stays high for a period between 0.33 and 0.99
milliseconds (note that the `bit-high' times obtained experimentally were
0.026, 0.68 and 1.60 milliseconds respectively for extreme left, middle and
extreme right positions). The next activation would be at 0.99 milliseconds -
if bit D0 still stays high, we assume that the joystick is in the `RIGHT'
position. Only at this point are we sure of the actual position of the
joystick - we shall set a global variable, `joystick_position' to LEFT, 
RIGHT or MIDDLE.
<p>
Now we come to the 
<a href="http://www.seattlerobotics.org/guide/servos.html">servo motor control</a> part - which is 
fairly simple.
A hobby servo motor requires a `control pulse' on its white wire. The
total on-off time of the pulse should be around 20 milliseconds - it
is the 'on' time which actually controls the servo's position. My servo
moves to one end of a 180 degree arc for an 'on' time of about 0.5 millisecond
and moves to the other end for an 'on' time of about 2.2 seconds. A separate
RTAI task controls the generation of this signal. A global array called
`on_time' maintains the three 'on'-time values which would move the servo
to the left, middle and right points of its arc. The servo task makes
pin 3 of the parallel port (to which the servo's control wire is connected)
high for a period of on_time[LEFT] if the current joystick position is
`LEFT' - similarly for MIDDLE and RIGHT also. The 'off' time of the control
pulse is stored in a variable `off_time' and is computed in such a way that
the total 'on' plus 'off' time is around 20 milliseconds. 

<p>
<a href="misc/pramode/control.txt">[Listing 3]</a>
<pre>

static void 
pwm_servo(int t)
{
    /* Servo is controlled by
     * signal on pin 3 of LPT1
    */
    while(1) {
        outb(2, LPT1_BASE); /* Pin 3 high */
        rt_sleep(on_time[joystick_position]);
        outb(~2, LPT1_BASE);
        rt_sleep(off_time);
    }
}
</pre>

<h2>Conclusion</h2>
<p>
It has been fun playing with the joystick. I would like to know
if there is a good method to monitor the joystick position continuously
without loading RTAI too much (by increasing the timer frequency
or resorting to busy loops) - let me know if you come across anything
interesting. I can be contacted via my home page at <a href="http://pramode.net">
pramode.net</a>.


</p>



<!-- *** BEGIN author bio *** -->
	<!-- *** 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 *** -->




<div id="articlefooter">



<p>
Copyright &copy; 2004, <A HREF="authors/pramode.html">Pramode C.E</A>. Copying license 
<a href="http://linuxgazette.net/copying.html">http://linuxgazette.net/copying.html</a>
</p>



<p>
Published in Issue 101 of Linux Gazette, April 2004
</p>

</div>




</div>

<br />


<div class="content twdtarticle">


<h1>Designing Simple front ends with dialog/Xdialog </h1></h1>
<p id="by"><b>By <A HREF="authors/sunil.html">Sunil Thomas Thonikuzhiyil</A></b></p>


</b>
</p>


<p>
<h2>1) Introduction</h2>

    <p> This article introduces dialog and  Xdialog for building simple front ends to shell scripts. It assumes that you are familiar with shell programming.

<br> The latest version of this document can be found at
<a href="http://gnubox.dyndns.org:8080/~sunil/dialog.php">http://gnubox.dyndns.org:8080/~sunil/dialog.php</a>.

<p>dialog  is a utility  for building console-based front ends. Xdialog is a  similar program  for X.  Both programs are more or less compatible and easy to program. Dialog is shipped with most GNU/Linux distributions. If you want to build from sources, a tarball can be obtained from <a href="http://hightek.org/dialog/">here</a>. Xdialog   is  available from <a href="http://xdialog.dyns.net/">here</a>.

<p> Both of these programs are free software and run on a variety of *nix platforms. Most of the examples given in this tutorial are adapted from  examples given along with dialog sources. 

<h2>2) Basics</h2>

Here is the first dialog script I tried. It displays a simple YES/NO box.

<pre>
#!/bin/bash
DIALOG=${DIALOG=dialog}

$DIALOG --title " My first dialog" --clear \
        --yesno "Hello , this is my first dialog program" 10 30

case $? in
  0)
    echo "Yes chosen.";;
  1)
    echo "No chosen.";;
  255)
    echo "ESC pressed.";;
esac
</pre>
  
<p>  Copy the above lines to a file say yesno.sh and give  executable permission to it.

<pre>
$chmod u+x yesno.sh
</pre>

<p> Now try running the program. 

<pre>
$./yesno.sh
</pre>

<p> A screen-shot of the above program is given below.
<br>
<IMG ALT="yesno box" SRC="misc/sunil/yesno.png" >

<br>Now try changing the line.

<pre>
 DIALOG=${DIALOG=dialog}
</pre>

to

<pre>
DIALOG=${DIALOG=Xdialog}
</pre>
 
<p>Try running it from an xterm. I got the following output.
<br>

<IMG ALT="xyesno box" SRC="misc/sunil/xyesno.png" >
 
 <p>Let us have a detailed look at the above program. The first line is basically a comment which also indicates that bash shell is used to run this program.
 
 <pre>DIALOG=${DIALOG=dialog}</pre>
 <p>The above line sets the variable DIALOG to the value 'dialog'. The actual dialog box is drawn by the following line.
<pre>
  $DIALOG --title "My first dialog" --clear \
        --yesno "Hello, this is my first dialog program" 10 30
</pre>
<p> Options used are
<br>  --title     This option sets title of your box
<br>  --clear     This option clears the screen before drawing
<br>  --yesnobox  This  draws the box with the text given inside the box. 

<p>The text to be printed inside yesnobox is given in double quotes. The text  wraps  depending on width of the box. You can use \n to force a new line.  Last 2 numbers specify width and height of the box. You can move between "yes" and  "no" using tabs. 

<p>The dialog program now waits for user input. When you press enter on "yes" or "no" or if you press escape key the program returns and the return value is available on shell variable $? which you can process further.

<h2>2) Reading input</h2>


<p>The following program  reads a string  you input and prints it back.

<pre>
#!/bin/sh
DIALOG=${DIALOG=dialog}
tempfile=`tempfile 2&gt;/dev/null` || tempfile=/tmp/test$$
trap "rm -f $tempfile" 0 1 2 5 15

$DIALOG --title "My input box" --clear \
        --inputbox "Hi, this is a sample input box\n
Try entering your name below:" 16 51 2&gt; $tempfile

retval=$?

case $retval in
  0)
    echo "Input string is `cat $tempfile`";;
  1)
    echo "Cancel pressed.";;
  255)
    if test -s $tempfile ; then
      cat $tempfile
    else
      echo "ESC pressed."
    fi
    ;;
esac

</pre>

 <p>Try running the program  under console and under X ( after changing dialog to Xdialog as above). See the results.
<br>
<IMG ALT="input box" SRC="misc/sunil/inputbox.png" >

<p>This program is slightly more complex  than  our previous  yesno box program. The following lines set up a temporary file:

<pre>
tempfile=`tempfile 2&gt;/dev/null` || tempfile=/tmp/test$$
trap "rm -f $tempfile" 0 1 2 5 15
</pre>

<p>The first line above tries to create a temporary file using the utility tempfile. If it fails, a temporary file  is manually set up in /tmp. The second line above  sets up a trap routine.  When the script exits  (either normally or abnormally) the trap  removes the tempfile. The numbers shown are the signals that will be trapped.

<p>dialog is then invoked as below:

<pre>
$DIALOG --title "My input box" --clear \
        --inputbox "Hi, this is a sample input box\n
         Try entering your name below:" 16 51 2&gt; $tempfile
</pre>

<p>The dialog program writes  its output to the standard error by default. Hence the input string you enter is echoed to standard error which we are redirecting to our tempfile.  You can capture the entered text from  tempfile for further processing.

<h2>3) Building a menu</h2>

<p>  Try the following  program both in console and X (after changing dialog to Xdialog as before):

<pre>
#!/bin/sh
DIALOG=${DIALOG=dialog}
tempfile=`tempfile 2&gt;/dev/null` || tempfile=/tmp/test$$
trap "rm -f $tempfile" 0 1 2 5 15

$DIALOG --clear --title "My  favorite HINDI singer" \
        --menu "Hi, Choose  your favorite HINDI singer:" 20 51 4 \
        "Rafi"  "Mohammed Rafi" \
        "Mukesh" "Mukesh" \
        "Kishore" "Kishore Kumar" \
        "Saigal" "K L Saigal" \
        "Lata"  "Lata Mangeshkar" \
        "Yesudas"  "K J Yesudas" 2&gt; $tempfile

retval=$?

choice=`cat $tempfile`

case $retval in
  0)
    echo "'$choice' is your favorite hindi singer";;
  1)
    echo "Cancel pressed.";;
  255)
    echo "ESC pressed.";;
esac

</pre>

 <p>The results are as below
<br><IMG ALT="Menu box" SRC="misc/sunil/menubox.png">
 <br>

<IMG ALT="menu box" SRC="misc/sunil/xmenubox.png">

 
 <p> The logic is exactly similar to inputbox. We redirect the choice you have selected to a tempfile and then process return value of dialog and contents of the tempfile.

<h2>4)  Radiolist and Checklist</h2>

 <p> Radiolists and checklists  can be programmed just like menus. A simple radio list example is given below. 

<pre>
#! /bin/sh
DIALOG=${DIALOG=dialog}
tempfile=`tempfile 2&gt;/dev/null` || tempfile=/tmp/test$$
trap "rm -f $tempfile" 0 1 2 5 15

$DIALOG --backtitle "Select your favorite singer" \
	--title "My favorite singer" --clear \
        --radiolist "Hi, you can select your favorite singer here  " 20 61 5 \
        "Rafi"  "Mohammed Rafi" off \
        "Lata"    "Lata Mangeshkar" ON \
        "Hemant" "Hemant Kumar" off \
        "Dey"    "MannaDey" off \
        "Kishore"    "Kishore Kumar" off \
        "Yesudas"   "K. J. Yesudas" off  2&gt; $tempfile

retval=$?

choice=`cat $tempfile`
case $retval in
  0)
    echo "'$choice' is your favorite singer";;
  1)
    echo "Cancel pressed.";;
  255)
    echo "ESC pressed.";;
esac
</pre>

<p> A screen shot is shown below.</p>
<IMG  ALT="radiolist" SRC="misc/sunil/radiolist.png">
<p> For trying out checklist  just change --radiolist option in the above program to --checklist.

<h2>5) Building a Gauge</h2>

 <p>  A gauge based on dialog can be used to indicate progress of your program. Building a gauge is slightly tricky. Look at the following example:

<pre>
#!/bin/sh
DIALOG=${DIALOG=dialog}

COUNT=10
(
while test $COUNT != 110
do
echo $COUNT
echo "XXX"
echo "The new\n\message ($COUNT percent)"
echo "XXX"
COUNT=`expr $COUNT + 10`
sleep 1
done
) |
$DIALOG --title "My Gauge" --gauge "Hi, this is a gauge widget" 20 70 0

</pre>

<p>  Here the dialog program  gets its input from the code shown within the parentheses. This code emits the number to be used for gauge and the message to be shown. The  message to be shown in the gauge box must be surrounded by echo "XXX". The screen-shot of a gauge is shown below.
<br>
<IMG  ALT="gauge" SRC="misc/sunil/gauge.png">

<h2>6) File selections </h2>
 
<p> Code for a  typical file selection dialog box is shown below.

<pre>
#!/bin/sh
DIALOG=${DIALOG=dialog}

FILE=`$DIALOG --stdout --title "Please choose a file" --fselect $HOME/ 14 48`

case $? in
	0)
		echo "\"$FILE\" chosen";;
	1)
		echo "Cancel pressed.";;
	255)
		echo "Box closed.";;
esac
</pre>
<br><IMG  ALT="file selection" SRC="misc/sunil/fselect.png">
 

    <p>   Please note that the above program uses a different technique to capture the selected file. As mentioned previously all outputs from dialog is sent to standard error by default. However  --stdout option can be used to send the output  information to standard output which  in turn can be  assigned to a  variable. This trick  can be used in the case of other  dialog boxes such as menubox yesnobox etc.

    <p> The file selection dialog presents 2 panes. You can use Tab key to switch between panes and  space key to select a file. It is also possible to type into the input box of files select dialog.

<h2>7) Calendar and time boxes </h2>
<h3>a) Calendar</h3>
    <p> A  calendar  box  displays  month,  day and year in separately adjustable windows.  If the values for day, month or year  are missing  or  negative, the current date's corresponding values are used.  You can increment or decrement any of  those  using the  left-, up-, right- and down-arrows.  Use vi-style h, j, k and l for moving around the array of days in a month.  Use tab or  back tab  to move between windows.  If the year is given as zero, the current date is used as an initial value.  On  exit, the date is printed in the form day/month/year.
<pre>
#!/bin/sh
DIALOG=${DIALOG=dialog}

USERDATE=`$DIALOG --stdout --title "CALENDAR" --calendar "Please choose a date..." 0 0 7 7 1981`

case $? in
  0)
    echo "Date entered: $USERDATE.";;
  1)
    echo "Cancel pressed.";;
  255)
    echo "Box closed.";;
esac
</pre>
<br><IMG  ALT="calendar" SRC="misc/sunil/calendar.png">

<h3>b) Time</h3>
<p> The time dialog box allows you to select time. Try out the following program and see how it works.

<pre>
#!/bin/sh

DIALOG=${DIALOG=dialog}
USERTIME=`$DIALOG --stdout --title "TIMEBOX" --timebox "Please set the time..." 0 0 12 34 56`

case $? in
  0)
    echo "Time entered: $USERTIME.";;
  1)
    echo "Cancel pressed.";;
  255)
    echo "Box closed.";;
esac

</pre>
<br><IMG  ALT="time" SRC="misc/sunil/time.png">

<h2>8) Other Features</h2>
    <p> Xdialog has some additional features such as tree-view, range-box, edit-box, etc. Please look <a href="http://thgodef.nerim.net/xdialog/doc/box.html">here</a>. Dialog man page has interesting information of some other options such as password box, tailbox etc. Also there are options for changing colors, shadow etc.
 <h2>9) Tips</h2>
<p> You can choose between dialog and Xdialog at run time using the following code  snippet:
  <pre>
   if [ -z $DISPLAY ]
   then
   DIALOG=dialog
   else
    DIALOG=Xdialog
   fi
  </pre>
<p> Try this program on console as well as under X and see the difference.
<pre> #!/bin/sh
 if [ -z $DISPLAY ]
 then
 DIALOG=dialog
  else
   DIALOG=Xdialog
  fi
 $DIALOG --yesno "Is this fun" 0 0  
 </pre> 
     
<h2>10) References</h2>

<p> 1) <a href="http://hightek.org/dialog/manual-0.9a-20010429.html">Manual page for dialog</a>

<p>   It is a must read if you are planning to write some useful dialog scripts. There are several other options which allow you to modify the look and feel. 

<p> 2) Dialog examples at <a href="http://www.fifi.org/doc/dialog/examples/">http://www.fifi.org/doc/dialog/examples/</a>.
<p> All the examples in this tutorial are modified versions of examples found here. If you have Debian GNU/Linux the examples are available at /usr/share/doc/dialog/examples.

<p> 3)  Thomas Dickey's dialog page: <a href="http://dickey.his.com/dialog">http://dickey.his.com/dialog/</a>

<p> 4)  Vincent Stemen's dialog page <a href="http://hightek.org/dialog/">http://hightek.org/dialog/</a>. 
<p>This page has comprehensive information on various dialog versions. 
     
<p> 5) Xdialog documentation at <a href="http://thgodef.nerim.net/xdialog/doc/index.html">http://thgodef.nerim.net/xdialog/doc/index.html</a>. 
<br>This page has exhaustive information on Xdialog.
 

</p>



<!-- *** BEGIN author bio *** -->
	<!-- *** BEGIN bio *** -->
<P>
<img ALIGN="LEFT" ALT="[BIO]" SRC="../gx/2002/note.png">
<em>
I work as  consultant information technology at the Kerala  Legislative
Assembly Trivandrum India. I have been hooked on Linux since 1996. I have a
Masters in Computer Science from Cochin University. I am interested in all
sorts of operating systems. In my free time I love to listen to Indian
classical music.
</em>
<br CLEAR="all">
<!-- *** END bio *** -->

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




<div id="articlefooter">



<p>
Copyright &copy; 2004, <A HREF="authors/sunil.html">Sunil Thomas Thonikuzhiyil</A>. Copying license 
<a href="http://linuxgazette.net/copying.html">http://linuxgazette.net/copying.html</a>
</p>



<p>
Published in Issue 101 of Linux Gazette, April 2004
</p>

</div>




</div>

<br />


<div class="content twdtarticle">


<h1>The Back Page</h1>
<p id="by"><b>By <A HREF="authors/okopnik.html">Ben Okopnik</A></b></p>


</b>
</p>


<p>
<p>
This month, our Editor-in-Chief, Mike Orr, is away at some conference where
he is wrestling pythons. Or some Python conference followed by wrestling...
he sounded a bit strangled on the phone, so it was a little difficult to
tell - but whatever it is, it involves his hobbies. While he's gone, I've
volunteered to do the Editor-in-Chief's duties, including publishing - and
as you can imagine, I had hoped that this month would pass quietly and
everything would roll out on schedule.

<p>Say, does anyone else hear that hollow laugh?...

<p>Our Answer Gal, Heather Stern, who is responsible for a large chunk of
the LG production process, had a series of hardware problems that grew like
Topsy to encompass not only her entire system but eventually involved her
ISP and the name registrar (!). I mean, really, <em>sans peur et sans
reproche</em> is one thing, but <em>sans</em> email at production
time???... believe it or not, she <strong>still</strong> managed to get her
work done as well as contribute some material for our regular columns,
although, of course, it was all unavoidably delayed. So life goes, gentle
readers. You have my apologies for LG being a bit late this month - we
usually try to publish within a few days of the 1st.

<p><br>
<hr align="center" width="25%">

<p><br>
While I have the chance to ramble - this month, I celebrated my
birthday, one I share with Sergei Rachmaninoff, Abraham Maslow, Otto von
Bismark, William Harvey, and, uh, "Method Man". April 1st, the day that the
internal combustion engine was patented and that color television was first
sold (and also the day the yo-yo was introduced to the American public), is
"celebrated" world-wide as "April Fools Day", the day when people pull
pranks and give gag gifts to each other - something I've been fortunate
enough, or perhaps <strong>large</strong> enough to avoid. As my Web page
says, "creative answers will be graded appropriately, with bastinado being
reserved for the wittiest and applause for the most charming. Note that a
combination of the two is hereby explicitly <em>not</em> excluded."

<p>To make a long story short (for the hecklers in the back of the room
yelling "too late!", you just quiet down), I ended up going to dinner with
a client of mine who insisted that I should do something special for
myself, at a very nice local restaurant called "Fusion Point". (Chris is
also a good friend as well as being my yoga teacher.) While munching on
the gourmet fare, we got into a deep philosophical discussion (as we often
do), and I happened to mention Linux, which he had never heard of. Once I
described some of the dynamics of the community and the way it came about,
Chris looked at me and said: "You see, this is the exactly the kind of
progress in the direction of enlightenment that we've been talking about.
Despite the wars, the hatred, all the evils of the human condition, there
<strong>is</strong> an underlying and irresistible movement in that
direction - and it's cumulative." (This is a paraphrase because I don't
recall his exact words, but it's close.)

<p>This is, indeed, the way that I see Linux. It goes beyond just the OS,
beyond the free tools; it is a way for many people whose abilities would
remain hidden and unused without that necessary leverage to become
empowered, a way for those whose lack of money has stifled their ability to
express their creativity to bring it out to the world. It's not a cure-all
for all the existing ills by any means - but it is certainly a step in the
right direction.

<p>My best wishes and congratulations to all of you who are making your way
toward the light. I take great joy and pride in being able to contribute to
that progress, in whatever way I can.

<hr>

</p>



<!-- *** BEGIN author bio *** -->
	<P> Ben is the Technical Editor for Linux Gazette and a member of
The Answer Gang; this month, he's also standing in for the Editor-in-Chief,
Mike Orr, who is away on vacation.

<!-- *** 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>His 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. After a seven-year Atlantic/Caribbean
cruise under sail and passages up and down the East coast of the US, he is
currently anchored in St. Augustine, Florida. He works as a technical
instructor for Sun Microsystems and a private consultant. His current set
of hobbies includes flying, yoga, 18th century reenactment, blacksmithing,
sea-shanty singing, and writing; his Palm Pilot is crammed full of alarms,
most of which contain exclamation points.

<p>He 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 *** -->




<div id="articlefooter">



<p>
Copyright &copy; 2004, <A HREF="authors/okopnik.html">Ben Okopnik</A>. Copying license 
<a href="http://linuxgazette.net/copying.html">http://linuxgazette.net/copying.html</a>
</p>



<p>
Published in Issue 101 of Linux Gazette, April 2004
</p>

</div>




</div>

<br />





</body>
</html>