Naprej Nazaj Kazalo

6. Rešitve različnih pogostih težav

6.1 Zakaj je videti, da povezave FTP obvisijo?

Pri prenosih FTP, ki nenadoma umrejo, je videti, da se to zgodi zaradi nekakšne prekoračitve vmesnega pomnilnika. To se zgodi tako s strežniki z Linuxom kakor z Microsoftovimi strežniki. V sistemih Linux je videti, da se problem pojavi pogosteje s strežniškim programjem distribucije.

Če dobivate napake ,,ftp: connection refused errors``, je težava verjetno povezana s premalo avtentifikacije. Glej Zakaj moj strežnik za FTP ali telnet ne dovoljuje prijav?.

Eden od način za popravilo je, da nadomestite distribucijski strežnik FTP s prenosom strežnika FTP za OpenBSD v Linux. Domača stran je: http://www.eleves.ens.fr:8080/home/madore/programs/.

Za namestitev strežnika BSD sledite navodilom za namestitev in si oglejte strani referenčnega priročnika za inetd in inetd.conf. (Če imate novejši xinetd, glejte spodaj.) Zagotovo povejte inetd, naj sam poganja demon BSD, ne kot podproces, denimo, tcpd. Zakomentirajte vrstico, ki se začne s ,,ftp``, v /etc/inetd.conf in jo nadomestite z vrstico kot (če nameščate novi ftpd v /usr/local/sbin/):

# Izvirni vnos, zakomentiran.
#ftp stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.ftpd

# Nadomestni vnos:
ftp stream tcp nowait root /usr/local/sbin/ftpd -l
Nadomestni strežnik bo postal dejaven, ko boste znova zagnali sistem ali poslali (kot root) signal SIGHUP strežniku inetd, npr.:
# kill -HUP inetd
Za nastavitev xinetd naredite vnos v /etc/xinetd.d skladno z navodili na strani referenčnega priročnika o xinetd.conf. Spet preverite, ali so argumenti ukazne vrstice pravilni in ali ste namestili datoteki /etc/ftpusers in /etc/pam.d/ftp. Potem znova zaženite xinetd z ukazom:
/etc/rc.d/init.d/xinetd restart
Ukaz bi moral sporočiti ,,V redu`` in vnovični zagon bi moral biti zapisan v sistemskem dnevniku sporočil.

6.2 Ukaz free izvrže jedro (dumps core)

V Linuxu 1.3.57 in poznejših se je format datoteke /proc/meminfo spremenil tako, da ga izvedba programa free ne razume več.

Poiščite najnovejšo različico z mesta ftp://metalab.unc.edu/pub/Linux/system/Status/ps/procps-0.99.tgz.

6.3 Zakaj se Netscape pogosto sesuje?

Netscape se ne bi smel sesuti, če sta Netscape in omrežje pravilno nastavljena. Nekaj stvari, ki jih preverite:

6.4 Zakaj moj strežnik za FTP ali telnet ne dovoljuje prijav?

To se nanaša na strežniške demone, ki odgovarjajo odjemnikom, a ne dovoljujejo prijav. V novih sistemih, v katere je nameščena priključna overovitev z moduli (angl. Pluggable Authentification Modules, PAM), glejte datoteko z imenom ftp ali telnet v imeniku /etc/pam/ ali /etc/pam.d/. Če ustrezne overovitvene datoteke ni, morajo biti navodila za nastavitev overovljanja povezav FTP in Telnet v /usr/doc/pam-. Oglejte si tudi odgovor na FTP strežnik pravi: 421 service not available, remote server has closed connection.

Če gre za strežnik FTP v starejšem sistemu, preverite, ali je v /etc/passwd račun, še posebej anonymous.

Taka težava lahko nastane tudi zaradi nezmožnosti pravilne razrešitve naslova računalnika, še posebej, če uporabljate protokol za inverzno razrešitev naslova (angl. Reverse Address Resolution Protocol, RARP). Najpreprostejši odgovor na to je, da navedete vsa relevantna imena računalnikov in naslove IP v datotekah /etc/hosts v vsakem stroju. (Glej zgled datotek /etc/hosts in /etc/resolv.conf v Sendmail čaka do minute za vsak ukaz.) Če ima omrežje notranji DNS, preverite, ali lahko vsak računalnik z njim razreši omrežne naslove.

