Naprej Nazaj Vsebina

4. Linuxovo upravljanje z datotečnimi sistemi, diski in pogoni

4.1 Kako naj prepričam Linux, da bo delal z mojim diskom?

Če je vaš disk tipa IDE ali EIDE, preberite datoteko /usr/src/linux/drivers/block/README.ide (vključena je v izvorno kodo jedra Linuxa), ki vsebuje veliko uporabnih nasvetov o diskih IDE. Veliko sodobnih krmilnikov tipa IDE dela preslikavo med ,,fizičnimi`` in ,,logičnimi`` cilindri/glavami/sektorji.

Do diskov SCSI dostopate s pomočjo linearnih bločnih številk. BIOS si izmisli nekaj ,,logičnih`` podatkov o cilindrih/glavah/sektorjih, da lahko disk deluje v DOS-u.

BIOS, združljiv z IBM PC, navadno ne bo mogel dostopati do particij, večjih od 1024 logičnih cilindrov in bo v najboljšem primeru naredil zaganjanje Linuxa s programom LILO na takšnih particijah problematično.

Vseeno lahko takšne particije uporabite v Linuxu ali kakšnem drugem operacijskem sistemu, ki neposredno dostopajo do krmilnika.

Priporočeno je narediti vsaj eno Linuxovo particijo v celoti pod omejitvijo 1024 cilindrov in zaganjati sistem z nje. Ostale particije bodo potem delovale v redu.

Izgleda, da je nekaj težav tudi z novejšimi pogoni Ultra-DMA. Podrobnosti ne vem, a postajajo zelo pogost problem na namestitvenih prireditvah, ki jih prireja skupina SVLUG. Nič čudnega, če lahko dobite 8 do 12 Gb pogone za 200 ali 300 US$.

[Jim Dennis]

4.2 Kako lahko vrnem pobrisane datoteke (undelete)?

V splošnem je to zelo težko storiti na kateremkoli Unixu zaradi njihove večopravilne narave. Nekateri sicer razvijajo vračanje datotek na datotečnem sistemu ext2fs, a ne veselite se prezgodaj.

Obstaja nekaj programskih paketov, ki namestijo nove ukaze za brisanje in kopiranje. Z novimi ukazi se izbrisana datoteka prenese v poseben imenik -- ,,koš za smeti``. Od tam jo lahko vrnete, dokler se koš avtomatično ne izprazni (s procesom, ki teče v ozadju).

Namesto tega lahko preiskujete surovo diskovno napravo (raw disk device), ki vsebuje problematični datotečni sistem. To je težko delo. Za kaj takega morate biti izkušen uporabnik in povrhu še root. Vendar je to mogoče. Poženite grep na surovi diskovni napravi, denimo:

grep -b 'bookmarks' /dev/hda
Če podatki niso bili prepisani, jih bi morali biti sposobni obnoviti z urejevalnikom besedil.

[Dave Cinege]

4.3 Kako lahko particiji (nedestruktivno) spremenim velikost?

V MS-DOS-u uporabite program FIPS.EXE, vključen v večino distribucij Linuxa.

4.4 Ali obstaja defragmenter za ext2fs ipd.?

Da. Obstaja program defrag, defragmenter za datotečna sistema ext2 in minix za Linux in za starejši datotečni sistem tipa ext. Dostopen je na ftp://metalab.unc.edu/pub/Linux/system/filesystems/defrag-0.70.tar.gz.

Uporabniki datotečnega sistema ext2 lahko verjetno shajajo tudi brez defrag-a, saj vsebuje ext2 dodatno kodo, ki preprečuje fragmentiranje diska tudi na zelo zasedenih diskih.

4.5 Kako formatiram disketo in naredim na njej datotečni sistem?

Običajno 3,5-palčno disketo velike gostote formatirate takole:

$ fdformat /dev/fd0H1440
$ mkfs -t ext2 -m 0 /dev/fd0H1440 1440

Za diskete velikosti 5,25 palca uporabite fd0h1200 in 1200 namesto 1440. Če je disketa v pogonu ,,B``, pišite fd1 namesto fd0.

Izbira ,,-m 0`` ukaže programu mkfs.ext2 naj ne rezervira prostora na disku za superuporabnika -- navadno je zadnjih 10% rezerviranih za root-a.

Prvi ukaz izvede nizko-nivojsko formatiranje. Drugi ukaz ustvari prazen datotečni sistem. Disketo lahko mountate podobno kot particijo trdega diska in preprosto kopirate/premikate datoteke s cp, mv ipd.

Pravila za imenovanje naprav so v splošnem ista v vseh Unixih. Najdete jih v vodniku Installation and Getting Started Guide, ki ga je napisal Matt Welsh. (Glejte poglavje ,,Kje lahko dobim HOWTO-je in ostalo dokumentacijo?``.) Bolj podroben in tehničen opis je v dokumentu Linux Allocated Devices, avtorja H. Petra Anvina, <hpa@zytor.com>. Ta dokument je na voljo v obliki za LaTeX in ASCII v distribuciji izvorne kode jedra (verjetno v imeniku /usr/src/kernel/Documentation) kot devices.tex in devices.txt.

4.6 Dobivam grda sporočila o inodih, blokih in podobno

Mogoče imate pokvarjen datotečni sistem. Okvara je najbrž nastala zato, ker niste pravilno pripravili Linux na izklop (z ukazom shutdown) preden ste izklopili ali resetirali računalnik. Najnovejši program shutdown dobite na primer v paketu util-linux, ki je arhiviran na sunsite in tsx-11.

