K: Nekem meg a helyi hálózattal van gondom! V: Az bizony baj...
K: Még az is lehetséges, hogy én állítottam be valamit rosszul? V: Elméletileg előfordulhat.
K: Ha több információt adnék, tudnál pontosabb választ adni? V: Nem lehetetlen... ifconfig, route -n, meg persze az, hogy mi az ami nem működik (nem, ne azt írd, hogy "a gépem nem látja a hálózatot").
K: Mindent megcsináltam és beállítottam, de szeretném látni is a Windows-os gépeket linuxból és fordítva! V:(fejét csapkodja a falhoz és sír) Mit szeretnél?! K: Ne legyél má' ideges, arról beszélek, amit a Windows "File and Printer Sharing"-nek illetve "Client for Microsoft Network"-nek nevez. V: Jó, így már értem. A "File and Printer Sharing"-nek a Samba server a megfelelője, ha nem találsz a rendszeredben felhasználóbarát (grafikus, kattintós) beállítási lehetőséget (pl: swat, webmin), akkor a következőknek nézz utána: smbd, nmbd, smb.conf, testparm. K: És a "Cient for Microsoft Network"? V: Mint az előbb: vagy valamilyen megkönnyített interface-en keresztül (pl konqueror-ban smb:// vagy a TkSmb), vagy a UNIX-os módszerrel az alábbiakkal: smbclient, mount, umount, fstab. K: És üzengetni hogyan tudok SMB-n át? V: Pl a "smbclient -M"-mel vagy a linpopup-pal.
K: Mindent megcsináltam és beállítottam, de szeretném látni is a Windows-os gépeket linuxból és fordítva! V:(fejét csapkodja a falhoz és sír) Mit szeretnél?! K: Ne legyél má' ideges, arról beszélek, amit a Windows "File and Printer Sharing"-nek illetve "Client for Microsoft Network"-nek nevez. V: Jó, így már értem. A "File and Printer Sharing"-nek a Samba server a megfelelője, ha nem találsz a rendszeredben felhasználóbarát (grafikus, kattintós) beállítási lehetőséget (pl: swat, webmin), akkor a következőknek nézz utána: smbd, nmbd, smb.conf, testparm. K: És a "Cient for Microsoft Network"? V: Mint az előbb: vagy valamilyen megkönnyített interface-en keresztül (pl konqueror-ban smb:// vagy a TkSmb), vagy a UNIX-os módszerrel az alábbiakkal: smbclient, mount, umount, fstab. K: És üzengetni hogyan tudok SMB-n át? V: Pl a "smbclient -M"-mel vagy a linpopup-pal.
K: Még mindig nem tudok netezni! Mi lehet a baj? V: Egy picit várnod kell a válaszra... K: Meddig? V: Míg kifejlesztem a távolbalátás képességét... K: Lehet hogy több információt kellene adnom? V: Lehet... ping 217.20.131.3 működik? (Igen/Nem, ha nem, mi a hibaüzenet?) ping forum.index.hu működik? (Igen/Nem, ha nem, mi a hibaüzenet?) route -n mit ír ki? (root-ként futtasd) ifconfig mit ír ki? (root-ként futtasd)
K: Nem írtad az idézőjel nélküli $@-ot! V: Az pont ugyanúgy működik, mint az idézőjel nélküli $*.
K: Mik azok az & jelek a soraid elején? V: Valószínűleg -t akartam írni, csak elrontottam. Korábban a fórumon volt <PRE></PRE>, de hála a fejlődésnek ez megszűnt.
K: Igaz, hogy a linux-on lehet Novell Netware szervert emulálni? V: Valamikor régen lehetett, lásd a IPX-HOWTO idevágó részét. Valószínűleg még most is működik, bár mikor próbából lefordítottam, voltak némi problémái... lásd valamelyik topikban
K: És az asm-generic? V: Rendben, legyen az is, tehát: /usr/include/linux -> /usr/src/linux/include/linux /usr/include/asm -> /usr/src/linux/include/asm /usr/include/asm-generic -> /usr/src/linux/include/asm-generic /usr/include/scsi -> /usr/src/linux/include/scsi
K: Na, "ifconfig" tud az eth0-ról! V: És, jó az IP-cím, amit ír?
K: Mi a jó IP, ha router-em van? V: Leggyakrabban 192.168.0.*, 192.168.1.* vagy hasonló. K: És ha nincs? V: Akkor szinte bármi lehet, kivéve a 192.168.*.*-ot, és a többi úgynevezett helyi IP-címet.
K: És még mit nézzek meg? V: Mondjuk a route -n outputját, abban kellene látnod a routolási táblázatot, különös tekintettek a default gateway-re. (Tipikusan 192.168.0.1, 192.168.1.254 vagy hasonló).
K: Továbbá? V: Próbáld megpingetni a lokális hálózat gépeit! K: He? V: Pl ha a géped címe 192.168.0.8 akkor próbáld ezt: ping 192.168.0.255. Erre az összes lokális gépnek válaszolnia illene.
K: Szóval akkor hogyan tudok platform-független módon definálni egy 32-bites változót? V: Az eddigiek alapján sehogy... szerencsére ezt a gondot a tudós fejlesztők is felismerték, és a sys/types.h-ban definiálták az int16_t, int32_t, int64_t típusokat.
K: C-programban mekkorák a short, int, long, long long, size_t, void *, ptrdiff_t adattípusok? V: Platformfüggő.
K: És mégis, mit lehet tudni róluk? V: Hát... legtöbbször sizeof (char)=1 sizeof (short)=2 sizeof (short)<=sizeof (int)<=sizeof (long)<=sizeof (long long) sizeof (long)=4/8 sizeof (long long)=8 sizeof (void *)=sizeof (long) sizeof (size_t)=sizeof (long) sizeof (ptrdiff_t)=sizeof (void *)
K: És mi következik ebből? V: Pl, ha olyan adatot akarsz felvenni, ami számot és pointert is tartalmazhat, akkor az ne "int" legyen, hanem "long", és máris hordozhatóbb a programod.
K: Nem megy az internet! V: Sajnálatos. Kérdésed van?
K: Van: mit csináljak, hogy működjön az ADSL/CATV internet? V: Ellenőrizd, hogy van-e Ethernet-kártya a gépedben, össze van-e kötve a modemmel (haladó esetben router-rel). Ha van hálókártya (magyarul NIC), akkor 1. derítsd ki a típusát (de pontosan ám, nem csak úgy hogy "Intel" meg "integrált"). 2. ellenőrizd, hogy égnek/vilognak-e rajta kis lámpácskák (LED-ek).
K: És ha tudom a NIC típusát? V: Derítsd ki, hogy a linux támogatja-e, és ha igen, minő driverrel (kernelmodullal)! K:Én derítsem ki?! V: Igénybe vehetsz fizetett segítőt is, de akkor minek neked ez a FAQ? K: De hol keressem az információt? V: Pl a /usr/src/linux/Documentation könyvtárban, illetve az interneten. Egy régebbi leírás pl itt: http://www.faqs.org/docs/ethernet/Ethernet-HOWTO.html.
K: Honnan tudom, hogy szerencsésen betöltődött a driver? V: Próbáld ki ezt a parancsot: ifconfig -a. Ha van az outputban eth0, akkor jó a helyzet.
K: Két winchesterem van, az elsőn Windows. Lehet azt, hogy a másodikra telepítem a linuxot, meg a lilo-t, és a BIOS-ban kavarok a boot-orderrel? V: Lehet. K: És fog működni a Windows is meg a linux-is? V: Szerintem legfeljebb az egyik, de lehet hogy egyik sem.
K: Akkor mit javasolsz? V: Telepítsd a lilo-t teljes egészében az első winchesterre, pl stage1 (boot=) az MBR-be vagy az Extended partícióba, a stage2 (map=) egy külön file-ba, akár egy külön (linux-os) partíción... amit akár /boot-ként használhatsz.
K: Miért nem lehet a stage2 a második winchesteren? V: Ha biztos vagy benne, hogy nem fogod kiszerelni/ nem fog elromlani/ stb, akkor persze lehet ott is. Ha ezek valamelyike mégis előfordulna, akkor az elsőről sem tudsz bootolni addig, míg a lilo stage1-et le nem szeded róla.
K: Két linux (alapú OS) is van a gépemen. Lehet őket egy lilo-ból indítani? V: Lehet. Ha mondjuk az "A" rendszerben vagy, akkor mountold a "B" rendszer /boot partícióját pl /mnt/B/boot néven, és a /etc/lilo.conf-ba írd be, hogy image=/mnt/B/boot/bzImage label=B root=/dev/hda9 # root fs for "B" linux és futtasd a /sbin/lilo-t!
K: Hol lehetne többet megtudni a lilo-ról? V: Meg fogsz lepődni: a lilo(8) és lilo.conf(5) manualokban.
K: Legalább annyit árulj el, hogy mi az a stage1 meg stage2? V: A stage1 az a bizonyos egyszektornyi program, akiről a (111)-ben beszélgettünk. Feladata az, hogy betöltse a stage2-t. Ja és az is, hogy kiíja, hogy LI. (Ha az előbb nem mondtam volna, a /etc/lilo.conf "boot=" sora mondja meg, hogy hová kerüljön.)
K: És a stage2? V: A stage2 adja ki a menüt (ha kértük), enged választani, azután betölti a kívánt kernelt, vagy valami mást ("other=" opció). Továbbá kiírja hogy LO.
K: Hol vagyon ez a stage2? V: A map-file-ban, ugyanott van az egyes betölthető kernelek helye leírva (szektorcím). K: Szektorcím? Hát a lilo nem a file-név alapján találja meg az egyes kerneleket? V: Szép is lenne! Valahányszor új file-rendszert talál ki valaki, rögtön a lilo-ba is bele kellene hack-olni annak a kezelését... K: Dehát a grub éppen ezt csinálja! V: Lehet, de mi most a lilo-ról beszélünk!
K: Lehet a lilo-t is meg a kernelt is floppy-ra telepíteni? V: Ha elférnek, akkor igen. Mondjuk csinálj ehhez egy külön /floppy/lilo.conf.floppy file-t is, hogy az is kéznél legyen (/sbin/lilo -C /floppy/lilo.conf.floppy parancsot ne felejtsd majd el!)... olyasmi tartalommal, hogy boot=/dev/fd0 map=/floppy/map root=/dev/hdaN # saját root-partíciód! image=/floppy/bzImage # vagy ahogy a kerneledet hívják label=Floppy read-write
(Persze tehetsz bele további image= és other= sorokat is, a saját rendszerednek megfelelően)
K: Hová lehet a lilo-t (illetve annak elsődlegesen betöltődő részét) telepíteni? V: Floppy esetén a Boot Sector-ba, Hard Disk esetén az MBR-be, vagy valamelyik partíció Boot Sector-ába.
K: Melyik partíció jöhet szóba? V: Lehet Primary, Extended vagy Logikai... de semmi esetre sem olyan, amiben DOS-os vagy Windows-os filerendszer van (fat,vfat,ntfs).
K: Hogy kerül a vezérlés a lilo-ra? V: Floppy vagy MBR esetén egyértelmű a dolog; Primary vagy Extended partícióba telepített lilo akkor futhat, ha az a partíció az aktív (bootable) jelzésű.
K: Az Extended Partíció nem lehet aktív! V: Szavazzunk; szerintem lehet... legalábbis az én gépemen így van. Lehet hogy a Logikai Partícióra gondolsz? Az tényleg nem lehet aktív.
K: Akkor nincs is értelme oda lilo-t tenni! V: Normálisan nincs... de ha akarsz, tehetsz a gépedre több lilo-t is, akik egymást is indítgathatják... így akár egy Logikai Partíción lévő lilo is indítható.
K: Elegem van az egész lilo-ból! Hogyan tudom kiszedni az MBR-ből? V: Például az "FDISK /MBR" parancssal DOS-ból.
K: És ha egy partíció boot-sectorán van? V: Akkor elég ha az FDISK-kel leszeded a partícióról az aktív (bootable) jelzést, és átrakod a Windows-osra.
K: Na jó, hála a tanácsaidnak szerencsésen kizártam magam a rendszeremből! Mit csináljak? V: Keresd elő az oly fontos rescue disket (CD-t), és olvasd el a (22)-es hozzászólást!
K: Hány megnyitott file-om lehet egyszerre? V: Shell-ben az ulimit -n mondja meg, az ulimit -n <érték> állítja be.
K: Csak ezt lehet az ulimit-tel hangolni? V: Nem, próbáld ki a ulimit -a-t!
K: És programból? V: Az ulimit(2) rendszerhívás megszűnt, mint könyvtári függvény (ulimit(3)) még létezik, de elavult. A getrlimit(2) és setrlimit(2) ajánlható, az RLIMIT_NOFILE paraméterrel.
K: Igen, de az "ulimit -n"-nel csak csökkenteni tudom a korlátot! V: Akkor nézz utána a "-H" és "-S" opcióknak! Az előbbi a "hard-limit"-et állítja, ezt csak csökkenteni lehet, az utóbbi a "soft-limit"-et, ez növelhető is, de csak a "hard-limit" méretéig. K: És végülis melyik számít a gyakorlatban, azaz hány megnyitott file-om lehet? V: A kisebbik, vagyis a soft-limit.
K: A 'root' sem növeleheti a hard-limitjét? V: Dehogynem... (egyébként a manual szerint a "CAP_SYS_RESOURCE capability" kell hozzá... akármi is légyen az)
K: És hogy lehet ezt globálisan szabályozni? V: PAM használata esetén a /etc/security/limits.conf-ban, pl:
* hard nofile 2048 * soft nofile 1024
K: Megtörtént, de semmi hatása! V: Természetesen! Előbb a /etc/pam.d/login file-ba tegyél egy session required pam_limits.so tartalmú sort!
K: Nem mennek a java-applet a Mozillámban, az about:plugins sem mutatja hogy tudna appletet. V: Elhiszem.
K: Mit tegyek, hogy menjen? V: A http://java.sun.com-ról töltsd le a JRE (java run-time environment) nevű szoftverkomponenst! (Ha tervezed, hogy java-ban fogsz programozni, akkor a JDK-t is választhatod, részhalmazként tartalmazza a JRE-t)
K: És hogyan fogja tudni a Mozilla használni ezt a JRE-t? V: A /some/where/mozilla*/plugins könyvtárba kell be szim-linkelni a /there/where/jre/plugin/i386/ns610-gcc32/libjavaplugin_oji.so file-t (nem másolni!).
K: Nekem nincs "jre" könyvtáram, csak "j2re1.4.2_01" vagy ilyesmi. V: Használd azt, vagy az egyszerűség kedvéért csinálj erre is egy szimlinket: ln -s j2re1.4.2_01 /there/where/jre.
K: Mi lenne az előnye egy ilyen linkelésnek? V: Ha mondjuk frissíted a jre-t, csak a szimlinket kell átállítanod, és egycsapásra mindenki az új verziót látja.
K: Nálad például hogy néz ki mindez? V: ls -l /opt/jre /usr/local/mozilla /usr/local/mozilla/plugins/libjavaplugin_oji140.so /opt/jre -> j2re1.4.2_01 /usr/local/mozilla -> mozilla.178 /usr/local/mozilla/plugins/libjavaplugin_oji140.so -> /opt/jre/plugin/i386/ns610-gcc32/libjavaplugin_oji.so
K: Van egy problémám, be is írtam valamelyik topikba, mégse válaszolt senki! Lehet hogy valami baj van a kérdésemmel? V: Lehet. Itten tessél szíves tájékozódni: Hogyan kérdezzünk okosan
K: Igaz, hogy vannak a Linux-on kívül is UNIX-szerű rendszerek? V: Igaz. K: És ezek a UNIX-szerű rendszerek mennyire kompatibilisek egymással? V: Hát úgy félig-meddig: valószínűleg van ugyanolyan nevű parancs, mint amit Linux-ból ismersz, csak mást csinál, vagy kevesebb opciót ismer stb.
K: Egy script-ben hogyan lehet lekérdezni az operációs rendszer mibenlétét? V: Az 'uname' paranccsal, pl
Egyik gép: uname -m: i686 uname -p: unknown uname -s: Linux uname -v: #1 Wed Jun 15 15:14:50 CEST 2005 uname -r: 2.6.11
K: Mit csinál a kernel, mikor szerencsésen inicializálta magát? V: Mountolja a root-filerendszert. K: Az melyik? V: Amit a root= paraméterrel átadsz neki, illetve ami bele van defaultolva. K: Hogyan tudom 'beledefaultolni'? V: Az rdev paranccsal.
K: És ha mountolt, akkor kész is van? V: Nem még egy programot is elindít. K: Na és melyiket? V: Amit az init= paraméterrel átadsz neki, illetve a /sbin/init, /etc/init, /bin/init, /bin/sh programok valamelyikét (vagy is azt, amelyiket elsőként megtalál ebben a sorrendben).
K: És ha ez megvan, akkor megadhatom a mount-nak az acl opciót, és kész? V: Igen, de azért nézzünk egy példát: touch mano; getfacl mano # file: mano # owner: root # group: root user::rw- group::r-- other::r-- setfacl -m u:teve:w mano; getfacl mano # file: mano # owner: root # group: root user::rw- user:teve:-w- group::r-- mask::rw- other::r--
Ezzel előidéztük azt a rendkívül vicces állapotot, hogy a teve user tudja írni ezt a file-t, de nem tudja olvasni... bővebben lásd a man setfacl-t
K: Mifene az a suEXEC az Apache-ban? V: A CGI (és SSI) programok futtatásánál van jelentősége: ha van suEXEC, akkor a "teve" felhasználó public_html könyvtárában lévő CGI a "teve" felhasználó nevében (jogaival) fog futni; ha nincs, akkor a "www-data" felhasználó nevében.
K: Van erre valami bizonyíték? V: CGI-ből futtattam az "id -a" parancsot, annak a kimenete a két esetben: van: uid=1001(teve) gid=100(users) groups=7(lp), 20(dialout), 25(floppy), 29(audio), 100(users), 998(gnokii), 1000(friends) nincs: uid=33(www-data) gid=33(www-data) groups=33(www-data)
K: Hogyan lehet ezt szabályozni? V: Fordítási opció, hogy egyáltalán legyen-e ilyen opció az Apache-ban, ha van, akkor a /usr/*apache*/suexec program meglétén múlik, hogy működik-e ez a funkció. (A file helye disztribúciófüggő).
K: Készül napló a suEXEC használatáról? V: Igen /var/log/apache/suexec néven (vagy hasonló).
K: Nagyszerű, ez a /root/public_html-beli CGI-kre is vonatkozik? V: Nem, ennél azért óvatosabbak az Apache fejlesztői;)
K: Mire jó az strace? V: Egy programfutás rendszerhívásait lehet vele naplóztatani, hibakereséshez nagyon hasznos lehet.
K: Mik az opciói? V: Néhány fontosabb: -o: output file -f: a gyermekfolyamatokat is kövesse -s <méret>: stringeket milyen hosszban írja ki -t vagy -tt: időpontot is naplózzon -T: a rendszerhívás által elhasznált időt is naplózza -p <pid>: egy már futó programot kövessen
K: Akkor egy példa: V: strace -t -f -o /tmp/ls.log ls K: Másik? V: strace -f -p $(pidof inetd)
K: De én a programokat nem parancssorból indítom, hanem rákattintok egy desktop-ikonra... V: Valahogy nyomozd ki, hogy az az ikon ténylegesen milyen programot indít el;)
K: Mégis mit keressek egy ilyen strace-s outputban? V: Nem olyasmi ez, amibe ne tudnál pár hónap alatt belejönni;) Próbálj olyasmiket találni, hogy "-1, error, failed, wrong, not found"
K: Hogy is van ez a DISPLAY?
V: Így: host:server.screen. Ebből a "host" elhagyható/elhagyandó, ha az a lokális gép, a "server" egy szám (0 vagy több), ami az X-server sorszáma a gépen belül, a screen szintén egy szám, akkor van jelentősége, ha az illető X-server több képernyőt (screen-t) kezel egymaga, alapértelmezése 0.
K: Például?
V: Például: export DISPLAY=:0 első (egyetlen) lokális szerver; export DISPLAY=100.101.102.103:0 távoli gépen futó első (egyetlen) szerver (mármint az X-klienshez képest távoli, a felhasználóhoz remélhetőleg közeli gép).
K: Szóval a ":0" az ugyanaz mint a "127.0.0.1:0"?
V: Nem egészen, az első unix-domain socketet fog használni, a második TCP-t... bármit is jelentsen ez;)
K: Ez nagy sebességkülönbség?
V: Nem szükségszerűen... elméletileg a unix-domain kicsivel gyorsabb kellene legyen, de könnyen lehet, hogy ez platformfüggő...