1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 1801 1802 1803 1804 1805 1806 1807 1808 1809 1810 1811 1812 1813 1814 1815 1816 1817 1818 1819 1820 1821 1822 1823 1824 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 1848 1849 1850 1851 1852 1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 1874 1875 1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1894 1895 1896 1897 1898 1899 1900 1901 1902 1903 1904 1905 1906 1907 1908 1909 1910 1911 1912 1913 1914 1915 1916 1917 1918 1919 1920 1921 1922 1923 1924 1925 1926 1927 1928 1929 1930 1931 1932 1933 1934 1935 1936 1937 1938 1939 1940 1941 1942 1943 1944 1945 1946 1947 1948 1949 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971 1972 1973 1974 1975 1976 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040 2041 2042 2043 2044 2045 2046 2047 2048 2049 2050 2051 2052 2053 2054 2055 2056 2057 2058 2059 2060 2061 2062 2063 2064 2065 2066 2067 2068 2069 2070 2071 2072 2073 2074 2075 2076 2077 2078 2079 2080 2081 2082 2083 2084 2085 2086 2087 2088 2089 2090 2091 2092 2093 2094 2095 2096 2097 2098 2099 2100 2101 2102 2103 2104 2105 2106 2107 2108 2109 2110 2111 2112 2113 2114 2115 2116 2117 2118 2119 2120 2121 2122 2123 2124 2125 2126 2127 2128 2129 2130 2131 2132 2133 2134 2135 2136 2137 2138 2139 2140 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 2151 2152 2153 2154 2155 2156 2157 2158 2159 2160 2161 2162 2163 2164 2165 2166 2167 2168 2169 2170 2171 2172 2173 2174 2175 2176 2177 2178 2179 2180 2181 2182 2183 2184 2185 2186 2187 2188 2189 2190 2191 2192 2193 2194 2195 2196 2197 2198 2199 2200 2201 2202 2203 2204 2205 2206 2207 2208 2209 2210 2211 2212 2213 2214 2215 2216 2217 2218 2219 2220 2221 2222 2223 2224 2225 2226 2227 2228 2229 2230 2231 2232 2233 2234 2235 2236 2237 2238 2239 2240 2241 2242 2243 2244 2245 2246 2247 2248 2249 2250 2251 2252 2253 2254 2255 2256 2257 2258 2259 2260 2261 2262 2263 2264 2265 2266 2267 2268 2269 2270 2271 2272 2273 2274 2275 2276 2277 2278 2279 2280 2281 2282 2283 2284 2285 2286 2287 2288 2289 2290 2291 2292 2293 2294 2295 2296 2297 2298 2299 2300 2301 2302 2303 2304 2305 2306 2307 2308 2309 2310 2311 2312 2313 2314 2315 2316 2317 2318 2319 2320 2321 2322 2323 2324 2325 2326 2327 2328 2329 2330 2331 2332 2333 2334 2335 2336 2337 2338 2339 2340 2341 2342 2343 2344 2345 2346 2347 2348 2349 2350 2351 2352 2353 2354 2355 2356 2357 2358 2359 2360 2361 2362 2363 2364 2365 2366 2367 2368 2369 2370 2371 2372 2373 2374 2375 2376 2377 2378 2379 2380 2381 2382 2383 2384 2385 2386 2387 2388 2389 2390 2391 2392 2393 2394 2395 2396 2397 2398 2399 2400 2401 2402 2403 2404 2405 2406 2407 2408 2409 2410 2411 2412 2413 2414 2415 2416 2417 2418 2419 2420 2421 2422 2423 2424 2425 2426 2427 2428 2429 2430 2431 2432 2433 2434 2435 2436 2437 2438 2439 2440 2441 2442 2443 2444 2445 2446 2447 2448 2449 2450 2451 2452 2453 2454 2455 2456 2457 2458 2459 2460 2461 2462 2463 2464 2465 2466 2467 2468 2469 2470 2471 2472 2473 2474 2475 2476 2477 2478 2479 2480 2481 2482 2483 2484 2485 2486 2487 2488 2489 2490 2491 2492 2493 2494 2495 2496 2497 2498 2499 2500 2501 2502 2503 2504 2505 2506 2507 2508 2509 2510 2511 2512 2513 2514 2515 2516 2517 2518 2519 2520 2521 2522 2523 2524 2525 2526 2527 2528 2529 2530 2531 2532 2533 2534 2535 2536 2537 2538 2539 2540 2541 2542 2543 2544 2545 2546 2547 2548 2549 2550 2551 2552 2553 2554 2555 2556 2557 2558 2559 2560 2561 2562 2563 2564 2565 2566 2567 2568 2569 2570 2571 2572 2573 2574 2575 2576 2577 2578 2579 2580 2581 2582 2583 2584 2585 2586 2587 2588 2589 2590 2591 2592 2593 2594 2595 2596 2597 2598 2599 2600 2601 2602 2603 2604 2605 2606 2607 2608 2609 2610 2611 2612 2613 2614 2615 2616 2617 2618 2619 2620 2621 2622 2623 2624 2625 2626 2627 2628 2629 2630 2631 2632 2633 2634 2635 2636 2637 2638 2639 2640 2641 2642 2643 2644 2645 2646 2647 2648 2649 2650 2651 2652 2653 2654 2655 2656 2657 2658 2659 2660 2661 2662 2663 2664 2665 2666 2667 2668 2669 2670 2671 2672 2673 2674 2675 2676 2677 2678 2679 2680 2681 2682 2683 2684 2685 2686 2687 2688 2689 2690 2691 2692 2693 2694 2695 2696 2697 2698 2699 2700 2701 2702 2703 2704 2705 2706 2707 2708 2709 2710 2711 2712 2713 2714 2715 2716 2717 2718 2719 2720 2721 2722 2723 2724 2725 2726 2727 2728 2729 2730 2731 2732 2733 2734 2735 2736 2737 2738 2739 2740 2741 2742 2743 2744 2745 2746 2747 2748 2749 2750 2751 2752 2753 2754 2755 2756 2757 2758 2759 2760 2761 2762 2763 2764 2765 2766 2767 2768 2769 2770 2771 2772 2773 2774 2775 2776 2777 2778 2779 2780 2781 2782 2783 2784 2785 2786 2787 2788 2789 2790 2791 2792 2793 2794 2795 2796 2797 2798 2799 2800 2801 2802 2803 2804 2805 2806 2807 2808 2809 2810 2811 2812 2813 2814 2815 2816 2817 2818 2819 2820 2821 2822 2823 2824 2825 2826 2827 2828 2829 2830 2831 2832 2833 2834 2835 2836 2837 2838 2839 2840 2841 2842 2843 2844 2845 2846 2847 2848 2849 2850 2851 2852 2853 2854 2855 2856 2857 2858 2859 2860 2861 2862 2863 2864 2865 2866 2867 2868 2869 2870 2871 2872 2873 2874 2875 2876 2877 2878 2879 2880 2881 2882 2883 2884 2885 2886 2887 2888 2889 2890 2891 2892 2893 2894 2895 2896 2897 2898 2899 2900 2901 2902 2903 2904 2905 2906 2907 2908 2909 2910 2911 2912 2913 2914 2915 2916 2917 2918 2919 2920 2921 2922 2923 2924 2925 2926 2927 2928 2929 2930 2931 2932 2933 2934 2935 2936 2937 2938 2939 2940 2941 2942 2943 2944 2945 2946 2947 2948 2949 2950 2951 2952 2953 2954 2955 2956 2957 2958 2959 2960 2961 2962 2963 2964 2965 2966 2967 2968 2969 2970 2971 2972 2973 2974 2975 2976 2977 2978 2979 2980 2981 2982 2983 2984 2985 2986 2987 2988 2989 2990 2991 2992 2993 2994 2995 2996 2997 2998 2999 3000 3001 3002 3003 3004 3005 3006 3007 3008 3009 3010 3011 3012 3013 3014 3015 3016 3017 3018 3019 3020 3021 3022 3023 3024 3025 3026 3027 3028 3029 3030 3031 3032 3033 3034 3035 3036 3037 3038 3039 3040 3041 3042 3043 3044 3045 3046 3047 3048 3049 3050 3051 3052 3053 3054 3055 3056 3057 3058 3059 3060 3061 3062 3063 3064 3065 3066 3067 3068 3069 3070 3071 3072 3073 3074 3075 3076 3077 3078 3079 3080 3081 3082 3083 3084 3085 3086 3087 3088 3089 3090 3091 3092 3093 3094 3095 3096 3097 3098 3099 3100 3101 3102 3103 3104 3105 3106 3107 3108 3109 3110 3111 3112 3113 3114 3115 3116 3117 3118 3119 3120 3121 3122 3123 3124 3125 3126 3127 3128 3129 3130 3131 3132 3133 3134 3135 3136 3137 3138 3139 3140 3141 3142 3143 3144 3145 3146 3147 3148 3149 3150 3151 3152 3153 3154 3155 3156 3157 3158 3159 3160 3161 3162 3163 3164 3165 3166 3167 3168 3169 3170 3171 3172 3173 3174 3175 3176 3177 3178 3179 3180 3181 3182 3183 3184 3185 3186 3187 3188 3189 3190 3191 3192 3193 3194 3195 3196 3197 3198 3199 3200 3201 3202 3203 3204 3205 3206 3207 3208 3209 3210 3211 3212 3213 3214 3215 3216 3217 3218 3219 3220 3221 3222 3223 3224 3225 3226 3227 3228 3229 3230 3231 3232 3233 3234 3235 3236 3237 3238 3239 3240 3241 3242 3243 3244 3245 3246 3247 3248 3249 3250 3251 3252 3253 3254 3255 3256 3257 3258 3259 3260 3261 3262 3263 3264 3265 3266 3267 3268 3269 3270 3271 3272 3273 3274 3275 3276 3277 3278 3279 3280 3281 3282 3283 3284 3285 3286 3287 3288 3289 3290 3291 3292 3293 3294 3295 3296 3297 3298 3299 3300 3301 3302 3303 3304 3305 3306 3307 3308 3309 3310 3311 3312 3313 3314 3315 3316 3317 3318 3319 3320 3321 3322 3323 3324 3325 3326 3327 3328 3329 3330 3331 3332 3333 3334 3335 3336 3337 3338 3339 3340 3341 3342 3343 3344 3345 3346 3347 3348 3349 3350 3351 3352 3353 3354 3355 3356 3357 3358 3359 3360 3361 3362 3363 3364 3365 3366 3367 3368 3369 3370 3371 3372 3373 3374 3375 3376 3377 3378 3379 3380 3381 3382 3383 3384 3385 3386 3387 3388 3389 3390 3391 3392 3393 3394 3395 3396 3397 3398 3399 3400 3401 3402 3403 3404 3405 3406 3407 3408 3409 3410 3411 3412 3413 3414 3415 3416 3417 3418 3419 3420 3421 3422 3423 3424 3425 3426 3427 3428 3429 3430 3431 3432 3433 3434 3435 3436 3437 3438 3439 3440 3441 3442 3443 3444 3445 3446 3447 3448 3449 3450 3451 3452 3453 3454 3455 3456 3457 3458 3459 3460 3461 3462 3463 3464 3465 3466 3467 3468 3469 3470 3471 3472 3473 3474 3475 3476 3477 3478 3479 3480 3481 3482 3483 3484 3485 3486 3487 3488 3489 3490 3491 3492 3493 3494 3495 3496 3497 3498 3499 3500 3501 3502 3503 3504 3505 3506 3507 3508 3509 3510 3511 3512 3513 3514 3515 3516 3517 3518 3519 3520 3521 3522 3523 3524 3525 3526 3527 3528 3529 3530 3531 3532 3533 3534 3535 3536 3537 3538 3539 3540 3541 3542 3543 3544 3545 3546 3547 3548 3549 3550 3551 3552 3553 3554 3555 3556 3557 3558 3559 3560 3561 3562 3563 3564 3565 3566 3567 3568 3569 3570 3571 3572 3573 3574 3575 3576 3577 3578 3579 3580 3581 3582 3583 3584 3585 3586 3587 3588 3589 3590 3591 3592 3593 3594 3595 3596 3597 3598 3599 3600 3601 3602 3603 3604 3605 3606 3607 3608 3609 3610 3611 3612 3613 3614 3615 3616 3617 3618 3619 3620 3621 3622 3623 3624 3625 3626 3627 3628 3629 3630 3631 3632 3633 3634 3635 3636 3637 3638 3639 3640 3641 3642 3643 3644 3645 3646 3647 3648 3649 3650 3651 3652 3653 3654 3655 3656 3657 3658 3659 3660 3661 3662 3663 3664 3665 3666 3667 3668 3669 3670 3671 3672 3673 3674 3675 3676 3677 3678 3679 3680 3681 3682 3683 3684 3685 3686 3687 3688 3689 3690 3691 3692 3693 3694 3695 3696 3697 3698 3699 3700 3701 3702 3703 3704 3705 3706 3707 3708 3709 3710 3711 3712 3713 3714 3715 3716 3717 3718 3719 3720 3721 3722 3723 3724 3725 3726 3727 3728 3729 3730 3731 3732 3733 3734 3735 3736 3737 3738 3739 3740 3741 3742 3743 3744 3745 3746 3747 3748 3749 3750 3751 3752 3753 3754 3755 3756 3757 3758 3759 3760 3761 3762 3763 3764 3765 3766 3767 3768 3769 3770 3771 3772 3773 3774 3775 3776 3777 3778 3779 3780 3781 3782 3783 3784 3785 3786 3787 3788 3789 3790 3791 3792 3793 3794 3795 3796 3797 3798 3799 3800 3801 3802 3803 3804 3805 3806 3807 3808 3809 3810 3811 3812 3813 3814 3815 3816 3817 3818 3819 3820 3821 3822 3823 3824 3825 3826 3827 3828 3829 3830 3831 3832 3833 3834 3835 3836 3837 3838 3839 3840 3841 3842 3843 3844 3845 3846 3847 3848 3849 3850 3851 3852 3853 3854 3855 3856 3857 3858 3859 3860 3861 3862 3863 3864 3865 3866 3867 3868 3869 3870 3871 3872 3873 3874 3875 3876 3877 3878 3879 3880 3881 3882 3883 3884 3885 3886 3887 3888 3889 3890 3891 3892 3893 3894 3895 3896 3897 3898 3899 3900 3901 3902 3903 3904 3905 3906 3907 3908 3909 3910 3911 3912 3913 3914 3915 3916 3917 3918 3919 3920 3921 3922 3923 3924 3925 3926 3927 3928 3929 3930 3931 3932 3933 3934 3935 3936 3937 3938 3939 3940 3941 3942 3943 3944 3945 3946 3947 3948 3949 3950 3951 3952 3953 3954 3955 3956 3957 3958 3959 3960 3961 3962 3963 3964 3965 3966 3967 3968 3969 3970 3971 3972 3973 3974 3975 3976 3977 3978 3979 3980 3981 3982 3983 3984 3985 3986 3987 3988 3989 3990 3991 3992 3993 3994 3995 3996 3997 3998 3999 4000 4001 4002 4003 4004 4005 4006 4007 4008 4009 4010 4011 4012 4013 4014 4015 4016 4017 4018 4019 4020 4021 4022 4023 4024 4025 4026 4027 4028 4029 4030 4031 4032 4033 4034 4035 4036 4037 4038 4039 4040 4041 4042 4043 4044 4045 4046 4047 4048 4049 4050 4051 4052 4053 4054 4055 4056 4057 4058 4059 4060 4061 4062 4063 4064 4065 4066 4067 4068 4069 4070 4071 4072 4073 4074 4075 4076 4077 4078 4079 4080 4081 4082 4083 4084 4085 4086 4087 4088 4089 4090 4091 4092 4093 4094 4095 4096 4097 4098 4099 4100 4101 4102 4103 4104 4105 4106 4107 4108 4109 4110 4111 4112 4113 4114 4115 4116 4117 4118 4119 4120 4121 4122 4123 4124 4125 4126 4127 4128 4129 4130 4131 4132 4133 4134 4135 4136 4137 4138 4139 4140 4141 4142 4143 4144 4145 4146 4147 4148 4149 4150 4151 4152 4153 4154 4155 4156 4157 4158 4159 4160 4161 4162 4163 4164 4165 4166 4167 4168 4169 4170 4171 4172 4173 4174 4175 4176 4177 4178 4179 4180 4181 4182 4183 4184 4185 4186 4187 4188 4189 4190 4191 4192 4193 4194 4195 4196 4197 4198 4199 4200 4201 4202 4203 4204 4205 4206 4207 4208 4209 4210 4211 4212 4213 4214 4215 4216 4217 4218 4219 4220 4221 4222 4223 4224 4225 4226 4227 4228 4229 4230 4231 4232 4233 4234 4235 4236 4237 4238 4239 4240 4241 4242 4243 4244 4245 4246 4247 4248 4249 4250 4251 4252 4253 4254 4255 4256 4257 4258 4259 4260 4261 4262 4263 4264 4265 4266 4267 4268 4269 4270 4271 4272 4273 4274 4275 4276 4277 4278 4279 4280 4281 4282 4283 4284 4285 4286 4287 4288 4289 4290 4291 4292 4293 4294 4295 4296 4297 4298 4299 4300 4301 4302 4303 4304 4305 4306 4307 4308 4309 4310 4311 4312 4313 4314 4315 4316 4317 4318 4319 4320 4321 4322 4323 4324 4325 4326 4327 4328 4329 4330 4331 4332 4333 4334 4335 4336 4337 4338 4339 4340 4341 4342 4343 4344 4345 4346 4347 4348 4349 4350 4351 4352 4353 4354 4355 4356 4357 4358 4359 4360 4361 4362 4363 4364 4365 4366 4367 4368 4369 4370 4371 4372 4373 4374 4375 4376 4377 4378 4379 4380 4381 4382 4383 4384 4385 4386 4387 4388 4389 4390 4391 4392 4393 4394 4395 4396 4397 4398 4399 4400 4401 4402 4403 4404 4405 4406 4407 4408 4409 4410 4411 4412 4413 4414 4415 4416 4417 4418 4419 4420 4421 4422 4423 4424 4425 4426 4427 4428 4429 4430 4431 4432 4433 4434 4435 4436 4437 4438 4439 4440 4441 4442 4443 4444 4445 4446 4447 4448 4449 4450 4451 4452 4453 4454 4455 4456 4457 4458 4459 4460 4461 4462 4463 4464 4465 4466 4467 4468 4469 4470 4471 4472 4473 4474 4475 4476 4477 4478 4479 4480 4481 4482 4483 4484 4485 4486 4487 4488 4489 4490 4491 4492 4493 4494 4495 4496 4497 4498 4499 4500 4501 4502 4503 4504 4505 4506 4507 4508 4509 4510 4511 4512 4513 4514 4515 4516 4517 4518 4519 4520 4521 4522 4523 4524 4525 4526 4527 4528 4529 4530 4531 4532 4533 4534 4535 4536 4537 4538 4539 4540 4541 4542 4543 4544 4545 4546 4547 4548 4549 4550 4551 4552 4553 4554 4555 4556 4557 4558 4559 4560 4561 4562 4563 4564 4565 4566 4567 4568 4569 4570 4571 4572 4573 4574 4575 4576 4577 4578 4579 4580 4581 4582 4583 4584 4585 4586 4587 4588 4589 4590 4591 4592 4593 4594 4595 4596 4597 4598 4599 4600 4601 4602 4603 4604 4605 4606 4607 4608 4609 4610 4611 4612 4613 4614 4615 4616 4617 4618 4619 4620 4621 4622 4623 4624 4625 4626 4627 4628 4629 4630 4631 4632 4633 4634 4635 4636 4637 4638 4639 4640 4641 4642 4643 4644 4645 4646 4647 4648 4649 4650 4651 4652 4653 4654 4655 4656 4657 4658 4659 4660 4661 4662 4663 4664 4665 4666 4667 4668 4669 4670 4671 4672 4673 4674 4675 4676 4677 4678 4679 4680 4681 4682 4683 4684 4685 4686 4687 4688 4689 4690 4691 4692 4693 4694 4695 4696 4697 4698 4699 4700 4701 4702 4703 4704 4705 4706 4707 4708 4709 4710 4711 4712 4713 4714 4715 4716 4717 4718 4719 4720 4721 4722 4723 4724 4725 4726 4727 4728 4729 4730 4731 4732 4733 4734 4735 4736 4737 4738 4739 4740 4741 4742 4743 4744 4745 4746 4747 4748 4749 4750 4751 4752 4753 4754 4755 4756 4757 4758 4759 4760 4761 4762 4763 4764 4765 4766 4767 4768 4769 4770 4771 4772 4773 4774 4775 4776 4777 4778 4779 4780 4781 4782 4783 4784 4785 4786 4787 4788 4789 4790 4791 4792 4793 4794 4795 4796 4797 4798 4799 4800 4801 4802 4803 4804 4805 4806 4807 4808 4809 4810 4811 4812 4813 4814 4815 4816 4817 4818 4819 4820 4821 4822 4823 4824 4825 4826 4827 4828 4829 4830 4831 4832 4833 4834 4835 4836 4837 4838 4839 4840 4841 4842 4843 4844 4845 4846 4847 4848 4849 4850 4851 4852 4853 4854 4855 4856 4857 4858 4859 4860 4861 4862 4863 4864 4865 4866 4867 4868 4869 4870 4871 4872 4873 4874 4875 4876 4877 4878 4879 4880 4881 4882 4883 4884 4885 4886 4887 4888 4889 4890 4891 4892 4893 4894 4895 4896 4897 4898 4899 4900 4901 4902 4903 4904 4905 4906 4907 4908 4909 4910 4911 4912 4913 4914 4915 4916 4917 4918 4919 4920 4921 4922 4923 4924 4925 4926 4927 4928 4929 4930 4931 4932 4933 4934 4935 4936 4937 4938 4939 4940 4941 4942 4943 4944 4945 4946 4947 4948 4949 4950 4951 4952 4953 4954 4955 4956 4957 4958 4959 4960 4961 4962 4963 4964 4965 4966 4967 4968 4969 4970 4971 4972 4973 4974 4975 4976 4977 4978 4979 4980 4981 4982 4983 4984 4985 4986 4987 4988 4989 4990 4991 4992 4993 4994 4995 4996 4997 4998 4999 5000 5001 5002 5003 5004 5005 5006 5007 5008 5009 5010 5011 5012 5013 5014 5015 5016 5017 5018 5019 5020 5021 5022 5023 5024 5025 5026 5027 5028 5029 5030 5031 5032 5033 5034 5035 5036 5037 5038 5039 5040 5041 5042 5043 5044 5045 5046 5047 5048 5049 5050 5051 5052 5053 5054 5055 5056 5057 5058 5059 5060 5061 5062 5063 5064 5065 5066 5067 5068 5069 5070 5071 5072 5073 5074 5075 5076 5077 5078 5079 5080 5081 5082 5083 5084 5085 5086 5087 5088 5089 5090 5091 5092 5093 5094 5095 5096 5097 5098 5099 5100 5101 5102 5103 5104 5105 5106 5107 5108 5109 5110 5111 5112 5113 5114 5115 5116 5117 5118 5119 5120 5121 5122 5123 5124 5125 5126 5127 5128 5129 5130 5131 5132 5133 5134 5135 5136 5137 5138 5139 5140 5141 5142 5143 5144 5145 5146 5147 5148 5149 5150 5151 5152 5153 5154 5155 5156 5157 5158 5159 5160 5161 5162 5163 5164 5165 5166 5167 5168 5169 5170 5171 5172 5173 5174 5175 5176 5177 5178 5179 5180 5181 5182 5183 5184 5185 5186 5187 5188 5189 5190 5191 5192 5193 5194 5195 5196 5197 5198 5199 5200 5201 5202 5203 5204 5205 5206 5207 5208 5209 5210 5211 5212 5213 5214 5215 5216 5217 5218 5219 5220 5221 5222 5223 5224 5225 5226 5227 5228 5229 5230 5231 5232 5233 5234 5235 5236 5237 5238 5239 5240 5241 5242 5243 5244 5245 5246 5247 5248 5249 5250 5251 5252 5253 5254 5255 5256 5257 5258 5259 5260 5261 5262 5263 5264 5265 5266 5267 5268 5269 5270 5271 5272 5273 5274 5275 5276 5277 5278 5279 5280 5281 5282 5283 5284 5285 5286 5287 5288 5289 5290 5291 5292 5293 5294 5295 5296 5297 5298 5299 5300 5301 5302 5303 5304 5305 5306 5307 5308 5309 5310 5311 5312 5313 5314 5315 5316 5317 5318 5319 5320 5321 5322 5323 5324 5325 5326 5327 5328 5329 5330 5331 5332 5333 5334 5335 5336 5337 5338 5339 5340 5341 5342 5343 5344 5345 5346 5347 5348 5349 5350 5351 5352 5353 5354 5355 5356 5357 5358 5359 5360 5361 5362 5363 5364 5365 5366 5367 5368 5369 5370 5371 5372 5373 5374 5375 5376 5377 5378 5379 5380 5381 5382 5383 5384 5385 5386 5387 5388 5389 5390 5391 5392 5393 5394 5395 5396 5397 5398 5399 5400 5401 5402 5403 5404 5405 5406 5407 5408 5409 5410 5411 5412 5413 5414 5415 5416 5417 5418 5419 5420 5421 5422 5423 5424 5425 5426 5427 5428 5429 5430 5431 5432 5433 5434 5435 5436 5437 5438 5439 5440 5441 5442 5443 5444 5445 5446 5447 5448 5449 5450 5451 5452 5453 5454 5455 5456 5457 5458 5459 5460 5461 5462 5463 5464 5465 5466 5467 5468 5469 5470 5471 5472 5473 5474 5475 5476 5477 5478 5479 5480 5481 5482 5483 5484 5485 5486 5487 5488 5489 5490 5491 5492 5493 5494 5495 5496 5497 5498 5499 5500 5501 5502 5503 5504 5505 5506 5507 5508 5509 5510 5511 5512 5513 5514 5515 5516 5517 5518 5519 5520 5521 5522 5523 5524 5525 5526 5527 5528 5529 5530 5531 5532 5533 5534 5535 5536 5537 5538 5539 5540 5541 5542 5543 5544 5545 5546 5547 5548 5549 5550 5551 5552 5553 5554 5555 5556 5557 5558 5559 5560 5561 5562 5563 5564 5565 5566 5567 5568 5569 5570 5571 5572 5573 5574 5575 5576 5577 5578 5579 5580 5581 5582 5583 5584 5585 5586 5587 5588 5589 5590 5591 5592 5593 5594 5595 5596 5597 5598 5599 5600 5601 5602 5603 5604 5605 5606 5607 5608 5609 5610 5611 5612 5613 5614 5615 5616 5617 5618 5619 5620 5621 5622 5623 5624 5625 5626 5627 5628 5629 5630 5631 5632 5633 5634 5635 5636 5637 5638 5639 5640 5641 5642 5643 5644 5645 5646 5647 5648 5649 5650 5651 5652 5653 5654 5655 5656 5657 5658 5659 5660 5661 5662 5663 5664 5665 5666 5667 5668 5669 5670 5671 5672 5673 5674 5675 5676 5677 5678 5679 5680 5681 5682 5683 5684 5685 5686 5687 5688 5689 5690 5691 5692 5693 5694 5695 5696 5697 5698 5699 5700 5701 5702 5703 5704 5705 5706 5707 5708 5709 5710 5711 5712 5713 5714 5715 5716 5717 5718 5719 5720 5721 5722 5723 5724 5725 5726 5727 5728 5729 5730 5731 5732 5733 5734 5735 5736 5737 5738 5739 5740 5741 5742 5743 5744 5745 5746 5747 5748 5749 5750 5751 5752 5753 5754 5755 5756 5757 5758 5759 5760 5761 5762 5763 5764 5765 5766 5767 5768 5769 5770 5771 5772 5773 5774 5775 5776 5777 5778 5779 5780 5781 5782 5783 5784 5785 5786 5787 5788 5789 5790 5791 5792 5793 5794 5795 5796 5797 5798 5799 5800 5801 5802 5803 5804 5805 5806 5807 5808 5809 5810 5811 5812 5813 5814 5815 5816 5817 5818 5819 5820 5821 5822 5823 5824 5825 5826 5827 5828 5829 5830 5831 5832 5833 5834 5835 5836 5837 5838 5839 5840 5841 5842 5843 5844 5845 5846 5847 5848 5849 5850 5851 5852 5853 5854 5855 5856 5857 5858 5859 5860 5861 5862 5863 5864 5865 5866 5867 5868 5869 5870 5871 5872 5873 5874 5875 5876 5877 5878 5879 5880 5881 5882 5883 5884 5885 5886 5887 5888 5889 5890 5891 5892 5893 5894 5895 5896 5897 5898 5899 5900 5901 5902 5903 5904 5905 5906 5907 5908 5909 5910 5911 5912 5913 5914 5915 5916 5917 5918 5919 5920 5921 5922 5923 5924 5925 5926 5927 5928 5929 5930 5931 5932 5933 5934 5935 5936 5937 5938 5939 5940 5941 5942 5943 5944 5945 5946 5947 5948 5949 5950 5951 5952 5953 5954 5955 5956 5957 5958 5959 5960 5961 5962 5963 5964 5965 5966 5967 5968 5969 5970 5971 5972 5973 5974 5975 5976 5977 5978 5979 5980 5981 5982 5983 5984 5985 5986 5987 5988 5989 5990 5991 5992 5993 5994 5995 5996 5997 5998 5999 6000 6001 6002 6003 6004 6005 6006 6007 6008 6009 6010 6011 6012 6013 6014 6015 6016 6017 6018 6019 6020 6021 6022 6023 6024 6025 6026 6027 6028 6029 6030 6031 6032 6033 6034 6035 6036 6037 6038 6039 6040 6041 6042 6043 6044 6045 6046 6047 6048 6049 6050 6051 6052 6053 6054 6055 6056 6057 6058 6059 6060 6061 6062 6063 6064 6065 6066 6067 6068 6069 6070 6071 6072 6073 6074 6075 6076 6077 6078 6079 6080 6081 6082 6083 6084 6085 6086 6087 6088 6089 6090 6091 6092 6093 6094 6095 6096 6097 6098 6099 6100 6101 6102 6103 6104 6105 6106 6107 6108 6109 6110 6111 6112 6113 6114 6115 6116 6117 6118 6119 6120 6121 6122 6123 6124 6125 6126 6127 6128 6129 6130 6131 6132 6133 6134 6135 6136 6137 6138 6139 6140 6141 6142 6143 6144 6145 6146 6147 6148 6149 6150 6151 6152 6153 6154 6155 6156 6157 6158 6159 6160 6161 6162 6163 6164 6165 6166 6167 6168 6169 6170 6171 6172 6173 6174 6175 6176 6177 6178 6179 6180 6181 6182 6183 6184 6185 6186 6187 6188 6189 6190 6191 6192 6193 6194 6195 6196 6197 6198 6199 6200 6201 6202 6203 6204 6205 6206 6207 6208 6209 6210 6211 6212 6213 6214 6215 6216 6217 6218 6219 6220 6221 6222 6223 6224 6225 6226 6227 6228 6229 6230 6231 6232 6233 6234 6235 6236 6237 6238 6239 6240 6241 6242 6243 6244 6245 6246 6247 6248 6249 6250 6251 6252 6253 6254 6255 6256 6257 6258 6259 6260 6261 6262 6263 6264 6265 6266 6267 6268 6269 6270 6271 6272 6273 6274 6275 6276 6277 6278 6279 6280 6281 6282 6283 6284 6285 6286 6287 6288 6289 6290 6291 6292 6293 6294 6295 6296 6297 6298 6299 6300 6301 6302 6303 6304 6305 6306 6307 6308 6309 6310 6311 6312 6313 6314 6315 6316 6317 6318 6319 6320 6321 6322 6323 6324 6325 6326 6327 6328 6329 6330 6331 6332 6333 6334 6335 6336 6337 6338 6339 6340 6341 6342 6343 6344 6345 6346 6347 6348 6349 6350 6351 6352 6353 6354 6355 6356 6357 6358 6359 6360 6361 6362 6363 6364 6365 6366 6367 6368 6369 6370 6371 6372 6373 6374 6375 6376 6377 6378 6379 6380 6381 6382 6383 6384 6385 6386 6387 6388 6389 6390 6391 6392 6393 6394 6395 6396 6397 6398 6399 6400 6401 6402 6403 6404 6405 6406 6407 6408 6409 6410 6411 6412 6413 6414 6415 6416 6417 6418 6419 6420 6421 6422 6423 6424 6425 6426 6427 6428 6429 6430 6431 6432 6433 6434 6435 6436 6437 6438 6439 6440 6441 6442 6443 6444 6445 6446 6447 6448 6449 6450 6451 6452 6453 6454 6455 6456 6457 6458 6459 6460 6461 6462 6463 6464 6465 6466 6467 6468 6469 6470 6471 6472 6473 6474 6475 6476 6477 6478 6479 6480 6481 6482 6483 6484 6485 6486 6487 6488 6489 6490 6491 6492 6493 6494 6495 6496 6497 6498 6499 6500 6501 6502 6503 6504 6505 6506 6507 6508 6509 6510 6511 6512 6513 6514 6515 6516 6517 6518 6519 6520 6521 6522 6523 6524 6525 6526 6527 6528 6529 6530 6531 6532 6533 6534 6535 6536 6537 6538 6539 6540 6541 6542 6543 6544 6545 6546 6547 6548 6549 6550 6551 6552 6553 6554 6555 6556 6557 6558 6559 6560 6561 6562 6563 6564 6565 6566 6567 6568 6569 6570 6571 6572 6573 6574 6575 6576 6577 6578 6579 6580 6581 6582 6583 6584 6585 6586 6587 6588 6589 6590 6591 6592 6593 6594 6595 6596 6597 6598 6599 6600 6601 6602 6603 6604 6605 6606 6607 6608 6609 6610 6611 6612 6613 6614 6615 6616 6617 6618 6619 6620 6621 6622 6623 6624 6625 6626 6627 6628 6629 6630 6631 6632 6633 6634 6635 6636 6637 6638 6639 6640 6641 6642 6643 6644 6645 6646 6647 6648 6649 6650 6651 6652 6653 6654 6655 6656 6657 6658 6659 6660 6661 6662 6663 6664 6665 6666 6667 6668 6669 6670 6671 6672 6673 6674 6675 6676 6677 6678 6679 6680 6681 6682 6683 6684 6685 6686 6687 6688 6689 6690 6691 6692 6693 6694 6695 6696 6697 6698 6699 6700 6701 6702 6703 6704 6705 6706 6707 6708 6709 6710 6711 6712 6713 6714 6715 6716 6717 6718 6719 6720 6721 6722 6723 6724 6725 6726 6727 6728 6729 6730 6731 6732 6733 6734 6735 6736 6737 6738 6739 6740 6741 6742 6743 6744 6745 6746 6747 6748 6749 6750 6751 6752 6753 6754 6755 6756 6757 6758 6759 6760 6761 6762 6763 6764 6765 6766 6767 6768 6769 6770 6771 6772 6773 6774 6775 6776 6777 6778 6779 6780 6781 6782 6783 6784 6785 6786 6787 6788 6789 6790 6791 6792 6793 6794 6795 6796 6797 6798 6799 6800 6801 6802 6803 6804 6805 6806 6807 6808 6809 6810 6811 6812 6813 6814 6815 6816 6817 6818 6819 6820 6821 6822 6823 6824 6825 6826 6827 6828 6829 6830 6831 6832 6833 6834 6835 6836 6837 6838 6839 6840 6841 6842 6843 6844 6845 6846 6847 6848 6849 6850 6851 6852 6853 6854 6855 6856 6857 6858 6859 6860 6861 6862 6863 6864 6865 6866 6867 6868 6869 6870 6871 6872 6873 6874 6875 6876 6877 6878 6879 6880 6881 6882 6883 6884 6885 6886 6887 6888 6889 6890 6891 6892 6893 6894 6895 6896 6897 6898 6899 6900 6901 6902 6903 6904 6905 6906 6907 6908 6909 6910 6911 6912 6913 6914 6915 6916 6917 6918 6919 6920 6921 6922 6923 6924 6925 6926 6927 6928 6929 6930 6931 6932 6933 6934 6935 6936 6937 6938 6939 6940 6941 6942 6943 6944 6945 6946 6947 6948 6949 6950 6951 6952 6953 6954 6955 6956 6957 6958 6959 6960 6961 6962 6963 6964 6965 6966 6967 6968 6969 6970 6971 6972 6973 6974 6975 6976 6977 6978 6979 6980 6981 6982 6983 6984 6985 6986 6987 6988 6989 6990 6991 6992 6993 6994 6995 6996 6997 6998 6999 7000 7001 7002 7003 7004 7005 7006 7007 7008 7009 7010 7011 7012 7013 7014 7015 7016 7017 7018 7019 7020 7021 7022 7023 7024 7025 7026 7027 7028 7029 7030 7031 7032 7033 7034 7035 7036 7037 7038 7039 7040 7041 7042 7043 7044 7045 7046 7047 7048 7049 7050 7051 7052 7053 7054 7055 7056 7057 7058 7059 7060 7061 7062 7063 7064 7065 7066 7067 7068 7069 7070 7071 7072 7073 7074 7075 7076 7077 7078 7079 7080 7081 7082 7083 7084 7085 7086 7087 7088 7089 7090 7091 7092 7093 7094 7095 7096 7097 7098 7099 7100 7101 7102 7103 7104 7105 7106 7107 7108 7109 7110 7111 7112 7113 7114 7115 7116 7117 7118 7119 7120 7121 7122 7123 7124 7125 7126 7127 7128 7129 7130 7131 7132 7133 7134 7135 7136 7137 7138 7139 7140 7141 7142 7143 7144 7145 7146 7147 7148 7149 7150 7151 7152 7153 7154 7155 7156 7157 7158 7159 7160 7161 7162 7163 7164 7165 7166 7167 7168 7169 7170 7171 7172 7173 7174 7175 7176 7177 7178 7179 7180 7181 7182 7183 7184 7185 7186 7187 7188 7189 7190 7191 7192 7193 7194 7195 7196 7197 7198 7199 7200 7201 7202 7203 7204 7205 7206 7207 7208 7209 7210 7211 7212 7213 7214 7215 7216 7217 7218 7219 7220 7221 7222 7223 7224 7225 7226 7227 7228 7229 7230 7231 7232 7233 7234 7235 7236 7237 7238 7239 7240 7241 7242 7243 7244 7245 7246 7247 7248 7249 7250 7251 7252 7253 7254 7255 7256 7257 7258 7259 7260 7261 7262 7263 7264 7265 7266 7267 7268 7269 7270 7271 7272 7273 7274 7275 7276 7277 7278 7279 7280 7281 7282 7283 7284 7285 7286 7287 7288 7289 7290 7291 7292 7293 7294 7295 7296 7297 7298 7299 7300 7301 7302 7303 7304 7305 7306 7307 7308 7309 7310 7311 7312 7313 7314 7315 7316 7317 7318 7319 7320 7321 7322 7323 7324 7325 7326 7327 7328 7329 7330 7331 7332 7333 7334 7335 7336 7337 7338 7339 7340 7341 7342 7343 7344 7345 7346 7347 7348 7349 7350 7351 7352 7353 7354 7355 7356 7357 7358 7359 7360 7361 7362 7363 7364 7365 7366 7367 7368 7369 7370 7371 7372 7373 7374 7375 7376 7377 7378 7379 7380 7381 7382 7383 7384 7385 7386 7387 7388 7389 7390 7391 7392 7393 7394 7395 7396 7397 7398 7399 7400 7401 7402 7403 7404 7405 7406 7407 7408 7409 7410 7411 7412 7413 7414 7415 7416 7417 7418 7419 7420 7421 7422 7423 7424 7425 7426 7427 7428 7429 7430 7431 7432 7433 7434 7435 7436 7437 7438 7439 7440 7441 7442 7443 7444 7445 7446 7447 7448 7449 7450 7451 7452 7453 7454 7455 7456 7457 7458 7459 7460 7461 7462 7463 7464 7465 7466 7467 7468 7469 7470 7471 7472 7473 7474 7475 7476 7477 7478 7479 7480 7481 7482 7483 7484 7485 7486 7487 7488 7489 7490 7491 7492 7493 7494 7495 7496 7497 7498 7499 7500 7501 7502 7503 7504 7505 7506 7507 7508 7509 7510 7511 7512 7513 7514 7515 7516 7517 7518 7519 7520 7521 7522 7523 7524 7525 7526 7527 7528 7529 7530 7531 7532 7533 7534 7535 7536 7537 7538 7539 7540 7541 7542 7543 7544 7545 7546 7547 7548 7549 7550 7551 7552 7553 7554 7555 7556 7557 7558 7559 7560 7561 7562 7563 7564 7565 7566 7567 7568 7569 7570 7571 7572 7573 7574 7575 7576 7577 7578 7579 7580 7581 7582 7583 7584 7585 7586 7587 7588 7589 7590 7591 7592 7593 7594 7595 7596 7597 7598 7599 7600 7601 7602 7603 7604 7605 7606 7607 7608 7609 7610 7611 7612 7613 7614 7615 7616 7617 7618 7619 7620 7621 7622 7623 7624 7625 7626 7627 7628 7629 7630 7631 7632 7633 7634 7635 7636 7637 7638 7639 7640 7641 7642 7643 7644 7645 7646 7647 7648 7649 7650 7651 7652 7653 7654 7655 7656 7657 7658 7659 7660 7661 7662 7663 7664 7665 7666 7667 7668 7669 7670 7671 7672 7673 7674 7675 7676 7677 7678 7679 7680 7681 7682 7683 7684 7685 7686 7687 7688 7689 7690 7691 7692 7693 7694 7695 7696 7697 7698 7699 7700 7701 7702 7703 7704 7705 7706 7707 7708 7709 7710 7711 7712 7713 7714 7715 7716 7717 7718 7719 7720 7721 7722 7723 7724 7725 7726 7727 7728 7729 7730 7731 7732 7733 7734 7735 7736 7737 7738 7739 7740 7741 7742 7743 7744 7745 7746 7747 7748 7749 7750 7751 7752 7753 7754 7755 7756 7757 7758 7759 7760 7761 7762 7763 7764 7765 7766 7767 7768 7769 7770 7771 7772 7773 7774 7775 7776 7777 7778 7779 7780 7781 7782 7783 7784 7785 7786 7787 7788 7789 7790 7791 7792 7793 7794 7795 7796 7797 7798 7799 7800 7801 7802 7803 7804 7805 7806 7807 7808 7809 7810 7811 7812 7813 7814 7815 7816 7817 7818 7819 7820 7821 7822 7823 7824 7825 7826 7827 7828 7829 7830 7831 7832 7833 7834 7835 7836 7837 7838 7839 7840 7841 7842 7843 7844 7845 7846 7847 7848 7849 7850 7851 7852 7853 7854 7855 7856 7857 7858 7859 7860 7861 7862 7863 7864 7865 7866 7867 7868 7869 7870 7871 7872 7873 7874 7875 7876 7877 7878 7879 7880 7881 7882 7883 7884 7885 7886 7887 7888 7889 7890 7891 7892 7893 7894 7895 7896 7897 7898 7899 7900 7901 7902 7903 7904 7905 7906 7907 7908 7909 7910 7911 7912 7913 7914 7915 7916 7917 7918 7919 7920 7921 7922 7923 7924 7925 7926 7927 7928 7929 7930 7931 7932 7933 7934 7935 7936 7937 7938 7939 7940 7941 7942 7943 7944 7945 7946 7947 7948 7949 7950 7951 7952 7953 7954 7955 7956 7957 7958 7959 7960 7961 7962 7963 7964 7965 7966 7967 7968 7969 7970 7971 7972 7973 7974 7975 7976 7977 7978 7979 7980 7981 7982 7983 7984 7985 7986 7987 7988 7989 7990 7991 7992 7993 7994 7995 7996 7997 7998 7999 8000 8001 8002 8003 8004 8005 8006 8007 8008 8009 8010 8011 8012 8013 8014 8015 8016 8017 8018 8019 8020 8021 8022 8023 8024 8025 8026 8027 8028 8029 8030 8031 8032 8033 8034 8035 8036 8037 8038 8039 8040 8041 8042 8043 8044 8045 8046 8047 8048 8049 8050 8051 8052 8053 8054 8055 8056 8057 8058 8059 8060 8061 8062 8063 8064 8065 8066 8067 8068 8069 8070 8071 8072 8073 8074 8075 8076 8077 8078 8079 8080 8081 8082 8083 8084 8085 8086 8087 8088 8089 8090 8091 8092 8093 8094 8095 8096 8097 8098 8099 8100 8101 8102 8103 8104 8105 8106 8107 8108 8109 8110 8111 8112 8113 8114 8115 8116 8117 8118 8119 8120 8121 8122 8123 8124 8125 8126 8127 8128 8129 8130 8131 8132 8133 8134 8135 8136 8137 8138 8139 8140 8141 8142 8143 8144 8145 8146 8147 8148 8149 8150 8151 8152 8153 8154 8155 8156 8157 8158 8159 8160 8161 8162 8163 8164 8165 8166 8167 8168 8169 8170 8171 8172 8173 8174 8175 8176 8177 8178 8179 8180 8181 8182 8183 8184 8185 8186 8187 8188 8189 8190 8191 8192 8193 8194 8195 8196 8197 8198 8199 8200 8201 8202 8203 8204 8205 8206 8207 8208 8209 8210 8211 8212 8213 8214 8215 8216 8217 8218 8219 8220 8221 8222 8223 8224 8225 8226 8227 8228 8229 8230 8231 8232 8233 8234 8235 8236 8237 8238 8239 8240 8241 8242 8243 8244 8245 8246 8247 8248 8249 8250 8251 8252 8253 8254 8255 8256 8257 8258 8259 8260 8261 8262 8263 8264 8265 8266 8267 8268 8269 8270 8271 8272 8273 8274 8275 8276 8277 8278 8279 8280 8281 8282 8283 8284 8285 8286 8287 8288 8289 8290 8291 8292 8293 8294 8295 8296 8297 8298 8299 8300 8301 8302 8303 8304 8305 8306 8307 8308 8309 8310 8311 8312 8313 8314 8315 8316 8317 8318 8319 8320 8321 8322 8323 8324 8325 8326 8327 8328 8329 8330 8331 8332 8333 8334 8335 8336 8337 8338 8339 8340 8341 8342 8343 8344 8345 8346 8347 8348 8349 8350 8351 8352 8353 8354 8355 8356 8357 8358 8359 8360 8361 8362 8363 8364 8365 8366 8367 8368 8369 8370 8371 8372 8373 8374 8375 8376 8377 8378 8379 8380 8381 8382 8383 8384 8385 8386 8387 8388 8389 8390 8391 8392 8393 8394 8395 8396 8397 8398 8399 8400 8401 8402 8403 8404 8405 8406 8407 8408 8409 8410 8411 8412 8413 8414 8415 8416 8417 8418 8419 8420 8421 8422 8423 8424 8425 8426 8427 8428 8429 8430 8431 8432 8433 8434 8435 8436 8437 8438 8439 8440 8441 8442 8443 8444 8445 8446 8447 8448 8449 8450 8451 8452 8453 8454 8455 8456 8457 8458 8459 8460 8461 8462 8463 8464 8465 8466 8467 8468 8469 8470 8471 8472 8473 8474 8475 8476 8477 8478 8479
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<TITLE> Linux Gazette Table of Contents LG #62</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#0000AF"
ALINK="#FF0000" >
<center>
<!-- A HREF="http://www.linuxgazette.com/">
<H1><IMG SRC="../gx/newlogo.jpg" ALT="LINUX GAZETTE" border="0"></H1></A> -->
<A HREF="http://www.linuxgazette.com/">
<H1><IMG ALT="LINUX GAZETTE" SRC="../gx/lglogo.jpg"
WIDTH="600" HEIGHT="124" border="0"></H1></A>
<H2>February 2001, Issue 62
Published by <I>Linux Journal</I></H2>
<A HREF=../lg_frontpage.html>Front Page</A> |
<A HREF=../lg_frontpage.html>Back Issues</A> |
<A HREF=../lg_faq.html>FAQ</A> |
<A HREF=../mirrors.html>Mirrors</A> |
<A HREF=http://www.linuxgazette.com/wgindex.html>Search</A>
</center>
<!--=================================================================-->
<table>
<TR>
<TD COLSPAN="3" WIDTH="100%" BGCOLOR="#000000"><IMG
SRC="../gx/hammel/cleardot.gif" ALT="" HSPACE=30 VSPACE=2 HEIGHT=1
WIDTH=1 ALIGN=LEFT></TD>
<TD></TD>
</TR>
<tr><td>
<table>
<tr>
<td VALIGN="top"><H1><font color="#BB0000">Visit Our Sponsors:</font></H1></td></tr>
<!-- *** BEGIN sponsors *** -->
<TR><TD>
<A HREF="http://www.linuxnetworx.com"><IMG ALT="Linux NetworX" SRC="../gx/sponsors/linuxnetworx.gif" BORDER="0" VSPACE="10"></A>
</TD></TR>
<TR><TD>
<A HREF="http://www.penguincomputing.com"><IMG ALT="Penguin Computing" SRC="../gx/sponsors/penguincomputing.gif" BORDER="0" VSPACE="10"></A>
</TD></TR>
<TR><TD>
<A HREF="http://www.redhat.com"><IMG ALT="Red Hat" SRC="../gx/sponsors/redhat.jpg" BORDER="0" VSPACE="10"></A>
</TD></TR>
<TR><TD>
<A HREF="http://www.tuxtops.com"><IMG ALT="Tuxtops" SRC="../gx/sponsors/tuxtops.gif" BORDER="0" VSPACE="10"></A>
</TD></TR>
<TR><TD>
<A HREF="http://www.elinux.com/xwb00120"><IMG ALT="eLinux.com" SRC="../gx/sponsors/elinux.gif" BORDER="0" VSPACE="10"></A>
</TD></TR>
<TR><TD>
<A HREF="http://www.linuxcare.com"><IMG ALT="LinuxCare" SRC="../gx/linuxcare.gif" BORDER="0" VSPACE="10"></A>
</TD></TR>
<TR><TD>
<A HREF="http://www.linuxmall.com/"><IMG ALT="LinuxMall" SRC="../gx/linuxmall.gif" BORDER="0" VSPACE="10"></A>
</TD></TR>
<TR><TD>
<A HREF="http://www.vmware.com"><IMG ALT="VMware" SRC="../gx/sponsors/vmware.jpg" BORDER="0" VSPACE="10"></A>
</TD></TR>
<!-- *** END sponsors *** -->
</table>
</td>
<!--==================================================================-->
<TD ROWSPAN="3" WIDTH="2" BGCOLOR="#000000" NOSAVE><IMG
SRC="../gx/hammel/cleardot.gif" ALT="" HSPACE=1 HEIGHT=1 WIDTH=1%></TD>
<td VALIGN=top>
<H1><font color="#BB0000">Table of Contents:</font></H1>
<!-- *** BEGIN toc *** -->
<UL>
<LI> <a HREF="lg_mail62.html">The MailBag</A>
<LI> <a HREF="lg_bytes62.html">News Bytes</A>
<UL>
<LI> <a HREF="lg_bytes62.html#distro">Distro News</A>
<LI> <a HREF="lg_bytes62.html#general">News in General</A>
<LI> <a HREF="lg_bytes62.html#software">Software Announcements</A>
</UL>
<LI> <a HREF="lg_answer62.html">The Answer Gang</A> , <EM>by The <EM>Linux Gazette</EM> Answer Gang</EM>
<LI> <a HREF="lg_tips62.html">More 2-Cent Tips</A>
<LI> <a HREF="bajgar.html">Linux in British Schools</A> , <EM>by James "Badger" Bajgar</EM>
<LI> <a HREF="kasten.html">Tuxedo Tails</A> , <EM>by Eric Kasten</EM>
<LI> <a HREF="lukens.html">PalmOS Development under Linux</A> , <EM>by David "Scooter" Lukens</EM>
<LI> <a HREF="meek.html">Wide Area Network Packet Capture and Analysis</A> , <EM>by Jon Meek</EM>
<LI> <a HREF="okopnik.html">No More Spam! (a "procmail"-based solution with tips on "fetchmail" and "mutt")</A> , <EM>by Ben Okopnik</EM>
<LI> <a HREF="searls.html">Linux Management goes Big Time: Volution Interview with Craig Burton</A> , <EM>by Doc Searls</EM>
<LI> <a HREF="shapiro.html">Have Your PC Listen to the Radio For You</A> , <EM>by Charles Shapiro</EM>
<LI> <a HREF="silva.html">Video Applications on Your Linux Box</A> , <EM>by Anderson Silva</EM>
<LI> <a HREF="steffler.html">Making Smalltalk: The Making of aPerson</A> , <EM>by Jason Steffler</EM>
<LI> <a HREF="lg_backpage62.html">The Back Page</A>
<UL>
<LI> <a HREF="lg_backpage62.html#authors">About This Month's Authors</A>
<LI> <a HREF="lg_backpage62.html#notlinux">Not Linux</A>
</UL>
</UL>
<!-- *** END toc *** -->
</td>
</tr>
<TR>
<TD COLSPAN="3" WIDTH="100%" BGCOLOR="#000000"><IMG
SRC="../gx/hammel/cleardot.gif"
ALT="-------------------------------------------------------------"
HSPACE=30 VSPACE=2 HEIGHT=1 WIDTH=1 ALIGN=LEFT></TD>
<TD></TD>
</TR>
</table> <!-- ******************************************* -->
<H3 ALIGN="center"><EM>Linux Gazette</EM> Staff and The Answer Gang</H3>
<BLOCKQUOTE>
<STRONG>Editor:</STRONG> Michael Orr<BR>
<STRONG>Technical Editor:</STRONG> Heather Stern<BR>
<STRONG>Senior Contributing Editor:</STRONG> Jim Dennis<BR>
<STRONG>Contributing Editors:</STRONG>
Michael "Alex" Williams, Don Marti, Ben Okopnik
</BLOCKQUOTE>
<TABLE WIDTH="100%"><TR>
<TD WIDTH="100%" BGCOLOR="#000000"><IMG
SRC="../gx/hammel/cleardot.gif" ALT="" HSPACE=30 VSPACE=2 HEIGHT=1
WIDTH=1 ALIGN=LEFT></TD>
</TR></TABLE>
<P> <!-- ************************************************** -->
<table>
<tr><td>
<A HREF="issue62.txt.gz">TWDT 1 (gzipped text file)</A><BR>
<A HREF="issue62.html">TWDT 2 (HTML file)</A><BR>
are files containing the entire issue: one in text format, one in HTML.
They are provided
strictly as a way to save the contents as one file for later printing in
the format of your choice;
there is no guarantee of working links in the HTML version.
</td></tr>
<!--==================================================================-->
<TR>
<TD COLSPAN="3" WIDTH="100%" BGCOLOR="#000000"><IMG
SRC="../gx/hammel/cleardot.gif" ALT="" HSPACE=30 VSPACE=2 HEIGHT=1
WIDTH=1 ALIGN=LEFT></TD>
<TD></TD>
</TR>
<tr><td>
<center>
<I>Linux Gazette</I><img alt="[tm]" src="../gx/tm.gif">,
<A HREF="http://www.linuxgazette.com/">http://www.linuxgazette.com/</A><BR>
This page maintained by the Editor of <I>Linux Gazette</I>,
<A HREF="mailto: gazette@ssc.com"> gazette@ssc.com</A>
<P>
<H5>Copyright © 1996-2001 Specialized Systems Consultants, Inc.</H5>
</center>
</td></tr>
<TR>
<TD COLSPAN="3" WIDTH="100%" BGCOLOR="#000000"><IMG
SRC="../gx/hammel/cleardot.gif" ALT="" HSPACE=30 VSPACE=2 HEIGHT=1
WIDTH=1 ALIGN=LEFT></TD>
<TD></TD>
</TR>
</table>
<center>
<table width="100%" cellpadding=7><tr><td>
<H2><a NAME="mail"><IMG SRC="../gx/mailbox.gif" ALIGN=MIDDLE ALT=" ">
The Mailbag!</a> </H2>
Write the Gazette at <A HREF="mailto:gazette@ssc.com">gazette@ssc.com</A>
</td><td>
<H3>Contents:</H3>
<ul>
<li><a HREF="#help">Help Wanted -- Article Ideas</a>
<li><a HREF="#gaz">General Mail</a>
<li><a HREF="#gaz">Gazette Matters</a>
</ul>
</td></tr></table>
</center>
<!-- BEGIN wanted -->
<P> <hr> <P>
<!-- =================================================================== -->
<center><H3><font color="maroon">HELP WANTED --
Article Ideas</font></H3></center>
<P>
<P> Send tech-support questions, answers and article ideas to The Answer Gang
<<A HREF="mailto:tag@ssc.com">tag@ssc.com</A>>. Other mail (including
questions or comments about the <EM>Gazette</EM> itself) should go to
<<A HREF="mailto:gazette@ssc.com">gazette@ssc.com</A>>. All material
sent to either of these addresses will be considered for publication in the
next issue. <EM>Please send answers to the original querent too, so that s/he
can get the answer without waiting for the next issue.</EM>
<P> Unanswered questions might appear here. Questions with
answers--or answers only--appear in The Answer Gang, 2-Cent Tips, or here,
depending on their content. There is no guarantee that questions will
<em>ever</em> be answered, especially if not related to Linux.
<P> <STRONG>Before asking a question, please check the
<A HREF=../lg_faq.html><I>Linux Gazette</I> FAQ</A> to see if it has been
answered there.</STRONG>
<P> <HR> <P>
<!--====================================================================-->
<!-- BEGIN HELP WANTED -->
<UL>
<!-- index_text begins -->
<li><A HREF="#wanted/1"
><strong>Firewall access...</strong></a>
<li><A HREF="#wanted/2"
><strong>Mandrake Linux and Cable modems</strong></a>
<li><A HREF="#wanted/3"
><strong>Trying to build a crash course for myself...</strong></a>
<li><A HREF="#wanted/4"
><strong>reading tapes from another operating system</strong></a>
<li><A HREF="#wanted/5"
><strong>Memory mystery</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">Firewall access...</FONT></H3>
Thu, 11 Jan 2001 11:35:01 +1300
<BR>Gavin Lowe<a href="mailto:tag@ssc.com"> (glowe from csi.co.nz)</a>
<!-- sig -->
<P><STRONG>
Hi all,
</STRONG></P>
<P><STRONG>
I have a webserver on our internal LAN that I would like to make accessible
to the Internet. I have setup a firewall (RH6.2) using ipchains to allow
Internet access from my LAN through an ADSL connection.
</STRONG></P>
<P><STRONG>
The firewall has two NIC's, one for the external (Internet) connection and
one for the internal (LAN) connection. The adsl modem/router is setup to
NAT the static IP of the router to the IP of the internal server.
</STRONG></P>
<P><STRONG>
i.e.
</STRONG></P>
<pre><strong>-->static IP [ADSL modem/router] 1.2.3.4 ----> 1.2.3.5 [ Firewall ]
10.11.12.13 ---> LAN ( webserver=10.11.12.20)
NAT static IP:443 -> 10.11.12.20:443
</strong></pre>
<P><STRONG>
I know attempts to access the internal server via the static IP are getting
to my firewall and being accepted by the input rule, but I don't know what
I need to do from there on in to get the request to the LAN ?
</STRONG></P>
<P><STRONG>
On the firewall if I issue the following:
</STRONG></P>
<pre><strong>ipchains -C input -p tcp -i eth1 -s <internet address> 443 -d 10.11.12.20 443
</strong></pre>
<P><STRONG>
it is accepted.
</STRONG></P>
<P><STRONG>
If I issue the following:
</STRONG></P>
<pre><strong>ipchains -C forward -p tcp -i eth1 -s <internet address> 443 -d 10.11.12.20 443
</strong></pre>
<P><STRONG>
it is accepted.
</STRONG></P>
<P><STRONG>
If I issue the following:
</STRONG></P>
<pre><strong>ipchains -C output -p tcp -i eth1 -s <internet address> 443 -d 10.11.12.20 443
</strong></pre>
<P><STRONG>
it is accepted.
</STRONG></P>
<P><STRONG>
Do I need to bridge the two NIC's on the firewall ?
Do I just put in some routing entries ?
DO I have to do anything more to the forward and/or output rule to get the
packets through ?
</STRONG></P>
<P><STRONG>
As you've probably concluded by now I new to ipchains, although I have read
many of firewall/ipchains/bridge HOWTOs, so any help would be gratefully
accepted
</STRONG></P>
<P><STRONG>
Thanks
</STRONG></P>
<P><STRONG>
Gavin.
</STRONG></P>
<P>
This is a tiny sample <TT>-</TT> a number of other home/SOHO packet filtering and
defensive firewall questions are in the queue to be answered. But it would
be really nice to see an article for ipchains... or especially, the new
netfilters, since they are a bit different... which is aimed for readers
who are not already network administrators. <TT>--</TT> Heather.
</P>
<!-- sig -->
<!-- end 1 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<P> <A NAME="wanted/2"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/envelope.gif">
<FONT COLOR="navy">Mandrake Linux and Cable modems</FONT></H3>
Sun, 31 Dec 2000 19:49:03 -0000
<BR>Ian Garvie<a href="mailto:tag@ssc.com"> (ig011a0002 from blueyonder.co.uk)</a>
<!-- sig -->
<P><STRONG>
I am running a home peer to peer net work of 3 PS's running Win98 and
internet sharing to access the internet through my cable modem (Telewest
Blueyonder). On the PC that acts as the gateway to the internet, I have two
removable drives, one runs win98 (obviously...lol) and the other is running
Mandrake 7.1. What I would like to do is to Dump Win98 from the gateway PC
and go over to Linux completely, while the other two PC's will continue to
run win98. Now what I want to be able to do is have a similar set-up to my
win98 network, where the three PC's all have access the internet.
</STRONG></P>
<P><STRONG>
Have you a complete numpties' guide to doing this, bearing in mind that I
have little or no Linux experience. i.e. the definitive guide to getting
cable modems to run under Mandrake 7.1.
</STRONG></P>
<P><STRONG>
Many thanks
</STRONG></P>
<P><STRONG>
Ian Garvie
</STRONG></P>
<P>
There is a quiet little utility called Masqdialer which is supposed to be for
exactly this purpose. However, I've never used it, though I've been tempted
to give masqmailer a try ... that's a mailer that might be good for people
on dialups, because it's smart about whether you're online, and via what ISP.
</P>
<P>
An article on either of these, or the general case of a sometimes-disconnected
setup, would be a good read for newbies and old hands alike.
</P>
<!-- sig -->
<!-- end 2 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<P> <A NAME="wanted/3"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/envelope.gif">
<FONT COLOR="navy">Trying to build a crash course for myself...</FONT></H3>
Sat, 27 Jan 2001 20:06:50 -0600
<BR>Matt Cherwin<a href="mailto:tag@ssc.com"> (cherwinmr16 from uwwvax.uww.edu)</a>
<!-- sig -->
<P><STRONG>
Hi there. As you probably gathered from the subject header, I'm a fairly new
Linux user--I used it for a few months a while back with a RH 6.0 install,
but ended up back in MSFT land when I had trouble replacing my NIC. In any
event, I just installed Mandrake 7.2, and I've been doing pretty well getting
the system to do everything I need/want it to do over the last several days.
</STRONG></P>
<P><STRONG>
HOWEVER: I'm using it almost exclusively inside X/<A HREF="http://www.kde.org/">KDE</A>, and I'm well aware
that I'm really not learning anything about how to properly
setup/use/maintain a Linux system. So I've been browsing about the web, IRC
channels, newsgroups, etc., and reading pretty much any documentation that's
aimed at new users. The problem is that just reading everything doesn't teach
one all that much when it comes to actually trying to use the system.
</STRONG></P>
<P><STRONG>
What all this buildup is leading to is: what would you recommend as practical
projects to undertake as learning exercises for a fairly new user? At the
risk of sounding immodest, I'm quite comfortable and conversant with
computers and computing in general, hardware setup, programming, etc.--but
only in a MSFT world. I'm not terrifically afraid of breaking my
system--everything is well backed-up, and I've been working with Windows
products for long enough that the prospect of reformat/reinstall isn't even
vaguely daunting. I just don't know what it is I should be <TT>-trying-</TT> to do
such that succeeding in the endeavor would involve gaining understanding of
the system.
</STRONG></P>
<P><STRONG>
Sincerely,
Matt "sorry for the SPAM" Cherwin
</STRONG></P>
<P>
Better answers than "read back issues of the Gazette" will be published, if
you copy them to <A HREF="mailto:tag@ssc.com"
>tag@ssc.com</A>.
</P>
<!-- sig -->
<!-- end 3 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<P> <A NAME="wanted/4"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/envelope.gif">
<FONT COLOR="navy">reading tapes from another operating system</FONT></H3>
1 Jan 01 22:36:56 CST
<BR>Layton Davis<a href="mailto:tag@ssc.com"> (laytond from usa.net)</a>
<!-- sig -->
<P><STRONG>
Thanks for taking time to answer questions.
</STRONG></P>
<P><STRONG>
I have some tapes (1/4" cartrage <TT>-</TT> 120MB format) that I would like to make
copies of. Now, I know that they were made on an AS/400, But as I see it; data
is data <TT>-</TT> if I can figure out what format it is in.
</STRONG></P>
<P><STRONG>
The hardware is an AMD-K6/II 500 with an Adaptec AIC-7850 narrow SCSI
controler connected to the PCI bus. There are 3 devices connected to this SCSI
controler. 1 TANDBERG SLR1 150MB tape drive (device ID 6 <TT>/dev/st1</TT>). 1 TANDBERG
SLR2 525MB tape drive (device ID 0 <TT>/dev/st0</TT>) and 1 philips CDD 2600 (device ID
4 <TT>/dev/scd0</TT>) which is at the end of the cable with the termination jumper
installed.
</STRONG></P>
<P><STRONG>
The software is a heavily modified RedHat 5.0. The kernel version is 2.2.15
(with the needed network utility updates) gcc(egcs)2.95. With all the updates
I figured that the old mt command probably didn't support the current IOCTLS
on the st driver <TT>-</TT> so I deleted it and got the source code for mt-st v. 0.6
(the old one was 0.4)
</STRONG></P>
<P><STRONG>
At this point I can create tapes under linux and read them back reliably.
however, This is all working with default settings.
</STRONG></P>
<P><STRONG>
Now for the interesting part. when I try to read a tape created on my as/400
(the same drive that is now in my linux machine as st0) I get the complaint
st0: Incorrect block size.
the mt status command shows Tape Block Size = 512, Density code 0x11(525 tape)
Begining of tape and Write Protect.
</STRONG></P>
<P><STRONG>
If I try to change the block size <TT>-</TT> I first do a rewind(as per the tandberg
manual) then I do a setblk 32768 (does the same thing with setblk 512) and the
response is:
st0: Error with sense data: [valid=0] Info fld=0x0, Current st09:00 sense key
Illegal request
aditional sense indicates End-of-partition/medium detected.
When I follow the procedure on the tape I made under linux and use a block
size of 512 everything works fine. What am I missing?
PS although IBM provides no documentation their tape file listing program
seems to indicate that the block size might be 32768 bytes.
</STRONG></P>
<P><STRONG>
Layton
</STRONG></P>
<P>
We have a lot of good people, but not so many with AIX experience. If any
of you with experience in an IBM/Linux heterogenous environment ... or who
know about what tapes are <EM>really</EM> saying when they do this... have some
good hints for Layton, send them to <A HREF="mailto:tag@ssc.com"
>tag@ssc.com</A>.
</P>
<P><STRONG>
PS. A big thank-you to the answer guy for some of his answers a year or two
ago that have gotten me this far. Especially on the SCSI termination which I
should have remembered from my macintosh days (only 10 years ago).
</STRONG></P>
<P>
You're welcome, of course!
</P>
<P><STRONG>
PPS. I hope USA.net sends a plain text version of this since I am not at work
where I have an e-mail account that will let me specify what I want to send.
</STRONG></P>
<P>
It came through fine.
</P>
<!-- end 4 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<P> <A NAME="wanted/5"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/envelope.gif">
<FONT COLOR="navy">Memory mystery</FONT></H3>
Fri, 05 Jan 2001 13:05:24 -0600
<BR>Jan Jakubik<a href="mailto:tag@ssc.com"> (jakub008 from umn.edu)</a>
<!-- sig -->
<P><STRONG>
setup:
mainboard PC Chips M807, kernel 2.2.15 (Mandrake 7.1), memory 2 stick of
128MB PC100
</STRONG></P>
<P><STRONG>
If I put insert only one memory stick BIOS finds correctly 128MB but
Linux only 64MB. After addition append = "mem=128M" to lilo.conf Linux
finds 64MB again. If I insert 2 memory sticks BIOS finds correctly 128MB
but Linux only 15MB! After addition of append= "mem=256M" to lilo.conf
Linux finds 64MB. Any suggetion? BTW Win98 see always correct RAM size.
</STRONG></P>
<P><STRONG>
Thanks Jan Jakubik
</STRONG></P>
<P>
Someone with a good memory
<IMG SRC="../gx/dennis/smily.gif" ALT=":)"
height="24" width="20" align="middle"> can slip us a tip in the right direction
by mailing <A HREF="mailto:tag@ssc.com"
>tag@ssc.com</A>.
</P>
<!-- sig -->
<!-- end 5 -->
<a name="mailbag"></a>
<P> <hr> <P>
<!-- =================================================================== -->
<center><H3><font color="maroon">GENERAL MAIL</font></H3></center>
<P> <HR> <P>
<!--====================================================================-->
<!-- BEGIN GENERAL MAIL -->
<UL>
<!-- index_text begins -->
<li><A HREF="#mailbag/1"
><strong>The cardboard box.</strong></a>
<li><A HREF="#mailbag/2"
><strong>Happy New Year !!! - huh ?</strong></a>
<li><A HREF="#mailbag/3"
><strong>Hi</strong></a>
<li><A HREF="#mailbag/4"
><strong>RE: "What's a smoothwall?" from issue 61 TAG</strong></a>
<li><A HREF="#mailbag/5"
><strong>e-mail thread on 'su not working' in gazette</strong></a>
<li><A HREF="#mailbag/6"
><strong>Monitor goes blank</strong></a>
<li><A HREF="#mailbag/7"
><strong>Will Windows or Linux be "The Road Not Taken"?</strong></a>
<li><A HREF="#mailbag/8"
><strong>1000 thanks!</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">The cardboard box.</FONT></H3>
Sat, 27 Jan 2001 08:40:58 -0600
<BR>Nathan & Dolyn Walther<a href="mailto:tag@ssc.com"> (jwalther from prairie.lakes.com)</a>
<!-- sig -->
<P>
on 29 mar 2000 the question was asked who invented the cardboard box.
The answer is Robert Gair.
I found this information at
<A HREF="http://www.europen.be/basics/understand/und6_types.html"
>http://www.europen.be/basics/understand/und6_types.html</A>
</P>
<P>
I am doing research for a School speech on the inventer of the cardboard
box. (this is no joke)
Your website is great and I will visit often. I am glad I found you.
</P>
<P><STRONG><FONT COLOR="#000066"><EM>
[Heather] You're doubly lucky as well; one of the Gang decided to
answer it, and it was sufficiently amusing that we published it even
though it's off topic. If you end up with any questions about
a free computer operating system whose mascot is a cute penguin,
don't hesitate to ask.
</EM></FONT></STRONG></P>
<!-- sig -->
<!-- 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">Happy New Year !!! - huh ?</FONT></H3>
Fri, 26 Jan 2001 12:32:06 +0100
<BR>Wilf<a href="mailto:tag@ssc.com"> (wbr from free.fr)</a>
<P>
Heya Heather,
</P>
<P>
better late than ...
</P>
<P>
Happy New Year and all best wishes to you and all of Linux Gazette !
</P>
<P>
Yours linuxely,
</P>
<P>
Wilf (French/English => German translations)
</P>
<!-- end 2 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<P> <A NAME="mailbag/3"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/envelope.gif">
<FONT COLOR="navy">Hi</FONT></H3>
Wed, 24 Jan 2001 14:20:45 -0800
<BR><EM>anonymous</EM><a href="mailto:tag@ssc.com"></a>
<!-- sig -->
<P>
On Wed, Jan 24, 2001 at 10:47:23AM <TT>-0700</TT>, Spicer wrote:
</P>
<P><STRONG><BLOCKQuote>
I just ran across a link to one of your messages and was wondering... do I
just ask you a question?
</BLOCKQuote></STRONG></P>
<P>
If it's related to Linux technical support, yes. There are about ten
people in The Answer Gang, and if any of us feel qualified to respond,
we'll e-mail you back. Then, the question and answers will be considered
for publication in the next issue of Linux Gazette. The submission
address is <A HREF="mailto:tag@ssc.com"
>tag@ssc.com</A>.
</P>
<P>
We'd appreciate it if you'd peruse a few back issues of Linux Gazette
first to see if your question has already been answered. (The LG
<A HREF="http://www.linuxgazette.com/wgindex.html"
>search engine</A>
is useful for this.)
</P>
<P>
Also, if you have any Linux tips that might be helpful for other readers,
please send them in too. Both beginner and advanced tips are appreciated,
because we have a wide variety of readers.
</P>
<!-- sig -->
<!-- sig -->
<!-- end 3 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<P> <A NAME="mailbag/4"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/envelope.gif">
<FONT COLOR="navy">RE: "What's a smoothwall?" from issue 61 TAG</FONT></H3>
Tue, 02 Jan 2001 22:33:09 -0500
<BR>Brian Coyle<a href="mailto:tag@ssc.com"> (brianc from magicnet.net)</a>
<!-- sig -->
<P>
RE: <A HREF="http://www.linuxgazette.com/issue61/lg_answer61.html#tag/36"
>http://www.linuxgazette.com/issue61/lg_answer61.html#tag/36</A>
</P>
<P>
Mike Orr asked "What's a smoothwall?"
</P>
<P>
Smoothwall is a browser administered, Linux-based, open-source, ppp
firewall and router appliance. It's targeted at older 386 and 486
systems gathering dust in a closet.
</P>
<P>
See <A HREF="http://sourceforge.net/projects/smoothwall"
>http://sourceforge.net/projects/smoothwall</A>
<TT>-or-</TT> <A HREF="http://www.smoothwall.org"
>http://www.smoothwall.org</A>
</P>
<P>
The sourceforge page has links to the mailing lists and forums
where Jim Watkins' original question about diald on the smoothwall
has been discussed and answered many times...
</P>
<P>
BTW- Smoothwall would make a great subject for an upcoming
Linux Journal article!
<IMG SRC="../gx/dennis/smily.gif" ALT=":)"
height="24" width="20" align="middle">
</P>
<P>
"Take a look at one's desktop config. That'll give you an idea where
they are with Linux." <TT>-</TT> an unidentified O'Reilly author @ ALS 2000.
</P>
<!-- sig -->
<!-- end 4 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<P> <A NAME="mailbag/5"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/envelope.gif">
<FONT COLOR="navy">e-mail thread on 'su not working' in gazette</FONT></H3>
Mon, 15 Jan 2001 22:53:57 +0100 (CET)
<BR>Etienne Posthumus<a href="mailto:tag@ssc.com"> (ep from epoz.org)</a>
<!-- sig -->
<P>
Way back in time the editor wrote:
"Regarding the e-mails: they're still worth printing because they may help
somebody else."
from: <A HREF="http://www.linuxgazette.com/issue47/lg_mail47.html"
>http://www.linuxgazette.com/issue47/lg_mail47.html</A>
</P>
<P>
And by jove, they did. Thanks a bunch, it has lifted a weight from my
shoulders, I had the same problem.
</P>
<P>
Glad the archives ares still up.
</P>
<P>
Regards
</P>
<P>
Etienne Posthumus
</P>
<!-- sig -->
<!-- end 5 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<P> <A NAME="mailbag/6"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/envelope.gif">
<FONT COLOR="navy">Monitor goes blank</FONT></H3>
Wed, 03 Jan 2001 15:56:04 +0200
<BR>Marius Andreiana<a href="mailto:tag@ssc.com"> (mandreiana from rdsnet.ro)</a>
<!-- sig -->
<P>
Thanks for your help!
</P>
<P>
--
Marius Andreiana
</P>
<!-- sig -->
<!-- end 6 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<P> <A NAME="mailbag/7"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/envelope.gif">
<FONT COLOR="navy">Will Windows or Linux be "The Road Not Taken"?</FONT></H3>
Sun, 28 Jan 2001 00:33:33 -0500
<BR>Terrell Phillips<a href="mailto:tag@ssc.com"> (terphs from bellsouth.net)</a>
<!-- sig -->
<P>
The Answer Gang,
</P>
<P>
Hello! My name is Terrell Phillips and as a "newbie", I've been learning
Linux via KeyStone Learning Systems video training series.
</P>
<P>
I sincerely hope that my ongoing Linux training will not have been in vain
as I can find no postings for any entry-level workstation jobs here in
Atlanta for newbies. Even if I were to have attained my RHCE, the only
Linux jobs I've seen posted on the Internet require a working UNIX
background foremost.
</P>
<P>
Attending my local Atlanta Linux Enthusiasts user group meetings, it seems
that advanced users attending the meetings are not thrilled at the prospect
of helping newbies acquire initial work experience, but rather give every
impression that somehow Linux will blossom someday into the corporate world.
Apple Computer made the same mistakes early on by marketing their OS to new
users and user groups as the best choice for getting work done efficiently.
Later, Apple began boasting that their platform was the best and most rapid
developer for cross-platform apps. But there was just one little problem.
Apple didn't want anyone especially new users to know upfront. No
instructor-led training programs for software development were/are in place,
nor did Apple partners care to offer the same. And you could count the
non-graphics jobs using Apple Computers on one finger.
</P>
<P>
The point is, that unless the entire Linux community decides to truly help
their own, "newbies" will retreat back to using Microsoft for careers. A
mature forest of Linux trees lacking little new tree saplings growing all
around them won't be a forest for long.
</P>
<P>
It is a very smart move on the part of the various Windows user groups to
see to it that their "newbies" find entry work quickly.
</P>
<P>
Tonight, I have set my Linux notes printed off various websites along with
my training videos aside in favor of learning Visual Basic, MS Access 2000
and SQL. With some training and initiative on my part, I can find
entry-level work in a Windows world.
</P>
<P>
I wish I had better news.
</P>
<P>
Sincerely,
</P>
<P>
Terrell Phillips
</P>
<!-- sig -->
<!-- end 7 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<P> <A NAME="mailbag/8"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/envelope.gif">
<FONT COLOR="navy">1000 thanks!</FONT></H3>
Sun, 21 Jan 2001 07:04:41 -0800 (PST)
<BR>Uwe Dippel<a href="mailto:tag@ssc.com"> (udippel from yahoo.com)</a>
<!-- sig -->
<P>
Dear answerguy,
</P>
<P>
I am incredibly happy that I could save one of my Linux-installs with
the help of an answer you gave to one of those people before (retrieved
with a search-engine) on lost root-passwords!!
All the other stuff that I had found before didn't make it ('linux
single' always ended at the login-prompt!) and the rest said 'new
install'.
Now I have the task to find out, who had tempered with the machine
across the network (Internet), because I have been using this password
for ages, I'm a sysadministrator and have clearly never had too many
drinks since I had logged on successfully the last time! <TT>-</TT> The machine
is a server behind closed doors ...!!
</P>
<P>
Have a drink on me!
</P>
<P>
Uwe
</P>
<!-- sig -->
<!-- end 8 -->
<a name="gaz"></a>
<P> <hr> <P>
<!-- =================================================================== -->
<center><H3><font color="maroon">GAZETTE MATTERS</font></H3></center>
<P> <HR> <P>
<!--====================================================================-->
<!-- BEGIN GAZETTE MATTERS -->
<UL>
<!-- index_text begins -->
<li><A HREF="#gaz/1"
><strong>The Gazette</strong></a>
<li><A HREF="#gaz/2"
><strong>[hamren@sdu.se: "ls -lRat" does not work on FTP server]</strong></a>
<li><A HREF="#gaz/3"
><strong>Spammers harvesting Email addresses.</strong></a>
<li><A HREF="#gaz/4"
><strong>article - game presentation</strong></a>
<li><A HREF="#gaz/5"
><strong>LG</strong></a>
<li><A HREF="#gaz/6"
><strong>Security articles</strong></a>
<li><A HREF="#gaz/7"
><strong>Linux On Your Desktop @ Linux Gazette</strong></a>
<li><A HREF="#gaz/8"
><strong>Linux Gazette Logo</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">The Gazette</FONT></H3>
Fri, 01 Dec 2000 09:37:19 -0800
<BR>John Labovitz<a href="mailto:tag@ssc.com"> (johnl from meer.net)</a>
<P>
the gazette looks very nice <TT>--</TT> sort of a moderated discussion, i guess.
like a civilized slashdot, or an old letters to the editor section of a
magazine.
</P>
<P><CODE>
john
</CODE></P>
<!-- end 1 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<P> <A NAME="gaz/2"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/envelope.gif">
<FONT COLOR="navy">[hamren@sdu.se: "ls -lRat" does not work on FTP server]</FONT></H3>
Mon, 4 Dec 2000 08:56:08 -0800
<BR>gazette<a href="mailto:tag@ssc.com"> (gazette from ssc.com)</a>
<P><STRONG>
We seem to have received notes from more than one site about ftp
being strange...
</STRONG></P>
<P>
Ferg (gferg from sgi.com)
</P>
<P>
Hi -
</P>
<P>
I maintain the <A HREF="http://www.linuxdoc.org/">LDP</A> mirror(s) of the LG, and the last
couple of times I've run our 'mirror'based update
script, I received a number of errors, such as:
</P>
<blockquote><pre> Too many files to delete, not actually deleting (3626 > 3278)
Too many directories to delete, not actually deleting (398 > 358)
</pre></blockquote>
<P>
I'm pretty sure I know how to correct that in the mirror
config file. More troublesome are these (from my last run):
</P>
<blockquote><pre> Failure on 'RETR pub/lg/www_root/.glimpse-eye.jpg' command
Failed to get pub/lg/www_root/.glimpse-eye.jpg: 550
'pub/lg/www_root/.glimpse-eye.jpg': No such file or directory
Failed to get file 550 'pub/lg/www_root/.glimpse-eye.jpg': No such
file or directory
Failure on 'RETR pub/lg/www_root/404.html' command
Failed to get pub/lg/www_root/404.html: 550
'pub/lg/www_root/404.html':
No such file or directory
</pre></blockquote>
<P>
There are an enormous number of those errors.
</P>
<P>
Did anything change on the host site? Was there some massive
restructuring done to have caused this?
</P>
<P>
Here are my configuration parms:
</P>
<blockquote><pre> package=LG
site=ftp.ssc.com
comment=Linux Gazette
remote_dir=/pub/lg/www_root
local_dir=/public/html/LDP/LDP/LG
</pre></blockquote>
<P>
I hope you can help. Thanks in advance.
</P>
<P>
best regardsm
--
Greg Ferguson
</P>
<!-- end 2 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<P> <A NAME="gaz/3"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/envelope.gif">
<FONT COLOR="navy">Spammers harvesting Email addresses.</FONT></H3>
Tue, 5 Dec 2000 14:45:53 -0800
<BR>Ira Abramov<a href="mailto:tag@ssc.com"> (nospam-lgmirror-20000426 from ira.scso.com)</a>
<P><STRONG>
[Ira Abramov is one of LG's mirrors.]
I have been getting spam to an address I gave you as a contact for an LG
mirror I was running, yet it was posted to a webpage without my
approval, and I have been getting a lot of Spam through it lately.
</STRONG></P>
<P><STRONG>
please remove nospam-lgmirror-20000426 at.the.site ira.scso.com from the mirrors
page at <A HREF="http://www.linuxgazette.com/mirrors.html"
>http://www.linuxgazette.com/mirrors.html</A>, as well as from your
lists. the correct contact from now on is
webmaster-nospam-lgmirror-20001205 at.the.site linux.org.il and they won't
appreciate spam either. I sugest you somehow cloak the mail addresses on
that page, remove the mailto: links or use some other mechanisms, but do
not leave the current situation broken like this.
</STRONG></P>
<P><STRONG><FONT COLOR="#006633"><EM>
[Heather] I actually tweaked the above so neither would turn into a hotlink.
Normally they would.
</EM></FONT></STRONG></P>
<P>
I have removed the link as you requested. Change visible at 5pm (UTC-0800).
</P>
<P>
In general, it's our policy to publish the contact addresses of the mirrors
because (1) we need the information and this is where we store it, and (2)
readers need to be able to contact a mirror if there's a problem using
it--that's why it's called a <EM>contact</EM> address. As for spam, I get it
too--30% of the messages to <A HREF="mailto:gazette@ssc.com"
>gazette@ssc.com</A> are spam.
</P>
<P><STRONG>
[Ira]
ok, possible ideas. instead of a mailto: link, put the address plain,
maybe even add a space before and after the @ sign. that way one can
still cut and paste it for an individual contact but not harvest it
automaticly with a robot... there are ways.
</STRONG></P>
<P><STRONG>
for the more advanced ways there are simply CGIs. see the following
address (which spammers aren't smart enough to handle)
</STRONG></P>
<P><STRONG>
<A HREF="http://scso.com/cgi-bin/m"
>http://scso.com/cgi-bin/m</A><A HREF="mailto:gazettenospam@dhtssc.com"
>gazettenospam@dhtssc.com</A>
</STRONG></P>
<P><STRONG>
the CGI that does this little magic looks like this:
</STRONG></P>
<pre><strong>> cat /home/httpd/cgi-bin/m
#!/usr/bin/perl
$address=substr($ENV{'PATH_INFO'},1);
$address=~ s/nospam\@dht/\@/g;
print "Location: mailto:$address\n\n";
exit(0);
</strong></pre>
<P><STRONG>
4 lines of perl, and spammers never harvest those addresses (tested!)
</STRONG></P>
<P><STRONG>
where there's a will, there's a way... I love ssc for it's great
donation to the community, I just ask that you don't repay the kind
people mirroring you by exposing them to spam...
</STRONG></P>
<P>
[Mike]
The trouble is, that requires a CGI script, so it won't run on the mirrors,
and it certainly won't work on the CD-ROM version.
</P>
<P>
Is it time to make all e-mail addresses non-clickable? Your Editor is
undecided.
</P>
<P><STRONG><FONT COLOR="#006633"><EM>
[Heather]
You don't want to make it easier for spammers (who use scripts and have
delusions of time on their hands) to get ahold of you than the people
who would have a legitimate reason to reach you. I suppose we could
have various mirrorNN.LocnCode kinds of addresses at SSC, where we
could attempt to pre-filter a bit. (are you getting worse than 30 % spam?)
</EM></FONT></STRONG></P>
<P><STRONG><FONT COLOR="#006633"><EM>
That way you as mirror admin get
some possible defense, at least your actual address isn't exposed until
you reply, there is the backup that SSC learns about mirror problems
sometimes, and some people might actually feel we made it easier to
reach <EM>somebody</EM> in case of errors.
</EM></FONT></STRONG></P>
<P><STRONG><FONT COLOR="#000066"><EM>
[Don Marti]
Hiding email addresses from spammers is letting spammers define the
terms of our conversation. I'm against it and don't participate in any
list that does this form of "cowardice by proxy" for me.
</EM></FONT></STRONG></P>
<P><STRONG><FONT COLOR="#006633"><EM>
[Dan Wilder]
Though in less absolute terms than Don, I'll add my voice to those
not favoring cowardice by proxy.
</EM></FONT></STRONG></P>
<P><STRONG><FONT COLOR="#006633"><EM>
Let 'em try and spam me. I'll either <TT>/dev/null</TT> their mail, or
hunt 'em down with a rusty bottle opener!
</EM></FONT></STRONG></P>
<!-- end 3 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<P> <A NAME="gaz/4"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/envelope.gif">
<FONT COLOR="navy">article - game presentation</FONT></H3>
Wed, 06 Dec 2000 21:27:02 -0500
<BR>marius<a href="mailto:tag@ssc.com"> (marius from webdevgroup.com)</a>
<P><STRONG>
It was all D&D back then, and Traveller.
</STRONG></P>
<P>
Never heard of these... I've started on ZX spectrum, with Dizzy being my
favourite(s)
</P>
<P><STRONG>
NEVER HEARD OF?? I gotta publish this. The generational difference
between games. Do you mind if I publish this letter?
</STRONG></P>
<P>
If you publish that I never heard of D&D and Traveller ? no, I don't
mind.
Maybe you write about these too. (are they still available ?)
</P>
<P><STRONG>
I don't do gaming, so I don't know. Cc'ing a gaming friend.
</STRONG></P>
<P><STRONG>
Ogre, this guy is one of my correspondents for the Linux Gazette ezine.
He's too young to have heard of Dungeons & Dragons and Traveller, the
only role-playing games I ever had the least bit involvement with. Do
they still exist or are they long gone?
</STRONG></P>
<P><STRONG><FONT COLOR="#006633"><EM>
[Heather] There are an avid batch of Traveller players in my area
although I don't game with them, and D&D recently released a new edition.
Not only are they available, but you can find traveller players on IRC,
a lot of support software for D&D gamemasters... uh, well for some other
platform anyway. My traveller playing friend is famous for Penguin
Artillery.
</EM></FONT></STRONG></P>
<!-- end 4 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<P> <A NAME="gaz/5"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/envelope.gif">
<FONT COLOR="navy">LG</FONT></H3>
Tue, 19 Dec 2000 11:22:22 +1100
<BR>BanDiDo<a href="mailto:tag@ssc.com"> (bandido from drinkordie.com)</a>
<P>
After dropping you a mail about issue 60, I thought I was pen a few
lines on my venture in Linux and just why LG has made the transition
so painless.
</P>
<P>
It is redundant of me to mention just how fantastic LG is? I can hear
you all muttering now
about stating the bleeding obvious. For me, the most curious thing is
to note the range of
interest, from the rank Linux newbie to input from individuals who
are quite clearly among
some of the knowledgeable to be found, and all receive the same warm
response (unless they
happen to be some poor Windoze momo with a Winmodem
<IMG SRC="../gx/dennis/smily.gif" ALT=":)"
height="24" width="20" align="middle">
</P>
<P>
Anyway, I thought I would share my recent <EM>real</EM> plunge into Linux
and perhaps lend some cheer
to all the neophytes out their coming to terms with Windoze
withdrawal and faced with the murky
morass of Linux. I should mention I am not new to computers, I have
used a plethora of Uncle
Bill's offerings, and in all fairness, I am possibly the only person
in the world to never had
had any problems at all, I can count my 'Blue Screens of Death' on
one hand. Suffice to say, I
have no problems with MS, as a bit of a closet gamer, it serves it
purpose.
</P>
<P>
Linux on the other hand, was always something that I presumed was not
for me, I had once
upon a time installed some ancient <A HREF="http://www.redhat.com/">Red Hat</A>, and a mouldy <A HREF="http://www.slackware.org/">Slackware</A>,
both of which suffered a
format quite promptly. It just all seemed too complicated and of
limited appeal to where I was
at the time. I tend to spend a lot of time on the Net now, so about 2
weeks ago I decided to
have another look. I need to make it very clear, the sum total of my
Linux knowledge prior to
biting the bullet and trying it again, was the ability to type 'ls
<TT>-</TT> <TT>-la</TT>, uptime, rm and a few
other sundry commands that everyone anywhere normally picks up over
the years, in other words
it was all virgin territory. With that in mind, thus begins my
journey.
</P>
<P>
A friend of mine mailed me Mandrake 7.2 (along with Storm, <A HREF="http://linux.corel.com/">Corel</A>,
Slackware 7.0, Redhat 6.0
and a bunch of other distros. I had once installed a prehistoric
Mandrake, so my victim was
preordained. My system is fairly standard, a PIII 850, 192mb ram,
Voodoo 3 3000, SB Live,
Adaptec 2940 + 2944, network card etc. I chose custom install, and
prepared myself for what I
was sure would be many hours of getting things to actually work
post-install. To say I was
impressed was an understatement, Mandrake install was easier and
clearer than anything Bill
Gates ever threw at me, and HW detection? every thing was 100% up and
running without any
intervention on my part. I am a console sort of person, and X is just
something I will use
when I am forced to, but once I booted up, a quick startx a boy was I
shocked, X 4.0 and <A HREF="http://www.kde.org/">KDE</A>2
all running with full 3d acceleration. I fired up Tux Racer as I was
checking things out, and
it bodes well, Linux has come a long way since I toyed with it. I
have a feeling either MS
will be forced to meet Linux head on one of these days, MS Linux
maybe? Since from what I see,
once the Linux community manages to implement anything akin to
DirectX and thus gain wide
support from the gaming industry, the Redmond Wunderkind will be on a
fast track to oblivion
if they don't have some contingency plans.
</P>
<P>
Ooops back to nub of it all. Ok so X was working, so I quickly exited
the session, to get as
far away from Netscape as I could. Like most people 'new' to Linux, I
was a little overwhelmed
at the sheer vastness of it all, and headed as fast as I could for
the most speedy route to
begin the learning process. Thank god for man pages, info pages,
HOWTOs and the like, I was
soon starting to feel like this was one mountain I could conquer.
</P>
<P>
Next up PPP, or was it? No, silly me used fdisk to partition
initially and I made Linux one
single partition didn't I. tsk tsk, well I wanted to learn more,
so.... REINSTALL, this time
with Mandrake's own tool, which in a word is awesome for the newer
users, result:
</P>
<blockquote><pre>Filesystem 1k-blocks Used Available Use% Mounted on
/dev/hda5 489992 55987 408705 12% /
/dev/hda8 241116 1481 227187 1% /boot
/dev/hda10 2514172 150644 2235816 6% /home
/dev/hda1 7158976 5588472 1570504 78% /mnt/win_c
/dev/hdb1 6285144 1685608 4599536 27% /mnt/win_c2
/dev/hde1 8233232 12 8233220 0% /mnt/win_c3
/dev/hdg1 2498940 12 2498928 0% /mnt/win_c4
/dev/hdh1 2498936 418500 2080436 17% /mnt/win_c5
/dev/hda7 241116 170 228498 0% /tmp
/dev/hda11 7937796 3655320 3879248 49% /usr
/dev/hda9 489992 65081 399611 14% /var
/proc/bus/usb 489992 489992 0 100% /proc/bus/usb
</pre></blockquote>
<P>
I am happy with that (the Win drives are games + multiple backups),
so then on to PPP, unlike
many who have sad tales to tell, my small local ISP has a handy dandy
tar.gz file to set
things up, unpack, run, few quetions like pass, modem and such, type
<TT>./ppp-on</TT> and viola! Nice
some ISP's give a damn about their users... fantastic.
</P>
<P>
After a day or two, I had devoured every HOTWO, I made life easier
for myself too with:
</P>
<blockquote><pre>alias ht='cd /usr/share/doc/HOWTO/HTML/en;lynx index.html'
</pre></blockquote>
<P>
My little superhighway to fast help and my 1st ever alias, oh did I
mention Netscape sucks and
Lynx is sublime
<IMG SRC="../gx/dennis/smily.gif" ALT=":)"
height="24" width="20" align="middle">
</P>
<P>
Now I was wanting some access to Linux information, time to search
the Web. I suppose I was
lucky within a minute of two, I came across the Linux documentation
Project and thus Linux
Gazette. After perusing the online issue, I knew where it need to be,
so FTP Mirror here we
come and some time later all 60 issues on my HDD.
</P>
<P>
Ever since for the last week or so, I have been wading through the
plethora of tips (Isn't
Heather just the living end eh?
<IMG SRC="../gx/dennis/smily.gif" ALT=":)"
height="24" width="20" align="middle"> I have managed to come to terms
with Linux file structure,
I have personalised bash and my environment to my liking, I have
edited most of my .rc files,
for example custom hdparm parameters, along with removing things like
telnet and ensuring ssh
is up and running. Almost everything I have learnt, is due to Linux
Gazette, it never ceases
to amaze me how much their is to learn. Only a few days ago, a friend
of mine who has been
using Linux for four years came over, to help me with a wine.conf
issue, and I ended up
teaching him a few things and minor commands he had never used nor
knew existed. It just goes
to show how extensive Linux is.
</P>
<P>
I suppose the point of my taking the time to pen a few words, is to
reassure those new to
Linux that much of the rubbish that gets bandied about that Linux is
"hard" is in practice
misguided. Certainly some distros are not as user friendly as say
Mandrake or Red Hat to
install, and presume a certain working knowledge, but any Linux once
up and running, provided
you are have a passion for computers and an enquiring mind is most
certainly not rocket
science, in other words, if you are content to click a mouse, and
care nothing for what might
live beneath the hood, then perhaps you deserve nothing more than
Windoze.
</P>
<P>
I fit the profile of a normal advanced Windoze user, I can edit
registry crap, trouble shoot
.dll problems and all that jazz, but I certainly cannot write one
line of code, thus I am sure
that many newer LG readers wil relate to my experiences as a new
Linux user. Sure I have had
to stop and run for a man page at times, and been totally stumped at
times, for example
getting Wine to work (which I use for one prog only) made me tear my
hair out, on the other
hand VMware was painless. At the end of the day, it is only by
overcoming problems that you
learn, and the sudden "ZAP" of revelation once you master some
problem makes it all
worthwhile, Linux certainly lights my fire, a tinkerers delight, and
I am sure that in the
future, when I look back on my 7 years of Windoze, and compare it to
the years of Linux to
come (or whatever LInux becomes) I will wonder why I never made the
change sooner. One thing I
know for certain, I will never be tempted to buy a Winmodem
<IMG SRC="../gx/dennis/smily.gif" ALT=":)"
height="24" width="20" align="middle">
</P>
<!-- end 5 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<P> <A NAME="gaz/6"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/envelope.gif">
<FONT COLOR="navy">Security articles</FONT></H3>
Thu, 28 Dec 2000 09:54:31 -0800
<BR><EM>anonymous</EM><a href="mailto:tag@ssc.com"></a>
<P>
[A guest commentary from our News Bytes editor. I asked him to
summarize the controversy on <A HREF="http://www.slashdot.org/">Slashdot</A> regarding SSH/SSL vulnerabilities,
and to assess whether we need an article on it. <TT>-Mike]</TT>
</P>
<P>
Date: Thu, 28 Dec 2000 16:55:56 +0000
Subject: Re: Late News Bytes additions
From: Michael Conry <A HREF="mailto:michael.conry@softhome.net"
>michael.conry@softhome.net</A>
</P>
<P>
Hi Mike,
please find attached the ( <A HREF="../issue61/lg_bytes61.html"
>../issue61/lg_bytes61.html</A> )
news bytes 61 file.
I did go through the SSH issues, and summarised them briefly. I kind of
skirted around the SSL because it seemed less clear cut, and very much an
issue of implementation and protecting users from themselves. Most
discussion in the links focussed on SSH in any case.
</P>
<P>
I would recommend, not an article on Holes in SSH, but rather an article on
security in general. Lots of contradictory messages on Slashdot indicate
that people still don't really understand what is going on or how exactly to
administer a public key system.
</P>
<P>
The issues are not new, but are inherent in public key systems.
pgp,gnupg is the same (how can i be sure the key i think is yours is really
yours?). The biggest issue is probably users (lusers) ignoring warning
messages.
</P>
<P>
The new dsniff software is probably worth commenting on also. I included a
link in my short discussion, but have not studied it. What could be very
interesting would be for an article to highlight how to use tools like this
to strengthen your system/network by scrutinising it and probing it. Focus
tends to be on how these tools allow malicious people to break other
people's systems.
</P>
<!-- end 6 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<P> <A NAME="gaz/7"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/envelope.gif">
<FONT COLOR="navy">Linux On Your Desktop @ Linux Gazette</FONT></H3>
Sat, 6 Jan 2001 20:17:58 +0200 (IST)
<BR>Yotam Medini<a href="mailto:tag@ssc.com"> (ymedini from actcom.co.il)</a>
<P><STRONG>
"Linux On Your Desktop" is an important article.
But Linux-Gazette should `edit out' several English mistakes.
Syntax and Spelling. This does not help Linux
get a professional image.
</STRONG></P>
<P>
[Mike]
Linux Gazette is not a professional publication--it's a volunteer
publication. We do not have the resources to proofread and reword
every article. That would take 10-20 hours per issue. Would you
like to volunteer to proofread a few articles each issue? If you're
willing, it would certainly be welcome.
</P>
<!-- end 7 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<P> <A NAME="gaz/8"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/envelope.gif">
<FONT COLOR="navy">Linux Gazette Logo</FONT></H3>
Sat, 20 Jan 2001 01:40:44 -0500
<BR>Richard Storey<a href="mailto:tag@ssc.com"> (richards from primerafinancialgroup.com)</a>
<P><STRONG>
It would be so nice if I could come to your index.html page and not have to
load a 40k logo. Wouldn't an 8k do nicely?
<IMG SRC="../gx/dennis/smily.gif" ALT=":-)"
height="24" width="20" align="middle">
</STRONG></P>
<P>
[Mike]
We'll consider this for the next version of the Gazette, but most
requests have been asking for more graphics, not less. 8 K would get us
a logo that's just a bit bigger than the sponsorship logos are now.
Since our graphic designer put a lot of time into getting the shape and
color of the logo just right, I don't want to ask him to somehow manage
to keep the same look while squeezing the file down to a fifth of its
size. It is a jpg, which is the most efficient graphics format there
is.
</P>
<P>
In any case, doesn't it just load once in your browser and then the
cached version is used thereafter?
</P>
<P>
Thanks for your feedback.
</P>
<P><STRONG>
[Richard Storey]
Not knocking the great design of the logo, but aside from slow loading
it creates its motif doesn't match that of the rest of the site. As far
as graphics go, look at Yahoo. They've managed to keep their site just
ahead of text level, which I use most of the time anyway. There's a lot
to be said for a site which is designed cleanly, neatly, for fast load
times, but is rich because of its content rather than *eye-candy*.
</STRONG></P>
<P><STRONG><FONT COLOR="#000066"><EM>
[Heather]
You're quite welcome to visit us in lynx, the world's fastest browser,
since it wastes no time whatsoever on eyecandy ... unless you absolutely
insist on working at it. My normal surfing mode is lynx-ssl with zgv
wired into my MIME support, so I can see an occasional photo if I feel
like it.
</EM></FONT></STRONG></P>
<P><STRONG><FONT COLOR="#000066"><EM>
We make a serious effort to be lynx clean around here anyway, since that's
how we produce the text version of the download.
</EM></FONT></STRONG></P>
<!-- end 8 -->
<H4 ALIGN="center">"Linux Gazette...<I>making Linux just a little more fun!</I>"</H4>
<HR>
<center>
<table cellpadding=7><tr><td>
<IMG SRC="../gx/bytes.gif" border=1 ALT="News Bytes">
</td><td>
<H3>Contents:</H3>
<ul>
<li><a HREF="#distro">Distro News</A>
<li><a HREF="#general">News in General</a>
<li><a HREF="#software">Software Announcements</a>
</ul>
</td></tr></table>
<STRONG>Selected and formatted by <A HREF="mailto:michael.conry@softhome.net">Michael Conry</A></STRONG>
</center>
<P> Submitters, send your News Bytes items in
<FONT SIZE="+2"><STRONG>PLAIN TEXT</STRONG></FONT>
format. Other formats may be rejected without reading. You have been
warned! A one- or two-paragraph summary plus URL gets you a better
announcement than an entire press release.
<P> <hr> <P>
<!-- =================================================================== -->
<center><IMG ALT=" " SRC="misc/cover82.jpg" WIDTH=200 HEIGHT=268></center>
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<font color="green">
February 2001 <I>Linux Journal</I>
</font>
</H3>
<P>
The February issue of <A HREF="http://www.linuxjournal.com/"><I>Linux
Journal</I></A> is on newsstands now.
This issue focuses on Kernel Internals. Click
<A HREF="http://www.linuxjournal.com/lj-issues/issue82/index.html">here</A>
to view the table of contents, or
<A HREF="http://www.linuxjournal.com/subscribe/index.html">here</A>
to subscribe.
<FONT COLOR="green">All articles through December 1999 are available for
public reading at
<A HREF="http://www.linuxjournal.com/lj-issues/mags.html">http://www.linuxjournal.com/lj-issues/mags.html</A></FONT>.
Recent articles are available on-line for subscribers only at
<A HREF="http://interactive.linuxjournal.com">
http://interactive.linuxjournal.com/</A>.
<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">Caldera
</FONT>
</H3>
<P> OREM, UT-January 16, 2001-
<a href="http://www.calderasystems.com">
Caldera Systems, Inc.</a>, today
announced the release of Caldera Volution, a
Linux management solution that reduces the cost of implementing and managing
Linux systems. With Caldera Volution, administrators can use policies and
profiles to manage thousands of Linux systems, without having to
individually manage or touch each. Volution is distribution-neutral -
designed to work with all major Linux distributions, and provides broad
management functions.
Volution will significantly benefit anyone needing to manage multiple
Linux servers and desktops.
<p>Caldera Volution is a Web-based remote management solution that allows
administrators to manage Linux systems from anywhere at anytime. It is
directory-based utilizing the inherent strengths of LDAP directories.
Directories provide two major benefits: They give administrators a place to
not only store information, but a logical and intuitive way of managing
network resources. Volution supports three major LDAP directories, Novell's
eDirectory, OpenLDAP and iPlanet. OpenLDAP and eDirectory ship with the
product.
Volution will ship in nine
additional languages including Chinese - simplified and traditional, French,
Italian, German, Spanish, Japanese, Korean and Portuguese.
The suggested list price for Caldera Volution is US $2995. Volution
ships with the Volution software, Novell eDirectory and OpenLDAP, a secure
Web server and licenses to manage up to 10 nodes. Additional nodes are sold
separately.
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">SuSE
</FONT>
</H3>
<P> Nuremberg, Germany - January 12, 2001 - Today,
<a href="http://www.suse.com/">SuSE Linux</a> presented the
second generation of e-mail solutions for commerce, public administration,
workgroups and all others needing professional e-mail communication.
<P> The SuSE eMail Server II is an Open Source solution, based on reliable
components consistent with Internet standards such as SMTP, IMAP4, POP3,
and LDAP. In accordance with the IMAP standard (Internet Message Access
Protocol), the SuSE eMail Server administrates mail on a central server.
The server supports all common e-mail
clients, including Microsoft Outlook, Outlook Express, Netscape
Messenger, and Eudora or via the included Web-Mail Client IMP.
<P> The SuSE eMail Server II can be obtained from SuSE or from software
retailers from the beginning of February onwards. The suggested retail
price for one server is 255 Euro and includes a manual, 60 days
installation support and the server backup solution Arkeia from Knox
Software.
<HR NOSHADE WIDTH="20%" >
<P> Nuremberg, Germany - January 19, 2001 -
<a href="http://www.suse.com/">SuSE Linux</a>
and
<a href="http://www.lotus.com/">Lotus</a>
announced
the SuSE Linux Groupware Server. The new server combines the comprehensive
functionality of the Domino Messaging and Web Application Server with the
cost advantages and the reliability of the Linux operating system. This
provides a basis for improved business processing and customer relations.
<P> With more than 50 million users worldwide, the product-integrated
Domino Server delivers efficient tools for groupware, workflow,
messaging and scheduling. Domino also provides a flexible basis
for fast web and messaging application development.
<P> SuSE Linux Groupware Server can be purchased from SuSE or software
retailers, beginning February 2001. The suggested retail price is
Euro 2.555,00 + VAT.
<P> For further information on SuSE Linux Groupware Server, please
visit SuSE's Groupware web page
<a href="http://www.suse.de/en/produkte/solutions/groupware_server/">
Groupware web page</a>.
<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">Upcoming conferences and events
</FONT>
</H3>
<!-- *** BEGIN events table [this line needed by Linux Gazette events.py *** -->
<table cellpadding=5 border=0 width=100%>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>Linux Expo, Amsterdam</b><BR><td valign=top>
January 23-24, 2001<BR>Amsterdam, Netherlands
<BR><A HREF="http://www.linuxexpoamsterdam.com/EN/home/"
target="_blank">
http://www.linuxexpoamsterdam.com/EN/home/</A><BR>
</td></tr>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>6th USENIX Conference on Object-Oriented Technologies and Systems
</b><BR><td valign=top>January 29 - February 2, 2001<BR>San Antonio, TX
<BR><A HREF="http://www.usenix.org/events/coots01/" target="_blank">
http://www.usenix.org/events/coots01</A><BR>
</td></tr>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>LinuxWorld Conference & Expo</b><BR>
<td valign=top>January 29 - February 2, 2001<BR>New York, NY<BR>
<A HREF="http://www.linuxworldexpo.com" target=_blank>
</A><BR><A HREF="http://www.linuxworldexpo.com" target="_blank">
http://www.linuxworldexpo.com</A><BR>
</td></tr>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>Linux Expo, Paris</b><BR>
<td valign=top>January 31 - February 2, 2001<BR>Paris, France<BR>
<A HREF="http://www.linuxexpoparis.com/EN/home/" target=_blank>
http://www.linuxexpoparis.com/EN/home</A><BR>
</td></tr>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>Open Source and Free Software Developers' Meeting</b>
<BR><td valign=top>February 3-4, 2001<BR>Brussels, Belgium<BR>
<A HREF="http://www.osdem.org/" target=_blank>
http://www.osdem.org</A><BR>
</td></tr>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>Internet World Canada/ISPCON</b><BR><td valign=top>February 5-8, 2001
<BR>Toronto, Canada<BR>
<A HREF="http://www.internetworld.com/" target=_blank>
http://www.internetworld.com</A><BR>
</td></tr>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>The O'Reilly Peer-to-Peer Conference </b><BR><td valign=top>
February 14-16, 2001<BR>San Francisco, CA<BR>
<A HREF="http://conferences.oreilly.com/p2p/index.html" target=_blank>
http://conferences.oreilly.com/p2p/index.html</A><BR>
</td></tr>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>Internet Appliance Workshop</b><BR><td valign=top>
February 20-21, 2001<BR>San Jose, CA<BR>
<A HREF="http://netapplianceconf.com" target=_blank>
http://netapplianceconf.com</A><BR>
</td></tr>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>Bang!inux</b><BR><td valign=top>
March 5-7, 2001<BR>Bangalor, India<BR>
<A HREF="http://www.Banglinux.com/" target=_blank>
http://www.Banglinux.com/</A><BR>
</td></tr>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>LINUX Business Expo</b><BR><td valign=top>
March 7-9, 2001<BR>Sydney, Australia<BR>
<A HREF="http://www.linuxexpo.com.au/" target=_blank>
http://www.linuxexpo.com.au</A><BR>
</td></tr>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>Computerfest</b><BR><td valign=top>
March 10-11, 2001<BR>Dayton, OH<BR>
<A HREF="http://www.computerfest.com/" target=_blank>
http://www.computerfest.com</A><BR>
</td></tr>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>Internet World Spring</b><BR><td valign=top>March 12-16, 2001<BR>
Los Angeles, CA<BR><A HREF="http://www.internetworld.com/"
target=_blank>http://www.internetworld.com</A><BR>
</td></tr>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>COMDEX Canada West</b><BR><td valign=top>March 13-15, 2001<BR>
Vancouver, B.C.<BR>
<A HREF="http://www.key3media.com/comdex/canadawest2001/" target=_blank> http://www.key3media.com/comdex/canadawest2001</A><BR>
</td></tr>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>Game Developers Conference</b><BR>
<td valign=top>March 20-24, 2001<BR>San Jose, CA<BR>
<A HREF="http://www.gdconf.com/" target=_blank>
http://www.gdconf.com</A><BR>
</td></tr>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>CeBit</b><BR><td valign=top>March 22-28, 2001<BR>
Hannover, Germany<BR><A HREF="http://www.cebit.de/" target=_blank>
http://www.cebit.de</A><BR>
</td></tr>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>3rd USENIX Symposium on Internet Technologies and Systems</b>
<BR><td valign=top>March 26-28, 2001<BR>San Francisco, CA<BR>
<A HREF="http://www.usenix.org/events/usits01/" target=_blank>
http://www.usenix.org/events/usits01</A><BR>
</td></tr>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>LinuxBazaar</b>
<BR><td valign=top>March 28-29, 2001<BR>Prague, Czech Republic<BR>
<A HREF="http://www.linuxbazaar.cz" target=_blank>
http://www.linuxbazaar.cz</A><BR>
</td></tr>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>Colorado Linux Info Quest Conference & Expo/CLIQ 2001</b><br>
<BR><td valign=top>March 29-30, 2001<BR>Denver, CO<BR>
<A HREF="http://thecliq.org/" target="_blank">
http://thecliq.org</A><BR>
</td></tr>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>Association of C/C++ Users (ACCU)</b>
<BR><td valign=top>March 29-31, 2001<BR>Oxford, England<BR>
<A HREF="http://www.accuconf.com/" target="_blank">
http://www.accuconf.com/</A><BR>
</td></tr>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>LINUX Business Expo</b><BR>
<td valign=top>April 2-5, 2001<BR>Chicago, IL<BR>
<A HREF="http://www.linuxbusinessexpo.com/" target=_blank>
http://www.linuxbusinessexpo.com</A><BR>
</td></tr>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>Linux Expo, Madrid</b><BR>
<td valign=top>April 4-5, 2001<BR>Madrid, Spain<BR>
<A HREF="http://www.linuxexpomadrid.com/EN/home/" target=_blank>
http://www.linuxexpomadrid.com/EN/home</A><BR>
</td></tr>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>Linux Expo Road Show</b><BR>
<td valign=top>April 23-27, 2001<BR>Various Locations<BR>
<A HREF="http://www.linux-expo.com/" target=_blank>
http://www.linux-expo.com</A><BR>
</td></tr>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>Linux for Industrial Applications</b><br>3rd Braunschweiger
Linux-Tage<BR>
<td valign=top>May 4-6, 2001<BR>Braunschweig, Germany<BR>
<A HREF="http://braunschweiger.linuxtage.de/industrie/" target=_blank>
http://braunschweiger.linuxtage.de/industrie</A><BR>
</td></tr>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>Linux@Work Europe 2001</b><BR>
<td valign=top>May 8 - June 15, 2001<BR>Various Locations<BR>
<A HREF="http://www.ltt.de/linux_at_work.2001/" target=_blank>
http://www.ltt.de/linux_at_work.2001</A><BR>
</td></tr>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>Linux Expo, Sao Paulo</b><BR>
<td valign=top>May 9-10, 2001<BR>Sao Paulo, Brazil<BR>
<A HREF="http://www.linux-expo.com" target=_blank>
http://www.linux-expo.com</A><BR>
</td></tr>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>SANS 2001</b><BR><td valign=top>May 13-20, 2001<BR>
Baltimore, MD<BR>
<A HREF="http://www.sans.org/SANS2001.htm" target=_blank>
http://www.sans.org/SANS2001.htm</A><BR>
</td></tr>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>7th Annual Applied Computing Conference</b><BR>
<td valign=top>May 14-17, 2001<BR>Santa Clara, CA<BR>
<A HREF="http://www.annatechnology.com/annatech/HomeConf2.asp"
target=_blank>
http://www.annatechnology.com/annatech/HomeConf2.asp</A><BR>
</td></tr>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>Linux Expo, China</b><BR>
<td valign=top>May 15-18, 2001<BR>Shanghai, China<BR>
<A HREF="http://www.linux-expo.com/" target=_blank>
http://www.linux-expo.com</A><BR>
</td></tr>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>SITI International Information Technologies Week</b><br>
OpenWorld Expo 2001<BR>
<td valign=top>May 22-25, 2001<BR>Montreal, Canada<BR>
<A HREF="http://www.mediapublik.com/en/" target=_blank>
http://www.mediapublik.com/en/</A><BR>
</td></tr>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>Strictly e-Business Solutions Expo</b><BR>
<td valign=top>May 23-24, 2001<BR>Minneapolis, MN<BR>
<A HREF="http://www.strictlyebusinessexpo.com/" target=_blank>
http://www.strictlyebusinessexpo.com</A><BR>
</td></tr>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>Linux Expo, Milan</b><BR>
<td valign=top>June 6-7, 2001<BR>Milan, Italy<BR>
<A HREF="http://www.linux-expo.com" target=_blank>
http://www.linux-expo.com</A><BR>
</td></tr>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>USENIX Annual Technical Conference</b><BR>
<td valign=top>June 25-30, 2001<BR>Boston, MA<BR>
<A HREF="http://www.usenix.org/events/usenix01/" target=_blank>
http://www.usenix.org/events/usenix01</A><BR>
</td></tr>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>PC Expo</b><BR>
<td valign=top>June 26-29, 2001<BR>New York, NY<BR>
<A HREF="http://www.pcexpo.com/" target=_blank>www.pcexpo.com</A><BR>
</td></tr>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>Internet World Summer</b><BR><td valign=top>July 10-12, 2001<BR>
Chicago, IL<BR>
<A HREF="http://www.internetworld.com/" target=_blank>
http://www.internetworld.com</A><BR>
</td></tr>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>O'Reilly Open Source Convention</b><BR>
<td valign=top>July 23-26, 2001<BR>San Diego, CA<BR>
<A HREF="http://conferences.oreilly.com/" target=_blank>
http://conferences.oreilly.com</A><BR>
</td></tr>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>10th USENIX Security Symposium</b><BR>
<td valign=top>August 13-17, 2001<BR>Washington, D.C.<BR>
<A HREF="http://www.usenix.org/events/sec01/" target=_blank>
http://www.usenix.org/events/sec01/</A><BR>
</td></tr>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>HunTEC Technology Expo & Conference</b><br>Hosted by Hunstville IEEE<BR>
<td valign=top>August 17-18, 2001<BR>Huntsville, AL<BR>
URL unkown at present<br>
</td></tr>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>Computerfest</b><BR>
<td valign=top>August 25-26, 2001<BR>Dayton, OH<BR>
<A HREF="http://www.computerfest.com/" target=_blank>
http://www.computerfest.com</A><BR>
</td></tr>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>LinuxWorld Conference & Expo</b><BR>
<td valign=top>August 27-30, 2001<BR>San Francisco, CA<BR>
<A HREF="http://www.linuxworldexpo.com/" target=_blank>
</A><BR><A HREF="http://www.linuxworldexpo.com" target="_blank">
http://www.linuxworldexpo.com</A><BR>
</td></tr>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>Linux Lunacy<br>Co-Produced by <i>Linux
Journal</i> and Geek Cruises</b><BR>
<td valign=top>October 21-28, 2001<BR>Eastern Caribbean<BR>
<A HREF="http://www.geekcruises.com/" target=_blank>
http://www.geekcruises.com</A><BR>
</td></tr>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>LinuxWorld Conference & Expo</b><BR>
<td valign=top>October 30 - November 1, 2001<BR>Frankfurt, Germany<BR>
<A HREF="http://www.linuxworldexpo.de/linuxworldexpo/index.html"
target=_blank>
http://www.linuxworldexpo.de/linuxworldexpo/index.html</A><BR>
</td></tr>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>5th Annual Linux Showcase & Conference</b><BR>
<td valign=top>November 6-10, 2001<BR>Oakland, CA<BR>
<A HREF="http://www.linuxshowcase.org/" target=_blank>
http://www.linuxshowcase.org/</A><BR>
</td></tr>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>Strictly e-Business Solutions Expo</b><BR>
<td valign=top>November 7-8, 2001<BR>Houston, TX<BR>
<A HREF="http://www.strictlyebusinessexpo.com/" target=_blank>
http://www.strictlyebusinessexpo.com</A><BR>
</td></tr>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>LINUX Business Expo</b><BR>Co-located with COMDEX<br>
<td valign=top>November 12-16, 2001<BR>Las Vegas, NV<BR>
<A HREF="http://www.linuxbusinessexpo.com" target=_blank>
http://www.linuxbusinessexpo.com</A><BR>
</td></tr>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>15th Systems Administration Conference/LISA 2001</b><BR>
<td valign=top>December 2-7, 2001<BR>San Diego, CA<BR>
<A HREF="http://www.usenix.org/events/lisa2001/" target=_blank>
http://www.usenix.org/events/lisa2001</A><BR>
</td></tr>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
</table>
<!-- *** END events table [this line needed by Linux Gazette events.py *** -->
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">Linux Journal Competition
</FONT>
</H3>
<P>
Come up with cover ideas for fun and prizes! The LJ crew's brains are growing
fatigued after six years of coming up with ideas to put on the cover
of Linux Journal, so they'd like to expand the thinking pool by
soliciting cover ideas from LJ readers. They need cover ideas for
the following issues and editorial foci:
<ul>
<li>
Issue 84, April--Internet/Intranet
<li>
Issue 85, May--Linux Training and Certification
<li>
Issue 86, June--Internationalization and Emerging Markets
</ul>
Please submit <em>printable</em> cover concepts in text to Khris Goldberg
<A HREF="mailto:khris@ssc.com">khris@ssc.com</a>.
If your idea is selected you will be awarded
a lifetime subscription to Linux Journal as well as a
super swell Linux Journal jacket, manufactured by Land's End.
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">Linux4Chemistry
</FONT>
</H3>
<a href="http://zeus.polsl.gliwice.pl/~nikodem/linux4chemistry.html">
Linux4Chemistry</a> claims to be the most up to date Linux software list (over
220 links) including the fields of: NMR, molecular modelling,
visualization, graphics, molecular and quantum mechanics, dynamics, kinetics
calculations and simulations, other computational (bio)chemistry software,
drug discovery software and some tools for genetics too.
<P>
<a href="http://zeus.polsl.gliwice.pl/~nikodem/me.html">
Nikodem Kuznik</a>, the creator of the site, says that the goal of this
web-site is to provide the most up-to-date links to chemical
software running on Linux. As the field is still under an intensive
development, the web-site will also be continuously under construction and
you may even find some not-up-to-date URLs there for this same reason. In
that case the author will be very glad of your feedback.
Nikodem says that you are
very welcome to send your comments, new URLs and so on.
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">International Support for Linux Job Site
</FONT>
</H3>
<P> <a href="http://www.mojolin.com">Mojolin</a>
has added international support to its
full featured online Job/Resume database. Job listings and resumes can
now be entered with full location specifics. This new ability is
complemented by a feature that allows an individual to search by
countries, and by states and provinces in the United States and Canada.
In addition, links have been provided to BabelFish for translation of
the site into five different languages: German, French, Italian, Spanish
and Portuguese. Other features include a nightly email agent which
informs job seekers of the latest opportunities, and the ability for
Webmasters to include Mojolin's job listings on their own sites.
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">LinuxIT acquires 01linux Solutions
</FONT>
</H3>
<P>
<a href="http://www.linuxit.com/">LinuxIT</a>,
a European Linux Solution Provider, has announced that
it has signed an agreement to acquire the business interests of 01Linux
Solutions Ltd, a UK-based Linux Support and Consulting company.
<p>LinuxIT has a Linux portal that includes directories for software,
hardware, documentation, job postings and user forums, offering services
for Linux users and professionals.
<P> This acquisition strengthens LinuxIT's position as one of the leading
Vendor-neutral solution providers in Europe. 01Linux has marketed itself
extensively as a solutions and services provider and has acquired a
reputation for quality offerings based around excellent technical
expertise.
<P> Peter Dawes, Managing Director of LinuxIT commented,
"The integration of 01Linux into LinuxIT will further add to our Support
and Professional Services offerings. We are now offering Total Linux
support for all types of customers ranging from one server through to
corporates with hundreds of mission critical systems. Combined with our
bespoke development, porting of applications to Linux and our
educational offerings, this means that LinuxIT is in a unique position
to service the growing demand for Linux and Open Source know-how."
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">Books, Books, and More Books
</FONT>
</H3>
First, <a href="http://www.aw.com/">AW Books</a>
have a couple of titles they asked us to highlight to you:
<P> Writing GNOME Applications<br>
by John R. Sheets<br>
ISBN: 0-201-65791-0
<P>
<a href="http://cseng.aw.com/book/0,3828,0201657910,00.html">
Writing GNOME Applications</a>
will help Linux programmers learn the basics
of GNOME and understand how to write real-world applications using this
important programming environment. Focusing on the essentials, this book
guides you through GNOME's fundamental elements and explains how and why
these elements function as they do. Rather than serving as an exhaustive
reference, the book offers detailed discussion on the most important
function calls, demonstrating how to put them to work in application
development.
This book should
appear soon under the OpenBook licence. Keep an eye on the
<a href="http://openbooks.sourceforge.net/">OpenBooks website</a> for
updates on this and other titles.
<P> PostgreSQL: Introduction and Concepts<br>
by Bruce Momjian <br>
ISBN: 0-201-70331-9
<P>
<a href="http://cseng.aw.com/book/0,3828,0201703319,00.html">
PostgreSQL: Introduction and Concepts</a>,
written by a founding member of
the PostgreSQL Global Development Team, provides a much-needed tutorial and
real-world guide to understanding and working with this complex yet
essential system.
The book is
also available on-line from the
<a href="http://www.postgresql.org/">PostgreSQL</a> website, at this
<a href="http://www.postgresql.org/docs/awbook.html">location</a>.
<HR NOSHADE WIDTH="20%" >
<P>
<a href="http://www.manning.com/">Manning Books</a> have brought a new
title:
<a href="http://www.manning.com/cross/">
Data Munging with Perl</a> to our attention. They say:
"The transformation of data from one format to
another, colloquially 'munging', is one of the most common programming
tasks. The new Manning book, Data Munging with Perl, examines this
important process in detail and shows how well suited Perl is for
these tasks. The book is aimed at programmers using any
programming language who carry out data munging as part of their
daily routine. Programmers who are more experienced in Perl may
learn a number of new Perl techniques to make their jobs easier."
<P> For a closer look at Data Munging with Perl, Manning offers
components of the book online: the table of contents, two sample
chapters, the index and source code can be viewed at
<a href="http://www.manning.com/cross/">www.manning.com/cross/</a>.
As an added perk, the publisher
runs an Author Online discussion forum for discussions between
readers and the author, Dave Cross.
<p>
The book can be bought now, in PDF format at a discount to the paper
version which will soon be for sale.
Printed Edition - Softbound, 304 pages, $36.95
Ebook Edition - PDF format, 2 MB, $13.50
<HR NOSHADE WIDTH="20%" >
Finally,
<a href="http://www.cmpbooks.com/">CMP Books</a> have brought out a new
title on programming for KDE 2.0
<P> Programming KDE 2.0<br>
By Lotzi Blni<br>
ISBN: 1-929629-13-3, Price: US$39.95
Trade Paper with CD-ROM, 265 pp.
<P> CMP say that
this book aims to explain all aspects of developing applications to run on
the K Desktop Environment (KDE). It describes KDE development from the ground
up, starting with fundamentals of event-driven programming and
object/component-oriented systems. It progresses through design and
management of GUI widgets and dialogs, and ends with the details of font and
text controls and picture display. The author shows how to use the
Applications Programming Interface (API), manage multitasking applications
and build embedded applications using object/component models and the new
Kannosa shared library techniques.
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">ZF Linux Devices
</FONT>
</H3>
<P>
<a href="http://www.zfmicro.com/">
ZF Linux Devices</a>
has just created what they like to call the "littlest PC", the MachZ.
The MachZ fits on an inch square
chip, yet is a complete computer, loaded with Linux.
More than 60 companies are designing products around the Mach
Z, from medical devices and farm equipment to home appliances and
vending machines.
<P> Applications for the MachZ PC-on-a-chip include:
<ul>
<li> Wireless Networking Hubs
<li> Internet/Web Connectivity
<li> Positioning Systems
</ul>
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">Linux Links
</FONT>
</H3>
If you are looking for info on the new Kernel 2.4.0, you could take a look
at the
<a href="http://www.lwn.net/2001/0111/">editorial</a>
on <a href="http://www.lwn.net/">Linux Weekly News</a>
<p> With recent comments on this web-page on the subject of security, it would
probably be worthwhile for anyone whose interest has been piqued to peruse
the
<a href="http://www.linuxsecurity.com/docs/colsfaq.html">
Linux Security FAQ</a> (as pointed to by /.)
<p>
<a href="http://www.showmelinux.com">ShowMeLinux's</a>
January Issue Now Available with a mix of features, news and support.
<p>
<a href="http://www.thedukeofurl.org/">
The Duke of URL </a> have a couple of items that may be of interest to you:
<ul>
<li><a href="http://www.thedukeofurl.org/reviews/misc/linuxguide7">
Linux Buyer's Guide #7</a>
The guide covers 3 systems and a list of peripherals (by popular demand)
that work best with Linux (highlight for many may be the new ATI Radeon).
Other sections include the month in review,
as well as a little overview of what Linux has in store for the future.
<li>There is a WinLinux 2000
<a href="http://www.thedukeofurl.org/reviews/misc/winlinux2k">
review</a>
at The Duke of URL, examining the merits of a distribution which manages to
sit on top of Windows 9x (no repartition, no reboot!, or so I'm told).
<li>With the new release of kernel 2.4, there is an
<a href="http://www.thedukeofurl.org/reviews/misc/kernel2224">
overview</a>
covering everything from how to compile the kernel (a
mini-howto is included!), to benchmarks between Linux 2.4, Linux 2.2,
and Windows 2000 SP1, as well as an overview of all the new changes in
the latest and greatest version of Linux, 2.4.0. Worth a look if you are
considering taking the plunge and upgrading.
</ul>
<p>Finally, <a href="http://slashdot.org/">Slashdot </a> have an
<a href="http://slashdot.org/articles/01/01/10/1947202.shtml">
article</a> where you can read how Steve Ballmer says Linux is the
top threat to MS.
<a name="software"></a>
<P> <hr> <P>
<!-- =================================================================== -->
<center><H3><font color="green">Software Announcements</font></H3></center>
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">Linux Server Pages Product for Xbase
</FONT>
</H3>
<P> January 8, 2001 SAN LEANDRO, CA,
<a href="http://www.plugsys.com/">
PlugSys International</a> today announced
its new Max Server Pages (MSP) product. This gives Xbase developers a
reliable, economical way to migrate to Linux and perform server-side
scripting. Using classic Xbase commands and functions, developers can
access data stored in DBF files or ODBC databases and blend the
results with HTML and Javascript.
Max Server Pages development focuses on creation of HTML templates with
embedded Xbase control structures, expressions, commands and functions.
MSP Professional also allows developers to precompile source code
for even faster loading libraries.
The final phase of beta test is in progress. Beta testers are encouraged to
<a href="http://www.plugsys.com/beta">apply</a>.
The company is particularly interested
in Xbase developers with some web development experience and access to a web
server machine running Red Hat 6.2.
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">Try Linux Online with Runaware
</FONT>
</H3>
<P> Oakland, CA (January 10, 2000) -
<a href="http://www.runaware.com">Runaware</a>, the world's first Evaluation
Service Provider for software vendors and consumers, today announced a
partnership with SlashTCO, a U.K.-based open source services provider, to
promote Linux awareness through online testing and supplementary resources.
<p>
Runaware will enable software purchasers to test
Linux products through the web browser without downloads or installation.
Support materials such as reviews and explanatory articles provided by
SlashTCO will enhance the evaluation process.
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">WordWalla Enters Linux Partnership
</FONT>
</H3>
<P> FREMONT, Calif. (January 17, 2001)
<a href="http://www.wordwalla.com/">
WordWalla, Inc.</a>, a leading global
language software provider, has joined three key industry organizations to
participate in the development and understanding of new, emerging
technologies and markets the
<a href="http://www.embedded-linux.org/">
Embedded Linux Consortium</a>,
<a href="http://www.lisa.org/">
LISA</a> and the
<a href="http://www.unicode.org/">
Unicode Consortium</a>
<P> As members of these three leading organizations, WordWalla will help
contribute to the latest developments in Linux applications and Unicode
standards as it relates to the use and proliferation of new font
technologies, and will support and evangelize globalization initiatives.
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">VMware Release GSX Server
</FONT>
</H3>
<P> PALO ALTO, Calif., January 23, 2001 -
<a href="http://www.vmware.com/">
VMware, Inc.</a> today announced that it
has concluded its GSX Server beta program with more than 300 companies
worldwide participating. The company also announced that the product
is available for sale today at
<a href="http://www.vmware.com/">www.vmware.com</a>
<P> Based on VMware's patent pending MultipleWorlds technology, GSX Server gives
information technology (IT) organizations mainframe-class control on Intel
based servers. The software helps IT professionals leverage resources in
responding to the growing demand for new applications and services by
cutting down on the number of servers required, taking the pain out of
staging and testing server applications and automating server installation
and management.
<P> VMware GSX Server for Linux systems is priced at $2,499 for a single license
purchase and is available today via electronic distribution directly from
VMware. Premium support at the Silver, Gold and Platinum levels is available
on a per incident basis or via subscription. Packaged versions of GSX Server
will be available from VMware and from selected resellers and distributors
within imminently.
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">Internet Cafe Management Software
</FONT>
</H3>
<a href="http://ispd.eburg.com/">
ISP Daemon</a>,
or ISPd, addresses two issues for ISP's. As a product, it offers a
solution for user maintenance and billing. Currently ISPd features:
<ul>
<li>Authentication can be based on native UNIX password files, PAM (and
consequently NIS or even NT), or entirely in SQL. SQL based authentication
should scale well, allowing authentication to be fast, even with large
numbers of users.
<li> Radius authentication through ISPd. Currently, Cistron radiusd 1.6.4
is being used, but open source means that any radius server could be
quickly patched to use ISPd.
<li> Full control of customer information is provided by a simple, web
based interface.
<li> Command line tools for some functions, such as password maintenance,
are available.
<li> Billing can be run as a cron job. ISPd was designed to require as
little maintenance as possible.
<li> ISPd listens on both a UNIX domain socket and a TCP socket. Services
need not run on the same machine as ISPd to take advantage of its
authentication scheme.
</ul>
More information at the
<a href="http://ispd.eburg.com/">ISPd website</a>
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">OTG Announces DiskXtender for Linux and Support for Red Hat
</FONT>
</H3>
<P> BETHESDA, MD, January 3, 2001 -
<a href="http://www.otg.com/">OTG Software</a>,
a software
developer of online storage, data access and email management solutions,
today announced DiskXtender for Linux, new storage software that
supports the Red Hat Linux platform. This new product aims to enable
true heterogeneous and centralized storage
management. OTG is now further extending its expertise in Windows 2000/NT
storage systems to Linux, building on its recent announcement of DiskXtender
for UNIX.
<!-- *** BEGIN copyright *** -->
<P> <hr> <P>
<H5 ALIGN=center>
Copyright © 2000, Michael Conry and
the Editors of <A HREF="mailto:gazette@ssc.com"><I>Linux Gazette</I></A>.<BR>
Copying license <A HREF="../copying.html">http://www.linuxgazette.com/copying.html</A><BR>
Published in Issue 62 of <i>Linux Gazette</i>, February 2001</H5>
<!-- *** END copyright *** -->
<H4 ALIGN="center">
"Linux Gazette...<I>making Linux just a little more fun!</I>"
</H4>
<P> <hr> <P>
<!-- ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -->
<center>
<H1><A NAME="answer">
<img src="../gx/dennis/qbubble.gif" alt="(?)"
border="0" align="middle">
<font color="#B03060">The Answer Gang</font>
<img src="../gx/dennis/bbubble.gif" alt="(!)"
border="0" align="middle">
</A></H1>
<BR>
<H4>By Jim Dennis, Ben Okopnik, Dan Wilder, Breen Mullins, Mitchell Bruntel,
the Editors of Linux Gazette...
and You!
<br>Send questions (or interesting answers) to
<a href="mailto:tag@ssc.com">tag@ssc.com</a>
</H4>
</center>
<p><hr><p>
<!-- endcut ======================================================= -->
<H3>Contents:</H3>
<dl>
<dt><a href="#tag/greeting"
><strong>¶: Greetings From Heather Stern</strong></A></dl>
<DL>
<!-- index_text begins -->
<dt><A HREF="tag/1.html"
><img src="../gx/dennis/qbub.gif" height="28" width="50"
alt="(?)" border="0"
><strong>Renaming Ethernet Devices</strong></a>
<dt><A HREF="tag/2.html"
><img src="../gx/dennis/qbub.gif" height="28" width="50"
alt="(?)" border="0"
></a>RE Mandrake UNIX : --or--
<dd><A HREF="tag/2.html"
><strong>Mandrake has what's needed...</strong></a>
<br>to get rid of it.
<dt><A HREF="tag/3.html"
><img src="../gx/dennis/qbub.gif" height="28" width="50"
alt="(?)" border="0"
><strong>about Unix command rm</strong></a>
<dt><A HREF="tag/4.html"
><img src="../gx/dennis/qbub.gif" height="28" width="50"
alt="(?)" border="0"
></a>Comments to "A rather unique query (I hope)" --or--
<dd><A HREF="tag/4.html"
><strong><TT>/usr/src/linux</TT> symlink considered harmful</strong></a>
<dt><A HREF="tag/5.html"
><img src="../gx/dennis/qbub.gif" height="28" width="50"
alt="(?)" border="0"
></a>ess1869 sound card modual --or--
<dd><A HREF="tag/5.html"
><strong>The Creed of The Querent</strong></a>
<dt><A HREF="tag/6.html"
><img src="../gx/dennis/qbub.gif" height="28" width="50"
alt="(?)" border="0"
><strong>IP Forwarding</strong></a>
<dt><A HREF="tag/7.html"
><img src="../gx/dennis/qbub.gif" height="28" width="50"
alt="(?)" border="0"
><strong>ess1869 sound card modual</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="(¶) " border="0"
>Greetings from Heather Stern</H3>
<!-- begin hgreeting -->
<p>
This month I improved my little scripts so that it does about half the
work (the part that becomes the mailbag and Tips) <em>much</em> more
efficiently. I even managed to get things back to a level where I can
split the messages back out as seperate files again.
</p><p>
Outside of this stuff, one thing on my mind is, how well supported will
those new slim Apple notebooks be under Linux for the PPC platform?
I hear they finally have a decent battery life, plus, they've got a
really nice tough shell. I need that. I'm pretty hard on my stuff.
Just ask my Magio.
</p><p>
Oh yeah. Can't do that, I haven't finished making it use Speak Freely
yet. Sigh. I'm sure it's not supposed to be very hard, but there's
no decent checklist out there. So, it can't talk to you quite yet!
</p><p>
Earlier this week, Mike asked if I could have my script format the
Gazette Matters section, since I was doing 2 of the 3 other parts,
and he's got an armful of articles. We've both had to defer some
of the items until next issue ... Next month is going to be pretty tasty!
Meanwhile we hope you enjoy what we've got in here for you.
</p><p>
So, since I didn't have time for a cool editorial (and I missed LWE)
here's the backside scoop on how we select where messages end up:
</p>
<blockquote>
Here it is.
</blockquote>
<blockquote>
There's one letter where the guy gives a long explanation about his
install. I'm not sure if it belongs in the Mailbag or Tips.
</blockquote>
<p>
[got your attachment on this one]
</p><p>
If he's telling the rest of us his successful answer, but it's really long
(eg more than 2 lynx pages) I put in in TAG with a bangbubble. That's what
happened to our SuSE/NFS fellow.
</p><p>
If shorter ans esp. if he has some good insightful item that's enough to
absorb there, it goes in Tips. Oh yeah, I don't count script length too
much against people.
</p><p>
If he has a gnarly question I think the Gang would have trouble with too,
it goes in Wanted. "I'd like to see an article on..." also go in wanted,
inclu. if that's my own thought sponsored by some question that came through.
This is a massively reduced subset of the unanswered souls - I just like to
give the readership a flavor of some of the stuff we have overflowing.
</p><p>
If it's a kudo thanking us 'cuz some past issue helped him nail it, it goes
in mailbag... possibly edited, but not usually. (mild kudos with lots of
tip or answer go in tips or tag respectively.)
</p><p>
Otherwise it goes back in the float, and maybe Jim and I will give a shot at
answering it, or maybe he loses the TAG lotto. We don't promise to answer
everything. Once in a long while Jim gets bitten by the answer bug and
decides to clean out a bunch of backlog, but I don't see that happening
for at least a couple of months at least.
</p><p>
To be perfectly honest, Jim's better at keeping the lost ones together, and
I'm better at keeping track of which month they came in, but that's a natural
side effect of the way we each work on the messages
<IMG SRC="../gx/dennis/smily.gif" ALT=":)"
height="24" width="20" align="middle">
</p><p>
I don't know how Ben and the rest keep track of what they like to answer,
but as long as it all flows by my desk, everything works great.
</p><p>
[ and if I don't have enough time for it, that's gonna be The Blurb. :D ]
</p><p>
... and of course, Dear Reader, you know that that's exactly what happened.
That fellow's message is long, but he just decided that he couldn't give us
enough kudos if we didn't see the voyage of discovery he travelled with
<em>LG</em>. So it stayed right where it is, and this is The Blurb.
</p><p>
Not Linux of the month for me:
</p><p>
On our local radio show two mornings ago, the PG&E building is right across
the street from the station, and the hosts notice that it's "lit like a
christmas tree" - every floor, completely on. Except the lobby area, where
people would normally come in to pay bills. So... PG&E in California
can't pay their bills to buy us enough power, but they haven't ordered
their cleaning crew to change its habits about leaving all the lights on
in their buildings.
</p><p>
But Jim says Walgreens is a lot easier on the eyes now that they only use
a third of the lighting. Just remember -- computers don't eat much!
</p><p>
Enjoy.
</p>
<!-- end hgreeting -->
<p><hr><p>
<!-- begin 1 -->
<H3 align="left"><img src="../gx/dennis/qbubble.gif"
height="50" width="60" alt="(?) " border="0"
>Renaming Ethernet Devices</H3>
<p><strong>From Matthew Keller
</strong></p>
<p align="right"><strong>Answered By Mike Orr, Heather Stern
<br></strong></p>
<!-- sig -->
<P><STRONG>
Ok, so this is probably a trivial problem, but it's one I've had for
years. If I have 3 Ethernet devices (eth0,eth1,eth2), I want to be able
to tell Linux WHICH one I want to be which. If they are of different
kinds (or at least have different drivers) I can fool Linux by
specifying them in <TT>/etc/conf.modules</TT> (or modules.conf for RH7 users) and
defining which card gets which name. How do I do that if they're all the
same kind?!
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Mike]
I've tried to do that before too, but I haven't found a way. It seems
like a glaring ommission. I just
use different brands of cards, and then I can decide which order to insmod
the modules. Obviously, each card is attached to a different network,
and it's important to know card X is eth0 so you can configure the right
card for the right network.
</BLOCKQUOTE>
<BLOCKQUOTE>
The worst part is, if the first card is removed or fizzles out, the second
card becomes eth0, and your startup script will initialize the wrong
card, and presto, no network.
</BLOCKQUOTE>
<BLOCKQUOTE>
You may find they get detected in order of hardware address. PCI slots
have fixed addresses, so you may be able to move the cards among
different slots and get the order you want.
</BLOCKQUOTE>
<BLOCKQUOTE>
(If they were ISA cards like the 3C509, you would the DOS program <TT>3C5X9.EXE</TT> to
set the hardware address on each card. Other ISA cards you would set jumpers
on, if you're lucky enough to find documentation about which setting is which!
Dunno about plug n play, but on the 3C509 you can turn off plug n play using
the same program. You could also use LILO's "ether=" parameter to specify
which order you want the hardware addresses probed.)
</BLOCKQUOTE>
<P><STRONG><IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
What brings this to mind now, is that I have a new server, fresh
install, one on-motherboard Intel NIC and 2 PCI NIC's. Linux picked the
first PCI NIC to be Eth0, the second to be Eth1 and the on-board to be
Eth2, and I'm just demented enough to argue with it.
<IMG SRC="../gx/dennis/smily.gif" ALT=":)"
height="24" width="20" align="middle">
</STRONG></P>
<P><STRONG>
Matthew Keller
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Heather]
Well, I don't know, but in the linux source tree under
/Documentation/networking/net-modules.txt several common options are
described for explicitly setting options such as I/O address rather than
allowing autoprobing. It also says that for many cards, explicitly stating
is better for them than autoprobing anyway. But the important part is it
directly addresses part of the question... namely, how one would use two
cards with the same driver, because at least under the 8390 family (cheap
old cards, such as ne2000):
</BLOCKQUOTE>
<BLOCKQUOTE><pre>
In many cases it is highly preferred that insmod:ing is done
ONLY with defining an explicit address for the card, AND BY
NOT USING AUTO-PROBING!
...
8390 based Network Modules (Paul Gortmaker, Nov 12, 1995)
--------------------------
(Includes: smc-ultra, ne, wd, 3c503, hp, hp-plus, e2100 and ac3200)
The 8390 series of network drivers now support multiple card systems without
reloading the same module multiple times (memory efficient!) This is done by
specifying multiple comma separated values, such as:
insmod 3c503.o io=0x280,0x300,0x330,0x350 xcvr=0,1,0,1
The above would have the one module controlling four 3c503 cards, with card 2
and 4 using external transceivers. The "insmod" manual describes the usage
of comma separated value lists.
It is *STRONGLY RECOMMENDED* that you supply "io=" instead of autoprobing.
If an "io=" argument is not supplied, then the ISA drivers will complain
about autoprobing being not recommended, and begrudgingly autoprobe for
a *SINGLE CARD ONLY* -- if you want to use multiple cards you *have* to
supply an "io=0xNNN,0xQQQ,..." argument.
</pre></BLOCKQUOTE>
<BLOCKQUOTE>
Therefore, I'm not certain, but it would be worth the experiment:
io=0xXXX,0xYYY and irq=X,Y parameters (where these X's and Y's represent
the values for each card respectively) should allow you to make it honor
two cards explicitly rather than autoprobing them. If you succeed at that,
try swapping card "X" and card "Y" in the settings and see if they switch
places in the ethN ring. And in any case you should be able to get the
right values for these from your logs, because you said you have the system
detecting all 3 cards.
</BLOCKQUOTE>
<BLOCKQUOTE>If they were really ISA cards with plug-n-play and/or jumpers,
the isapnptools would be the next place I'd look.
</BLOCKQUOTE>
<BLOCKQUOTE>I took the lazy route; I have a tulip and a 3com card in my
dual ethernet system. With it that way, I can even tell the system to not
even automatically bring these interfaces up, and explicitly bind the given
drivers into the pre-up and post-down, at least on debian. In SuSE I have
it mentioned in modules.conf:
</BLOCKQUOTE>
<BLOCKQUOTE><pre>
alias eth0 3c59x
alias eth1 tulip
</pre></BLOCKQUOTE>
<!-- sig -->
<!-- sig -->
<!-- end 1 -->
<p><hr><p>
<!-- begin 2 -->
<H3 align="left"><img src="../gx/dennis/bbubble.gif"
height="50" width="60" alt="(!) " border="0"
>Mandrake has what's needed...</H3>
<H4 ALIGN="center">to get rid of it.</H4>
<p>From Antony, in issue 61 (<a href="../issue61/lg_answer61.html#tag/12">TAG q.#12</a>)</p>
<p align="right"><strong>Answer By Mitchell Bruntel
<br></strong></p>
<!-- ::
Mandrake has what's needed...
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
to get rid of it.
:: -->
<!-- sig -->
<strong>
<font color="navy">
<P>
Hi, I recently attempted to install Linux Mandrake, but I did it wrong and
know Windows has been deleted and linux won't
work, all I want to do is Delete linux so I can reinstall Windows and be
happy again, I cant even install windows at the moment
because linux is taking up too much room on the hard drive. Mum is heaps
annoyed as she can't use the computer so can you
please help me quickly? Thanks
</P></font>
</strong>
<strong>
<BLOCKQUOTE><IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Mike]
Hmm, three questions about uninstalling Linux in two
days. I wonder what that means.
</BLOCKQUOTE>
<BLOCKQUOTE>
Doesn't the Windows setup program allow you to repartition your disk as
part of the process? If not, that's a big omission.
</BLOCKQUOTE>
<BLOCKQUOTE>
Anybody here use Mandrake? Does it come with a boot floppy that can be
used as a rescue disk? If so, you should be able to boot
from the floppy, press Alt-F2 to go to the second virtual console, run
"cfdisk" or "fdisk" and delete the Linux partitions (or all the
partitions), and then reboot and run the Windows install program.
</BLOCKQUOTE>
</strong>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Mitchell]
Yes:
<br>3 emails, 2 answers, not too bad I guess...
</BLOCKQUOTE>
<blockquote>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Mike]
No, I mean the fact that three separate people wrote in to TAG all in
the same month wanting help uninstalling Linux, and does that mean
there's been a sudden upsurge in uninstalls on a larger scale?
</BLOCKQUOTE>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Don]
No, it just means that Linux installs are now easier than Microsoft
Windows installs.
</BLOCKQUOTE>
<BLOCKQUOTE>
When Linux installs were harder, anyone who was knowledgeable enough to
get Linux installed could also install Microsoft Windows over it and
blow it away (including fdisk if necessary)
</BLOCKQUOTE>
<BLOCKQUOTE>
Now that Linux installs are really easy, you don't need to know anything
about MBRs and partitions to get Linux going on your machine. But
you do need to know something about PCs at the sub-OS level to get
other OSs installed.
</BLOCKQUOTE>
<BLOCKQUOTE>
(I'm just waiting for somebody to write a Linux installer as a macro
virus...Linux fora will be swamped with angry users of other, insecure
OSs and we'll all have to take off to Costa Rica for a year or so.)
</BLOCKQUOTE>
<BLOCKQUOTE><em>
Any technology distinguishable from magic is insufficiently advanced.
</em></BLOCKQUOTE>
</blockquote>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Mitchell]
Windows, depending on the version either does reinstall(upgrade) or will
format your disk (new pc version only)
mandrake DOES have a boot floppy that is bootable and you CAN do fdisk!
</BLOCKQUOTE>
<BLOCKQUOTE>
Mitch Bruntel
</BLOCKQUOTE>
<BLOCKQUOTE>
(16 yrs of desktop and UNIX experience...later)
</BLOCKQUOTE>
<!-- end 2 -->
<p><hr><p>
<!-- begin 3 -->
<H3 align="left"><img src="../gx/dennis/qbubble.gif"
height="50" width="60" alt="(?) " border="0"
>about Unix command rm</H3>
<p><strong>From Jane Liu
</strong></p>
<p align="right"><strong>Answered By Mike Orr, Ben Okopnik, Dan Wilder
<br></strong></p>
<!-- sig -->
<P><STRONG><IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
I have a question about rm command. Would you please tell me how to remove
all the files excepts certain files like anything ended with .c?
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Mike]
The easiest way (meaning it will work on any Unix systems anywhere), is
to move those files to a temporary directory, then delete "everything",
then move those files back.
</BLOCKQUOTE>
<blockquote><code><font color="#000033"><br>mkdir /tmp/tdir
<br>mv *.c /tmp/tdir
<br>rm *
<br>mv /tmp/tdir/* .
<br>rmdir /tmp/tdir
</font></code></blockquote>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Ben]
The above would work, but seems rather clunky, as well as needing a lot of
typing.
</blockquote>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Mike]
Yes, it's not something you'd want to do frequently. However, if you don't
know a lot about Unix commands, and are hesitant to write a shell script
which deletes a lot of files, it's a good trick to remember.
</BLOCKQUOTE>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Ben]
It's true that it is completely portable; the only questionable
part of my suggestion immediately below might be the "-1" in the "ls", but
all the versions of "ls" with which I'm familiar support the "single column
display" function. It would be very easy to adapt.
</BLOCKQUOTE>
<BLOCKQUOTE>
My preference would be to use something like
</BLOCKQUOTE>
<BLOCKQUOTE><BLOCKQUOTE><CODE>
rm $(ls -1|grep -v "\.c$")
</CODE></BLOCKQUOTE></BLOCKQUOTE>
<BLOCKQUOTE>
because the argument given to "grep" can be a regular expression. Given
that, you can say things like "delete all files except those that end in
'htm' or 'html'", "delete all except '*.c', '*.h', and '*.asm'", as well as
a broad range of other things. If you want to eliminate the error messages
given by the directories (rm can't delete them without other switches), as
well as making "rm" ask you for confirmation on each file, you could use
a "fancier" version -
</BLOCKQUOTE>
<BLOCKQUOTE><BLOCKQUOTE><CODE>
rm -i $(ls -AF1|grep -v "/$"|grep -v "\.c$")
</CODE></BLOCKQUOTE></BLOCKQUOTE>
<BLOCKQUOTE>
Note that in the second argument - the only one that should be changed -
the "\" in front of the ".c" is essential: it makes the "." a literal
period rather than a single-character match. As an example, lets try the
above with different options.
</BLOCKQUOTE>
<BLOCKQUOTE>
In a directory that contains
</BLOCKQUOTE>
<blockquote><code><font color="#000033"><br>testc
<br>test-c
<br>testcx
<br>test.cdx
<br>test.c
</font></code></blockquote>
<BLOCKQUOTE>
".c" means "'c' preceded by any character" - NO files would be deleted.
</BLOCKQUOTE>
<BLOCKQUOTE>
"\.c" means "'c' preceded by a period" - deletes the first 3 files.
</BLOCKQUOTE>
<BLOCKQUOTE>
"\.c$" means "'c' preceded by a period and followed by the end of the line"
- all the files except the last one would be gone.
</BLOCKQUOTE>
<BLOCKQUOTE>
Here's a script that would do it all in one shot, including showing a list
of files to be deleted:
</BLOCKQUOTE>
<blockquote>See attached
<a href="../misc/tag/rmx.bash.txt">misc/tag/rmx.bash.txt</a></blockquote>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Dan]
Which works pretty well up to some limit, at which things
break down and exit due to $skip being too long.
</BLOCKQUOTE>
<BLOCKQUOTE>
For a less interactive script which can remove inordinate
numbers of files, something containing:
</BLOCKQUOTE>
<BLOCKQUOTE><BLOCKQUOTE><CODE>
ls -AF1 | grep -v /$ | grep -v $1 | xargs rm
</CODE></BLOCKQUOTE></BLOCKQUOTE>
<BLOCKQUOTE>
allows "xargs" to collect as many files as it can on a command
line, and invoke "rm" repeatedly.
</BLOCKQUOTE>
<BLOCKQUOTE>
It would be prudent to try the thing out in a directory containing
only expendable files with names similar to the intended victims/saved.
</BLOCKQUOTE>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Ben]
Possibly a good idea for some systems. I've just tried it on a directory
with 1,000 files in it (created just for the purpose) and deleted 990 of
them in one shot, then recreated them and deleted only 9 of them.
Everything worked fine, but testing is indeed a prudent thing to do.
</BLOCKQUOTE>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Dan]
Or with some typists. I've more than once had to resort to backups
due to a slip of the fingers (the brain?) with an "rm" expression.
</BLOCKQUOTE>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Ben]
<*snort*> Never happened to <EM>me</EM>. No sir. Uh-uh.
<Anxious glance to make sure the weekly backup disk is where it should be>
</BLOCKQUOTE>
<BLOCKQUOTE>
I just put in that "to be deleted" display for, umm, practice. Yeah.
</BLOCKQUOTE>
<BLOCKQUOTE>
<LOL> Good point, Dan.
</BLOCKQUOTE>
<hr width="40%" align="center">
<P><STRONG><IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
Thanks a million! It worked.
</STRONG></P>
<P><STRONG>
I have another question: My shell script is in a file called hw1d.sh. When I
run sh hw1d.sh, the output shows on the screen. But the command details
won't show. Is there a way I can capture the detailed command lines and
output at the same time?
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Ben]
For one thing, you shouldn't be running your script as "sh ..."; simply
make it executable via "chmod +x <scriptname>" and run it. Other than
that (I <EM>think</EM> I understand what you're asking here), you can add "-v"
to the hashbang line so it looks like this -
</BLOCKQUOTE>
<BLOCKQUOTE><BLOCKQUOTE><CODE>
#!/bin/bash -v
</CODE></BLOCKQUOTE></BLOCKQUOTE>
<BLOCKQUOTE>
This will print out each line as it is read.
</BLOCKQUOTE>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Mike]
Or -x, which is what I use. They do slightly different things.
Consider this program.
</BLOCKQUOTE>
<BLOCKQUOTE><BLOCKQUOTE><CODE>
<BR>#!/bin/bash -v
<BR>TOWHOM="world"
<BR>echo "Hello"
<BR>echo $TOWHOM
<BR># This is a comment.
</CODE></BLOCKQUOTE></BLOCKQUOTE>
<BLOCKQUOTE>
Now running it:
</BLOCKQUOTE>
<BLOCKQUOTE><BLOCKQUOTE><CODE>
<BR>$ ./hello.sh
<BR>#!/bin/bash -v
<BR>TOWHOM="world"
<BR>echo "Hello"
<BR>Hello
<BR>echo $TOWHOM
<BR>world
<BR># This is a comment.
</CODE></BLOCKQUOTE></BLOCKQUOTE>
<BLOCKQUOTE>
Now change -v to -x and run it.
</BLOCKQUOTE>
<BLOCKQUOTE><BLOCKQUOTE><pre>
$ ./hello.sh
+ TOWHOM=world
+ echo Hello
Hello
+ echo world
world
</pre></BLOCKQUOTE></BLOCKQUOTE>
<BLOCKQUOTE>
The variable was expanded, there's a "+ " before each program line, and
the comments are omitted. It looks like -v shows the commands <EM>before</EM>
they're interpreted and -x shows them <EM>after</EM>.
</BLOCKQUOTE>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Ben] For more details on shell scripting, see my
"Introduction to Shell Scripting" articles in LG53-57 and 59.
</BLOCKQUOTE>
<p><em>He got the issue numbers wrong, but no sense worrying about that,
here they are. -- Heather</em></p>
<ul><li><a href="../issue52/okopnik2.html">52 - The Basics</a>
<li><a href="../issue53/okopnik.html">53 - loops, conditions, good practices</a>
<li><a href="../issue54/okopnik.html">54 - handy external tools</a>
<li><a href="../issue55/okopnik.html">55 - deep, dark secrets</a>
<li><a href="../issue57/okopnik.html">57 - color!</a>
<li><a href="../issue58/okopnik.html">58 - cleanup and debugging tricks</a> (last in series)
</ul>
<P><STRONG><IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
Thanks!
</STRONG></P>
<P><STRONG>
For practice purpose, I create file -cfile and try to rename it to cfile. I
figured out one way:
</STRONG></P>
<pre><strong> >cat <\-cfile >cfile
</strong></pre>
<P><STRONG>
But I just couldn't delete the old file -cfile because shell always
interprets as option. Is there a way I can do this?
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Dan]
Yes.
</blockquote>
<pre><blockquote>rm -- -cfile
</blockquote></pre>
<blockquote>
From "man rm":
</blockquote>
<pre><blockquote>GNU STANDARD OPTIONS
[ ... ]
-- Terminate option list.
</blockquote></pre>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Ben]
Given that "there's more than one way to do it",
</BLOCKQUOTE>
<blockquote><pre>rm ./-cfile
</pre></blockquote>
<BLOCKQUOTE>
also works. As you have found out, it's not a good idea to create
filenames with non-alphanumeric characters at the beginning: just because
you <EM>can</EM>, really does not mean that you <EM>should</EM>...
</BLOCKQUOTE>
<!-- end 3 -->
<p><hr><p>
<!-- begin 4 -->
<H3 align="left"><img src="../gx/dennis/qbubble.gif"
height="50" width="60" alt="(?) " border="0"
><TT>/usr/src/linux</TT> symlink considered harmful</H3>
<h4 align="center">some right answers become wrong, eventually.</h4>
<em>
<p>While it's normally the practice here to state who's asking and
who's answering, on this issue, that itself was a hot topic.</p>
<p>While answering "A rather unique query" last month, Mike dispensed
some common wisdom... which has, it seems, become unwise, at least unless
you are <strong>exceedingly</strong> careful of the context.</p>
<p>Thanks to <strong>Michal Jaegermann</strong> from the kernel list for
bringing it to more serious attention (can we say flame war here in the
land of curmudgeons? knew ya could), everyone from the Gang who hopped in,
and, especially, <strong>Breen Mullins</strong> and <strong>Dan Wilder</strong>
for providing clearer detail into the nature of the problem. And my
apologies to anyone who feels a need to get grumpy that I ruined all concept
of timeline in this thread, in favor of clarity to the readers.</p>
<p>Distro vendors and anyone who tends to build themselves kernels of different
vintages (mixing 2.0 with 2.2, etc) should pay special attention.</p>
</em>
<hr width="40%" align="center">
<STRONG><P><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Mike]
This is the normal Linux convention. Actually, you can place
your build tree anywhere, but you should make <TT>/usr/src/linux</TT> a
symlink to it so that the compiler will find the include files.
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Michal]
Actually no, you SHOULDN'T!! Please do not spread an incorrect
information in TAG or Linus will come and will haunt you for the
rest of your lives.
</BLOCKQUOTE>
<p><em>I'll spare the readership the flame war on his flight into
hyperbole. -- Heather</em></p>
<STRONG><P><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Mike]
(Is this [headers in /usr/src/linux/include/] still required now that
glibc has its own kernel headers?)
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Michal]
Headers in <TT>/usr/include/linux</TT> are "private" but these should be those
headers which were used in a compilation of your libraries (notably
glibc) and hacking around the with a link in <TT>/usr/src</TT> is a mistake as
Linus tried to explain many times - sometimes quite forcibly. Headers
used in a kernel compilation are NOT searched for in subdirectories of
<TT>/usr/src/linux</TT> but are specific to a kernel version and can be
drastically different between different versions, or at least you do not
have any guarantees that they are not. If you happen to have sources to
one of 2.2 kernels and one of 2.4 then <TT>/usr/src/linux</TT> link is
supposed to mean what?
</blockquote>
<p><em>Good question... building a kernel vs. building other things, this
link does or doesn't exist or is real instead of a link; some other
link named "build" in the modules subtree does or doesn't exist, and
if it does, what's a good link look like? [hot topic compression
algorithm, kinda lossy but hopefully sufficient.]</em></p>
<!-- sig -->
<STRONG><P><IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Mike]
OK tag, what do you think? Is it time to stop linking
<TT>/usr/src/linux</TT> to
<TT>/usr/src/linux-VERSION</TT> ?
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Michal]
AFAIK this time was at least like two years ago. Some things
just have a big inertia.
<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"
> [Breen]
That does seem to be the official answer.
</BLOCKQUOTE>
<BLOCKQUOTE>
From the 2.4.0 release, in linux/README:
</BLOCKQUOTE>
<BLOCKQUOTE><Pre>
INSTALLING the kernel:
- If you install the full sources, put the kernel tarball in a
directory where you have permissions (eg. your home directory) and
unpack it:
gzip -cd linux-2.4.XX.tar.gz | tar xvf -
Replace "XX" with the version number of the latest kernel.
Do NOT use the <TT>/usr/src/linux</TT> area! This area has a (usually
incomplete) set of kernel headers that are used by the library header
files. They should match the library, and not get messed up by
whatever the kernel-du-jour happens to be.
</Pre></BLOCKQUOTE>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Dan]
Yes. No. Maybe.
</BLOCKQUOTE>
<BLOCKQUOTE>
Many userland programs need (or think they need) kernel includes.
They usually get these through <TT>/usr/include/asm</TT>
and <TT>/usr/include/linux</TT>, which are often themselves symlinks:
</BLOCKQUOTE>
<BLOCKQUOTE><pre>
/usr/include/asm -> /usr/src/linux/include/asm
/usr/include/linux -> /usr/src/linux/include/linux
</pre></BLOCKQUOTE>
<BLOCKQUOTE>
Perhaps this is wrong, and either
</BLOCKQUOTE>
<ul>
<li> The userland stuff shouldn't be relying on kernel includes, or
<li> <TT>/usr/include/asm</TT> and <TT>/usr/include/linux</TT> should not be
symlinks, but instead should be directories containing stable
descriptions that won't change with kernel version, (!?!)
of kernel-ish things the userland needs.
</ul>
<BLOCKQUOTE>
In the one case, the application developers are at fault, and
should be told to mend their ways. In the other, blame the
distributions.
</BLOCKQUOTE>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Michal]
<A HREF="http://www.debian.org/">Debian</A> does not provide bad links for
a long time. Red Hat also recently caught itself on a mistake. I do not
know details of other distributions but if they not fixed that already then
likely they will soon.
</BLOCKQUOTE>
<BLOCKQUOTE>
Some source packages indeed search for <TT>/usr/src/linux</TT> for
configuration purposes. If this is not just a default which could, and
should, be adjusted then they are simply wrong. Current 2.2 kernels will
install 'build' link in its <TT>/lib/modules</TT> subdirectory to indicate
where sources for a given version are/were. This is not a foolproof either
but still better than alternatives.
</BLOCKQUOTE>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Dan]
In either case the poor end user can't be faulted for tolerating
those links into the kernel source. The conscientious user might be
praised for complaining to the program maintainer.
</BLOCKQUOTE>
<BLOCKQUOTE>
Recent application source trees exhibiting things like
</BLOCKQUOTE>
<BLOCKQUOTE><BLOCKQUOTE><CODE>
#include <linux/...
</CODE></BLOCKQUOTE></BLOCKQUOTE>
<BLOCKQUOTE>
include (just for starters) autofs, cdrecord,
<A HREF="http://www.dosemu.org/">DOSEMU</A>, gnupg, kde,
mysql, ntp, pgp, procps, python, samba, util-linux, wu-ftpd.
</BLOCKQUOTE>
<p><em>Perhaps we need a userland API? oh yeah, right, got that, called
glibc. Sigh. I think we can grant that procps has to know what /proc is
really up to, though.</em></p>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Dan]
Or maybe we just say there exist, though perhaps there should not,
applications that depend on kernel version. And they pick that up
through symlinks into the kernel source tree.
</BLOCKQUOTE>
<P><Strong><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Mike]
None of my systems have ever had a <TT>/usr/src/linux</TT> directory at all.
(Otherwise, I would not have been able to make the symlink without
erasing stuff first.)
</strong></p>
<p><em>So the thread at the end of this month still carries some questions:</em></p>
<ul>
<li>glibc does or does not have its own set of linux-kernel-like headers?
<li>Is the new kernel different enough that those are now a trap lying in wait
for a newly-built-from-source userland application?
<li>Is procps (for example) really a userland application, in that context?
<li>If you lack this mystic version of headers where would you get them,
obviously (?) real kernel sources are not the right place?
<li>If distros are evading /usr/src/linux entirely how will apps like procps
build correctly at all if we want to get the source?
<li>what sort of specialty symptoms happen from screwing this up, so that
we of the Answer Gang and our faithful readers can put some spark
of sense in our toolkit. "You say it's doing <strong>what</strong>?
Hmmm are you sure you don't have a bogus /usr/src/linux?"
</ul>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Dan]
What's a poor user to do?
</BLOCKQUOTE>
<p><em>At the very least, folks, while you're building new kernels out there,
here's a few safety tips:</em></p>
<ul>
<li> when you put your kernel in place don't forget to put the matching
System.map in with it. Don't toast it when you toss the source
tree out for some space. That's your real symbol table,
/proc/ksyms probably is a poor substitute.
<li> keep constantly up to date on modutils, it tries to be good across the
2.x.x range of kernels
<li> when you tweak <tt>/etc/lilo.conf</tt> don't forget to actually
<em>run</em> <tt>/sbin/lilo</tt>... before you reboot!
<li> after you boot on the new kernel, run
<br><code>depmod -a -F /path/to/correct/System.map </code>
<br>so you <em>really</em> know that your modules aren't missing
any symbols.
<li> backups are good things. Always keep your old kernel binary and its
modules around for a little while.
</ul>
<p><em>If anyone has some good checklist points to look out for when
compiling userland apps, or a clearer description of what's going
on in glibc's tiny brain when it reaches for "headers",
let us know!</em></p>
<!-- end 4 -->
<p><hr><p>
<!-- begin 5 -->
<H3 align="left"><img src="../gx/dennis/bbubble.gif"
height="50" width="60" alt="(!) " border="0"
>The Creed of The Querent</H3>
<h4 align="center">Some Meditations Upon The Evils of Unconsidered Questions</h4>
<p><em>A few of the Answer Gang this month have a special interest in seeing
the quality of the incoming questions improve. In good humor, here's
some ways to bump up your chances in the "Answer Gang might notice
my message and answer me" lotto.
<img src="../gx/dennis/smily.gif" alt=":)"
align="top" border="0"></em></p>
<p><strong>From Querents Everywhere </strong></p>
<p align="right"><strong>Answered By Ben Okopnik, Heather Stern
<br></strong></p>
<p><strong>From comp.unix.security's newest reader</strong></p>
<p align="right"><strong>Answered By Jim Dennis
<br></strong></p>
<!-- ::
Some Meditations Upon The Evils of Unconsidered Questions
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The good querent's checklist
:: -->
<BLOCKQUOTE> [Ben]
And Now, Cometh The Rant. Not to worry - it's not directed at anybody;
this is just a personal peeve that addresses a common problem, here, in
various places on Usenet, in tech support, etc. It also seems to be
prevalent in the Linux community at large, and that's a trend I'd like to
reverse, or at least contribute to slowing down.
</BLOCKQUOTE>
<BLOCKQUOTE>
Note that I speak only for myself - neither LG nor the rest of the Answer
Gang have contributed their opinions to this (though they'd be more than
welcome.)
</BLOCKQUOTE>
<BLOCKQUOTE>
Being part of the Answer Gang, as well as the Alpha Geek and Supreme Guru
in other venues, I get questions about Linux, Life, and the Universe
almost daily. Usually, the questions fall into one of two categories:
</BLOCKQUOTE>
<BLOCKQUOTE><BLOCKQuote>
"Hi, I want to know about [Linux, brain surgery, love, astrophysics]."
</BLOCKQuote></BLOCKQUOTE>
<BLOCKQUOTE>
"Hi. I have a Pentium 266/64MB/6.4GB running <A HREF="http://www.debian.org/">Debian</A> Linux 2.2. I've just
installed Mutt (version 1.0.1i) with PGP support built in - I
double-checked by running "mutt -v", and it does. I'm getting a message -
here, I wrote it down - it says "pgp: ^GRequires a later version", and I
can't read the PGP-encoded e-mail that was sent to me. I've checked the
PGP site at MIT and I do indeed have the latest version, 2.6.3a-7. Could
you help me?"
</BLOCKQUOTE>
<BLOCKQUOTE>
My response to the first type, if indeed I do make one, is "Go away." My
response to the second one is "Marry me!!!" (this has required building a
much larger house, but never mind. There are very few of the second kind,
anyway.)
</BLOCKQUOTE>
<BLOCKQUOTE>
The presumption in the first type is extremely annoying. It has driven a
number of people, some of them True Gurus of their respective crafts, off
Usenet and into virtual e-mail seclusion. There are many, many people out
there who think nothing of asking a person they don't know to put in hours
of work - it's one of the unfortunate side effects of easy communication
provided by Net access. I would suggest that these folks walk into a
lawyer's office and demand free help. (I would actually enjoy being a fly
on the wall at <EM>that</EM> conference, short and loud as it may be.) There are
indeed a number of us willing to provide free help - but in general,
leeches and time moochers aren't welcome. Making sure you aren't one isn't
that difficult - it simply takes consideration and common sense.
</BLOCKQUOTE>
<BLOCKQUOTE>
So, rather than ranting on about the manifold evils of this, let me
contribute something substantial here: to wit, a checklist. This applies
to TAG questions - and hopefully, to other issues. May it lead to greater
consideration for others, a more harmonious life on the Net, and eternal
World Peace. Or at least fewer wives and a smaller house.
</BLOCKQUOTE>
<!-- ::
The Creed of The Querent
~~~~~~~~~~~~~~~~~~~~~~~~
:: -->
<BLOCKQUOTE>
[x] I have tried my best to resolve this problem with the knowledge and
tools that I have at hand.
</BLOCKQUOTE>
<BLOCKQUOTE>
[x] I have tried my best to extend my understanding of the problem by
studying the list of of Linux HOWTOs, searching the Net for relevant
keywords, and scanning past issues of LG.
</BLOCKQUOTE>
<BLOCKQUOTE>
[x] I have performed the above two steps at least twice, in that order.
</BLOCKQUOTE>
<BLOCKQUOTE>
[x] Now that I can proceed no further, despite all my study and effort, I
have done my utmost to put my question into a clear, understandable
form. This also means that I have given all applicable information,
have been specific about version/type/machine specifics, etc.
</BLOCKQUOTE>
<BLOCKQUOTE>
[x] I have also considered ways in which other people may misunderstand my
question, and have rephrased it to avoid those misunderstandings. I have
also used a spellchecker, lest my meaning be unclear in that manner.
</BLOCKQUOTE>
<BLOCKQUOTE>
[x] I have used the sacred 40 characters of "Subject" wisely, not wasting
them on garbage like "NEWBIE NEEDS HELP!!!!" but thoughtfully choosing
a good introduction, like "gcc dies with sig11 on kernel compilation".
</BLOCKQUOTE>
<BLOCKQUOTE>
[x] Only <EM>now</EM> have I hit the 'send' key. If someone expends their valuable
time and effort to help me, I shall show my gratitude, if and when I
am able, by helping others as I have been helped.
</BLOCKQUOTE>
<BLOCKQUOTE>
Selah.
</BLOCKQUOTE>
<BLOCKQUOTE>
There. Saving the world in seven easy steps. What more can you ask for?
</BLOCKQUOTE>
<BLOCKQUOTE><img src="../gx/dennis/bbubble.gif"
height="50" width="60" alt="(!) " border="0"
> [Heather] My own rant comes courtesy of a querent who sent his mail in
every single month until we answered him. Being the second month in a row
that happened I figure, it's time to say something about it.
</BLOCKQUOTE>
<BLOCKQUOTE>
A fair percentage of the Linux world reads our stuff. Every month. You
really <strong>don't</strong> want to know how many questions we get. Our
Senior Editor has mentioned that about 28% of the stuff we get is spam.
</BLOCKQUOTE>
<BLOCKQUOTE>
This is after you consider our procmail defenses; some of the lint trap
contents *aren't* spam, it's questions for the Gang, and our sysadmin
eventually forwards those to us. (Poor guy. Dan not only reads TAG and
answers stuff, he keeps our lists running, our web servers humming, and has
to read through all our spam in case it might be a real question. Sigh.)
</BLOCKQUOTE>
<BLOCKQUOTE>
Of the stuff that isn't "real" spam, I'd say well over 10% is questions which
are not about Linux at all. Sometimes not even about computers! (I've
stopped publishing any offtopic stuff unless more than one of us thinks it
ought to go in.) The remainder is still huge.
</BLOCKQUOTE>
<BLOCKQUOTE>
So, we can't promise to answer every single question -- and we <em>can't</em>
anyway. So while I have to hand it to this guy for his perseverence in the
face of silence... we still can't promise to answer every single question!
</BLOCKQUOTE>
<BLOCKQUOTE>
But I will add for the benefit of those who send us the tricky ones and hope
that we'll help them out, that the following features in his mail seriously
delayed this fellow's answer:
</BLOCKQUOTE>
<BLOCKQUOTE><BLOCKQuote>
<img src="../gx/dennis/unsmily.gif" alt=":("
align="bottom" border="0">
He used almost no paragraph structure. Even if he'd gotten the paragraphs
a little wrong, it would have made the question easier to read.
</BLOCKQuote>
<BLOCKQUOTE>
<img src="../gx/dennis/unsmily.gif" alt=":("
align="bottom" border="0">
He sent it as inline HTML... not even plaintext plus an attachment.
Most mailers under Linux do NOT deal with inline HTML automatically, and the
combination meant his mail remained unanswered. Sadly, a lot of spam does
this - you might get deleted out of hand by the Answer Gang when it arrives
in our mailboxes, if we're just too overloaded to deal with that sort of mail.
</BLOCKQUOTE>
</BLOCKQUOTE>
<BLOCKQUOTE>
During formatting of this month's mail I have noticed a nasty trend, some
webmail accounts but almost every Outlook Express mail has come in as "quoted
printable". Now this is a mail encoding that is supposed to exist to protect
special text ... say, something written in spanish ... from being mangled
by the mail routers or cheap mail clients while being bounced around.
(Hi Felipe!) However, when neither the original mail nor the HTML version
has such weird characters, it only serves to annoy the heck out of my scripts.
</BLOCKQUOTE>
<BLOCKQUOTE>
I have to give credit to a lot of our querents this month who didn't get
answers - for many it's not because you've failed at Ben's suggestions,
but we of the Gang either didn't feel adept at tackling your question this
time around, or we were all busy helping others.
</BLOCKQUOTE>
<BLOCKQUOTE>
So add to your checklist...
</BLOCKQUOTE>
<BLOCKQUOTE>
[x] If my message is long and rambly I will insert blank lines when I am
changing thoughts. If it's hard for you, you can try a blank line between
each of these:
</BLOCKQUOTE>
<BLOCKQUOTE><ul>
<li> what type of system and linux I have
<li> what I'm trying to do
<li> how it's screwed me up so far
<li> things I tried to look up so I could fix it
<li> guesses at what next, and thanks for any clues.
</ul></BLOCKQUOTE>
<BLOCKQUOTE>
[x] I have turned off the HTML attachment since it sends 3 or 4 times as
many bits, and doesn't help when it gets there. I am sending plain
ASCII text. (I'm not, however, afraid of using smileys and unhappy
faces to express cheer and frustration.)
</BLOCKQUOTE>
<BLOCKQUOTE>
[x] If I am writing in a foreign language I will use quoted printable to
defend my homeland's letterset from being mangled, and if I know any
English at all I will tranlate it myself rather than wait a month or
so extra for the translators to get to my mail.
</BLOCKQUOTE>
<BLOCKQUOTE><img src="../gx/dennis/bbubble.gif"
height="50" width="60" alt="(!) " border="0"
>
Proof that Jim D. doesn't just pick in Linux users when
he get churlish.
</BLOCKQUOTE>
<BLOCKQUOTE>
In this message he responds to a clueless message in the
comp.unix.security newsgroup. Despite his early sarcasm,
he later provides a wealth of advice to newbie Solaris
sysadmins and show, once again that "It's all just UNIX."
</BLOCKQUOTE>
<blockquote><pre> Newsgroups: comp.security.unix
Subject: Re: Help
References: <9377cp$r4t$1@newton3.pacific.net.sg>
Followup-To:
</pre></blockquote>
<BLOCKQUOTE>
In article <9377cp$r4t$1@newton3.pacific.net.sg>, May Hu wrote:
</BLOCKQUOTE>
<P><STRONG><IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>I'm new to Solaris, can some experts help me with security matters
in the Solaris Platform on SUN SPARC.
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [JimD]
I'm new the the field of medical science. Can some medical doctor
help me with disease prevent on the human body.
</BLOCKQUOTE>
<P><STRONG><IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
What are the paths to pay attention to?
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [JimD]
What are the limbs and organs that I should pay attention to?
</BLOCKQUOTE>
<P><STRONG><IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
What are the logs or system logs do I require to checked or backup?
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [JimD]
What are the vital signs that should be checked or monitored?
</BLOCKQUOTE>
<P><STRONG><IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
What are the things to pay more attention to in the Solaris platform?
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [JimD]
What are the things to pay more attention to in Homo Sapiens
(as opposed to other mammals)?
</BLOCKQUOTE>
<P><STRONG><IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
What are the things to backup for system recovery, if there's any?
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [JimD]
How would I restore a terminally ill patient?
</BLOCKQUOTE>
<P><STRONG><IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
Hope to get some replies from any of you out there who are familiar
with the platform.
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [JimD]
I'm hoping that someone here can make me a doctor in a USENET
posting. I'm not going to give you any clues as to my background,
so you won't know if I've taken high school biology, undergraduate
pre-med, or even a Red Cross first aid course. I won't go out to
a book store and read a few books on medicine, biology, nursing,
or anything like that --- or if I have read any of them I won't
mention it so YOU'LL HAVE TO EXPLAIN IT ALL TO ME FROM SCRATCH!
</BLOCKQUOTE>
<P><STRONG><IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
Thanks
May
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [JimD]
May, are you starting to get the idea of how absurd your questions
are? Broad expertise is not something that can be imparted in a
few hundred lines of Internet posting. Your questions are not
specific enough for a real expert to answer in a reasonable space
(whole books are written on each of these topics).
</BLOCKQUOTE>
<BLOCKQUOTE>
So, let's try this:
</BLOCKQUOTE>
<BLOCKQUOTE><BLOCKQuote>
Go <a href="http://www.thinkgeek.com/stuff/things/36e6.html">get</a>
<a href="http://www.admin.com/"
>Unix System Administrator's Handbook</a> by Evi Nemeth et al.
(3rd Edition, Prentice Hall) --- that's commonly called the
"Grape Book" because the cover is purple. The first two editions
were widely referred as "the cranberry book" because the first
had a cartoon with a reference to a cranberry patch on it and the
second had a modified version of that cartoon (no patch) but was a
dark red color that is reminiscent of cranberry juice.
</BLOCKQuote></BLOCKQUOTE>
<BLOCKQUOTE>
Read it! USAH is not Solaris specific, but it should give you a
good overview of UNIX systems administration.
</BLOCKQUOTE>
<BLOCKQUOTE>
While you're at the book store, get a copy of
<a href="http://www.oreilly.com/catalog/esa2/">Essential System
Administration</a> (Aeleen Frisch, O'Reilly & Associates, 2nd Ed).
This is often called "The Armadillo Book" because, in the O'Reilly
tradition, it has a woodcut styled picture of an armadillo on the cover.
</BLOCKQUOTE>
<BLOCKQUOTE>
Read it! It is also not Solaris specific. See the penultimate
(next to last) paragraph.
</BLOCKQUOTE>
<BLOCKQUOTE>
If I haven't irritated you enough, pick up a copy of my
book, <a href="http://www.newriders.com/books/title.cfm?isbn=1562059343"
>Linux System Administration</a> (M Carling, Stephen Degler,
and Jim Dennis (me)). It's also not about Solaris, but most of
what it says is applicable to all UNIX platforms. My book doesn't
duplicate much of what you'd find in Nemeth or Frisch. I wrote
it in a context of having read those (and many others) and specifically
avoided covering the topics that were adequately covered in the
more basic books.
</BLOCKQUOTE>
<BLOCKQUOTE>
After you have a thorough grounding in systems administration, then
you can learn a bit more specifically about UNIX security and then
you can focus on Solaris security. If you find a shortcut that's
really effective, let us know. However, you should expect to read
about a half dozen fairly large books from cover to cover. There
will be a test (every day on the job is a bit of a test in our
field).
</BLOCKQUOTE>
<BLOCKQUOTE>
There is an interesting online UNIX SysAdmins Independent Learning
(USAIL) project at Indiana University:
</BLOCKQUOTE>
<BLOCKQUOTE><BLOCKQuote>
<A HREF="http://www.uwsg.iu.edu/usail"
>http://www.uwsg.iu.edu/usail</A>
</BLOCKQuote></BLOCKQUOTE>
<BLOCKQUOTE>
It seems to be a reasonable place to learn a bit of our craft.
There are chapters that relate to each of your questions, and there
are self-quizzes you can take using any web browser (even Lynx;
which is still my favorite; all of URLs in this posting were checked
in Lynx as I was writing it --- most were yanked in from my
Lynx bookmarks file).
</BLOCKQUOTE>
<BLOCKQUOTE>
On the topic of security I'd recommend three titles to start
with: <a href="http://www.accu.org/bookreviews/public/reviews/p/p001022.htm"
>Practical UNIX and Internet Security</a> by Simson Garfinkel,
and Gene Spafford (O'Reilly, 2nd Ed.),
<a href="http://www.oreilly.com/catalog/fire2/"
>Building Internet Firewalls</a>
by Brent Chapman, Elizabeth Zwicky, and Simon Cooper (O'Reilly, 2nd Ed.)
and <a href="http://www.weyrich.com/book_reviews/firewalls_security.html"
>Firewalls and Internet Security: Foiling The Wily Hacker</a> by
Steven Bellovin and William Cheswick (Addison Wesley?). I've heard a
rumor that a second edition of the latter title is going to be released
soon. (I've been holding out on buying a new copy; mine walked off a
few years ago).
</BLOCKQUOTE>
<BLOCKQUOTE>
(BTW: you might have noticed that most of the books on my list
are in second editions or later. I expect that my own book would
also benefit from further revision --- but only time will tell
if the publishers have the interest).
</BLOCKQUOTE>
<BLOCKQUOTE>
Read all of those. Then get a few books that are more specific to
Solaris. I've read through both of Janic Windsor's books (<EM>Solaris
System Administrator's Guide</EM> and <EM>Solaris Advanced
System Administrator's Guide</em>) but I mostly don't use Solaris
any more. The few Solaris and SunOS boxes I ever professionally
administered are fading memories.
</BLOCKQUOTE>
<BLOCKQUOTE>
You can find more recommended books on the topics of systems
administration at:
</BLOCKQUOTE>
<BLOCKQUOTE><DL><DT>
SAGE - General reference books for Sysadmins
<DD><A HREF="http://www.usenix.org/sage/sysadmins/books/general.html"
>http://www.usenix.org/sage/sysadmins/books/general.html</A>
</DL></BLOCKQUOTE>
<BLOCKQUOTE>
SAGE is the SysAdmin's Guild (the "e" is silent, we stole it
from <TT>/etc/resolv.conf</TT>'s filename!)
</BLOCKQUOTE>
<BLOCKQUOTE>
Once you have a reasonable educational foundation you can make
better use of online resources (like this newsgroup). Of course
you should start by reading the FAQs (Frequently Asked/Answered
Questions) that relate to any topic about which you are tempted
to ask a question. There's a very nice collection of FAQs at
the obvious URL: <A HREF="http://www.faqs.org"
>http://www.faqs.org</A> (Note: www.faq.org, no
"s", is some sort of lame "portal" site that makes no effort
to make FAQs available, ARGH!).
</BLOCKQUOTE>
<BLOCKQUOTE>
Here's a few appropriate FAQs and links for you:
</BLOCKQUOTE>
<BLOCKQUOTE><BLOCKQuote>
For this newsgroup:
</BLOCKQuote></BLOCKQUOTE>
<BLOCKQUOTE><DL><DT>
comp.security.unix and comp.security.misc FAQ
<DD><A HREF="http://www.faqs.org/faqs/computer-security/most-common-qs"
>http://www.faqs.org/faqs/computer-security/most-common-qs</A>
</DL></BLOCKQUOTE>
<BLOCKQUOTE>
On Solaris:
</BLOCKQUOTE>
<BLOCKQUOTE><DL><DT>
Solaris 2 Frequently Asked Questions (FAQ) 1.70
<DD><A HREF="http://www.faqs.org/faqs/Solaris2/FAQ"
>http://www.faqs.org/faqs/Solaris2/FAQ</A>
</DL></BLOCKQUOTE>
<BLOCKQUOTE>
... this one is maintained by Casper Dik, who has been
quite active on netnews, particularly in comp.unix.admin,
for longer than I have.
</BLOCKQUOTE>
<BLOCKQUOTE>
On various security topics:
</BLOCKQUOTE>
<BLOCKQUOTE><DL><DT>
Computer Security Index
<DD><A HREF="http://www.faqs.org/faqs/computer-security"
>http://www.faqs.org/faqs/computer-security</A>
</DL></BLOCKQUOTE>
<BLOCKQUOTE>
So, with all of that advice let's review your questions:
</BLOCKQUOTE>
<P><STRONG><IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
What are the paths to pay attention to?
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [JimD]
All of them. Actually Solaris installs a whole bunch
of crap that you don't care about and will never use.
However, you haven't given <EM>any</EM> details about what
machines you have, or what they're doing. Thus no one
in this newsgroup could know what paths you could
probably ignore. (Unless this is the secret hobby of
the "psychic friends network").
</BLOCKQUOTE>
<BLOCKQUOTE>
Since you are asking this in the context of comp.unix.security
I can guess that you're really intended to ask something
more like:
</BLOCKQUOTE>
<BLOCKQUOTE><BLOCKQuote>
How would I know if an attacker has compromised my
</BLOCKQuote></BLOCKQUOTE>
<BLOCKQUOTE>
system? What files are likely to be modified by a
cracker?
</BLOCKQUOTE>
<BLOCKQUOTE>
This suggests that you'd like to install file integrity test
system or an intrusion detection system (IDS). You could
get a copy of Tripwire (by Gene Kim and Gene Spafford) which
started as a free tool and is now maintained as a commercial
product by Gene Kim's company at: <A HREF="http://www.tripwiresecurity.com"
>http://www.tripwiresecurity.com</A>)
You could also look at AIDE (which is basically a freeware
clone of Tripwire). AIDE (<A HREF="http://www.cs.tut.fi/~rammer/aide.html"
>http://www.cs.tut.fi/~rammer/aide.html</A>).
is more popular among Linux, and *BSD users, but it will run on
Solaris and should run on any other modern UNIX.
</BLOCKQUOTE>
<P><STRONG><IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
What are the logs or system logs do I require to checked or backup?
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [JimD]
I don't know. Does Solaris still use <TT>/var/adm/messages</TT> (like
SunOS did)? I do know that your <TT>/etc/syslog.conf</TT> should have
information that tells the system logging daemon where to store
different messages from various facilities. You should be able
to read that file, and its man pages to figure it out for yourself.
That should work on most UNIX systems.
</BLOCKQUOTE>
<BLOCKQUOTE>
On most forms of UNIX you could even modify your <TT>/etc/syslog.conf</TT>
to force it to copy certain types of messages to another system
on your network or to a printer, through a serial line to a terminal
or to another system. These sorts of customizations can provide
you with a tamper resistant copy of your messages.
</BLOCKQUOTE>
<BLOCKQUOTE>
Setting up remote loghosts is considered to be a useful security
measure. If the loghost is sufficiently hardened and dedicated
it can consolidate copies of your logs and prevent the (otherwise
successful) attacker from "covering his or her tracks" by editing
the evidence out of the logs.
</BLOCKQUOTE>
<BLOCKQUOTE>
You can also create cron jobs that periodically scan your
logs looking for anomalous entries, filtering out all the
innocuous messages and mailing, printing or otherwise delivering
the summaries to you.
</BLOCKQUOTE>
<BLOCKQUOTE>
In my book I give a very simple (10 line) awk script that loads
a file full of patterns (regular expressions) and filters a
file of all of them. It is an extremely simple anomaly detection
engine. The hard part of using it is creating a list of patterns
to meet your needs. Maintaining the pattern files for each of
your logs is made more challenging by the fact that upgrades to your
OS and other software can affect the messages that they generate.
</BLOCKQUOTE>
<BLOCKQUOTE>
On many UNIX systems you can look for a "logger" command
(<TT>/usr/bin/logger</TT>, or <TT>/bin/logger</TT>) so that your shell scripts
can easily post their own syslog messages. There are also
modules and extensions to PERL, and Python (and probably others)
that let you natively post messages to the system logs from
scripts in those languages.
</BLOCKQUOTE>
<BLOCKQUOTE>
There are also replacements to the stock UNIX syslog system.
So you could rip out the Solaris syslog daemon and install
syslog-NG or some other package. That might offer better
reliability (using TCP rather than UDP) security that
conforms more closely to your needs (using encrypted tunnels
for example) or more flexibility (letting you dispatch and
filter based on regular expression rather than simple
facility/level codes).
</BLOCKQUOTE>
<BLOCKQUOTE>
Obviously none of that last paragraph will make any sense
until you understand how the conventional UNIX syslog system
works. Go read those books and a few of the man pages on your
system!
</BLOCKQUOTE>
<P><STRONG><IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
What are the things to pay more attention to in the Solaris platform?
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [JimD]
This amounts to a question like:
</BLOCKQUOTE>
<BLOCKQUOTE><BLOCKQuote>
What parts of Solaris really suck?
</BLOCKQuote></BLOCKQUOTE>
<BLOCKQUOTE>
My answer is: "I don't know. Read the FAQ." I'm an expert on
Linux, and I can tell you the parts of it that can be problematic
for UNIX and Solaris users as they adopt it. (For example, if
you were among the few people who actually use ACLs --- access
control lists --- under Solaris or some other OS than you might
find that Linux' lack of them in their standard kernels and
distributions "really sucks." You might also hold that having
to fetch and apply an unofficial kernel patch, rebuild your
kernel, and install an extra set of utilities also "really sucks").
</BLOCKQUOTE>
<BLOCKQUOTE>
Again, the FAQ (and some strategic lurking in this newsgroup and
on some of the mailing lists that are recommended in the FAQs)
will answer that question.
</BLOCKQUOTE>
<P><STRONG><IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
What are the things to backup for system recovery, if there's any?
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [JimD]
Everything. Here's another case where the psychic friends might
be able to help you; but where you haven't give us enough
information to do so.
</BLOCKQUOTE>
<BLOCKQUOTE>
Recovery planning is one of the most important jobs of a system
administrator. Doing backups is a part of a recovery plan, but
it's ONLY A PART.
</BLOCKQUOTE>
<BLOCKQUOTE>
As I've mentioned in this post, I'm not a Solaris expert.
I could write a 30 page HOWTO on doing Linux backups
(in fact, I did, sort of; it's the latter half of chapter
3 in my book). Most of it would be the same under Solaris
--- you have your choice of tar, cpio and dump (ufsdump under
Solaris, I guess).
</BLOCKQUOTE>
<BLOCKQUOTE>
However, it is often as effective to know how to look for
answers than to know the answers themselves. In this case
I searched the FAQ (see above) and found that Casper had
failed me. Apparently it's not frequently asked enough
on the Solaris/SunOS newsgroups. There is a passing
reference to the Solstice Backup documentation on the
"AnswerBook" CDs that ship with Solaris. Perhaps that
would be handy.
</BLOCKQUOTE>
<BLOCKQUOTE>
Next I went to Google. Google (<A HREF="http://www.google.com"
>http://www.google.com</A>) is
currently the best search engine on the 'net. I used the
terms: solaris backup.
</BLOCKQUOTE>
<BLOCKQUOTE>
Here's the best couple of links I found:
</BLOCKQUOTE>
<BLOCKQUOTE><DL><DT>
Solaris Backup FAQ/Top Ten
<DD><A HREF="http://www.ebsinc.com/solaris/backup.html"
>http://www.ebsinc.com/solaris/backup.html</A>
</DL></BLOCKQUOTE>
<BLOCKQUOTE><DL><DT>
Backup Central: Free Backup Software
<DD><A HREF="http://www.backupcentral.com/toc-free-backup-software.html"
>http://www.backupcentral.com/toc-free-backup-software.html</A>
</DL></BLOCKQUOTE>
<BLOCKQUOTE>
... which includes:
</BLOCKQUOTE>
<BLOCKQUOTE><DL><DT>
Backup Central: hostdump.sh
<DD><A HREF="http://www.backupcentral.com/hostdump.html"
>http://www.backupcentral.com/hostdump.html</A>
</DL></BLOCKQUOTE>
<BLOCKQUOTE>
... a general purpose full system backup script.
</BLOCKQUOTE>
<BLOCKQUOTE>
Obviously, I'm not a Solaris expert. Luckily Solaris is UNIX and
I am pretty good at that. Most generic UNIX knowlege will serve you
as well on Solaris, Linux, <A HREF="http://www.freebsd.org/">FreeBSD</A>, etc as it would on a SCO or other
system.
</BLOCKQUOTE>
<BLOCKQUOTE>
Whether the answers I've given to your specific questions make any
sense depends on your background. If my references to tripwire,
ufsdump, syslog facilities and levels, FAQs, man pages were confusing
then you don't yet have the background to be a professional sysadmin.
Go through USAIL, read the books I've suggested. If those are too
advanced and confusing then try more basic ones like Mark G. Sobell's
<EM>Practical Guide to Solaris</em> (<A HREF="http://www.sobell.com"
>http://www.sobell.com</A>) or
<EM>Unix for the Impatient</em> by Paul Abrahams and Bruce Larson.
(Actually if USAIL is too advanced, then give up and start flipping
burgers somewhere!).
</BLOCKQUOTE>
<BLOCKQUOTE>
Meanwhile, for your immediate needs you may want to hire a consultant
to audit your current production systems, do <EM>AND TEST</EM> a full set of
backups and to disable any unnecessary networking services and generally
configure you system until you've learned enough to manage it yourself.
</BLOCKQUOTE>
<BLOCKQUOTE>
Unfortunately finding a good consultant is difficult. There are
alot of snake oil salesmen and any decent huckster can wow you with
technobabble that's indistinguishable from good advice. To the untrained
ear; they sound the same. I can't help you much there. (I'm not
available as a consultant these days, and I wouldn't be the right person
for your Solaris boxes anyway. My wife is a UNIX/Linux consultant and
she does offer a "phone technical interview" service --- where she can
interview your prospective consultant or sysadmin over the phone and
give you an evaluation of their UNIX proficiency).
</BLOCKQUOTE>
<BLOCKQUOTE>
Lastly: If you're going to become a professional Solaris sysadmin
you'll want to have a copy on at least one NON-PRODUCTION system.
You want to be able to experiment and to break things without
disrupting your real business processes. If you're sure that you
want to stick with Solaris then it would make sense to participate
in Sun's "Free Solaris[tm] Binary License Program"
<A HREF="http://www.sun.com/developers/tools/solaris"
>http://www.sun.com/developers/tools/solaris</A> (although their
meaning of "free" is a bit loose since their CD will cost you $75
--- and they don't let you modify/sell copies of that!).
</BLOCKQUOTE>
<BLOCKQUOTE>
Personally I prefer Linux, FreeBSD (and <A HREF="http://www.openbsd.org/">OpenBSD</A> and <A HREF="http://www.netbsd.org/">NetBSD</A>) where
"free" means you can download the ISO image and burn it to your
own CD, you can buy the CD sets for prices ranging from $2 to about
$100, and most of those you could copy and resell if you wanted to,
and you get the source code and the right to make changes and
redistribute your own custom versions of the software. That's a
version of "free" that seems more liberated n'est ce pas?
</BLOCKQUOTE>
<BLOCKQUOTE>
For hardware you have two choices: get Solaris x86 and install it
on a PC; or get a SPARC system. You can get used SPARC systems on
eBay or other online auction sites for anywhere from $50 to $200
for old 32-bit SPARC classics, IPXs etc, to $500-2,000 for
64-bit UltraSPARC I and II systems. Caveat emptor!
</BLOCKQUOTE>
<BLOCKQUOTE>
So, that's the Linux Gazette "Answer Guy's" guide to becoming
a Solaris security and system adminstration professional.
</BLOCKQUOTE>
<!-- end 5 -->
<p><hr><p>
<!-- begin 6 -->
<H3 align="left"><img src="../gx/dennis/qbubble.gif"
height="50" width="60" alt="(?) " border="0"
>IP Forwarding</H3>
<p><strong>From Cole Ragland
</strong></p>
<p align="right"><strong>Answered By Mike Orr
<br></strong></p>
<P><STRONG><IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
I have a <A HREF="http://www.slackware.org/">Slackware</A> machine acting as a gateway/router between two
separate networks e.g. 172.29.17.0 and 10.10.3.0. This machine is
mulithomed with eth0=172.29.17.19 and eth1=10.10.3.10. Packets from the
10.10 .3 network cannot get passed eth0. I've enable ip forwarding e.g.
"echo 1 ip_forward" but I believe that is only for routing between
subnets. How can I route between two separate networks. I'm thinking
ip_chains, ipmasq, and routed (which I have to fire up manually -- if I
uncomment rc.inet2 lines, machine stalls at boot) but not sure. Thanks
for your help.
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Mike]
If your internal network had public IPs, you would need only IP forwarding.
However, 10.x.x.x IPs are reserved for private networks, and Internet
routers automatically reject them. So even if your request does go out,
there's no way for replies to get back to you. The trick is to use IP
Masquerading.
</BLOCKQUOTE>
<BLOCKQUOTE>
If you're using kernel 2.2.x, the minimal commands required in your startup
scripts are:
</BLOCKQUOTE>
<BLOCKQUOTE><pre>
echo "1" > /proc/sys/net/ipv4/ip_forward
# Enable forwarding between eth0 and eth1.
/sbin/ipchains -P forward DENY
# Forbid all other types of forwarding.
/sbin/ipchains -A forward -s 10.0.0.0/8 -j MASQ
# Forward and masquerade requests from 10.x.x.x and handle replies back
</pre></BLOCKQUOTE>
<BLOCKQUOTE>
This will handle ordinary TCP services. FTP, ping, irc, CuSeeme, Quake
also require additional modules in order to be masqueraded.
</BLOCKQUOTE>
<BLOCKQUOTE>
You can also build a more elaborate ipchains ruleset to customize security.
</BLOCKQUOTE>
<BLOCKQUOTE><DL><DT>
A similar thread is in last month's The Answer Gang.
<DD><A HREF="../issue61/lg_answer61.html#tag/5"
>http://www.linuxgazette.com/issue61/lg_answer61.html#tag/5</A>
</DL></BLOCKQUOTE>
<!-- end 6 -->
<p><hr><p>
<!-- begin 7 -->
<H3 align="left"><img src="../gx/dennis/qbubble.gif"
height="50" width="60" alt="(?) " border="0"
>ess1869 sound card modual</H3>
<p><strong>From Robert Campbell
</strong></p>
<p align="right"><strong>Answered By Ben Okopnik
<br></strong></p>
<!-- sig -->
<P><STRONG><IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
I am trying to install a ess1869 sound card. and I have read in allot of place
that the card works with linux but I cannot find the modual that looks right
for it.... I want to know where I can download the modual for the ess1869
sound card.. and is there a site that is dedicated to linux moduals and
drivers so I can download others from there when needed?
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Ben]
Linux does indeed support ESS sound cards, including the ESS1869.
Unfortunately, your question, as phrased, is impossible to answer -
modules are not "downloaded", they are created as part of the kernel
compilation. Chances are high that your "stock" kernel comes with the
necessary modules; if not, recompiling the kernel is not a difficult
process. See the Kernel-HOWTO.
</BLOCKQUOTE>
<BLOCKQUOTE>
When you say that you "cannot find the modual that looks right for it",
what do you mean? I'm not aware of any physical characteristics that would
make a module "look wrong" - what criteria are you using? In any case, the
module that "looks right" to me, in this case, is 'sb', the SoundBlaster
module. I would suggest downloading my
"<a href="../misc/tips/shotgun.bash.txt">shotgun</a>" script that was published
in the current issue of LG as "2-cent tip - module resource detection"
and running it with 'sb' as a parameter; if one of the listed switches is
"esstype", then ESS support is compiled in, and you simply need to load
'sb' (as well as the modules that are necessary to support it.) In case of
problems, I would suggest reading the extensive comments in the source
code (<TT>/usr/src/linux/drivers/sound/sb_ess.c</TT>) Hint: search for the word
'esstype'.
</BLOCKQUOTE>
<!-- end 7 -->
<!--startcut ======================================================= -->
<P> <hr> </p>
<!-- *** BEGIN copyright *** -->
<H5 align="center">This page edited and maintained by the Editors
of <I>Linux Gazette</I>
<a href="http://www.linuxgazette.com/copying.html"
>Copyright ©</a> 2001
<BR>Published in issue 62 of <I>Linux Gazette</I> February 2001</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>
<!-- *** END copyright *** -->
<P> <hr>
<!-- begin tagnav ::::::::::::::::::::::::::::::::::::::::::::::::::-->
<p align="center">
<table width="100%" border="0"><tr>
<td align="right" valign="center"
><IMG ALT="" SRC="../gx/navbar/left.jpg"
WIDTH="14" HEIGHT="45" BORDER="0" ALIGN="middle" border="0">
<A HREF="../lg_answer62.html"
><IMG SRC="../gx/dennis/answertoc.jpg" align="middle"
ALT="[ Answer Guy Current Index ]" border="0"></A></td>
<td align="center" valign="center"><A HREF="../lg_answer62.html#greeting"><img align="middle"
src="../gx/dennis/smily.gif" alt="greetings" border="0"></A>
<A HREF="1.html">1</A>
<A HREF="2.html">2</A>
<A HREF="3.html">3</A>
<A HREF="4.html">4</A>
<A HREF="5.html">5</A>
<A HREF="6.html">6</A>
<A HREF="7.html">7</A></td>
<td align="left" valign="center"><A HREF="../lg_index_tag.html"
><IMG SRC="../gx/dennis/answerpast.jpg" align="middle"
ALT="[ Index of Past Answers ]" border="0"></A>
<IMG ALT="" SRC="../gx/navbar/right.jpg" align="middle"
WIDTH="14" HEIGHT="45" BORDER="0"></td></tr></table>
</p>
<!-- end tagnav ::::::::::::::::::::::::::::::::::::::::::::::::::::-->
<P> <hr>
<CENTER>
<!-- *** BEGIN navbar *** -->
<!-- *** END navbar *** -->
</CENTER>
</p>
<!-- ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -->
</BODY></HTML>
<!--endcut ========================================================= -->
<center>
<H1><A NAME="tips"><IMG ALIGN=MIDDLE ALT="" SRC="../gx/twocent.jpg">
More 2¢ Tips!</A></H1> <BR>
<!-- BEGIN tips -->
Send Linux Tips and Tricks to <A HREF="mailto:gazette@ssc.com">gazette@ssc.com</A></center>
<UL>
<!-- index_text begins -->
<li><A HREF="#tips/1"
><strong>2c tip: finding out your home router's ip address using lynx</strong></a>
<li><A HREF="#tips/2"
><strong>2cent tip Available space available on Hd - follow up</strong></a>
<li><A HREF="#tips/3"
><strong>Tech tip -- removing all files except *.c</strong></a>
<li><A HREF="#tips/4"
><strong>netscape to read html files ( $0.02 )</strong></a>
<li><A HREF="#tips/5"
><strong>Need info (Need Outlook to speak to Linux) (Issue 61, 2 cent tips)</strong></a>
<li><A HREF="#tips/6"
><strong>2-cent tip - module resource detection</strong></a>
<li><A HREF="#tips/7"
></a>about Unix command rm --or--
<br><A HREF="#tips/7"
><strong>8 Cents Worth</strong></a>
<li><A HREF="#tips/8"
><strong>Shebang problems</strong></a>
<li><A HREF="#tips/9"
><strong>about Unix command ps</strong></a>
<li><A HREF="#tips/10"
><strong>Linux security FAQ</strong></a>
<li><A HREF="#tips/11"
><strong>renaming directories</strong></a>
<li><A HREF="#tips/12"
><strong>hi im a moron</strong></a>
<li><A HREF="#tips/13"
><strong>tar on remote file system ...</strong></a>
<li><A HREF="#tips/14"
><strong>Your article in Linux gazette</strong></a>
<li><A HREF="#tips/15"
><strong>Diald and AIM</strong></a>
<li><A HREF="#tips/16"
><strong>Geforce2 and X 4.0.1</strong></a>
<li><A HREF="#tips/17"
><strong>Setting up print filters</strong></a>
<li><A HREF="#tips/18"
><strong>More e2label scripting</strong></a>
<li><A HREF="#tips/19"
><strong>RE: reading a number in a bash shell script. Here is my final sc</strong></a>
<li><A HREF="#tips/20"
><strong>RE: Trident NTSC drivers</strong></a>
<li><A HREF="#tips/21"
><strong>A rather unique query -- solved!</strong></a>
<li><A HREF="#tips/22"
><strong>Shebang problems</strong></a>
<li><A HREF="#tips/23"
><strong>How to hack a proxy (LG #53, Query number 16, I think)</strong></a>
<li><A HREF="#tips/24"
><strong>bogo</strong></a>
<li><A HREF="#tips/25"
><strong>Ben_Okopnik</strong></a>
<li><A HREF="#tips/26"
><strong>Measure your modem connection - Bogospeed</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">2c tip: finding out your home router's ip address using lynx</FONT></H3>
Sun, 7 Jan 2001 13:35:57 -0500 (EST)
<BR>matthew willis<a href="mailto:tag@ssc.com"> (matt from optimus.cee.cornell.edu)</a>
<!-- sig -->
<P>
Some popular home routers like the Linksys BEFSR41 work well with
linux but finding out the external address of the router (e.g. to
update some dynamic DNS service) can require manual intervention,
like using a web browser and pen and paper. The Linksys device can be
automatically queried about its external IP address using the text
browser, lynx:
</P>
<blockquote><pre> lynx -auth=\ :admin http://192.168.1.1/Status.htm -dump
</pre></blockquote>
<P>
You can then parse the output for the IP address you need, using PERL
or your favourite scripting tool. For example, here is how I chained
sed and awk to find the line "IP Address" that comes in the "WAN"
section:
</P>
<blockquote><pre> lynx -auth=\ :admin http://192.168.1.1/Status.htm -dump | sed "1,/WAN/d" | awk -F: '/IP Address/{print $2}'
</pre></blockquote>
<P>
Note that there is a single space between "\" and ":admin".
</P>
<P>
- Matt Willis
</P>
<!-- sig -->
<!-- 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">2cent tip Available space available on Hd - follow up</FONT></H3>
Sat, 6 Jan 2001 06:43:49 -0800
<BR>Ted Potter<a href="mailto:tag@ssc.com"> (tpotter from techmarin.com)</a>
<!-- sig -->
<P>
yes and for those of us who can not do the math include the -h command line
option!
</P>
<P>
here -
</P>
<blockquote><pre> df
Filesystem 1k-blocks Used Available Use% Mounted on
/dev/hda1 2028098 1603178 320098 83% /
/dev/hda3 9991422 607203 8865722 6% /home
/dev/hdb 60334 60334 0 100% /mnt/cdrom
df -h
Filesystem Size Used Avail Use% Mounted on
/dev/hda1 1.9G 1.5G 313M 83% /
/dev/hda3 9.5G 593M 8.5G 6% /home
/dev/hdb 59M 59M 0 100% /mnt/cdrom
</pre></blockquote>
<P>
--
Ted Potter
</P>
<!-- sig -->
<!-- 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">Tech tip -- removing all files except *.c</FONT></H3>
Mon, 15 Jan 2001 13:10:40 -0800
<BR>Jane Liu <a href="mailto:tag@ssc.com">(anonymous)</a>
<P><STRONG>
I have a question about rm command. Would you please tell me how to remove
all the files excepts certain files like anything ended with .c?
</STRONG></P>
<P>
The easiest way (meaning it will work on any Unix systems anywhere), is
to move those files to a temporary directory, then delete "everything",
then move those files back.
</P>
<blockquote><pre>mkdir /tmp/tdir
mv *.c /tmp/tdir
rm *
mv /tmp/tdir/* .
rmdir /tmp/tdir
</pre></blockquote>
<!-- sig -->
<!-- sig -->
<!-- sig -->
<!-- end 3 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<P> <A NAME="tips/4"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
<FONT COLOR="navy">netscape to read html files ( $0.02 )</FONT></H3>
Sun, 07 Jan 2001 02:13:27 -0500
<BR>Allan Peda<a href="mailto:tag@ssc.com"> (allan from panix.com)</a>
<!-- sig -->
<P>
I usually have netscape open, and I also have several terms open, also
some files only have html documentation (e.g., htdig ). I added this
bash function to my .bash_profile to send a file to netscape at the
command line. (for a list of the options type netscape -help):
</P>
<blockquote><pre>function ns () {
if [ "." = "$(dirname $1)" ]; then
argpath=$(pwd)
else
argpath=$(dirname $1)
fi
url_arg=${argpath}/$(basename $1)
netscape -remote "openURL(file://$url_arg)"
unset argpath url_arg
}
export -f ns
</pre></blockquote>
<P>
So for README its :
</P>
<blockquote><pre>me@box] vi README
</pre></blockquote>
<P>
but for README.html
</P>
<blockquote><pre>me@box] ns README
</pre></blockquote>
<!-- sig -->
<!-- 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">Need info (Need Outlook to speak to Linux) (Issue 61, 2 cent tips)</FONT></H3>
Tue, 02 Jan 2001 21:28:03 -0500
<BR>Anthony E. Greene<a href="mailto:tag@ssc.com"> (agreene from pobox.com)</a>
<!-- sig -->
<P>
...no less than 5 people mentioned...
</P>
<P>
It sounded like the poster wanted to provide native MS Exchange services
using a UNIX/Linux server. If so, she should look into HP OpenMail
(<A HREF="http://www.hp.com/go/openmail"
>http://www.hp.com/go/openmail</A>).
</P>
<P>
Anthony
</P>
<P>
... P Kelly from pksings.com cared to add...
</P>
<P>
HP openmail, free for under 50 users. Not super easy to install but
free....
</P>
<P>
PK
</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">2-cent tip - module resource detection</FONT></H3>
Mon, 22 Jan 2001 10:58:20 -0800
<BR>Ben Okopnik <a href="mailto:tag@ssc.com">(TAG)</a>
<P>
We started doing something interesting in Tips - we have some good
scripts to do nice little things. But, a lot of people have reported
difficulty doing the necessary cut-and-paste. So I'm sure you'll
be glad to know that a number of these will now be completely seperate
files with a .txt extension, so that they can be downloaded safely.
</P>
<P>
Tip: As long as you have a #! line, linux doesn't care in the least
whether the filename has a reasonable extension... or any at all, for
that matter.
</P>
<P>
Here's the popularly requested resource detection script.
</P>
<p>See attached <a href="misc/tips/shotgun.bash.txt">misc/tips/shotgun.bash.txt</a></p>
<!-- sig -->
<!-- sig -->
<!-- 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">8 Cents Worth</FONT></H3>
Tue, 16 Jan 2001 13:56:39 -0500
<BR>Heather<a href="mailto:tag@ssc.com"> (star from starshine.org)</a>
<!-- ::
8 Cents Worth
~~~~~~~~~~~~~
:: -->
<P>
[near the tail end of a thread where we are being <EM>really</EM> careful with rm]
</P>
<P><STRONG><FONT COLOR="#006633"><EM>
[Dan]
It would be prudent to try the thing out in a directory containing
only expendable files with names similar to the intended victims/saved.
</EM></FONT></STRONG></P>
<P><STRONG><FONT COLOR="#006633"><EM>
[Dan]
I've more than once had to resort to backups due to a slip of the
fingers (the brain?) with an "rm" expression.
</EM></FONT></STRONG></P>
<P>
Note that he actually has known good backups to resort to.
</P>
<P><STRONG>
[Heather]
tip: echo (rest of command)
</STRONG></P>
<P><STRONG>
will reveal what globbing is about to inflict on you. Won't solve
everything, but at least you'll be safe from the shell's perspective.
</STRONG></P>
<P><STRONG><FONT COLOR="#000066"><EM>
[Ben]
Good call! It's also well worth checking out the "shopt" built-in command,
particularly the "extglob" and "nullglob" options (I sort of wonder why
"bash" doesn't default to those being on); they can make dealing with
globbing a slightly friendlier experience - as well as slightly more
intuitive, in my opinion.
</EM></FONT></STRONG></P>
<!-- end 7 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<P> <A NAME="tips/8"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
<FONT COLOR="navy">Shebang problems</FONT></H3>
Sat, 20 Jan 2001 16:54:52 +0100
<BR>NLH AS<a href="mailto:tag@ssc.com"> (nlhas from online.no)</a>
<!-- sig -->
<P>
You have a question & answer on Linux Gazette with title:
</P>
<P><BLOCKQuote>
shell cannot see an existing file --or--
<TT>./script:</TT> No such file or directory
</BLOCKQuote></P>
<P>
One possibility you don't mention, which I've just found out the hard way
(ie. by using a lot of time) is that the file should not have been written
with a dos/windows editor (eg. on a samba share). CRLF at the end of the
shebang line causes exactly the chain of frustrations your correspondent
describes -- as far as I can be bothered to test (more time) this seems to
be completely consistent for bash and python scripts with a shebang line.
</P>
<P>
Oddly enough removing the shebang line makes the thing work -- the shell
<TT>exec()</TT> which you also describe is not CRLF sensitive.
</P>
<P>
Paul Mothersdill
</P>
<!-- sig -->
<!-- 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">about Unix command ps</FONT></H3>
Fri, 26 Jan 2001 14:24:31 -0800
<BR>Jane Liu <a href="mailto:tag@ssc.com">(anonymous)</a>
<!-- sig -->
<P><STRONG>
Is there a way to find out the date when a process is created?
</STRONG></P>
<P>
"ps aux" shows the date and a lot of other information as well.
You can use
</P>
<blockquote><pre>ps aux | grep DESIRED_COMMAND_NAME
</pre></blockquote>
<P>
to filter out unwanted processes, or specify the process ID as
</P>
<blockquote><pre>ps aux 1234
</pre></blockquote>
<P>
...so, she tried that, but it wasn't what she needed...
</P>
<P><STRONG>
I am using HP unix. ps -aux is the same as ps. It gives only the execution
time, but not the elapse time. Any other options?
</STRONG></P>
<P><CODE>
ps has a bazillion options; see if elapsed time is listed in the manpage.
</CODE></P>
<P>
If the process hasn't started yet and you don't need the time until after
it's over, there's the "time" command.
</P>
<P>
-- Mike Orr
</P>
<!-- sig -->
<!-- end 9 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<P> <A NAME="tips/10"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
<FONT COLOR="navy">Linux security FAQ</FONT></H3>
Tue, 2 Jan 2001 08:43:51 -0800
<BR>Anonymous Coward<a href="mailto:tag@ssc.com"></a>
<!-- sig -->
<P>
The Linux Security FAQ has been slashdotted.
</P>
<P>
<A HREF="http://www.linuxsecurity.com/docs/colsfaq.html"
>http://www.linuxsecurity.com/docs/colsfaq.html</A>
</P>
<!-- sig -->
<!-- sig -->
<!-- end 10 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<P> <A NAME="tips/11"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
<FONT COLOR="navy">renaming directories</FONT></H3>
Wed, 03 Jan 2001 19:45:46 -0600
<BR>k.s. yeriazarian<a href="mailto:tag@ssc.com"> (crzybug from hotmail.com)</a>
<P><STRONG>
how do you rename/change names on directories? thanks
</STRONG></P>
<P>
Use the 'mv' command.
</P>
<P>
Please send follow-ups or future questions in text format rather than
HTML. It makes it easier to read them.
</P>
<!-- sig -->
<!-- sig -->
<!-- end 11 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<P> <A NAME="tips/12"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
<FONT COLOR="navy">hi im a moron</FONT></H3>
Sun, 28 Jan 2001 19:51:20 -0800
<BR>luciferxe<a href="mailto:tag@ssc.com"> (luciferxe from mediaone.net)</a>
<!-- sig -->
<P>
On Sat, Jan 27, 2001 at 01:22:57AM -0500, . wrote:
</P>
<P><STRONG>
hi im just wondering how to make a swapfile on my linux sys
</STRONG></P>
<P>
I beg to differ about that "moron" part. After all, you knew enough
to ask a question in the right place!
</P>
<P>
I'm assuming you really want a swapfile, as opposed to a swap partition.
</P>
<P>
A swapfile will be slower than a partition, but it can be a handy
thing for that sporadic task that really chews up memory.
</P>
<P>
The way I usually do it is first to make a zero-filled file of the desired
size using "dd":
</P>
<blockquote><pre> dd if=/dev/zero of=/usr/tmp/newswapfile bs=1024 count=65536
</pre></blockquote>
<P>
for a 64M swapfile. Vary "count" as desired. Then
</P>
<blockquote><pre> mkswap /usr/tmp/newswapfile
swapon /usr/tmp/newswapfile
</pre></blockquote>
<P>
If you wish to have the swapfile mounted at boot time, find the
appropriate place in your init scripts and add the "swapon" command.
</P>
<P>
See "man mkswap", "man dd", "man swapon" for more info on swapfiles.
</P>
<P>
--
Dan Wilder
</P>
<!-- sig -->
<!-- end 12 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<P> <A NAME="tips/13"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
<FONT COLOR="navy">tar on remote file system ...</FONT></H3>
Mon, 15 Jan 2001 17:27:47 -0500
<BR>Hansjoerg Graesslin<a href="mailto:tag@ssc.com"> (hansjoerg.graesslin from wega-informatik.ch)</a>
<!-- sig -->
<P>
On Mon, Jan 15, 2001 at 07:16:28AM +0000, Hansjoerg Graesslin wrote:
</P>
<P><STRONG>
Hi,
I read your article about making backup to remote tape devices,
but is there any way to make a backup on a remote file system with the
tar command ??
</STRONG></P>
<P><STRONG>
I tried :
</STRONG></P>
<code><strong><font color="#000033"><br>tar czSf - test | rsh -l operator remotehost
</font></strong></code>
<P><STRONG>
and get something strange ...
</STRONG></P>
<code><strong><font color="#000033"><br>$ tar czSf - test | rsh -l oracle skye
<br>tar: z: unknown option
<br>Usage: tar {txruc}[vfbFXhiBelmopwnq[0-7]] [-k size] [tapefile]
<br>[blocksize] [exc.
<br>tcgetattr: Invalid argument
<br>ioctl I_PUSH ttcompat: No such device or address
<br>$
</font></strong></code>
<P>
That's not particularly strange, given that you seem to be using something
other than GNU tar. There are many different versions out there; which one
do you have? GNU's version has supported "z", the "filter through gzip"
switch, since at least early 1997, when I started using it. So, what's
happening above is that "tar" fails with fireworks - and pipes something
of that to "rsh", which also explodes and screams in agony (hmm. Too many
Schwarzenegger movies lately, I guess.) A hint for next time: when you
have a problem that involves several programs. <EM>separate them</EM> in order to
find out which one is giving you a problem (or at least, which problem.)
It's much easier to troubleshoot things that way.
</P>
<P><STRONG>
any ideas ??
</STRONG></P>
<P>
Yes. Go to <A HREF="http://www.gnu.org"
>http://www.gnu.org</A> and download the latest version of "tar".
Compile it, run it, and if you encounter any problems at that point, write
to us again. This time, include the versions of both "tar" and "rsh", as
well as which distro and version of Linux you're using. I have a feeling,
though, that the first suggestion will fix the problem.
</P>
<!-- sig -->
<!-- sig -->
<!-- end 13 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<P> <A NAME="tips/14"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
<FONT COLOR="navy">Your article in Linux gazette</FONT></H3>
03 Jan 2001 19:32:03 +0200
<BR>Jani Grnberg<a href="mailto:tag@ssc.com"> (chardhros from oneccuva.org )</a>
<!-- sig -->
<P>
Hi,
</P>
<P>
I scanned through your article in Linux gazette today, and having used
a configuration similar to this about a year ago, I thought that you
might appreciate this information:
</P>
<P><BLOCKQuote>
Lilo can write the boot sector information directly to a file so the
stuff with lilo.dummy and dd is not necessary. E.g. in my
configuration, <TT>/dev/hda1</TT> contained a vfat partition including the NT
loader (mounted to <TT>/dos</TT> in linux). I had the line:
</BLOCKQuote></P>
<blockquote><code><font color="#000033"><br>boot=/dos/bootsect.lin
</font></code></blockquote>
<P>
in my <TT>/etc/lilo.conf</TT> and provided that the partition is mounted and a
file exists (first time do "touch <TT>/dos/bootsect.lin</TT>") it should work
(unfortunately I'm currently using a different configuration so I
can't verify if i forgot something).
</P>
<P>
There can be issues if you have a large hard disk and the linux kernel
is not in the beginning; these are better covered in other documents,
but to avoid these I also copied my kernel to <TT>/dos/linux/vmlinuz.</TT> I'm
not sure if these are still valid with the current versions of lilo, though.
</P>
<P>
//jani
</P>
<!-- sig -->
<!-- end 14 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<P> <A NAME="tips/15"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
<FONT COLOR="navy">Diald and AIM</FONT></H3>
Fri, 19 Jan 2001 19:37:26 -0600
<BR>Michael Ikemeyer<a href="mailto:tag@ssc.com"> (ikemeyer from brick.net)</a>
<!-- sig -->
<P>
Answerguy,
</P>
<P>
I've notice a strange anomaly in the last couple of months when using DIALD
to connect to any local ISP. I have a simple setup, boxA (the MASQ, RedHat
5.2) and boxB (private IP, Win98). Everything works great except when I try
to use AOL's Instant Messenger. Upon starting AIM the usual happens...
Connecting.... Verifying username and password... Starting services.... then
the roadblock of "Connection lost. Check your Internet connection". Viewing
my log files I get "kernel: MASQ: failed TCP/UDP checksum from
64.12.24.172". However, if I dial up any ISP with a normal pppd script (less
the SLIP interfaces involved for diald) it works. At this point I'm not
sure what I need to do to resolve this problem. Have any ideas?
</P>
<P>
Thank you,
Michael
</P>
<P>
... but he solved it!
</P>
<P>
Answerguy,
</P>
<P>
I have resolved my problem by passing the following to pppd when starting
diald...
</P>
<blockquote><pre>/usr/sbin/diald -f /etc/diald/diald.conf -- asyncmap 20A0000 escape FF
</pre></blockquote>
<!-- end 15 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<P> <A NAME="tips/16"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
<FONT COLOR="navy">Geforce2 and X 4.0.1</FONT></H3>
Wed, 3 Jan 2001 10:30:32 -0400 (VET)
<BR>Ernesto Hernandez-Novich<a href="mailto:tag@ssc.com"> (emhn from telcel.net.ve)</a>
<P>
Lots of people sent help about the Geforce card! Thanks bunches! -- Heather
</P>
<P>
...
</P>
<P>
Regarding Ron Nicholls question in "The Mailbag" (January 2001) on using
an nVidia Geforce2 card under XFree86 4.0.1
</P>
<P>
As of today, he has two alternatives:
</P>
<P><BLOCKQuote>
1. He can download the binary drivers provided by nVidia, which are
</BLOCKQuote></P>
<P>
designed to work in 4.0.1 <EM>replacing</EM> XFree's drivers. These
drivers will give him <EM>improved</EM> 2D acceleration and 3D acceleration
via GLX. I've been using this setup with an nVidia RIVA TNT2 and
a Geforce2 GTS (both 32Mb) with no problems whatsoever.
</P>
<P>
...another reader noted that the driver has to be compiled to match your
kernel version. He must be using the source rpm, I think - Gustavo Alday
found a complicated URL which seems to hit paydirt:
</P>
<P><BLOCKQuote>
<A HREF="http://www.nvidia.com/Products/OpenLinuxDwn.nsf/b99b7f622d429347882568c800771b6c?OpenView&Start=1&Count=30&Expand=2#2"
>http://www.nvidia.com/Products/OpenLinuxDwn.nsf/b99b7f622d429347882568c800771b6c?OpenView&Start=1&Count=30&Expand=2#2</A>
</BLOCKQuote></P>
<P>
2. He can grab 4.0.2 (compile it himself and/or get binaries) for
</P>
<P>
very decent 2D acceleration for <EM>any</EM> nVidia card, including GeForce2s.
I tried this the day after 4.0.2 but unfortunately had trouble getting
the GLX extensions to work so I switched back to 4.0.1
</P>
<P>
...Michael Coyne (michael from coyne.tc) noted that Mandrake 7.2 autodetected
his card, though he suspects DRI support isn't active, and that he has used
his card happily on a continuously upgraded RedHat system with the generic
nvidia server.
</P>
<P>
The instructions included with the nVidia drivers are more than enough
to get it to work, so check out the drivers at
</P>
<P>
<A HREF="http://www.nvidia.com/Products/Drivers.nsf/Linux.html"
>http://www.nvidia.com/Products/Drivers.nsf/Linux.html</A>
</P>
<P>
Hope this helps.
</P>
<P>
And to the nVidia people: PLEASE OPEN UP YOUR DRIVERS!
-- Ernesto Hernndez-Novich
</P>
<P>
...ah, but Ryan Phillips (ryan.phillips from csus.edu) seems to have
exactly what our querent wanted; the same system in good working order,
and a pointer to a URL describing how:
</P>
<P><BLOCKQuote>
<A HREF="http://www.evil3d.net/articles/linux/howto/nvidia/redhat7"
>http://www.evil3d.net/articles/linux/howto/nvidia/redhat7</A>
</BLOCKQuote></P>
<P>
Thanks again, everyone!
</P>
<!-- end 16 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<P> <A NAME="tips/17"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
<FONT COLOR="navy">Setting up print filters</FONT></H3>
Wed, 3 Jan 2001 16:00:51 -0700
<BR>Simeon ben Nevel<a href="mailto:tag@ssc.com"> (snevel from sonic.net)</a>
<!-- sig -->
<P>
Hi Answer Folks!
</P>
<P>
In issue 61 there was an Answer Guy question on getting an Epson Stylus
670 to work under linux.
</P>
<P>
Making color printers work seems to be a <EM>very</EM> common question on the
various linux fora and newsgroups with very few answers forthcoming.
</P>
<P>
I'd like to recommend turboprint from <A HREF="http://www.turboprint.de"
>http://www.turboprint.de</A>
</P>
<P>
It supports a wide variety of Epson, Canon and Hewlett-Packard color
printers (including my Canon BJC-3000!).
</P>
<P>
It's currently at version 0.70 and is free (as far as I can tell from the
web-site). No source is provided however.
</P>
<P>
It installed quite easily from a tar-ball and works like a dream for me.
</P>
<P>
The install process will even "probe" your system looking for "helper"
programs (like enscript, a2ps or html2ps) that the filter uses to handle
various sorts of files and let you know what you're missing.
</P>
<P>
(Actually finding RPMs for the various pieces and getting the dependencies
resolved is another issue entirely <g>
<IMG SRC="../gx/dennis/smily.gif" ALT=";)"
height="24" width="20" align="middle">
</P>
<P>
You can set up multiple configurations for a single printer to handle
different print media (plain paper, glossy paper, transparencies),
different print media sizes, different resolutions and has a whole range
of other adjustments for color saturation and absolute page positioning.
</P>
<P>
The latest version even has a couple of graphical (gtk based I believe)
application to do the configuration in addtion to ncurses based tools.
</P>
<P>
Best of all, the fellow who created turboprint answered my dumb
configuration question very promptly and in English!
</P>
<P>
There is also <A HREF="http://www.linuxprinting.org"
>http://www.linuxprinting.org</A> with a wealth of other
information. (Hmm.. I couldn't get there just now <shrug>
<IMG SRC="../gx/dennis/smily.gif" ALT=";)"
height="24" width="20" align="middle">
</P>
<P>
You might also check out the Linux Hardware Database at:
</P>
<P><BLOCKQuote>
<A HREF="http://lhd.datapower.com"
>http://lhd.datapower.com</A>
</BLOCKQuote></P>
<P>
Which has a section on printers.
</P>
<P>
I hope this information is useful.
</P>
<P>
Simeon ben Nevel
--
</P>
<!-- sig -->
<!-- end 17 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<P> <A NAME="tips/18"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
<FONT COLOR="navy">More e2label scripting</FONT></H3>
Sat, 30 Dec 2000 14:36:05 -0500
<BR>Allan Peda<a href="mailto:tag@ssc.com"> (allan from panix.com)</a>
<!-- sig -->
<P>
I was not satisfied with the label display script that I wrote and sent
in about 1 week ago because it ignored SCSI devices. This one should be
a little more generic.
</P>
<P>
Allan
</P>
<p>See attached <a href="misc/tips/label.sh.txt">misc/tips/label.sh.txt</a></p>
<!-- sig -->
<!-- end 18 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<P> <A NAME="tips/19"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
<FONT COLOR="navy">RE: reading a number in a bash shell script. Here is my final sc</FONT></H3>
Thu, 11 Jan 2001 13:21:39 -0500
<BR>Steven Kladitis<a href="mailto:tag@ssc.com"> (stevenkladitis from revsysinc.com)</a>
<!-- sig -->
<P><STRONG>
My name is Steven and I was wondering if there is an easy way in a bash
shell script to tell if the variable you read is numberic?
</STRONG></P>
<P><STRONG>
For example
</STRONG></P>
<P><STRONG><CODE>
#!/bin/bash
<BR>#set -x
</CODE></STRONG></P>
<P>
Just a comment here: the above line is unnecessary. The "-x" argument
can be used with "<TT>/bin/bash</TT>" directly to get the same effect.
</P>
<blockquote><code><font color="#000033"><br>echo -n 'Enter a number '
<br>read x
<br>????????????
</font></code></blockquote>
<P><STRONG>
How can I tell if $x is numeric easily?
I have read and reread the docs, but I see no number test. I was thinkg
about trap but I do not understand how it works.
</STRONG></P>
<P>
'trap' has no relation to what you're trying to do; it deals with
signals. Here is what you want:
</P>
<blockquote><pre>[ $(echo $value|grep -c "[^0-9]") -gt 0 ] && echo "Not a number."
</pre></blockquote>
<P>
We simply ask "grep" to check for the presence of non-numeric
characters, and echo a message if they're present.
</P>
<P>
Shell variables can be declared as numeric via the "declare" or
"typeset" commands; they do fairly well with strings like "abCD43" by
reading them as 0, but fail, very loudly, on strings that <EM>start</EM> with
a digit:
</P>
<blockquote><pre>value too great for base (error token is "3x")
</pre></blockquote>
<P>
The "grep" test always returns sensible output.
</P>
<P>
-- Ben Okopnik
</P>
<P>
This script will read a tnsnames.ora file ( Oracle stuff ) and connect ou to
the appropiate instance in sqlplus. Thanks for your help!!!
</P>
<P>
Steve
</P>
<p>See attached <a href="misc/tips/spdist.bash.txt">misc/tips/spdist.bash.txt</a></p>
<!-- sig -->
<!-- end 19 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<P> <A NAME="tips/20"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
<FONT COLOR="navy">RE: Trident NTSC drivers</FONT></H3>
Tue, 30 Jan 2001 17:21:23 -0600
<BR>Darrick Hartman<a href="mailto:tag@ssc.com"> (dhartman from quixnet.net)</a>
<P>
Heather--
</P>
<P>
Since I wrote [asking after the trident drivers] I discovered that no additional drivers are needed. What I DID find is Trident's manual is WRONG about the jumper on the card. It says it needs to be off to auto detect whether the card is connected to a vga or composite video device. In fact, it needs to be ON...jumpered to work correctly. Exactly opposite of the manual. If this helps someone, please pass it along.
</P>
<P>
Later--
</P>
<P>
Darrick
</P>
<!-- end 20 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<P> <A NAME="tips/21"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
<FONT COLOR="navy">A rather unique query -- solved!</FONT></H3>
Tue, 02 Jan 2001 11:31:44 -0800 (PST)
<BR>Karen Gartner<a href="mailto:tag@ssc.com"> (Puppy_Diddlitz from go.com)</a>
<!-- sig -->
<P>
First - THANK YOU to everyone who made suggestions and
offered expertise on solving this problem. I was just mucking about in my linux directories - searching for config files when ...
</P>
<P>
The SOLUTION: Install the GL1 driver package as is. Copy the actual driver file "firegl1" to <TT>/dev.</TT> Pico XF86Config-4, add the driver name to the video card device, and change the default video depth to 24. Then run startx at the command prompt and inko presto - graphics!
</P>
<P>
Now I don't have to worry about changing the kernel - thank heavens!
</P>
<P>
Thank you all so much!
Karen Gartner
</P>
<!-- end 21 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<P> <A NAME="tips/22"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
<FONT COLOR="navy">Shebang problems</FONT></H3>
Sat, 20 Jan 2001 16:54:52 +0100
<BR>NLH AS<a href="mailto:tag@ssc.com"> (nlhas from online.no)</a>
<!-- sig -->
<P>
You have a question & answer on Linux Gazette with title:
</P>
<P><BLOCKQuote>
shell cannot see an existing file --or--
<TT>./script:</TT> No such file or directory
</BLOCKQuote></P>
<P>
One possibility you don't mention, which I've just found out the hard way
(ie. by using a lot of time) is that the file should not have been written
with a dos/windows editor (eg. on a samba share). CRLF at the end of the
shebang line causes exactly the chain of frustrations your correspondent
describes -- as far as I can be bothered to test (more time) this seems to
be completely consistent for bash and python scripts with a shebang line.
</P>
<P>
Oddly enough removing the shebang line makes the thing work -- the shell
<TT>exec()</TT> which you also describe is not CRLF sensitive.
</P>
<P>
Paul Mothersdill
</P>
<!-- sig -->
<!-- end 22 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<P> <A NAME="tips/23"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
<FONT COLOR="navy">How to hack a proxy (LG #53, Query number 16, I think)</FONT></H3>
Wed, 24 Jan 2001 14:04:50 +0400
<BR>Faisal Halim<a href="mailto:tag@ssc.com"> (faisal_hal from hotmail.com)</a>
<!-- sig -->
<P>
Dear Iman,
</P>
<P>
I would suggest you visit <A HREF="http://www.anonymiser.org"
>http://www.anonymiser.org</A> or
<A HREF="http://www.privatesurfing.com"
>http://www.privatesurfing.com</A> and use their free service. But be
careful, your administrator gets suspicious, and even these sites can
get blocked. [That is a risk I have to live with when using my
ISP-Emirates Internet and Multimedia.]
</P>
<P>
You can use a good search engine like <A HREF="http://www.google.com"
>http://www.google.com</A> and enter
"anonymiser" in the search box. Or better yet, use this search engine to
search for your topic of interest, and retrieve your page of interest
from Google's cached pages. Since Google will fetch the page for you,
your proxy will 'be tricked into thinking you are receiving a page from
Google'!
</P>
<P>
Alternatively, you could use one of the online web page caching servers
(search for "free ISP" on Google's search engine) to fool your proxy
server in a similar way.
</P>
<P>
And here is a method my friend claims to have used, but I never tested
myself. I don't even know the legal implications of using this system.
do this at your own risk. Set your http proxy to one that is outside
your network. That way, (theoretically) you will use your local network
proxy to access the net, use the net to access this other proxy, which
in tern you will use to access the hackers' sites.
</P>
<P>
You might have noticed (and in fact you should have noticed by now, that
using any of the methods I gave you, you will simply fool your network
proxy, not crack it.
</P>
<P>
You Wanted To Crack, Not Hack
There are great differences between hacking and cracking. Please check
out the page, "How to become a Hacker" at <A HREF="http://www.tuxedo.org"
>http://www.tuxedo.org</A>
</P>
<P>
Salaam, and Goodbye
Faisal Halim
</P>
<!-- sig -->
<!-- end 23 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<P> <A NAME="tips/24"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
<FONT COLOR="navy">bogo</FONT></H3>
Tue, 2 Jan 2001 08:44:46 -0500
<BR>Kurt V. Hindenburg <a href="mailto:tag@ssc.com">(anonymous)</a>
<!-- sig -->
<P><STRONG>
Hello,
</STRONG></P>
<P><STRONG>
I tried your little bogo script. I installed bing-1.1.3 and traceroute
-1.4a7. However ,when I execute the bogo script I get the following:
</STRONG></P>
<code><strong><font color="#000033"><br>(kvh)-(20:15)-(~)> ./bogo
<br>
<br>real 0m24.083s
<br>user 0m0.010s
<br>sys 0m0.000s
<br>
<br>Ping time to ISP: ms
<br>Measuring speed...
</font></strong></code>
<P>
If you take a look at the script itself, you'll note that the comment
immediately following the script description tells you to change the
default ISP name (www.mindspring.com) to your own ISP's URL. Also note
that in my 2-cent tip I wrote:
</P>
<P><BLOCKQuote>
"... it prints the time that is required for the first 'ping' to reach your
ISP, as well as the time that it takes to execute that ping. In my
experience, if that execution time is much longer than 3 seconds, you've
got a poor connection and should try redialing."
</BLOCKQuote></P>
<P>
24 seconds, as your output above shows, is quite a bit longer than 3
seconds. What it's saying is that the ping is probably not getting through
to MindSpring (unless you've modified $ISP) at all - most likely, it's
timing out. I recommend that you 1) replace "mindspring" with your ISP's
URL, and 2) ping that URL once you're connected to see the results.
</P>
<!-- sig -->
<!-- sig -->
<!-- end 24 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<P> <A NAME="tips/25"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
<FONT COLOR="navy">Ben_Okopnik</FONT></H3>
Tue, 2 Jan 2001 11:50:01 -0500
<BR>Werner Gerstmann<a href="mailto:tag@ssc.com"> (WGerstmann from nexgo.de)</a>
<P>
Werner Gerstmann wasn't the only person who asked what 'bing' was, but
he did have a curious reason to be unsure:
</P>
<P><STRONG><BLOCKQuote>
Hallo Ben,
</BLOCKQuote></STRONG></P>
<P><STRONG>
in #61 of LG I found some nice scripts of yours. One question: in the
one for measuring a modem
connection, a progamme's name is "bing" or "ping" ?? For me it's a bit
funny, because in Germany
we have a regional slang (the Saxons), they cannot distinguish "d" and
"t" or "b" and "p" (the soft and the
hard ones), but normally only if they speak ! ! If "bing" is correct
please give me a hint where to find it.
</STRONG></P>
<P><STRONG>
Regards Werner
</STRONG></P>
<P>
It's "bing", an "empirical stochastic bandwidth tester" as its author
calls it, with the 'b' coming from the term "bandwidth". I just think of
it as a smarter "ping". In <A HREF="http://www.debian.org/">Debian</A>, it's part of the distribution, as part
of the "net" category; their source for it was 'bing_1.0.4.orig.tar.gz',
available at their site.
</P>
<P>
<ftp.debian.org/debian/dists/potato/main/source/net/bing_1.0.4.orig.tar.gz>
</P>
<!-- sig -->
<!-- end 25 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<P> <A NAME="tips/26"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
<FONT COLOR="navy">Measure your modem connection - Bogospeed</FONT></H3>
Sat, 20 Jan 2001 10:50:27 -0500
<BR>Joe St.Clair - KSI Machine & Engineering<a href="mailto:tag@ssc.com"> (ksimach from ksimachine.com)</a>
<!-- sig -->
<P>
On Sat, Jan 20, 2001 at 10:27:14AM -0500, Joe St.Clair - KSI Machine & Engineering wrote:
</P>
<P><STRONG>
What it "bing" that is needed for the "Bogospeed" script?
</STRONG></P>
<P>
A lot of folks have written in to ask this same question. I'll admit to
being a bit surprised, but here's some easily-retrieved info.
</P>
<P>
A search on Google for "bing and linux" brings up over 10,000 hits. The very
first of these says
</P>
<P>
"<A HREF="http://www.debian.org/">Debian</A> GNU/Linux -- bing Package: bing 1.0.4-5.3.1. Empirical stochastic
bandwidth tester."
</P>
<P>
For those of you who are left as unenlightened by this as I was, it's just
a fancy way of saying "a smarter version of 'ping'".
</P>
<P>
Yep; that's the dude. In fact, due to the fact that the author of "bing"
has unaccountably changed the entire syntax <EM>and</EM> output of "bing" with
the new version, the only one that will work without modifying the script
is version 1.0.4. It's easy enough to download and install. <grin> For
anyone who has read my series on shell scripting here in the LG, modifying
it for the new version should be a trivial task.
</P>
<P>
As well, here is the "new and improved" version of the "speed" script; due
to feedback from several of our readers, I've generalized the IP/time
parsing routine, which should make it a bit more useable.
</P>
<!-- sig -->
<P><STRONG><FONT COLOR="#000066"><EM>
I took the liberty of promoting the warning comment to an actual message,
in case anyone finds it useful enough to leave lying around. -- Heather
</EM></FONT></STRONG></P>
<p>See attached <a href="misc/tips/speed.bash.txt">misc/tips/speed.bash.txt</a></p>
<!-- sig -->
<!-- end 26 -->
<H4 ALIGN="center">
"Linux Gazette...<I>making Linux just a little more fun!</I>"
</H4>
<P> <HR> <P>
<!--===================================================================-->
<center>
<H1><font color="maroon">Linux in British Schools</font></H1>
<H4>By <a href="mailto:journalism@bajgar-computing.co.uk">James "Badger" Bajgar</a></H4>
</center>
<P> <HR> <P>
<!-- END header -->
<P>Technology has changed dramatically over the last few years in terms of
computers and their hardware/software, but how has it changed in
school and education?
<P>Let's look at one secondary school in the UK. This school used to complete
GCSE and A-level work on 386s until just about 2 years ago when they managed
to upgrade to brand new PCs, and since then get new PCs quite regularly. So
they will now have well over 150 PC's for around 1500 pupils (including 6th
form), although some schools would find it hard to get enough for just one
class with around 30 pupils.
<P>These systems are good too. They are in working condition by a
on-site technician. The specs are good, especially as they are mainly used for
teaching the basics to younger pupils. By the time they are doing
GCSE/A-level work, it is not necessary for a very high spec as most of the
work by then is simple office work, especially a lot of word processing, even
so they have some very fast systems.
<P>All these computers are networked, so any pupil can log on and then get
their previously-saved documents on any computer in the school. This also
prevents pupils from messing about with the BIOS and control panel settings,
etc., since they each have a individual name witch can be traced.
<P>But what is at the centre of all this? Well since Windows is seen by many
people as easier to get to grips with, that would seem a good choice. But Linux
Versions are now just about as easy--they no longer require large amounts of
knowledge. Then, since these computers are all networked, Linux would be a good
option. Also, what is the whole point of education?- to get qualifications for a
job. It is thought Linux is fast becoming more popular (if not already) than
Windows, and more and more computers in businesses run Linux, so people going
into any area of business would benefit from the experience of Linux. Also, it
has good networking features, and is more customisable, also by many people it
is thought to be more stable to run than its competitors. Not forgetting the
difference in price: you can pick up a full 6-CD version of SuSE Linux 6 for 30
(or less if you know someone who has it already), and make money out of it!
Compared to possibly hundreds of pounds for competitors' networking OS's.
<P>Therefore, this school runs Linux Red Hat or SuSE, right? WRONG! It runs
Windows! I ask this question to the British government: how are the pupils
supposed to survive in the 'big world' of computing nowadays if they don't have
at least the opportunity to experience at least the basics of another
graphical OS such as Red Hat or SuSE Linux. OK, it is easy to get to grips with
Linux, but nowadays potential employers won't look at you twice unless you've
experienced it, so what are you supposed to do--lie???
<P>So isn't it about time that the government make new guidelines as to how
GCSE and A level are obtained, and allow the support of multi-operating system
knowledge? This would also help show the full possibilities of Linux and
open sourcing in general. Let's not forget the government money saved by using
open-source software instead of the usual software. The benefits are obvious:
no more expensive site software licences!
<P>This would also generate more interest in open-sourcing among the younger
generations. Also showing that the government and local authorities aren't biased
just because they want to collect more TAX, but would support the cheaper
software, even though they wouldn't get as much for themselves. But they
wouldn't need as much, either, since they would no longer have to spend as much
resources investigating software piracy!!!
<!-- *** BEGIN copyright *** -->
<P> <hr> <!-- P -->
<H5 ALIGN=center>
Copyright © 2001, James "Badger" Bajgar.<BR>
Copying license <A HREF="../copying.html">http://www.linuxgazette.com/copying.html</A><BR>
Published in Issue 62 of <i>Linux Gazette</i>, February 2001</H5>
<!-- *** END copyright *** -->
<H4 ALIGN="center">
"Linux Gazette...<I>making Linux just a little more fun!</I>"
</H4>
<P> <HR> <P>
<!--===================================================================-->
<center>
<H1><font color="maroon">Tuxedo Tails</font></H1>
<H4>By <a href="mailto:kasten@sunpuppy.com">Eric Kasten</a></H4>
</center>
<P> <HR> <P>
<!-- END header -->
<IMG ALT="mousedos.png" SRC="misc/kasten/mousedos.png"
WIDTH="370" HEIGHT="510">
<HR NOSHADE WIDTH="80%" ALIGN="center">
<IMG ALT="quaketest.png" SRC="misc/kasten/quaketest.png"
WIDTH="370" HEIGHT="510">
<BR CLEAR="all">
<BLOCKQUOTE><EM>
[Eric also draws the <I>Sun Puppy</I> comic strip at
<A HREF="http://www.sunpuppy.com">http://www.sunpuppy.com</A>. -Ed.]
</EM></BLOCKQUOTE>
<!-- *** BEGIN copyright *** -->
<P> <hr> <!-- P -->
<H5 ALIGN=center>
Copyright © 2001, Eric Kasten.<BR>
Copying license <A HREF="../copying.html">http://www.linuxgazette.com/copying.html</A><BR>
Published in Issue 62 of <i>Linux Gazette</i>, February 2001</H5>
<!-- *** END copyright *** -->
<H4 ALIGN="center">
"Linux Gazette...<I>making Linux just a little more fun!</I>"
</H4>
<P> <HR> <P>
<!--===================================================================-->
<center>
<H1><font color="maroon">PalmOS Development under Linux</font></H1>
<H4>By <a href="mailto:dml6@po.cwru.edu">David "Scooter" Lukens</a></H4>
</center>
<P> <HR> <P>
<!-- END header -->
<B>Abstract</B></P>
This document was inspired by my efforts to get a functioning development
environment up and running on a Linux machine. Trying to put a development
environment together under the Cygwin environment infuriated me so I focused
on getting everything working under Linux. This will explain what software
needs to be installed which includes an emulator, compiler, and SDK. This
will also explain what configuration issues need to be addressed.</P>
<B>Introduction</B></P>
A friend and I one day said, "Wouldn't it be great if we could write our own
palm apps?"</P>
It sounded like a great idea, so I started looking into what it would take
to get a development environment put together. He is primarily a win32
user, and I am almost soley a *nix user. Since win32 was a common platform
available to both of us I began this process by looking into available
tools.</P>
For win32 there are two main ways to go for C development. One of these is
Metrowerk's CodeWarrior for Palm, which was expensive for our hobby style
project. The other option was using the PRC tools that would run under the
cygwin environment. If you are not framilliar with the cygwin package, is
it available from
<A HREF="http://sources.redhat.com/cygwin/">http://sources.redhat.com/cygwin/</A> . The cygwin package
makes your win32 machine feel a lot more like a *nix machine and provides
win32 ports of many common *nix tools (ls, dd, gcc, etc.).</P>
After fighting with the tools on win32 for most of a week and getting
nowhere, I decided to scrap the idea of developing on win32. Therefor,
Linux, specifically RedHat 6.0 and 6.2, was the next choice and the ultimate
solution.</P>
There are several pieces that need to be assembled to get everything working
and usable on Linux. Here is a basic list of what is needed:</P>
<UL>
<LI> Palm Emulator (POSE)
<LI> ROM Image for POSE
<LI> PRC tools (GCC with output for PalmOS)
<LI> PilRC (Resource Compiler)
<LI> PalmOS SDK's
</UL>
</P>
<B>Getting Started (Installing the Emulator)</B></P>
The first part of getting everything going is the POSE Palm Emulator. It
can be retrieved from <A
HREF="http://www.palmos.com/dev/tech/tools/emulator/">http://www.palmos.com/dev/tech/tools/emulator/</A>
along with various skins (graphic representations of the hardware). If you
have compiled programs before, than this should be a snap. POSE does
require the FLTK library for its menus and all. FLTK is available at <A
HREF="http://www.fltk.org">http://www.fltk.org</A>. Again, if you have
compiled any other programs, then this will be very straight forward.</P>
OK, you've gotten POSE compiled and installed and you think you're ready to
go now? Well, not quite. POSE does not contain any ROM images in it. ROM
images are the snapshots of PalmOS that reside on the FlashROM in the Palm
itself.</P>
We can do two things to get an ROM image. First, there is a Palm app that
comes with the emulator that will allow POSE to suck the ROM image right off
your PalmOS device. [Pretty cool, huh?] The second way to get a ROM image
is to join palm.com's solution provider program at <A
HREF="http://www.palmos.com/dev/program/">http://www.palmos.com/dev/program/</A>.
Once you have joined you have access to the Provider Pavillion at <A
HREF="http://www.palmos.com/dev/pavilion/">http://www.palmos.com/dev/pavilion/</A>
which contains various ROM images. Some of the images here are testing and
debug versions along with the normal images, so be careful which one you
grab. Also, the images in this development area are NOT usually meant to be
put onto your PalmOS device. There are separate PalmOS upgrades and ROM
upgrades available elsewhere on the site.</P>
Well, now you have the emulator up and running. Right-click, File: New and
specifiy what ROM file to use, device you are emulating, graphical skin, and
ram size. You should see something like this now.</P>
<IMG SRC="misc/lukens/p1.gif">
</P>
<B>Installing the Compiler and Its Dependents</B></P>
A few pieces need to be installed for everything to function. These are the
PRC tools, a SDK from palm, and the PilRC tool. The PRC tools are a port of
the GCC tools we all know and love, but they produce output for the Palm.
The SDK is a few libraries and a whole bunch of header files for the Palm
API. Finally, the PilRC tool is the resource compiler.</P>
The PRC tools can be found at <A
HREF="http://sourceforge.net/projects/prc-tools/">http://sourceforge.net/projects/prc-tools/</A>.
This is a bunch of patches to binutils, gdb, and GCC, and linker tools to
support the PalmOS. RPM's are also available at <A
HREF="http://www.palmos.com/dev/tech/tools/gcc/dist/prc-tools-2.0-1.Linux-i386.rpm">http://www.palmos.com/dev/tech/tools/gcc/dist/prc-tools-2.0-1.Linux-i386.rpm</A>.</P>
Next comes the SDK's. These are available from the palm.com site. The
PalmOS 3.5 SDK (the latest as of this writing) is available only to
registered developers in palm.com's provider pavillion. Earlier SDK's are
available here: <A
HREF="http://www.palmos.com/dev/tech/tools/gcc/dist/palmos-1-2-3.1-sdks-1.tar.gz">http://www.palmos.com/dev/tech/tools/gcc/dist/palmos-1-2-3.1-sdks-1.tar.gz</A>.
The 3.5 SDK contains documentation that covers previous SDK's as well. The
older SDK's do not contain these docs.</P>
The PRC install will make a directory called /usr/local/palmdev . The sdk's
should be untar-ed here. A symbolic link called "sdk" should be made that
points to the SDK that you wish to use. For exmaple, this is what my
/usr/local/palmdev looks like.</P>
<code>
<pre>
[scooter@scooter scooter]# ls -l /usr/local/palmdev/
total 28
drwxr-xr-x 4 root root 4096 Mar 8 2000 Palm OS 3.5 Support
drwxr-xr-x 3 root root 4096 Nov 1 10:03 doc
drwxr-xr-x 2 root root 4096 Dec 21 1999 include
drwxr-xr-x 3 root root 4096 Nov 1 10:02 lib
lrwxrwxrwx 1 root root 7 Nov 1 10:07 sdk -> sdk-3.1
drwxr-xr-x 3 root root 4096 Feb 9 2000 sdk-1
drwxr-xr-x 3 root root 4096 Feb 9 2000 sdk-2
drwxr-xr-x 3 root root 4096 Feb 9 2000 sdk-3.1
</pre>
</code>
</P>
The last tool that is needed is PilRC which compiles all of the resource
files to generate a binary. This has most to do with buttons, menus, and
placement of graphics on the screen. It can be found at <A
HREF="http://www.ardiri.com/index.cfm?redir=palm&cat=pilrc">http://www.ardiri.com/index.cfm?redir=palm&cat=pilrc</A>.</P>
Once all of these tools are put together you have a functional development
environment. We are used to using gcc for compiling C programs on Linux so
the C compiler for PalmOS is m68k-palmos-gcc. Most of the PRC compiler
tools are named m68k-palmos-* .</P>
<!-- *** BEGIN copyright *** -->
<P> <hr> <!-- P -->
<H5 ALIGN=center>
Copyright © 2001, David "Scooter" Lukens.<BR>
Copying license <A HREF="../copying.html">http://www.linuxgazette.com/copying.html</A><BR>
Published in Issue 62 of <i>Linux Gazette</i>, February 2001</H5>
<!-- *** END copyright *** -->
<H4 ALIGN="center">
"Linux Gazette...<I>making Linux just a little more fun!</I>"
</H4>
<P> <HR> <P>
<!--===================================================================-->
<center>
<H1><font color="maroon">Wide Area Network Packet Capture and Analysis</font></H1>
<H4>By <a href="mailto:meekj@pt.ahp.com">Jon Meek</a><BR>
American Home Products Corporation</H4>
</center>
<P> <HR> <P>
<!-- END header -->
<H2> Introduction</H2>
<P> System and network administrators often use Ethernet packet
capture tools such as tcpdump [McCa97] and ethereal [Ether00] to debug
network applications by. In some cases, a view of all traffic on a
circuit is required to determine why applications are running slowly,
or why the circuit is running at a high utilization. When the circuit
in question is a WAN (Wide Area Network) point-to-point circuit (such
as a T-1), or a Frame Relay network access line, there may not be a
point where all of the packets can be observed on an Ethernet segment.
<P> In this article we describe a system to record and analyze ``raw''
Frame Relay and point-to-point T-1 packets. The data are captured by
``eavesdropping'' on the HDLC transmit and receive lines between the
router and CSU/DSU. Analysis of the data provides circuit and
application utilization information on a one-second or shorter time
scale. Routine and custom reports are accessible through Web
interfaces to provide easy access by our global systems and network
staff. The packet data can also be used to debug applications in the
same way as conventional packet capture systems.
<H2> Why We Needed This System</H2>
<P> Frame Relay networks provide organizations with a flexible and
economical method of interconnecting sites over a wide range of
distances. A major source of the flexibility comes from the ability to
connect many circuits over a single access line, such as a T-1 (1.5
Mbps) or E-1 (2Mbps, used in Europe). Each circuit, called a PVC
(Permanent Virtual Circuit), has a guaranteed bandwidth, known as CIR
(Committed Information Rate). Most Frame Relay carriers allow PVCs to
``burst above CIR'', possibly to the full bandwidth of the access
line. The sum of the instantaneous bandwidth for all PVCs can not, of
course, exceed the bandwidth of the access line. This leads to
interesting traffic management questions.
<P> Complex Frame Relay networks are often laid out in a ``hub and
spoke'' arrangement. Multiple hubs may connect subsidiary offices in a
geographical area as shown in Figure 1. The hubs are then joined
together, usually with higher bandwidth interconnections.
<HR><BR>
<center><img src="misc/meek/net1b.png"></center> <BR> <CENTER><B>Figure 1</B>: Hub & spoke
Frame Relay architecture.<BR></CENTER>
<HR>
<P> While debugging Frame Relay network problems, for both bandwidth
management and application issues, we have used tcpdump to
record packets at the Ethernet interface of routers. We often wished,
however, that we could see exactly what data were flowing in and out
of the T-1/E-1 serial access lines. This was especially true at Frame
Relay hub sites where many packets pass through the router, but never
appear on the Ethernet side because they are destined for another site
on our network. In addition, useful Frame Relay header information is
lost once the frames are converted to Ethernet packets.
<P> Figure 1 provides an illustration of the problem. Of the three
types of traffic shown, only the ERP (Enterprise Resource Planning)
traffic enters the ``UK Data Center''. Packets for the other two
applications, LAN mail and Internet, do not appear on the Ethernet
segment but they can consume a large fraction of the bandwidth
available on the serial access lines at this ``hub site''.
<P> As we did more application debugging and traffic analysis it
became clear that we needed a system to record raw frames outside the
router, directly from the communications lines. Then we could examine
any of the Frame Relay header information and as much of the data,
including IP header and payload, as we cared to record.
<P> Commercial systems were reviewed but none were found that met the
requirement to record raw Frame Relay packets for more than a few
minutes. Our company already used two of the more popular brands of
``WAN Probes'', but they are mostly useful for real-time diagnostics,
and RMON (Remote Network Monitoring Management Information Base) type
historical data. We considered using Network Flight Recorder [Ranu97],
but it does not record data from WAN communications lines.
<P> While most routers count the Frame Relay congestion notification
bits (FECN and BECN, Forward and Backward Explicit Congestion
Notification) in the header, they do not count discard eligible (DE)
bits. The five-minute counts of FECNs and BECNs that we record via
SNMP do not provide any method to assign the occurrence to a
particular second, or to particular packets. Debugging an application
/ network interaction problem without the raw packet data is very
difficult.
<P> In this paper we will first review the hardware requirements and
packet acquisition software. Then the traffic analysis software will
be discussed, followed by real-world analysis examples including
``Congestion and Circuit Capacity Planning'', ``Using the Raw Packet
Data'', and ``Application Profiling''. Two short sections describe the
extension of the system for T-1 point-to-point circuits, and using
tcpdump to perform similar analysis when the packets of interest are
available on a LAN. We will close with some ideas for future
applications.
<H2> The Hardware
</H2>
<P> The system is built on a low cost desktop platform running RedHat
Linux (version 5.2 or 6.x). The heart of the hardware is one or more
communications boards from <A HREF="http://sangoma.com">sangoma.com</A>, previously known as Sangoma
Technologies Inc., (Markham, Ontario, Canada). The first few monitors
we built used two Sangoma WANPIPE S508 ISA cards, but we are now using
a single Sangoma WANPIPE S5142 PCI card that can handle four
communications lines at up to 4Mbps in ``listen-only'' mode.
<P> Acquiring the bi-directional data requires the use of two receive
lines and the associated clock signals on the Sangoma cards. The
transmit lines of the card are not connected. While we have
successfully connected to T-1/E-1 lines using short cables directly
attached to the communications lines, the use of an active
``Multi-Interface Tap'' is recommended. These taps present a
high-impedance to the signal lines and allow a long cable to be safely
used between the tap and the computer. The cost for a system to
monitor a single T-1/E-1, including PC, communications board, and WAN
tap is about US$2000. A second T-1/E-1 can be monitored on the same PC
for an additional US$800.
<H2> Acquisition and Analysis
</H2>
<P> The basic model for the system is to record packets in both
directions (in-bound and out-bound) for fifteen-minute periods. At the
end of each period the packet files are closed and a new pair of
acquisition processes are started. Then a summary program processes
the data from the previous period.
<P> This model provides considerable simplification at the cost of
only about a fifteen-minute delay compared to a real time system. It
also allows convenient packaging of the summary results and a method
to locate raw packet data when deeper analysis is needed. The hardware
requirements are lower for this post-process model; all that is
necessary is for the summarization process to complete in less than
fifteen minutes while handling the input streams without packet loss.
<H2> Acquisition Software
</H2>
<P> The software consists of drivers provided by Sangoma, a modified
version of Sangoma's example C program for data capture, and a set of
Perl programs to control the acquisition and analyze the acquired
data.
<P> Sangoma's driver software was set up for CHDLC (Cisco HDLC) mode.
The packet capture program, frpcap, writes files in a format closely
modeled after the tcpdump format. The only significant difference is
that the Frame Relay header is recorded in place of the Ethernet
header. The first 150 bytes of each raw packet are usually saved to
provide context information during application analysis.
<P> The packet acquisition process is driven by frcap_run, a Perl
script that runs every fifteen minutes. Frcap_run stops the current
frpcap processes (one for each data direction) and immediately starts
another pair. A traffic summary program, fr_decode, is then run on the
two packet files. Following the summarization the raw packet files are
compressed, and any files that are older than a preset age are deleted
to conserve disk space. For a fairly busy set of Frame Relay circuits
on a T-1 access line, eight days worth of raw packet files consumes
3-6GB of disk space.
<H2> Analysis Software
</H2>
<P> The fifteen-minute raw packet files are summarized by a Perl
program that appends its output to a daily summary file in XML format.
The XML file is read by other programs for display and further
analysis. An example of a fifteen-minute summary output displayed by a
Web application that formats the XML data is shown in Figure 2. To
reduce the size of Figure 2, data for a minor PVC were removed and
only the top five numbers, rather than our usual ten, are shown in
each category.
<HR>
<PRE>
Frame Relay Traffic Summary (Philadelphia)
Out-Bound from Philadelphia Data
Capture Time: Thu Feb 10 11:00:00 2000 - Thu Feb 10 11:15:01 2000 GMT
PVC Summary (Out-Bound from Philadelphia)
DLCI Packets Bytes % FECNs BECNs DEs DE No DE
460 79,648 12,422,725 30.2 % 0 0.0 % 0 0.0 % 0 0 328 London
490 119,404 28,677,448 69.8 % 0 0.0 % 0 0.0 % 0 0 1,321 Paris
All 199,052 41,100,173
Protocol Counts (Out-Bound from Philadelphia)
DLCI Protocol Packets Bytes % of PVC TCP ReTransmits
460 London
0800 06 IP TCP 40,291 9,068,685 ( 73.0%) 328 ( 0.8%)
8137 IPX 34,675 2,805,741 ( 22.6%)
0800 11 IP UDP 1,671 316,118 ( 2.5%)
0800 01 IP ICMP 2,593 197,600 ( 1.6%)
809b ATALK 203 15,000 ( 0.1%)
0800 58 IP IGRP 200 14,616 ( 0.1%)
490 Paris
0800 06 IP TCP 70,203 21,871,361 ( 76.3%) 1321 ( 1.9%)
8137 IPX 46,048 6,228,881 ( 21.7%)
0800 11 IP UDP 2,051 498,644 ( 1.7%)
0800 01 IP ICMP 882 58,936 ( 0.2%)
0800 58 IP IGRP 205 14,886 ( 0.1%)
Access Line Busiest Seconds (Out-Bound from Philadelphia)
Time Bytes kbps
11:08:11 125,513 1,004.1
11:08:09 118,855 950.8
11:08:13 116,336 930.7
11:02:53 108,926 871.4
11:08:14 104,754 838.0
PVC Busiest Seconds (Out-Bound from Philadelphia)
460 London
11:02:53 77,873 623.0
11:02:52 76,221 609.8
11:02:54 47,667 381.3
11:02:56 46,748 374.0
11:00:07 44,487 355.9
490 Paris
11:08:11 112,854 902.8
11:08:13 105,761 846.1
11:08:09 95,425 763.4
11:08:14 92,765 742.1
11:08:10 85,951 687.6
Access Line Quiet Seconds (Out-Bound from Philadelphia)
11:12:53 11,366 90.9
11:12:52 14,118 112.9
11:12:54 15,371 123.0
11:12:55 22,993 183.9
11:11:48 23,544 188.4
PVC Quiet Seconds (Out-Bound from Philadelphia)
460 London
11:05:14 3,640 29.1
11:04:55 3,859 30.9
11:05:33 4,068 32.5
11:07:48 4,118 32.9
11:06:20 4,170 33.4
490 Paris
11:12:53 3,460 27.7
11:12:54 6,613 52.9
11:12:52 8,187 65.5
11:13:18 14,021 112.2
11:12:55 14,065 112.5
Top Sources (Out-Bound from Philadelphia)
Bytes % of Total
1 TCP 155.94.114.164 1867 4,673,580 11.0 Philadelphia GroupWise
2 TCP 10.2.71.201 1494 2,644,817 6.2
3 TCP 155.94.155.23 1521 1,671,696 3.9 ra01u04 - Philadelphia DCG
4 TCP 192.233.80.5 80 1,272,224 3.0
5 TCP 209.58.93.100 1494 931,341 2.2 MARTE WinFrame 1
Top Destinations (Out-Bound from Philadelphia)
Bytes % of Total
1 TCP 10.248.107.217 7100 4,742,966 11.2
2 TCP 10.247.113.201 4498 1,272,224 3.0
3 IPX 0451 01000105 1 1,138,074 2.7 NCP
4 TCP 10.248.89.1 7100 952,921 2.2
5 TCP 10.247.66.76 1073 931,341 2.2
Application Summary (All PVCs, Out-Bound from Philadelphia)
New TCP Total TCP
Application Sessions Sessions Packets Bytes
Internet TCP 4,684 4,817 41,455 13,128,752
IPX 90,631 9,785,697
Unknown TCP 1,016 1,167 41,305 7,141,942
GroupWise TCP 98 138 12,106 6,722,084
DCG TCP 138 150 7,370 1,824,223
MARTE WinFrame TCP 2 5 4,428 1,041,713
IP Protocol 0b NVP-II 3,894 839,902
EDMS TCP 13 20 3,075 775,923
MARTE Oracle TCP 1 3 1,882 472,541
MLIMS TCP 38 22 850 255,473
Internet ICMP 3,255 214,690
Unknown ICMP 780 78,666
ProbMan TCP 0 4 181 48,826
IP Protocol 3a IPv6-ICMP 598 43,012
Unknown ATALK 203 15,000
ASTROS TCP 2 6 62 9,963
TCP SYNs (connection requests): 5996 Total TCP Re-Transmissions: 1662
</PRE>
<BR> <CENTER><B>Figure 2</B>: Frame relay traffic summary for a single T-1
access line<BR>
</CENTER>
<HR>
<P> The report consists of five major sections. The first section is a
PVC summary showing the DLCI (circuit number), number of packets and
bytes, percentage of bytes per circuit relative to all circuits on the
access line, congestion notification counts, DE (discard eligible)
counts and TCP re-transmission counts. Since this router does not set
any congestion notification information (Frame Relay switches further
down stream set these) or DE bits, the counts are all zero for the
out-bound direction. Some of our routers do set DE for Internet
traffic to give it a lower priority (setting DE tells the carrier that
the traffic can be dropped if the network is congested, in exchange
the carrier does not count the packets towards certain credit limits).
The TCP re-transmit counts are done separately for packets with and
without DE so that we can determine the effect on packet loss within
the Frame Relay network when DE is set.
<P> Layer 2 and 3 protocol counts are summarized in the second
section. For each protocol observed the Ethernet/802.2 type field, IP
type by number (if an IP protocol), protocol name, number of packets
and bytes, and percent utilization by bytes for the PVC are shown. For
TCP/IP a count of packet re-transmissions is displayed.
<P> In the third section we display the busiest and quietest seconds
for the access line and for each PVC. The generation and use of these
data are described later under Congestion and Circuit Capacity
Planning.
<P> The top sources and destinations of data are shown in the fourth
section. The protocol, IP address, port number, number of bytes, and
percentage of the total for all traffic on the access line are
included. If the server name is known it is also displayed, along
with a short description of the application.
<P> The fifth section of the report lists the utilization of the
access line by application. Where possible we identify applications by
the IP address of the server. Although it might make sense to further
define applications by port number, many of our servers run a single
application. In fact we often have two servers running the same
application in which case packets with either IP address will count
towards the application. Database servers often run multiple
applications which all use the same IP address/port number pair so the
addition of a port number qualification would still not uniquely
identify all applications. In the future we
hope to encourage the use of virtual IP addresses assigned on a per
application basis to provide a simple accounting method. The ``New TCP
Sessions'' column indicates how many sessions were initiated during the
fifteen-minute period and ``Total TCP Sessions'' counts both new and ongoing
sessions. For Web based applications these counts are not very useful except
as a type of hit counter, but for applications with persistent connections it
is a measure of the number of users connected during the period.
<P> The final two items in the report are a count of initial TCP SYNs, which
might be used for intrusion detection, and a count of TCP re-transmissions for
all PVCs.
<P> Figure 3 shows the top of a report for the in bound direction. Note that
we have a variety of FECN, BECN, and DE information related to packets flowing
in this direction. The FECNs and BECNs provide information on the level of
congestion in the carrier's Frame Relay network [Blac95]. The rest of the
report contains the same information as shown in Figure 2.
<HR>
<PRE>
In-Bound to Philadelphia Data
Capture Time: Thu Feb 10 11:00:00 2000 - Thu Feb 10 11:15:01 2000 GMT
PVC Summary (In-Bound to Philadelphia)
DLCI Packets Bytes % FECNs BECNs DEs DE No DE
460 62,915 6,453,502 36.9 % 515 0.8 % 31 0.0 % 2,211 6 111 London
490 109,900 11,024,584 63.1 % 39 0.0 % 11,800 10.7 % 0 0 656 Paris
All 172,815 17,478,086
</PRE>
<BR> <CENTER><B>Figure 3</B>: Portion of in-bound frame relay traffic summary
for a single T-1 access line.<BR></CENTER>
<BR><HR>
<P> Several customizable reports using the fifteen-minute summary data are
available. A Web form can be used to select a single application and then
generate a list of ``Application Summary'' entries for just that application.
This list of application usage is very helpful for determining the bandwidth
impact of an application and the number of users. Since we are often told,
``There will be 400 users in Europe accessing this Philadelphia based
application'', we can use the tool to judge how many are logged-in
simultaneously and to monitor usage growth. Another program will generate a
daily or monthly ``Application Summary'' by summing usage for each application
over time.
<P> The above example data is for one of our busier access lines, but it is
far from the most complex. One European Frame Relay hub site has 13 PVCs on a
single access line. Some of the traffic is business critical telnet traffic
between subsidiary sites and an AS/400 at the hub site. Much of the traffic,
however, is intranet mail or Internet data that comes in on one PVC and then
heads towards the US on another PVC. Without the Frame Relay monitor it would
be very difficult to determine what applications and protocols consume the PVC
and access line bandwidth. In some cases it is necessary to obtain application
summaries for a single PVC to determine what is happening on a particular
circuit. We do not routinely report application and protocol usage on a per
PVC basis in order to keep the size and complexity of the reports reasonable.
<H2> Congestion and Circuit Capacity Planning
</H2>
<P> Like many organizations, we collect router statistics via SNMP
every five minutes. While five-minute averages are a useful measure of
how a circuit is doing in relationship to its bandwidth limit, they do
not tell a lot about the instantaneous (one second, or smaller, time
scale) state of a circuit that governs interactive performance. If a
circuit is saturated for several ten-second bursts during a single
five-minute period the average utilization might appear to be quite
reasonable. An interactive user, however, would likely say that the
network was slow while his packets were waiting in a router buffer.
<P> Our monitor attempts to measure the largest peaks in a
fifteen-minute period by summing the number of bytes transmitted and
received for each one-second interval. The summary program reports the
ten busiest seconds for the access line and each circuit. A sample
plot of busy seconds for one day is shown in red in Figure 4. Time
periods with a wide range of values are good because they indicate a
large variation in the top ten busy seconds and therefore there are
fewer than ten very congested seconds in a fifteen-minute period. The
lack of busy seconds below the full speed of the T-1 (1536 kbps)
starting at 12:45 GMT indicates significant on-going congestion. There
are several busy seconds above the 1536 kbps line. These are probably
due to packets being held in buffers. We hope to reduce the delays in
servicing interrupts by prioritizing the data acquisition process.
Quiet seconds are measured in a
similar fashion. If a usually busy circuit has seconds with zero, or a
low number of bytes, then it may indicate a circuit or routing
problem. <HR><BR>
<center><img src="misc/meek/saap5m_busy.png"></center> <BR> <CENTER><B>Figure 4
</B>: Busy seconds (in red) on a frame relay access line that
services eleven PVCs on a T-1 access line. The five-minute average
traffic obtained from SNMP queries to the router is shown in
blue. While the five-minute average is a widely accepted standard method
of measuring utilization, it hides many significant traffic spikes that
are observed in the busy seconds plot.
<BR></CENTER>
<HR>
<P> We had one problem where a large number of quiet seconds were showing up
with low utilization during busy times of the day. Since there were also user
complaints, a detailed analysis of the packet data was performed. It showed
all IP traffic periodically stopping for about eight seconds while IPX was
still flowing normally. We traced the root cause to an IP routing problem.
Without the IPX traffic the problem would have been easy to spot since there
would have been periods of about eight seconds with zero traffic on an
otherwise busy circuit.
<P> While we have not yet developed a formal rule set, it should be possible
to determine how well PVCs and access lines are sized with respect to the
actual traffic using busy second data. Clearly, looking at the busiest seconds
on a circuit is much more meaningful than five-minute average data when
mission critical interactive applications are the most important traffic.
<center><img src="misc/meek/busy_saap1_noleg.png"></center>
<CENTER><B>Figure 5</B>: Per-second traffic traffic on the access line
(red) and eleven Frame Relay PVCs for a fifteen minute period. The
access line is completely saturated during a 25 second period at the
center of the period. <BR></CENTER> <BR>
<HR>
<H2> Using the Raw Packet Data
</H2>
<P> Since the raw packet data are stored in separate files for in-bound and
out-bound directions the two files must be combined for traditional packet
trace analysis. A utility program performs this task by putting the packets
from a pair of files into a time ordered sequence and writing a tcpdump format
file. A ``Frame Relay information'' file containing the Frame Relay header
information is also written.
<P> We have a packet trace analysis program originally written for tcpdump
files that can optionally read the ``Frame Relay information'' file and list
the DLCI (circuit ID), FECN, BECN, and DE bits for each packet. Using this
feature, we have discovered that some applications were operating over
asymmetric routes. In addition to our own analysis programs, the tcpdump
format files can be examined using other programs such as tcpdump itself, or
ethereal [Ether00]. Since ethereal, and its companion program editcap, can
export packet data to other formats, the traces can be analyzed with popular
commercial products. When a session needs to be followed through multiple
fifteen-minute periods we use a simple program to concatenate multiple tcpdump
files.
<P> In a previous paper [Meek98] we discussed interesting issues we
have had with our telecommunications vendors. Our complaints about a
slow circuit sometimes yield a vendor response like: ``Customer is
exceeding CIR by 160%'' with the implication that the over utilization
of a circuit (bursting) has lasted for an excessively long
period. With raw packet information it should be possible to compute
bandwidth utilization on a per-second basis and use the same algorithm
as the telecommunications equipment to verify when, and by how much,
CIR was exceeded. Figure 6 shows the per-second bandwidth utilization
of a circuit for a thirty-minute period and the percentage of in-bound
packets with the BECN bit set to indicate congestion on the out-bound
circuit. The BECNs are sent by the carrier's switches to indicate that
there is congestion in our out-bound direction and that our bandwidth
usage will be throttled if we are exceeding CIR and are out of
credits. In the future we hope to use this data to accurately
determine when we truly exceed our contracted bandwidth and how we
might implement quality of service to prioritize traffic to manage
bandwidth bursts.
<HR><BR>
<center><img src="misc/meek/bw_becn1.png"></center> <BR> <CENTER><B>Figure
6</B>: Instantaneous bandwidth utilization (one-second time scale) and
Frame Relay network congestion control information (percent of
incoming packets with BECN set).<BR></CENTER>
<HR>
<P> Packet loss is an important parameter in any data network. One
measure of packet loss is the percentage of TCP packets that must be
re-transmitted. Figure 7. illustrates TCP re-transmission rates on
one of our busy circuits over several months. Hours with fewer than
10,000 TCP packets are not shown. Since this circuit feeds multiple
downstream Frame Relay circuits, and many LAN segments, packet loss
could occur in several places. During late July we had problems with a
T-1 interface that caused a significant portion of the
re-transmissions during that period. Further analysis of the raw
packet data can determine what destination IP addresses were
responsible for the re-transmissions. We recently added a new section
to the standard report (Figure 2) that lists the top ten destinations
of re-transmitted packets to help identify hosts or subnets with
problems. Re-transmitted packets are counted by tracking the TCP
sequence numbers by session for packets with a payload (not
acknowledgment-only packets).
<HR>
<center><img src="misc/meek/retran3.png"></center> <BR> <CENTER><B>Figure 7</B>:
Percentage of TCP packets requiring re-transmission per hour.<BR></CENTER>
<BR><HR>
<H2> Application Profiling
</H2>
<P> Profiling the bandwidth requirements of an application is a useful
exercise to perform during the development or evaluation of a software
product. We have often found that applications originally developed for use on
a LAN have serious problems when they are moved to a WAN or Internet
environment. Problems result from large quantities of data being sent,
application level handshaking resulting in excessive round-trip-time waiting,
or even the same set of data being requested (and delivered) multiple times
due to a programming error. These issues have occurred in both internally
developed and purchased commercial software.
<P> One advantage to using the WAN packet capture system for application
profiling is that the application under test can be observed along with all of
the other data flowing on the circuit at the same time. Since we routinely
capture all of the traffic on monitored circuits, no advance preparation is
required for most application profiling tests. We have found, however, that it
is helpful when testing an interactive application if the test procedure has
timed pauses of 15 to 30 seconds where the user does not touch their hardware.
The pauses are used to separate phases of the application in the packet traces
and to determine if the client and server ``chatter'' when idle.
<P> A disadvantage to using the WAN packet capture system for these tests is
that we generally capture only 150 bytes of combined header and payload. While
this small number of payload bytes is often enough to determine the context of
the application (especially when ASCII or EBCDIC data are involved), it might
not be enough to confidently determine that multiple packets with identical
payload are being transmitted within a session (determined by computing MD5
checksums on payload content [Meek98]).
<P> Two examples of application profiling are summarized graphically
in Figures 8 and 9. The application profiled in Figure 8 is a widely
used ERP (Enterprise Resource Management) system that uses page-based
terminals as the user interface. The user interacts with the system by
filling out text forms and then transmitting the screen page to the
server. This method, similar to modern Web applications, is an
efficient way to implement interactive applications on a WAN since
reasonable size chunks of data, in comparison to keystrokes, are
transmitted at one time.
<HR>
<center><img src="misc/meek/sess167b.png"></center> <BR> <CENTER><B>Figure 8</B>: IP
packet data for a single session extracted from a series of Frame Relay packet
capture files.<BR></CENTER>
<BR><HR>
<P> To determine how much bandwidth a single user consumes we look at the
packets for individual sessions as a function of time. The top plot shows the
distribution of packet sizes for each direction, while the bottom plot shows
the bandwidth used per second. A detailed look at the numbers shows that
143,473 bytes in 400 packets were sent from client to server and 112,560 bytes
in 348 packets were sent from server to the client. By closely inspecting the
data using an interactive data analysis tool [Grace00] we find that a typical
transaction is completed in one or two seconds. The maximum bandwidth used was
43kbps from client to server and 22kbps in the other direction.
<P> The packet data in this analysis were extracted from 30 minutes of raw
packet capture data from a Frame Relay access circuit with 13 PVCs. The first
step was to combine in-bound and out-bound packet streams into single tcpdump
format files. The tcpdump files for the two 15-minute time periods required to
span the session were then concatenated. Finally, the combined file was
processed with tcpdump acting as a pre-filter to select the session of
interest and feed it to our own software that summarized the session and
prepared the packet and bandwidth data for plotting.
<P> The profile in Figure 9 is from a PC-to-server ``thin client''. The
actual application runs on a server and is displayed on the client,
much like X Windows, but using a more efficient protocol. Traffic
between the client and server consists of keyboard and mouse data,
screen refreshes, and, in some cases, file transfer. In this example a
file transfer was started at about 2100 seconds into the session.
<HR>
<center><img src="misc/meek/13-7.png"></center> <BR> <CENTER><B>Figure 9</B>: IP
packet data for a single session extracted from a series of Frame Relay packet
capture files.<BR></CENTER>
<BR><HR>
<P> Tools presented here do a complete job of quantifying the actual
bandwidth used by an application on a one-second time scale and
demonstrating fundamental differences in the bandwidth requirements
for different applications (``burstiness'', bandwidth use evenly divided between
the two directions, or not). The tools, do not, however, address
simulated scaling of the application. Presumably, our data could be
used as input to a network simulation tool to perform the scaling
simulation to multiple users. Our tools can, however, select any slice of actual
recorded network traffic based on source, destination, port number,
etc. and determine the total bandwidth utilization for the
applications encompassed by the slice. In addition, it is important to
consider the effect of network latency on the application. [Meek98]
<P> In order to determine how the use of an application changes over time we
can look at some parameter representing usage. In Figure 10 we show the number
of sessions per week for one application. The use of this particular
application varies depending on business cycles and holiday schedules. Other
parameters useful as a measure of application usage are bytes transferred or
number of packets. Bytes or packets are especially useful for Web, or other
non-session oriented applications.
<HR>
<center><img src="misc/meek/marte_use.png"></center> <BR> <CENTER><B>Figure 10</B>: Usage
pattern of a single application by measuring the number of sessions per
week.<BR></CENTER>
<BR><HR>
<H2> Extension to T-1 Point-to-Point Circuits
</H2>
<P> We were pleasantly surprised to discover that the hardware and software
can be used without modification on T-1 point-to-point circuits. The packets
on the point-to-point circuits have a header very similar to a Frame Relay
header. The first two bytes of the Frame Relay header contain packed data
representing the DLCI number and the FECN, BECN, and DE bits. [Blac95] The
first byte of a point-to-point serial line packet is set to 0x0F for unicast
packets and 0x8F for ``broadcast packets'' and the second byte is always zero.
[Cisc00] For both Frame Relay and point-to-point serial the third byte
contains the Ethernet protocol code. Note that these conventions may be
specific to certain types of equipment.
<H2> Related Techniques
</H2>
<P> When all traffic of interest is accessible from the LAN, simpler tools and
techniques should be used to record traffic. We use a simple script to start
tcpdump and rotate the packet capture files on a time schedule controlled by
cron (the user-mode command scheduler). The acquired data can be analyzed
using the methods described here for WAN traffic.
<H2> Future Work
</H2>
<P> Because we are now moving some of our major circuits to ATM in order to
overcome T-1/E-1 and Frame Relay bandwidth limitations we hope to be able to
extend the techniques discussed here to ATM. This should be straightforward if
the ATM interface card performs the re-assembly of ATM cells into complete IP
packets. The design and implementation of an ATM monitor is discussed in [Api96].
<P> Some of the parameters measured by the system will probably be used to
generate alarms when they exceed certain thresholds. The TCP re-transmission
rate and quiet/busy seconds are likely candidates for alarms. Frame Relay
provides information about circuits using LMI (Local Management Interface)
packets. Currently we do not decode these, but plan to add the capability in
the future.
<P> We would like to measure the effectiveness of QoS (Quality-of-Service)
schemes by measuring packet delays through the router for packets in different
classes of service. This would likely be done using tcpdump on the Ethernet
side and WAN packet capture on the serial line side of the router. Histograms
of packet delays during busy periods should show that the high-priority
traffic passes through the router more quickly than lower priority traffic.
The results might be used to tune QoS parameters.
<H2> Conclusion
</H2>
<P> We have assembled a low cost Frame Relay and T-1 packet capture system
with a large memory and applied it to real problems. The use of this monitor
is helping us communicate to management how the WAN is being used at the
application level. It also provides detailed worst-case traffic information
through the analysis of busy and quiet seconds. We have upgraded bandwidth on
some circuits following analysis of peak utilization data, identified unusual
routing problems, and profiled the network impact of applications. The large
memory and long retention time for the raw packet data allow us to
troubleshoot many network problems days after they occurred, an important
factor in our large, global organization. The data analysis discussed in this
paper just touches on possible uses of raw packet data from WAN circuits. In
the future, we expect to mine the information in new ways.
<H2> Availability
</H2>
<P> Supplemental information and some of the software used in the work
described here can be obtained at
<a href="http://wanpcap.sourceforge.net">http://wanpcap.sourceforge.net</a>.
<H2> Acknowledgments
</H2>
<P> The author would like to acknowledge Jim Trocki, Kevin Carroll, Kim
Takayama, Jim French, and the technical staff at Sangoma Technologies Inc. for
valuable discussions, advice, and information during the development of the
tools. Drafts of this paper were expertly reviewed by Bill Brooks, Kevin
Carroll, Edwin Eichert, and William LeFebvre.
<H2> References
</H2>
[Api96] Joel Apisdorf, k claffy, Kevin Thompson, Rick Wilder,
``OC3MON: Flexible, Affordable, High Performance Statistics Collection'',
<I>Proceedings of the Tenth Systems Administration Conference
(LISA '96)</I>, USENIX, Chicago, 1996.
<P> [Blac95] Uyless Black, <I>Frame Relay Networks: Specifications and
Implementations</I>, McGraw-Hill 1995.
<P> [Cisc00] Cisco Systems, WAN Group, private communication.
<P> [Ether00] Ethereal, A network protocol analyzer,
<a href="http://ethereal.zing.org/">http://ethereal.zing.org/</a>,
2000.
<P> [Grace00] ``Grace, a WYSIWYG 2D plotting tool for the X Window System and
M*tif'',
<a href="http://plasma-gate.weizmann.ac.il/Grace/">http://plasma-gate.weizmann.ac.il/Grace/</a>,
2000.
<P> [McCa97] Steve McCanne, Craig Leres, Van Jacobson, ``TCPDUMP 3.4'',
Lawrence Berkeley National Laboratory Network Research Group, 1997.
<P> [Meek98] Jon T. Meek, Edwin S. Eichert, Kim Takayama, ``Wide Area Network
Ecology,'' <I>Proceedings of the Twelfth Systems Administration Conference
(LISA '98)</I>, USENIX, Boston, 1998.
<P> [Ranu97] Marcus J. Ranum, Kent Landfield, Mike Stolarchuk, Mark
Sienkiewicz, Andrew Lambeth, and Eric Wall. ``Implementing a Generalized Tool
for Network Monitoring,'' <I>11th Systems Administration Conference
(LISA)</I>, 1997.
<!-- *** BEGIN copyright *** -->
<P> <hr> <!-- P -->
<H5>
``Originally published by the USENIX Association in the Proceedings of
the 14th Systems Administration Conference (LISA 2000), December 3-8,
2000.''
<a href="http://www.usenix.org/events/">(www.usenix.org/events/)</a>
This article is modified from the original.
</H5>
<H5 ALIGN=center>
Copyright © 2001, Jon Meek.<BR>
Copying license <A HREF="../copying.html">http://www.linuxgazette.com/copying.html</A><BR>
Published in Issue 62 of <i>Linux Gazette</i>, February 2001</H5>
<!-- *** END copyright *** -->
<H4 ALIGN="center">
"Linux Gazette...<I>making Linux just a little more fun!</I>"
</H4>
<P> <HR> <P>
<!--===================================================================-->
<center>
<H1><font color="maroon">No More Spam!</FONT></H1>
<H2>(a "procmail"-based solution with tips on "fetchmail" and "mutt")</H2>
<H4>By <a href="mailto:ben-fuzzybear@yahoo.com">Ben Okopnik</a></H4>
</center>
<P> <HR> <P>
<!-- END header -->
<BLOCKQUOTE>
<tt>"Spamming is the scourge of electronic-mail and newsgroups on the
Internet. It can seriously interfere with the operation of public services,
to say nothing of the effect it may have on any individual's e-mail mail
system. ... Spammers are, in effect, taking resources away from users and
service suppliers without compensation and without authorization."</tt>
<br><tt> -- Vint Cerf, Senior VP, MCI and acknowledged "Father of
the Internet"</tt>
</BLOCKQUOTE>
<p>Spam. Seems like it's become a cost of having an e-mail address these
days: if you post in a newsgroup, enter something in an on-line guestbook,
or have your email address on the Net in some way, sooner or later you'll
get harvested by the spambots. Even if you don't, spam _still_ costs you
money: it takes up bandwidth that could otherwise be used for real information
transfer, leading to overall higher costs for ISPs - and consequently,
keeping up costs of service for everyone. This cost is, incidentally, up
in the <u>tens of millions</u> of dollars per month (see <a href="http://www.techweb.com/se/directlink.cgi?INW19980504S0003">http://www.techweb.com/se/directlink.cgi?INW19980504S0003</a>)
for an excellent overview) - and this translates directly to about $2 of
your monthly bill. If you pay for your access "by the byte", there is yet
another cost - and all this comes before you add in the cost of your own
wasted time.
<p>Is there anything that we can do? The answer is "yes". We can stop spam
from polluting our own mailboxes, and we can intercept it back at the ISP,
if we have access to a shell account and they implement a simple tool (and
most ISPs that provide shell accounts do). I invite those of you who would
like to fight spam at its root to take a look at <a href="http://www.cauce.org">http://www.cauce.org</a>
- these are the folks that are advocating a legislative solution to spam;
the information on their site tells you how you can help. In this article,
however, I will concentrate on stopping spam locally - at your shell account
or on your own machine.
<p>There are several ways to do this, but the most common by far - and
one that most ISPs offering shell-accounts already have - is a program called
"procmail" by Stephen R. van den Berg, an e-mail processor that uses a 'recipe'
that tells it what to keep, what to filter, and what to redirect to another
mailbox. So, we need to do two things: first, we need to tell our system to use
"procmail"; second, we need to cobble together a 'recipe' that will do what we
want.
<p>In my own case, I collect my e-mail via "fetchmail", running as a daemon.
This is something I would recommend to everyone, even if you normally collect
your mail via Netscape: fetchmail does one job (mail collection) and does
it very well, in the worst and most complex of circumstances, things that
Netscape doesn't even try to do (multiple servers with different protocols
and different usernames, for example) - and Netscape will happily read
your local mailbox instead of the ISPs.
<p>Normally, my "fetchmail" will wake up every 5 minutes, pull down the
mail from the several servers that I use, and pass it to "sendmail" which
then puts it in my mailbox. Whew. Sounds like wasted effort to me, but
I guess that's the way things are when you scale down an MTA intended for
processing big batches... Actually, using "procmail" eliminates that last
step.
<p>In my "~/.fetchmailrc", the resource file that controls what "fetchmail"
does when it runs, the pertinent line reads:
<p><tt>mda "procmail"</tt>
<p>This tells "fetchmail" to use "procmail" as the mail delivery agent
instead of "sendmail" - remember, this is for incoming mail only; your
outgoing mail will not be affected.
<br>
<p>The other way to do this - and this is the way I recommend if you're
filtering mail at your ISP's machine - is to create a ".forward" file in
your home directory (this tells your MTA to 'forward' the mail - in this
case to our processor.)
<p>Edit ".forward" and enter one of the following lines:
<p><tt>"|exec /usr/bin/procmail"</tt>
<p>if you're using "sendmail" (the quotes <b>are</b> necessary in this
case).
<p>If you are using "exim", use this instead:
<p><tt>|/usr/bin/procmail</tt>
<p>[ Note: According to Mike Orr, "exim" has its own procmail-like filtering
language. I haven't looked at it, but it should be in the "exim" docs.
]
<p>You'll need to double-check the actual path to "procmail": you can get
that by typing:
<p><tt>which procmail</tt>
<p>at the command prompt.
<p>Now that we have redirected all our mail to pass through procmail, the
overall effect is... nothing. Huh? Oh yeah - we still have to set up the
recipe! Let's take a look at a very simple ".procmailrc", the file in which
the recipes are kept:
<p>
<hr WIDTH="100%" NOSHADE><tt>PATH=$HOME/bin:/usr/local/bin:/usr/bin:/bin</tt>
<br><tt>MAILDIR=/var/spool/mail # make
sure this is right</tt>
<br><tt>DEFAULT=$MAILDIR/username # completely
optional</tt>
<br><tt>LOGFILE=/var/log/procmail.log # recommended</tt>
<p><tt>:0:</tt>
<br><tt>* ^Sender:.*owner-linux-kernel-announce@vger.rutgers.edu</tt>
<br><tt>linux-kernel-announce</tt>
<p><tt>:0:</tt>
<br><tt>* ^Resent-Sender.*debian-user-request@lists.debian.org</tt>
<br><tt>debian-user</tt>
<br>
<hr WIDTH="100%" NOSHADE>
<br>Those top four lines, once you've checked to make sure that the variables
are correct for your system, should be in every ".procmailrc". What comes
after can be as complex as you want - you could cobble up a HUGE ".procmailrc"
that does more sorting than the main US Post Office - but for spam filtering
purposes (and that's the only thing most folks use it for), it's not very
complex at all. The above recipe simply sorts the mail into two boxes,
"linux-kernel-announce" and "debian-user" before "falling
<br>off the end" and delivering everything else into $DEFAULT.
<p>Recipes are built like this:
<br>
<hr WIDTH="100%" NOSHADE>
<br><tt>:0:</tt>
<br><tt>* ^Subject:.*test</tt>
<br><tt>joe</tt>
<br>
<p><tt>Notation
Meaning</tt>
<br><tt>========
=======</tt>
<br><tt>:0
Begin a recipe</tt>
<br><tt> :
Use a lock file (strongly recommended)</tt>
<br><tt>*
Begin a condition</tt>
<br><tt> ^
Match the beginning of a line followed by....</tt>
<br><tt> Subject:
``Subject:'' followed by....</tt>
<br><tt> .
any character (.) followed by....</tt>
<br><tt>
* 0 or more of preceding character
(any character in</tt>
<br><tt>
this case) followed by....</tt>
<br><tt>
test ``test''</tt>
<br><tt>joe
If successful match, put in folder $MAILDIR/joe</tt>
<br>
<hr WIDTH="100%" NOSHADE>
<br>What we'll do here is take a look at several people's solutions; in
order to write this article, I polled the members of the Answer Gang, and
some of their recipes - along with their rationale for them - are shown
below.
<br>
<p>My own recipe has been in service for quite a while. I built a rather
basic one at first, and this immediately decreased the spam volume by at
least 95%; later, I added a "blacklist" and a "whitelist" to always reject/accept
mail from certain addresses - the first is useful for spammers that manage
to get through, especially those that send their garbage multiple times,
the second one is for my friends whose mail I don't want to filter out
no matter what strange things they may put in the headers (I have some
strange friends. :)
<p>For those of you who use "mutt", here's how I add people to those lists:
in my "/etc/Muttrc", I have these lines:
<p><tt>macro index \ew '| formail -x From: | addysort >> ~/Mail/white.lst'</tt>
<br><tt>macro pager \ew '| formail -x From: | addysort >> ~/Mail/white.lst'</tt>
<br><tt>macro index \eb '| formail -x From: | addysort >> ~/Mail/black.lst'</tt>
<br><tt>macro pager \eb '| formail -x From: | addysort >> ~/Mail/black.lst'</tt>
<p>and in my "/usr/local/bin", I have a script called "addysort":
<p>
<hr WIDTH="100%" NOSHADE>
<br><tt>#!/usr/bin/perl -wn</tt>
<br><tt># Picks out the actual address from the "From:" line</tt>
<p><tt>unless (/\</) { print; } else { print /<([^>]+)/, "\n"; }</tt>
<br>
<hr WIDTH="100%" NOSHADE>
<p>Given the above, all I have to do with a given spammer is hit 'Esc-b'
- and I'll never see him again. By the same token, a person whom I want
to add to the whitelist gets an 'Esc-w' - and they're permanently in my
good graces. :)
<br>
<p>So, here is my "~/.procmailrc":
<p>
<hr WIDTH="100%" NOSHADE>
<br><tt>PATH=/usr/local/bin:/usr/bin:/bin</tt>
<br><tt>MAILDIR=/var/spool/mail</tt>
<br><tt>DEFAULT=/var/spool/mail/ben</tt>
<br><tt>LOGFILE=/var/log/procmail</tt>
<br><tt>SPAMFILE=/var/spool/mail/spam</tt>
<br>
<p><tt># Test if the email's sender is whitelisted; if so, send it straight
to</tt>
<br><tt># $DEFAULT. Note that this comes before any other filters.</tt>
<br><tt>:0:</tt>
<br><tt>* ? formail -x"From" -x"From:" -x"Sender:" \</tt>
<br><tt> -x"Reply-To:" -x"Return-Path:" -x"To:" \</tt>
<br><tt> | egrep -is -f $MAILDIR/white.lst</tt>
<br><tt>$DEFAULT</tt>
<p><tt># Test if the email's sender is blacklisted; if so, send it to "/dev/null"</tt>
<br><tt>:0</tt>
<br><tt>* ? formail -x"From" -x"From:" -x"Sender:" \</tt>
<br><tt> -x"Reply-To:" -x"Return-Path:" -x"To:" \</tt>
<br><tt> | egrep -is -f $MAILDIR/black.lst</tt>
<br><tt>/dev/null</tt>
<p><tt># Here is the real spam-killer, much improved by Dan's example below:
if</tt>
<br><tt># it isn't addressed, cc'd, or in some way sent to one of my addresses
-</tt>
<br><tt># all of which contain either "fuzzybear" or "ulysses" - it's spam.
Note</tt>
<br><tt># the '!' in front of the matching expression: it inverts the sense
of the</tt>
<br><tt># match, that is "if the line _doesn't_ match these words, then
send it to</tt>
<br><tt># $SPAMFILE." "^TO" is a procmail variable that matches "To:",
"Cc:",</tt>
<br><tt># "Bcc:", and other "To:"-type headers (see 'man procmailrc'.)</tt>
<br><tt>:0:</tt>
<br><tt>* !^TO .*(fuzzybear|ulysses).*</tt>
<br><tt>$SPAMFILE</tt>
<p><tt># X-Advertisement header = spam!</tt>
<br><tt>:0:</tt>
<br><tt>* ^X-Advertisement:.*</tt>
<br><tt>$SPAMFILE</tt>
<p><tt># To nobody!</tt>
<br><tt>:0:</tt>
<br><tt>* To:[ ]*$</tt>
<br><tt>$SPAMFILE</tt>
<p><tt># No "To:" header at all!</tt>
<br><tt>:0:</tt>
<br><tt>* !^To: .*</tt>
<br><tt>$SPAMFILE</tt>
<br>
<hr WIDTH="100%" NOSHADE>
<p>For most folks, the only thing necessary would be the last four stanzas
of the above (and of course, the variables at the beginning), with the
first stanza of that doing 95% of the work. The last three I stole from
Dan :), but I can see where they'd come in handy.
<p>By the way, yet another useful thing is a mechanism I've implemented
for reporting spammers: in my "/etc/Muttrc", I have a line that says
<p><tt>send-hook (~s\ Spammer) 'set signature="~/.mutt/spammer"'</tt>
<p>and a "signature" file, "~/.mutt/spammer" that says
<p>
<hr WIDTH="100%" NOSHADE>
<br><tt>Dear sirs:</tt>
<p><tt>I've just received mail from a spammer who seems to be coming from
your</tt>
<br><tt>domain. Please fall upon this creature and rend him to bits. His
garbage,</tt>
<br><tt>with headers, is appended.</tt>
<p><tt>Sincerely,</tt>
<br><tt>Ben Okopnik</tt>
<br><tt>-=-=-=-=-=-</tt>
<br>
<hr WIDTH="100%" NOSHADE>
<p><grin> No, I don't like spammers.
<p>So, in order to send a complaint, I look at the headers with the 'h'
key, run a 'whois' on the originating address, hit 'm' to send mail, and
type the following at the prompts:
<p><tt>To: abuse@<domain.com></tt>
<br><tt>Subject: Spammer</tt>
<p>Given that keyword in the subject, "mutt" pulls up my "spammer" signature
file. I save it, append the original spam with the 'A' key, and send it.
About 15 seconds of typing, whenever I feel like getting another spam kill.
:)
<p>(Just as I was about to send off this article, I got another spam
kill, this time from UUnet. <grin> I collect'em.)
<br>
<p>On we go to other folks' recipes.
<p>LG itself is in a rather vulnerable position in regard to spam. Since
the address is posted on the Net thousands (by now, perhaps millions) of
times, it is constantly harvested by spammers. The thing is, "tight" filters
of the sort that I've described are not feasible. Consider: what would
be a safe "filter" for spam that would not also knock out a certain percentage
of our readers' mail? People send mail in from all over the world, in many
different ways, with just about every kind of client (including those that
create broken headers.) The spam rate for LG, according to Mike Orr, is
28% per month. Rejecting "Precedence: bulk" mail, which can be a good "minor"
filter, is not an option: many "News Bytes" entries (since they are bulk-mailed
news releases) are sent that way. Even the inquiry that led to the publication
of the <a href="collinge.html">HelpDex</a> cartoon series came that way.
<p>What to do?
<p>The answer seems to be careful, "accept-when-in-doubt" filtering and
checking the "spam" mailbox more often than most people. For the staff
at LG, it's just another cost of doing business. Hopefully, even their
"loose" filters decrease some of that load.
<br>
<p>Dan Wilder, the resident admin and system magician, had the following
"spam killer" in his "~/.procmailrc":
<p>
<hr WIDTH="100%" NOSHADE>
<br><tt>:0:</tt>
<br><tt>* !^(To:|From:|Cc:|Resent-From:|Resent-To:).*(eskimo\.com\</tt>
<br><tt>|ssc\.com\</tt>
<br><tt>|linuxjournal\.com\</tt>
<br><tt>)</tt>
<br><tt>$SPAMFILE</tt>
<br>
<hr WIDTH="100%" NOSHADE>
<p>Pretty obvious - anything that doesn't match those three domains in
the specified headers wasn't sent to him. Dan checks his "spamfile" every
once so often - as do I, because real mail can slip by and match by mistake
- and this takes care of the tiny percentage of errors.
<p>
<hr WIDTH="100%" NOSHADE>
<br><tt>Before that is a rule that allows exemptions, as for mailing lists:</tt>
<p><tt>:0:</tt>
<br><tt>* ^(From:|To:|Cc:) .*(-list\</tt>
<br><tt>|debian\</tt>
<br><tt>|networksolutions\</tt>
<br><tt>|ciac\</tt>
<p><tt>...</tt>
<p><tt>|bugs\</tt>
<br><tt>)</tt>
<br><tt>$DEFAULT</tt>
<br>
<hr WIDTH="100%" NOSHADE>
<p>Much the same thing as my "whitelist", but hard-coded into ".procmailrc"
itself. It's not much more difficult to add new people there, so it's just
as good a solution as mine, though perhaps a trifle less automatic.
<br>
<p>LG's editor, Mike Orr, does a fair bit of sorting (which I've clipped)
as well as spam-killing in his recipes (designed by Dan Wilder):
<p>
<hr WIDTH="100%" NOSHADE>
<br><tt>LOG=$HOME/log</tt>
<br><tt>#LOGFILE=$LOG/procmail-log</tt>
<br><tt>VERBOSE=no</tt>
<br><tt>SPAMFILE=$LOG/spam</tt>
<br><tt>UMASK=077</tt>
<br><tt>LOGABSTRACT=on</tt>
<br><tt>COMSAT=no</tt>
<br><tt>DEFAULT=$HOME/Mail/Maildir/new</tt>
<p><tt># The real workhorse.</tt>
<br><tt># Bogus recipient .. not To: or From: or Cc: ssc.com,</tt>
<br><tt># and has an "@" in To: (local mail from damaged MUAs may not)</tt>
<p><tt>:0:</tt>
<br><tt>* !^(To:|From:|Cc:) .*(\</tt>
<br><tt>ssc\.com\</tt>
<br><tt>|linuxjournal\.com\</tt>
<br><tt>|linuxgazette\.com\</tt>
<br><tt>)</tt>
<br><tt>* ^To: .*@</tt>
<br><tt>$SPAMFILE</tt>
<p>Hmm, looks like we have a blacklisted spammer here...
<p><tt>:0:</tt>
<br><tt>* From: .*john@songpeople.com</tt>
<br><tt>$SPAMFILE</tt>
<p><tt># if they have an X-Advertisement header, it's spam!</tt>
<p><tt>:0:</tt>
<br><tt>* ^X-Advertisement:.*</tt>
<br><tt>$SPAMFILE</tt>
<p><tt># To nobody!</tt>
<p><tt>:0:</tt>
<br><tt>* To:[ ]*$</tt>
<br><tt>$SPAMFILE</tt>
<p><tt># No To: header at all!</tt>
<br><tt>:0:</tt>
<br><tt>* !^To: .*</tt>
<br><tt>$SPAMFILE</tt>
<p><tt># Otherwise, fall off the end and default.</tt>
<br>
<hr WIDTH="100%" NOSHADE>
<p>Wow. Seems like a whole lot of stuff, doesn't it? In reality, it's minor:
<p>1) Pipe all incoming mail through "procmail".
<br>2) Build a recipe.
<p>That's it. I've thrown in a lot of tips for doing other spam-related
stuff, but the above two steps are <u>all</u> you need to do in order to
decrease or almost completely eliminate your spam. Oh, look - here comes
another tip! :)
<p>If you already have a mailbox full of spam, and you go ahead and do
the above two steps, it's really easy to filter it all in one shot:
<p><tt>cat mbox | formail -s procmail</tt>
<br>
<p>So, you can indeed "de-spam" your mailbox. Thanks to the power of Linux
and "procmail", you too can stare at people who complain about getting
deluged and say "Oh, yeah... I remember when <EM>I</EM> had that problem."
<Laugh>
<p>Happy spam-hunting!
<!-- *** BEGIN copyright *** -->
<P> <hr> <!-- P -->
<H5 ALIGN=center>
Copyright © 2001, Ben Okopnik.<BR>
Copying license <A HREF="../copying.html">http://www.linuxgazette.com/copying.html</A><BR>
Published in Issue 62 of <i>Linux Gazette</i>, February 2001</H5>
<!-- *** END copyright *** -->
<H4 ALIGN="center">
"Linux Gazette...<I>making Linux just a little more fun!</I>"
</H4>
<P> <HR> <P>
<!--===================================================================-->
<center>
<H1><font color="maroon">Linux Management goes Big Time: Volution Interview with Craig Burton</font></H1>
<H4>By <a href="mailto:doc@searls.com">Doc Searls</a></H4>
</center>
<P> <HR> <P>
<!-- END header -->
<p>Back last fall, when I first heard about Caldera's new <a href="http://www.Caldera.com/products/volution/">Volution</a> product — it was going into <a href="http://www.rebel-os.com/art-caldera-013.html">beta</a> — I have to admit that it didn't register. "Comprehensive Linux Managment Solution" buffers a meaningful phrase — <i>Linux Management </i>— between two words that are pure verbal camouflage. The other modifiers it attracted in press coverage — "revolutionary," "new," "comprehensive," "significant" — came across to me as equally generic PR braggage.</p>
<p>But the concept of "Linux Management" was sufficiently oxymoronic to stick in the back of my mind. The enterprise model of a network is a collection of <i>services</i>: directory, security, management, messaging, Web, print, and so on. As more enterprises build on Linux infrastructure, they'll need the network service called <i>management</i>.</p>
<p>The kind of management we're talking about here isn't just about control. It's about bringing efficiency and knowhow to bear on many systems at once:</p>
<ul>
<li>Installing and removing RPMs
<li>Distributing and installing software
<li>Taking inventory of directory contents and following changes
<li>Setting policies and monitoring the health of systems
<li>Profiling hardware and software and setting conditional profiles for various events (like software installs)
</ul>
<p>Customers in this market want network services that become more valuable as they scale up both in size and rates of change. A management system like Volution only gets more valuable as number of computers, device drivers, operating systems, software packages, and people are added to the network.</p>
<p>Network management is old hat for companies like IBM, HP, Computer Associates and Intel, which all have network management offerings (IBM through Tivoli). But it's new for Linux — and new for Linux in the established enterprise environment.</p>
<p>As I began to look into Volution, I suspected it might be the first enterprise product with the potential to elevate Linux into position as serious — i.e. marketable — enterprise infrastructure. Volution competes directly with the offerings of all the established vendors. An there's nothing exclusive about it, at least where other Linux distributions are concerned. It works with all of them. Caldera also plans to make it work with SCO's <a href="http://ir.caldera.com/wc/form/P1?template=ir/CALD/view_article&Symbol=CALD&first=&ArticleID=SM-CALD-20000802">UnixWare</a> (decended from the original AT&T UNIX), which Caldera purchased last year.</p>
<p>This scope is due partly to Volution's use of SLP (Service Location Protocol ) a standard Internet (RFC2165) protocol that allows discovery, location and configuration of network services such as mail, print and Web hosting. Caldera has developed a version of SLP, called <a href="http://www.openslp.org/">OpenSLP</a>, that it has contributed to the open source community (www.openslp.org). With OpenSLP, services make their presence known to Volution's management agent without needing to go through any kind of setup, cofiguration or other modification.</p>
<p>The management console is an ordinary Web browser. And the system is enabled by an LDAP (Lightweight Directory Access Protocol) directory. A single client can manage any number of servers with LDAP V3 directories.</p>
<p>As with other enterprise offerings from major Linux vendors (e.g. Red Hat <a href="http://www.redhat.com/products/network/">Network Services</a>, SuSE's <a href="http://www.suse.com/us/suse/news/PressReleases/email_server.html">Email Server II</a>), the product strategy is to close the source — and to close marketing mouths about that fact.</p>
<p>To make more sense of what Caldera is doing with Volution, I called on <a href="http://www.burtonian.com">Craig Burton</a>, who is perhaps the world's leading authority on network services (a topic he did much to define both at Novell in the Eighties and The Burton Group in the Nineties). In late January I called on Craig to help make sense of what Caldera is doing with Volution. Normally a <a href="../issue41/searls.html">curmudgeon</a> about vendor's new products and claims, he makes an exception in the case of Volution. I asked him why.</p>
<p>
<hr>
</p>
<p><b>Doc Searls:</b> What's so special about Volution?</p>
<p><b>Craig Burton: </b>Two aspects: architecture and strategy.</p>
<p><b>Doc Searls:</b> Then let's start with architecture.</p>
<p>As management systems go, the Volution architecture is elegant, well thought out, and usable.</p>
<p>First, it's directory-enabled. Volution is a great example of what power and elegance infrastructure can have based on the concept of using a general-purpose directory service for systems design. As such Volution is an example of the way network infrastructure should be built — using the constructs of a general-purpose directory and security service to manage the location, identity and state of network objects over space and time.</p>
<p>Second, it uses standards-based infrastructure where possible to do really difficult things, and it does them in a non-intrusive manner. For example, it's hard to discover and create a manageable network without a lot of administrative work and change to the configuration of the very system you are trying to manage. Volution uses OpenSLP to locate and connect to services. this protocol is very cool for creating a manageable environment while causing minimal potential for other problems.</p>
<p><b>Doc Searls:</b> For example?</p>
<p><b>Craig Burton: </b>While you still have to install the Volution client on a Linux operating system in order to make it manageable, with OpenSLP, you can do it without having to change any of the configuration files on the target Linux OS. This is because with OpenSLP, services — the management server — and the client — the managed workstation — can find each other and rhen exchange information about each other on the network. And they can do it independent of the configuration of the Linux OS on either side. This is a triple whammy. First, Linux doesn’t have a native location protocol; and second, every protocol that anyone else uses, Linux or not, is much more intrusive and complicated. Finally, OpenSLP is the only service location protocol that has reached RFC status. Nobody else even comes close to doing that, or having and architecture that lets you do that. Novell is the only vendor that really uses OpenSLP with their management products. This is because Novell had to have a way to convert their service location protocol (Service Advertising Protocol [SAP]) to something that was TCP/IP-based and preferably an RFC. Sun says they are going to use it but isn’t doing much yet. I don’t think this is an issue either way; but it is a simple functional protocol with RFC status that does the job and then some.</p>
<p><b>Doc Searls:</b> What about Red Hat? Aren't they doing something here?</p>
<p><b>Craig Burton: </b>Red Hat’s management system is a good example of an intrusive system. The Red Hat system uses Novell's NDS — it's called eDirectory when it's used with Linux — and is therefore directory-enabled. They run the directory — they don't really give the customer a choice — and they embed their agent so it goes in and makes system changes, and it's Red Hat 7 only. A much better approach to management is to keep the stuff doing the management separate from the stuff being managed. They're also running a service business here. It's not implementing management or directory as discrete network services.</p>
<p><b>Doc Searls:</b> What else about the architecture?</p>
<p><b>Craig Burton: </b>Object oriented design is another thing. All of the benefits of object-oriented design come in to play as a result such as reusability, inheritance, simplicity, and consistency. Basically, Volution creates objects that represent what the network looks like and puts them in the directory. For example, if something goes wrong—a machine quits working—the management system can look at the object representation of the system (in the directory), check the differences between it and the real system, and fix what has been broken. Or at least make them match and do a best attempt to bring things back to where they were when things were known to be working. The only down side of their object oriented strategy is that they created their own object model. Fortunately they did it in a directory-enabled way, so they should be able to transition to a more long-term solution at a later point.</p>
<p>Another is XML-based encoding. Volution uses XML to communicate between the client and server. This is good for all of the obvious reasons; text-based, extensible, self-discovering and all the same reasons Jabber, for example, uses XML.</p>
<p><b>Doc Searls:</b> There's the browser interface.</p>
<p><b>Craig Burton: </b>The interface to the service is through a Web-server. They like Apache. This means the management server talks to any web-based client. This means administration and management can be done from anything that can run a browser. That’s good use of infrastructure and is the way things should work.</p>
<p><b>Doc Searls:</b> Is it a good enough first effort, or is it missing some things that might hurt its acceptance?</p>
<p><b>Craig Burton: </b>While Volution is still a long ways from being a finished management system —i t doesn’t actually provide the full-blown applications that use the services — it provides a significant leap forward for the Linux community and does it with what I consider great foundational management architecture: the kind of infrastructure I would recommend and design. It's good for customers, partners, developers and anybody else that wants what it offers.</p>
<p><b>Doc Searls:</b> That's an unusually strong endorsement. I haven't heard you gush about too many things before.</p>
<p><b>Craig Burton: </b>I thought about this a lot and I tried to come up with a reason to be more negative, and I couldn’t. I think Volution is well thought out. They have a veteran team here. When I was briefed by some of the same guys when they were at Novell doing this work, they were loving it because they were able to build the basic infrastructure building blocks for this system in a fraction of the time it took them to do it for ZEN Works. Those are probably the two reasons why this is so good. It is the second go around for the architects, and it is based on a general purpose operating system and tools. Nice stuff.</p>
<p><b>Doc Searls:</b> What about strategy?</p>
<p><b>Craig Burton: </b>Linux is a commodity. It is also truly becoming critical infrastructure. So how does a linux distro vendor bring value to the table? Service? There's no way a distro vendor can scale enought to bing in the service level the cuistomer needs. That's not a long-lasting way to cause shareholder value. What they need to do is field the next generation of Internet services that run on Linux. Caldera is doing that with management services, and doing it in a distribution-agnostic way.</p>
<p><b>Doc Searls:</b> So they scale with a product that provides an Internet service, rather than try to run a service business.</p>
<p><b>Craig Burton: </b>Right. They've come up with a product that builds infrastructure that supports the commoditization of Linux in a way that is significantly more advanced and architecuturally sound than what anybody else is doing. They're raising the stakes of what a distro vendor needs to do.</p>
<p><b>Doc Searls:</b> It's not open source. How is that strategic?</p>
<p><b>Craig Burton: </b>The reality is that not all of Volution is open source. But it <i>is</i> open-source based,and it's a real strategy. Red hat's service strategy isn't open source either. It's based on Novell's eDirectory, which is NDS running on platforms other than Netware. You pay a monthly fee to Red Hat and they'll manage your directory. eDirectory is not an open source product. I don't see how Red Hat can make it one. Meanwhile they're providing service only for companies using their latest distribution version. What good is something no other Linux vendor can work with? It's the same as not being open source.</p>
<p><b>Doc Searls:</b> But it's still strategic to the degree that they offer <i>some</i>thing.</p>
<p><b>Craig Burton: </b>Their goal is to be THE Linux. If they want to maintain the kind of majority share they have now, they need to differentiate. This is one way. Whether they realize that it's also a lock-in strategy is an open question.</p>
<p><b>Doc Searls:</b> So you're saying Caldera is more strategic because they're offering a different network service, and doing it in the form of a product — a strategy that scales.</p>
<p><b>Craig Burton: </b>Yes. And I'm saying <i>bravo</i>. This is a bold move. In chess terms, it's a Bobby Fischer-grade opening. It's preposterous to think that a Linux distribution vendor can an industry impact on network management, but I think that's exactly what Caldera has laid out here. This architecture is strong enough, and well-thought-out enough, that it really is an industry-leading move. If it weren't Linux and if it weren't Caldera, a lot more people would be calling it hot stuff. And it may just be that Linux is hot enough, and Caldera is strategic enough, that it <i>really is</i> hot stuff. If it doesn't pan out, it's still what network management is going to be like. Whoever solves the problem of management is going to take this kind of approach, whether it's Linux or not. It's a very cool move on Caldera's part.</p>
<p><b>Doc Searls: </b>What about security?</p>
<p><b>Craig Burton: </b>Security is inherent in this. Security and directory are related services. This goes back to the network services model, which says that directory and security are the services on which all the other services have to be based. And right here Caldera has a directory-based secure management infrastructure. That's really strong.</p>
<p><b>Doc Searls: </b>In that it's independent of any Linux system.</p>
<p><b>Craig Burton: </b>Right. But it's still only Linux. It only runs on Linux and only manages Linux systems. But it embraces all Linux distributions, and that's very significant.</p>
<p><b>Doc Searls: </b>How about IBM, which is selling a lot of Linux and declaring itself a Linux Company?</p>
<p><b>Craig Burton: </b>Their solution is Tivoli, which isn't anywhere near as clean as this. IBM bought Tivoli a while back. They're an object oriented network management solution. They have a lot more stuff than Caldera does in Volution, but Caldera has a more elegant solution because it fosters infrastructure.</p>
<p><b>Doc Searls: </b>How about companies like <a href="http://www.egenera.com">Egenera</a>, which are building data centers around Linux (or planning to)? These centers might include Linux and other platforms. They should be looking at this kind of thing, no?</p>
<p><b>Craig Burton: </b>They should be jumping all over it. Anyone doing widespread Linux implementation should be looking at this as infrastructure. Because there isn't anything better for Linux. Again, unfortunately, it's still only Linux. That's not enough in the larger scheme of things, but it's a huge start.</p>
<p><b>Doc Searls: </b>Is there anything about Linux that makes it inherently more or less manageable?</p>
<p><b>Craig Burton: </b>There is no infrastructure in Linux to discover a configuration. So Caldera built one that goes in there and does a hard-wired discovery of the Linux architecture, so it can point back what's there in terms of devices, device drivers and systems. Volution uses that. It's the way they do discovery to populate the virtualization of management. It's tied in with OpenLinux, which is open source. But the agent that does this isn't. At least not yet. Right now they're trying to get out there in front of the curve by providing real management services. This is a valid strength.</p>
<p><b>Doc Searls: </b>What would be the next steps?</p>
<p><b>Craig Burton: </b>There are several questions that come up. Who's going to build the Caldera Volution client for other platforms besides Linux? That's one question. And which Linux distributions are going to bundle the Volution client? If it was included with TurboLinux, Volution would automatically find it and begin securely managing it.</p>
<p><b>Doc Searls: </b>Isn't the client a browser?</p>
<p><b>Craig Burton: </b>This is where the term "client" gets confusing. There is a Volution management server that is accessible from a browser. In this sense the browser is the "administration" client for Volution. The administration client is used to do things like setup, configuration, and maintenance of Volution. Then there is the actual "management" client. This is a piece of software that enables Volution to manage a Linux platform. The management client is loaded and sits in the background of the Linux system doing its management job. The management client looks for problems, communicates with the server, and executes management functions. Both client functions are secure and require passwords to do things.</p>
<p><b>Doc Searls: </b>What about LDAP? Will it look at any LDAP directory?</p>
<p><b>Craig Burton: </b>They're using an LDAP v3 directory, which has a security model. It's far enough along to justify their claim that if you've got a V3 LDAP infrastructure in place you can use Volution. The problem is that what V3 does not define is replication. What's missing with LDAP directory is, one, dealing with the naming problem, and two, that LDAP servers talk to each other.</p>
<p><b>Doc Searls: </b>LDAP is a protocol. So why, if there's a protocol in place —</p>
<p><b>Craig Burton: </b>LDAP defines only how a client talks to a server. Not how a server talks to a server.</p>
<p><b>Doc Searls: </b>Critical difference. Can we diagram what's possible and what's not here? If you've got a Volution console, and you're looking at multiple directories, you can do that, because you're a client talking to a server. But —</p>
<p><b>Craig Burton: </b>— But there are going to be pockets of disparate LDAP solutions out there — even though it is assumed that this is not something you want to do, because it isn't manageable. What happens is you're busy thinking that's not what you're going to do, but it happens anyway. Let's say you've got a company with two geographic implementations of lots of linux distributions with one LDAP directory per location. The one in California uses mostly Red Hat, but also some other Linux distributions, and uses Netscape as its LDAP directory infrastructure. Now let's say the one in Utah has bought off on eDirectory, which is Novell's LDAP directory infrastructure. These two systems can't be integrated as a single managed entity.</p>
<p><b>Doc Searls: </b>Not yet.</p>
<p><b>Craig Burton: </b>Not for a long time. Because these servers don't talk to each other.</p>
<p><b>Doc Searls: </b>You need metadirectory for that.</p>
<p><b>Craig Burton: </b>That's right. You can't do it without metadirectory. But that's still way downstream.</p>
<p><b>Doc Searls:</b> But there are metadirectory products out there.</p>
<p><b>Craig Burton: </b>Sun's iPlanet metadirectory, which used to be Netscape's, tries to figure out how to reconcile the vendors that bought their own different LDAP directories. How do you integrate those different name spaces? They have to talk to each other, even though they have different schemas and naming practices. They don't match. Between them you have breakdown. The problem is the same as if one directory wasn't LDAP.</p>
<p><b>Doc Searls:</b> So LDAP is necessary but insufficient.</p>
<p><b>Craig Burton: </b>Yeah. See, I can look, though LDAP, at two different islands, but I can't look at them together. Any LDAP client can look at any LDAP directory on any LDAP server, but each creates its own island. The servers are not integrated.</p>
<p><b>Doc Searls: </b>So for now it can't be done.</p>
<p><b>Craig Burton: </b>Sure it can be done. Go buy Microsoft's metadirectory. It does exactly that.</p>
<p><b>Doc Searls: </b>This is Zoomit's VIA, which Microsoft bought a few years ago, and which had as its charter a policy of including all directories regardless of vendor, naming convention, schema or anything else.</p>
<p><b>Craig Burton: </b>Right.</p>
<p><b>Doc Searls:</b> So if I have a multi-platform shop already running Windows 2000 server, I can buy VIA, put it on the server and combine multiple LDAP directories.</p>
<p><b>Craig Burton: </b>Right. But if you're a customer who's trying to follow orthodox Linux policies, you can't.</p>
<p><b>Doc Searls:</b> But if you're all open source, you're not even running Volution.</p>
<p><b>Craig Burton: </b>That's right. If you're in an all open source environment, you're hosed for management. There is no management infrastructure in an all-open-source solution today. Certainly nothing like Volution.</p>
<p><b>Doc Searls:</b> But Volution may be politically acceptable because it comes from a company that's committed to opening everything it believed it can, and still stay in business.</p>
<p><b>Craig Burton: </b>Right. Look: people have always been paying for software. Companies — vendors and customers alike — need to have an open source strategy because only open source is going to create ubiquitous infrastructure. The question isn't just, <i>What should be open and what shouldn't?</i>, but, <i>How do we generate both ubiquity and shareholder value?</i> Caldera has a strategy for that. So does Red Hat. They're players. You have to have an open source strategy to play today. That has become a very clear reality. What remains fantasy is the idea that everything has to be open source. But that's an absolute idea that has no opposite. Open source advocates have done a very good job of selling the value of open source. But there isn't enough pudding in the commercial space to prove it, and there never will be. Caldera is living with this problem right now, and doing a very careful job of moving everything it can into the open source space, which creates ubiquity, while they come out with products like Volution, which drive shareholder value and happen to be closed source.</p>
<p><b>Doc Searls</b>: That's why they put OpenSLP out there as a protocol.</p>
<p><b>Craig Burton: </b>Right. That creates ubiquity because it's something everybody can use tomorrow. Microsoft did the same thing with SOAP.</p>
<p><b>Doc Searls: </b>Which they created with other companies.</p>
<p><b>Craig Burton: </b>Sure. But it's still an open source strategy.</p>
<p><b>Doc Searls: </b>And we're still new to all this.</p>
<p><b>Craig Burton: </b>It's still a new world. What's ubiquitous about that world is full of open source stuff. But it also has to be a world where business can thrive. Can you do that entirely with closed source software? Not if companies are going to make money at it.</p>
<p><b>Doc Searls:</b> If we look at what Richard Stallman wrote in the <a href="http://www.gnu.org/gnu/manifesto.html">GNU Manifesto</a>, one business idea behind a free operating system was "remove operating system software from the realm of competition." He says, "You and they will compete in other areas, while benefiting mutually in this one.... GNU can save you from being pushed into the expensive business of selling operating systems." Maybe managing multiple operating systems is one of those areas.</p>
<p><b>Craig Burton: </b>Let's go at it from this direction. There are those who think that Linux' role is to take over the client, and be big contender there. God bless 'em. That's not what I'm talking about. The fact is, Linux already is a contender as a platform for infrastructure. No, it's beyond that: it <i>is</i> infrastructure. Period. Today. However, it's an infrastructure commodity. So those who are in the business of supplying that commodity need to put a stake in the ground about the next piece of infrastructure they're going to provide that's based on Linux. We have exactly two vendors in the Linux community who have driven those stakes: Red Hat with service and Caldera with management. Red Hat offers exclusive <a href="http://www.redhat.com/products/network/">service</a> based on eDirectory which is a form of NDS: a directory <a href="http://developer.novell.com/research/sections/codebreak/devscene/2000/november/j001101.htm">from</a> Novell. Caldera offers Volution, which is an agnostic management system that works with all kinds of Linux systems, including Red Hat's. Now: which one is more strategic, more long-term and better for the industry and an evolutionary leap? It sould be Caldera.</p>
<p><b>Doc Searls:</b> Isn't Red Hat just doing what it can until it figures out something better?</p>
<p><b>Craig Burton: </b>Sure. But in doing service, they are trying to figure out how to do standards-based, directory-enabled service. Not services. That's it right there. Huge difference.</p>
<p><b>Doc Searls:</b> This has all been very much on the positive side for Caldera. What's the down side? Is there anything wrong with Volution as it now stands?</p>
<p><b>Craig Burton: </b>The Volution object model is homegrown and not a long-term approach. I think they should use The Desktop Management Task Force’s (DMTF) Common Information Model (CIM). The Linux community is very resistant to CIM because Microsoft is fully committed to it. The community wishes there was an alternative, I don’t see one. Trying to force another object model into play is a waste of time. But politics are still likely to muck this up. I also think they need to support other platforms besides Linux, either themselves, or through partnerships. This product calls into question whether Caldera intends to be in the infrastructure busienss or in the management business. It's one thing to provide infrastructure on which everyone builds or to put applications on infrastructure. Sooner or later they'll have to choose. I think they should stay in the infrastructure business.</p>
<p><b>Doc Searls:</b> Doesn't Volution put them in both?</p>
<p><b>Craig Burton: </b>It's mostly infrastructure with a a start on management applications: inventory and application distribution, hardware and software inventory, health monitoring, Linux printer configuration and management. These are separate applications that come with Volution. There's no help desk, no trouble ticket. The question is, are they going to partner with somebody to create those things or do it themselves? I think they should partner.</p>
<p><b>Doc Searls:</b> Why shouldn't they add more value to what is clearly a product?</p>
<p><b>Craig Burton: </b>It's not that they shouldn't. It's what works best both for them and for the industry they're serving. The infrastructure strategy is in alignment with their roots. It's not a big leap going from Linux to management infrastucture. It <i>is</i> a big leap to go from Linux to managment applications. It's a very different business. They'll probably need to walk a fine line here. A Linux vendor selling network management to the enterprise is a new concept and they're pushing the envelope with it.</div>
<!-- *** BEGIN copyright *** -->
<P> <hr> <!-- P -->
<H5 ALIGN=center>
Copyright © 2001, Doc Searls.<BR>
Copying license <A HREF="../copying.html">http://www.linuxgazette.com/copying.html</A><BR>
Published in Issue 62 of <i>Linux Gazette</i>, February 2001</H5>
<!-- *** END copyright *** -->
<H4 ALIGN="center">
"Linux Gazette...<I>making Linux just a little more fun!</I>"
</H4>
<P> <HR> <P>
<!--===================================================================-->
<center>
<H1><font color="maroon">Have Your PC Listen to the Radio For You</font></H1>
<H2>Putting Linux to work in the Real World</H2>
<H4>By <a href="mailto:radiolinuxdood@mad.scientist.com">Charles Shapiro</a></H4>
</center>
<P> <HR> <P>
<!-- END header -->
<P> A lot of Great Stuff goes out over the broadcast radio bands, but it's
rare that you're actually in a position to hear it. I have solved this
problem with various systems to record radio broadcasts to cassette
tapes. My starting equipment was a boom box and a hardware-store AC
power timer switch, later updated to a fancy stereo tuner and a
slightly nicer timer switch. Some stereo tuners have an 'instant on'
feature which remembers what radio station they were set to when they
were turned off, thus allowing you to hook a tape drive to them and
turn them on through the power cord. All of these approaches suffer
from several drawbacks. Hardware-store timers work only in 24-hour
cycles, so if you want to tape a show at 8pm Saturday and another at
noon Sunday, you must reset them between days. More expensive timers
feature interfaces which are very difficult to learn and manipulate,
limiting their usefulness. It is also difficult to keep these timers
precise; they're really not built for that purpose. In addition, you
can only turn the radio on or off with them. You must also be sure to
get the thing tuned to the right channel. Every step you do to catch a
radio broadcast increases the chance that you will make a mistake and
miss the show.
</P>
<P>
The obvious solution to this problem is to use a computer to control both radio and
tape deck, setting times and channel tunings through it. The ideal way to have this
work would be to have a single device with a radio, a computer, and a tape deck all
tied together inside, along with a clean, simple interface to control them all.
In the real world, there's probably not enough crazed radio listeners
to justify designing
and manufacturing such a thing.
But it's still possible
to hook all these things together. With Linux, an old PC, and a PC radio card,
you can build a device to hang off your home network
which will be simple to operate and let you listen to some Really Cool Stuff
for less than $150.
<P>
The system I built started with a '486 DX 66 PC with a 1.5 GB hard
disk and 16 MB of RAM, which I obtained in exchange for a 6-pack of
good homebrew beer. I could have done only a half-gig of drive space. To
this I added a <A href=http://www.adstech.com/products/cadet.html> PC
Cadet radio card</A> (about $40), a
<A href=http://www.x10.com/firecracker/fc_x10_cm17a_br1.htm>CM17A
'Firecracker' X10 control module</A> (I got mine free in a promotion),
the tape deck (bought used from a friend), an X10 radio
transceiver module ($20 or so), and some audio cables. The tape deck must have a
'record on' feature, so that you can force it to begin recording
immediately when you supply it power. The audio cable has a miniature
stereo plug on one side, and a pair of RCA plugs on the other. Most
audio stores sell these for plugging portable CD players into room
stereo systems.
</P>
<H2>Configuring the PC Hardware</H2>
<P>
The first step in building the radio timer is to attach all the hardware you'll need
to the PC.
Plug the PC Cadet radio card into an available ISA slot. Plug the
CM17A "Firecracker" module into one of the serial ports on the back
of the PC. The CM17A needs a DB9 connection; if you have only the
larger DB25 serial port on your machine, you'll need an adapter. The CM17A
features a pass-through DB9 port on the outside of the device. Reports
are that this works well if you need to plug another device into your
box's DB9 port.
</P>
<P>
It's best to run your radio listener server "Headless"
(with no monitor or keyboard) on a
network. This way, you can work with it from somewhere else in your house,
and you won't have to
power a monitor which you'll seldom have reason to read.
The only thing actually travelling over the network will be text, so you can use a
10BaseT card to connect the server to your network.
Try to find a PC with a BIOS up to date
enough to include the option not to test the keyboard on boot if you
go this route. Even though you won't be using it, your radio server will need a
video card in order to boot properly. Access to a parts pile comes in handy
here, since even an old 'Hercules' black & white video card will serve well
for this.
</P>
<H2>System PC Software</H2>
<P>
I first installed the Debian 'Potato' release of Linux on my PC
(of course, I had a monitor and keyboard attached for this task). The
installation was straightforward, and the release CDs had all the
drivers I needed. Installing Linux is outside the scope of this essay;
if you need help,
<A href=http://www.ibiblio.org/mdw/HOWTO/Installation-HOWTO/index.html>
The Linux Installation HOWTO</A> is as good a place as any to start.
You need not install X-Windows or any of its support files, since you'll
be talking to the machine over your network rather than running an X server on it.
This cuts down the pain of installation by a good bit. It is best to
avoid dual-boot or floppy-boot configurations if at all possible for
a server like this, since with no monitor it is difficult to tell what
is happening if the machine will not come up far enough to talk to the network. I
chose to put C and Perl on this server, although they are not strictly
necessary for what I am doing on it now.
They will help if I later decide to experiment with
browser-based configuration or want to use the server as a general-purpose
X10 server machine.
</P>
<P>
Another useful trick on a server like this,
controlled from your network and inside your firewall, is to
make /sbin/shutdown runnable from an unprivileged account. On a
multi-user system, you should not do this for security reasons. But if
you are the only user of your Linux box, changing /sbin/shutdown this way
makes it possible to shut
down from any of the accounts on which you happen to be logged in.
The way to do this is with the chmod(1) command. Log
in as root, then type
<PRE>
chmod +s /sbin/shutdown
</PRE>
This also allows you to use one user cron file to control the machine, which
simplifies setting it up and making it work.
</P>
<H3> Installing the radio card Control Software</H3>
<P>
The first step in putting together the radio listener server is to get the
computer to control a
broadcast radio receiver. I used
the <A href=http://www.adstech.com/products/cadet.html> PC
Cadet radio card</A> for my receiver, although several other radio cards
also work with Linux.
Linux 2.2 controls the 'Cadet' radio card, as well as several other
types of cards, through the
<A href=http://roadrunner.swansea.linux.org.uk/v4l.shtml>
Video4Linux drivers</A>. Setting the card up
is a 4-step process. First, you must use the pnpdump(8) utility to
create an isapnp parameter file and edit this file appropriately. See
the
<A href=http://www.ibiblio.org/mdw/HOWTO/Plug-and-Play-HOWTO.html>Plug-and-Play-HOWTO</A> for detailed instructions on configuring
isapnp devices. I was able to work this
step out from the man(1) pages on isapnp(8) and pnpdump(8)
without too much difficulty.
The PC Cadet radio card will give back the ID string
"ADS Cadet AM/FM Radio Data Receiver V. 1.4". The pnpdump(8) program
will also show what the base IO address of the card is; chances
are this is 0x200. After you have
successfully modified the output file from pnpdump(8)
and fed it to isapnp(8), you can load the
"videodev" driver into memory with
insmod(8). Then, load the "radio-cadet" module with an argument
of "io=number", where number is the Cadet's
base IO address as given by pnpdump(8).
You must next configure the "/dev/radio0" device at 81,64 with mknod(1).
Finally, install the
<A href=http://www.exploits.org/v4l/fmtools.html>fm</A> program to talk to the
radio card through your new device.
You now have a broadcast radio receiver controlled by your computer.
The PC Cadet radio
card has only a single "line out" jack, so you will need a portable
boom box with a "line in" and your audio cable to verify that
everything is working correctly. Plug the boom box's "line in" into the radio
card's "line out", switch the box to "Line" mode,
and you should be able to make broadcast
radio come out of it from your command line. After you've satisfactorily
performed the device configuration steps, you can make sure they
happen at every boot by placing the modified output file from
pnpdump(8) in /etc/isapnp.conf and the appropriate modules and
arguments in /etc/modules.conf.
</P>
<H3>X10 Control Software</H3>
<P>
At this point, you have a computer which can play broadcast radio on the
channel you want.
The next step is to make it able to control the tape deck, so
you can capture the output of the radio receiver.
That is the job of the CM17A 'Firecracker' X10 module.
Making the CM17A work is simpler than setting up the radio card. Make sure that you
have the drivers for the serial ports loaded correctly (this should
have been taken care of when you installed your system). You can then
install
the "br" program (available in the
<A href=http://packages.debian.org>
the Debian package repository</A>,
although you will have to hunt for it
under "stable/electronics/bottlerocket"). and use it to
determine which serial port you have the CM17A plugged into. The
simplest way to test it out is to plug a lamp into your X10 transceiver
module, then try to control it from the command line with the "br" program.
Once you know which serial port you are working with (there are most
probably only two you need worry about),create a
softlink to the correct device with ln(1) called "/dev/firecracker".
</P>
<P>
You address X10 devices with both a 'house code' and a device sequence number.
I am already using X10 to control some lights in my house, so I used a
housecode different from the one on my light controllers on the X10
transceiver connected to my cassette deck.
This also makes for easier administration if you decide to
control other X10 devices from your Linux box. The X10 controller used
for lamps is unreliable when connected to a radio or other electronic device;
it is best to use an "appliance module", which contains a relay rather
than a solid-state switch, for these kinds of devices. Fortunately, the X10
transceiver has a relay of this kind, so if you're only using X10 for this one thing,
you're OK here.
</P>
<H3>General system setup</H3>
<P>
The best way to set the other server software up is to
centralize everything to do with timed radio reception
under one user ID. I have a "Radio" user which
holds the script, crontab(1) files, and other application files I need
to run the radio. If you're setting this up on a box you use for other
things, this is a necessary step. Otherwise, your head will
explode from complexity when it's time to back up or modify your machine.
</P>
<H2>Assembling the device</H2>
<P>
After you have proven that the CM17A and the radio card work separately,
try assembling and testing the whole system. The PC will get power from the
wall. Plug your tape deck into the X10 transceiver and thence into the
wall, and run the audio cable from the PC to the tape deck. Connect the PC to
your network. Make sure that the
tape deck is set to record when it's powered up, and you should be ready to go.
<P>
When you are finished, the hardware should be connected together like this.
<IMG ALT=Hardware Block Diagram SRC=misc/shapiro/tivoblock.jpg
WIDTH="980" HEIGHT="640">
You should now be able to turn the tape deck on in record mode
from a telnet session on your server, then
turn the radio on in the same way and watch the LEDs on your deck move as broadcast
radio sounds flow onto your cassette tape. Take the tape over to your stereo and
play it to verify
you are really getting what you should. You'll probably have to twiddle some
knobs on your cassette deck to get the levels just right. I also installed a fancy
powered antenna on the PC radio card to improve FM reception; you may not need to
do this if the radio stations you're interested in are strong enough in your area. I
favor 120 minute cassettes for this kind of listening, since
few radio shows last more than an hour.
You may find that audio quality is better with shorter tapes.
</P>
<H2>Application PC Software</H2>
<P>
After you've gotten your pieces to work together, you'll need some way
to automagically kick off the radio on the appropriate times and
channels. Linux comes with a marvelous system program called cron(8), which provides
timed execution of scripts. All you need to do is set up a set of crontab(1) entries
for your radio user which will set the radio channel and turn it and the tape deck
on and off when your favorite shows come around.
You could go nuts here, with a really cool web-based
interface,a perl script to do the controlling and another CGI script
to edit your crontab file, and all kinds of slick
amazing bells & whistles. To just make it work, I used bash(1). The
script I came up with is short, simple, and to the point:
</P>
<A HREF=misc/shapiro/radiofirst.sh.txt>Text version of this listing</A>
<PRE>
#!/bin/bash
#################################################################################
# Very first shell script to control radio. Very crude.
#
# Charles Shapiro Dec 2000
################################################################################
LOGFILE=/home/radio/radio.log
BREXEC=/usr/bin/br
FMEXEC=/usr/local/bin/fm
echo ------------------ >> ${LOGFILE}
date >> ${LOGFILE}
${BREXEC} -c b -n 1 >> ${LOGFILE} 2>1
${FMEXEC} $1 65536 >> ${LOGFILE} 2>1
echo Sleeping $2m.. >> ${LOGFILE}
sleep $2m >> ${LOGFILE} 2>1
${FMEXEC} off >> ${LOGFILE} 2>1
${BREXEC} -c b -f 1 >> ${LOGFILE} 2>1
date >> ${LOGFILE}
echo ------------------ >> ${LOGFILE}
</PRE>
<P>
The logfile is a necessary refinement; many subtle errors can creep in
when you are setting up cron jobs, and it is a great debugging
help. For example, I found it necessary to explicitly specify the path
to each executable I used in this script, lest the programs not get found
when it ran under cron(8). This results in an hour of empty tape if the "fm" program
doesn't run, or the radio playing into a dead tape recorder if the "br" program fails.
<P>
<H3>Setting up your crontab file</H3>
<P>
Use crontab(1) to set the cron file you'll
use to tune your radio.
Mine currently looks like this:
</P>
<PRE>
#
# Crontab file for radio
#
# Charles Shapiro Dec 2000
#
# Prairie Home Companion
00 19 * * Sat /home/radio/radiofirst.sh 90.1 70
# Industrial Noise
00 00 * * Sun /home/radio/radiofirst.sh 91.1 70
# My Word
00 12 * * Sun /home/radio/radiofirst.sh 90.1 70
# Locals Only
00 19 * * Sun /home/radio/radiofirst.sh 99.7 70
#Shutdown after weekend
00 21 * * Sun /sbin/shutdown -h -y now
# Commonwealth of California
00 10 * * Wed /home/radio/radiofirst.sh 88.5 70
# Between the Lines
30 19 * * Thur /home/radio/radiofirst.sh 90.1 40
#Shutdown after mid-week
00 21 * * Thur /sbin/shutdown -h -y now
</PRE>
<P>
Your crontab(8) will vary, since this is the place where you record
your taping choices. The 'shutdown' lines in this crontab file bring
Linux down gracefully from my 'radio' account, so I can turn the
machine off from the power strip when it will be idle for a few days.
Without them, I would have to fire up another machine and log in to
manually shut the system down. Setting the /sbin/shutdown program's
privileges to allow a non-privileged account to run it allows me to
keep everything in the radio account's crontab(8) file, so it's easier
for me to understand what will happen when. Of course, if you're not so
stingy as I am, or if you want to listen to more different things,
you may choose to leave your radio server on all the time. My choice
here means that I must
remember to turn the server on again on the days when I will be taping.
</P>
<H2>Improving the Radio Server</H2>
<P>
A real 31337 7190X HAX04 D00D would do all this on a
'diskless' PC, running everything from a couple of floppy drives with
<A href=http://www.linuxrouter.org>LRP</A> (the Linux Router Project) or
another one of the tiny Linux distributions. I've already made that approach
work on
<A href=http://www.ale.org/talks/shapiro_lrp.txt>this project</A>, so I
may eventually tear the drive and SCSI controller out of my radio listener server
and use them on another machine.
</P>
<P>
Given that we already have the hard drive there though,
one good refinement would be
to improve the user interface. I could run
<A href=http://www.apache.org>apache</A> on the box
and create a CGI script connected to a browser form to make it easy to
change what radio stations it will listen to and when. Another
possible direction is to create MP3 files instead of tapes, but this
would depend on a sound card in the PC and an MP3 player in my car,
neither of which are on the horizon (the current radio PC is out of
slots).
I've also thought about daisy-chaining tape decks to
the Cadet's 'audio out' cable and connecting them to different X10
appliance controllers. This would make it possible to go longer
without swapping tapes, so I could tape more than one show without
being physically present. The video4linux spec also allows more than
one radio card to reside in the same machine, so you could modify
this setup to tape more than one show at the same time. Another great
thing would be to attach a
<A href=http://www.x10.com/products/x10_ck11a_ci.htm>CM11A X10 controller</A>
to the radio PC's
remaining comm port and
power strip. These devices have independently programmed timers, so
that the PC could tell the CM11A to wake it up in a couple of days and
then shut the power off to itself. This would mean I would not have to remember to hit
the power strip switch every couple of days.
A less elegant solution would be to use
one of my old hardware-store timers which I have lying around
the house for the same purpose.
</P>
<P>
This kind of application is one place where Linux can truly shine.
Cheap, single-purpose servers which do one thing extremely well are a
good extension of the original Unix and Linux software philosophy of
simple parts glued together for complex behavior. This project
would not have been possible with an expensive, GUI-based operating
system such as OS/2, Windows, or BeOS. Doing it with MS-DOS would
have involved an extensive development effort on the application side, even
assuming you could find or write drivers for the radio card and CM17A.
</P>
<!-- *** BEGIN copyright *** -->
<P> <hr> <!-- P -->
<H5 ALIGN=center>
Copyright © 2001, Charles Shapiro.<BR>
Copying license <A HREF="../copying.html">http://www.linuxgazette.com/copying.html</A><BR>
Published in Issue 62 of <i>Linux Gazette</i>, February 2001</H5>
<!-- *** END copyright *** -->
<H4 ALIGN="center">
"Linux Gazette...<I>making Linux just a little more fun!</I>"
</H4>
<P> <HR> <P>
<!--===================================================================-->
<center>
<H1><font color="maroon">Video Applications on Your Linux Box</font></H1>
<H4>By <a href="mailto:anderson@wslogic.com">Anderson Silva</a></H4>
</center>
<P> <HR> <P>
<!-- END header -->
<p class="MsoNormal"> <span style="FONT-SIZE: 11pt; FONT-FAMILY: Arial; mso-bidi-font-size: 10.0pt">In
this article I want to show you a few things you can do with a $50 TV card under
Linux. This article expects you to know how to compile the kernel, and how to
install general application on Linux. I will not get into too much detail, but
for each section there are plenty of documentation available on the web for you
to study and learn. <O:P>
</O:P>
</span></p>
<p class="MsoNormal"><span style="FONT-SIZE: 11pt; FONT-FAMILY: Arial; mso-bidi-font-size: 10.0pt"> This
last week I had a blast setting up a Pinnacle Studio PCTV on my Linux box. You
can get this TV Card for about $50 on most online computer stores. <O:P>
</O:P>
</span></p>
<p class="MsoNormal"><span style="FONT-SIZE: 11pt; FONT-FAMILY: Arial; mso-bidi-font-size: 10.0pt"> First,
let me give you my settings:<O:P>
</O:P>
</span></p>
<p class="MsoNormal"><span style="FONT-SIZE: 11pt; FONT-FAMILY: Arial; mso-bidi-font-size: 10.0pt">1
GHz Athlon<br>
256 MB of RAM<br>
60 GB HD<br>
VIA 97 Sound Card<br>
Nvidia TNT2<br>
Running Red Hat 7<br>
Kernel 2.4.1<br>
Xfree86 4.0.2<br>
Pinnacle Studio PCTV<O:P>
</O:P>
</span></p>
<p class="MsoNormal"><span style="FONT-SIZE: 11pt; FONT-FAMILY: Arial; mso-bidi-font-size: 10.0pt">Here
is what you need:<O:P>
</O:P>
</span></p>
<p class="MsoNormal"><b style="mso-bidi-font-weight: normal"><span style="FONT-SIZE: 11pt; FONT-FAMILY: Arial; mso-bidi-font-size: 10.0pt">1.
Sound working under Linux.<O:P>
</O:P>
</span></b></p>
<p class="MsoNormal"><span style="FONT-SIZE: 11pt; FONT-FAMILY: Arial; mso-bidi-font-size: 10.0pt"><span style="mso-tab-count: 1">
</span>This can either be accomplished by running /usr/sbin/setup (under Red Hat
systems) or by manually loading the sound drivers with /sbin/insmod.<O:P>
</O:P>
</span></p>
<p class="MsoNormal"><span style="FONT-SIZE: 11pt; FONT-FAMILY: Arial; mso-bidi-font-size: 10.0pt"><span style="mso-tab-count: 1">
</span>I also would suggest that you take a look at <span style="COLOR: navy" class="MsoHyperlink"><a href="http://www.opensound.com/">http://www.opensound.com</a></span>
if your sound still doesn't work under Linux, and you have tried both previous
procedures.<O:P>
</O:P>
</span></p>
<p class="MsoNormal" style="MARGIN-LEFT: 14.15pt; TEXT-INDENT: -14.15pt; mso-list: l0 level1 lfo1"><b style="mso-bidi-font-weight: normal"><span style="FONT-SIZE: 11pt; FONT-FAMILY: Arial; mso-bidi-font-size: 10.0pt">2.Kernel
configured to support bttv driver </span></b><span style="FONT-SIZE: 11pt; FONT-FAMILY: Arial; mso-bidi-font-size: 10.0pt; mso-bidi-font-weight: bold">(<a href="http://www.strusel007.de/linux/bttv/">http://www.strusel007.de/linux/bttv/</a>)</span><b style="mso-bidi-font-weight: normal"><span style="FONT-SIZE: 11pt; FONT-FAMILY: Arial; mso-bidi-font-size: 10.0pt"><O:P>
</O:P>
</span></b></p>
<p class="MsoNormal"><span style="FONT-SIZE: 11pt; FONT-FAMILY: Arial; mso-bidi-font-size: 10.0pt"><span style="mso-tab-count: 1">
</span>With the original kernel 2.2.x that comes with Red Hat, your bttv drivers
should already be in place, compiled and ready to go. <O:P>
</O:P>
</span></p>
<p class="MsoNormal"><span style="FONT-SIZE: 11pt; FONT-FAMILY: Arial; mso-bidi-font-size: 10.0pt"><span style="mso-tab-count: 1">
</span>If you need to (re)compile 2.4.0, you need the following options
activated.:<O:P>
</O:P>
</span></p>
<p class="MsoNormal" style="MARGIN-LEFT: 42.45pt; TEXT-INDENT: -14.15pt; mso-list: l1 level3 lfo2"><span style="FONT-SIZE: 9pt; FONT-FAMILY: StarBats; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: Arial"></span><span style="font-size: 9pt; font-family: StarBats; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: Arial">
</span><span style="FONT-SIZE: 11pt; FONT-FAMILY: Arial; mso-bidi-font-size: 10.0pt">Under
Character Devices-> I2C support, turn on I2C support, and I2C bit-banging
interfaces</span></p>
<p class="MsoNormal" style="MARGIN-LEFT: 42.45pt; TEXT-INDENT: -14.15pt; mso-list: l1 level3 lfo2"><span style="FONT-SIZE: 9pt; FONT-FAMILY: StarBats; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: Arial"></span><span style="font-size: 9pt; font-family: StarBats; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: Arial">
</span><span style="FONT-SIZE: 11pt; FONT-FAMILY: Arial; mso-bidi-font-size: 10.0pt">Under
Multimedia Devices, turn on Video For Linux, and under Video For Linux, set
BT848 Video For Linux as a module.<O:P>
</O:P>
</span></p>
<p class="MsoNormal"><span style="FONT-SIZE: 11pt; FONT-FAMILY: Arial; mso-bidi-font-size: 10.0pt"> <span style="mso-tab-count: 1">
</span>Feel free to add anything else that you need, but for help, read the
kernel documentation.<O:P>
</O:P>
</span></p>
<p class="MsoNormal"><span style="FONT-SIZE: 11pt; FONT-FAMILY: Arial; mso-bidi-font-size: 10.0pt"> <span style="mso-tab-count: 1">
</span>After the kernel has been successfully compiled, and its modules, reboot
your machine, and run /sbin/insmod bttv. If no error pops up, you should be all
set.<O:P>
</O:P>
</span></p>
<p class="MsoNormal"><span style="FONT-SIZE: 11pt; FONT-FAMILY: Arial; mso-bidi-font-size: 10.0pt"><span style="mso-tab-count: 1">
</span>So, now we need an application to interface with the TV drivers.<span style="mso-tab-count: 1">
</span><O:P>
</O:P>
</span></p>
<p class="MsoNormal"><span style="FONT-SIZE: 11pt; FONT-FAMILY: Arial; mso-bidi-font-size: 10.0pt"> </span><b><span style="FONT-SIZE: 11pt; FONT-FAMILY: Arial; mso-bidi-font-size: 10.0pt">3.
xawtv<O:P>
</O:P>
</span></b></p>
<p class="MsoNormal"><span style="FONT-SIZE: 11pt; FONT-FAMILY: Arial; mso-bidi-font-size: 10.0pt"><span style="mso-tab-count: 1">
</span>Download this app at: <span style="COLOR: navy" class="MsoHyperlink"><a href="http://www.strusel007.de/linux/xawtv/index.html">http://www.strusel007.de/linux/xawtv/index.html</a></span><span style="mso-tab-count: 1"><br>
</span>Nothing
too exciting here, download it, untar it, then:<O:P>
</O:P>
</span></p>
<p class="MsoNormal" style="MARGIN-LEFT: 42.45pt; TEXT-INDENT: -14.15pt; mso-list: l3 level3 lfo4"><span style="FONT-SIZE: 9pt; FONT-FAMILY: StarBats; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: Arial"></span><span style="FONT-SIZE: 11pt; FONT-FAMILY: Arial; mso-bidi-font-size: 10.0pt">
./configure</span></p>
<p class="MsoNormal" style="MARGIN-LEFT: 42.45pt; TEXT-INDENT: -14.15pt; mso-list: l3 level3 lfo4"><span style="FONT-SIZE: 9pt; FONT-FAMILY: StarBats; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: Arial"></span><span style="FONT-SIZE: 11pt; FONT-FAMILY: Arial; mso-bidi-font-size: 10.0pt">
./make<O:P>
</O:P>
</span></p>
<p class="MsoNormal" style="MARGIN-LEFT: 42.45pt; TEXT-INDENT: -14.15pt; mso-list: l3 level3 lfo4"><span style="FONT-SIZE: 9pt; FONT-FAMILY: StarBats; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: Arial"></span><span style="FONT-SIZE: 11pt; FONT-FAMILY: Arial; mso-bidi-font-size: 10.0pt">
./make install<O:P>
</O:P>
</span></p>
<p class="MsoNormal"><span style="FONT-SIZE: 11pt; FONT-FAMILY: Arial; mso-bidi-font-size: 10.0pt"><span style="mso-tab-count: 1">
</span>Note: The only error I have seen this application give me, is that it
will not work if the there is something wrong with your: /etc/X11/app-defaults/
directory or path.<O:P>
</O:P>
</span></p>
<p class="MsoNormal"><span style="FONT-SIZE: 11pt; FONT-FAMILY: Arial; mso-bidi-font-size: 10.0pt"> </span><b><span style="FONT-SIZE: 11pt; FONT-FAMILY: Arial; mso-bidi-font-size: 10.0pt">3.1.
Running xawtv:<O:P>
</O:P>
</span></b></p>
<p class="MsoNormal"><span style="FONT-SIZE: 11pt; FONT-FAMILY: Arial; mso-bidi-font-size: 10.0pt"><span style="mso-tab-count: 1">
</span>To run xawtv, on your Xterminal just run xawtv, it will pop a screen with
good old fuzzy TV noise will show up (assuming that you have gotten all the
previous steps right, and your TV card is installed :-D).<O:P>
</O:P>
</span></p>
<p class="MsoNormal"><span style="FONT-SIZE: 11pt; FONT-FAMILY: Arial; mso-bidi-font-size: 10.0pt"><span style="mso-tab-count: 1">
</span>You can right click on the TV screen to get a menu where you can do all
sorts of things to the application. To know more about how to configure this
app, just read the documentation included with it (It is pretty good).<O:P>
</O:P>
</span></p>
<p class="MsoNormal"><span style="FONT-SIZE: 11pt; FONT-FAMILY: Arial; mso-bidi-font-size: 10.0pt"><span style="mso-tab-count: 1">
</span>With xawtv, you should be able to plug in your cable, regular antennas,
and watch TV on Linux, or even a VCR/DVD and watch your favorite movie.<O:P>
</O:P>
</span></p>
<p class="MsoNormal"><span style="FONT-SIZE: 11pt; FONT-FAMILY: Arial; mso-bidi-font-size: 10.0pt"> </span><b><span style="FONT-SIZE: 11pt; FONT-FAMILY: Arial; mso-bidi-font-size: 10.0pt">4.
Running Sega DreamCast on your Linux box.<O:P>
</O:P>
</span></b></p>
<p class="MsoNormal"><span style="FONT-SIZE: 11pt; FONT-FAMILY: Arial; mso-bidi-font-size: 10.0pt"><span style="mso-tab-count: 1">
</span>If you have gotten all the last 3 steps done right, you now, can bring in
your Sega DreamCast (or whatever other video game console you have), and plug it
in to the back of your TV card, play video games via xawtv.<O:P>
</O:P>
</span></p>
<p class="MsoNormal"><span style="FONT-SIZE: 11pt; FONT-FAMILY: Arial; mso-bidi-font-size: 10.0pt"> <span style="mso-tab-count: 1">
</span><b style="mso-bidi-font-weight: normal">My Settings:<O:P>
</O:P>
</b></span></p>
<p class="MsoNormal"><span style="FONT-SIZE: 11pt; FONT-FAMILY: Arial; mso-bidi-font-size: 10.0pt"><span style="mso-tab-count: 1">
</span>To get mine running I basically, plug the Video output of my Sega
DreamCast<span style="mso-spacerun: yes"> </span>into my Composite Plug on
the back of my TV card, and I went to Radio Shack and paid $2 for a adaptor that
allows to plug my Audio (L/R) output of my DreamCast directly into the Line-In
plug of my sound card. The reason I did it that way? It saved me $20, this way I
don't have to buy Sega's RF Adaptor. You are also welcome to just plug in a VCR
into your TV card, and your DreamCast into the VCR.<O:P>
</O:P>
</span></p>
<p class="MsoNormal"><span style="FONT-SIZE: 11pt; FONT-FAMILY: Arial; mso-bidi-font-size: 10.0pt"> </span><b><span style="FONT-SIZE: 11pt; FONT-FAMILY: Arial; mso-bidi-font-size: 10.0pt">5.
Creating Real Video on Linux<O:P>
</O:P>
</span></b></p>
<p class="MsoNormal"><span style="FONT-SIZE: 11pt; FONT-FAMILY: Arial; mso-bidi-font-size: 10.0pt"><span style="mso-tab-count: 1">
</span>Now, this was the most exciting part of them all for me, and probably the
one that took me the longest to get it going. First of all download the Real
Producer Basic from: <span style="COLOR: navy" class="MsoHyperlink"><a href="http://proforma.real.com/rn/tools/producer/index.html">http://proforma.real.com/rn/tools/producer/index.html</a></span>
(Note: Real Networks is always changing their products' URL, if this URL stops
working, just go to <span style="COLOR: navy" class="MsoHyperlink"><a href="http://www.real.com/">http://www.real.com</a></span>
and search for the Real Producer Basic).<O:P>
</O:P>
</span></p>
<p class="MsoNormal"><span style="FONT-SIZE: 11pt; FONT-FAMILY: Arial; mso-bidi-font-size: 10.0pt"> <span style="mso-tab-count: 1">
</span>After going through the installation process, go to the
directory where you just installed real producer (in most cases: <b><i>/usr/local/realproducer-8.5</i></b>),
you can run something like this:<O:P>
</O:P>
</span></p>
<p class="MsoNormal"><span style="FONT-SIZE: 11pt; FONT-FAMILY: Arial; mso-bidi-font-size: 10.0pt"> <span style="mso-tab-count: 1">
</span><b><i>[root]# realproducer -o /tmp/testing.rm -t 7 -a 3 -v 0 -f 0 -b
"Testing Video" -h "Anderson Silva" -c "Personal"
-vc RV300 -l 2:1,8:1<O:P>
</O:P>
</i></b></span></p>
<p class="MsoNormal"><span style="FONT-SIZE: 11pt; FONT-FAMILY: Arial; mso-bidi-font-size: 10.0pt"> <span style="mso-tab-count: 1">
</span>On the example above, I am capturing video straight from my TV card, and
encoding it to Real Player 8 and saving it under /tmp directory as testing.rm.<O:P>
</O:P>
</span></p>
<p class="MsoNormal"><span style="FONT-SIZE: 11pt; FONT-FAMILY: Arial; mso-bidi-font-size: 10.0pt"><span style="mso-tab-count: 1">
</span>Command Line Options:<O:P>
</O:P>
</span></p>
<p class="MsoNormal"><span style="FONT-SIZE: 11pt; FONT-FAMILY: Arial; mso-bidi-font-size: 10.0pt"><span style="mso-tab-count: 1">
</span>-t <b>Target Audience</b> (e.g. 7 is for Cable bandwidth)<span style="mso-tab-count: 1"><br>
</span>-a <b>Audio
Format</b> (e.g. 3 is for Stereo Sound)<span style="mso-tab-count: 1"><br>
</span>-v <b>Video
Quality</b> (e.g. 0 is for Normal Video)<span style="mso-tab-count: 1"><br>
</span>-f <b>File
Type</b> (e.g. 0 is for Single Rate Video)<span style="mso-tab-count: 1"><br>
</span>-b <b>Video
Title</b><span style="mso-tab-count: 1"><br>
</span>-h <b>Author
Information</b><span style="mso-tab-count: 1"><br>
</span>-c <b>Copyright
Information</b><span style="mso-tab-count: 1"><br>
</span>-vc <b>Video
Encoding</b> (e.g. VC300 for Real Player 8, VC2000 for Real Player 7)<span style="mso-tab-count: 1"><br>
</span>-l <b>audio,
and video devices</b> (e.g. 2:1 grab audio from Line-In output, 8:1 grab video
from Composite output on TV Card). <O:P>
</O:P>
</span></p>
<p class="MsoNormal"><span style="FONT-SIZE: 11pt; FONT-FAMILY: Arial; mso-bidi-font-size: 10.0pt"><span style="mso-tab-count: 1">
</span>This is just a fraction of the command line options for the <b><i>realproducer</i></b>.
You can read more about them running <b>./realproducer help</b> or by reading
the documentation that comes with it (usually stored at <b><i>/usr/local/realproducer-8.5/help/producer.htm</i></b>)</span></p>
<p class="MsoNormal"><img border="0" src="misc/silva/screen.jpg" width="500" height="400"><span style="FONT-SIZE: 11pt; FONT-FAMILY: Arial; mso-bidi-font-size: 10.0pt"><br>
<O:P>
</O:P>
</span></p>
<p class="MsoNormal"><span style="FONT-SIZE: 11pt; FONT-FAMILY: Arial; mso-bidi-font-size: 10.0pt"> </span><b><span style="FONT-SIZE: 11pt; FONT-FAMILY: Arial; mso-bidi-font-size: 10.0pt">Other
TV Cards:<O:P>
</O:P>
</span></b></p>
<p class="MsoNormal" style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan; mso-hyphenate: auto"><span style="FONT-SIZE: 11pt; FONT-FAMILY: Arial; mso-bidi-font-size: 10.0pt">In
theory, the following cards are also suppose to work: </span><a href="http://www.stb.com/products/multimedia/tvpci/tvpci.html">STB
TV PCI</a>, Diamond
DTV2000 (*), <a href="http://www.videologic.com/Productinfo/capt_pci.htm">Videologic
Captivator PCI</a>, AVerMedia
TV-Phone (*), <a href="http://www.viewcast.com/products/osprey/osprey100.html">Osprey-100</a>,
<a href="http://www.ids-imaging.de/">IDS Imaging FALCON</a>.<O:P>
</O:P>
</p>
<P>
<SMALL>
<HR NOSHADE ALIGN="left" WIDTH="10%">
* Links removed because they went dead. Current URLs are unknown. -Ed.
<SMALL>
</P>
<!-- *** BEGIN copyright *** -->
<P> <hr> <!-- P -->
<H5 ALIGN=center>
Copyright © 2001, Anderson Silva.<BR>
Copying license <A HREF="../copying.html">http://www.Linuxgazette.com/copying.html</A><BR>
Published in Issue 62 of <i>Linux Gazette</i>, February 2001</H5>
<!-- *** END copyright *** -->
<H4 ALIGN="center">
"Linux Gazette...<I>making Linux just a little more fun!</I>"
</H4>
<P> <HR> <P>
<!--===================================================================-->
<center>
<H1><font color="maroon">Making Smalltalk: The Making of aPerson</font></H1>
<H4>By <a href="mailto:jagwar@magma.ca">Jason Steffler</a></H4>
</center>
<P> <HR> <P>
<!-- END header -->
<table COLS=2 WIDTH="100%" NOSAVE >
<tr NOSAVE>
<td NOSAVE>
<center>
<h1>
<img SRC="misc/steffler/makingSmalltalk.png" ></h1></center>
<center>
<h3>
The Making of aPerson</h3></center>
<p>
<br>
<br>
<center>
<p>By <a href="mailto:jagwar@magma.ca">Jason Steffler</a></center>
</td>
<td WIDTH="200" NOSAVE>
<center><img SRC="misc/steffler/penguinInBalloon.gif" height=230 width=200></center>
</td>
</tr>
</table>
<div align=right>
<hr WIDTH="100%"><b>Article #4 - Feb 2000</b></div>
<h2>
<a NAME="abstract"></a>Abstract</h2>
For those who haven't read the previous articles, be
sure to read <font size=+1><a href="http://www.linuxgazette.com/issue60/steffler.html#statementOfPurpose">the
statement of purpose</a></font> first. This month, we're going to
discuss the making of <b>aPerson
</b>- how to use browsers to do so and
some OO considerations. For those looking to read the whole series
locally or information about upcoming articles, you can
<font size=+1><a href="http://www.magma.ca/~jagwar/makingSmalltalkForwardingPage.html">check
the MST page</a></font>. For those looking for further information
on learning Squeak, here are <a href="http://minnow.cc.gatech.edu/squeak/377">some
good resources</a>.
<br> Something different this month is that I'm dropping
the local links usage (was [LL]), as they weren't being used as much as
I'd anticipated.
<h2>
<a NAME="quoteOfTheDay"></a>Quote of the day</h2>
"The main problem for the C++ community today is to use Standard C++ in
the way it was intended rather than as a glorified C or a poor man's Smalltalk."
<br> - Bjarne Stroustrup (inventor of C++), "Getting From The
Past To The Future" , p. 23 C++ Report, SIGS Nov/Dec 1999 Vol1 No.10
<h2>
The Making of aPerson</h2>
Before we get started this month, the code-along folks
will want to file in the next version of the <b><a href="MakingSmalltalk-Article4.st">ScopedBrowser</a></b>
that was introduced last month. If you saved your image with the
browser in it - don't worry about conflicts as this new filein will replace<sup><a href="#footnotes">1</a></sup>
the previous <b>ScopedBrowser </b>(<a href="http://www.linuxgazette.com/issue60/steffler.html#puttingItAllTogether">see
article 2 on how to file in</a>) This time around I've added a few more
classes to the scope; the classes that are used for making a <b>Person</b>
class, and also a few more classes for good measure:
<ul>
<li>
<b>Boolean</b> (the super class of True and False)</li>
<li>
<b>False</b></li>
<li>
<b>Object</b> - the base object of Smalltalk that all other objects are
subclassed from<sup><a href="#footnotes">2</a></sup></li>
<li>
<b>True</b></li>
<li>
<b>Workspace</b> - the class we will be using to open textual windows</li>
<li>
<b>ScopedBrowser</b> - in case you're curious about the browser that we're
using. If you want to fiddle around with this guy, be careful to
save your image first, as it's not too hard to mess something up that affects
the browser that you're using to mess around in.</li>
</ul>
On the above note, you can fiddle with anything you
wish in Smalltalk, including the <a href="#articleGlossary">base classes</a>.
Though you can (and sometimes need to) do base class changes, it's generally
not advised as it's very easy to mess up the image or to break forwards
compatibility. If time/space allows in a future article we'll talk
more about base class changes. For now just be aware to save your
image before doing base class changes, and if you decide to keep a base
class change, keep a backup of your image before the change.
<br> Now getting to coding the <b>Person</b> class, if
you filed in the
<b>Person</b> code from article 2, then you'll either
want to remove that class from your system, or code this example as <b>Person2</b>,
or <b>JrsPerson
</b>(prefix with your initials), or some such thing to
avoid <a href="#articleGlossary">namespace collisions</a>.
<br> I'm going to remove the <b>Person</b> class and
start fresh, if you decide to to do this route, then open the <b>ScopedBrowser</b>
by doing this code:
<p> <b>ScopedBrowser openBrowserForArticle4</b>
<p> You'll notice that there are seven categories available,
including <b>MakingSmalltalk-Article2</b>. If the Person class exists,
it should be in this category. <b>Left-click</b> on the <b>Person</b>
class, then <b>middle-click>Remove</b>. You'll get a confirmation
dialog, click <b>yes</b> in this. You'll see now that the category
<b>MakingSmalltalk-Article2</b>
is empty.
<br> Now, to first declare our <b>Person</b> class, in
the <b>ScopedBrowser</b>, left click on the <b>MakingSmalltalk-Article4</b>
category, you'll see the code pane displays a nice class template for you.
It's pretty straightforward:
<blockquote><b>Object subclass: #NameOfClass</b>
<br><b>instanceVariableNames: 'instVarName1 instVarName2'</b>
<br><b>classVariableNames: 'ClassVarName1 ClassVarName2'</b>
<br><b>poolDictionaries: ''</b>
<br><b>category: 'MakingSmalltalk-Article4'</b></blockquote>
Don't worry about what a pool dictionary or class variable
is, just edit this template such that it looks like:
<br><i>[ex1a]</i>
<blockquote><b>Object subclass: #Person</b>
<br><b>instanceVariableNames: ''</b>
<br><b>classVariableNames: ''</b>
<br><b>poolDictionaries: ''</b>
<br><b>category: 'MakingSmalltalk-Article4'</b></blockquote>
<b> </b>Then <b>middle-click>accept.</b> You'll
notice that the <b>Person</b> class has been added to the article 4 category.
Now lets add a method, the first method we discussed in article 2 was <b>sing.Right-click>new
category...>new...</b> in the method categories pane, and type in: <b>Singing</b>
as the method category name, then click on the <b>Accept</b> button.
You'll notice that the code pane gives you a nice method template:
<blockquote><b>message selector and argument names</b>
<br><b> "comment stating purpose of message"</b>
<p><b> | temporary variable names |</b>
<br><b> statements</b></blockquote>
Copy over this method template with our <b>sing</b>
method, then <b>right-click>accept</b>.
<br><i>[ex1b]</i>
<blockquote><b>sing</b>
<br><b> (Workspace new contents: 'Do be do be doooooo.')
openLabel: 'A bad impression of Sinatra'.</b></blockquote>
<b> </b>You'll notice that the <b>sing</b> method appears
in the method category <b>Singing</b>. You can now go to a workspace,
and do: <b>Person new sing</b>, and the bad impression will appear.
For the read-along folks, the browser looks like:
<br><img SRC="misc/steffler/ScopedBrowser1.png" height=283 width=469>
<p> Now the next method we discussed was <b>sing:, </b>and
it could take a parameter: <b>'MaryHadALittleLamb'</b>. You can see the
obvious difficulty with our first sing method - the song and label are
hard-coded along with the activity that we're doing. It'd make more
sense to have one method that knows the activity we're doing (singing),
and be able to have it accept parameters from various methods to simplify/reuse
our code. That way, if we need to change how the singing is done
in the future, there are less spots to update. Lets make a new method
(remember, we're denoting private methods with a 'my' prefix) that isolates
how we're doing the singing from what is being sang:
<br><i>[ex1c]</i>
<blockquote><b>mySing: someLyrics withTitle: aTitle</b>
<br><b> (Workspace new contents: someLyrics) openLabel:
aTitle</b></blockquote>
Then, lets <a href="#articleGlossary">refactor</a> our
first <b>sing</b> method to reuse this private method, just copy right
over the sing method or edit the text directly and accept it:
<br><i>[ex1d]</i>
<blockquote><b>sing</b>
<br><b> self mySing: 'Do be do be doooooo.' withTitle:
'A bad impression of Sinatra'</b></blockquote>
Note that we still have the song lyrics and title hard
coded in the <b>sing</b> public method, so they're not directly accessible
by other objects or methods of <b>Person, </b>but it is better than it
originally was. We'll show a better way to organize your code when
we do our next song, and illustrate how factoring out the song lyrics can
be useful. With this in mind, lets create a lyrics method for our
next song:
<br><i>[ex1e]</i>
<blockquote><b>maryHadALittleLambLyrics</b>
<br><b> ^'Mary had a little lamb, little lamb, little
lamb, Mary had a little lamb whose fleece was white as snow.'</b></blockquote>
Now we can add our <b>sing:</b> method that reuses our
private <b>mySing:withTitle:</b> method. It has some very simple
logic that defaults to our bad impression if we don't understand what is
being requested to sing. Note: when we ask <b>aSong </b>if
it's equal to <b>'MaryHadALittleLamb', </b>a boolean object is returned
(true or false), and then we ask the boolean object if it's true or if
it's false.
<br><i>[ex1f]</i>
<blockquote><b>sing: aSong</b>
<br><b> aSong = 'MaryHadALittleLamb'</b>
<br><b> ifTrue: [self mySing:
self maryHadALittleLambLyrics withTitle: 'Mary had a little lamb']</b>
<br><b> ifFalse: [self sing].</b></blockquote>
Remember, as soon as you add a method, you can
execute it if you like, since no compile-n-link-n-run cycle is needed.
Finally, lets add our last public singing method, which is similar to the
above method:
<br><i>[ex1g]</i>
<blockquote><b>sing: aSong andDoIt: anAdjective</b>
<br><b> aSong = 'MaryHadALittleLamb'</b>
<br><b> ifTrue: [self mySing:
self maryHadALittleLambLyrics inManner: anAdjective withTitle: 'Mary had
a little lamb']</b>
<br><b> ifFalse: [self sing].</b></blockquote>
Which assumes another private method, which builds
on our first private method. You can see how having the lyrics factored
out into a separate method is useful, as we can access them as needed to
sing loudly (uppercase) or quietly (lowercase).
<br><i>[ex1h]</i>
<blockquote><b>mySing: someLyrics inManner: anAdjective withTitle: aTitle</b>
<br><b> "Using simple logic here for illustrative purposes - if the
adjective is not 'loudly' or 'quietly' just ignore how we're being asked
to sing"</b>
<br><b> | tmpLyrics |</b>
<br><b> anAdjective = 'loudly'</b>
<br><b> ifTrue: [tmpLyrics :=
someLyrics asUppercase].</b>
<br><b> anAdjective = 'quietly'</b>
<br><b> ifTrue: [tmpLyrics :=
someLyrics asLowercase].</b>
<br><b> self mySing: tmpLyrics withTitle: aTitle</b></blockquote>
I'm leaving out the <b>whatIsMyHeight</b> method,
as it's just more of the same of what we've covered. Note the simple
conditional logic that we've used here. This is something that can
be avoided by programming methods like double dispatching, but that's beyond
the scope of this article. Avoiding conditional logic is often cited
as one of the benefits of OO programming. To illustrate, image that
we have 30 different songs that we needed to sing, this would lead us to
have 30 different <b>ifTrue</b> statements, or a CASE statement (most Smalltalks
don't even have a CASE statement) with 30 cases. Then if we needed
to add 5 more songs, we'd need to track down all the places where we used
the 30 cases and add our additional 5; chances are there's more than one
place where there are these 30 cases, and you'll eventually have problems
keeping all the cases in sync. For simplicity though, we're using
conditional logic for illustrative purposes.
<br>
<h2>
<a NAME="lookingForward"></a>Looking forward</h2>
The next article will cover OO thinking now that we've
covered many of the basics, it'll cover some of the advantages and differences
of OO programming from other types of programming.
<h2>
<a NAME="sweetSqueak"></a>A Sweet Squeak - Luke, use the debugger</h2>
This section won't explore/explain code or example,
but merely present a neat thing to try out. This month, we're going
to get into debugging, as this is something I consider a sweet characteristic
of Smalltalk. Part and parcel of not having a compile-link-run
cycle in programming, is that you can debug and correct your programs in
realtime from the debugger.
<br> To illustrate this, we're going to insert a <b>halt</b>
message somewhere in <b>aPerson's </b>code. Edit the <b>sing</b>
method, and as the first line put <b>self halt. </b>So your method
should look like:
<br><i>[ex2]</i>
<p><b> self halt.</b>
<br><b> self mySing: 'Do be do be doooooo.' withTitle:
'A bad impression of Sinatra'.</b>
<p><b> </b>Then ask your person to sing by doing: <b>Person
new sing</b>, you'll see the debugger:
<br><img SRC="misc/steffler/debugger1.png" >
<p> Click on the Debug button, and click on the 2nd method on the
method stack. For the read-along folks, you'll see:
<br><img SRC="misc/steffler/debugger2.png" >
<p><b> </b>Now, you can delete the <b>self halt.</b>, then
<b>middle-click>accept</b>
- at this point your code is updated such that any requests to the <b>sing</b>
method get the new version. Now you can continue execution by moving your
pointer over the top pane, and
<b>middle-click>proceed</b>
<br> This can be a very powerful way of programming/debugging
your code. Remember, <u>the debugger is your friend</u> - many new
Smalltalkers don't use the debugger to it's full advantage because the
compile-link-run cycle is so ingrained. Following this model, you
use the debugger to step in and over code until you see the problem, then
you close the debugger and go back to your browser to make the code update,
then try running the code again. Why not just make the code update
while you're in the debugger and continue on your merry way!? Another
very powerful technique can be to insert a breakpoint in a troublesome
part of the code, then manually change the live objects to simulate various
conditions to help you debug (scribbling temp values for different scenarios
on scaps of paper can become a thing of the past). Sometimes it is
necessary to begin execution from the start because the context will be
so different, but more times than not you can just fix things right in
your debugging session.
<h2>
<a NAME="questionsAndAnswers"></a><b>Questions and Answers</b></h2>
No questions this month, I suppose everything was crystal clear last month
;-)
<h2>
<a NAME="articleGlossary"></a><b>Article Glossary</b></h2>
This is a glossary of terms that I've used for the first time in this series,
or a term that I want to refine. If you don't see a term defined
here, try the <a href="http://www.magma.ca/~jagwar/makingSmalltalkForwardingPage.html">ongoing
glossary</a>.
<p><b>Base Classes</b>
<br> The base Smalltalk classes
that you start a clean image with. For example, Object, Boolean,
Magnitude, Stream, etc. Though you can (and sometimes need to) do
base class changes, it's generally not advised as it's very easy to mess
up the image or to break forwards compatibility.
<p><b>Namespace</b>
<br> A namespace is much what
it sounds like - a finite space that names can be defined and identified
in. For example, if you're writing a program and you wanted to define
a class called Object, you'd be out of luck as the class Object already
exists. If you were able to define a second class called Object, how would
the computer know the difference between the two? In most Smalltalks
there is a single namespace (VisualWorks Smalltalk is the notable exception).
<p><b>Namespace collision</b>
<br> When two companies/groups/people
try to name thier classes with the same name, or define methods off of
a class with the same name. To help avoid namespace collision not
only within your own projects, but from other companies like third party
vendors, it's a common practice to prefix your classes with some acronym,
for example, if you work for MegaCorp you might prefix all your classes
with 'Mc'
<p><b>Refactor</b>
<br> To change/update/reorganize
your code to make it (hopefully ;-) cleaner, faster, more robust.
Refactoring typically moves around responsibilities and/or makes larger
methods into smaller methods.
<br>
<h2>
<a NAME="footnotes"></a><b>Footnotes</b></h2>
[1] More accurately, it will overwrite, but not remove any existing structure/behaviour.
For example, if you have a method on a class that doesn't exist in the
corresponding class for the filein, then the method will still be there
after the filein. Change sets are a little different, and we'll discuss
them in a future article if there's enough interest.
<p>[2] Well, this isn't technically true. As in many other parts
of this series I'm making a simplifying statement/assumption. To
be more clear, for the purposes of beginners it simplifies things to consider
Object the root object of Smalltalk.
<br>To be more precise, Smalltalk has an elegant method for bootstrapping
its class hierarchy that's rooted in meta classes and circular definition.
If you don't understand the next sentence, don't worry because typically
it's nothing you need worry about for regular Smalltalking. Briefly,
in Squeak there's actually a class called ProtoObject that is the super
class of Object, and ProtoObject inherits from nil - the sole instance
of UndefinedObject, which inherits from Object. Other Smalltalk flavours
have something similar to this.
<!-- *** BEGIN copyright *** -->
<P> <hr> <!-- P -->
<H5 ALIGN=center>
Copyright © 2001, Jason Steffler.<BR>
Copying license <A HREF="../copying.html">http://www.linuxgazette.com/copying.html</A><BR>
Published in Issue 62 of <i>Linux Gazette</i>, February 2001</H5>
<!-- *** END copyright *** -->
<H4 ALIGN="center">
"Linux Gazette...<I>making Linux just a little more fun!</I>"
</H4>
<P> <hr> <P>
<H1><font color="maroon">The Back Page</font></H1>
<ul>
<li><a HREF="#authors">About This Month's Authors</a>
<li><a HREF="#notlinux">Not Linux</a>
</ul>
<a name="authors"></a>
<P> <HR> <P>
<!--======================================================================-->
<center><H3><font color="maroon">About This Month's Authors</font></H3></center>
<P> <HR> <P>
<!--======================================================================-->
<!-- BEGIN bio -->
<P>
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Eric Kasten</H4>
I'm a software developer by day and an artist, web developer,
big dog, gardener and wine maker by night. This all leaves very little
time for sleep, but always enough time for a nice glass of Michigan
Pinot Gris. I have a BS double major in Computer Science and
Mathematics and an MS in Computer Science. I've been using and
modifying Linux since the 0.9x days. I can be reached via email at
<A HREF="mailto:kasten@sunpuppy.com">kasten@sunpuppy.com</A> or through
my website at <A HREF="http://www.sunpuppy.com">http://www.sunpuppy.com</A>.
<P>
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Jon Meek</H4>
Jon Meek is Senior Consultant in the Border Network Services Group at
American Home Products Corporation. He received BS and MS Degrees in Physics,
and a PhD in Chemical Physics all from Indiana University and has worked in
Experimental Nuclear and Chemical Physics, Analytical Chemistry, and
Information Technology. His recent research interests include applying Web
technology to scientific and network management applications, systems and
network management, data integrity, and data acquisition. He can be reached at
<a href="mailto:meekj@pt.ahp.com">meekj@pt.ahp.com</a>
or
<a href="mailto:meekj@ieee.org">meekj@ieee.org</a>.
<P>
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Ben Okopnik</H4>
A cyberjack-of-all-trades, Ben wanders the world in his 38' sailboat, building
networks and hacking on hardware and software whenever he runs out of cruising
money. He's been playing and working with computers since the Elder Days
(anybody remember the Elf II?), and isn't about to stop any time soon.
<P>
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Charles Shapiro</H4>
Charles Shapiro is a programmer living in the Atlanta area. You can contact him
about this project at
<A HREF="mailto:radiolinuxdood@mad.scientist.com">radiolinuxdood@mad.scientist.com</A>.
<P>
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Anderson Silva</H4>
Anderson Silva lives in Hampden, Me. He has a BS in Computer Science from
Liberty University, VA. Currently employed by Whetstone Logic, Inc. as their
Senior Programmer. He has been using Linux for 5 years.
<P>
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Jason Steffler</H4>
<a href = "http://www.magma.ca/~jagwar">Jason</a> is a Software Architect for
McHugh Software International.
His computer related interests include: OO programming &
design, Smalltalking, the peopleware aspects of software, and noodl'n around
with Linux.
<!-- END bio -->
<a name="notlinux"></a>
<P> <hr> <P>
<!--====================================================================-->
<center><H3><font color="maroon">Not Linux</font></H3></center>
<P> <HR> <P>
<!--======================================================================-->
<P>
<!-- *** BEGIN Not Linux *** -->
<P> Michael Orr<br>
Editor, <A HREF="http://www.linuxgazette.com/"><i>Linux Gazette</i></A>, <A
HREF="mailto:gazette@ssc.com">gazette@ssc.com</a>
<BR CLEAR="all">
<!-- *** END Not Linux *** -->
<!-- *** BEGIN copyright *** -->
<P> <hr> <P>
<H5 ALIGN=center>
Copyright © 2000, the Editors of <I>Linux Gazette</I>.<BR>
Copying license <A HREF="../copying.html">http://www.linuxgazette.com/copying.html</A><BR>
Published in Issue 62 of <i>Linux Gazette</i>, February 2001</H5>
<!-- *** END copyright *** -->
</BODY></HTML>
|