Če imate srečo, bo program fsck (ali e2fsck ali xfsck, kakor se pač že imenuje, če nimate avtomatskega fsck-ja) lahko popravil vaš datotečni sistem. Če nimate sreče, je datotečni sistem uničen in ga boste morali reinicializirati s programom mkfs (ali mke2fs ali mkxfs itd.) in prepisati podatke z varnostnih kopij.

NB: Ne poskusite preverjati datotečnega sistema, ki je mountan v načinu za branje/pisanje -- to se nanaša tudi na korensko particijo, če ob zagonu ne vidite napisa

VFS: mounted root ... read-only

4.7 Moje izmenjalno področje (swap) ne deluje.

Ko zaganjate računalnik (ali ročno vključujete izmenjalno področje), morate videti sporočilo

Adding Swap: NNNNk swap-space

Če sploh ne vidite nobenega sporočila, vam verjetno manjka ukaz

swapon -av
(ukaz, ki vključi izmenjevalno funkcijo) v datoteki /etc/rc.local ali /etc/rc.d/* (sistemske štartne skripte), ali ste pozabili vpisati prave podatke v /etc/fstab, na primer:
/dev/hda2    none    swap    sw

Lahko se vam prikaže sporočilo

Unable to find swap-space signature

To pomeni, da ste pozabili pognati mkswap. Za podrobnosti glejte man mkswap; deluje zelo podobno kot mkfs.

Ukaz free poleg količine prostega pomnilnika izpiše tudi:

             total       used       free
Swap:        10188       2960       7228

[Andy Jefferson]

Za podrobna navodila, kako nastaviti izmenjalno področje, glejte dokument Installation-HOWTO.

4.8 Kako odstranim LILO, da bo moj sistem spet zaganjal DOS?

Ko uporabljate DOS (MS-DOS 5.0 ali poznejši, ali OS/2), napišite nedokumentiran ukaz FDISK /MBR. Če nimate MS-DOS-a ali DR-DOS-a, morate uporabiti zagonski sektor, ki ga je LILO shranil, ko ste ga prvič inštalirali. Saj ste shranili to datoteko, kajne? Verjetno se imenuje boot.0301 ali kaj podobnega. Napišite

dd if=boot.0301 of=/dev/hda bs=445 count=1
(ali /dev/sda, če uporabljate disk SCSI). To lahko tudi pobriše tudi vašo particijsko tabelo, zato pozor! Če ste obupani, lahko uporabite
dd if=/dev/zero of=/dev/hda bs=512 count=1

To bo povsem pobrisalo vašo particijsko tabelo in zagonski sektor; potem lahko še enkrat formatirate disk z vašim priljubljenim programom. Toda to bo naredilo tudi vsebino vašega diska nedostopno -- če niste strokovnjak, boste izgubili vse podatke.

Upoštevajte, da DOS-ov MBR zažene tisto (in le tisto!) particijo, ki je označena kot "aktivna". Morda boste morali uporabiti fdisk za prižiganje in ugašanje zastavic aktivnosti na vaših particijah. (Prevajalčeva opomba: Uporabite fdisk, da se boste povsem prepričali, da je dosovska particija res aktivna, preden storite karkoli iz tega poglavja. Zgodilo se mi je že, da je bila Linuxova particija aktivna, LILO odstranjen iz MBR, računalnik pa ni zagnal nobenega sistema.)

4.9 Zakaj ne morem uporabljati programa fdformat, razen, ko sem root?

Sistemske klice za formatiranje diskete lahko izvedete le kot root, ne glede na morebitna drugačna dovoljenja za naprave /dev/fd0*. Če želite, da bo katerikoli uporabnik lahko formatiral disketo, poskusite dobiti program fdformat2. Ta se izogne omejitvam tako, da teče s setuid kot root.

4.10 Moje particije ext2fs se preverjajo ob vsakem zagonu

Glejte razdelek ,,EXT2-fs: warning: mounting unchecked filesystem.``.

4.11 Moj korenski datotečni sistem lahko le berem!

Še enkrat ga mountajte. Če je datoteka /etc/fstab pravilna, preprosto mountajte takole:

mount -n -o remount /

Če je /etc/fstab napačna, morate podati ime naprave in verjetno tudi njen tip, npr.:

mount -n -o remount -t ext2 /dev/hda2 /

Če vas zanima, kako ste zašli v trenutno stanje, preberite razdelek ,,EXT2-fs: warning: mounting unchecked filesystem.``.

4.12 Imam veliko datoteko /proc/kcore! Jo lahko pobrišem?

V resnici nobena od datotek v imeniku /proc ne počiva v njem -- to so le ,,navidezne`` datoteke, ki jih naredi jedro, da vam da informacijo o sistemu. Zato tudi nobena od tamkajšnjih datotek ne zaseda prostora na disku.

/proc/kcore je ,,vzdevek`` pomnilnika v vašem računalniku. Velikost te datoteke je enaka kot velikost vašega RAM-a in če jo berete kot datoteko, bere jedro vsebino pomnilnika.

4.13 Moj AHA1542C ne dela z Linuxom.

Izbira v BIOS-u za dovolitev diskov z več kot 1024 cilindri je potrebna le za odpravo pomanjkljivosti PC-kompatibilnega BIOS-a in mora biti v Linuxu izklopljena. Starejša Linuxova jedra morajo imeti izklopljene vse izbire ,,naprednega BIOS-a`` -- vse, razen tiste o pregledovanju vodila za zaganjalne naprave (bus scanning for bootable devices).


Naprej Nazaj Vsebina