Če se gostiteljski stroj sploh ne odziva na odjemnike FTP ali Telnet, potem strežniški demon ni pravilno nameščen ali pa sploh ni nameščen. Glej strani referenčnega priročnika za: inetd in inetd.conf v starejših sistemih ali xinetd in xinetd.conf pa tudi ftpd in telnetd.

6.5 Kako lahko zasledujem vse svoje zaznamke v Netscapu?

To se verjetno nanaša tudi na druge brkljalnike. Na menuju Preferences/Navigator nastavite svojo domačo stran na datoteko ~/.netscape/bookmarks.html. Če je, denimo, vaše uporabniško ime ,,smith``, nastavite domačo stran na:

file://home/smith/.netscape/bookmarks.html

Taka nastavitev vam bo ob zagonu Netscapea prikazala lepo urejen (čeprav morda dolg) seznam vseh zaznamkov. Datoteka se samodejno osveži vsakič, ko dodaste, zbrišete ali obiščete katero od zaznamovanih strani.

6.6 Zakaj računalnik kaže napačen čas?

V vašem računalniku sta dve uri. Strojna (CMOS) teče tudi, ko je računalnik ugasnjen, in se uporablja pri zagonu sistema in v okolju DOS (če ga uporabljate). V Linuxu pa skrbi za običajni sistemski čas, ki ga prikažete in spremenite z ukazom date, jedro.

Z ukazom /sbin/clock (v številnih distribucijah se zdaj imenuje hwclock) si lahko ogledate čas v CMOS in uskladite prvo ali drugo uro -- glej man 8 clock ali man 8 hwclock.

Več programov je, ki popravijo eno ali obe uri s sistematičnim popravljanjem ali prek omrežja. Morda so nekateri od njih že nameščeni v vašem sistemu. Poiščite adjtimex (popravki), odjemnike za omrežni časovni protokol (angl. Network Time Protocol, NTP) netdate, getdate in xntp, ali zbirko strežnika in odjemnika za NTP, kot je chrony. Glej Kako najti določen program?.

6.7 Zakaj skripti vrste setuid ne delujejo?

Ni mišljeno, da bi. Ta možnost je namenoma onemogočena v jedru Linuxa, saj so skripti, ki se izvajajo pod tujim računom, skoraj vedno razpoka v sistemu varnosti. Sudo in SuidPerl lahko ponudita več varnosti kakor skripti ali izvedljive datoteke Setuid, še posebej, če so poganjalna dovoljenja omejena na določeno uporabniško številko ID ali skupinsko številko ID.

Če vas zanima, zakaj so skripti setuid razpoka v sistemu varnosti, si preberite PZV (FAQ) skupine comp.unix.questions.

6.8 Zakaj se prosti pomnilnik, ki ga sporoči free, manjša?

Podatek ,,free``, ki ga izpiše ukaz free, ne zajema pomnilnika, uporabljanega kot diskovni predpomnilnik -- vidite ga v stolpcu ,,buffers``. Če vas zanima, koliko pomnilnika je zares prostega, seštejte obe številki -- novejše različice ukaza free izpišejo dodatno vrstico s tem podatkom.

Diskovni predpomnilnik hitro raste takoj po zagonu Linuxa. Ko nalagate čedalje več programov in uporabljate čedalje več datotek, se njihova vsebina shranjuje v predpomnilnik. Čez nekaj časa se poraba predpomnilnika stabilizira.

6.9 Zakaj se sistem neznansko upočasni, ko dodam pomnilnik?

To je pogost simptom onemogočenega predpomnenja dodatnega pomnilnika. Natančna diagnoza je odvisna od vaše matične plošče.

Včasih morate dovoliti predpomnenje (cache) določenih področij v nastavitvah biosa. Poglejte v cmosevo nastavitev in preverite, ali je na voljo izbira predpomnenja novega pomnilnika, ki je trenutno izklopljena. Vse kaže, da je to najpogosteje pri 486.

