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
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML><HEAD><TITLE> Linux Gazette Table of Contents LG #95</TITLE></HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#0000AF"
ALINK="#FF0000" >
<center>
<!-- A HREF="http://www.linuxgazette.com/">
<H1><IMG SRC="../gx/newlogo.jpg" ALT="LINUX GAZETTE" border="0"></H1></A> -->
<A HREF="http://www.linuxgazette.com/">
<H1><IMG ALT="LINUX GAZETTE" SRC="../gx/lglogo.png"
WIDTH="600" HEIGHT="124" border="0"></H1></A>
<H2>October 2003, Issue 95
Published by <I>Linux Journal</I></H2>
<A HREF="../index.html">Front Page</A> |
<A HREF="../index.html">Back Issues</A> |
<A HREF="../lg_faq.html">FAQ</A> |
<A HREF="../mirrors.html">Mirrors</A> <!-- | --><BR>
<A HREF="../tag-kb.html">The Answer Gang knowledge base</A> (your Linux questions here!) <!-- | --><BR>
<A HREF="http://www.linuxgazette.com/search.html">Search (www.linuxgazette.com)</A>
<!-- *** BEGIN mirror site search link *** -->
<!-- <A HREF="http://www.linuxgazette.com/search.html">(SITE.COM
mirror)</A> -->
<!-- *** END mirror site search link *** -->
</CENTER>
<HR NOSHADE>
<!--=================================================================-->
<!-- H1><font color="#BB0000">Table of Contents:</font></H1 -->
<!-- *** BEGIN toc *** -->
<UL>
<LI> <A HREF="lg_mail.html">The MailBag</A>
<LI> <A HREF="lg_tips.html">More 2-Cent Tips</A>
<LI> <A HREF="lg_answer.html">The Answer Gang</A>
<LI> <A HREF="lg_bytes.html">News Bytes</A>, <EM>by Michael Conry</EM>
<LI> <A HREF="ecol.html">Ecol</A>, <EM>by Javier Malonda</EM>
<LI> <A HREF="hughes.html">Quick and Dirty Data Extraction in AWK</A>, <EM>by Phil Hughes</EM>
<LI> <A HREF="millson.html">Integrating Tomcat and Apache on RedHat 9</A>, <EM>by Mike Millson</EM>
<LI> <A HREF="pramode.html">Linux Through an Oscilloscope</A>, <EM>by Pramode C.E</EM>
<LI> <A HREF="rondina.html">Software Engineering</A>, <EM>by Gustavo Rondina</EM>
<LI> <A HREF="vanheusden.html">An introduction to MultiTail</A>, <EM>by Folkert van Heusden</EM>
<LI> <A HREF="boue.html">Mexico is conquered by FLOSS</A>, <EM>by Felipe Barousse Boue</EM>
</UL>
<!-- *** END toc *** -->
<HR NOSHADE>
<!--=================================================================-->
<H3 ALIGN="center"><EM>Linux Gazette</EM> Staff and The Answer Gang</H3>
<BLOCKQUOTE>
<STRONG>TAG Editor:</STRONG> Heather Stern<BR>
<STRONG>Senior Contributing Editor:</STRONG> Jim Dennis<BR>
<STRONG>Contributing Editors:</STRONG>
Ben Okopnik, Dan Wilder, Don Marti
</BLOCKQUOTE>
<HR NOSHADE>
<!--=================================================================-->
<A HREF="TWDT.txt.gz">TWDT 1 (gzipped text file)</A><BR>
<A HREF="TWDT.html">TWDT 2 (HTML file)</A><BR>
are files containing the entire issue: one in text format, one in HTML.
They are provided
strictly as a way to save the contents as one file for later printing in
the format of your choice;
there is no guarantee of working links in the HTML version.
<HR NOSHADE>
<!--=================================================================-->
<center>
<I>Linux Gazette</I><img alt="[tm]" src="../gx/tm.gif">,
<A HREF="http://www.linuxgazette.com/">http://www.linuxgazette.com/</A><BR>
This page maintained by the Webmaster of <I>Linux Gazette</I>,
<A HREF="mailto: webmaster@linuxgazette.com"> webmaster@linuxgazette.com</A>
<P>
<H5>Copyright © 1996-2003 Specialized Systems Consultants, Inc.</H5>
</center>
<HR NOSHADE>
<!--=================================================================-->
<TABLE BORDER><TR><TD WIDTH="200">
<A HREF="http://www.linuxgazette.com/">
<IMG ALT="LINUX GAZETTE" SRC="../gx/2002/lglogo_200x41.png"
WIDTH="200" HEIGHT="41" border="0"></A>
<BR CLEAR="all">
<SMALL>...<I>making Linux just a little more fun!</I></SMALL>
</TD><TD WIDTH="380">
<CENTER>
<BIG><BIG><STRONG><FONT COLOR="maroon">The MailBag</FONT></STRONG></BIG></BIG>
</CENTER>
</TD></TR>
</TABLE>
<P>
<!-- END header -->
<HR>
<center>
<BIG><STRONG><FONT COLOR="maroon">HELP WANTED : Article Ideas</FONT></STRONG></BIG>
<BR>
<STRONG>Submit comments about articles, or articles themselves (after reading <a href="../faq/author.html">our guidelines</a>) to <A HREF="mailto:articlesubmission@linuxgazette.com">The Editors of <i>Linux Gazette</I></A>, and technical answers and tips about Linux to <A HREF="mailto:linux-questions-only@ssc.com">The Answer Gang</A>.
</STRONG>
</center><HR>
<UL>
<!-- index_text begins -->
<li><A HREF="#wanted.1"
><strong>dual Booting xp @ suse8.2</strong></a>
<li><A HREF="#wanted.2"
><strong>webdialer using http</strong></a>
<li><A HREF="#wanted.3"
><strong>booting linux from flash memory!</strong></a>
<li><A HREF="#wanted.4"
><strong>minicom related - help required</strong></a>
<li><A HREF="#wanted.5"
><strong>Re:help with grub</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">dual Booting xp @ suse8.2</FONT></H3>
Sat, 30 Aug 2003 15:44:39 -0700
<BR>Patrick B (<a href="mailto:linux-questions-only@ssc.com?cc=ironman616@hotmail.com&subject=%20Re%3A%20%5BLG%2095%5D%20help%20wanted%20%231">ironman616 from hotmail.com</a>)
<P>
I have two separate hard drives on my computer hda, hdb. Xp is on hda an
suse 8.2 is on hdb.Im booting suse with a floopy with lilo installed on
it.Do you know of a lilo configuration that will boot my system.I tried the
default installation that wrote the boot loader to the mbr .All I got when I
tried booting was a blinking curser in the upper left corner of the
screen.If you know of a lilo configuration that works I would be most
grateful.Any help is most appretiated.
</P>
<P>
ironman616
</P>
<P>
<!-- 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">webdialer using http</FONT></H3>
Sat, 9 Aug 2003 11:39:22 +0100
<BR>Aengus Walton (<a href="mailto:linux-questions-only@ssc.com?cc=smiley0@myrealbox.com&subject=%20Re%3A%20%5BLG%2095%5D%20help%20wanted%20%232">smiley0 from myrealbox.com</a>)
<P>
I have a server and workstation and when I use the workstation it's
masqueraded behind the server, but when the rest of the family needs to get
on the net i have to get the server to logoff the net and they logon
directly from the windows workstation. So what I need is a http interface
to wvdial (if possible) that's compatible with IE..
</P>
<P>
I've already spent time installing webdialer (a project which does just
this) but unfortunatly it doesn't work too well with IE as its client, and
changing the client isn't an option.
</P>
<P>
Any suggestions would be greatly appreciated
</P>
<P>
cheers
</P>
<P>
Aengus
</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">booting linux from flash memory!</FONT></H3>
Wed, 30 Jul 2003 02:27:18 +0000
<BR>Devi Priya (<a href="mailto:linux-questions-only@ssc.com?cc=ijpriya@hotmail.com&subject=%20Re%3A%20%5BLG%2095%5D%20help%20wanted%20%233">ijpriya from hotmail.com</a>)
<P>
Hello,
</P>
<P>
I am new to this list. I am involved in embedded project.
I have a system with linux as its operating system. My system has external
peripherals like SDRAM, Flash memory etc.
</P>
<P>
I have to boot my linux OS from Flash memory. I have a
BIOS programming which does the minimal hardware initialization. I would
like to know how to boot my OS from Flash memory?
</P>
<P>
Thanks in advance for any help!
</P>
<blockquote><font color="#000066">Well, this fellow's just getting started and a google search probably
helped him more than we could. But,
if someone has their own tale of burning their own flash-based startup,
and what they were really using it for, I think it'd make a great article.
-- Heather</font></blockquote>
<!-- 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">minicom related - help required</FONT></H3>
Tue, 5 Aug 2003 06:36:04 -0400 (EDT)
<BR>Sriram N.S. (<a href="mailto:linux-questions-only@ssc.com?cc=sriram_ns@hotvoice.com&subject=%20Re%3A%20%5BLG%2095%5D%20help%20wanted%20%234">sriram_ns from hotvoice.com</a>)
<P>
hi,
</P>
<P>
(1) I have been using minicom v2.00.0 on red-hat 7.3 to test
my serial-port driver. while doing file-transfers (with both
flow-controls disabled) i observe that minicom attempts to enable
software flow control automatically. this happens even when
hardware flow control has been enabled. i get to see the corresponding
ioctl being issued to the driver. how can i overcome this particular
problem??. i have been attempting the transfer operation at
baud-rates 230K, 115K using ZModem proto. Is there an undocumented
limitation with minicom with respect to speed??. This particular
problem also affects transfer of binary files as minicom mistakes
the content of the received file as control info.
</P>
<P>
(2) what are the possible causes for "Garbage Count exceeded"<TT>/</TT>"Bad
CRC" messages on minicom??
</P>
<P>
Your help in this regard will be highly appreciated
</P>
<P>
Rgds,
Sriram.
</P>
<blockquote><font color="#000066">If you have more juicy things to say than "there may be a new version out"
- any readers are welcome to chime in with real experiences on this one...
-- Heather</font></blockquote>
<!-- sig -->
<!-- end 4 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<P> <A NAME="wanted.5"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/envelope.gif">
<FONT COLOR="navy">Re:help with grub</FONT></H3>
Fri, 8 Aug 2003 12:33:39 -0500
<BR>cnuccio (<a href="mailto:linux-questions-only@ssc.com?cc=cnuccio@ltpro.com&subject=%20Re%3A%20%5BLG%2095%5D%20help%20wanted%20%235">cnuccio from ltpro.com</a>)
<P>
hi
</P>
<P>
i saw your linux tips about grub and am in a bit of a pickle and i
thought you could help.
</P>
<P>
i got a new dell with xp preisntalled. i asked for fat32 but they gave
me NTFS. anyway, so i instralled partition magic, made a 5 gig partiion
and setup boot magic (prepare for new OS).
</P>
<P>
i activated the partition and then booted to the redhat 9 (shrike) CD
and installed. reboot, and all i see is grub, with only linux as a
choice.
</P>
<P>
dell was no help, so i tried for a few days to get some info on
editing grub.conf and getting xp back booting. i tweaked and trial and
errored and first got it to boot to xp, but there was a "unable to
validated license" or something. no dialog to login.
</P>
<P>
more tweaking, added inter partition mapping (i assume the license key
was on another partition and it seemed to work even if i am wrong) got
it to get to login box, but after typing in log and PW, it just sat
there unable to start the explorer. i know i am close, but can't seem to
get grub correct.i found a GUI grubconf utlity, but it assumes you know
what you are doing.
</P>
<P>
here is my grub conf as i left it when my brain melted. i did a thing
or 2 more to it and broke it again, but it was late:
</P>
<p align="center">See attached <tt><a
href="misc/wanted/melted.grub-conf.txt">melted.grub-conf.txt</a></tt></p>
<p>and here is the output of fdisk -l to show my drive info:</p>
<p align="center">See attached <tt><a
href="misc/wanted/melted.fdisk-l.txt">melted.fdisk-l.txt</a></tt></p>
<P>
can you help me? i didn;t make rescue floppies (xp nor partition magix)
and didn't back up my
data ( i have done this several times with no probs.) and i really hate
reinstalling (mainly losing lots of unread mail) but i know i am
close...
</P>
<P>
please help if you can. thanks very much for your time.
</P>
<P>
chris nuccio
</P>
<blockquote><font color="#000066">Anyone who's gotten their hands grubby with WinXP want to give it a shot?
-- Heather</font></blockquote>
<!-- sig -->
<!-- end 5 -->
<HR>
<center>
<BIG><STRONG><FONT COLOR="maroon">GENERAL MAIL</FONT></STRONG></BIG>
<BR>
</center><HR>
<UL>
<!-- index_text begins -->
<li><A HREF="#mailbag.1"
><strong>The Mailbag: Article Idea: "Windows Defectors" column</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 Mailbag: Article Idea: "Windows Defectors" column</FONT></H3>
Mon, 4 Aug 2003 12:45:15 -0400
<BR>grok (<a href="mailto:articlesubmission@linuxgazette.com?subject=%20Re%3A%20%5BLG%2095%5D%20mailbag%20%231">grok from sprint.ca</a>)
<P><STRONG>
Hi all:
</STRONG></P>
<P><STRONG><BLOCKQuote>
I'm glad I came across this 'polemic' now (being, sadly, only a sometime
reader of LG). My 2-cents'-worth:
</BLOCKQuote></STRONG></P>
<P><STRONG>
Some LG contributors seem to consistently miss the point as (for that
matter) do many GNU/Linux 'geeks': this isn't about what possible MS
defectors should or shouldn't be doing -- it's about what they <EM>will</EM>
do; and they WILL be staying away from GNU/Linux unnecessarily if they
anticipate the least complication in 'switching over' -- as is already
the case somewhat.
</STRONG></P>
<P><STRONG>
The original letter-writer has hit the nail on the head (again -- as
this is not the first time this has come up, by any means). 'Turn-key'
types need -- and should receive -- all the help and encouragement they
can possibly get to switch over. To quibble ahead of time over the
methodology or the feasibility or the desirability, even, of getting a
significant percentage of Windows users to 'defect' to us, is more about
confusing the <EM>politics</EM> of the matter with the <EM>mechanics</EM> of it all.
</STRONG></P>
<P><STRONG>
IMO 'geeks' seem to excel at being technically sophisticated about these
issues -- but politically naive in the extreme. It ain't rocket science
to understand that we simply are <EM>required</EM> to hold these people's hand
a bit in helping them over the hump, if we entertain any hopes of
freeing the planet from the thrall of Microsoft (and others). The
details will take care of themselves AFAIC -- discussion here of the
Knoppix solution being a case-in-point.
</STRONG></P>
<P><STRONG>
As a former long-time 'windows tips' reader and fairly experienced
political activist -- and small-time GNU/Linux advocate/user of some
years' experience (if not expertise) as well -- there is one thing that
is ABUNDANTLY clear to me: there is absolutely NO fundamental
contradiction between having a 'turn-key', 'idiot-proof' GNU/Linux
install over top of the preferred geek wet-dream OS we all desire. We
<EM>can</EM> have things both ways (when it comes to GNU/Linux, if not in
Life). Geeks who object to 'dumbing things down', (for whatever reasons)
are simply missing the Big (non-technical) Picture -- which does INDEED
matter in the long term. Many GNU/Linux users won't settle for Free
Software becoming yet another 'niche market'. Too many geeks have said
as much that they wouldn't mind/care about such a state of affairs. They
clearly do not understand that this attitude <EM>could</EM> (but I don't
believe <EM>would</EM>) lead to the downfall of Free Software. It certainly
doesn't help, and actually harms, IMO our 'Cause' [i.e. see my
postscript].
</STRONG></P>
<P><STRONG>
I am looking forward to reading a forthcoming regular 'Windows
Defectors' column monthly in Linux Gazette.
;>
</STRONG></P>
<P><STRONG>
P.S.: LG should do an article about the insulting little 'cliques' of
geeks who inhabit the various #debian/#linux/#other channels on IRC,
terrorizing and driving away newbies in droves.
Clearly these 'experts' have <EM>one</EM> set of problems <EM>they</EM> themselves
haven't yet 'defined'...
</STRONG></P>
<blockquote><font color="red">The staff here at LG had a mixed reaction to this. I've formatted the
replies we got below in the format that TAG is laid out as, so that you,
the gentle reader can still see the context of the reply.
-- Thomas Adam</font></blockquote>
<HR width="10%" align="center"><P><STRONG>
Some LG contributors seem to consistently miss the point as (for that
matter) do many GNU/Linux 'geeks': this isn't about what possible MS
defectors should or shouldn't be doing -- it's about what they <EM>will</EM>
do; and they WILL be staying away from GNU/Linux unnecessarily if they
anticipate the least complication in 'switching over' -- as is already
the case somewhat.
</STRONG></P>
<BLOCKQUOTE>
[Thomas]
Sigh, I think you're being too idealistic. I agree with you, but you
have to remember that "will do" is the operative phrase in your sentence.
Many people that write in asking questions such as "is Linux better than
Windows" often don't know themselves whether or not it would be a viable
alternative for them to switch, and so we ('we' as in the staff at LG) try
and extrapilate what they <EM>might</EM> want to do, based on the really poor
information that the querents send in.
</BLOCKQUOTE>
<BLOCKQUOTE>
Many people that want to run Linux though often have a
pre-conceived notion as to what they want to use it for, i.e. a webserver,
fileserver, mailserver, etc., and more often is the case that they've
heard
that Linux can do this, and so they concentrate their efforts in finding
out how Linux can do <EM>that</EM> specific task -- which is great. This then
usually gives them the insentive to explore Linux's capabilties further and
to get Linux to do Other Things (tm).
</BLOCKQUOTE>
<P><STRONG>
The original letter-writer has hit the nail on the head (again -- as
this is not the first time this has come up, by any means). 'Turn-key'
types need -- and should receive -- all the help and encouragement they
can possibly get to switch over.
</STRONG></P>
<BLOCKQUOTE>
[Thomas]
Which we try as best we can to provide. You have to understand though that
we can only go so far as to help them only <EM>if</EM> they are willing to put the
effort in themselves. There is only so much effort we can put in to a
querent's answer, based on how far he/she is prepared to take out efforts.
This is why joining a local LUG can be hugely beneficial for those who are
just finding their feet, as it were.
</BLOCKQUOTE>
<BLOCKQUOTE>
I know of one querent (I shan't name names, although Heather will know who
I am talking about (Hi, Heather!)) who continually e-mails us questions.
This is great, since this is what we're here for in the first place, but it
seems to me as though very little to no effort is first put into researching
the question before it is sent. More often than not, we at the LG are a
front-end to google/linux.
</BLOCKQUOTE>
<P><STRONG>
To quibble ahead of time over the
methodology or the feasibility or the desirability, even, of getting a
significant percentage of Windows users to 'defect' to us, is more about
confusing the <EM>politics</EM> of the matter with the <EM>mechanics</EM> of it all.
</STRONG></P>
<BLOCKQUOTE>
[Thomas]
Not at all, the two are virtually synonymous if you ask me, and often go
hand in hand, since it a) depends on <EM>what</EM> (if any specific task) person X
wants to do, and b) the mechanics are usually executed as a result of the
purpose for defecting. I use the term 'purpose' in the loose sense, since
there are some people who try Linux, just because they have heard a lot
about it.
</BLOCKQUOTE>
<P><STRONG>
IMO 'geeks' seem to excel at being technically sophisticated about these
issues -- but politically naive in the extreme. It ain't rocket science
to understand that we simply are <EM>required</EM> to hold these people's hand
a bit in helping them over the hump, if we entertain any hopes of
freeing the planet from the thrall of Microsoft (and others). The
details will take care of themselves AFAIC -- discussion here of the
Knoppix solution being a case-in-point.
</STRONG></P>
<BLOCKQUOTE>
I believe you are creating a stereotype, to say nothing of making a
sweeping generalisation. Granted there are a small minority who have
the attitude of: RTFM each and everytime a person asks a question (this is
<EM>very</EM> common in IRC rooms), but then most people are genuinely trying to help.
Again, I stress the importance of LUG's here as a means of "holding their
hands".
</BLOCKQUOTE>
<BLOCKQUOTE>
I disagree with the way you have phrased your sentence: "freeing the
planet from the thrall of Microsoft (and others)." Remember that
switching over is down to the individual choice, <EM>or</EM> to the choice of the
organisation/business/etc that a person may well work for. In the latter
case though, training ought to be given, but for the former, it is again
dependant on his/her needs from Linux.
</BLOCKQUOTE>
<BLOCKQUOTE>
There are some people who I recommend should stick to using MS-Windows
based upon their requirements. My parents for example would really not get on
with Linux one bit, due to their needs, and still at this time, Linux does not
satisfy them.
</BLOCKQUOTE>
<P><STRONG>
As a former long-time 'windows tips' reader and fairly experienced
political activist -- and small-time GNU/Linux advocate/user of some
years' experience (if not expertise) as well -- there is one thing that
is ABUNDANTLY clear to me: there is absolutely NO fundamental
contradiction between having a 'turn-key', 'idiot-proof' GNU/Linux
install over top of the preferred geek wet-dream OS we all desire.
</STRONG></P>
<BLOCKQUOTE>
[Thomas]
Are you saying that Linux is a source of sexual satisfaction? I also
completely refute your stereotype of "geek" (whatever you mean by that).
No OS is idiot-proof', since it all comes down to how <EM>you</EM> as a user of
the OS decide to manage it.
</BLOCKQUOTE>
<P><STRONG>
We <EM>can</EM> have things both ways (when it comes to GNU/Linux, if not in
Life). Geeks who object to 'dumbing things down', (for whatever reasons)
are simply missing the Big (non-technical) Picture -- which does INDEED
matter in the long term.
</STRONG></P>
<BLOCKQUOTE>
[Thomas]
Which is what?
</BLOCKQUOTE>
<P><STRONG>
Many GNU/Linux users won't settle for Free
Software becoming yet another 'niche market'. Too many geeks have said
as much that they wouldn't mind/care about such a state of affairs. They
clearly do not understand that this attitude <EM>could</EM> (but I don't
believe <EM>would</EM>) lead to the downfall of Free Software. It certainly
doesn't help, and actually harms, IMO our 'Cause' [i.e. see my
postscript].
</STRONG></P>
<BLOCKQUOTE>
[Thomas]
We can perhaps thank RMS for his continual devotion to the FS cause here.
</BLOCKQUOTE>
<P><STRONG>
I am looking forward to reading a forthcoming regular 'Windows
Defectors' column monthly in Linux Gazette.
;>
</STRONG></P>
<BLOCKQUOTE>
[Thomas]
Assuming you would write one, but expect a lot of flame e-mails!
</BLOCKQUOTE>
<HR width="10%" align="center"><P><STRONG>
I am looking forward to reading a forthcoming regular 'Windows
Defectors' column monthly in Linux Gazette.
;>
</STRONG></P>
<BLOCKQUOTE>
[Jimmy O'Regan]
I volunteered to write about Wingate (it's still on my todo list,
there's just one or two things I haven't gotten working the right way
yet), I still have to use Windows to browse the net (winmodem), and most
of the answers I've given have been on windows related subjects, so I
volunteer to write a column about windows stuff. Now, I'm not the most
confident person in the world, so (to the rest of the Answer Gang
<IMG SRC="../gx/dennis/smily.gif" ALT=":)"
height="24" width="20" align="middle"> is
there someone I can send draft articles to for constructive criticism?
To Jim/grok, are there any specific topics you think should be covered?
</BLOCKQUOTE>
<BLOCKQUOTE>
I had been thinking of starting with articles which showed how Windows
users could begin the transition by using free software under windows,
to lower the learning curve: cygwin, open office (.org), mozilla &c. (I
also have a couple of short scripts and aliases to convert (<EM>really</EM>)
obscure windows file formats to something useful, though I might just
group a few and sent them as 2c tips).
</BLOCKQUOTE>
<BLOCKQUOTE>
The quickest idea I could roll off is an article about Cygwin; how the
standard tools are actually really useful, even if you can't just point
and click to use them
<IMG SRC="../gx/dennis/smily.gif" ALT=":)"
height="24" width="20" align="middle"> - I could roll a couple of the obscure file
formats into that, by way of demonstration (using awk for CSV etc)
</BLOCKQUOTE>
<BLOCKQUOTE>
I could probably do an introduction to Open Office from the MS Office
user's POV at the same time; provided I get enough time around my
parents (my mother is/was an ECDL instructor, my Dad had to train the
rest of the office staff at his last job), and having once been forced
to use ASP, I'm pretty interested in trying out Arrowhead and giving my
impressions.
</BLOCKQUOTE>
<BLOCKQUOTE>
On a level which leans more towards my personal interests, I've got some
video editing to do in the next week, and I want to try out Ardour as a
home studio solution, and as a guitarist, I want to see if Songwrite
comes anywhere near GuitarPro as a way of representing tablature; but
since on the distro I'm forced to use (Mandrake bloody 9.0) both gcc and
python are broken, this may take a while.
</BLOCKQUOTE>
<BLOCKQUOTE>
Plus, the helicopter never came after the last time I volunteered
<IMG SRC="../gx/dennis/smily.gif" ALT=":)"
height="24" width="20" align="middle">
</BLOCKQUOTE>
<P><STRONG>
Some LG contributors seem to consistently miss the point as (for that
matter) do many GNU/Linux 'geeks': this isn't about what possible MS
defectors should or shouldn't be doing -- it's about what they <EM>will</EM>
do; and they WILL be staying away from GNU/Linux unnecessarily if they
anticipate the least complication in 'switching over' -- as is already
the case somewhat.
</STRONG></P>
<BLOCKQUOTE>
[Ben]
Och, that tired old refrain again. Why are you assuming that people are
"missing" something here? What if, after sober and careful
consideration, they have decided that the cons of doing what you ask for
outweigh the pros? I am among the Linux "geeks" that have done so; many
other people that I know are as well. Your assumption is poorly
considered and rather offensive.
</BLOCKQUOTE>
<P><STRONG>
The original letter-writer has hit the nail on the head (again -- as
this is not the first time this has come up, by any means). 'Turn-key'
types need -- and should receive -- all the help and encouragement they
can possibly get to switch over. To quibble ahead of time over the
methodology or the feasibility or the desirability, even, of getting a
significant percentage of Windows users to 'defect' to us, is more about
confusing the <EM>politics</EM> of the matter with the <EM>mechanics</EM> of it all.
</STRONG></P>
<BLOCKQUOTE>
[Ben]
Answer me one simple question here, if you would. Who pays? Conversely,
who is it that owes the hundreds of thousands of hours of careful,
exacting, difficult labor necessary to "convert" (quoted due to many
unmerited assumptions behind the word) those would-be Wind0ws-to-Linux
'defectors'?
</BLOCKQUOTE>
<P><STRONG>
IMO 'geeks' seem to excel at being technically sophisticated about these
issues -- but politically naive in the extreme.
</STRONG></P>
<BLOCKQUOTE>
[Ben]
To put it plainly, you don't know what you're talking about. This myth
has been propagated for so long that even people who should know better
are affected by it - but a tiny bit of research would show you the cold,
hard truth in just moments. Take a look at Kuroshin, <A HREF="http://www.slashdot.org/">Slashdot</A>,
Linux.org, EFF.org, etc.; there are many, many highly politically-savvy
folks there if you look for them.
</BLOCKQUOTE>
<P><STRONG>
It ain't rocket science
to understand that we simply are <EM>required</EM> to hold these people's hand
a bit in helping them over the hump, if we entertain any hopes of
freeing the planet from the thrall of Microsoft (and others).
</STRONG></P>
<BLOCKQUOTE>
[Ben]
Who are "we"? If you are willing to do the job - if you manage to hold
up for even a week of providing the level of support you're talking
about without any remuneration - kudos and my respects to you. I have no
doubt that LG would be more than happy to advertise your services.
</BLOCKQUOTE>
<BLOCKQUOTE>
Until you're willing to do this, please don't assume that you can co-opt
other people's services without any return. You don't own anyone else's
efforts. If we're speaking of extreme political naivete, it is exactly
this, often displayed by those who spend too much time in political bull
sessions and not enough time in the real world - people are <EM>not</EM> pawns,
their labor is <EM>not</EM> to be taken for granted.
</BLOCKQUOTE>
<P><STRONG>
The
details will take care of themselves AFAIC -- discussion here of the
Knoppix solution being a case-in-point.
</STRONG></P>
<BLOCKQUOTE>
[Ben]
For those details to "take care of themselves", a fellow named Klaus
Knopper had to put in a few thousand hours (my best guess) of hard work.
I doubt that he'd appreciate his efforts being so dismissively
classified; I certainly don't.
</BLOCKQUOTE>
<P><STRONG>
As a former long-time 'windows tips' reader and fairly experienced
political activist -- and small-time GNU/Linux advocate/user of some
years' experience (if not expertise) as well -- there is one thing that
is ABUNDANTLY clear to me: there is absolutely NO fundamental
contradiction between having a 'turn-key', 'idiot-proof' GNU/Linux
install over top of the preferred geek wet-dream OS we all desire.
</STRONG></P>
<BLOCKQUOTE>
[Ben]
As Thomas noted, I do not use OSes for my sexual satisfaction. Besides,
there's no such thing as idiot-proof; idiots are far too ingenuous. The
point that you're missing is that using a computer requires
intelligence, skill, and effort - and by its nature, always will. It's a
*tool*: one that, in this respect, is no different from, say, a lathe...
although a lathe is perhaps a little less <EM>physically</EM> forgiving. Idiots
will never use either one well.
</BLOCKQUOTE>
<BLOCKQUOTE>
[Jason]
The only way we could have a "idiot-proof", "turn-key" would be for
someone other than the users to make choices for the users. Sounds kind
of like what a distribution does, doesn't it?
</BLOCKQUOTE>
<P><STRONG>
We
<EM>can</EM> have things both ways (when it comes to GNU/Linux, if not in
Life). Geeks who object to 'dumbing things down', (for whatever reasons)
are simply missing the Big (non-technical) Picture -- which does INDEED
matter in the long term.
</STRONG></P>
<BLOCKQUOTE>
[Ben]
The Big Picture, in your perception, being that the skilled and the
knowledgeable are the servants of the idiots and the clueless? Please...
try that somewhere else. I grew up under a political system that was
based on that premise (the former USSR); the current state of that
entity, and the amount of suffering it created in this world, should
give you a clue as to the success of that idea.
</BLOCKQUOTE>
<BLOCKQUOTE>
[Jason]
You should read "In the Beginning was the Command Line", an essay by
Neal Stephenson. (I don't have a link handy: Google for it.) It's about
user interfaces, and how GUIs rely upon other people making choices for
you.
</BLOCKQUOTE>
<BLOCKQUOTE>
Oh yes, it's Linus Skywalker vs. the death star!
<IMG SRC="../gx/dennis/smily.gif" ALT=":-)"
height="24" width="20" align="middle">
</BLOCKQUOTE>
<BLOCKQUOTE>
Okay, this is going to harsh, but how will clueless Windows users help
free software? They can't code. Bug reporting takes a certian skill.
</BLOCKQUOTE>
<blockquote><font color="red">That is highly inaccurate. Windows users' <EM>can</EM> write software, it is
just that they'll probably be used to a different language.
-- Thomas Adam</font></blockquote>
<BLOCKQUOTE>
How exactly is it that we can't live without these people?
</BLOCKQUOTE>
<BLOCKQUOTE>
But really, I wan't to see Linux popular as much as the next guy, but if
I have to do by making Linux look just like Windows, what's the point?
Distros such as Mandrake, IMHO, are doing a <EM>great</EM> job of providing
alternate configuration interfaces (ie, a GUI) and leveraging automatic
hardware detection.
</BLOCKQUOTE>
<blockquote><font color="red">Mandrake and RedHat are trying to be too much like Windows, IMHO. The
whole point about Linux should be that it is another alternative from
using it...not: "How can we make Linux look more like Windows"
-- Thomas Adam</font></blockquote>
<!-- end 1 -->
<!-- *** BEGIN author bio *** -->
<P>
<P>
<!-- *** END author bio *** -->
<!-- *** BEGIN copyright *** -->
<hr>
<CENTER><SMALL><STRONG>
Copyright © 2003, .
Copying license <A HREF="../copying.html">http://www.linuxgazette.com/copying.html</A><BR>
Published in Issue 95 of <i>Linux Gazette</i>, October 2003
</STRONG></SMALL></CENTER>
<!-- *** END copyright *** -->
<HR>
<TABLE BORDER><TR><TD WIDTH="200">
<A HREF="http://www.linuxgazette.com/">
<IMG ALT="LINUX GAZETTE" SRC="../gx/2002/lglogo_200x41.png"
WIDTH="200" HEIGHT="41" border="0"></A>
<BR CLEAR="all">
<SMALL>...<I>making Linux just a little more fun!</I></SMALL>
</TD><TD WIDTH="380">
<CENTER>
<BIG><BIG><STRONG><FONT COLOR="maroon">More 2-Cent Tips</FONT></STRONG></BIG></BIG>
</CENTER>
</TD></TR>
</TABLE>
<P>
<!-- END header -->
<center><STRONG>See also: The Answer Gang's
<a href="../tag/kb.html">Knowledge Base</a>
and the <i>LG</i>
<a href="http://www.linuxgazette.com/search.html">Search Engine</a></STRONG>
</center><HR>
<UL>
<!-- index_text begins -->
<li><A HREF="#tips.1"
><strong>cinelerra & libstdc++so.3</strong></a>
<li><A HREF="#tips.2"
><strong>problem in dns setting up</strong></a>
<li><A HREF="#tips.3"
><strong>Home LAN setup question</strong></a>
<li><A HREF="#tips.4"
><strong>Anyone for winRAID?</strong></a>
<li><A HREF="#tips.5"
><strong>up2date SSL error</strong></a>
<li><A HREF="#tips.6"
><strong>Snapshot fo current window or desktop</strong></a>
<li><A HREF="#tips.7"
><strong>Errors while using rpm extension.....Cygwin</strong></a>
<li><A HREF="#tips.8"
><strong>Cool tool of the week: nntp//rss</strong></a>
<li><A HREF="#tips.9"
><strong>mult headeddsplay</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">cinelerra & libstdc++so.3</FONT></H3>
Fri, 08 Aug 2003 23:54:45 -0700
<BR>Thomas Adam (<a
href="mailto:linux-questions-only@ssc.com?cc=linux-questions-only@linuxgazette.com&cc=bbertsch@surfside.net&subject=%20Re%3A%20%5BLG%2095%5D%202c%20Tips%20%231">The <em>LG</em> Weekend Mechanic</a>)
<BR>Question by Brian
<P><STRONG>
Well, i installed the SuSe 8.2 pro, and it's really nice. Found Kino
and got my firewire DV video camera to download some AVI files. wow! To
get a final product SVCD of my little princess riding horses, i decided
to use Cinelerra.it won't install, because libstdc++so.3 isn't found.
I have all the C++ from SuSe, but, not this.
</STRONG></P>
<P><STRONG>
My Questions:
1 i have the files from a Linux Format DVD "essentials" section. It
looks "involved" to install. Do i need the one file libstdc++so.3, or
the whole group?
</STRONG></P>
<P><STRONG>
2 Could you recommend a course of action. I would like to do some video
editing again. I'm 1/2 way there and real excited. Dang! i'm getting
all shaky again!
</STRONG></P>
<BLOCKQUOTE>
This looks like a classic case of "I cannot find the symlink". I usually
get annoyed at programs that do this, but the solution is simple:
</BLOCKQUOTE>
<BLOCKQUOTE><BLOCKQuote>
1. Find "libstdc++" (possibly in <TT>/usr/lib/</TT>)
</BLOCKQuote></BLOCKQUOTE>
<BLOCKQUOTE><BLOCKQUOTE><CODE>
2. ln -s /usr/lib/libstdc++ /usr/lib/libstdc++so.3
</CODE></BLOCKQUOTE></BLOCKQUOTE>
<BLOCKQUOTE>
(What you may find is that a file called "libstdc++so.so" exists, and
should that point of a library file, symlink it as appropriate).
</BLOCKQUOTE>
<BLOCKQUOTE>
3. run "ldconfig -X" (as root)
</BLOCKQUOTE>
<BLOCKQUOTE>
(Step 3 is there to keep the cache happy, although it is usually not
needed).
</BLOCKQUOTE>
<BLOCKQUOTE>
HTH,
</BLOCKQUOTE>
<P><STRONG>
Thank you very much. Cinelerra is working, the frame rate is up w/ my
NVIDIA driver, and i have 2 week's vacation starting today!. whoo hoo!
</STRONG></P>
<P><STRONG>
I am requesting your permission to post your suggestion to the web -
chat sites where a few are experiencing similar difficulties.
</STRONG></P>
<P><STRONG>
thanks a 1 EE6.
</STRONG></P>
<P><STRONG>
brian
</STRONG></P>
<blockquote><font color="red">You're more than welcome to do so
-- Thomas Adam</font></blockquote>
<!-- end 1 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<P> <A NAME="tips.2"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
<FONT COLOR="navy">problem in dns setting up</FONT></H3>
Wed, 6 Aug 2003 02:51:16 -0700 (PDT)
<BR>Kapil Hari Paranjape (<a
href="mailto:linux-questions-only@ssc.com?cc=anilksd@yahoo.com&subject=%20Re%3A%20%5BLG%2095%5D%202c%20Tips%20%232">The
Answer Gnag</a>)
<br>Question by Anil KP
<P><STRONG>
Hi,
We have leaseline from our isp and they have given us
8 ethernet ipz(public ip) for our internal servers.
The problem is that our ispz dns doesnt work properly.
so i thought of setting up my own dns.
</STRONG></P>
<P><STRONG>
I was able to setup the dns on the private
</STRONG></P>
<P><STRONG>
network(192.168.1.1-first ethernet card) successfully
but was not able to setup the dns properly on the
public ip(another ethernet card). What wud be reverse
lookup zone file in the case of public ip?(I was
given by my isp only 8 pulic ipz ).
Anticipating ur reply
</STRONG></P>
<BLOCKQUOTE>
[Kapil]
This can only be done by subnet assignment. The ISP needs to
create entries for your in their reverse zone file which point
to your server. Look for CIDR or Classless Internet Domain Routing
on google.
</BLOCKQUOTE>
<BLOCKQUOTE>
I think this is only applicable if bot hyou and the ISP use "bind".
If you use DJBernstein's domain name server programs then things are
different.
</BLOCKQUOTE>
<BLOCKQUOTE>
To repeat, this is only possible through co-operation with the entity
(presumably your ISP) who has been authorised to provide reverse lookup
to the entire Class C net to which your eight addresses belong.
</BLOCKQUOTE>
<BLOCKQUOTE>
As an example you can get for our domain:
</BLOCKQUOTE>
<blockquote><pre>$ host -t PTR 81.209.199.203.in-addr.arpa.
81.209.199.203.in-addr.arpa CNAME 81.imsc.209.199.203.in-addr.arpa
81.imsc.209.199.203.in-addr.arpa PTR proxy.imsc.res.in
$ host -t NS 209.199.203.in-addr.arpa.
209.199.203.in-addr.arpa NS md3.vsnl.net.in
209.199.203.in-addr.arpa NS md2.vsnl.net.in
$ host -t NS imsc.209.199.203.in-addr.arpa.
imsc.209.199.203.in-addr.arpa NS ns1.imsc.res.in
imsc.209.199.203.in-addr.arpa NS ns2.imsc.res.in
</pre></blockquote>
<!-- end 2 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<P> <A NAME="tips.3"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
<FONT COLOR="navy">Home LAN setup question</FONT></H3>
Sat, 09 Aug 2003 00:50:59 -0600
<BR>Faber Fedor (<a href="mailto:linux-questions-only@ssc.com?cc=xgen@softhome.net&subject=%20Re%3A%20%5BLG%2095%5D%202c%20Tips%20%233">xgen from softhome.net</a>)
<br>Question by xgen
<P>
Hi there dude,
</P>
<P>
i have a general question regarding Home LAN setup on Linux
</P>
<P>
I have 2 PCs to be networked and sharing a connection. Do i need 2 network
cards, 1 leading out to the outside world, another leading to my internal
LAN? Is this setup common? Will it help in LAN security?
</P>
<P>
Thanks a mil
</P>
<P>
-Xgen
</P>
<BLOCKQUOTE>
[Faber]
These days, the Dude has been upgraded to Dudes and a Dudette. We're
now known as The Answer Gang. The Answer Guy is still around , but he's
got help these days.
</BLOCKQUOTE>
<BLOCKQUOTE>
Generally speaking, if you're using one of the Linux boxes as a
router/firewall. If you're using, say a LInksys router/firewall, then
no, you don't need two NICS in one Linux box.
</BLOCKQUOTE>
<BLOCKQUOTE>
Check out www.tldp.org for various documents on setting up networks and
routers using Linux.
</BLOCKQUOTE>
<!-- end 3 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<P> <A NAME="tips.4"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
<FONT COLOR="navy">Anyone for winRAID?</FONT></H3>
Mon Sep 29 16:39:55 BST 2003
<br>Hugo Mills (<a
href="mailto:linux-questions-only@ssc.com?cc=linux-questions-only@linuxgazette.com&cc=Hugo@carfax.org.uk&subject=%20Re%3A%20%5BLG%2095%5D%202c%20Tips%20%234">Hugo@carfax.org.uk</a>)
<p><strong><font color="#000099">[hugo]</font><font color="#000066"> I seem to be getting a small but steady flow of people</font>
<br><font color="#000099">[hugo]</font><font color="#000066"> asking me
about the Adaptec Serial ATA RAID card and Linux.</font></strong>
<br><font color="#006699">[editorgal]</font> hrmmmm
<br><font color="#006699">[editorgal]</font> is there a distro being buggy about it?
<br><strong><font color="#000099">[hugo]</font><font color="#000066">
No, it just doesn't work right.</font></strong>
<br><font color="#006699">[editorgal]</font> a pal tells me that aacraid code is busted in some of the
gentoo kernel kits but is safe to use in their vanilla source kit
<br><strong><font color="#000099">[hugo]</font><font color="#000066"> It's not AAC at all.</font>
<br><font color="#000099">[hugo]</font><font color="#000066"> It's the
AAR-1210SA.</font></strong>
<br><font color="#006699">[editorgal]</font> is theer a secret handshake for it or is it just Being Evil right now?
<br><strong><font color="#000099">[hugo]</font><font color="#000066"> It's based on the SiI3112 chip, but Adaptec mangled it.</font>
<br><font color="#000099">[hugo]</font><font color="#000066"> You can
write stuff to the disk drive and read it back again,</font></strong>
<br><font color="#006699">[editorgal]</font> since I'm working on the tips section anyway.... <img src="" alt=":D">
<br><strong><font color="#000099">[hugo]</font><font color="#000066">
but every disk access just causes a DMA timeout,</font></strong>
<br><font color="#006699">[editorgal]</font> ouch
<br><strong><font color="#000099">[hugo]</font><font color="#000066">
which takes anything up to about 45 seconds to clear.</font></strong>
<br><font color="#006699">[editorgal]</font> urgh
<br><strong><font color="#000099">[hugo]</font><font color="#000066"> So
it's basically worthless.</font></strong>
<br><font color="#006699">[editorgal]</font> that's millenia in computer time
<br><strong><font color="#000099">[hugo]</font><font color="#000066"> I wrote a patch to the kernel to recognise the PCI ID of the card,</font>
<br><font color="#000099">[hugo]</font><font color="#000066"> which works (I've got code in the kernel! Woohoo!)</font>
<br><font color="#000099">[hugo]</font><font color="#000066"> but it has
the unfortunate effect above.</font></strong>
<br><font color="#006699">[editorgal]</font> this a private patch or submitted?
<br><strong><font color="#000099">[hugo]</font><font color="#000066"> Submitted.</font>
<br><font color="#000099">[hugo]</font><font color="#000066"> It went in 2.4.21-ac1, and 2.4.22 I think.</font>
<br><font color="#000099">[hugo]</font><font color="#000066"> (Or was it
2.4.20-ac1 and 2.4.21? I can't remember)</font></strong>
<br><font color="#006699">[editorgal]</font> ok, it wasn't handled at all, but you provided code which tries to handle it, only DMA is still wicked?
<br><strong><font color="#000099">[hugo]</font><font color="#000066"> Yes, that's about the size of it.</font>
<br><font color="#000099">[hugo]</font><font color="#000066"> Adaptec provide Linux drivers for the card,</font>
<br><font color="#000099">[hugo]</font><font color="#000066"> but they're only for certain stock Red Hat kernel packages.</font>
<br><font color="#000099">[hugo]</font><font color="#000066"> and
they're binary-only.</font></strong>
<br><font color="#000066">* Editorgal</font> avoids ranting about RH's concept of "stock"
<br><strong><font color="#000099">[hugo]</font><font color="#000066"> I've tried asking moderately noisily on LKML about the problems with this card,</font>
<br><font color="#000099">[hugo]</font><font color="#000066"> but nobody seems to be able to give me any information at all.</font>
<br><font color="#000099">[hugo]</font><font color="#000066"> All I've achieved is having several email threads archived where I appear to be</font>
<br><font color="#000099">[hugo]</font><font color="#000066"> the font
of all knowledge about getting the 1210SA working under Linux.
</font></strong>
<br><font color="#006600">[tonytiger]</font> heh
<br><strong><font color="#000099">[hugo]</font><font color="#000066"> As soon as this month's pay cheque clears, I'm buying an SIIG card instead,</font>
<br><font color="#000099">[hugo]</font><font color="#000066"> and
selling the Adaptec on eBay.</font></strong>
<br><font color="#006699">[editorgal]</font> what's the info you want to get, I could post a wanted note for you in LG?
<br><strong><font color="#000099">[hugo]</font><font color="#000066">
Why isn't it working, and how do you fix it? <img src=""
alt=":)"></font>
<br><font color="#000099">[hugo]</font><font color="#000066"> TBH, I
can't be arsed at this point.</font></strong>
<br><font color="#006699">[editorgal]</font> it isn't working because adaptec's too lame to cough up a source module instead of a binary for RH's heavily mangled kernels.
<br><strong><font color="#000099">[hugo]</font><font color="#000066">
Well, yes, that's about the size of it. <img src=""
alt=":)"></font></strong>
<br><font color="#000066">* Editorgal</font> captures this thread for the 2c Tips column
<br><strong><font color="#000099">[hugo]</font><font color="#000066"> Also, I think they want to hide the fact that the RAID (0, 1, 0+1) part of the card is effectively done in software.</font>
<br><font color="#000099">[hugo]</font><font color="#000066"> (Or so it
is rumoured)</font></strong>
</p>
<p><em>That "rumor" is per a Linux Kernel Mailing List (LKML) post by Sam Flory. It's probably mirrored lots of places, but here's a pointer:
<br><a href="http://marc.theaimsgroup.com/?l=linux-kernel&m=105484662322837&w=2">http://marc.theaimsgroup.com/?l=linux-kernel&m=105484662322837&w=2</a>
<br>In the rest of the thread, Hugo notes that he's only looking for
basic drive-access features, but above, he notes that he hasn't managed to code them
up himself, and is giving up (his main contribution having been patching
the PCI ID recognition). For fairness sake they have binary modules for a few other stock boxed-linux kernels but as soon as you stray off the beaten path - and possibly as soon as you upgrade even if staying within the distro's offered kernels - someone else will have to figure out why the SiI3112 chip hates Seagate SATA drives.<em></p>
<p><em>Meanwhile, if you're the sort who bristles about binary-only drivers going into your otherwise trustable kernel, look out for VIA's "support" for the MPEG2 hardware on their EPIA boards, too. -- Heather</em></p>
<!-- end 4 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<P> <A NAME="tips.5"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
<FONT COLOR="navy">up2date SSL error</FONT></H3>
Fri, 26 Sep 2003 10:24:42 -0400
<BR>Greg Anderson (<a href="mailto:linux-questions-only@ssc.com?cc=linux-questions-only@linuxgazette.com&cc=Greg@FutureRealms.com&subject=%20Re%3A%20%5BLG%2095%5D%202c%20Tips%20%231">Greg from FutureRealms.com</a>)
<P><STRONG>
In Redhat 7.1 thru 9 running up2date fails with this message:
</STRONG></P>
<pre><strong>SSL.Error: [('SSL routines', 'SSL3_GET_SERVER_CERTIFICATE', 'certificate verify failed')]
</strong></pre>
<P><STRONG>
Then it tells you your system's clock may be so wrong it is causing the
problem. What is
really going on is the certificate and the up2date program is out of
date. You need to
download the lateest up2date from Redhat.
</STRONG></P>
<TABLE WIDTH="95%" BORDER="1" BGCOLOR="#FFFFCC"><TR><TD>
<p align="center">...............</p>
<P><STRONG>
"The certificate used by up2date and rhn_register to communicate with the
<A HREF="http://www.redhat.com/">Red Hat</A> Network reached its end of life on August 28th 2003. Users
attempting to connect to Red Hat Network will see SSL connection or
certificate verification failures."
</STRONG></P>
<P><STRONG>
"New versions of the up2date and rhn_register clients are now available
which are required for continued access to Red Hat Network."
</STRONG></P><p align="center">...............</p>
</TD></TR></TABLE>
<P><STRONG>
RHSA-2003:267 for Red Hat Linux:
https://rhn.redhat.com/errata/RHSA-2003-267.html
</STRONG></P>
<P><STRONG>
This solved it for me.
--
Greg Anderson
</STRONG></P>
<BLOCKQUOTE>
[JimD]
Might be good to try an rpm --rebuilddb command, too. Just in case
rpm segfaults on a corrupted dbm/database.
</BLOCKQUOTE>
<!-- end 1 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<P> <A NAME="tips.6"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
<FONT COLOR="navy">Snapshot fo current window or desktop</FONT></H3>
24 Sep 2003 12:30:54 -0500
<BR>Dan Wilder, Thomas Adam, Ashwin N (<a href="mailto:linux-questions-only@ssc.com?cc=whegge@signalblast.com&subject=%20Re%3A%20%5BLG%2095%5D%202c%20Tips%20%232">the <em>LG</em> Answer Gang</a>)
<BR>Question by Wes Hegge
<P><STRONG>
How do I get a snapshot (preferably in gif or jpg format) of the current
window in <A HREF="http://www.kde.org/">KDE</A>? What I am looking for is the equivalent to MS's
Alt-PrtScn then paste to paintbrush and then save to a file.
</STRONG></P>
<P><STRONG>
TIA
--
Wes Hegge
</STRONG></P>
<BLOCKQUOTE>
[Dan]
ksnapshot
</BLOCKQUOTE>
<P><STRONG>
Thanks,
</STRONG></P>
<P><STRONG>
I Guess, I am blind as a bat. Right in the "Graphics" submenu is
"Screen Capture Program" (aka ksnapshot).
</STRONG></P>
<P><STRONG>
Thanks for the help.
</STRONG></P>
<BLOCKQUOTE>
[Thomas]
I haven't run KDE for years
(I'm an FVWM fan), but I do know that "ImageMagick" offers the "import"
utility which does the same thing, as does "xwd".
</BLOCKQUOTE>
<BLOCKQUOTE>
[Ashwin N]
Can be done using Gimp. From the menu choose,
</BLOCKQUOTE>
<blockquote><pre>File -> Acquire -> Screenshot
</pre></blockquote>
<BLOCKQUOTE>
[Heather]
For the ImageMagick method I keep a directory named prn and if I like
what I captured I rename this image. This happens to also be where I
keep documents I only have around to be printed. Here's my bash alias
I've been using for awhile:
</BLOCKQUOTE>
<blockquote><pre># capture an X display
# with thanks to the lazy folks at
# http://www.troubleshooters.com/linux/scrshot.htm
# who were kind enough to document how they do 'em.
screenshot ()
{
import -window root ~/prn/screendump.png
}
</pre></blockquote>
<BLOCKQUOTE>
Note that the man page for import is actually readable - you can take
shots of specific things, not just the whole screen.
</BLOCKQUOTE>
<BLOCKQUOTE>
There's also an enlightenment epplet that will make screenshots.
</BLOCKQUOTE>
<!-- end 2 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<P> <A NAME="tips.7"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
<FONT COLOR="navy">Errors while using rpm extension..... Cygwin</FONT></H3>
Sun, 28 Sep 2003 17:34:49 +0530
<BR>Ashwin N (<a href="mailto:linux-questions-only@ssc.com?cc=atiya.azim@niit.edu.pk&cc=yodha8@yahoo.co.uk&subject=%20Re%3A%20%5BLG%2095%5D%202c%20Tips%20%233">yodha8 from yahoo.co.uk</a>)
<BR>Question by Atiya Azim
<P><STRONG>
Actually i am not using red hat, although it is insalled on my pc.
Rather
i am using cygwin (<A HREF="http://cygwin.com"
>http://cygwin.com</A> which is linus-like environment for
windows platform - my OS is Windows 2000) for these rpms. It is working
fine with .tar and .gz files..but giving problems with all the files of
rpm format.
</STRONG></P>
<BLOCKQUOTE>
[Ashwin]
That is the problem! I have used Cygwin before, but I didn't know that
they
had even ported over RPM! In any case, if your need is just for a Java
SDK,
you can download the one available for Windows from the Sun website.
Install
it and the java, javac and other commandline tools will be available to
you
under Cygwin. Just remember to update the PATH variable with the directory
where the Java binaries are located.
</BLOCKQUOTE>
<P><STRONG>
Thanks for the help.........it is working this way.......
</STRONG></P>
<BLOCKQUOTE>
[Ashwin]
For other Linux utilities that are not available from the Cygwin mirrors,
you will have the best chance with the .tar.gz or .tar.bz2 files of those
applications.
</BLOCKQUOTE>
<!-- end 3 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<P> <A NAME="tips.8"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
<FONT COLOR="navy">Cool tool of the week: nntp//rss</FONT></H3>
Mon, 15 Sep 2003 11:17:32 -0600
<BR>Jason Creighton (<a
href="mailto:linux-questions-only@ssc.com?cc=androflux@softhome.net&subject=%20Re%3A%20%5BLG%2095%5D%202c%20Tips%20%234">The
<em>LG</em> Answer Gang</a>)
<P>
Hi,
</P>
<P>
nntp//rss (<A HREF="http://www.methodize.org/nntprss"
>http://www.methodize.org/nntprss</A>) is a RSS to NNTP so you
can read RSS feeds in your favorite newsreaders. Very nice.
</P>
<!-- end 4 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<P> <A NAME="tips.9"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
<FONT COLOR="navy">mult headeddsplay</FONT></H3>
Sun, 14 Sep 2003 20:08:16 +0100
<BR>Neil Youngman (<a href="mailto:linux-questions-only@ssc.com?cc=intiha@yahoo.com&cc=n.youngman@ntlworld.com&subject=%20Re%3A%20%5BLG%2095%5D%202c%20Tips%20%235">n.youngman from ntlworld.com</a>)
<BR>Question by Affan Ahmed
<P><STRONG>
Hello,
</STRONG></P>
<P><STRONG>
I have a NVIDA GForce 2 Go 100 card that supports
multiheaded display easily in Windows. Now i want to
do the same in Linux. I have RedHat 8.0. What do you
suggest that I do?
</STRONG></P>
<BLOCKQUOTE>
[Neil]
I suggest using Google
<A HREF="http://www.google.com/search?q=nvidia+linux+%22multiple+display%22&sourceid=opera&num=0&ie=utf-8&oe=utf-8"
>http://www.google.com/search?q=nvidia+linux+%22multiple+display%22&sourceid=opera&num=0&ie=utf-8&oe=utf-8</A>
</BLOCKQUOTE>
<BLOCKQUOTE><DL><DT>
It throws up potentially useful stuff like
<DD><A HREF="http://lists.suse.com/archive/suse-linux-e/2001-Jun/att-3012/01-TWINVIEW_README"
>http://lists.suse.com/archive/suse-linux-e/2001-Jun/att-3012/01-TWINVIEW_README</A>
</DL></BLOCKQUOTE>
<blockquote><font color="#000066">I suppose you could try the Gentoo Unreal Tournament demo CD, which
won't replace anything on your computer. At the very least it's tuned
up for NVidia. Find it by typing "unreal" into the search gadget at
Freshmeat.Net.
-- Heather</font></blockquote>
<!-- end 5 -->
<!-- *** BEGIN author bio *** -->
<P>
<P>
<!-- *** END author bio *** -->
<!-- *** BEGIN copyright *** -->
<hr>
<CENTER><SMALL><STRONG>
Copyright © 2003, .
Copying license <A HREF="../copying.html">http://www.linuxgazette.com/copying.html</A><BR>
Published in Issue 95 of <i>Linux Gazette</i>, October 2003
</STRONG></SMALL></CENTER>
<!-- *** END copyright *** -->
<HR>
<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"
><img src="../gx/dennis/qbub.gif" height="28" width="50"
alt="(?)" border="0"
><strong>Efficiency regards running script in a subshell () and a seperate shell</strong></a>
<dt><A HREF="#tag.2"
><img src="../gx/dennis/qbub.gif" height="28" width="50"
alt="(?)" border="0"
><strong>force unmounting of CDROM</strong></a>
<dt><A HREF="#tag.3"
><img src="../gx/dennis/qbub.gif" height="28" width="50"
alt="(?)" border="0"
><strong>IP config files on Red Hat 9</strong></a>
<dt><A HREF="#tag.4"
><img src="../gx/dennis/qbub.gif" height="28" width="50"
alt="(?)" border="0"
><strong>a linux solution for the office</strong></a>
<dt><A HREF="#tag.5"
><img src="../gx/dennis/qbub.gif" height="28" width="50"
alt="(?)" border="0"
><strong>Simple DNS solution with Red Hat 9</strong></a>
<dt><A HREF="#tag.6"
><img src="../gx/dennis/qbub.gif" height="28" width="50"
alt="(?)" border="0"
><strong>Creating RAMDISK</strong></a>
<dt><A HREF="#tag.7"
><img src="../gx/dennis/qbub.gif" height="28" width="50"
alt="(?)" border="0"
><strong>X server crash when starting up RH9 for the first time</strong></a>
<dt><A HREF="#tag.8"
><img src="../gx/dennis/qbub.gif" height="28" width="50"
alt="(?)" border="0"
><strong>Converting from Win2k to Linux</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>Greetings everyone and welcome again to the world of The Answer Gang.
It's been quite hectic for me and not all fun and games... among other
things, I was ill last month around submission time
<img src="../gx/dennis/unsmily.gif" alt=":("> and that meant that
the TAG column wasn't submitted at all, as I missed the deadline,
feeling a little too "dead" at the time. Oh
well, I guess we all need a break now and then...</p>
<p>Thomas Adam valiantly threw a hand in to help out, and I have to
admit he did more than half the work this time around. He says he's
learning an awful lot about perl, too.</p>
<p>
The peeve of this month is without a doubt a lack of information and
extremely poor descriptions in the compositions of the e-mails sent in to
TAG. As a positive note, there have been a record number of hits to:</p>
<blockquote>
<a href="http://www.linuxgazette.com/tag/ask-the-gang.html"
>http://www.linuxgazette.com/tag/ask-the-gang.html</a>
</blockquote>
<p>Please, everyone - if you're thinking about asking a question, read
that, and ask us what you need as clearly as you can.
We understand it is difficult for those who do not speak English very
well, but that's rarely been a problem - folks who are so carefully
aware of their poor language skills also take a free moment, and only
ask what they need to ask, and say what they've tried so far. The point
is, if you can't be bothered to ask a clear question, there's far too
many messages for us to try to detangle yours.</p>
<p>Regular and attentive readers will note some of the messy messages
we <em>have</em> answered. Yes, there's been worse. With a question
such as</p>
<blockquote><strong>d00z, cn u h3lp me</strong></blockquote>
<p> ... maybe you'll get some chuckles, but you sure won't get an
answer. The same goes for you students out there with a take home
light quiz. We can spot those a handful of kilometers away, give or take
a mile. Maybe you should cc: your professor when you ask us the
question, and he can give <em>us</em> the passing marks in your class.
The point is to learn a few research skills - so for such questions,
search google. Search our KnowedgeBase - it's part of what it's here
for. Search TLDP.org and freshmeat if the problem is really about
Linux.</p>
<p>And now for what I'd really planned to say last month. I attended
Linux World Expo, as I do every year here in the Silicon Valley area,
with the prospect of meeting again friends in the open source world
from all over the place. But this year, I was also taking a step back
and a look around at how the trade show world has changed in its view of
Linux. Now I get to write this with the additional perspective of
having been invited to PC Expo - a more generic computer trade show.</p>
<h4 align="center">The View From The Trade Show Floor</h4>
<p>I can't comment on the view from the press room since all that's in
there is pamphlets, a couple of spare computers, and coffee. Maybe a
sandwich tray. The seminars are still seminars and the halls still
suck your cellphone dry.</p>
<p>However, out in the exhibit hall, the world has changed a lot.</p>
<p>My first Linux World Expo was in San Jose. IDG had just taken
over the project from a local group who wanted to create a Linux
conference on the same order as regional conventions run for and by
science fiction fans. IDG is a big player who runs a lot of trade
shows. They invited big names and posted sponsor banners and the whole
nine yards. Jim Dennis (our very own Answer Guy) was invited to speak
about security for a half day class, and if the next speaker hadn't shown
up, the audience would have kept them from cleaning the room so Jim
could continue to talk. The hall was filled with a bunch of booths,
many of them small companies, but a few names like Intel spring to mind.
I recognized about half the listed speakers by face and about a third
of them total would surely recognize me back. Geeks were everywhere,
confused managerial and business types were too. T-shirts were plentiful.
</p>
<p>They also made quite a splash by having a platinum sponsor pay for
a bunch of floor space outright and donate it to be used as a Dot Org
pavilion, where projects and linux user groups could have small kiosks
and generally have a good time. Dot Org was much better laid out the
second time I saw it.
</p>
<p>As shows pressed on, toys were on the increase, but shirts
amd CDs with products on them were certainly around, too. we saw an
increase of booths and as more "generic" presence grew the amount of
total IQ in the booths could be seen to be being split evenly, because
individually talking to vendors, it was definitely going down. Toys
were getting insanely cool - drawings for VW Bugs and motorcycles. I
volunteered for the FSF booth. I helped out the Gnome guys. When I
worked at Tuxtops I went to both LWE/SF and LWE/NY in that year and had
a great time at both places. But Dot Org was becoming a ghetto with
hardly any color and the main floor felt increasingly like any other
computer show. Something was about to break down.</p>
<p>
And it did. A lot of companies had picked up starter capital on the
magic of the word Linux. Heck, some of them even were trying to be
Linux companies. But VC enthusiasm is no excuse for a poor business
plan and when something in the economy turned sour - I'm not sure what,
but we'll start at asian money difficulties and work our way up from
there - anyone who did not have their hand tightly on the finances
watched it all start to head down the drain at tornado speed, and the
VCs clamp down their pocketbooks. No more toys. T-shirts only if
you sit through the spiel. (Booths that still had IQ points left around
would also give them to people who seemed genuinely interested in their
products, which if you ask me, is the way it should have always been.)
More feet hurt because companies watching their dimes only used a single
layer of carpet and not the nice padded layer under it which you can
pay extra for. Lots of pamphlets though.</p>
<p>
I'm pleased to say that I'm seeing winter's end. There are still
insipidly blank faces to be foudn at some booths. And there are what
I'll call the "barely Linux" booths - hardware vendors selling server
racks, RAID arrays, GPS, scanning printers, and other weird peripherals.
But Linux products are getting their own booths and that means they're
affording them, I hope. The flavors of products are spreading around,
and that's part of why it feels like a normal trade show to me - financial,
games, diet plan calculators. Backup programs optimized for Linux, like
Storix, are not only around but have competitors. All those things I'd
see at a Windows oriented show, I'm seeing.
<p>
The Dot Org space still looks plain but it's not hiding
so much anymore. There are a lot more projects than there used to be
and projects were sharing booths - I recommend a little more platinum
get spilled on this next time. It's rather cool to see MBNA America (a
large VISA card vendor) hanging out in Dot Org plugging their LinuxFund
card. They give away big beach towels if you can sign up for a card.</p>
<p>It's hilarious to see Microsoft booths in "the rookery" as if
they're newly born open sourcerors. "Well we do let WinCE developers
see some sources." Really? Can they compile Windows from scratch and
pour it onto a handheld, then run WinCE office binaries out of the OEM
private packages to test their build? "Um, no. They can look at
selected drivers and structures." I see. Well, it's better
than nothing <img src="../gx/dennis/smily.gif" alt=":)"></p>
<p>Yes, I like what I'm seeing. The frost is melting off the ground and
not every seed has sprouted again - but things are getting good.</p>
<p>
Over at the more ordinary trade show, PC Expo - for the second year running
they had a "Linux Boot Camp" track. For the first year running it's
calling itself "TechX>NY" instead and I wonder if they are thinking that
the PC is on its way out as the only platform to run desktops or
servers. Last year "the Linux track" was one lonely guy
presenting nonstop between water cups and snack breaks. This year they
invited LPI, Novell (well okay Ximian, and maybe they invited themselves
since they're a sponsor for the show), and a few of the Answer Gang.
Maybe in a few years they'll have the brass of various "Big Linux"
companies knocking down their door trying to be on the speaker's list.
I'm advised that our presentations were very well recieved, indeed.
</p>
<p>On the show floor itself there was only a little of Linux. Local
computing groups knew about it and chatted merrily. Product vendors
knew what it was and generally whether they supported it or hadn't
tested. I didn't really get "We don't support that! Our customers
don't ask for that kind of stuff!" flamage which I'd
been seeing a few years ago - in fact quite the opposite, one vendor
told me that he'd had requests for support and they were working on it,
and he kind of hoped for BSD support too, if it wasn't too hard, though
it wasn't on the official roadmap. Outsourcing World (sic) mostly didn't
know or care what "A Linux" was though there were a few "outsourced
programming" firms I didn't think much of. Okay, the computing sector
overall may still be heading downhill in places. But Linux is indeed,
looking up.</p>
<!-- end hgreeting -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<A NAME="tag.1"><HR WIDTH="75%" ALIGN="center"></A>
<!-- begin 1 -->
<H3 align="left"><img src="../gx/dennis/qbubble.gif"
height="50" width="60" alt="(?) " border="0"
>Efficiency regards running script in a subshell () and a seperate shell</H3>
<p><strong>From Nimish kamerkar
</strong></p>
<p></strong></p>
<p align="right"><strong>Answered By: Thomas Adam
</strong></p>
<P><STRONG>
Hi Answer Gang,
</STRONG></P>
<P><STRONG>
Which method is more efficient;
Running a command in () or running it in a seperate shell?
Can the answer include differences in how the processes
are spawned? (i.e. fork exec etc)
</STRONG></P>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Thomas]
OK. This is usually application/situation dependant. If you have something
like:
</blockQuote>
<blockquote><pre>#!/bin/bash
echo $(whereis xterm)
</pre></blockquote>
<blockQuote>
What you are doing there is forcing the command "whereis xterm" to run in
a subshell (denoted between ()'s). A "subshell" is just another instance
of the command-line interpreter, running your program. Thus, a "subshell"
in this instance means that the main shell script is its parent, i.e.
assume that we called the script above "parent.sh" then when the subshell
executed you'd get:
</blockQuote>
<blockquote><pre>|-parent.sh
|-----subshell
</pre></blockquote>
<blockQuote>
This is also known as forking -- i.e. where the process breaks off from
the main caller, to form another.
</blockQuote>
<blockQuote>
<TT>"exec()</TT>"'ing a process however, means that the currently running process
is replaced by the program that is to be exec'ed. Thus unlike above
where-by the subshell ran under a new instance, the following script
exec's itself:
</blockQuote>
<p align="center">See attached <tt><a href="misc/tag/exec-anything.bash.txt">exec-anything.bash.txt</a></tt></p>
<blockQuote>
What this is doing is it will echo the first two lines, sleep for a second
and then re-spawn itself. What you'll see is the same message above. The
echo line will NEVER show, because it is after the program ($0 denotes the
program's name) that is being (re)exec'ed.
</blockQuote>
<P><STRONG>
<IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
My question is how are invoking a program in a <TT> subshell()</TT> and
invoking it in a seperate shell different, as regards fork & exec. I am asking
this as the environment inherited by both is different. I started thinking
of this really because I remembered reading somewhere sometime that invoking
it in () is more efficient than in a seperate shell. But as far as I can see,
both processes should need fork and exec.
</STRONG></P>
<P><STRONG>
Only difference is in (), both the
local and global environment variables are initialised, and in a seperate shell,
only global environment variables are initialised. By that logic actually, the
seperate process should be more efficient than the one in ()!
</STRONG></P>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Thomas]
Those variables that are exported are "global" anyway, so you don't need
to describe them in this way.
</blockQuote>
<blockQuote>
It depends. A subshell can be efficient if you want to ensure that a task
running under another shell script is carried out to completion before the
next one is executed (a good example of this would be tarring files over
ssh on a pipe).
</blockQuote>
<blockQuote>
Of course, invoking a subshell program means that if the parent dies or is
kill -9'ed, whatever, then the child process is also killed along with it.
That is something you might want to consider.
</blockQuote>
<blockQuote>
Normally, when you write a shell script, and you want to end the script
by calling another one then you would "exec" the program name, since
there is no need for the shell process to <TT> fork()</TT>.
</blockQuote>
<blockQuote>
If you need two independant processes to communicate concurrently then
using a <TT> fork()</TT> would be best.
</blockQuote>
<P><STRONG>
<IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
Hello Thomas/Answer Gang,
</STRONG></P>
<P><STRONG>
Thanks for the patient unravelling of the intricacies!
</STRONG></P>
<P><STRONG>
With Warm Regards
-Nimish.
</STRONG></P>
<!-- end 1 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<A NAME="tag.2"><HR WIDTH="75%" ALIGN="center"></A>
<!-- begin 2 -->
<H3 align="left"><img src="../gx/dennis/qbubble.gif"
height="50" width="60" alt="(?) " border="0"
>force unmounting of CDROM</H3>
<p><strong>From Chady Kassouf
</strong></p>
<p></strong></p>
<p align="right"><strong>Answered By: Thomas Adam, Mike Martin, Karl-Heinz Herrmann
</strong></p>
<P><STRONG>
<IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
Hello Answer Gang,
</STRONG></P>
<P><STRONG>
I backed up most of my files on CD-Rs that later on appeared to be of very
low quality, now none of my CD-ROM of CD-Writer drives manage to read from
them, but that's not where the problem is.
</STRONG></P>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Thomas]
As long as you have (hopefully) learnt from the exercise, that's all the
matters
<IMG SRC="../gx/dennis/smily.gif" ALT=":)"
height="24" width="20" align="middle">
</blockQuote>
<P><STRONG>
<IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
The fact that mounting a CDROM in linux locks the drive is making a problem
with these CDs.
</STRONG></P>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Thomas]
How so? The whole idea of locking the drive is to do with the way the
mount command works.
</blockQuote>
<P><STRONG>
<IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
OK, the CDs are bad, there's no way to read them, but there's the problem of
not being able to unmount them, linux will just keep on trying to chew on
the bad CD, and killing `cp' will not make it give up. `umount' will either
hang forever waiting for system to finish reading from the drive, or it will
return but the drive will not be released. same thing will happen with
`eject'
</STRONG></P>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Thomas]
If you're trying to umount a <TT>/cdrom</TT> that is currently being read/write to,
then what you should do is:
</blockQuote>
<blockquote><pre>ps waxf
</pre></blockquote>
<blockQuote>
to see the upper program that is being called below "mount <TT>/cdrom</TT>", and
do:
</blockQuote>
<blockquote><pre>kill -9 $(pidof <program_name>)
</pre></blockquote>
<blockQuote>
(rude, I know). Then you'll be able to do:
</blockQuote>
<blockquote><pre>umount /cdrom
</pre></blockquote>
<P><STRONG>
<IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
I'm using RedHat 7.3, and the guilty drives are a TEAC 40X CDROM and an HP
8200Plus CD-Writer.
</STRONG></P>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Thomas]
What you're describing here is not really a problem with the hardware per
se but merely a gripe with the way the kernel and mount mounts a cdrom
drive. Locking the drive is there to prevent the FS from screwing up, and
allowing a clean change of disks via umount.
</blockQuote>
<P><STRONG>
<IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
It's good to note that while rebooting the machine, init will try to unmount
the filesystems but will fail on the drive that's stuck trying to read,
`umount2' will kick in and retry for three times before finally giving up
and letting the reboot continue.
</STRONG></P>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Thomas]
Umounting drives is done for a reason. I suspect the reason why you cannot
unmount <TT>/cdrom</TT> is due to Zombie processes clogging up your kernel buffer,
and the kernel doesn't realised that these have effectively stopped.
Usually, I have found in situations like this that a lengthy wait of 30
mins or so, does allow the kernel time to flush itself, and the locked
drive is then accessible via an 'eject'.
</blockQuote>
<blockquote><pre>fuser mount /cdrom
</pre></blockquote>
<blockQuote>
will also help you ascertain this information, as well as the classic:
</blockQuote>
<blockquote><pre>ps wax
</pre></blockquote>
<P><STRONG>
<IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
My question is twofold; first, is there a way to tell linux to give up
reading and force unmounting a CDROM drive without having to use the safety
pin and, hence, lose access to the drive, OR reboot he machine?
</STRONG></P>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Thomas]
Yes, there is. I have done this on some severe occassions. The first thing
I would try is to:
</blockQuote>
<blockquote><pre>umount -f /cdrom
</pre></blockquote>
<blockQuote>
The "-f" flag says to mount to force umounting of it. If that does not
work, then edit "<TT>/etc/mtab</TT>" and remove the entry pertaining to your cdrom
drive. In case you are wondering, "<TT>/etc/fstab</TT>" holds information about
drives that <EM>can</EM> and <EM>might be</EM> mounted, and "<TT>/etc/mtab</TT>" is there as a
state file for those drives that <EM>are</EM> currently mounted. Editing the file
in this instance is perhaps a good idea.
</blockQuote>
<blockQuote>
If you find that this is happening to you on each and <EM>every</EM> mount, try
doing something like:
</blockQuote>
<blockquote><pre>mount -n /cdrom
</pre></blockquote>
<blockQuote>
which will tell mount NOT to write to <TT>/etc/mtab.</TT> Typically I have used
this on drives whereby "<TT>/</TT>" has been mounted ro, but I cannot see why it
wont work here.
</blockQuote>
<P><STRONG>
<IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
Second, anyone happened to have a similar situation? or might that be a
hardware problem?
</STRONG></P>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Thomas]
Reading my answer here will not doubt confirm that I have had experience
in this sort of thing. I doubt this is hardware related, but it could be.
I would need to know more information about which aspects of your cdrw
work/don't work in order to help you further.
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [K.-H.]
Better use some of the suggestions by Thomas but it seems cdrecord
does not care for the "lock" state of a CD. If you issue:
</blockQuote>
<blockquote><pre>cdrecord -eject
</pre></blockquote>
<blockQuote>
it will simply eject the CD -- regardless if it's locked or mounted. In the
best case the kernel recognises the media is gone and the errors given back
to "cp" causes all concerned processes to stop. Then a umount should also be
possible. Worst case you get a kernel panic for a "damaged" filesystem on the
now nonexistant CD (didn't happen here, mostly it's recovering gracefully).
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [MikeM]
final issue could be a process called fam locking the drive -
sometimes if you kill fam, you can then umount the drive.
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Thomas]
Indeed, Mike. I had considered this, but then I realised that FAM isn't
always loaded on some machines.
</blockQuote>
<blockQuote>
FAM (File Alteration Monitor), is also debian package and an absolute cow
to compile. It is not distro specific, no. It is used to monitor
directory/file changes, so I can see how it <EM>might</EM> be used in this
instance but it is unlikely.
</blockQuote>
<font color="red"><blockquote><em>The querent reported back....
-- Thomas Adam</em></blockquote></font>
<P><STRONG>
<IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
I tried all the options presented by the kind people in this list, the only
one that worked though was the cdrecord -eject although it took
about 3 minutes to succeed.
Thanx for K.H for the solution.
</STRONG></P>
<P><STRONG>
I was able to capture the error that was printed out after a file copy in
<A HREF="http://www.kde.org/">KDE</A> started to choke:
</STRONG></P>
<pre><strong>scsi0: ERROR on channel 0, id 0, lun 0, CDB: Request Sense 00 00 00 40 00
Info fld=0x1a4f7, Current sd0b:00: sense key Medium Error
Additional sense indicates No seek complete
I/O error: dev 0b:00, sector 431068
</strong></pre>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [K.-H.]
read error from the CD, "Medium error" as you already assumed in your
original mail. Probably nothing to save anymore. I too had some CD's which
came through the file comparison right after burning. Some time later they
gave me plenty of read errors. In my case the read attempts at some point
broke off but as I tried to get as much data back as possible I made
the reading process to try harder.
</blockQuote>
<!-- end 2 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<A NAME="tag.3"><HR WIDTH="75%" ALIGN="center"></A>
<!-- begin 3 -->
<H3 align="left"><img src="../gx/dennis/qbubble.gif"
height="50" width="60" alt="(?) " border="0"
>IP config files on Red Hat 9</H3>
<p><strong>From - E J -
</strong></p>
<p></strong></p>
<p align="right"><strong>Answered By: Mike Martin, Jay R. Ashworth, Jim Dennis, David Mandala, Kapil Hari
Paranjape, Ben Okopnik, Thomas Adam
</strong></p>
<P><STRONG>
Please note I am trying to configure IP on a <A HREF="http://www.redhat.com/">Red Hat</A> 9
system. I would like to see about changing from the
default DHCP configuration to a STATIC configuration.
</STRONG></P>
<P><STRONG>
I have tried a couple of things only to trash a test
system, in one case I got the system up - but X no
longer worked.
</STRONG></P>
<P><STRONG>
I know the hostname is saved in
/etc/sysconfig/network.
</STRONG></P>
<P><STRONG>
What are the other files necessary to changing the
configuration?
</STRONG></P>
<P><STRONG>
Thanks in Advance.
</STRONG></P>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [MikeM]
first of all, for any problem try to do it manually so
</blockQuote>
<blockQuote>
once logged in (as root) do
</blockQuote>
<blockQuote>
ifdown eth0
ifconfig eth0 address <your ip address>
then if you access a router directly do
route add gw <name of your default gateway>
</blockQuote>
<blockQuote>
If this works add to <TT>/etc/hosts</TT> a line
<your hostname (machie name)> <your machines IP address>
</blockQuote>
<blockQuote>
also this may be useful
</blockQuote>
<blockQuote>
<A HREF="http://www.faqs.org/docs/linux_network"
>http://www.faqs.org/docs/linux_network</A>
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [jra]
But don't worry about that.
</blockQuote>
<blockQuote>
Use the RedHat program netconfig, which has a button for DHCP. Turn it off,
and fill in the blanks.
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Breen]
That'll work, Jay. If EJ wants to know what's going on behind the
curtain, the documentation is in
</blockQuote>
<blockQuote>
/usr/share/doc/initscripts-<version>/sysconfig.txt
</blockQuote>
<HR width="10%" align="left">
<blockquote><em><font color="#000066">The subject of this thread then changes....
-- Heather</font></em></blockquote>
<P><STRONG>
<IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Breen]
/usr/share/doc/initscripts-<version>/sysconfig.txt
</STRONG></P>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [JimD]
I felt stupid reading that, too. I've complained for years at the lack
of documentation for those. Sometimes I just read through the rc
scripts that source the <TT>/etc/sysconfig</TT> files to figure how which names
they want to use. Sometimes I just run the silly GUI config tool
(when I can remember which name it goes by in which versions of Red
Hat). I had never found this particular file.
</blockQuote>
<blockQuote>
I still think it's a bug. Red Hat should include a set of comments in
each <TT>/etc/sysconfig</TT> file that list all of the valid variable names and
show examples of the valid values.
</blockQuote>
<blockQuote>
Now that the "Red Hat Distribution" is a "community maintained project"
rather than a shrink wrapped product ... heck with it; I'll still
recommend that advanced Linux users switch to <A HREF="http://www.debian.org/">Debian</A> and that
businesses pressure Oracle and other ISVs to support Debian.
</blockQuote>
<blockQuote>
I think the "Red Hat community project" should set a goal for itself --
to provide a transition to Debian over the next several releases. They
can write rpm command wrappers around apt-get/dpkg, add or help Debian
add the -V and -K (verification and GnuPG key package signing) features
to the .deb package format and the <TT>/var/lib/dpkg</TT> "database"), etc.
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [DavidM]
Gack, I hope that never happens, I dislike Debian intensely. I use it on
some of my servers and I grate my teeth every time I need to do
something with it. Debian needs a lot more then just a rpm wrapper. I'll
try not to start a religious war here and simply say you stick with
Debian and I'll stick with Red Hat and I hope they get more compatible
but I hope that happens by Debian getting closer to Red Hat and not the
reverse (except apt-get, that is quite nice).
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Ben]
Yeeew. I sure hope that never happens either. I really hate the "papa
knows best, just watch the blinkenlights" approach of RedHat, and money
is what it takes to get me to play with it these days.
<IMG SRC="../gx/dennis/smily.gif" ALT=":)"
height="24" width="20" align="middle">
</blockQuote>
<blockQuote>
Fortunately, none of this is an issue since we <em> _do</em> have both of these
distros plus a whole lot of others, which seems to satisfy a broad range
of us picky techie types (say <em> _that</em> 3 times fast with a mouth full of
marbles, and your dental problems will be a thing of the past.)
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [JimD]
In other words, I think a convergence is in order. Let's have both
major "community projects" try to consolidate (improving both).
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [DavidM]
I strongly disagree here. The beauty of Linux and the various projects
is there is no "one true way" and those who like it different can have
it that way. Otherwise you are just like Microsoft and Apple each having
a single "true way".
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [JimD]
I have similar opinions on gentoo; why create a new distibution when
they could have poured that energy into creating a Debian build system
that could build your entire distribution from sources, with locally
defined optimization and other flags). (BTW: the argument that this
results in significant performance gains seems to have been somewhat
refuted:
</blockQuote>
<blockquote><pre> http://articles.linmagau.org/modules.php?op=modload&name=Sections&file=index&req=viewarticle&artid=227
</pre></blockquote>
<blockQuote>
... though it's possible that this test was flawed.
</blockQuote>
<blockQuote>
(That said I've been thinking of installing gentoo on a machine just
to see what it's like).
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [JimD]
I knew my statement was likely to rankle. However, without it
degenerating into a religous war, what specific things do you dislike
about debian? <TT>/etc/sysconfig/network-scripts/ifcfg-*</TT> versus
<TT>/etc/network/interfaces?</TT> The installer? Lack of Kickstart? The
dpkg commant? dpkg-reconfigure or dpkg-repack? The fact that many
packages ask configuration questions during pre-install or
post-install? The fact that you can't tell the package manager to
exclude the docs during installation?
</blockQuote>
<blockQuote>
I want to know because I'd like to see Debian make the necessary
changes or options available to make Red Hat users happier.
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [DavidM]
This is important in the business world where you need 50 machines
exactly the same, not close but exactly the same. Also unless you make
your own Debian depository the changes in the Debian tree make it all
but impossible to do this if you are installing machines over the course
of several months.
</blockQuote>
<blockQuote>
Another irritant is that Debian package
maintainers patch the packages to run in funny places and have odd
patches on them. We were running SAMBA on one machine and we were having
a major problem that we could not explain. As luck would have it I was
able to get tridge to take a look and even he was mystified for several
hours. As it turned out the package maintainer had really messed up the
package. There is not enough testing done on the edge cases by the
Debian developers, so either leave the source alone or truly understand
it and test all possible uses of the package which in the case of SAMBA
is impossible, the SAMBA developers have spent a huge amount of time
getting donated machines available to be able to test the edge cases,
there is no way a Debian developer is going to have access to the same
resources that the SAMBA developers have.
</blockQuote>
<blockQuote>
At tridge's advice and this is advice I've been given many times from
others as well. "Use Debian as a base install but for packages you
really care about make your own from source as you never quite know what
they've done to them." The problem with this of course is if I can't
trust what I'm installing then why am I installing it at all?
</blockQuote>
<blockQuote>
Followed by the fact that stable is most always too old thus forcing me
to use testing which gets broken at times.
</blockQuote>
<font color="#660000"><blockquote><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Thomas] Odd. I agree that sometimes, stable can have packages that are a little
to out of date, but then that won't stop you from doing a "dist-upgrade"
at any point. And as for "testing" being a little too unstable, I am
going to have to refute that and ask for you to give an example.
</blockquote>
<blockquote>While the Debain BTS (Bug tracking System): <A HREF="http://bugs.debian.org"
>http://bugs.debian.org</A> does
a good job at fixing loose ends in Sarge, many of the problems that I have
seen people encounter is compilation of programs. I have been running
Sarge (Debian testing) for ages now with absolutely no problems
whatsoever.
</blockquote>
<blockquote>I'm therefore going to guess that David was meaning to say the
"Unstable" causes problems.
</blockquote></font>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [DavidM]
I don't think it's possible for Debian developers to make Red Hat users
happier, they like to do things their way and the hell with the rest of
the folks. An example, change the init levels to match Red Hats, make
init 3 the normal run level sans X and level 5 with X. Virtually every
other Linux distro is the same as Red Hat very very few are different.
But as a business software developer I need to know that if my package
it to be installed on both Red Hat and Debian I need to install my
startup scripts in different run levels or bad things happen. That is
silly.
</blockQuote>
<blockQuote>
I agree that one does need to minimize <EM>gratuitous</EM> differences so
tackle the run level differences first, if you can get that changed
(which I strongly doubt) perhaps there is a possibility that Debian can
become a stronger player in the Corporate market place. What I think you
will get is many reasons why Debian is correct but that is irrelevant,
it's not about being technically correct it's about minimizing
<EM>gratuitous</EM> differences, and I don't think it's possible for the Debian
community to change.
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [JimD]
Well "funny places" is the main sort of gratuitous change I also object
too. FHS was supposed to reduce this (and probably has, somewhat).
</blockQuote>
<blockQuote>
We could argue that Red Hat and <A HREF="http://www.suse.com/">SuSE</A> put their stuff in "funny"
places; then we could both reach for copies of the FHS to bolster
our arguments.
</blockQuote>
<blockQuote>
I agree about the runlevels and the way the run xdm as an rc script
rather than in inittab. Those are gratuitous and Debian should bow
to the more widespread convention in both cases.
</blockQuote>
<blockQuote>
As for the Samba anecdote: so what. Red Hat applies over a 100 patches
to their kernels and they apply patches to many packages, including
core packages like Samba. We could exchange package maintainer horror
stories for hours. <EM>Usually</EM> the Debian packaging is better than
Red Hat packaging. Debian has a published policy that is derived from
the consensus of it's maintainers/developers. There are ongoing
discussions on how to change that policy. Maintainers that don't
conform to the policy see NMUs (non-maintainer uploads) of their
packages and are eventually replaced by new maintainers.
</blockQuote>
<blockQuote>
Of course it's possible for them to change. It is easier for us to
change Debian than it would be for us to change Red Hat Inc.
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [DavidM]
Jim, here again we differ, I feel it's easier to change Red Hat all it
takes is cash, nothing more nothing less. Changing Debian is akin to
herding cats you have to get a large portion of the entire development
community into agreement which is damned hard if not impossible to do.
You need to join them in overwhelming force in order to out vote them on
policy. Any single person is doomed to failure, it was designed that way
and it works quite well. Debian is a hackers play land, it was designed
to be that and that it will stay, the bylaws they live by are
specifically designed to keep it that way and human inertia and apathy
will tend to keep it that way.
</blockQuote>
<blockQuote>
How long did it take to fix the networking init script that would only
start networking and not stop or reset it take? More then 3 years by my
count, if you can't fix something like a simple init script how you
expect to fix a fundamental difference in philosophy?
</blockQuote>
<font color="#660000"><blockquote><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Thomas] That's not quite the point. It is my belief that Debian is very much a
"hands-on" distribution -- that allows one to get one's hands dirty. If
you thought that there was a problem, you should have submitted a patch
<IMG SRC="../gx/dennis/smily.gif" ALT=":)"
height="24" width="20" align="middle">
</blockquote></font>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [JimD]
To effectively change Red Hat Inc. we have to either buy them, or
represent a large enough portion of their revenues that they'll listen.
To change Debian all we have to do is join them, work on the project and
explain our reasons for recommending the change.
</blockQuote>
<blockQuote>
My problem with the Red Hat "distribution" is that it's been
essentially abandoned by Red Hat Inc. Now, the community will maintain
it; RH Inc. will take parts that they like and fold them into their
proprietary AS/ES products. However, RH will also make changes that
may make AS/ES diverge somewhat from the RH distro.
</blockQuote>
<blockQuote>
My comments are mostly intended to discourage people from create
<EM>yet another</EM> distro for broad consumer use.
</blockQuote>
<blockQuote>
I'm not saying everyone should just abandon the RH distro -- just
try to transition <EM>some</EM> parts to the Debian base (where that makes
sense) <EM>and</EM> to join Debian in sufficient numbers and quality to effect
changes there.
</blockQuote>
<blockQuote>
Notice that I'm mostly a proponent of changing Debian in many of the
specifics. The one thing that I would push on the other distros
is the use of the same package/dependency infrastructure and
granularity. I'm not talking about the commands used to manipulate
the packages (apt-get, dpkg, aptitude, rpm, etc) --- I personally
would prefer to see a command named 'pkg' taking arguments somewhat
like the rpm command (except for that idiocy of -U being "upgrade"
<EM>and</EM> install thus necessitating the odd -F --freshen switch to mean
just "upgrade"). The difference would be that pkg -i foo would
look at your local policy file (<TT>/etc/apt/sources.list</TT>) and know how
to fetch the foo from your preferred location or media.
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [DavidM]
That is not the only problem, as far as I can tell, when a package
changes (is updated) there is no history, the old package is removed and
the new inserted replacing it. I could be wrong but the gents I used at
my last place were dedicated Debian devotees and they could not find
where "outdated" packages were stored. Thus if a package was "updated"
you were screwed and could not make an identical from that point forward
unless you went to the extreme of maintaining your own Debian
depository.
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [JimD]
If it happens at all I expect it to take several years and releases
of each of the two distributions. We've already seen lots of people
implementing apt on RPM based distributions. The problem with that
superficial approach is that the underlying granularity and dependency
cycle problems remain. The real value of Debian in in that
acyclic dependency tree.
</blockQuote>
<HR width="10%" align="left"><blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Kapil]
Joining the distro wars once more ...
</blockQuote>
<blockQuote>
Just some random points.
</blockQuote>
<blockQuote>
1. While Kickstart is a great idea, systemimager is not a bad
replacement. For the more hardcore debian-ers, Kickstart seems too
complicated when compared with "dpkg --get-selections" in combination with
"dpkg --set-selections".
</blockQuote>
<font color="#660000"><blockquote><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Thomas] I have to agree here. I have used RH's kickstart one when I first setup
my little 386 server. It was a pain to begin with.
</blockquote></font>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Kapil]
2. When comparing "rpm" with "dpkg" (or deb) what is lacking in dpkg is
the automated signature/md5sum checking. On the other hand try to unpack
an "rpm" on a non-RedHat machine...not all that automatic (you need to
install "alien"). To unpack a "deb"...you will (most likely) find "ar" on
any machine and so can unpack deb's quite easily.
</blockQuote>
<font color="#660000"><blockquote><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Thomas] I have to disagree slightly here. If one does not care for the "install"
script that is inherent in either a .deb or .rpm (depending on which
distro it is) then using "mc" is an efficient alternative to view the
package in question and manually copy the files across to the specific
directories. I don't recommend this for hugely dependent packages, but
it is an effective means for smaller packages, where there are no
dependencies
</blockquote></font>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Kapil]
3. I don't dislike RedHat as intensely as David seems to dislike Debian!
However, the choice was made for me by RedHat when they decided to exclude
text-mode tools for installation and management. Even "dselect" is
better than nothing except "rpm". I used "purp" on RedHat systems for
a while but it was always in "contrib" and often out-of-date.
</blockQuote>
<font color="#660000"><blockquote><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Thomas] Using "dselect" under Debian is NOT a good idea -- it is extremely
clunky, not to mention it has a terrible UI. I would always recommend
people to use "aptitude"; both as a replacement for "dselect" AND
"apt-get". It functions as both dselect (without any arguments) and as
apt-get on invocation. It also handles dependencies and logging much
better, in my opinion.
</blockquote></font>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Kapil]
4. Re: xdm. I think all daemons were "meant to be" started from rc scripts
so in fact the RedHat policy of starting "xdm" from inittab is strange.
For example, in the old days it was possible for the console user
to somehow "kill" the xdm/gdm/kdm on RedHat (possibly by killing the
X server or something) causing all external Xterminal users to be
logged out!
</blockQuote>
<font color="#660000"><blockquote><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Thomas] Exactly! I have had this very gripe with RH and even tried e-mailing
them to ask them why they did not move xdm et al to rc scripts. They
never did reply to me. As Kapil notes, if something goes wrong with xdm
then it can be of consequences to other processes.
</blockquote></font>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Kapil]
5. Finally, about building things from source. To some extent I agree. It
would be nice if we had the following set-up:
</blockQuote>
<blockQuote><BLOCKQuote>
A. All the system administrator had to do to was install a base system.
</BLOCKQuote></blockQuote>
<blockQuote>
B. Most utility/application packages could be installed
by <EM>users</EM> in (say) <TT>/opt/username/packagename/{bin</TT>,lib,...}.
</blockQuote>
<font color="#660000"><blockquote><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Thomas] I disagree with this suggestion. Instead installing applications to
$HOME is still an acceptable solution as $PATH usually includes
$HOME/bin anyhow.
</blockquote></font>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Kapil]
C. There would be a user-level package management system that would
allow users to mix and match their requirements by creating symlink
farms in <TT>/home/username/{bin</TT>,lib,...} that point to different packages
under <TT>/opt</TT> possibly installed by different users.
</blockQuote>
<font color="#660000"><blockquote><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Thomas] Hmmm, installing applications system-wide and then allowing users to
have custom settings in $HOME is no more different than the
suggestion above.
</blockquote></font>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Kapil]
This way, those users who need "cutting edge" or even "bleeding edge"
tools could install them. The system could remain "stable" and
(hopefully) "secure". Such a setup may even be useful on single-user
systems as the user could play with upgrades without messing up the
running system. Disk space is not really an issue any more unless you
use "<A HREF="http://www.kde.org/">KDE</A>" or "Gnome" or "Openoffice"
<IMG SRC="../gx/dennis/smily.gif" ALT=":-)"
height="24" width="20" align="middle">
</blockQuote>
<!-- end 3 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<A NAME="tag.4"><HR WIDTH="75%" ALIGN="center"></A>
<!-- begin 4 -->
<H3 align="left"><img src="../gx/dennis/qbubble.gif"
height="50" width="60" alt="(?) " border="0"
>a linux solution for the office</H3>
<p><strong>From amitava maity
</strong></p>
<p></strong></p>
<p align="right"><strong>Answered By: Ben Okopnik, Kapil Hari Paranjape, Heather Stern, Thomas Adam
</strong></p>
<P><STRONG>
Hello all!
</STRONG></P>
<P><STRONG>
We have three Windows machines at our office. These are shared by 10 to
12 persons. I am trying to find out if one of these machines could be
converted into a Linux box. Hopefully this Linux box can then be
configured to meet the demands of 8 terminals connected via serial
cables and an appropriate 8 terminal serial adaptor.GUI is necessary at
all the terminals. Is this a feasible configuration? Can a Pentium-II,
233MHz machine with an IDE hard disk be used for this purpose?
</STRONG></P>
<P><STRONG>
Linux Gazette, you are doing a great job.
</STRONG></P>
<P><STRONG>
A Maity.
</STRONG></P>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Ben]
Take a look at the Linux Terminal Server Project <<A HREF="http://ltsp.org/>"
>http://ltsp.org/></A>;. It
sounds like they'll fit your needs just fine.
</blockQuote>
<P><STRONG>
<IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
Is this a feasible configuration?
</STRONG></P>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Kapil]
There are two possible configurations:
</blockQuote>
<blockQuote><ol>
<LI>A server with a multi-port serial adapter which is connected via
<LI>A server connected to an ethernet hub to which GUI terminals (such
</ol></blockQuote>
<blockQuote>
In modern times, (2) is the way to go unless you already have the full
infrastructure of (1). (Where will you find vt100 terminals nowadays?).
</blockQuote>
<blockQuote>
If you are going to buy some PC's you can anyway buy them with ethernet
cards built-in and a small 16-port ethernet hub. In fact, you can buy
"thin clients" if you use a server---in particular, you can save on
disk costs.
</blockQuote>
<blockQuote>
I would suggest that you do not buy 8 vt100 terminals! This is not
cost effective nowadays. Second-hand vt100 terminals are likely to be a
hardware headache (since it would appear from your message that you are
not a seasoned sysadmin of the unix days) and (more importantly) will
not satisfy those of your users who are used to the colorful graphical
interface of Windows.
</blockQuote>
<blockQuote>
Instead, you can "share" the use of the GNU/Linux machine as you have
been sharing the use of the Windows machines---in fact this is a more
shareable system!
</blockQuote>
<blockQuote>
Advantages over your existing configuration:
</blockQuote>
<blockQuote><ol>
<LI>Users will be able to customize their desktop without interfering
<LI>Users will be able to run jobs that can run unattended in the
<LI>You can find and use a lot of useful software without attracting
<LI>When you get some funds you can add some more Linux machines very
</ol></blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Heather]
Probably, esp. if you use something a bit on the lightweight side for
basic window management details (such as fvwm instead of more weighty
desktops, abiword with gnumeric instead of staroffice, etc.)
</blockQuote>
<font color="#660000"><blockquote><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Thomas] Siag office (<A HREF="http://www.siag.org"
>http://www.siag.org</A>) isn't too bad.
</blockquote></font>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Heather]
Ben's right, LTSP is a good place to look. If these "terminals" are
PCs but you'd reather they stay hard-diskless, consider keeping them
having CD bays and run knoppix (a live CD distro). Or maybe another
liveCD distro (for instance <A HREF="http://www.suse.com/">SuSE</A> has a free one) but I'm advised, most
of them ask a few sysadminly questions during bootup, and Knoppix doesn't.
</blockQuote>
<P><STRONG>
<IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
Linux Gazette, you are doing a great job.
A Maity.
</STRONG></P>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Heather]
Thanks, we love to hear that sort of thing!
</blockQuote>
<!-- end 4 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<A NAME="tag.5"><HR WIDTH="75%" ALIGN="center"></A>
<!-- begin 5 -->
<H3 align="left"><img src="../gx/dennis/qbubble.gif"
height="50" width="60" alt="(?) " border="0"
>Simple DNS solution with Red Hat 9</H3>
<p><strong>From - E J -
</strong></p>
<p></strong></p>
<p align="right"><strong>Answered By: Faber Fedor, Kapil Hari Paranjape, Jim Dennis
</strong></p>
<pre><strong>[root@localhost sbin]# ./ifconfig eth0 address
192.168.1.103
address: Unknown host
ifconfig: `--help' gives usage information.
[root@localhost sbin]#
</strong></pre>
<P><STRONG>
Please note I believe I need a DNS server (solution)
for my home <A HREF="http://www.redhat.com/">Red Hat</A> Network. Is there a simple DNS
solution I can establish?
</STRONG></P>
<P><STRONG>
I have checked some books - this does not seem to be
as simple as editing <TT>/etc/host.conf</TT>
</STRONG></P>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Faber]
Okay, so? You mis-typed a command. I do it all the time.
</blockQuote>
<font color="#660000"><blockquote><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Thomas] Hopefully though, Faber doesn't mis-type too often while as "root"
</blockquote></font>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Faber]
What are you attempting to do? What is "address"? Is it supposed to be
an actual (IP) address? Is it an enviromant variable? What?
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [JimD]
I'm going out on a limb here to guess that this was supposed
to be rendered as:
</blockQuote>
<blockquote><pre>[root@localhost sbin]# ./ifconfig eth0 address 192.168.1.103
address: Unknown host
ifconfig: `--help' gives usage information.
[root@localhost sbin]#
</pre></blockquote>
<blockQuote>
... cut and pasted from a root shell session.
</blockQuote>
<blockQuote>
You wanted to type:
</blockQuote>
<blockquote><pre>[root@localhost sbin]# ./ifconfig eth0 192.168.1.103
</pre></blockquote>
<blockQuote>
... which would seet your eth0 address to 192.168.1.103
That would also implicitly set the netmask to 255.255.255.0 and
the broadcast address to 192.168.1.255. That netmask is the
default for the traditional "Class C" network address blocks
(all of 192.*.*.* among many others). The broadcast address is
then calculated by masking off the high order bit using the netmask
then setting that many bits to "on" (1). Then replacing the bits
at the end original addresses with the broadcast.
</blockQuote>
<blockQuote>
In other words you can often just specify the address without spelling
out the other settings. You only have to specify the others when
you're network isn't following the "Classical" parameters and defaults.
</blockQuote>
<blockQuote>
The problem with your command was that the word "address" was parsed
as the <EM>name</EM> of a host. The ifconfig command then tried to resolve
that name into an IP address (presumably via your <TT>/etc/hosts</TT> file,
then DNS --- though that depends on the settings in your nsswitch.conf)
</blockQuote>
<blockQuote>
Here's a couple of other examples of ifconfig commands:
</blockQuote>
<blockquote><pre># ifconfig eth1 10.0.1.10 netmask 255.255.255.0 broadcast 10.0.1.255 up
# ifconfig eth2 123.45.67.8 netmask 255.255.255.224 broadcast 123.45.67.31
</pre></blockquote>
<blockQuote>
Notice that the address is the one argument that is not prefixed by
a literal/keyword or label. It's usually the first argument, though
it might work even if you don't follow that convention.
</blockQuote>
<blockQuote>
Notice in my last example that we're using a smaller netmask, like
the kind you might get from an ISP that was only giving you a block
of 30 IP addresses. Long ago I wrote and article on "subnetting and
routing" which is still one of the most popular article in LG/TAG
history. I've been told it's used for some college TCP/IP fundamentals
classes.
</blockQuote>
<P><STRONG>
<IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
Please note I believe I need a DNS server (solution)
for my home Red Hat Network. Is there a simple DNS
solution I can establish?
</STRONG></P>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [JimD]
Perhaps you will need a DNS or other directory service (NIS or LDAP).
However, in this case you just needed to look at the error and read
the usage section of the --help and/or man page a little more
carefully.
</blockQuote>
<blockQuote>
It also helps to think about the problem your trying to solve.
You're trying to configure a network interface. DNS and other
directory services need to use that interface (or <EM>some</EM> interface)
in order to resolve names into IP addresses. That would create a
chicken & egg problem if the ifconfig command truly depended on
the name resolution. It would be unreasonable to assume that everyone
has to run a network directory services daemon on localhost --- and
you'd still need it to ifconfig the lo (localhost/loopback) interface.
</blockQuote>
<blockQuote>
(That line of reasoning should alert you to the fact that their
was something wrong with your premise --- that your conclusion was
dubious).
</blockQuote>
<blockQuote>
You almost certainly don't want to play with your <TT>/etc/host.conf</TT>
</blockQuote>
<blockQuote>
However, it could be as simple (in this case) as editing
/etc/hosts
</blockQuote>
<blockQuote>
If you'd put an entry "192.168.1.103 address" as a line in
your etc host file then your command would have <EM>almost</EM> worked.
It would complain about extra arguments --- the lookup/resolution
of the <EM>hostname</EM> "address" would have succeeded (assuming you have
a normal <TT>/etc/nsswitch.conf</TT>).
</blockQuote>
<blockQuote>
If you put more reasonable address/name pairs in <TT>/etc/hosts</TT> and you
securely distribute those (rsync -e ssh) to your other machines
--- you have a working system of host name resolution without DNS
NIS or LDAP.
</blockQuote>
<blockQuote>
<TT>/etc/nsswitch.conf</TT> defines the list of services and methods used by
glibc (C library) functions to resolve names (hostnames, network
names, netgroup, user, group, and service) into numbers (IP addresses,
lists of hosts, UIDs, GIDs, and TCP/UDP port numbers). Almost all of
the programs on your system are dynamically linked against glibc
(a.k.a. just libc). glibc implements resolvers that read
<TT>/etc/nsswitch.conf</TT> and dynamically load <TT>/lib/libnss*</TT> modules as listed.
</blockQuote>
<blockQuote>
Such run-time linkage uses the <TT> dlopen()</TT> interface. There are two
types of dynamic linking in Linux. Link/compile time, such as the
way that almost all programs are linked to libc and many programs are
linked to libm (the C math functions library). These are listed by
the ldd (ld dump --- ld is a non-intuitive mnemonic for "linker").
Run-time linking is done via the <TT> dlopen()</TT> interface. Any time a
program must read a configuration file, command line option or
environment setting, or any other run-time source of information
to determine which modules to load --- it uses <TT> dlopen()</TT> Obviously
this would be true of the NSS modules since any program that uses
any of these name services it has to read <TT>/etc/nsswitch.conf</TT>
to determine which libraries to load (NSS == "name services selection"
or "name services subsystem" or something like that).
</blockQuote>
<blockQuote>
<TT>dlopen()</TT> (run-time dynamic linking) is also used by PAM, for PERL and
Python binary modules, <A HREF="http://www.apache.org/">Apache</A> modules, and XFree86 version 4 and later.
You can think of these as being a way to implement some object oriented
features in normal C programs. The primary uses of these modules are
to extend and/or modularize the functionality of a base binary program.
</blockQuote>
<blockQuote>
Thus you can get a custom authentication module (say one of those
little electronic credit card PIN tokens) and drop it into your system;
add one configuration line and all of the PAM linked programs have been
extended to use this module. All without recompiling anything.
</blockQuote>
<blockQuote>
As another example you can install XFree86, as compiled by your
distribution vendor, and you can install a driver module for your
video card from some third party (perhaps even the manufacturer of
the card).
</blockQuote>
<blockQuote>
I realize I've delved deeply under the hood here --- into details
that you won't understand at first reading (and probably don't
care about).
</blockQuote>
<blockQuote>
My point is that you don't need to run a <EM>network</EM> name service.
Most of the NSS linked programs check local config files <TT>/etc/hosts</TT>,
<TT>/etc/passwd</TT>, <TT>/etc/groups</TT>, <TT>/etc/services</TT>, etc. first. They then check
with other services as listed in the <TT>/etc/nsswitch.conf.</TT> <TT>/etc/host.conf</TT>
is still used, but its usage is somewhat superceded by <TT>/etc/nsswitch.conf.</TT>
</blockQuote>
<blockQuote>
(I'd love to see a good explanation of why we have both nsswitch.conf
and host.conf on modern systems --- something at a higher level than
their respective man pages).
</blockQuote>
<!-- end 5 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<A NAME="tag.6"><HR WIDTH="75%" ALIGN="center"></A>
<!-- begin 6 -->
<H3 align="left"><img src="../gx/dennis/qbubble.gif"
height="50" width="60" alt="(?) " border="0"
>Creating RAMDISK</H3>
<p><strong>From Jose Nathaniel G. Nengasca
</strong></p>
<p></strong></p>
<p align="right"><strong>Answered By: Ben Okopnik, Kapil Hari Paranjape, Thomas Adam
</strong></p>
<P><STRONG>
<IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
Hi there,
</STRONG></P>
<P><STRONG>
I just want to create a RAMDISK of 100MB to use as temporary storage for
squid cache files, I am using redhat 8.0, using grub bootloader, with 750MB
of RAM, the one on linux focus site is rather old (november 1999) howto.
Can someone help me with this?
</STRONG></P>
<P><STRONG>
Respectfully yours,
</STRONG></P>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Kapil]
I think you have something confused here. As I understand it:
</blockQuote>
<blockQuote><BLOCKQuote>
Squid creates an object cache in memory <EM>and</EM> periodically saves
objects to disk when it runs out of space in memory.
</BLOCKQuote></blockQuote>
<blockQuote>
You want to create a virtual (RAM) disk for squid to use as its
disk. Instead why don't you increase the amount of memory
available to its in-memory object cache?
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Ben]
If you have the kernel sources installed, take a look at
"<TT>/usr/src/kernel-source-<version>/Documentation/filesystems/tmpfs</TT>". It's
a memory-based file system, and is created (by root) with "mount".
Here's an example:
</blockQuote>
<p align="center">See attached <tt><a href="misc/tag/ben-fstab.txt">ben-fstab.txt</a></tt></p>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Thomas]
I think Ben has missed the point. Squid doesn't care for the <EM>type</EM> of
RAM being used. Sure, it needs physical RAM, but this is accessed
on-disk by squid's "object cache". It is this that determines how much
RAM is being used (see Kapil's answer above).
</blockQuote>
<blockQuote>
In <TT>/etc/squid.conf</TT> you can adjust this by changing:
</blockQuote>
<blockquote><pre>cache_mem=50MB
</pre></blockquote>
<blockQuote>
to something more appropriate. Don't forget to issue:
</blockQuote>
<blockquote><pre>squid -k reconfigure
</pre></blockquote>
<blockQuote>
once changes have been made to the file.
</blockQuote>
<!-- end 6 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<A NAME="tag.7"><HR WIDTH="75%" ALIGN="center"></A>
<!-- begin 7 -->
<H3 align="left"><img src="../gx/dennis/qbubble.gif"
height="50" width="60" alt="(?) " border="0"
>X server crash when starting up RH9 for the first time</H3>
<p><strong>From Claudiu Spataru
</strong></p>
<p></strong></p>
<p align="right"><strong>Answered By: Mike Martin, Ben Okopnik, Thomas Adam, Heather Stern
</strong></p>
<P><STRONG>
This is a multi-part message in MIME format.
</STRONG></P>
<font color="red"><blockquote><em>This is naughty, please send e-mails in plain-text ONLY.
-- Thomas Adam</em></blockquote></font>
<P><STRONG>
<IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
Hello
</STRONG></P>
<P><STRONG>
My X server crashes with the following error messages (see attached
log).
</STRONG></P>
<P><STRONG>
My system is an Athlon 2500+, GeForce FX 5200 graphic card, A7N8X deluxe
mainboard (not sure how relevant this info is, but added it anyway).
</STRONG></P>
<P><STRONG>
The font server can be stopped and restarted by using '<TT>/etc/init.d/xfs</TT>
start|stop' without any problems. When eliminating the Fontpath line
that points to unix/:7100 from the XF86Config file, it complains about a
different fontpath that it cannot find and crashes once again. (There is
also either no path set to run Xconfigurator or there is no such thing
in my installation of RH9.)
</STRONG></P>
<P><STRONG>
Any known solution to the above problem?
</STRONG></P>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [MikeM]
dont do this - put it back. If you dont use the xfs server then you
need to hardcode the fontpath into <TT>/etc/X11/XF86Config</TT>
</blockQuote>
<blockQuote>
X wont start without xfs running, when X fails to start, is xfs
running?
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Ben]
That's inaccurate. Either a font server <em> _or</em> a hard-coded font set is
sufficient, and there's no advantage that I know of to a server if
you're not doing X over a network. My system has run without "xfs" for
years now.
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [MikeM]
I know this is generally true, however the querent is using <A HREF="http://www.redhat.com/">Red Hat</A> 9
</blockQuote>
<blockQuote>
Red Hat does a fair bit with the font server, including dealing with
easy adding of fonts, TTF fonts etc.
</blockQuote>
<font color="#660000"><blockquote><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Thomas] That's inaccurate -- TrueType fonts are handled by the xtt
server, NOT by xfs itself. There are two different servers. I still fail
to see how RH find running another process to handle fonts an
<EM>advantage</EM>
</blockquote></font>
<font color="#000066"><blockquote><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Heather] Smaller part to kick if it needs a restart? But within X this is often
false economy, yanking live font servers is rather like pulling the rug
out from under you. It can be done - I've done it (read the 'xset' man
page if you're crazy enough to mess with this) - but I think the
split is a holdover from an earlier time (only a year or two ago) when
the X server did not speak Truetype on its own. You needed an external
fontserver for it, and that was usually xfs patched for freetype access
(the way I did it) but there was a competitor from the asian countries,
who had a real need for readable letters.
</blockquote></font>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [MikeM]
So to avoid other problems/questions IMHO, it is safe to say that the
querent is better off using the installed font server. (ie: dont add
unnecesary complications), especially as it sounds like it is actually
working.
</blockQuote>
<font color="#660000"><blockquote><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Thomas] I disagree with this -- X11 and fonts is rarely, if at all, distro
specific. Just because RH uses a font server initially, doesn't mean to
say that you have to continue using it. That is one of the ideals of
Linux -- it is <EM>your</EM> OS. Do whatever you like
<IMG SRC="../gx/dennis/smily.gif" ALT=":)"
height="24" width="20" align="middle">
</blockquote></font>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [MikeM]
just did a quick google - its possible that the card is not recognised
properly
</blockQuote>
<blockQuote>
so try this (as root)
</blockQuote>
<blockQuote>
edit the file <TT>/etc/X11/XF86Config</TT>
look for the device section eg:
</blockQuote>
<blockquote><pre>Section "Device"
Identifier "Videocard0"
Driver "nv"
VendorName "Videocard vendor"
BoardName "NVIDIA GeForce 4 (generic)"
BUSID "PCI:1:0:0"
EndSection
</pre></blockquote>
<blockQuote>
and experiment changing the Driver entry to vesa or nv, depending what
is there already
</blockQuote>
<P><STRONG>
<IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
Thank you very much for the replies! It was indeed the fact that my graphic
card did not get recognized properly and the generic vesa driver did not
work in my case.
After changing the values for 'BoardName' and 'Driver' as per Mike's
suggestion, I was able to start X Windows.
</STRONG></P>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [MikeM]
Generic X error problem solving
</blockQuote>
<blockQuote>
There are a few very common reasons for X not starting
</blockQuote>
<blockQuote>
1. Not enough disk space in <TT>/</TT> or <TT>/var</TT>
</blockQuote>
<font color="#660000"><blockquote><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Thomas] If this is the case, then I doubt one would be able to login anyhow,
since /var/log/wtmp would have to be written to so that the "last(1)"
command can keep a log of who has logged in.
</blockquote></font>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [MikeM]
2. Font server not starting (can be caused by 1.)
</blockQuote>
<font color="#000066"><blockquote><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Heather] More accurately, "fixed" or some font needed by your window manager
isn't available, so the session manager dies -- taking X with it.
</blockquote>
<blockquote>This may be a dead font server, or some other buggy FontPath.
</blockquote></font>
<font color="#660000"><blockquote><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Thomas] RedHat like to use xfs/xfs-xtt to issue fonts. The truth is that a font
server is NOT necessary, no matter which distribution one uses. The only
time I can think when you might want to use it is when one is having to
share fonts over the network.
</blockquote>
<blockquote>In anycase, if the font server fails to load, the default fonts listed
in /etc/XF86Config (under other distros: /etc/X11/XF86Config-4) are used
as the "fallback".
</blockquote></font>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [MikeM]
3. Mouse not being initialised
</blockQuote>
<font color="#000066"><blockquote><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Heather] This is actually quite rare, much more common is it being <EM>incorrectly</EM>
initialized, due to incorrect protocol being specified for the input
device -- which will get you into X, but with a mouse that doesn't move,
or does something crazy as soon as you touch it, like race to one edge
of the screen and flutter there like a trapped moth.
</blockquote></font>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [MikeM]
4. If you use the Nvidia binary module, the kernel module not being
loaded.
</blockQuote>
<font color="#000066"><blockquote><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Heather] i810s and other "memory sharing with CPU" video cards can have this
problem too. It may also matter to embedded designers. In short if you
can't see the video without kernel help - it needs to be loaded.
</blockquote></font>
<blockQuote>
5. Generic error "No screens", often a problem with the video driver.
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Thomas]
Yes, either that or the <EM>wrong</EM> video driver has been selected. In that
instance, a new one should be chosen. Under <A HREF="http://www.debian.org/">Debian</A>, the fix for that
would be to run:
</blockQuote>
<blockquote><pre>dpkg-reconfigure xserver-xfree86
</pre></blockquote>
<blockQuote>
Commonly, the "no screens" error can also be caused by FrameBuffer
options turned on. If one comments these out, the problem may also go
away.
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [MikeM]
points 3,4 and 5 will show an error in the X error log (or on the
terminal that starts X)
</blockQuote>
<font color="#660000"><blockquote><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Thomas] They'll only show a message assuming point 1 above is false, otherwise,
how is it to write to the log file?
</blockquote></font>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Heather]
It will show the same message on the controlling terminal, if you launch
X as a command at a shell prompt instead of allowing anything automatic
to try it. And while we're at it, <EM>disable</EM> any attempt whatever to
launch X automatically if X isn't tuned up and happy. The infamous
message "ID x respawning too fast" is a common symptom of that. The
"ID" in that case is an <TT>/etc/inittab</TT> entry for your GUI login prompt.
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [MikeM]
What can often work as a quick fix is to run the script xf86config
(all lower case)
</blockQuote>
<blockQuote>
This will wipe out the config for the font server though.
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Thomas]
In any case, adding the line:
</blockQuote>
<blockquote><pre>FontPath "Unix/:7100"
</pre></blockquote>
<blockQuote>
as the first line under: Section "Files" should work.
</blockQuote>
<!-- end 7 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<A NAME="tag.8"><HR WIDTH="75%" ALIGN="center"></A>
<!-- begin 8 -->
<H3 align="left"><img src="../gx/dennis/qbubble.gif"
height="50" width="60" alt="(?) " border="0"
>Converting from Win2k to Linux</H3>
<p><strong>From Tim Grossenbacher
</strong></p>
<p></strong></p>
<p align="right"><strong>Answered By: Faber Fedor, Jim Dennis
</strong></p>
<P><STRONG>
Gradually converting from a Windows 2000 server to Linux running Redhat 7.2.
</STRONG></P>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Faber]
First off, kudos on converting, but hy 7.2? You should at least be
doing 7.3 (although I've found 9 to be nice and stable). You have
patched the 7.2 box, haven't you?
</blockQuote>
<P><STRONG>
<IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
For many years, we have used social security numbers as login names within
the Win2k domain to login.
</STRONG></P>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Faber]
My gawd, man! Are you mad! I certainly hope this domain is nowhere
near the Internet! <
<IMG SRC="../gx/dennis/smily.gif" ALT=";D"
height="24" width="20" align="middle">r. Evil> But if it is, how do you translate
between the login of the employee's SSN and his email name? Can you tell
me the name of that file and which machine it is on??</Dr. Evil>
</blockQuote>
<blockQuote>
And you've never had a problem with identity theft? Amazing.
</blockQuote>
<P><STRONG>
<IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
Linux does not appear to allow me to create a
user with numbers only as the user.
</STRONG></P>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Faber]
Correct. Linux (and every *nix I've seen) won't allow login names to
start with a number. <Turns to the audience> Why is that? Anyone know?
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [JimD]
Because any place in the code that's expecting a user toke looks at
the first character to determine if it's a UID or a name; then it
looks up <TT>(getpwnam()</TT>) the username and translates it into a UID.
</blockQuote>
<blockQuote>
In other words "names" beginning with digits create an ambiguity between
different representations of the same object (UID vs. name).
</blockQuote>
<blockQuote>
Now, granted this could be changed. Programs could search the entire
string for any non-digit and declare it to be a name rather than a
UID. However, even then there'd be an ambiguity when the "name"
consisted entirely of digits. Also changing this would entail finding
<EM>every</EM> piece of code that was parsing UIDs and user names <EM>anywhere</EM>
(precisely the sort of change that is nearly impossible for an
operating system that's been in use in hundreds of implementions for
over thirty years).
</blockQuote>
<blockQuote>
You could certainly just use a letter prefix to your SSN as your
user naming scheme. u1234567890 (123-45-7890) would work just as
well as 1234567890.
</blockQuote>
<blockQuote>
As Faber as said, using SSN's in ANY visible way is an incredibly bad
idea. Perusing the Privacy SSN FAQ:
</blockQuote>
<blockQuote><BLOCKQuote>
<A HREF="http://www.faqs.org/faqs/privacy/ssn-faq/index.html"
>http://www.faqs.org/faqs/privacy/ssn-faq/index.html</A>
</BLOCKQuote></blockQuote>
<blockQuote>
... would be a good idea.
</blockQuote>
<P><STRONG>
<IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
I have created test users with both alpha and numeric characters, and all
works perfectly. Is there a work around?
</STRONG></P>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [JimD]
Re-think your policy.
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Faber]
Well, you could always hack the source, of course, of course. But I
assume there's a Good Reason why they don't allow it, I just don't know
what it is.
</blockQuote>
<blockQuote>
<IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [JimD]
Think ambiguity. Then think, millions of lines of code in thousands
of programs. Then think 30 years of books, education and programmer
experience --- hundreds of thousands of programmers who already <EM>know</EM>
that usernames like most identifiers in most languages must start with
an alpha or some suitable punctuation and that leading digits signify
a UID.
</blockQuote>
<blockQuote>
Sounds like a bad idea all around.
</blockQuote>
<blockQuote>
I suppose you could just modify the login programs to accept numerics
and prefix them with some letter or even an _ (underscore) before
logging the user in. This would keep the change focused just to a few
programs and libraries (basically just the PAM and login suite).
</blockQuote>
<blockQuote>
However, this sort of hack has a way of causing more confusion later.
Everyone at your site will then be "logging in" one way and getting a
username that doesn't quite match the string they use to log in ---
could cause lots of confusion.
</blockQuote>
<!-- end 8 -->
<!-- *** BEGIN copyright *** -->
<hr>
<CENTER><SMALL><STRONG>
<h5>
<br>Copyright © 2003
<br>Copying license <A HREF="">http://www.linuxgazette.com/copying.html</A>
<BR>Published in Issue 95 of <i>Linux Gazette</i>, October 2003</H5>
</STRONG></SMALL></CENTER>
<!-- *** END copyright *** -->
<SMALL><CENTER><H6 ALIGN="center">HTML script maintained by
<A HREF="mailto:star@starshine.org">Heather Stern</a> of
Starshine Technical Services,
<A HREF="http://www.starshine.org/">http://www.starshine.org/</A>
</H6></SMALL></CENTER>
<HR>
<TABLE BORDER><TR><TD WIDTH="200">
<A HREF="http://www.linuxgazette.com/">
<IMG ALT="LINUX GAZETTE" SRC="../gx/2002/lglogo_200x41.png"
WIDTH="200" HEIGHT="41" border="0"></A>
<BR CLEAR="all">
<SMALL>...<I>making Linux just a little more fun!</I></SMALL>
</TD><TD WIDTH="380">
<CENTER>
<BIG><BIG><STRONG><FONT COLOR="maroon">News Bytes</FONT></STRONG></BIG></BIG>
<BR>
<STRONG>By <A HREF="../authors/conry.html">Michael Conry</A></STRONG>
</CENTER>
</TD></TR>
</TABLE>
<P>
<!-- END header -->
</p><center>
<table cellpadding="7"><tbody><tr><td>
<img src="../gx/bytes.gif" border="1" alt="News Bytes">
</td><td>
<h3>Contents:</h3>
<ul>
<li><a href="#leg">Legislation and More Legislation</a>
</li><li><a href="#links">Linux Links</a>
</li><li><a href="#conferences">Conferences and Events</a>
</li><li><a href="#general">News in General</a>
</li><li><a href="#distro">Distro News</a>
</li><li><a href="#commercial">Software and Product News</a>
</li></ul>
</td></tr></tbody></table>
<strong>Selected and formatted by <a href="mailto:michael.conry@softhome.net">Michael Conry</a></strong>
</center>
<p> Submitters, send your News Bytes items in
<font size="+2"><strong>PLAIN TEXT</strong></font>
format. Other formats may be rejected without reading. You have been
warned! A one- or two-paragraph summary plus URL gets you a better
announcement than an entire press release. Submit items to
<a href="mailto:bytes@linuxgazette.com">bytes@linuxgazette.com</a>
</p><hr> <p>
<!-- =================================================================== -->
</p><h3><img alt=" " src="../gx/bolt.gif">
<font color="green">
November 2003 <i>Linux Journal</i>
</font>
</h3>
<img alt="[issue 114 cover image]" src="misc/bytes/lj-cover114.png" width="200" height="268" align="left" hspace="20">
The November issue of <a href="http://www.linuxjournal.com/"><i>Linux
Journal</i></a> is on newsstands now.
This issue focuses on System Administration. Click
<a href="http://www.linuxjournal.com/modules.php?op=modload&name=NS-lj-issues/issue114&file=index">here</a>
to view the table of contents, or
<a href="http://www.linuxjournal.com/subscribe/">here</a>
to subscribe.
<p>
<font color="green">All articles in issues 1-102 are available for public reading at
<a href="http://www.linuxjournal.com/magazine.php">
http://www.linuxjournal.com/magazine.php</a></font>.
Recent articles are available on-line for subscribers only at
<a href="http://interactive.linuxjournal.com/">http://interactive.linuxjournal.com/</a>.
<BR CLEAR="all">
<!-- =================================================================== -->
<a name="leg"></a>
<p><hr><p>
<!-- =================================================================== -->
<center><H3><font color="green">Legislation and More Legislation</font></H3></center>
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">European Patents
</FONT>
</H3>
<P>
Last month we reported on an upcoming vote in the European Parliament
regarding the future of software patents in Europe. According to many
Free and Open Software advocates, the proposals in front of the
parliament would, probably permanently, establish the practice of
software patenting in Europe. This, they argued, would lead to a
reduction in innovation and give an unnecessary and crushing advantage
to large software companies who could use their greater resources to
legally elbow smaller competitors out of the market.
You can read a cogent and well-argued discussion of these views in the
<a href="http://newsforge.com/article.pl?sid=03/09/22/1311217">
open letter addressed by Linux Torvalds and Alan Cox</a> to the
members of the European Parliament
<P>
There are many people out there who were not content simply to
complain about the direction events were taking. Instead, they lobbied,
and lobbied hard, to get the concerns of financially small (though
numerically large) interest groups onto the agenda. An initial sign
that these efforts might be having an effect was the
<a href="http://promote-opensource.org/modules/news/article.php?storyid=262">
announcement of a further postponement</a>
of the vote on the proposed directive. Though no reason was given for
the delay, the first postponement was the result of widespread confusion
regarding the issues at stake, and a feeling that the directive was
being forced through with undue haste. It seems likely that similar
sentiments lead to this second deferment.
<P>
The ultimate, and welcome, result of this concerted lobbying process was
that amendments were proposed to the directive which removed many of the
most objectionable proposals. This
<a href="http://www.theregister.co.uk/content/4/33016.html">
amended directive was approved</a> by the parliament with a margin of
364 votes to 153 with 33 abstentions.
LWN have helpfully <a href="http://lwn.net/Articles/50722/">
reproduced the directive online</a> in a readable HTML format.
<P>
It is important to learn lessons from this success and to apply them in
future struggles. Many Free Software enthusiasts have learnt valuable
lobbying skills in the course of their advocacy, and these skills must
be developed and shared. A particularly
<a href="http://newsforge.com/newsforge/03/09/16/1428222.shtml?tid=17">
interesting account of this lobbying process</a> has been published by
NewsForge, and it gives useful information both on how to lobby, and on
what level of understanding can be expected of politicians and their
staff. Additionally, it is important to follow up on politicians who
have been lobbied and to check how they actually voted. As
<a href="http://www.ntk.net/2003/09/26/">
pointed out by NTKnow</a>, the UK Liberal Democrats made very positive
noises, but ultimately voted in favour of patents. Of the UK parties,
only the Greens and the UK Independence Party voted against software
patents. If politicians realise that Free software advocates pay
attention (and draw attention) to their voting records, they will be far
more likely to heed future representations.
These skills will be especially important since pro-patent interests are
likely to try to get their way through the alternative route of national
parliaments.
<P>
For more information on this story, if you are interested in an
anti-patents, pro-free-software point of view you should look at
<a href="http://www.ffii.org/">FFII.org</a>.
Their
<a href="http://swpat.ffii.org/news/03/plen0924/index.en.html">
account of the final amendments and vote</a> is worth reading.
<a name="links"></a>
<p><hr><p>
<!-- =================================================================== -->
<center><H3><font color="green">Linux Links</font></H3></center>
<P>
A <a href="http://www.acmqueue.com/modules.php?name=Content&pa=showpage&pid=55">
comparison of four Linux Office suites</a>
and how well they handle random MS Word/Excel/PowerPoint doucments.
<P>
Some links from NewsForge:
<ul>
<li>
<a href="http://newsforge.com/article.pl?sid=03/08/29/1948223">
How to retrain yourself for embedded Linux</a>
</li>
<li>
<a href="http://newsforge.com/article.pl?sid=03/09/05/1958235">
Open source in East Timor and India</a>
</li>
<li>
<a href="http://newsforge.com/article.pl?sid=03/09/03/2053203">
The indispensable GPL</a>
</li>
<li>
<a href="http://newsforge.com/article.pl?sid=03/09/13/1538208">
Iran's First GNU/Linux Seminar</a>
</li>
<li>
<a href="http://newsforge.com/article.pl?sid=03/09/12/1544240">
Opportunities for Open Source software in the publishing industry</a>
</li>
<li>
<a href="http://newsvac.newsforge.com/article.pl?sid=03/09/22/2037238">
Linux on the AMD Opteron: Are We Ready?</a>
</li>
</ul>
<P>
Bellevue's Linare sees Linux future,
<a href="http://seattletimes.nwsource.com/text/2001739669_btinterface22.html">
launches $19.95 operating system</a>.
<P>
<a href="http://acmqueue.org/modules.php?name=Content&pa=showpage&pid=54&page=1">
The age of corporate open source enlightenment</a>
<P>
Some links from Linux Weekly News:
<ul>
<li>
<a href="http://lwn.net/Articles/47699/">
Is Taiwan is falling behind China in Linux adoption.</a>
</li>
<li>
US Library of Congress is
<a href="http://lwn.net/Articles/47497/">
using Linux for an online video archive</a>
</li>
</ul>
<P>
And since they generate so much media noise, lets list a few relating to
SCO:
<ul>
<li>
<a href="http://www.linuxjournal.com/article.php?sid=7117">
What does SCO v. IBM mean for users?</a>, a view from Linux Journal.
</li>
<li>
Dee-Ann LeBlanc at O'Reilly provides
<a href="http://www.oreillynet.com/pub/wlg/3702">
A SCO-Fighting Press Kit</a>
</li>
<li>
<a href="http://www.eweek.com/article2/0,4149,1257617,00.asp">
ESR and SCO:</a>
"But [Raymond] did admit that 'I am grinning a grin that should
frighten the thieves and liars at SCO out of a week's sleep...'"
</li>
<li>
Novell 'puts entire ecosystem behind Linux'
<a href="http://www.theregister.co.uk/content/53/32708.html">
and CEO downplays SCO derailment risk</a>
</li>
<li>
Linux Torvalds, in open letter to Darl McBride says
<a href="http://newsforge.com/article.pl?sid=03/09/10/2321224">
pLease grow up</a>.
</li>
</ul>
<P>
Some links from O'Reilly:
<ul>
<li>
<a href="http://linux.oreillynet.com/pub/a/linux/2003/09/04/oracle_install.html">
Running Oracle on Red Hat</a>
</li>
<li>
<a href="http://linux.oreillynet.com/pub/a/linux/2003/09/04/email_pki.html">
Encrypted Email Cookbook</a>
</li>
<li>
<a href="http://www.onlamp.com/pub/a/onlamp/2003/09/18/prelude.html">
The Prelude open source intrusion detection system</a>
</li>
</ul>
<P>
Some links via LinuxToday:
<ul>
<li>
<a href="http://www-106.ibm.com/developerworks/linux/library/l-datavis/?ca=dgr-lnxw02UsingPerl/Tk">
Data visualization using perl/TK</a>
</li>
<li>
<a href="http://www.bayarea.com/mld/mercurynews/business/6769286.htm">
Open source helps education effort in third world</a>
</li>
<li>
<a href="http://www.ofb.biz/modules.php?name=News&file=article&sid=263&mode=&order=0&thold=0">
A free desktop for free people</a>
</li>
<li>
The Indian government is
<a href="http://economictimes.indiatimes.com/cms.dll/html/uncomp/articleshow?msid=185058">
releasing GNU/Linux in 11 Indian languages</a>
by the end of the year
</li>
<li>
<a href="http://articles.linmagau.org/modules.php?op=modload&name=Sections&file=index&req=viewarticle&artid=295&page=1">
Setting up an ADSL connection under Linux</a>
</li>
<li>
<a href="http://www.thejemreport.com/software/wordprocessors.htm">
Comparison of word processors</a> on Linux.
</li>
</ul>
<P>
<a href="http://newsvac.newsforge.com/article.pl?sid=03/09/27/1444237">
IRC Linux Help for beginners</a>.
<a name="conferences"></a>
<p><hr><p>
<!-- =================================================================== -->
<center><H3><font color="green">Upcoming conferences and events</font></H3></center>
<P> Listings courtesy <EM>Linux Journal</EM>. See <EM>LJ</EM>'s
<A HREF="http://www.linuxjournal.com/events.php">Events</A> page for the
latest goings-on.
<table cellpadding=5 border=0 width=100%>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>IDUG 2003 - Europe</b><BR></TD>
<td valign=top>October 7-10, 2003<BR>Nice, France<BR>
<a href="http://www.idug.org" target="_blank">
http://www.idug.org</A><BR></TD></TR>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>Linux Clusters Institute Workshops</b><BR></TD>
<td valign=top>October 13-18, 2003<BR>Montpellier, France<BR>
<a href="http://www.linuxclustersinstitute.org/"
target="_blank">
http://www.linuxclustersinstitute.org</A><BR></TD></TR>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>Coast Open Source Software Technology (COSST) Symposium</b><BR></TD>
<td valign=top>October 18, 2003<BR>Newport Beach, CA<BR>
<a href="http://cosst.ieee-occs.org" target="_blank">
http://cosst.ieee-occs.org</A><BR></TD></TR>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>Enterprise Linux Forum</b><BR></TD>
<td valign=top>October 22-23, 2003<BR>Washington, DC<BR>
<a href="http://www.enterpriselinuxforum.com/" target="_blank">
http://www.enterpriselinuxforum.com/</A><BR></TD></TR>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>Media Advisory/Open Source Software Chicago Forum</b><BR></TD>
<td valign=top>October 23, 2003<BR>Chicago, IL<BR>
<a href="http://www.osschicago.com" target="_blank">
http://www.osschicago.com/</A><BR></TD></TR>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>PhreakNic</b><BR></TD>
<td valign=top>October 24-26, 2003<BR>Nasheville, TN<BR>
<a href="http://www.phreaknic.info/" target="_blank">
http://www.phreaknic.info/</A><BR></TD></TR>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>LISA (17th USENIX Systems Administration Conference)</b><BR></TD>
<td valign=top>October 26-30, 2003<BR>San Diego, CA<BR>
<a href="http://www.usenix.org/events/lisa03/" target="_blank">
http://www.usenix.org/events/lisa03/</A><BR></TD></TR>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>Linux Open Alternative Days</b><BR></TD>
<td valign=top>October 30-31, 2003<BR>Bucharest, Romania<BR>
<a href="http://www.load.ro/" target="_blank">
http://www.load.ro/</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 Mac OS X Conference</b><BR></TD>
<td valign=top>October 27-30, 2003<BR>Santa Clara, CA<BR>
<a href="http://conferences.oreillynet.com/macosx2003/" target="_blank">
http://conferences.oreillynet.com/macosx2003/</A><BR></TD></TR>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>HiverCon 2003</b><BR></TD>
<td valign=top>November 6-7, 2003<BR>Dublin, Ireland<BR>
<a href="http://www.hivercon.com/" target="_blank">
http://www.hivercon.com/</A><BR></TD></TR>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>COMDEX Fall</b><BR></TD>
<td valign=top>November 17-21, 2003<BR>Las Vegas, NV<BR>
<a href="http://www.comdex.com/fall2003/" target="_blank">
http://www.comdex.com/fall2003/</A><BR></TD></TR>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>Southern California Linux Expo (SCALE)</b><BR></TD>
<td valign=top>November 22, 2003<BR>Los Angeles, CA<BR>
<a href="http://socallinuxexpo.com/" target="_blank">
http://socallinuxexpo.com/</A><BR></TD></TR>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>Annual Computer Security Applications Conference (ACSAC)</b><BR></TD>
<td valign=top>December 8-12, 2003<BR>Las Vegas, NV<BR>
<a href="http://www.acsac.org/" target="_blank">
http://www.acsac.org/</A><BR></TD></TR>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>Linux Clusters Institute Workshops</b><BR></TD>
<td valign=top>December 8-12, 2003<BR>Albuquerque, NM<BR>
<a href="http://www.linuxclustersinstitute.org/"
target="_blank">
http://www.linuxclustersinstitute.org</A><BR></TD></TR>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>Storage Expo 2003, co-located with Infosecurity 2003</b><BR></TD>
<td valign=top>December 9-11, 2003<BR>New York, NY<BR>
<a href="http://www.infosecurityevent.com/" target="_blank">
http://www.infosecurityevent.com/</A><BR></TD></TR>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>Consumer Electronics Show</b><BR></TD>
<td valign=top>January 8-11, 2004<BR>Las Vegas, NV<BR>
<a href="http://www.cesweb.org/" target="_blank">
http://www.cesweb.org/</A><BR></TD></TR>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>Linux.Conf.AU</b><BR></TD>
<td valign=top>January 12-17, 2004<BR>Australia<BR>
<a href="http://conf.linux.org.au/" target="_blank">
http://conf.linux.org.au/</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>
<td valign=top>January 20-23, 2004<BR>New York, NY<BR>
<a href="http://linuxworldexpo.com/" target="_blank">
http://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>O'Reilly Emerging Technology Conference</b><BR></TD>
<td valign=top>February 9-12, 2004<BR>San Diego, CA<BR>
<a href="http://conferences.oreillynet.com/etcon/" target="_blank">
http://conferences.oreillynet.com/etcon/</A><BR></TD></TR>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>SXSW</b><BR></TD>
<td valign=top>March 12-21, 2004<BR>Austin, TX<BR>
<a href="http://sxsw.com/" target="_blank">
http://sxsw.com/</A><BR></TD></TR>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>SD West</b><BR></TD>
<td valign=top>March 15-19, 2004<BR>Santa Clara, CA<BR>
<a href="http://www.sdexpo.com" target="_blank">
http://www.sdexpo.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 Hannover</b><BR></TD>
<td valign=top>March 18-24, 2004<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>COMDEX Canada</b><BR></TD>
<td valign=top>March 24-26, 2004<BR>Toronto, Ontario<BR>
<a href="http://www.comdex.com" target="_blank">
http://www.comdex.com</A><BR></TD></TR>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>2004 USENIX/ACM Symposium on Networked Systems Design and
Implementation (NSDI)</b><BR></TD>
<td valign=top>March 29-31, 2004<BR>San Francisco, CA<BR>
<a href="http://www.usenix.org/events/nsdi04/" target="_blank">
http://www.usenix.org/events/nsdi04/</A><BR></TD></TR>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>RealWorld Linux</b><BR></TD>
<td valign=top>April 13-15, 2004<BR>Toronto, Ontario<BR>
<a href="http://www.realworldlinux.com" target="_blank">
http://www.realworldlinux.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 America</b><BR></TD>
<td valign=top>May 25-27, 2004<BR>New York, NY<BR>
<a href="http://www.cebit-america.com/" target="_blank">
http://www.cebit-america.com/</A><BR></TD></TR>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>Strictly Business Solutions Expo</b><BR></TD>
<td valign=top>June 9-10, 2004<BR>Minneapolis, MN<BR>
<a href="http://www.strictlyebusiness.net/sb/mpls/index.po"
target="_blank">
http://www.strictlyebusiness.net/sb/mpls/index.po</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>
<td valign=top>June 27 - July 2, 2004<BR>Boston, MA<BR>
<a href="http://www.usenix.com/events/usenix04/" target="_blank">
http://www.usenix.com/events/usenix04/</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>
<td valign=top>July 26-30, 2004<BR>Portland, OR<BR>
<a href="http://conferences.oreillynet.com/" target="_blank">
http://conferences.oreillynet.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>
<td valign=top>August 3-5, 2004<BR>San Francisco, CA<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>USENIX Security Symposium</b><BR></TD>
<td valign=top>August 9-13, 2004<BR>San Diego, CA<BR>
<a href="http://www.usenix.com/events/sec04/" target="_blank">
http://www.usenix.com/events/sec04/</A><BR></TD></TR>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>USENIX Systems Administration Conference (LISA)</b><BR></TD>
<td valign=top>November 14-19, 2004<BR>Atlanta, GA<BR>
<a href="http://www.usenix.com/events/" target="_blank">
http://www.usenix.com/events/</A><BR></TD></TR>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
</table>
<a name="general"></a>
<p><hr><p>
<!-- =================================================================== -->
<center><H3><font color="green">News in General</font></H3></center>
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">Mobilix
</FONT>
</H3>
<P>
In the final roll of the dice for Mobilix, (a site providing information
on mobile Linux systems), the highest German civil court
<a href="http://linuxtoday.com/news/2003090600226NWCYLL">
has found in favour of Les Edition Albert Rene</a> and has dismissed the
appeal brought by Werner Heuser.
The work that formerly took place under the Mobilix banner will still
continue, thankfully, under the new name
<a href="http://tuxmobil.org/">
Tuxmobil</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">Debian
</FONT>
</H3>
<P>
<a href="http://www.debian.org/News/weekly/2003/35/">
Debian Weekly News reported</a>
that
The Debian project has
<a href="http://lists.debian.org/debian-amd64-0308/msg00035.html">
received full access</a>
to a Dual Opteron machine for
<a href="http://www.debian.org/ports/amd64/">
porting efforts</a> to the new amd64 architecture.
<P>
<hr width="20%" noshade>
<P>
Also
<a href="http://www.debian.org/News/weekly/2003/37/">
from Debian Weekly News</a>
debian-installer team have put together
<a href="http://cvs.debian.org/debian-installer/doc/INSTALLATION-HOWTO?rev=HEAD&content-type=text/vnd.viewcvs-markup">
a HOWTO which guides through the process of installing sarge</a>.
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">Morphix
</FONT>
</H3>
<P>
Prakash Advani conducted
<a href="http://newsforge.com/newsforge/03/08/19/1518217.shtml">
an interview with Alex de Landgraaf</a>, the founder and the lead
maintainer of the Morphix project.
[<a href="http://www.debian.org/News/weekly/2003/35/">via DWN</a>]
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">Mandrake
</FONT>
</H3>
Mandrake Linux is planning to
<a href="http://www.mandrakesoft.com/partners/advertising">
sell advertising space</a>
in the upcoming release of Mandrake Linux 9.2.
There is further information in the
<a href="http://newsforge.com/article.pl?sid=03/09/12/157237">
NewsForge story</a>.
<a name="commercial"></a>
<p><hr><p>
<!-- =================================================================== -->
<center><H3><font color="green">Software and Product News</font></H3></center>
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">Python 2.3.1
</FONT>
</H3>
<P>
The Python Software Foundation
<a href="http://newsvac.newsforge.com/article.pl?sid=03/09/24/1726203">
has announced the release of version 2.3.1</a>
of the Python programming
language. This minor release introduces a number of enhancements based
on two months of experience since release of version 2.3.
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">Scribus 1.1.0
</FONT>
</H3>
<P>
Franz Schmid
<a href="http://newsvac.newsforge.com/article.pl?sid=03/09/14/1629236">
has announced the release of Scribus 1.1.0 - Linux Desktop Publishing</a>,
which builds upon the recently released Scribus 1.0, as well as the
launching of an integrated Scribus Web site at
<a href="http://www.scribus.org.uk">
www.scribus.org.uk</a>.
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">GNOME-Office 1.0 Released
</FONT>
</H3>
<P>
The GNOME-Office team
<a href="http://newsvac.newsforge.com/article.pl?sid=03/09/16/2228225">
has announced the immediate availability of GNOME-Office 1.0</a>.
GNOME-Office is a suite of
Free Software productivity applications that seamlessly blend with the
GNOME Desktop Environment. GNOME-Office includes the AbiWord-2.0 Word
Processor, GNOME-DB-1.0 Database Interface and Gnumeric-1.2.0
Spreadsheet."
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">MuNAS
</FONT>
</H3>
<a href="http://www.advancedthintech.com">
MuNAS</a> is a piece of software which addresses the problem that the X
Window system does not support the handling of audio data. It allows the
thin-client/server computing model in Linux to handle multimedia
applications: the audio data generated by Open Sound System (OSS/Free)
compatible audio applications which are executed in the terminal server can
be transferred to X-terminals. Thus, with MuNAS installed, you can execute
multimedia applications in the terminal server and listen to the sound from
your X-terminal. Currently, several manufactures of windows terminal are
planning to install the MuNAS in their X-terminals.
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">XFce 4.0
</FONT>
</H3>
<P>
The XFce Project
<a href="http://www.xfce.org/en/press_release_en.html">
has announced the release of version 4.0</a> of their desktop environment
and development platform.
<!-- =================================================================== -->
<!-- =================================================================== -->
<!-- *** BEGIN bio *** -->
<!-- *** END bio *** -->
<!-- *** BEGIN author bio *** -->
<P>
<P>
<P> Mick is LG's News Bytes Editor.
<!-- *** BEGIN bio *** -->
<P>
<IMG ALIGN="LEFT" VALIGN="top" ALT="[Picture]" SRC="../gx/2002/tagbio/conry.jpg"
WIDTH="128" HEIGHT="158">
<em>Born some time ago in Ireland, Michael is currently working on
a PhD thesis in the Department of Mechanical Engineering, University
College Dublin. The topic of this work is the use of Lamb waves in
nondestructive testing. GNU/Linux has been very useful in this work, and
Michael has a strong interest in applying free software solutions to
other problems in engineering. When his thesis is completed, Michael
plans to take a long walk.
</em>
<br CLEAR="all">
<!-- *** END bio *** -->
<!-- *** END author bio *** -->
<!-- *** BEGIN copyright *** -->
<hr>
<CENTER><SMALL><STRONG>
Copyright © 2003, Michael Conry.
Copying license <A HREF="../copying.html">http://www.linuxgazette.com/copying.html</A><BR>
Published in Issue 95 of <i>Linux Gazette</i>, October 2003
</STRONG></SMALL></CENTER>
<!-- *** END copyright *** -->
<HR>
<TABLE BORDER><TR><TD WIDTH="200">
<A HREF="http://www.linuxgazette.com/">
<IMG ALT="LINUX GAZETTE" SRC="../gx/2002/lglogo_200x41.png"
WIDTH="200" HEIGHT="41" border="0"></A>
<BR CLEAR="all">
<SMALL>...<I>making Linux just a little more fun!</I></SMALL>
</TD><TD WIDTH="380">
<CENTER>
<BIG><BIG><STRONG><FONT COLOR="maroon">Ecol</FONT></STRONG></BIG></BIG>
<BR>
<STRONG>By <A HREF="../authors/malonda.html">Javier Malonda</A></STRONG>
</CENTER>
</TD></TR>
</TABLE>
<P>
<!-- END header -->
The Ecol comic strip is written for <A
HREF="http://escomposlinux.org">escomposlinux.org</A> (ECOL), the web site tha
t supports, es.comp.os.linux, the Spanish USENET newsgroup for Linux. The
strips are drawn in Spanish and then translated to English by the author.
<P>
<EM>These images are scaled down to minimize horizontal scrolling.
To see a panel in all its clarity, click on it.</EM>
<P>
<A HREF="misc/ecol/ecol-126-e-as.png">
<IMG ALT="[cartoon]" SRC="misc/ecol/ecol-126-e-as.png"
WIDTH="640" HEIGHT="240"></A>
<BR CLEAR="all">
<A HREF="misc/ecol/ecol-127-e-as.png">
<IMG ALT="[cartoon]" SRC="misc/ecol/ecol-127-e-as.png"
WIDTH="640" HEIGHT="240"></A>
<BR CLEAR="all">
<A HREF="misc/ecol/ecol-125-e-as.png">
<IMG ALT="[cartoon]" SRC="misc/ecol/ecol-125-e-as.png"
WIDTH="640" HEIGHT="240"></A>
<BR CLEAR="all">
<P>
All Ecol cartoons are at
<A HREF="http://tira.escomposlinux.org/">tira.escomposlinux.org</A> (Spanish),
<A HREF="http://comic.escomposlinux.org/">comic.escomposlinux.org</A> (English)
and
<A HREF="http://tira.puntbarra.com/">http://tira.puntbarra.com/</A> (Catalan).
The Catalan version is translated by the people who run the site; only a few
episodes are currently available.
<P> <SMALL>These cartoons are copyright Javier Malonda. They may be copied,
linked or distributed by any means. However, you may not distribute
modifications. If you link to a cartoon, please <A
HREF="mailto:jmr@escomposlinux.org">notify</A> Javier, who would appreciate
hearing from you.
</SMALL>
<!-- *** BEGIN author bio *** -->
<P>
<P>
<!-- *** BEGIN bio *** -->
<!-- P>
<img ALIGN="LEFT" ALT="[BIO]" SRC="../gx/2002/note.png">
<em>
</em>
<br CLEAR="all" -->
<!-- *** END bio *** -->
<!-- *** END author bio *** -->
<!-- *** BEGIN copyright *** -->
<hr>
<CENTER><SMALL><STRONG>
Copyright © 2003, Javier Malonda.
Copying license <A HREF="../copying.html">http://www.linuxgazette.com/copying.html</A><BR>
Published in Issue 95 of <i>Linux Gazette</i>, October 2003
</STRONG></SMALL></CENTER>
<!-- *** END copyright *** -->
<HR>
<TABLE BORDER><TR><TD WIDTH="200">
<A HREF="http://www.linuxgazette.com/">
<IMG ALT="LINUX GAZETTE" SRC="../gx/2002/lglogo_200x41.png"
WIDTH="200" HEIGHT="41" border="0"></A>
<BR CLEAR="all">
<SMALL>...<I>making Linux just a little more fun!</I></SMALL>
</TD><TD WIDTH="380">
<CENTER>
<BIG><BIG><STRONG><FONT COLOR="maroon">Quick and Dirty Data Extraction in AWK</FONT></STRONG></BIG></BIG>
<BR>
<STRONG>By <A HREF="../authors/hughes.html">Phil Hughes</A></STRONG>
</CENTER>
</TD></TR>
</TABLE>
<P>
<!-- END header -->
<html>
<head>
<title>CC: Quick and Dirty Data Extraction in AWK</title>
</head>
<body>
<p>
Many years ago, probably close to 20, there was a regular point made on
the comp Usenet newsgroups about using the minimum tool to get the job
done.
That is, someone would ask for a quick and dirty way to do something
and the followups could include a C solution followed by an AWK
solution, followed by a sed solution and so on.
<p>
Today, I still try to use this philosophy when addressing a problem.
In this particular case, I picked AWK but if any of you old-timers are
reading this I expect you will come up with a sed-based solution.
<h2>The Problem: Extracting Data from E-mail Messages</h2>
<p>
I signed up for a daily summary of currency exchange rates. It's free
and you can subscribe too--just go <a
href="http://www.xe.com/cus" target="_blank">here</a>.
Most days I take a quick look at how the $ is doing against the Euro
and then save the e-mail. Some days I just save it.
I have always thought that, someday, I would write a program to show me
the trend but it has always been low priority.
<p>
Yesterday, as I was looking at a few of the save mail messages, I
realized that while writing a fancy graphing program was low-priority,
writing a quick and dirty hack would take less time than the random
sampling I was doing.
What I wanted was dates and numbers along with a minimalist graphical
display of the trend.
<p>First step was to look at the data.
Here is an extract of part of a message.
<pre>
>From list@en.ucc.xe.net Wed Sep 10 12:22:53 2003
...
XE.com's Currency Update Service writes:
Here is today's Currency Update, a service of XE.com. Please read the
copyright, terms of use agreement, and information sections at the
end of this message. CUS5D0B3D5C16D9
____________________________________________________________________________
If you find our free currency e-mail updates useful, please forward this
message to a friend! Subscribe for free at: http://www.xe.com/cus/
____________________________________________________________________________
<PRE>
Rates as of 2003.09.09 20:46:35 UTC (GMT). Base currency is EUR.
Currency Unit EUR per Unit Units per EUR
================================ =================== ===================
USD United States Dollars 0.890585 1.12286
EUR Euro 1.00000 1.00000
GBP United Kingdom Pounds 1.41659 0.705920
CAD Canada Dollars 0.651411 1.53513
...
</PRE>
For help reading this mailout, refer to: http://www.xe.com/cus/sample.htm
...
</pre>
The ... lines just indicate that I tossed a lot of uninteresting lines.
<p>
There are three things I use to produce the report:
<ul>
<li> The "Rates as of" line to get the date
<li> The "USD" line to get the actual conversion rate
<li> The </PRE> line to tell me to print the info and clear my variables.
Note that I don't really have to clear them if the data is good
but it just seemed like a good way to detect bad data. Quick
hack yes, but not disgustingly quick hack.
</ul>
<h2>The Solution</h2>
<p>
The numeric part of the solution is really easy. Just grab the date
info and the rate info. When I get the </PRE> line, print it out.
<p>
The graphical part is just done by printing a number of plus signs that
corresponds to the rate.
To get decent resolution I would either need a very wide printout or
some sort of offset. I went for the offset assuming the Euro will not
drop below $.90 which is pretty safe considering the direction it is
going.
<p>
Finally, I wanted a heading. Using AWK's BEGIN block, I put in a couple
of print statements. Not liking to count characters, I defined the
variable <code>over</code> to be the number of spaces that needed to be
placed before the title info to align everything.
This just meant that I had to run the program, see how far I was off
and adjust the variable.
<p>
Here is the code.
<pre>
BEGIN {
over = " "
print over, " Cost of Euros in $ by date"
print over, ".9 1.0 1.1 1.2 1.3"
print over, "| | | | |"
}
/Rates as of/ { date = $4 }
/^USD/ { rate = $6 }
/^<\/PRE>/ {
printf "%s %6.3f ", date, rate
rc = (rate - .895) * 100
for (i=0; i < rc; i++) printf "+"
printf "\n"
date = "xxx"
rate = 0
}
</pre>
<p>
Just running the program with the mail file as input prints all the
result lines but the order is that of the data in the mail file.
The sort program to the rescue. The first field in the output is the
date and some careful choice of the first character of the title lines
means everything sorts just right with no options.
Thus, to run, use:
<pre>
awk -f cc.as messages | sort
</pre>
and you get your fancy report. Pipe the result thru <code>more</code>
if you have a lot of lines to look at.
<p>
Here is a sample of the output:
<pre>
Cost of Euros in $ by date
.9 1.0 1.1 1.2 1.3
| | | | |
2003.01.02 1.036 +++++++++++++++
...
2003.08.28 1.087 ++++++++++++++++++++
2003.08.29 1.098 +++++++++++++++++++++
2003.08.31 1.099 +++++++++++++++++++++
2003.09.01 1.097 +++++++++++++++++++++
2003.09.02 1.081 +++++++++++++++++++
2003.09.04 1.094 ++++++++++++++++++++
2003.09.05 1.110 ++++++++++++++++++++++
2003.09.07 1.110 ++++++++++++++++++++++
2003.09.08 1.107 ++++++++++++++++++++++
2003.09.09 1.123 +++++++++++++++++++++++
2003.09.10 1.121 +++++++++++++++++++++++
2003.09.11 1.120 +++++++++++++++++++++++
2003.09.12 1.129 ++++++++++++++++++++++++
2003.09.14 1.127 ++++++++++++++++++++++++
2003.09.15 1.128 ++++++++++++++++++++++++
2003.09.16 1.117 +++++++++++++++++++++++
2003.09.17 1.129 ++++++++++++++++++++++++
2003.09.18 1.124 +++++++++++++++++++++++
2003.09.19 1.138 +++++++++++++++++++++++++
</pre>
<p>Ok sed experts, have at it.
--
<!-- *** BEGIN author bio *** -->
<P>
<P>
Phil Hughes is the publisher of <I>Linux Journal</I>, and thereby <I>Linux
Gazette</I>. He dreams of permanently tele-commuting from his home on the
Pacific coast of the Olympic Peninsula.
As an employer, he is "Vicious, Evil,
Mean, & Nasty, but kind of mellow" as a boss should be.
<!-- *** END author bio *** -->
<!-- *** BEGIN copyright *** -->
<hr>
<CENTER><SMALL><STRONG>
Copyright © 2003, Phil Hughes.
Copying license <A HREF="../copying.html">http://www.linuxgazette.com/copying.html</A><BR>
Published in Issue 95 of <i>Linux Gazette</i>, October 2003
</STRONG></SMALL></CENTER>
<!-- *** END copyright *** -->
<HR>
<TABLE BORDER><TR><TD WIDTH="200">
<A HREF="http://www.linuxgazette.com/">
<IMG ALT="LINUX GAZETTE" SRC="../gx/2002/lglogo_200x41.png"
WIDTH="200" HEIGHT="41" border="0"></A>
<BR CLEAR="all">
<SMALL>...<I>making Linux just a little more fun!</I></SMALL>
</TD><TD WIDTH="380">
<CENTER>
<BIG><BIG><STRONG><FONT COLOR="maroon">Integrating Tomcat and Apache on RedHat 9</FONT></STRONG></BIG></BIG>
<BR>
<STRONG>By <A HREF="../authors/millson.html">Mike Millson</A></STRONG>
</CENTER>
</TD></TR>
</TABLE>
<P>
<!-- END header -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Integrating Tomcat and Apache on RedHat 9.0</title>
</head>
<body>
<h1>Integrating Tomcat and Apache on RedHat 9.0</h1>
<hr>
<table width="100%" summary="byline">
<tr>
<td>Mike Millson<br>Web Systems Engineer<br><a href="mailto:mmillson@meritonlinesystems.com">mmillson@meritonlinesystems.com</a></td>
<td align="right">August 26, 2003<br>Merit Online Systems, Inc.<br><a href="http://www.meritonlinesystems.com/" target="_blank">www.meritonlinesystems.com</a></td>
</tr>
</table>
<hr>
<h2>Introduction</h2>
<p>Java servlets are a powerful tool for building websites and web based applications. One skill that every Java web developer should have is the ability to install and configure the Tomcat servlet engine. Many thanks to the <a href="http://www.apache.org/" target="_blank">Apache Software Foundation</a> for providing this mature, stable, open source software. It was recently voted the <a href="http://www.infoworld.com/article/03/07/25/29FErcamain_1.html?s=feature" target="_blank">Best Application Server of 2003</a> by InfoWorld readers.</p>
<p>This article discusses how to integrate Tomcat with the Apache web server on RedHat 9.0. The goal is to provide a simple, stable configuration that will allow users to gain confidence using Tomcat.</p>
<p>Please note all commands are issued as root unless otherwise noted.</p>
<h2>Installing Apache</h2>
<p>I chose to install Apache using the RedHat RPM. Using the RPM instead of compiling Apache from source simplifies system administration in the following ways:</p>
<ul>
<li>Updates and bug fixes can be installed automatically from the <a href="http://rhn.redhat.com/" target="_blank">RedHat Network</a>.</li>
<li>Startup and shutdown scripts are already configured and available.</li>
</ul>
<p>I recommend using the RedHat up2date command line utility to install RedHat RPMs. Although up2date can be used without purchasing a RedHat Network subscription, a basic subscription is a great value. It eliminates a multitude of headaches by ensuring the software you install is the correct version and you have the right dependencies installed on your system.</p>
<p>RedHat RPMs that must be installed:</p>
<ul>
<li>httpd: the Apache web server</li>
<li>httpd-devel: development tools that will be needed to create the mod_jk connector</li>
</ul>
<p>To install these packages using up2date, make sure you are connected to the Internet, and enter the following:</p>
<div class="code">
<pre>
up2date -i httpd
up2date -i httpd-devel
</pre>
</div>
<p>You should now be able to start/stop/restart Apache as follows:</p>
<div class="code">
<pre>
service httpd start
service httpd stop
service httpd restart
</pre>
</div>
<p>Verify that Apache is working by starting Apache and typing http://localhost/ into your browser. You should see the default Apache install page with links to documentation.</p>
<h2>Installing Tomcat</h2>
<p>The only requirements to run Tomcat are that a Java Development Kit (JDK), also called a Java Software Developement Kit (SDK), be installed and the JAVA_HOME environment variable be set.</p>
<h3>Java SDK</h3>
<p>I chose to install Sun's Java 2 Platform, Standard Edition, which can be downloaded from <a href="http://java.sun.com/j2se/" target="_blank">http://java.sun.com/j2se/)</a>. I chose the J2SE v1.4.2 SDK Linux self-extracting binary file.</p>
<p>Change to the directory where you downloaded the SDK and make the self-extracting binary executable:</p>
<div class="code">
<pre>
chmod +x j2sdk-1_4_2-linux-i586.bin
</pre>
</div>
<p>Run the self-extracting binary:</p>
<div class="code">
<pre>
./j2sdk-1_4_2-linux-i586.bin
</pre>
</div>
<p>There should now be a directory called j2sdk1.4.2 in the download directory. Move the SDK directory to where you want it to be installed. I chose to install it in /usr/java. Create /usr/java if it doesn't exist. Here is the command I used from inside the download directory:</p>
<div class="code">
<pre>
mv j2sdk1.4.2 /usr/java
</pre>
</div>
<p>Set the JAVA_HOME environment variable, by modifying /etc/profile so it includes the following:</p>
<div class="code">
<pre>
JAVA_HOME="usr/java/j2sdk1.4.2"
export JAVA_HOME
</pre>
</div>
<p>There will be other environment variables being set in /etc/profile, so you will probably be adding JAVA_HOME to an existing export command. /etc/profile is run at startup and when a user logs into a system.</p>
<h3>Tomcat Account</h3>
<p>You will install and configure Tomcat as root; however, you should create a group and user account for Tomcat to run under as follows:</p>
<div class="code">
<pre>
groupadd tomcat
useradd -g tomcat tomcat
</pre>
</div>
<p>This will create the /home/tomcat directory, where I will install my Tomcat applications.</p>
<h3>Download Tomcat</h3>
<p>Download the latest release build from <a href="http://www.apache.org/dist/jakarta/tomcat-4/binaries/" target="_blank">http://www.apache.org/dist/jakarta/tomcat-4/binaries/</a>. Since Tomcat runs directly on top of a standard JDK, I cannot think of any reason to building it from source.</p>
<p>The Tomcat binary is available in two different flavors:</p>
<ol>
<li>non-LE
<ul>
<li>Full binary distribution</li>
<li>Includes all optional libraries and an XML parser (Xerces)</li>
<li>Can be run on JDK 1.2+</li>
</ul>
<li>LE
<ul>
<li>Lightweight binary distribution</li>
<li>Designed to be run on JDK 1.4</li>
<li>Does not include an XML parser because one is included in JDK 1.4</li>
<li>Can be run on JDK 1.2 by adding an XML parser</li>
<li>All the components of this distribution are open source software</li>
<li>Does not include any of the following optional binaries: JavaMail, Java Activation Framework, Xerces, JNDI, or the JDBC Standard Extension</li>
</ul>
</ol>
<p>There are a number of different download formats. I chose the LE version gnu zipped tar file (jakarta-tomcat-4.1.27-LE-jdk14.tar.gz).</p>
<h3>Tomcat Standalone</h3>
<p>Unzip Tomcat by issuing the following command from your download directory:</p>
<div class="code">
<pre>
tar xvzf tomcat-4.1.27-LE-jdk14.tar.gz
</pre>
</div>
<p>This will create a directory called jakarta-tomcat-4.1.27-LE-jdk14. Move this directory to wherever you would like to install Tomcat. I chose /usr/local. Here is the command I issued from inside the download directory:</p>
<div class="code">
<pre>
mv jakarta-tomcat-4.1.27-LE-jdk14 /usr/local/
</pre>
</div>
<p>The directory where Tomcat is installed is referred to as CATALINA_HOME in the Tomcat documentation. In this case CATALINA_HOME=/usr/local/jakarta-tomcat-4.1.27-LE-jdk14.</p>
<p>I recommend setting up a symbolic link to point to your current Tomcat version. This will save you from having to change your startup and shutdown scripts each time you upgrade Tomcat or set a CATALINA_HOME environment variable. It also allows you to keep several versions of Tomcat on your system and easily switch amongst them. Here is the command I issued from inside /usr/local to create a symbolic link called /usr/local/jakarta-tomcat that points to /usr/local/jakarta-tomcat-4.1.27-LE-jdk14:</p>
<div class="code">
<pre>
ln -s jakarta-tomcat-4.1.27-LE-jdk14 jakarta-tomcat
</pre>
</div>
<p>Change the group and owner of the /usr/local/jakarta-tomcat and /usr/local/jakarta-tomcat-4.1.27-LE-jdk14 directories to tomcat:</p>
<div class="code">
<pre>
chown tomcat.tomcat /usr/local/jakarta-tomcat
chown -R tomcat.tomcat /usr/local/jakarta-tomcat-4.1.27-LE-jdk14
</pre>
</div>
<p>It is not necessary to set the CATALINA_HOME environment variable. Tomcat is smart enough to figure out CATALINA_HOME on its own.</p>
<p>You should now be able to start and stop Tomcat from the CATALINA_HOME/bin directory by typing ./startup.sh and ./shutdown.sh respectively. Test that Tomcat is working by starting it and typing http://localhost:8080 into your browser. You should see the Tomcat welcome page with links to documentation and sample code. Verify Tomcat is working by clicking on some of the examples links.</p>
<h3>Selecting A Connector</h3>
<p>At this point, Apache and Tomcat should be working separately in standalone mode. You can run Tomcat in standalone mode as an alternative to Apache. In fact, in some cases, it is said that Tomcat standalone is faster than serving static content from Apache and dynamic content from Tomcat. However, there are compelling reasons to use Apache as the front end. If you run Tomcat standalone:</p>
<ol>
<li>You will have to run Tomcat as root on port 80. This is a security concern.</li>
<li>You will not be able to use a connector such as mod_jk to load balance amongst several Tomcat instances.</li>
<li>You will not be able to take advantage of Apache features such as cgi and PHP.</li>
<li>You will not be able to take advantage of Apache modules such as mod_rewrite.</li>
<li>You will not be able to isolate virtual hosts in their own Tomcat instances.</li>
</ol>
<p>I think the increased functionality obtained by using Apache on the front end far outweighs the effort required to install and configure a connector. With that said, I selected the tried and true mod_jk connector. It has been around a long while and is very stable. mod_jk2 is the wave of the future, but I'm holding off on that for now. In early 2002 I invested a considerable amount of time on the "wave of the future" connector at that time, mod_webapp, which is now no longer being developed. For that reason, I am being cautious about migrating to mod_jk2.</p>
<h3>Building the mod_jk Connector</h3>
<p>The mod_jk connector is the communication link between Apache and Tomcat. It listens on port 8009 for requests from Apache.</p>
<p>In my experience, it's safest to think of connectors as being version dependent. If you upgrade Tomcat and you have a connector issue, try compiling the connector using the version-specific connector source.</p>
<p>Download the connector source for your version of Tomcat from <a href="http://www.apache.org/dist/jakarta/tomcat-4/source/" target="_blank">http://www.apache.org/dist/jakarta/tomcat-4/source/</a>. I used jakarta-tomcat-connectors-4.1.27-src.tar.gz. The source for all the different connectors (mod_jk, mod_jk2, coyote, etc.) is distributed in this one file.</p>
<p>Unzip the contents of the file into your download directory as follows:</p>
<div class="code">
<pre>
tar xvzf jakarta-tomcat-connectors-4.1.27-src.tar.gz
</pre>
</div>
<p>This will create a folder called jakarta-tomcat-connectors-4.1.27-src. Move this folder to wherever you store source files on your system. I chose /usr/src. Here is the command I issued from inside the download directory:</p>
<div class="code">
<pre>
mv jakarta-tomcat-connectors-4.1.27-src /usr/src/
</pre>
</div>
<p>I refer to the folder where the connector source is installed as CONN_SRC_HOME. In my case CONN_SRC_HOME = /usr/src/jakarta-tomcat-connectors-4.1.27-src.</p>
<p>Run the buildconf script to to create the CONN_SRC_HOME/jk/native/configure file.</p>
<div class="code">
<pre>
CONN_SRC_HOME/jk/native/buildconf.sh
</pre>
</div>
<p>Run the configure script with the path to the apxs file on your system and the options below:</p>
<div class="code">
<pre>
./configure --with-apxs=/usr/sbin/apxs
</pre>
</div>
<p>Build mod_jk with the following command:</p>
<div class="code">
<pre>
make
</pre>
</div>
<p>If all went well, the mod_jk.so file was successfully created. Manually copy it to Apache's shared object files directory:</p>
<div class="code">
<pre>
cp CONN_SRC_HOME/jk/native/apache-2.0/mod_jk.so /etc/httpd/modules
</pre>
</div>
<h2>Configuring Tomcat</h2>
<h3>workers.properties</h3>
<p>The workers.properties file contains information so mod_jk can connect to the Tomcat worker processes.</p>
<p>Create a directory called CATALINA_HOME/conf/jk and place the workers.properties file found in the <a href="#wp">Appendix</a> in this directory.</p>
<h3>server.xml</h3>
<p>The server.xml file contains Tomcat server configuration information. The default CATALINA_HOME/conf/server.xml file that comes with Tomcat contains so much information that I recommend saving it for future reference (e.g. server.xml.bak) and starting from scratch. The default server.xml is great for verifying that Tomcat works in standalone mode and for viewing the examples that come with the application, but I have found it is not the best starting point when you want to integrate Apache with Tomcat. Instead, create a bare bones server.xml file as follows:</p>
<div class="code">
<pre>
<Server port="8005" shutdown="SHUTDOWN" debug="0">
<Service name="Tomcat-Apache">
<Connector className="org.apache.ajp.tomcat.Ajp13Connector"
port="8009" minProcessors="5" maxProcessors="75"
acceptCount="10" debug="0"/>
<Engine name="your_engine" debug="0" defaultHost="your_domain.com">
<Logger className="org.apache.catalina.logger.FileLogger"
prefix="apache_log." suffix=".txt"
timestamp="true"/>
<Host name="your_domain" debug="0" appBase="webapps"
unpackWARs="true">
<Context path="" docBase="/home/tomcat/your_application"
debug="0" reloadable="true" />
</Host>
</Engine>
</Service>
</Server>
</pre>
</div>
Notes:
<ol>
<li>The setup assumes you will put your Tomcat applications in /home/tomcat, not CATALINA_HOME/webapps. This will allow you to easily upgrade Tomcat and back up your Tomcat applications.</li>
<li>If you do keep the default server.xml, make sure you comment out any other connectors besides mod_jk that are listening on port 8009. The default file comes with the Coyote/JK2 connector enabled for the Tomcat-Standalone service. This will conflict with the mod_jk connector in your Tomcat-Apache service. You should comment this connector out. It isn't needed when you connect directly to Tomcat in standalone mode (port 8080), so I'm not sure why this connector is enabled by default.</li>
</ol>
<h2>Configuring Apache</h2>
<h3>httpd.conf</h3>
<p>Apache is configured with directives placed in the Apache configuration file, /etc/httpd/conf/httpd.conf. You will notice that there are three sections labeled in the httpd.conf file supplied by RedHat: (1) Global Environment, (2) Main Server Configuration, and (3) Virtual Hosts.</p>
<p>Add the following to the bottom of the existing LoadModule directives in the Global Environment section:</p>
<div class="code">
<pre>
LoadModule jk_module modules/mod_jk.so
</pre>
</div>
<p>Add the following to the bottom of the existing AddModule directives in the Global Environment section:</p>
<div class="code">
<pre>
AddModule mod_jk.c
</pre>
</div>
<p>Add the following to the bottom of the Main Server Configuration section:</p>
<div class="code">
<pre>
JkWorkersFile "/usr/local/jakarta-tomcat/conf/jk/workers.properties"
JkLogFile "/usr/local/jakarta-tomcat/logs/mod_jk.log"
JkLogLevel info
JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"
</pre>
</div>
<p>The configuration above assumes you created a symbolic link /usr/jakarta-tomcat that points to the directory where your version of Tomcat is installed.</p>
<p>Set up a Virtual Host directive in the Virtual Hosts section of httpd.conf. Below is an example of how to set up the your_domain website to forward all URLs with "servlet" in the path to Tomcat:</p>
<div class="code">
<pre>
NameVirtualHost *:80
<VirtualHost 192.168.1.1>
ServerAdmin webmaster@your_domain
ServerName your_domain
DocumentRoot /home/www/your_domain/html
ErrorLog /home/www/your_domain/logs/error_log
CustomLog /home/www/your_domain/logs/access_log common
JkMount /servlet/* ajp13
</VirtualHost>
</pre>
</div>
<p>The configuration above assumes that your application's static html files will be served from the /home/www/your_domain/html directory.</p>
<p>You can test your Apache configuration by typing the following:</p>
<div class="code">
<pre>
apachectl configtest
</pre>
</div>
<p>You will receive the response "Syntax OK" if there are no errors in httpd.conf.</p>
<h2>Setting Up your_domain</h2>
<p>your_domain.com does not need to be a domain name with a DNS entry. For testing purposes, you can set up any domain you want in the /etc/hosts file of the machine that you will be using to access your_application.</p>
<p>The example below shows the entry for your_domain when running Apache and Tomcat on a single machine, typical for a development computer.</p>
<div class="code">
<pre>
127.0.0.1 your_domain
</pre>
</div>
<h2>Testing</h2>
<p>We will now create and install a simple Hello World servlet so we can test our setup.</p>
<h3>Hello World Servlet</h3>
<p>Copy the following into a file called HelloWorld.java:</p>
<div class="code">
<pre>
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class HelloWorld
extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("Hello World");
}
}
</pre>
</div>
<p>Compile the source into a class file as follows:</p>
<div class="code">
<pre>
javac -classpath /usr/java/jakarta-tomcat/common/lib/servlet.jar HelloWorld.java
</pre>
</div>
<p>This will create a file called HelloWorld.class.</p>
<h3>Tomcat Application</h3>
<p>Create the following directories and files in /home/tomcat/your_application:</p>
<div class="code">
<pre>
/home/tomcat/your_application/WEB_INF
/home/tomcat/your_application/WEB_INF/classes
/home/tomcat/your_application/WEB_INF/web.xml
</pre>
</div>
<p>The web.xml file is where you map the name of your servlet to a URL pattern so Tomcat can run your servlet when requested. Below is the web.xml file that runs the HelloWorld servlet whenever the URL http://your_domain/servlet/HelloWorld is entered in the browser:</p>
<div class="code">
<pre>
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<servlet>
<servlet-name>HelloWorld</servlet-name>
<servlet-class>HelloWorld</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloWorld</servlet-name>
<url-pattern>/servlet/HelloWorld</url-pattern>
</servlet-mapping>
</web-app>
</pre>
</div>
<p>Copy the HelloWorld.class file to the /tomcat/home/your_application/WEB-INF/classes directory.</p>
<p>Restart Tomcat as follows:</p>
<div class="code">
<pre>
/CATALINA_HOME/bin/shutdown.sh
/CATALINA_HOME/bin/startup.sh
</pre>
</div>
<p>Restart Apache as follows:</p>
<div class="code">
<pre>
service httpd restart
</pre>
</div>
<p>You should now be able to type http://your_domain/servlet/HelloWorld into your browser and see the always-exciting "Hello World" message.</p>
<h2>Advanced Configuration</h2>
<p>The following steps are not mandatory, but are suggested for a better, tighter Tomcat installation.</p>
<h3>Tomcat Startup Script</h3>
<p>If you want to automatically start Tomcat when your system boots and manage it using the service command as we do Apache, you must create an initialization script.</p>
<p>Create the following Tomcat initialization script as /etc/rc.d/init.d/tomcat</p>
<div class="code">
<pre>
#!/bin/sh
#
# Startup script for Tomcat, the Apache Servlet Engine
#
# chkconfig: 345 80 20
# description: Tomcat is the Apache Servlet Engine
# processname: tomcat
# pidfile: /var/run/tomcat.pid
#
# Mike Millson <mmillson@meritonlinesystems.com>
#
# version 1.02 - Clear work directory on shutdown per John Turner suggestion.
# version 1.01 - Cross between RedHat Tomcat RPM and Chris Bush scripts
# Tomcat name :)
TOMCAT_PROG=tomcat
# if TOMCAT_USER is not set, use tomcat like Apache HTTP server
if [ -z "$TOMCAT_USER" ]; then
TOMCAT_USER="tomcat"
fi
RETVAL=0
# start and stop functions
start() {
echo -n "Starting tomcat: "
chown -R $TOMCAT_USER:$TOMCAT_USER /usr/local/jakarta-tomcat/*
chown -R $TOMCAT_USER:$TOMCAT_USER /home/tomcat/*
su -l $TOMCAT_USER -c '/usr/local/jakarta-tomcat/bin/startup.sh'
RETVAL=$?
echo
[ $RETVAL = 0 ] && touch /var/lock/subsys/tomcat
return $RETVAL
}
stop() {
echo -n "Stopping tomcat: "
su -l $TOMCAT_USER -c '/usr/local/jakarta-tomcat/bin/shutdown.sh'
RETVAL=$?
Echo
[ $RETVAL = 0 ] && rm -f /var/lock/subsys/tomcat /var/run/tomcat.pid
rm -rf /usr/local/jakarta-tomcat/work/*
}
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
# Ugly hack
# We should really make sure tomcat
# is stopped before leaving stop
sleep 2
start
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
esac
exit $RETVAL
</pre>
</div>
<p>Add the startup script to your system as follows:
</p>
<div class="code">
<pre>
chkconfig --add tomcat
</pre>
</div>
<p>You will be able to start/stop/restart it using the following commands:</p>
<div class="code">
<pre>
service tomcat start
service tomcat stop
service tomcat restart
</pre>
</div>
<p>If you want Tomcat to start automatically when your system boots, you need to add tomcat to your runlevel as follows:</p>
<div class="code">
<pre>
chkconfig --level 5 tomcat on
</pre>
</div>
<p>Runlevel 5 is the X Window System, typical for a development computer. Runlevel 3 is typical for a dedicated web server.</p>
<p>The start order of Apache and Tomcat is very important. Tomcat must be started before you start Apache so Apache can attach itself to the Tomcat processes.</p>
<h3>Development Setup</h3>
<p>During development, you will need access to your tomcat application directory. Add the user account under which you will be doing development to the tomcat group in /etc/group. For example, this is what the tomcat entry might look like in /etc/group if you do development under the <pre>yourname</pre> account:</p>
<div class="code">
<pre>
tomcat:x:502:yourname
</pre>
</div>
<p>Make sure the tomcat group has write permission to /home/tomcat so you can publish files (e.g. using ant) to your Tomcat application in /home/tomcat/your_application. Issue the following command as root:</p>
<div class="code">
<pre>
chmod g+w /home/tomcat
</pre>
</div>
<hr>
<h2><a name="wp">Appendix</a></h2>
<h3>workers.properties</h3>
<div class="code">
<pre>
# workers.properties
#
# This file provides jk derived plugins with the needed information to
# connect to the different tomcat workers. Note that the distributed
# version of this file requires modification before it is usable by a
# plugin.
#
# As a general note, the characters $( and ) are used internally to define
# macros. Do not use them in your own configuration!!!
#
# Whenever you see a set of lines such as:
# x=value
# y=$(x)\something
#
# the final value for y will be value\something
#
# Normaly all you will need to do is un-comment and modify the first three
# properties, i.e. workers.tomcat_home, workers.java_home and ps.
# Most of the configuration is derived from these.
#
# When you are done updating workers.tomcat_home, workers.java_home and ps
# you should have 3 workers configured:
#
# - An ajp12 worker that connects to localhost:8007
# - An ajp13 worker that connects to localhost:8009
# - A jni inprocess worker.
# - A load balancer worker
#
# However by default the plugins will only use the ajp12 worker. To have
# the plugins use other workers you should modify the worker.list property.
#
# OPTIONS ( very important for jni mode )
#
# workers.tomcat_home should point to the location where you
# installed tomcat. This is where you have your conf, webapps and lib
# directories.
#
workers.tomcat_home=/usr/local/jakarta-tomcat
#
# workers.java_home should point to your Java installation. Normally
# you should have a bin and lib directories beneath it.
#
workers.java_home=$(JAVA_HOME)
#
# You should configure your environment slash... ps=\ on NT and / on UNIX
# and maybe something different elsewhere.
#
ps=/
#
#------ ADVANCED MODE ------------------------------------------------
#---------------------------------------------------------------------
#
#------ DEFAULT worket list ------------------------------------------
#---------------------------------------------------------------------
#
# The workers that your plugins should create and work with
#
worker.list=ajp12, ajp13
#
#------ DEFAULT ajp12 WORKER DEFINITION ------------------------------
#---------------------------------------------------------------------
#
#
# Defining a worker named ajp12 and of type ajp12
# Note that the name and the type do not have to match.
#
worker.ajp12.port=8007
worker.ajp12.host=localhost
worker.ajp12.type=ajp12
#
# Specifies the load balance factor when used with
# a load balancing worker.
# Note:
# ----> lbfactor must be > 0
# ----> Low lbfactor means less work done by the worker.
worker.ajp12.lbfactor=1
#
#------ DEFAULT ajp13 WORKER DEFINITION ------------------------------
#---------------------------------------------------------------------
#
# Defining a worker named ajp13 and of type ajp13
# Note that the name and the type do not have to match.
#
worker.ajp13.port=8009
worker.ajp13.host=localhost
worker.ajp13.type=ajp13
#
# Specifies the load balance factor when used with
# a load balancing worker.
# Note:
# ----> lbfactor must be > 0
# ----> Low lbfactor means less work done by the worker.
worker.ajp13.lbfactor=1
#
# Specify the size of the open connection cache.
#worker.ajp13.cachesize
#
#------ DEFAULT LOAD BALANCER WORKER DEFINITION ----------------------
#---------------------------------------------------------------------
#
# The loadbalancer (type lb) workers perform wighted round-robin
# load balancing with sticky sessions.
# Note:
# ----> If a worker dies, the load balancer will check its state
# once in a while. Until then all work is redirected to peer
# workers.
worker.loadbalancer.type=lb
worker.loadbalancer.balanced_workers=ajp12, ajp13
#
#------ DEFAULT JNI WORKER DEFINITION---------------------------------
#---------------------------------------------------------------------
#
# Defining a worker named inprocess and of type jni
# Note that the name and the type do not have to match.
#
worker.inprocess.type=jni
#
#------ CLASSPATH DEFINITION -----------------------------------------
#---------------------------------------------------------------------
#
# Additional class path components.
#
worker.inprocess.class_path=$(workers.tomcat_home)$(ps)lib$(ps)tomcat.jar
#
# Setting the command line for tomcat.
# Note: The cmd_line string may not contain spaces.
#
worker.inprocess.cmd_line=start
#
# Not needed, but can be customized.
# worker.inprocess.cmd_line=-config
# worker.inprocess.cmd_line=$(workers.tomcat_home)$(ps)conf$(ps)server.xml
# worker.inprocess.cmd_line=-home
# worker.inprocess.cmd_line=$(workers.tomcat_home)
#
# The JVM that we are about to use
#
# This is for Java2
#
# Windows
# #worker.inprocess.jvm_lib=$(workers.java_home)$(ps)jre$(ps)bin$(ps)classic$(ps)jvm.dll
# IBM JDK1.3
# worker.inprocess.jvm_lib=$(workers.java_home)$(ps)jre$(ps)bin$(ps)classic$(ps)libjvm.so
# Unix - Sun VM or blackdown
#worker.inprocess.jvm_lib=$(workers.java_home)$(ps)jre$(ps)lib$(ps)i386$(ps)classic$(ps)libjvm.so
# RH + JDK1.4
worker.inprocess.jvm_lib=$(workers.java_home)$(ps)jre$(ps)lib$(ps)i386$(ps)server$(ps)libjvm.so
#
# And this is for jdk1.1.X
#
# worker.inprocess.jvm_lib=$(workers.java_home)$(ps)bin$(ps)javai.dll
#
# Setting the place for the stdout and stderr of tomcat
#
worker.inprocess.stdout=$(workers.tomcat_home)$(ps)logs$(ps)inprocess.stdout
worker.inprocess.stderr=$(workers.tomcat_home)$(ps)logs$(ps)inprocess.stderr
#
# Setting the tomcat.home Java property
#
# worker.inprocess.sysprops=tomcat.home=$(workers.tomcat_home)
#
# Java system properties
#
# worker.inprocess.sysprops=java.compiler=NONE
# worker.inprocess.sysprops=myprop=mypropvalue
#
# Additional path components.
#
# worker.inprocess.ld_path=d:$(ps)SQLLIB$(ps)bin
</pre>
</div>
<hr>
<h2>Related Linux Gazette Articles</h2>
<p><a href="http://www.linuxgazette.com/issue69/peda.html" target="_blank">Installing Tomcat on Linux</a> by Allan Peda, August 2001</p>
<hr>
<h2>Bio</h2>
<p>Mike is a Web Systems Engineer with <a href="http://www.meritonlinesystems.com/" target="_blank">Merit Online Systems</a> in Atlanta, GA. His first computer experience came programming BASIC on an IBM PC in 1981. When he isn't wearing his propeller cap, he enjoys spending time with his wife, Debora, and spoiling his Golden Retriever, Belle.</p>
<hr>
© 2003 Merit Online Systems, Inc.
</body>
</html>
<!-- *** BEGIN author bio *** -->
<P>
<P>
<!-- *** BEGIN bio *** -->
<P>
<img ALIGN="LEFT" ALT="[BIO]" SRC="../gx/2002/note.png">
<em>
Mike is a Web Systems Engineer with <a href="http://www.meritonlinesystems.com/" target="_blank">Merit Online Systems</a> in Atlanta, GA. His first computer experience came programming BASIC on an IBM PC in 1981. When he isn't wearing his propeller cap, he enjoys spending time with his wife, Debora, and spoiling his Golden Retriever, Belle.
</em>
<br CLEAR="all">
<!-- *** END bio *** -->
<!-- *** END author bio *** -->
<!-- *** BEGIN copyright *** -->
<hr>
<CENTER><SMALL><STRONG>
Copyright © 2003, Mike Millson.
Copying license <A HREF="../copying.html">http://www.linuxgazette.com/copying.html</A><BR>
Published in Issue 95 of <i>Linux Gazette</i>, October 2003
</STRONG></SMALL></CENTER>
<!-- *** END copyright *** -->
<HR>
<TABLE BORDER><TR><TD WIDTH="200">
<A HREF="http://www.linuxgazette.com/">
<IMG ALT="LINUX GAZETTE" SRC="../gx/2002/lglogo_200x41.png"
WIDTH="200" HEIGHT="41" border="0"></A>
<BR CLEAR="all">
<SMALL>...<I>making Linux just a little more fun!</I></SMALL>
</TD><TD WIDTH="380">
<CENTER>
<BIG><BIG><STRONG><FONT COLOR="maroon">Linux Through an Oscilloscope</FONT></STRONG></BIG></BIG>
<BR>
<STRONG>By <A HREF="../authors/pramode.html">Pramode C.E</A></STRONG>
</CENTER>
</TD></TR>
</TABLE>
<P>
<!-- END header -->
<html>
<head>
<title>Linux Through an Oscilloscope</title>
</head>
<body>
<h2>Introduction</h2>
<p>
It was some time since I had wired up a few
circuits and watched them on my old 20MHz
Oscilloscope. I thought it might be interesting
to observe how the complex, dynamic nature of
a multitasking operating system influences the
working of timing sensitive code by viewing
signals generated by such programs
on the scope. This article
describes a few experiments which I did, first
with a `normal' 2.4.18 kernel and then with a
kernel patched with `real time extensions'
provided by the RTAI project. The reader is assumed
to have some background in simple kernel programming.
<h2>Experimental setup</h2>
<p>
I converted an old Cyrix CPU based system which was lying
around unused to my `embedded linux' experimentation platform.
The motherboard was taken out of the cabinet - HDD, monitor,
keyboard etc were removed - only the Ethernet card with a boot
ROM remained - together with an ISA protoboard. This machine boots
from a full fledged Linux system situated just a few feet away.
This way, I can conduct hardware experiments without worrying
too much about damaging expensive hardware. I have the option of
booting either a plain 2.4.18 kernel or an RTAI patched one.
<h2>Simple waveform generation</h2>
<p>
Here is a little user space program which, when executed as the superuser,
generates a waveform on the parallel port output pins - I can view this
on the scope.
<pre>
#include <asm/io.h>
#define ON 100000
#define OFF ON*10
delay(unsigned int i)
{
while(i--);
}
main()
{
iopl(3);
while(1) {
outb(0xff, 0x378);
delay(ON);
outb(0x0, 0x378);
delay(OFF);
}
}
</pre>
The working of the program is simple. Parallel port pins 2 to 9 act as output
pins - they can be accessed through an i/o port whose address is 0x378. You write
0xff to 0x378, you are turning on (ie, putting about 5V) on all these pins, you
write 0x0 and your are turning off the voltage on these pins. The program has to be
compiled with the -O2 option and executed as super user (if the outb is to work, the
iopl call, which is concerned with setting some privilege levels, should work. For
iopl to work, you have to be the superuser).
<p>
On my system, I observe a waveform with an on time of about 2.5 to 2.7ms with
my scope set at 1ms/division. The result will
surely vary depending on the speed of your processor.
<h2>Why simple things are not so simple</h2>
<p>
Anybody who has done a basic course in microprocessors will know how
to generate `delays' by writing loops. That's exactly what we have
done here - absolute kids stuff.
<p>
Just being curious, I log on to another console and run the `yes'
command, which generates a continuous stream of the character `y'
on the screen. I watch the scope and see that my nice looking signal
has gone haywire. The ON and OFF periods have been so lengthened that
what I see is mostly a continuos line which keeps on jumping from 0V
to 5V.
<p>
I do another experiment. I `flood ping' (the ping command with the -f
option) the sytem from a faster machine - again, I notice that the signal
on the scope gets wildly disturbed.
<p>
The reason behind this behaviour is not at all difficult to see. My
program is now contesting with another one for CPU cycles. In between
executing the delay loop, control can switch to the other program, thereby
lengthening the delay perceived by the first program. Flood pinging
results in lots of activity within the OS kernel, this too has a
detrimental effect on the timing of my program.
<p>
The solution to the problem is simple - just don't disturb the program
which generates the waveform. Let it have full control of the CPU. Then
the question is why have a complex multitasking OS at all? Let's see.
<p>
I call the program which generates the signal a `realtime' program.
Let's visualize the program as a `task' whose job is to `toggle' the
parallel port pins at specified intervals. If the generated waveform
is used to control a physical appliance like, say, a servo motor (the
rotation of the servo is controlled by the length of the `on period'
of a pulse whose total on+off period is somewhere around 20ms. When the
ON period varies from 1ms to 2ms, the servo rotates by about 180 degree),
variation in pulse length can have dramatic effects. My Futaba S2003
servo swings wildly when it is controlled by a program like the one
above, if it is perturbed by some other process. A real time program has
timing deadlines which it HAS to meet, for correct operation. The
classical solution to designing control applications has been to use
dedicated microcontrollers and digital signal processors. But with PC
hardware becoming so cheap, a very wide range of applications are cropping
up where we require the ability to run programs with
sensitive timing requirements correctly, and, at the same time, also
do things like communicate over the network, visualize data with
graphical interfaces, log data on to secondary storage etc, jobs
where timing deadlines are not an issue, so called `non-realtime' jobs.
<p>
If it is possible to modify the Linux kernel in some way so that
the timing constraints imposed on some tasks (which are created and executed
in some special manner) are always met, even under the prescence of
other `non-realtime' tasks, then we have an ideal situation. We will
see a bit later in this article that not one, but many such solutions
are available.
<h2>Sleeping Vs Looping</h2>
<p>
Besides the fact that the timing of the program depends a lot on
other activities going on in the system, we are burning up CPU
cycles by executing a tight loop (also, on a complex microprocessor
like the Pentium, it is difficult to compute delays by counting
instructions). Why not let the program sleep?
<p>
By using functions like `nanosleep', we instruct the Operating System
to put our process to sleep, to be woken up at a specified time. But,
here again, there is a possibility that our process does not wake up
and execute at the desired time because the Operating System was too
busy executing some action in kernel mode (say, processing TCP/IP packets,
or doing disk I/O) or another process got scheduled just before the
kernel woke up our process.
<h2>Doing it in kernel space</h2>
<p>
What if we implement our signal generation code as a kernel space
module?
<pre>
#include <linux/module.h>
#include <linux/fs.h>
#include <linux/param.h>
#include <asm/uaccess.h>
#include <asm/io.h>
static char *name = "foo";
static int major;
#define ON 100000
#define OFF ON*10
void delay(unsigned int i)
{
while(i--);
}
static int
foo_read(struct file* filp, char *buf, size_t count, loff_t *f_pos)
{
while(1) {
outb(0xff, 0x378);
delay(ON);
outb(0x0, 0x378);
delay(OFF);
}
return 0;
}
static struct file_operations fops = {
read: foo_read,
};
int init_module(void)
{
major = register_chrdev(0, name, &fops);
printk("Registered, got major = %d\n", major);
return 0;
}
void cleanup_module(void)
{
printk("Cleaning up...\n");
unregister_chrdev(major, name);
}
</pre>
Executing an infinte loop in the kernel has disastrous consequences - as far
as user processes are concerned. No user process would be able to execute
until control comes out of kernel mode (this is the way the OS is designed).
What we would like to have is a situation where realtime as well as nonrealtime
processes coexist.
<p>
Although user space processes now can't disturb our program, it is still
possible to generate interrupts on the network card by flood pinging. As
interrupts are serviced even when kernel code is executing, the waveform
displayed on the scope starts jumping around as usual.
<p>
It is possible to go to sleep within the kernel - this prevents the system
from getting locked up - but then it does not solve our problem of peaceful
coexistence of realtime as well as non realtime code.
<h2>Enter Real Time Linux</h2>
<p>
What if we slide in a `nano kernel' between Linux and our hardware? This
kernel would be in control of both Linux as well as a set of `real time
tasks'. Linux will be treated as a very low priority task which will be
executed only when no other higher priority `real time' tasks are
executing. The control of interrupts would be in the hands of this
specialized kernel - requests by Linux to disable interrupts will be
treated in such a way that interrupts don't really get disabled - only
Linux won't be able to see those interrupts - the real time tasks will
still be able to execute their interrupt handlers without too much delay.
<p>
This novel concept, introduced by Dr.Victor Yodaiken, lead to the birth of
RTLinux. Many other universities and research instituitions have attempted
their own implementations - one of the most promising (and completely
non proprietary) being RTAI, developed by researchers at Dipartimento
di Ingegneria Aerospaziale - Politecnico di Milano (DIAPM).
<h2>Getting and Installing RTAI</h2>
<p>
RTAI can be obtained from <a href="http://www.aero.polimi.it/~rtai">here</a>. There are two
major components:
<ul>
<li>An HAL (hardware abstraction layer) patch to the Linux kernel.
<li>A set of modules for performing scheduling, interprocess communication,
synchronization etc.
</ul>
Before patching and installing the new kernel, the instructions given in
the README.INSTALL file should be read carefully (especially those regarding
certain kernel configuration options. "Set version information on
loadable modules" should be disabled. You are most probably using a uni
processor system - so don't forget to disable SMP support (maybe, disable
power management also)). Once you reboot with the new kernel, you can
compile the main RTAI modules and examples. Before running any programs,
you will need to load the three modules - rtai.o, rtai_fifos.o and
rtai_sched.o.
<h2>Generating waveforms with RTAI tasks</h2>
<p>
Let's look at an RTAI program which creates a waveform on the parallel
port output pins:
<pre>
#include <linux/module.h>
#include <rtai.h>
#include <rtai_sched.h>
#define LPT1_BASE 0x378
#define STACK_SIZE 4096
#define TIMERTICKS 1000000 /* 1 milli second */
static RT_TASK my_task;
static void fun(int t)
{
unsigned char c = 0x0;
while(1) {
outb(c, LPT1_BASE);
c = ~c;
rt_task_wait_period();
}
}
int init_module(void)
{
RTIME tick_period, now;
rt_set_periodic_mode();
rt_task_init(&my_task, fun, 0, STACK_SIZE, 0, 0, 0);
tick_period = start_rt_timer(nano2count(TIMERTICKS));
now = rt_get_time();
rt_task_make_periodic(&my_task, now + tick_period, 2*tick_period);
return 0;
}
void cleanup_module(void)
{
stop_rt_timer();
rt_busy_sleep(10000000);
rt_task_delete(&my_task);
}
</pre>
<p>
Let's look at the general idea before we examine specific
details. First, we need a `task' to do anything useful. The `task'
is simply a C function. The structure of most of our tasks would
be something like this - perform some action, sleep for some time,
perform some action again, repeat. One way to sleep is to call
`rt_task_wait_period' - the question is how long do we sleep? We
sleep for a certain fixed `period', which will be a multiple of
a base `tick'. The system 8254 timer can be programmed to generate
interrupts at a rate of say 1KHz (ie, 1000 times a second). The RTAI
scheduler takes scheduling decisions at each tick - if we set the
period of our task to be `2 ticks' and if the interval between each
tick is 1ms, then the scheduler will wake up our task after 2ms.
<p>
We start with `init_module'. We first configure the timer as a
`periodic timer' (another mode is available). The `rt_task_init'
function accepts the address of an object of type RT_TASK, the
address of our function and a stack size, besides some other
values. Some kind of `initialization' is performed and information
is stored in the object of type RT_TASK which can be later used
for identifying this particular task.
<p>
Our TICK_PERIOD is 1000000 nano seconds (1 milli second). The
nano2count function converts this time into internal `count
units'. The timer is started with a tick period equal to 1ms
(which is what the `start_rt_timer' function does).
<p>
What remains is to start our task and set its period (remeber,
the period is used by rt_task_wait_period to set the time at
which the task is to be awakened). We set the period to 2 ticks
and instruct the scheduler to start it at the next tick itself.
<p>
The body of our task is very simple - it simply writes a value
to the parallel port output pins, complements the variable which
stores that value and waits for the next period (which will be
2ms). After waking up, it performs the same sequence. Again and
again and again... The end result is we observe a waveform on
the scope whose on time is 2ms and off time also is 2ms.
<p>
I observed the waveform first on an unloaded system. I then
resorted to flood pinging the system. The waveform on the
scope remained steady. The promise that RTAI gives us is that
it will always run Linux as a very low priority task - Linux will
execute only when no real time tasks are to be serviced. A
real time task waking up will result in control getting transferred
to it immediately (of course, there are delays involved in
preempting whatever is being done now, activating the real time
scheduler and transferring control back to the task which just
woke up - these delays also need not be constant). That is
why we are able to observe a fairly steady signal even under
load.
<p>
Here is a code segment which demonstrates the use of a
function - `rt_sleep':
<pre>
#define LPT1_BASE 0x378
#define STACK_SIZE 4096
#define TIMERTICKS 1000000 /* 1 milli second */
#define ON_TIME 3000000 /* 3 milli seconds */
#define OFF_TIME 1000000 /* 1 milli second */
static RT_TASK my_task;
RTIME on_time, off_time;
static void fun(int t)
{
while(1) {
outb(0xff, LPT1_BASE);
rt_sleep(on_time);
outb(0x0, LPT1_BASE);
rt_sleep(off_time);
}
}
int init_module(void)
{
RTIME tick_period, now;
rt_set_periodic_mode();
rt_task_init(&my_task, fun, 0, STACK_SIZE, 0, 0, 0);
tick_period = start_rt_timer(nano2count(TIMERTICKS));
on_time = nano2count(ON_TIME);
off_time = nano2count(OFF_TIME);
now = rt_get_time();
rt_task_make_periodic(&my_task, now + tick_period, 2*tick_period);
return 0;
}
</pre>
The basic tick period is 1ms. Our on and off times are
integral multiples of this period (3ms and 1ms each).
An invocation of `rt_sleep(on_time)' will put the task
to sleep - it gets woken up after 3 tick periods. It does
some action and again goes to sleep for one tick period.
<h2>Using FIFO's to communicate between real time
and non real time tasks</h2>
<p>
It may be required to transmit data from a user space
non realtime program to an RTAI task (and back). This
is very easily done with the use of fifo's. For example,
an RTAI task may be generating a PWM (pulse width modulated)
signal and you may have to control the width from user
space.
The RTAI
installation creates several device files under /dev/
going by the name rtf0, rtf1 etc. The user program
identifies each fifo by its name while the RTAI task
does it with numbers 0, 1, 2 etc.
<pre>
#include <linux/module.h>
#include <linux/errno.h>
#include <rtai.h>
#include <rtai_sched.h>
#include <rtai_fifos.h>
#define STACK_SIZE 4096
#define COMMAND_FIFO 0
#define FIFO_SIZE 1024
int fifo_handler(unsigned int fifo)
{
char buf[100];
int r;
r = rtf_get(COMMAND_FIFO, buf, sizeof(buf)-1);
if (r <= 0) return r;
rt_printk("handler called for fifo %d, get = %d\n", fifo, r);
buf[r] = 0;
rt_printk("data = %s\n", buf);
return 0;
}
int init_module(void)
{
/* Create fifo, set handler */
rtf_create(COMMAND_FIFO, FIFO_SIZE);
rtf_create_handler(COMMAND_FIFO, fifo_handler);
return 0;
}
void cleanup_module(void)
{
printk("cleaning up...\n");
}
</pre>
In `init_module', we create a fifo and set `fifo_handler' as
a function to be invoked when somebody writes to the fifo. The
`rtf_get' function reads data from the fifo. After compiling and
loading the module, if we do something like:
<pre>
echo hello > /dev/rtf0
</pre>
we will see the handler getting invoked and reading data from the
fifo.
<h2>Further Reading</h2>
<p>
If you are interested in general real time programming
issues, you should start with the excellent <a href="http://people.mech.kuleuven.ac.be/~bruyninc/rthowto/">Real Time and Embedded Guide</a> written
by <b>Herman Bruyninckx</b>. RTAI programming is explained in
detail in the <b>RTAI manual</b> and <b>RTAI programming guide</b>
available for download from the project home page.
<h2>Conclusion</h2>
<p>
An Operating System which provides support for deterministic execution
of tasks with stringent timing requirements is just one part of
the realtime system design landscape. After playing with RTAI for a few
days, I realized that this (realtime design) is something which can't
be done as a hobby by a novice like me - you have to invest a lot of
time, effort and patience in understanding your system thoroughly (hardware
as well as software) and using the tools well. But then, that shouldn't
stop you from experimenting and having a little bit of fun!
</body>
</html>
<!-- *** BEGIN author bio *** -->
<P>
<P>
<!-- *** BEGIN bio *** -->
<P>
<img ALIGN="LEFT" ALT="[BIO]" SRC="../gx/2002/note.png">
<em>
I am an instructor working for IC Software in Kerala, India. I would have loved
becoming an organic chemist, but I do the second best thing possible, which is
play with Linux and teach programming!
</em>
<br CLEAR="all">
<!-- *** END bio *** -->
<!-- *** END author bio *** -->
<!-- *** BEGIN copyright *** -->
<hr>
<CENTER><SMALL><STRONG>
Copyright © 2003, Pramode C.E.
Copying license <A HREF="../copying.html">http://www.linuxgazette.com/copying.html</A><BR>
Published in Issue 95 of <i>Linux Gazette</i>, October 2003
</STRONG></SMALL></CENTER>
<!-- *** END copyright *** -->
<HR>
<TABLE BORDER><TR><TD WIDTH="200">
<A HREF="http://www.linuxgazette.com/">
<IMG ALT="LINUX GAZETTE" SRC="../gx/2002/lglogo_200x41.png"
WIDTH="200" HEIGHT="41" border="0"></A>
<BR CLEAR="all">
<SMALL>...<I>making Linux just a little more fun!</I></SMALL>
</TD><TD WIDTH="380">
<CENTER>
<BIG><BIG><STRONG><FONT COLOR="maroon">Software Engineering</FONT></STRONG></BIG></BIG>
<BR>
<STRONG>By <A HREF="../authors/rondina.html">Gustavo Rondina</A></STRONG>
</CENTER>
</TD></TR>
</TABLE>
<P>
<!-- END header -->
<H2>Abstract</H2>
The so called software crisis can generate several and serious consequences to computing and IT in the future, mainly on
issues that refers to the free software. This article intends to quickly introduce the reader to some of the problems which
can contribute with this crisis and maybe encouraje users and programmers to adopt the necessary measures to avoid it.
<H2>1. Introduction</H2>
<P>Nowdays the hardware devces are becaming more powerfull and are expanding its capacities and features every day.
But those devices are useless if there are not software that are able to explore those features as much as possible,
thus it is appropriate to say that the software development process, called software engineering, is one of the most
important areas of computing.</P>
<P>To catch up with the rapidly technological advance at the hardware industry, the programmers and software engineers,
whose job is develop the core of the softwares, must keep the idea that it is necessary not just create and develop
a product that works, but a product that implements good software engineering practices, assuring that no computer or
programmer's efforts will be wasted.</P>
<H2>2. Linux, free software and software engineering</H2>
<P>You might be asking yourselves: where does Linux fit on that scenario ? Well, the free software movement can answer
that question. The Linux OS have been one great and successfull project that helped to spread the free software principles,
concepts and philosophy.</P>
<P>In the last decade we can note a significant increasing if we look at the number of Linux users. Users that have
adopted the system at home, at work or even at school. Many of these users had joined to Linux due its source code
availability: any person over the world can get the source, read it, make modifications, copy and redistribute this
code. Most of those users have had already a previous knowledge of computer programming and OSes based on Unix.</P>
<P>However there were users that have adopted Linux just to fill their curiosity, to know and explore a new and different
system and have an idea of how a Unix-like system works; some of them didn't like or didn't get used to Linux and droped
it soon, but most of them have adopted Linux as a way of life and a philosophy.</P>
<P>This new Linux's enthusiastics wanted to learn as much as possible about the system, so, with the source code open
to anyone and built under C and assembler programming languages, they have decided that learning how to programm
would be a good way to start understanting Linux. And this was what happened, a lot of new users have started to programm
and hack codes volunteerly, giving their time and efforts to projects aimming to contribute with the open source community.
Today there are a lot of successfull projects which show to the world that the free software development philosofy really
works.</P>
<H2>3. So, where is the problem ?</H2>
<P>These new programmers had learned the programming languages that are necessary to software development and had put in
practice their knowledge developing software that fits their needs, producing the expected results. However, there are
no warranty that those products are totally realiable and the ideas have been implemented at the best way possible.</P>
<P>This happens due the lack of knowledge at the software engineering area. There are many projects that are developed
by people who don't have much experience at the software development and production, so there are a lack of concepts and
theory to these programmers. To programm isn't just about launching a text editor and start to hack some code and then
compile it, even getting the expected results.</P>
<P>To know the syntax of a programming language doesn't mean to know how to programm and develop good and quality software.
The software development is complex process, since the first algorithm design until the debugging and testing phase. A
programmer who doesn't have the conecpts os language paradigms and their differences (i.e. oriented object programming and
procedural programming); who doesn't know deeply the several types os data structures, such as stacks, queues, lists and
binary trees; or the programmer who doesn't know how a hardware achitecture does arithmetic operations and how their
logical circuits works, can develop a software that, even working, have not been implemented at it must have.</P>
<P>A software that isn't implemented at the right way may cause wast of hardware resources such as processing time of the CPU
or how the memory is managed; waste the programmer's efforts as well, once he can solve trivial problems using a complex and
expensive methods, since he doesn't know an easier way; waste also the features of the language by using it poorly or even
incorrectly. All this things increases the final cost of the project.</P>
<H2>4. How to solve this problem ?</H2>
<P>This kind of problem is know as "the software crisis". Each person who starts to hack and produce new codes without
the right knowledges of good software engineering contributes to the increasement of this crisis.</P>
<P>In the future that can be very dangerous, mainly to the free software community since, in some cases, there is no one in
charge of monitoring and moderating the development phase of the project, once that several projects are developed by
volunteers programmers.</P>
<P>The solution of this problem may be clear: the users and the programmers must study deeply software engineering and
modeling, algorithms analisys, software testing and each paradigms and languages' details. The developers should read more
scientific papers and tecnical books about software engineering. Many programmers just want their software producting the
expected results, but if a programmer wants to be a successfull developer and have high quality and reliable software, it
is essential to know all the theorycal bases that is hide under the practice. Theorycal knowledge is the base to everything.
</P>
<P>A lot of programs and projects starts in the paper, it is not a shame to make some rough draft of the algorithm. Some
times an idea can achieve a high abstraction level which can be more understantable trought a draw. To test the software
before it get into the consumer hands is also important, and there are many different tecnics and issues related to
software testing. To know several programming languages and languages paradigms give the programmer more flexibility
while choosing the best way to solve a problem, since each language has its own limitations. Even the source code
identation is important to increase the readability of the sources. All this things are related with the good software
engineering and improves the quality of your product.</P>
<H2>5. Conclusion</H2>
<P>This article does not intend to criticize neither to discourage hobbyst programmers, but encourage them to know
further and deeply the issues related with the software development process. Only that way we will have good and realiable
software at the next generations.</P>
<P>I hope you have enjoyed this article. Please forgive my really poor english, this is not my native language. Maybe on
a future article it will be improved a bit. Comments, questions and suggestions are always welcome. Feel free to email me
at <a href="mailto:gustavorondina@uol.com.br">gustavorondina at uol dot com dot br</a></P>
<!-- *** BEGIN author bio *** -->
<P>
<P>
<!-- *** BEGIN bio *** -->
<P>
<img ALIGN="LEFT" ALT="[BIO]" SRC="../gx/2002/note.png">
<em>
I am Gustavo Rondina, and I am from Brazil. I am a graduation
student taking the 4th semester of Computer Science course,
but I have been in touch with computers and Linux for about 5
years.
</em>
<br CLEAR="all">
<!-- *** END bio *** -->
<!-- *** END author bio *** -->
<!-- *** BEGIN copyright *** -->
<hr>
<CENTER><SMALL><STRONG>
Copyright © 2003, Gustavo Rondina.
Copying license <A HREF="../copying.html">http://www.linuxgazette.com/copying.html</A><BR>
Published in Issue 95 of <i>Linux Gazette</i>, October 2003
</STRONG></SMALL></CENTER>
<!-- *** END copyright *** -->
<HR>
<TABLE BORDER><TR><TD WIDTH="200">
<A HREF="http://www.linuxgazette.com/">
<IMG ALT="LINUX GAZETTE" SRC="../gx/2002/lglogo_200x41.png"
WIDTH="200" HEIGHT="41" border="0"></A>
<BR CLEAR="all">
<SMALL>...<I>making Linux just a little more fun!</I></SMALL>
</TD><TD WIDTH="380">
<CENTER>
<BIG><BIG><STRONG><FONT COLOR="maroon">An introduction to MultiTail</FONT></STRONG></BIG></BIG>
<BR>
<STRONG>By <A HREF="../authors/vanheusden.html">Folkert van Heusden</A></STRONG>
</CENTER>
</TD></TR>
</TABLE>
<P>
<!-- END header -->
<HTML>
<HEAD>
<TITLE>An introduction to MultiTail</TITLE>
<!-- Written by Folkert van Heusden - www.vanheusden.com -->
</HEAD>
<BODY>
<H2>An introduction to MultiTail</H2>
<H3>Introduction</H3>
<H4>What is MultiTail?</H4>
MultiTail lets you view one or multiple files like the original tail
program. The difference is that it creates multiple windows on your
console (with ncurses). Merging of 2 or even more logfiles is possible. It
can also use colors while displaying the logfiles (through regular
expressions), for faster recognition of what is important and what not. It
can also filter lines (again with regular expressions). It has interactive
menus for editing given regular expressions and deleting and adding
windows. One can also have windows with the output of shell scripts and
other software. When viewing the output of external software, MultiTail
can mimic the functionality of tools like 'watch' and such.
<H4>Why this text?</H4>
When you start multitail without any parameters, it clears the screen and
shows a couple of keys you can press together with a short explanation what
they do. You can then press any of those keys or 'x', 'q' or 'CTRL'+'C' to
exit the program. If you like to know what commandlineparameters can be
given, start multitail with the '-h' parameter.<BR>
The "help" that is given with the methods described above might not be
sufficient, that's why this text was written. If there is still anything
not clear after reading this, do not hesitate to contact me at the
following e-mail address: folkert@vanheusden.com<BR>
<H3>The Basics</H3>
The most trivial use of MultiTail is as follows:
<PRE>
multitail [-i] file
</PRE>
This shows the file 'file' in your terminal-window. At the bottom, a line
(the statusline) is displayed with the name of the file, its size and the
date/time of when the last time the file changed. You can make this status-
line static (not updated) with the '-d' commandline parameter. With '-D' no
statusline is displayed at all.<BR>
You only need to specify the '-i' when the filename starts with a dash ('-').
Something a little more complex is this:
<PRE>
multitail [-i] file1 [-i] file2
</PRE>
This splits your terminalwindow in two windows. In each window, one file is
displayed. Both windows have a statusline giving info. The window with
'file1' is displayed above the window with 'file2'. Instead of above each
other, you can also have them displayed side by side. For that, you can
enter the parameter '-s' on the commandline or press the 'v' key while the
program is running.<BR>
<H3>Scrolling</H3>
Of course you can scroll in the shown files. For that, press the 'b' key.
When you're viewing multiple files, you'll first get a fileselector. Then a
window is displayed with the buffered contents of the selected file
(=window). You can then scroll with the cursorkeys and the page-up and
pagedown key. Press 'x' or 'q' to exit this window. You cannot scroll the
whole file, only the last 100 lines. To reset this limit to something
bigger (or smaller), press the 'm' key. You will then be asked to enter a
new value, e.g. 1000. This parameter can also be set from the commandline
with the '-m <B>value</B>' parameter. With '-m' you set the limit for the next
file, with '-M <B>value</B>' you'll set this parameter for all following files
on the commandline. When you press the 'm'-key, the current buffer is
cleared. So it is also a replacement for pressing the enter key a few times
when using 'tail -f' to view a file.<BR>
<H3>Merging Files</H3>
Then there's the '-I' commandline parameter. It is the same as '-i', only
'-I' merges two or more files together. For example:
<PRE>
multitail [-i] file1 -I file2
</PRE>
a reallife example:
<PRE>
multitail /var/log/apache/access.log -I /var/log/apache/error.log
</PRE>
These two examples will merge the output of the given files into one
window. This can be usefull with, for example, the files given in the
second example: with this example you see what happend just before an
error appeared in the Apache errorlog.
<H3>Viewing Output of External Programs</H3>
As I mentioned in the foreword, one can not only view files with
MultiTail, also the output of other programs (scripts/executables/etc.)
can be put inside one or more windows. To make this happen, you need to
use the '-l' switch. For example:
<PRE>
multitail -l ls
</PRE>
another example:
<PRE>
multitail -l "ping localhost"
</PRE>
As you can see, you need to add doublequotes around the command when it
needs parameters, otherwhise MultiTail would not be able to recognize
what parameters are intended for the selected program or for MultiTail
itself.<BR>
You might have tried the example with the ls-command. You then saw that
MultiTail automatically closes the window when the external command has
finished. There are a few options you can use to control this behaviour.
For example the '-z' parameter: when given, the window is just closed,
the screen redrawed and MultiTail goes on without the popup window
telling you that the program ended.<BR>
Another option is: '-r <B>interval</B>': this will cause the command to be
run every 'interval' seconds. Instead of '-r <B>interval</B>' also the '-R <B>interval</B>'
option is available: when fed to MultiTail, it makes it run the next
command with an interval of 'interval' seconds displaying only the
difference with the previous run of the command! So if you run MultiTail
like this:
<PRE>
multitail -R 3 -l "netstat -p tcp"
</PRE>
you will see state-changes for every TCP-connection: new connections
and connections getting closed.<BR>
As with '-I <B>file</B>', '-L <B>command</B>' also merges the output of the
external command to the previous file or command. Yes: output of
commands can be safely merged with logfiles. Multiple commands, multiple
logfiles, most things you can think of are possible.<BR>
<H3>Colors</H3>
When you have been watching logfiles scrolling by, it can get a little
though after a while to still recognize what is important and what not.
Because of that, MultiTail has the ability to display logfiles in color.
When you give the '-c' parameter, the next given file or command is
showed in color. It decides what color to use by looking at the whole
log-line. If you want it to only use at the programname causing that
logline (when monitoring syslog logfiles for example), you can use the
'-cs' switch. The last option is the '-cS <B>colorscheme</B>' switch. As
parameter it needs the name of a colorscheme. The colorschemes are read
from multitail.conf. In multitail.conf you set by entering regular
expressions what color to use for what "patterns". By default, MultiTail
looks for multitail.conf in the current directory and in the /etc directory.
With the '-z' parameter you can explicitly define what file it should use.<BR>
An example:
<PRE>
colorscheme:postfix
cs_re:yellow:status=sent
cs_re:magenta:queue active
</PRE>
The first line names the current colorscheme. The 'cs_re'-lines define
combinations of regular expressions and a color. With the first 'cs_re'-
line you define that if MultiTail encounters the string 'status=sent' in
a logline that it should print it in the color yellow. The next line
defines that the string 'queue active' must be printed in magenta.
Another example, a little more complex:
<PRE>
colorscheme:syslog
cs_re:green:\[|\]
cs_re:blue:^... .. ..:..:..
</PRE>
The first 'cs_re'-line sets all occurences of '[' or ']' to green and
all lines starting with a date in the format 'Mon DD HH:MM:SS' in blue.
For more details on regular expressions: o'Reilly has <A HREF="http://www.oreillynet.com/search/index.ncsp?sp-q=regular+expressions&sp-k=all&search=search" TARGET="_new">few books</A> on this topic.<BR>
One last thing on colors: if you use '-C' (uppercase 'C') instead of '-c', <I>all</I> following
files will use the parameters you specify at that time, unless you override them with a new
'-c<FONT SIZE=-1>x</FONT>' or '-C<FONT SIZE=-1>x</FONT>' parameter.
<H3>Filtering using regular expressions</H3>
For filtering MultiTail uses regular expressions. To keep things simple, it uses them the
exact same way as 'grep' does: '-e' says: a regular expression follows and '-v' says: invert
it.<BR>
Examples:
<PRE>
multitail -e "gnu-pop3d" /var/log/messages
multitail -v -e "ssh" -v -e "gnu-pop3d" -e "localhost" /var/log/messages
</PRE>
The first example shows only lines from /var/log/messages which have the string "gnu-pop3d" somewhere in them. The second example only shows lines which do <I>not</I> have the string "ssh" and <I>not</I> have the string "gnu-pop3d" and <I>DO HAVE</I> the string "localhost" in them.
<H3>Miscellaneous Options</H3>
There are a few other options not fitting elsewhere, these are:
<TABLE BORDER=1 WIDTH=75%>
<TR><TD WIDTH=75>-f</TD><TD>This makes MultiTail follow the file. In case the original file
gets renamed and a new file is created with the original filename, MultiTail will start
watching the file with the original filename (the one you entered).</TD></TR>
<TR><TD WIDTH=75>-u <B>seconds</B></TD><TD>When using MultiTail over a slow link (a modem connection or
maybe even over HAM) you might want to have a little less frequent updates. With this parameter you
set how frequently MultiTail updates the screen. The default is immediately.</TD></TR>
<TR><TD WIDTH=75>-H <B>interval</B></TD><TD>If you have a connection to some host (on which
you're using MultiTail) which gets automatically disconnected when nothing happens for a
while, you can use '-H'. When used, MultiTail moves the cursor around the screen generating
traffic, keeping your line up.</TD></TR>
<TR><TD WIDTH=75>-V</TD><TD>In case you're wondering what version of MultiTail you're using,
you can start it with the '-V' option. It'll then display its version and exit. You can
also press the 'i' key while it is running.</TD></TR>
</TABLE>
<H3>Is that all?</H3>
<I>Not everything</I> was covered in this manual. For a complete list of options and keys
you can press while MultiTail runs, have a look at the man-page, the output of the '-h'
commandline parameter and the help when you press 'h'-key while the program runs.<BR>
And let's not forget the sourcecode!
<BR>
<BR>
<BR>
<BR>
<FONT SIZE=-1>The latest version of MultiTail can always be found here: <A HREF="http://www.vanheusden.com/multitail/">http://www.vanheusden.com/multitail/</A></FONT>
</BODY>
</HTML>
<!-- *** BEGIN author bio *** -->
<P>
<P>
<!-- *** BEGIN bio *** -->
<P>
<img ALIGN="LEFT" ALT="[BIO]" SRC="../gx/2002/note.png">
<em>
</em>
<br CLEAR="all">
<!-- *** END bio *** -->
<!-- *** END author bio *** -->
<!-- *** BEGIN copyright *** -->
<hr>
<CENTER><SMALL><STRONG>
Copyright © 2003, Folkert van Heusden.
Copying license <A HREF="../copying.html">http://www.linuxgazette.com/copying.html</A><BR>
Published in Issue 95 of <i>Linux Gazette</i>, October 2003
</STRONG></SMALL></CENTER>
<!-- *** END copyright *** -->
<HR>
<TABLE BORDER><TR><TD WIDTH="200">
<A HREF="http://www.linuxgazette.com/">
<IMG ALT="LINUX GAZETTE" SRC="../gx/2002/lglogo_200x41.png"
WIDTH="200" HEIGHT="41" border="0"></A>
<BR CLEAR="all">
<SMALL>...<I>making Linux just a little more fun!</I></SMALL>
</TD><TD WIDTH="380">
<CENTER>
<BIG><BIG><STRONG><FONT COLOR="maroon">Mexico is conquered by FLOSS</FONT></STRONG></BIG></BIG>
<BR>
<STRONG>By <A HREF="../authors/boue.html">Felipe Barousse Boue</A></STRONG>
</CENTER>
</TD></TR>
</TABLE>
<P>
<!-- END header -->
<CENTER>
<TABLE WIDTH=580 BORDER=1 CELLPADDING=5 CELLSPACING=2 STYLE="page-break-before: always">
<TR BGCOLOR="#7788aa">
<TD>
<P ALIGN=CENTER><FONT SIZE=4><FONT COLOR="#ffffff">G A C E T A
D E L I N U X</FONT></FONT> <FONT SIZE=2>...<I>Making
Linux just a little more fun!</I></FONT>
</P>
</TD>
</TR>
<TR>
<TD>
<P ALIGN=CENTER><STRONG><FONT SIZE=5><FONT COLOR="#800000">Veracruz,
México is conquered by FLOSS</FONT></FONT></STRONG><BR><STRONG>By:
<A HREF="mailto:editor@gacetadelinux.com">La Gaceta de Linux</A></STRONG>
</P>
</TD>
</TR>
</TABLE>
</CENTER>
<P ALIGN=RIGHT> </P>
<P>During the past week (17-19 Sept, 2003) an international crowd of free/libre and Open
Source Software experts gathered at the Mexican port of Veracruz
during the celebration of the third edition of the <A HREF="http://congreso.gulev.org.mx/">GULEV
Linux Congress</A>. (GULEV = Veracruz LUG)</P>
<P>Names such as Bruce Momjian from the <A HREF="http://www.postgresql.org/">PostgreSQL</A>
project, Miguel de Icaza from <A HREF="http://www.ximian.com/">Novell/Ximian</A>,
Felipe Barousse from <A HREF="http://www.piensa.com/">Piensa
Technologies</A>, Bdale Garbee from <A HREF="http://www.debian.org/">Debian</A>,
Gunnar Wolf a <A HREF="http://www.gwolf.cx/"><SPAN LANG="en-US">leading
Mexican software engineer</SPAN></A> and contributor to Debian and
many many more <A HREF="http://congreso.gulev.org.mx/invitado.php">top
stars</A> of the worldwide FLOSS community gave conferences,
tutorials and personal chat sessions during the three day event in
Veracruz.</P>
<P>Weather was warn,<SPAN LANG="en-US"> attendees </SPAN>were excited
and you could even look in everyone's faces the joy of being able to
share experiences, ideas and learn more about the new libre
technologies.
</P>
<P>I could tell that most of the<SPAN LANG="en-US"> attendees </SPAN>were
actually students and young programmers -in the twenties or early
thirties-<SPAN LANG="en-US"> although </SPAN>you could see in each
session a couple of business people and even some... lets say;
seniors, interested in Linux when they stood up to ask a question or
express a comment or idea. I was glad to see this mix in the various
audiences.</P>
<P>In this third year of the GULEV Congress, the scenario was nothing
less than the <A HREF="http://www.wtcveracruz.com.mx/Page_English.htm">World
Trade Center in Veracruz, México</A>... What other place could
Linux, free software and open source ask for to host an event like
this ? The place was indeed superb.</P>
<P>The first year the Congress was held at a University's premises,
the second year at the ball rooms in a hotel within the city. The
main organizers of the event, Miguel Angel López and Lucy
Guzmán Mijangos made a great job in making this year's show
run smoothly, making everyone feel satisfied with the Congress'
programme and returning home with an enhanced sensation that the
FLOSS movement in Mexico is really growing up, getting mature and
ready to compete with any other technologies out there. “We
need to improve a lot more...” said Miguel Angel, I couldn't
agree more, there is always room to improve an event like this, but I
can also tell that we have come a long way since the first time, two
years ago.</P>
<P>Some of the anecdotes about conferences and topics I have and that
you could hear people commenting while on the hallways just after a
conference and while waiting for the next are:</P>
<P>Bruce Momjian, who came with his son Mathew gave a session about
Mastering PostgreSQL administration. The room was full and everyone
attentive to all tips, hints and recipes that Bruce had to say. On a
fun side of the Congress, I had a chance to briefly chat with Mathew
who said he really likes “...<SPAN LANG="en-US"> traveling </SPAN>with
dad and liked<SPAN LANG="en-US"> Mexican </SPAN>food a lot... yummy!”
he said.</P>
<P>The second Bruce's conference was a bit more in the visionary side
of PostgreSQL and what to<SPAN LANG="en-US"> expecting </SPAN>the
next versions.</P>
<P>Larry Wall was expected to be in Veracruz with all of us,
unfortunately he got ill and couldn't make it. We hope that by the
time you are reading this, he is well up again.</P>
<P>Miguel de Icaza spoke about Mono and how it<SPAN LANG="en-US">
accelerated </SPAN>the productivity for software<SPAN LANG="en-US">
development </SPAN>in Linux. He is clearly concerned in providing the
most powerful tools and<SPAN LANG="en-US"> technologies </SPAN>to
Linux programmers as to keep and enhance their competitiveness while
developing software.</P>
<P>Bdale Garbee on the other hand spoke about where is Debian
standing now; meanwhile the well known technology research engineer
Francisco de Urquijo Niembro gave a lecture regarding the current
status of Mexico in relation to the ongoing digital revolution. “Open
and Free technologies are the<SPAN LANG="en-US"> future..... we </SPAN>will
have open specifications and standards in cars, home building, and
everything else....” he said.</P>
<P>Felipe Barousse conference was about the Zope Corporation's Zope
framework and how he has been using it to develop powerful business
applications which are already being used by large companies; he
concluded: “Zope is very <SPAN LANG="en-US">inexpensive</SPAN>,
great,powerful, easy to use and extremely scalable.... in short an
ideal platform for web based business applications.”</P>
<P>Federico Mena Quintero participation was about the concepts and
ideas used for programming applications in GTK+ where Drag and Drop
features are required.
</P>
<P>During his conference, Fernando Romo talked about the concepts of
constructing application's logic within the data base itself rather
than leaving all logic at the application level. A nice collection of
suggestions and experiences where discussed in Fernando's conference.</P>
<P>On another hand of topics, Gunnar Wolf talked about Object
Oriented Perl.</P>
<P>There were many more topics addressed in Veracruz, actually 53
conferences took place with themes ranging from building clusters, to
designing and installing a WiFi networks, to programming in Perl and
Python.
</P>
<P>More than 500 confirmed persons went to Veracruz just to
participate in this great FLOSS show in Mexico. A great touch to the
event was that there was free WiFi internet connectivity in all
conference rooms and during all conference times.</P>
<P>At the end of the event, the following day, there was a small trip
to the prehispanic ruins site called the “Tajin”, about a
4 hours drive from Veracruz.<SPAN LANG="en-US"> Although </SPAN>I was
supposed to get a phone call and or note advising me of the meeting
point and time to leave, somehow I never got that note so I missed
the excursion which I really regret since I bet it for sure was fun
to be in the bus with all my fellow speakers..... maybe next time,
now I have a great excuse for going next year.
</P>
<P>I really expect next year's congress to be even better and to see
it grow in many more aspects as it has been doing during these<SPAN LANG="en-US">
three editions. </SPAN>I can't wait to my 2004 trip to Veracruz.</P>
<P>In the mean time what we can say is that the port of Veracruz,
México was indeed conquered by the penguins and by FLOSS
enthusiasts just as it was taken by the conquistadores many centuries
ago.</P>
<!-- *** BEGIN author bio *** -->
<P>
<P>
<!-- *** BEGIN bio *** -->
<P>
<img ALIGN="LEFT" ALT="[BIO]" SRC="../gx/2002/note.png">
<em>
</em>
<br CLEAR="all">
<!-- *** END bio *** -->
<!-- *** END author bio *** -->
<!-- *** BEGIN copyright *** -->
<hr>
<CENTER><SMALL><STRONG>
Copyright © 2003, Felipe Barousse Boue.
Copying license <A HREF="../copying.html">http://www.linuxgazette.com/copying.html</A><BR>
Published in Issue 95 of <i>Linux Gazette</i>, October 2003
</STRONG></SMALL></CENTER>
<!-- *** END copyright *** -->
<HR>
</BODY></HTML>
|