Včasih mora biti RAM v točno določenih režah, sicer predpomnenje ne deluje.

Včasih morate predpomnenje nastaviti s posebnimi stikalci.

Nekatere matične plošče ne predpomnijo vsega pomnilnika RAM, če imate več tega pomnilnika na količino predpomnilnika, kakor predvideva strojna oprema. Navadno bo celih 256 Kb velik predpomnilnik odpravil to težavo.

Če ste v dvomih, poglejte v priročnik vaše matične plošče. Če zaradi neprimerne dokumentacije še vedno ne morete odpraviti težave, lahko pošljete sporočilo z vsemi podrobnostmi v skupino comp.os.linux.hardware -- navedite izdelovalca, oznako modela, datum izdelave itd., tako, da se bodo lahko drugi uporabniki Linuxa izogibali teh plošč.

6.10 Zakaj mi nekateri programi (npr. xdm) ne dovolijo prijave?

Verjetno uporabljate senčna gesla (shadow passwords) in programe za običajna gesla.

Če je tako, morate dobiti ali prevesti senčne različice problematičnih programov. Vrsta senčnih programov je (med drugim) na naslovu ftp://tsx-11.mit.edu/pub/linux/sources/usr.bin/shadow/. Izvedljive datoteke boste verjetno našli na ftp://tsx-11.mit.edu/pub/linux/binaries/usr.bin/.

6.11 Zakaj nekateri programi dovolijo prijavo brez gesla?

Verjetno imate enake težave in bo rešitev enaka kakor v razdelku Zakaj mi nekateri programi (npr. xdm) ne dovolijo prijave?, z dodatno zvijačo.

Če uporabljate senčna gesla, morate v vsako polje za geslo v datoteki /etc/passwd dodati črko x ali zvezdico. Program, ki ne ve za senčna gesla, tako ne bo mislil, da gre za račun brez gesla, in ga vsakomur dovolil uporabljati.

6.12 Zakaj moj računalnik deluje zelo počasi, ko uporabljam GCC/X/...?

Najbrž imate premalo pravega pomnilnika. Če imate manj pomnilnika kakor programov, ki tečejo naenkrat, bo Linux namesto pomnilnika uporabljal vaš disk in grozno mlel. Rešitev je v tem primeru nakup dodatnega pomnilnika ali pa poganjanje manj stvari naenkrat. Nekaj pomnilnika dobite tudi s tem, da uporabljate jedro z manj vključenimi nastavitvami. Glej razdelek Kako nadgradim/prevedem jedro?.

Količino trenutno uporabljenega pomnilnika in/ali izmenjalnega področja ugotovite z ukazom free ali tako, da napišete

$ cat /proc/meminfo

Če je vaše jedro nastavljeno za uporabo pomnilniškega diska (ramdisk), je to verjetno izguba prostora in lahko povzroči upočasnitev. Uporabite LILO ali rdev, da poveste jedru, da nočete pomnilniškega diska (oglejte si dokumentacijo o LILO ali napišite man rdev).

6.13 Zakaj moj sistem dopušča prijavljanje le kot root?

Verjetno imate težave s pravicami ali pa imate datoteko /etc/nologin.

V drugem primeru dodajte ukaz rm -f /etc/nologin v svoj prijavni skript /etc/rc.local ali /etc/rc.d/*.

V prvem primeru preverite dovoljenja vaše ukazne lupine in vseh datotek, ki se pojavljajo o sporočilih o napakah, in tudi imenikov, v katerih so te datoteke, vse do (vštevši) korenskega imenika.

6.14 Zakaj je moj zaslon poln čudnih znakov namesto črk?

Verjetno ste po pomoti hoteli izpisati kakšne binarne podatke. Za popravilo nastavitev zaslona napišite (na slepo) echo '\033c'. Številne distribucije Linuxa imajo ukaz reset, ki stori to.

Če to ne pomaga, poskusite z neposrednim ubežnim ukazom zaslonu.

$ echo <Ctrl-V><Ctrl-O>
To vzpostavi privzeto pisavo konzole Linuxa. Spomnite se držati tipko Control in potem vtipkati črko V ipd. Zaporedje
$ echo <Ctrl-V><Esc>C
povzroči popoln vnovični zagon zaslona. Če so po izpisu binarne datoteke ostali v ukazni vrstici podatki, pritisnite nekajkrat Ctrl-C. S tem dobite ukazno vrstico.

Naslednji možni ukaz je vzdevek, sane, ki lahko deluje s splošnimi terminali:

$ alias sane='echo -e "\033c";tput is2;
> stty sane line 1 rows $LINES columns $COLUMNS'

Vzdevek je ukleščen med obrnjene narekovaje (angl. backticks), ne med navadne enojne. Vrstica je tu prelomljena zaradi jasnosti in prelom ni potreben.

Preverite, ali sta spremenljivki $LINES in $COLUMNS definirani v okolju z ukazom, podobnim tem v ~/.cshrc ali ~/.bashrc:

$ LINES=25; export $LINES; $COLUMNS=80; export $COLUMNS
in da uporabljata pravilne številke $LINES in $COLUMNS za ta terminal.

Končno, izhod ukaza ,,stty -g`` lahko uporabljate za izdelavo lupinskega skripta, ki bo znova zagnal terminal:

  1. Shranite izhod ukaza ,,stty -g`` v datoteko. V tem primeru je ime datoteke termset.
    $ stty -g >termset
    
    Izhod ,,stty -g`` (vsebina termset) bo videti nekako takole:
    500:5:bd:8a3b:3:1c:7f:15:4:0:1:0:11:13:1a:0:12:f:17:16:0:0:73
    
  2. Uredite termset, da postane lupinski skript, tako da dodaste tolmač in ukaz stty:
    #!/bin/bash
    stty 500:5:bd:8a3b:3:1c:7f:15:4:0:1:0:11:13:1a:0:12:f:17:16:0:0:73
    
  3. Skriptu termset dodajte pravico izvajanja in ga uporabljajte kot lupinski skript:
    $ chmod +x termset
    $ ./termset
    

[Floyd L. Davidson, Bernhard Gabler]

6.15 Kako lahko popravim svoj sistem, če sem ga zavozil in se ne morem prijaviti?

Saj ste naredili rešilno disketo (ali disketi), kajneda? Zaženite sistem z rešilne diskete ali para disket. Na primer, za Slackware sta zagonski (angl. boot) in korenski (angl. root) disketi v namestitvenem podimeniku distribucije Slackware.

Na voljo sta tudi dva paketa vrste ,naredi-si-sam` za izdelavo rešilnih disket na ftp://metalab.unc.edu/pub/Linux/system/Recovery. Ta dva paketa sta boljša možnost, saj imata svoje jedro in ne boste imeli težav z manjkajočimi napravami, datotečnimi sistemi in podobnim.

Pojdite v pozivnik ukazne lupine in priklopite disk s podobnim ukazom:

$ mount -t ext2 /dev/hda1 /mnt

Vaš datotečni sistem je zdaj pripravljen v imeniku /mnt in lahko odpravite težavo. Ne pozabite odklopiti diska pred vnovičnim zagonom računalnika (pred tem spremenite imenik s cd / v kakega drugega, sicer bo umount sporočil, da je disk zaseden).

6.16 Kaj, če pozabim geslo uporabnika root?

Pozor! Nepravilno urejanje katerekoli datoteke v imeniku /etc/ lahko resno zavozi sistem. Imejte pri roki rezervni izvod vseh tamkajšnjih datotek, če se slučajno zmotite.

Če vaša distribucija Linuxa to dopušča, poskusite zagnati sistem v enouporabniškem načinu, tako da v zagonskem pozivniku LILO: vpišete ,,single``. Z novejšimi distribucijami lahko sistem zaženete v enouporabniškem načinu tako, da vpišete ,,linux 1``, linux single`` ali ,,init=/bin/bash``.

Če to za vas ne deluje, zaženite z namestitvene ali rešilne diskete in preklopite v drugo navidezno konzolo z Alt-F1 - Alt-F8, potem pa priklopite korenski datotečni sistem v /mnt. Nato nadaljujte s spodnjimi koraki, s katerimi ugotovite, ali ima vaš sistem običajna ali senčna gesla, in odstranite geslo.

S svojim priljubljenim urejevalnikom besedil uredite vnos v /etc/passwd za uporabnika root tako, da odstranite geslo, ki je med prvim in drugim dvopičjem. To storite le, če geslo ni ,,x``, za kar pa glejte spodaj.

root:Yhgew13xs:0:0: ...
Spremenite to v:
root::0:0: ...
Če ima polje z geslom le ,,x``, morate odstraniti geslo iz datoteke /etc/shadow, ki je v podobnem formatu. Glej strani referenčnega priročnika: man passwd, man 5 shadow.

[Paul Colquhuon, Robert Kiesling, Tom Plunket]

6.17 Kaj je s to veliko razpoko v varnosti pri ukazu rm!?!?!

Ne, ni je. Očitno ste novinec v svetu Unixa in morate prebrati kakšno dobro knjigo, da bi videli, kako vse skupaj deluje. Namig: zmožnost brisanja datotek v Unixu je odvisna od pisalnega dovoljenja za imenik, v katerem so.

6.18 Zakaj lpr in/ali lpd ne deluje?

Najprej preverite, ali imate pravilno nastavljen vhod /dev/lp*. IRQ (če obstaja) in naslov vhoda morata ustrezati nastavitvam na tiskalniški kartici. Morali bi biti sposobni izpisati datoteke neposredno na tiskalnik, npr.:

$ cat datoteka >/dev/lp1

Če ukaz lpr vrača sporočila, kot je ,,myname@host: host not found``, lahko to pomeni, da zaprtozančni vmesnik protokola TCP/IP, lo, napačno deluje. Podpora zaprti zanki je prevedena v večino distribucij jedra. Preverite nastavitev vmesnika z ukazom ifconfig. Po internetnem dogovoru je omrežno število (network number) 127.0.0.0 in krajevni naslov sistema za IP 127.0.0.1. Če je vse nastavljeno pravilno, se lahko povežete z lastnim računalnikom z ukazom telnet in dobite prijavni pozivnik.

Preverite, da je v /etc/hosts.lpd ime vašega računalnika.

Če ima vaš stroj lpd, ki se zaveda omreženosti, kot tisti, ki je priložen LPRng, preverite, ali je datoteka /etc/lpd.perms pravilno nastavljena.

Oglejte si tudi spis Printing-HOWTO, razdelek Kje je dokumentacija?.

6.19 Zakaj imajo datoteke na dosovskem razdelku napačen datum?

V programu clock (pogosto je v imeniku /sbin) je hrošč, ki napačno upošteva časovne pasove, pomeša sekunde in minute ali nekaj takega. Poiščite novo različico.

6.20 Kako prepričam LILO, da zažene sliko jedra?

V jedrih od različice 1.1.80 naprej je stisnjena slika jedra, ki jo mora najti LILO, v datoteki arch/i386/boot/zImage, ko jo zgradite, pozneje pa se navadno naseli v imenik /boot. Datoteka /etc/lilo.conf bi se morala sklicevati na simbolno povezavo, ne na pravo sliko jedra.

Ta sprememba je nastala zato, ker je z istega drevesa izvirne kode laže graditi različice za več različnih procesorjev.

6.21 Kako preverim, da se bo operacijski sistem po vnovični namestitvi zagnal?

To bi moralo delovati, če vnovič nameščate Linux ali kak drug komercialni operacijski sistem:

[Jacques Guy]

6.22 Zakaj moja kartica PCMCIA po nadgradnji jedra ne deluje več?

Moduli za uporabo kartice PCMCIA, ki so v /lib/modules/<različica>/pcmcia, kjer je <različica> številka različice jedra, uporabljajo informacijo o nastavitvi, ki je specifična le tej sliki jedra. Moduli PCMCIA ne bodo delovali z drugo sliko jedra. Ko nadgrajujete jedro, morate nadgraditi tudi programske module kartic PCMCIA.

Ko nadgrajujete s starejših jeder, preverite, ali imate najnovejšo različico izvajalnih knjižnic, paketa modutils in tako naprej. O podrobnostih si preberite v datoteki Documentation/Changes na drevesu z izvirno kodo jedra.

Pomembno: Če uporabljate storitve kartic PCMCIA, na nastavitvenem menuju za prikrojitev jedra ne omogočite podporo omrežnim napravam/žepnim in prenosnim adapterjem (angl. ,,Network device support/Pocket and portable adapters``), saj bo izbruhnil spor z moduli v storitvah kartic (angl. Card Services).

Poznavanje modulskih odvisnosti PCMCIA starega jedra je uporabno. Morate jih spremljati. Na primer, če je vaša kartica PCMCIA odvisna od znakovne naprave na zaporednih vratih, ki se v starem jedru naloži kot modul, morate zagotoviti, da bo modul za zaporedna vrata dostopen tudi za novo jedro in module PCMCIA.

Tu opisani postopek je malce neroden, vendar je veliko preprosteje preračunati modulske odvisnosti čisto od začetka in preveriti, da se nadgrajevani moduli res naložijo tako, da so zadovoljne tako naprave PCMCIA kakor naprave drugih vrst. Sodobna jedra obsegajo nešteto modulskih izbir -- preveč, da bi jim lahko sledili. Ti koraki uporabljajo obstoječe modulske odvisnosti, kolikor je mogoče, namesto da bi od vas zahtevali, da premislite o novih.

Vendar ta postopek na računa primerov, ko so modulske odvisnosti neke različice jedra nezdružljive z odvisnostmi druge različice. Takrat boste morali sami naložiti module z ukazom insmod ali pa prirediti modulske odvisnosti v datoteki /etc/conf.modules. V datoteki Documentation/modules.txt v izvirni kodi jedra je dober opis uporabe naložljivih modulov jedra in modulskih pripomočkov, kot so insmod, modprobe in depmod. Datoteka modules.txt opisuje tudi priporočeni postopek ugotavljanja odlik, ki bi jih radi vključili v pritajeno jedro, in odlik, ki bi jih radi zgradili kot module.

V bistvu morate ob nameščanju novega jedra slediti tem korakom.

Poglejte tudi vprašanja Kako nadgradim/prevedem jedro? in Modprobe can't locate module XXX, in podobno.

6.23 Kako odstranim (ali spremenim) barve v prikazu ukaza ls?

Če ls prikazuje v barvah in mu tega niste naročili, imate za to verjetno narejen vzdevek (angl. alias). Nekatere distribucije imajo to privzeto.

Lupinski ukaz ,,unalias ls bi moral povsem zbrisati nastavitve, ki jih nekatere distribucije ponujajo kot standard.

Barve in prikaz vrste datotek (stikalo -F ukaza ls) lahko spet uvedete z naslednjim ukazom:

alias ls='ls --color=auto -F'

Izbira --color=auto preprečuje, da bi se barve pojavljale v preusmerjenem izhodu (npr. ls | cat) in motile druge programe.

Če želite to spremembo uveljaviti trajno, popravite svoj inicializacijski skript .bashrc.

Če želite barve spremeniti namesto odpraviti, si oglejte stran referenčnega priročnika (man ls).

6.24 Zakaj program v trenutnem imeniku noče delovati?

Zato, ker trenutnega imenika (tj. ,,.``) ni na iskalni poti, zaradi varnosti, pa tudi zaradi zagotovitve, da boste uporabili prave različice programov. Če lahko vsiljivec zapiše datoteko na imenik, v katerega lahko piše ves svet, npr. /tmp, bi jo lahko tudi izvedel, če bi bil ta imenik na iskalni poti. Rešitev tega je, da v ukaz eksplicitno vključite tudi trenutni imenik; npr.

./mojprogram
namesto zgolj ,,mojprogram``. Ali pa dodajte trenutni imenik v vašo okoljsko spremenljivko PATH; npr.
export PATH="$PATH:."
v lupini Bash, čeprav vam to iz zgoraj navedenih razlogov odsvetujemo.


Naprej Nazaj Kazalo