[OpenBSD]

14.0 - Nastavení disku


Používání disklabel v OpenBSD

Obsah

Co to je disklabel?

Nejprve se ujistěte, že jste si přečetli manuálovou stránku disklabel(8)

Disklabely jsou vytvářeny k tomu, aby existovalo rozhraní mezi diskem a diskovými drivery obsaženými v kernelu. Labely drží určitou informaci o vašem disku , např. geometrii disku a informaci o filesytémech. To je využito bootstrap programem k inicializaci disku a k tomu aby se vědělo kde je který filesystém v rámci disku. Labely jsou navíc využívány ve spojení se filesystémy k vytvoření efektivnějšího prosředí. Detailnější informace o diklabelu jsou obsaženy v manuálové stránce disklabel(5)

Disklabel umožňuje navíc překonat omezení diskových oddílů dané architekturou. Například na i386 můžete mít pouze 4 primární diskové oddíly (partitons). (Diskové oddíly které jsou vidět na ostatních systémech jako např. na WindowsNT nebo DOS) s disklabel(8), můžete využít jeden z těchto primárních oddílů k uložení *všech* oddílů OpenBSD. (např. 'swap', '/', '/usr' and '/var'). A stále vám zůstávají 3 oddíly pro jiné operační systémy!

Použití disklabel během instalace OpenBSD

Jedna z hlavních částí instalace OpenBSD je vytvoření labelů. To následuje (pro architekturu i386) hned po použití programu fdisk(1). Během instalace využijete disklabel na vytvoření jednotlivých labelů v rámci jednoho diskového oddílu, která budou obsahovat mimojiné i názvy přípojných bodů. Během instalace můžete nastavit vaše přípojné body v disklabel(8), ale to není úplně nezbytné, protože později budete vyžádáni, abyste potvrdili vaše volby. Přesto to dělá instalační proceduru rychlejší.

První label, který vytvoříte bude 'a'. Tento label by měl být namountován jako /. Doporučené oddíly a jejich velikosti si můžete prohlédnout v FAQ 4, Je potřeba volné místo. Pro servery je doporučené, abyste vytvořili tyto diskové oddíly separátně. Pro běžné uživatele bude stačit vytvoření mounpointu /. Než vytvoříte váš root diskový oddíl, uvědomte si, že budete ještě potřebovat nějaké místo pro label swap. Tím jsme vysvětlili základy diskalbelu a můžeme přistoupit k příkladům během instalace. V prvním příkladu předpokládáme, že OpenBSD bude jediný operační systém na tomto počítači a že budete provádět plnou instalaci.

Pokud je disk sdílen s jinými operačními systémy, měly by tyto mít BIOS oddíl, který rozděluje prostor, který pokrývájí. Pro bezpečnost se přesvědčte, že Oddíl s OpenBSD je v rozmezí offsetů a velikosti daných v 'A6' tabulce BIOSu. (Implicitně se bude disklabel snažit toto vnutit). Pokud si nejste jisti, jak rozdělit korektně několik oddílů, (např. rozdělení /, /usr, /tmp, /var, /usr/local a jiných) jednoduše prozatím rozdělte místo mezi oddíly root a swap.
# using MBR partition 3: type A6 off 63 (0x3f) size 4991553 (0x4c2a41) 

Treating sectors 63-16386300 as the OpenBSD portion of the disk.
You can use the 'b' command to change this.

Initial label editor (enter '?' for help at any prompt)
> d a
> a a
offset: [63] <Enter>
size: [16386237] 64M
Rounding to nearest cylinder: 131040
FS type: [4.2BSD] <Enter>
mount point: [none] /
fragment size: [1024] <Enter>
block size: [8192] <Enter>
cpg: [16] <Enter>
> a b
offset: [131103] <Enter>
size: [16255197] 64M
Rounding to nearest cylinder: 131040
FS type: [swap] <Enter>

V této chvíli jsme vytvořili 64M root diskový oddíl na /, a 64Megový oddíl pro swap. Všimněte si, že offset začíná na sektoru 63. To je přesně to co chcete. Disklabel ukazuje velikost v sektorech, nicméně nemusíte vkládat velikosti pouze v sektorech. Jako v příkladu výše můžete vkládat velikosti např. jako 64 Megabytes = 64M a 2 Gigabytes = 2G. Disklabel toto zaokrouhlí na nebližší cylindr. V příkladu výše můžete také zaznamenat, že disklabel předpokládá, že label 'b' bude oddíl pro swap. To je správný předpoklad a jádro GENERIC je nastaveno aby se dívalo po swapu v labelu 'b' a vy bystě měli použít 'b' jako label pro swap standartně.

Další příklad vás provede vytvořením dalších dvou labelů. To znamená, že to není kompletní instalace, protože velikost těchto labelů by nestačila na plnou instalaci OpenBSD.

> a d
offset: [262143] <Enter>
size: [16124157] 64M
Rounding to nearest cylinder: 131040
FS type: [4.2BSD] <Enter>
mount point: [none] /tmp
fragment size: [1024] <Enter>
block size: [8192] <Enter>
cpg: [16] <Enter>
> a e
offset: [393183] <Enter>
size: [15993117] 64M
Rounding to nearest cylinder: 131040
FS type: [4.2BSD] <Enter>
mount point: [none] /var
fragment size: [1024] <Enter>
block size: [8192] <Enter>
cpg: [16] <Enter>

V příkladě uvedeném výše byste si měli všimnout dvou věcí. Jedna z nich je fakt, že offset se počítá automaticky, tak aby byl další v pořadí. Pokud budete provádět instalaci tohoto typu, vůbec se nebudete muset s offsety zabývat. Další rozdíl, kterého si můžete všimnout je, že label 'c' byl přeskočen. To bylo provedeno z toho důvodu, že label 'c' representuje celý disk, takže s labelem 'c' byste neměli operovat.

Pokud jste vytvořili všechny labely, které jste chtěli, je čas zapsat tyto informace na disk a pokračovat v instalačním procesu. Abyste zapsali všechno na disk a ukončili disklabel (a pokračovali s instalací) udělejte:

> w
> q

*POZOR!* - Pro uživatele s velkými disky: Pokud váš bios nemumí rozpoznat správnout velikost vašeho disku, OpenBSD to nebude umět taky. V opačném případě si OpenBSD poradí s diskem normálně. Pokud jste v situaci, kdy váš bios nepodporuje váš disk, zkuste produkty typu Maxtor EZ-Drive.

Běžné použití disklabel(8)u

Pokud je váš systém nainstalován, němeli byste používat disklabel moc často. Budete ho ale potřeba v případě, že budete chtít přidat, odebrat nebo restruktorovat vaše disky. Jedna z prvních věcí které budete potřebovat udělat je vypsat si stávající disklabel, jednoduše napište:

# disklabel wd0 >----- Podle toho jaký device si budete
# chtít prohlédnout

# using MBR partition 3: type A6 off 64 (0x40) size 16777152 (0xffffc0)
# /dev/rwd0c:
type: ESDI
disk:
label: TOSHIBA MK2720FC
flags:
bytes/sector: 512
sectors/track: 63
tracks/cylinder: 16
sectors/cylinder: 1008
cylinders: 2633
total sectors: 2654064
rpm: 3600
interleave: 1
trackskew: 0
cylinderskew: 0
headswitch: 0           # millisekundy
track-to-track seek: 0  # millisekundy
drivedata: 0 

16 partitions:
#        size   offset    fstype   [fsize bsize   cpg]
  a:  2071440    65583    4.2BSD     1024  8192    16   # (Cyl.   65*- 2120)
  b:    65520       63      swap                        # (Cyl.    0*- 65)
  c:  2654064        0    unused        0     0         # (Cyl.    0 - 2632)
  j:   512001  2137023    4.2BSD     1024  8192    16   # (Cyl. 2120*- 2627*)

Výše uvedený příkaz vám jednoduše dovolí vypsat stávající disklabel a ujistit se, že nic nepokazíte. (Což všichni někdy potřebujeme.) Abyste byli schopni udělat změny, musíte disklabel vyvolat s opšnou -E.

# disklabel -E wd0

To vám hodí prompt, ten samý jaký jste používali při instalaci OpenBSD. NEjdůležitější příkaz na tomto promptu je asi '?'. To vám vylistuje všechny možnosti. Dokonce se můžete podívat na kompletní manuálovou stránku disklabel(8) pomocí příkazu 'M'. Z toho promptu budete dělat věci jako přidávat, mazat nebo měnit diskové oddíly. Pro více informací si přečtěte manuálovou stránku disklabel(8).

14.2 - Používání utility fdisk

Nejprve se ujistěte, že jste si přečetli hlavní manuálovou stránku fdisku fdisk(8).

Fdisk je program, který má pomáhat s údržbou vašich diskových oddílů. Tento program je použit při instalaci k nastavení vašeho diskového oddílu s OpenBSD. (tento dikový oddíl může obsahovat několik labelů, každý s filesystémem/swapem/atd.). Může rozdělit prostor na vašich discích a nastavit jeden aktivní. Tento program je obvykle používán v Single Boot Módu ( boot -s ). Fdisk dále nastavuje MBR na vašich různých discích.

Pro potřeby instalce budete potřebovat pouze JEDEN diskový oddíl s OpenBSD a pak použijete disklabel abyste na něm nastavili prostor pro swap a filesystem.

Abyste si prohlédli tabulku vašich diskových oddílů:

# fdisk fd0

Což vám dá výstup podobný tomuto:

         Disk: fd0       geometry: 80/2/18 [2880 sectors]
         Offset: 0       Signatures: 0xAA55,0x0
                  Starting        Ending
          #: id  cyl  hd sec -  cyl  hd sec [     start -       size]
----------------------------------------------------------------------
         *0: A6    0   0   1 -   79   1  18 [         0 -       2880] OpenBSD
          1: 00    0   0   0 -    0   0   0 [         0 -          0] unused
          2: A7    0   0   2 -   79   1  18 [         1 -       2879] NEXTSTEP
          3: 00    0   0   0 -    0   0   0 [         0 -          0] unused

V tomto příkladě ukazujeme výstup fdisku bez floppy drajvu. Můžeme nastavit diskový oddíl OpenBSD (A6) a jeho velikost. * nám ríká, že diskový oddíl s OpenBSD je bootovatelný.

V předchozí ukázce jsem jenom vypisovali informaci. Co když budeme chtít editovat tabulku našich diskových oddílů? Abysme tak mohli učinit, budeme potřebovat použít -e flag. To nás dostane do promptu pro interakci s fdiskem.

# fdisk -e wd0
Enter 'help' for information
fdisk: 1> help
        help            Command help list
        manual          Show entire OpenBSD man page for fdisk
        reinit          Re-initialize loaded MBR (to defaults)
        setpid          Set the identifier of a given table entry
        disk            Edit current drive stats
        edit            Edit given table entry
        flag            Flag given table entry as bootable
        update          Update machine code in loaded MBR
        select          Select extended partition table entry MBR
        print           Print loaded MBR partition table
        write           Write loaded MBR to disk
        exit            Exit edit of current MBR, without saving changes
        quit            Quit edit of current MBR, saving current changes
        abort           Abort program without saving current changes
fdisk: 1> 

Je naprosto bezpečné podívat se a prozkoumat co vás zajímá, jenom se ujistěte, že odpovíte N na dotaz o ukládání změn a *NEPOUŽÍVEJTE* příkaz write.

Zde je přehled příkazů které můžete použít s volbou -e.

14.3 - Přidávání dalších disků v OpenBSD

Jakmile jste instalovali váš disk SPRÁVNĚ budete potřebovat použít fdisk(8) (pouze pro i386) a disklabel(8) k nastavení vašeho disku v OpenBSD.

Lidi s i386 by měli začít s fdiskem. Další architektury toto mohou ignorovat.

# fdisk -i sd2
Toto nainicializuje "skutečnou" tabulku diskových oddílů pro exkluzivní použití OpenBSD. Pak pro ni budete potřebovat vytvořit disklabel. To se může zdát zmatené.
# disklabel -e sd2

(obrazovka bude prázdná, spustí se váš $EDITOR)
type: SCSI
...bla...
sectors/track: 63
total sectors: 6185088
...bla...
16 partitions:
#        size   offset    fstype   [fsize bsize   cpg]
  c:  6185088        0    unused        0     0         # (Cyl.    0 - 6135)
  d:  1405080       63    4.2BSD     1024  8192    16   # (Cyl.    0*- 1393*)
  e:  4779945  1405143    4.2BSD     1024  8192    16   # (Cyl. 1393*- 6135)
Nejdříve, ignorujte diskový oddíl 'c', ten je obsažen vždy a existuje proto aby programy jako disklabel vůbec mohly fungovat! Pro normální použití by měla být fsize vždy 1024, bsize 8192 a cpg 16. Fstype je 4.2BSD. Total sectors je celková velikost disku. Toto je disk o velikosti 3 gigabyty. Tři gigabyty je v termínech výrobce 3000 megabytů. Takže vydělte 6185088/3000 (použijte bc(1))). Dostanete 2061. Takže abyste vytvořili velikost diskosti diskových oddílů pro a, d, e, f, g, ... jednoduše vynásobte X*2061 abyste dostali X megabytů místa na daném diskovém oddílu. Ofset pro váš první diskoý oddíl bude ten samý jako "sectors/track" vypsaný ve výstupu disklabelu výše. Pro nás je to 63. Ofset pro každý další diskový oddíl by měl být kombinace velikosti každého diskového oddílu a ofsetu každého diskového oddílu. (Kromě diskového oddílu 'c', ten v této rovnici nehraje žádnou roli.)

Jiná možnost je ta, že budete chtít jeden diskové oddíl na disku, řekněme že budete používat celý disk pro web nebo jako adresář home nebo tak něco, pak vezměte celkovou velikost disku a odečtěte od ní počet sektorů na stopu. 6185088-63 = 6185025. Váš diskový oddíl je

    d:  6185025       63    4.2BSD     1024  8192    16 

Pokud se vám toto vše zdá zbytečně složité, můžete použít disklabel -E abyste dostali ten samý mód diskového oddílu, který jste dostali na instalačním disku! Můžete zadat "96M" abyste řekli "96 megabytů". (Nebo pokud máte tak velký disk, tak 96G pro 96 giga!) Naneštěstí mód -E používá diskovou geonetrii z BIOSu a ne tu reálnou a často se tyto dvě liší. Abyste toto omezení obešli, napište 'g d' pro 'geometry disk'. (Jiné možnosti jsou 'g b' pro 'geometry bios' a 'g u' pro geometry user, nebo jednoduše pro to, co label říkal předtím než disklabel uložil změny.)

To je docela dost, ale ještě nejsme u konce. Nakonec budete potřebovat vytvořit filesystem na disku tím, že použijete newfs(8).

# newfs wd1a 

Podle toho jak byl váš disk pojmenován v rámci schematu OpenBSD. (Podívejte se na výstup z dmesg(8) abyste viděli jak byl váš disk pojmenován.)

Ted zjistěte kam budete tento právě vytvořený diskový oddíl montovat. Řekněme, že ho budete chtít montovat pod /u. Nejprve vytvořte adresář /u. Pak jej namontujte.

# mount /dev/wd1a /u

Nakonec ho přidejte do /etc/fstab(5)

/dev/wd1a /u ffs rw 1 1

Co když budete přemístit již existující adresář jako např. /usr/local? Měli byste namontovat nový disk do /mnt a pak použít cpio -pdum abyste nakopírovali /usr/local do adresáře v /mnt. Zeditujte soubor /etc/fstab(5) aby ukazoval, že diskový oddíl s /usr/local je teď /dev/wd1a (váš nově naformátovaný diskový oddíl.) Příklad:

/dev/wd1a /usr/local ffs rw 1 1

Rebootujte do single módu..boot -s Přemístěte existující /usr/local do /usr/local-backup (nebo ho smažte, jestli se na to cítíte) a vytvořte prázdný adresář /usr/local. Pak rebootujte systém a voila!! soubory jsou tam!


14.4 - Jak swapovat do souboru

(Poznámka: jestliže chcete swapovat do souboru proto, že dostáváte hlášky jako "virtual memory exhausted" měli byste nejdříve zkusit zvýšit limity na proces pomocí unlimit(1) v csh, nebo ulimit(1) v sh.)

Swapování do souboru nevyžaduje zvláštní konfiguraci kernelu, ačkoliv to klidně můžete udělat, tento faq vám ukáže jak to udělat oběma způsoby.

Swapování do souboru.

Swapování do souboru je nejjedodušší a nejrychlejší cesta jak dostat další prostor pro swap. To neplatí pro uživatele, kteří používají Soft Updates. (Není nastaveno jako default). Abyste mohli začít, podívejte se kolik swapu v současné chvíli používáte, tím že se podíváte pomocí utility swapctl(8) To můžete udělat tak, že spustíte:

$ swapctl -l
Device      512-blocks     Used    Avail Capacity  Priority
swap_device      65520        8    65512     0%    0

To ukazuje zařízení a jejich statistiky které jsou aktuálně používány pro swapování. V příkladu uvedeném výše existuje pouze jedno zařízení pojmenováné "swap_device"."swap_device". To je předdefinovaná oblast na disku která je použita pro swapování. (Ukazuje se jako dikový oddíl b když si prohlížíte disklabely). Jak můžete v příkladu dále vidět, toto zařízení e v současné době moc nepoužívá. Ale pro účely tohoto dokumentu budeme dělat, že potřebujeme dalších 32M.

První krok jak nastavit soubor jako swapovací zařízení je vytvoření souboru. To je nejlepší udělat pomocí utility dd(1) Tady je příklad vytvoření souboru /var/swap který má velikost 32M.

$ sudo dd if=/dev/zero of=/var/swap bs=1k count=32768
32768+0 records in
32768+0 records out
33554432 bytes transferred in 20 secs (1677721 bytes/sec)

Jakmile je toto hotovo, můžeme zapnout swapování do tohoto zařízení. Použijte následující příkaz k tomu abyste zapnuli swapování na toto zařízení.

$ sudo chmod 600 /var/swap
$ sudo swapctl -a /var/swap

Teď budeme potřebovat zjistit, jestli bylo korektně přidáno do seznamu zařízení pro swap.

$ swapctl -l
Device      512-blocks     Used    Avail Capacity  Priority
swap_device      65520        8    65512     0%    0
/var/swap        65536        0    65536     0%    0
Total           131056        8   131048     0%

Teď když jste nastavili a zapnuli swapování do souboru, budete potřebovat přidat řádku do vašeho souboru /etc/fstab aby se konfigurace provedla při každém bootu. Pokud tuto řádku nepřidáte, nebude zařízení zkonfigurováno.

$ cat /etc/fstab
/dev/wd0a / ffs rw 1 1
/var/swap /var/swap swap sw 0 0

Swapování pomocí zařízení vnode

Toto je více dlouhodobé řešení jak přidat více prostoru pro swap. Abyste swapovali do souboru trvale, nejdříve vytvořte kernel s vnd0c jako swap. Pokud máte wd0a jako root filesystem, wd0b je předchozí swap, použijte tento řádek ve vašem souboru s konfigurací jádra (souvisí s kompilaci jádra):

config          bsd     root on wd0a swap on wd0b and vnd0c dumps on wd0b

Jakmile je toto hotovo, budete potřebovat vytvořit soubor, který bude používán ke swapování. Měli byste to udělat pomocí toto samého příkazu uvedeného v příkladech výše.

Teď je váš soubor na místě, budete potřebovat přidat tento soubor do /etc/fstab. Zde je příklad jak nabootovat s tímto zařízení jako swapovacím.

V tomto bodě budete muset rebootovat váš počítač aby se projevily změny v jádře. Jakmile je to hotovo, je čas nakonfigurovat toto zařízení jako swapovací. Abyste to udělali, použijte vnconfig(8).

$ sudo vnconfig -c -v vnd0 /var/swap
vnd0: 33554432 bytes on /var/swap

Posledním krok je zapnutí swapování do tohoto zařízení. Uděláme to stejně jako v příkladech uvedených výše, použijeme k tomu swapctl(8). Pak zjistíme jestli bylo korektně přidáno do našeho listu swapovacích zařízení.

$ sudo swapctl -a /dev/vnd0c
$ swapctl -l
Device      512-blocks     Used    Avail Capacity  Priority
swap_device      65520        8    65512     0%    0
/dev/vnd0c       65536        0    65536     0%    0
Total           131056        8   131048     0%

14.5 - Soft Updates

Posledních pár let pracoval Kirk McKusick na něčem nazývaném "soft updates". Celé je to založeno na idei navrhované Greg Gangerem a Yale Pattem kteří navrhli částečné uspořádání operací v buffer cache, které by dovolilo odstranění požadavků na synchronní zapisování adresářovách položek z kódu FFS. Tím se rapidně zvýší rychlost zápisu na disk.
Protože soft updates jsou jako celek stále ve vývoji, je nadále nutné fsck(8) v případě, že počítač je náhle vypnut bez správné ukončovací sekvence. Tato skutečnost bude ale opravena v budoucích verzích.

Více informací a detailů o soft updates lze nalézt v pracích Ganger a Patt a z McKusick.

Pro používání Soft Updates potřebujete mít jádro zkompilované s volbou

FFS_SOFTUPDATES

tato volba se nachází už v jádrech GENERIC.

Zapnutí Soft Updates musí být provedeno s opšnou příkazu mount, když montujete partišnu s utilitou mount(8), můžete specifikovat můžete specifikovat, jestli si přejete zapnout soft updaty na této partišně. Níže uvedený je příklad záznamu do /etc/fstab(5), který má jednu partišnu sd0a kterou jsme namontovali se soft updates.

/dev/sd0a / ffs rw,softdep 1 1

Poznámka pro uživatele na platformě sparc. Nezapínejte softupdates na strojích sun4 nebo sun4k. Tyto architektury podporují pouze omezené množství paměti jádra a nemohou používat tuto volbu. Stroje sun4m tímto omezením netrpí.

14.6 - Když nabootuji po instalaci OpenBSD/i386, zastaví se na "Using partition 3 id 0" - specifické pro i386.

Toto není vlastně chybová hláška sama o sobě, je to boot loader v MBR, který vám říká, ze kterého disku a z které partition se chystá bootovat. Problém je, že v této chvíli se proces zastavil.

Existují dva běžné důvody, proč se to stalo: nekompatibilita mezi BIOSem a OpenBSD MBR nebo problém s geometrií disku. Příklad špatné geometrie disku by byl pokud byste přesunuli disk z jednoho počítače do druhého, updatovali BIOS nebo změnili nastavení BIOSu, ačkoliv je často hlášeno, že se to může stát z neznámých důvodů během instalace.

Poznámka: Počínaje OpenBSD 3.1, problém s kompatibilitou BIOSu by měl být vyřešen prakticky na všech systémech. Nicméně je pořád možné mít problém s geometrií disku, takže je stále možné, že se systém zastaví na této hlášce.

Abyste opravili problém s kompatibilitou BIOSu, musíte přepsat boot loader nějakým, který je s vaším systémem kompatibilní. Naštěstí je lehké takový získat.

Instalace bootloader BootEasy:

Toto vyžaduje abyste rebootovali váš systém. Protože nemůžeme z pevného disku nabootovat přímo, musíme použít bootovací disketu nebo CD-ROM, abychmo začali bootovací proces. Až se systém dostane k 'boot>' promptu, přesměrujte ho k bootování z pevného disku:

reading boot.......
probing pc0 com0 com1 pci mem [639k 79m a20=on]
disk hd0 fd0
>> OpenBSD BOOT 1.28
boot> boot hd0a:/bsd

Tento příkaz přesměruje bootovací proces k souboru /bsd na partišně 'a' vašeho prvního pevného disku, a dovolí tak systému nabootovat.

Jakmile systém jednou nabootuje, budete potřebovat instalovat bootloader BootEasy. Soubor samotný můžete nalézt jak na CD-ROM, tak na FTP v adresáři 3.0/tools/booteasy/Boot.bin a může být instalován následujícím fdisk(8) příkazem:

# fdisk -i -f /mnt/3.0/tools/booteasy/Boot.bin wd0

To předpokládá, že máte namontované CD s 3.0 v /mnt a že používáte IDE disk. Můžete to změnit na v závislosti na tom, kde je umístěn Boot.bin a jaký disk máte (SCSI disk bude typicky sd0). Poznámka: Nedělejte to, jestliže OpenBSD partišna nepokrývá celý váš disk! Inicialize MBR touto cestou vytvoří OpenBSD partišnu, která pokrývá celý disk a smaže ostatní partišny, což je zřídkakdy dobré.

BootEasy má další vlastnost, která vás může zajímat, jestliže máte problémy s defaultním bootloaderem: Je schopen vybrat bootovací partišnu při startu -- nechá vás vybrat z které partišny nabootovat a nabootuje z aktivní partišny, pokud nebyl proveden žádný výběr. To může být velmi užitečné pokud máte na vašem disku více operačních systémů. Instalace BootEasy touto cestou je přes MS-DOS pomocí BOOTINST.EXE, který naleznete v adreáři BootEasy na CD-ROM a FTP serverech.

Instalace MS-DOS boot loaderu:

Nabootujte z bootovacího disku Windows 9x nebo DOSu verze 6 s, který obsahuje FDISK.EXE. Jakmile je systém nabootován do MS-DOS promptu, zadejte následující:

A:\>fdisk /mbr

Měli byste vidět krátký přístup k disku a pak by vás příkaz měl vrátit do příkazového řádku bez žádné hlášky. "Bad command or file name" znamená, že disk, který jste použili neobsahuje FDISK.EXE. Pokud to uděláte správně, hláška "Using ..." bude odstraněna, protože se nahradil kód, který ji produkuje. Pokud máte problémy s kompatibilitou BIOSu, budou nyní pryč, rebootujte a začněte instalaci OpenBSD.

Bylo hlášeno, že toto funguje s FreeDOSem.

Boot loader OS-BS:

Další boot loader, OS-BS je na CD-ROM a dostupný z FTP v 2.9/tools/osbs135.exe. OS-BS web stánka je na http://www.prz.tu-berlin.de/~wolf/os-bs.html

LILO:

Můžete použít také LILO. Pro detaily se podívejte na INSTALL.linux

Jak se problému vyhnout

Relativně málo strojů má problém s kompatibilitou BIOSu, ale jestliže nastavujete stroj, o kterém víte, že má tento problém, můžete se mu snadno vyhnout. OpenBSD bootloader je instalován je pokud odpovíte 'Y' na otázku 'Use entire disk for OpenBSD'. Pokud odpovíte 'N' a ručně vytvoříte OpenBSD partišnu, nebude bootloader přepsán dokud nepouřijete 'reinit' nebo 'update' příkazy fdisku. Toto samozřejmě předpokládá, že váš disk ZAČÍNAL nějakým bootloaderem -- pokud tomu tak není (nový disk, čistý disk vytažený z jiné platformy), budete muset instalovat nějaký bootloader před tím, než sytém nabootuje.

Řešení problému s geometrií disku:

Ideálně byste se tomuto problému vyhnuli, tak, že zachováte tu samou geometrii, ne že ji budete opravovat, ačkoliv někdy se tomu nemůžete vyhnout. Příkladem by mohlo být vytažení velkého disku ze starého počítače, který nepodporuje LBA geometrii do nového stroje, který trvá na použití LBA.

Nastartujte stroj za použití bootovacího disku nebo CD-ROM jak je popsáno výše. NAlogujte se jako root a spusťte následující příkazy:

# cp /usr/mdec/boot /boot
# /usr/mdec/installboot -v /boot /usr/mdec/biosboot wd0

Nabootujte, váš systém by měl naběhnout.

installboot(8) nainstaluje a nakonfiguruje boot loader, biosboot(8), kter7 nahraje boot(8). boot(8) je modul, který nahraje kernel do RAM. biosboot(8) má v sobě tabulku, která ukazuje na fyzické umístění (podle vašeho BIOSu) z boot(8). Pokud uděláte něco co změní náhled BIOSu na umístění boot(8), musíte znovu spustit installboot(8) jako výše abyste reinicializovali tabulku ukazující na boot(8).

Podívejte se na Install Boot pro více informací.

14.7 - Jak je to s velkými disky v OpenBSD

OpenBSD podporuje pro souborové systémy o velikostech mnohem větších než mají současně nebo brzy dostupné disky, nicméně existují limity na některých rozhraních, které jsou menší než teoretické maximum OpenBSD. V případě IDE disků je limit 128GB, limit současného populárního ATA rozhraní. Další generace ATA disků s kapacitami vyššími než 128G (1G=2^30, ne 1,000,000,000, takže někteří výrobci to budou často nazývat 137G), nebude podporována do OpenBSD 3.1 a dřívější. Dary nebo hardware pro vývojové učely jsou vítány.)

Nenaštěstí, plná schopnost OS je dostupná až PO nahrátí OS do paměti a poté, co bootovací proces nastaví limity. Bootovací proces musí použít (a tím pádem je jím limitován) systémovou boot ROM. OpenBSD i386 boot loadery (biosboot(8) a boot(8)) mají svoje interní limity 8G ze starého limitu BIOSu.

Z tohoto důvodu musí být celý soubor /bsd (kernel) umístěn na disku v oblasti adresovatelné boot ROM nebo do 8G na disku, cokoliv z toho je menší. To znamená, že na některých starších počítačích i386 musí být root partišna umístěna v prvních 504M, ale pro většinu nových počítačů může být root partišna během prvních 8G.

Je možné instalovat 40G disk na starou 486 a nahrát na něj OpenBSD na jedné velké partišně a myslet si, že jste porušili výše uvedené pravidlo. Nicméně to být nepříjemné v několika ohledech:

Proč ? Protože když zkopírujete "přes" nový /bsd soubor, nepřepíšete ten starý, ale je umístěn na nové místo, pravděpodobně za hranicí prvních 504M. Boot loader nebyl schopen najít soubor /bsd a systém se zaseknul.

Abyste OpenBSD nabootovali, /bsd musí být v rozmezí podporovaném boot ROM. Pravidlo je jednoduché:

Celá root partišna musí být v rozmezí, které je adresovatelné BIOSem (nebo boot ROM) nebo během prvních 8G, cokoliv z toho je menší.

Existuje další důvod k rozdělení disku na partišny, než používat jednu velkou partišnu.

14.8 - Instalace Bootbloků - pouze pro i386

Starší verze MS-DOSu mohou pracovat pouze disky, které mají geometrii 1024 cylinderů nebo méně. Protože všechny nové disky mají více než 1024 cylindrů, většina SCSI BIOSů (které jsou na SCSI řadiči) a IDE BIOSů (které jsou částí BIOSU PC) mají volbu (někdy je defaultní) určenou k "překladu" skutečné geometrie disku do nečeho co je v rámci možností MS-DOSu. Nicméně ne všechny BIOSy provádějí tento překlad stejně. Pokud změníte váš BIOS (buď s novou základní deskou nebo SCSI BIOSem) a ten nový používá rozdílný "překlad" geometrie, nebudete schopni nahrát stage boot loader (tím pádem nebudete schopni nahrát kernel). (To je proto, že first stage boot loader obsahuje seznam bloků které skládají /boot v rámci originální "přeložené" geometrie). Pokud používáte IDE disky, a provedete změny ve vašem nastavení BIOSu, můžete nechtěně) změnit také překlady (většina IDE disků nabízí 3 různé překlady.) Abyste spravili váš boot block abyste mohli nabootovat normálně, vložte bootovací disketu do drivu (nebo použijte bootovatelný CD-ROM) a na příkazovém promptu napište "b hd0a:/bsd", čímž vynutíte boot z prvního hard disku (a ne z floppy). Vaše mašina by měla naběhnout normálně. Teď budete potřebovat updatovat first stage boot loader abyste viděli novou geometrii (a znovu zapsat boot blok podle toho).
Náš příklad bude předpokládat že boot disk je sd0 (ale pro IDE disky to bude wd0, atd..):

# cd /usr/mdec; ./installboot /boot biosboot sd0

Pokud si installboot stěžuje že nemůže číst geometrii BIOS, v boot> promptu můžete zadat "machine diskinfo" (nebo krátce "ma di") aby se vytiskla požadovaná informace. Vyplňte hodnoty "heads" a "secs" pomocí flagů -h a -s, repsektive modifikujte installboot příkaz tak, aby vypadal následovně:

# cd /usr/mdec; ./installboot -h <heads> -s <secs> /boot biosboot sd0

Pokud ne vyžadovaná nová verze bootblocků, budete potřebovat zkompilovat tyto sami. To uděláte jednoduše:

# cd /sys/arch/i386/stand/
# make && make install 
# cd /usr/mdec; cp ./boot /boot
# ./installboot /boot biosboot sd0 (or whatever device your hard disk is)

14.9 - Příprava na katastrofu: Zálohování a obnova z pásky.

Úvod:

Pokud plánujete provozovat něco co se dá nazvat produkční server, je rozumné mít nějakou formu zálohování v případě, že některý z vašich pevných disků padne.

Tato informace vám pomže v používání standartních utilit dump(8)/restore(8) dodávaných s OpenBSD. Lepší utilita nazvaná "Amanda" lze použít pro více serverů sdíljících jednu páskovou jednotku. V většině prostředí je kombinace dump(8)/restore(8) dostačující. Nicméně jestliže potřebujete zálohovat více strojů na jednu pásku, může stát výzkum Amandy za to.

Příklady pro zařízení v tomto dokumentu jsou pro konfiguraci která zahrnuje SCSI disky a pásku. V produčním prostředí jsou SCSI disky doporučovány kvůli způsobů jakým zacházejí se špatnými bloky. Tím nechceme říci, že tyto informace budou zbytečné v případě že použíáte IDE disky, jenom se situace bude mírně lišit. Například sd0a by bylo v IDE systému wd0a.

Zálohování na pásku:

Zálohování na pásku vyžaduje znalost místa, kde jsou namontovány filesystémy. To můžete zjistit pomocí příkazu mount(8) v shellu. Měli byste dostat výstup podobný tomuto:

# mount
/dev/sd0a on / type ffs (local)
/dev/sd0h on /usr type ffs (local)  

V tomto příkladě je root (/) filesystem umístěn fyzicky na sd0a, což indikuje pevná disk SCSI 0, diskový oddíl a. Filesystém /usr je na sd0h, což je pevný disk SCSI 0, diskový oddíl h.

Další příklad více komplikované tabulky by mohl být:

# mount
/dev/sd0a on / type ffs (local)
/dev/sd0d on /var type ffs (local)
/dev/sd0e on /home type ffs (local)
/dev/sd0h on /usr type ffs (local)  

V tomto komplikovanějčím příkladě je root (/) filesystem fyzicky na sd0a. Filesystém /var je na sd0d, /home je na sd0e a konečně /usr je na sd0h.

Abyste zálohovali váš stroj budete potřebovat dodat dumpu jméno každého pevného diskového oddílu. Zde je příklad příkazů potřebných pro jednodušší mount tabulku uvedenou výše:

# /sbin/dump -0au -f /dev/nrst0 /dev/rsd0a
# /sbin/dump -0au -f /dev/nrst0 /dev/rsd0h
# mt -f /dev/rst0 rewind  

Pro složitější tabulku, byste použili nšco jako:

# /sbin/dump -0au -f /dev/nrst0 /dev/rsd0a
# /sbin/dump -0au -f /dev/nrst0 /dev/rsd0d
# /sbin/dump -0au -f /dev/nrst0 /dev/rsd0e
# /sbin/dump -0au -f /dev/nrst0 /dev/rsd0h  
# mt -f /dev/rst0 rewind  

Můžete si přečíst manuálovou stránku abyste se dozvěděli co přesně dělá který přepínač. Zde je krátký popis parametrů popsaných výše:

Nakonec kterýž diskový oddíl chcete zálohovat (/dev/rsd0a, atd.)

Příkaz mt je použit k přetočení pásky. Přečtěte si manuálovou stránku abyste se dozvěděli více options. (jako např. eject).

Pokud si nejste jistí jménem páskového zařízení, použijte dmesg k tomu, abyste jej lokalizovali. Příklad záznamu páskového zařízení v dmesg by vypadal asi takto:

st0 at scsibus0 targ 5 lun 0: <ARCHIVE, Python 28388-XXX, 5.28>

Možná jste zaznamenali, že když zálohujete je k páskovému zařízení přistupováno jako k "nrst0" namísto "st0", což je jméno které je uvedeno v dmesg. Když přistupujete k st0 jako k nrst0, přistupujete k tomu samému fyzickému zařízení, ale říkáte tím, aby se jednotka nepřevinula až dojde na konec a aby se k ní přistupovalo v raw modu. Abyste zálohovali více systémů na jednu pásku, ujistěte se, že používáte non-rewind zařízení, protože kdybyste použili rewind zařízení (rst0) na zálohování více systémů, dopadlo by to tak, že byste si přepsali filesystém s dalším dumpem na pásku. Příslušný popis různých rozhraní k páskovým zařízením můžete najít v manuálové stránce dumpu.

Pkud jste chtěli napsat malý skript nazvaný "backup", mohl by vypadat nějak takto:

echo "  Startuji Plnou Zálohu..."
/sbin/dump -0au -f /dev/nrst0 /dev/rsd0a
/sbin/dump -0au -f /dev/nrst0 /dev/rsd0d
/sbin/dump -0au -f /dev/nrst0 /dev/rsd0e
/sbin/dump -0au -f /dev/nrst0 /dev/rsd0h
echo
echo -n "  Přetáčím pásku, čekejte prosím..."
mt -f /dev/rst0 rewind
echo "Hotovo."
echo                      

Pokud požadujete zálohy každou noc, použijte cron(8) pro automatický start zálohovacího skriptu.

Dále vám může pomoci napsat si (na kus papíru) jak velké by měly být jednotlivé filesystémy. Můžete použít df -h na zjištění kolik místa zabírají jednotlivé dikoé oddíly. To bude užitečné když disk spadne a vy budete potřebovat znovuvytvořit tabulku diskových oddílů na novém disku.

Znovuobnovení vašich dat vám pomůže zmenšit fragmentaci. Abyste se ujistili, že dostanete všechny soubory, nejlepší způsob jak zálohovat je rebootovat vás sytem v single módu. File systémy nepotřebují být namontovány k tomu aby mohly být zálohovány. Nezapomeňte namontovat root (/) r/w po rebootu v single modu nebo váš dump spadne když se bude pokoušet zapsat data dumpu. Napište bsd -s v boot> promptu abyste se dostali do single modu.

Prohlížení obsahu pásky:

Poté co jste zálohovali vaše filesystémy poprvé, byl by dobrý nápad otestovat vaši pásku a ujistit se, že na ní jsou data ve stavu v jakém jste očekávali.

Můžete použít následující příklad k tomu abyste si prohlédli seznam souborů na pásce:

# /sbin/restore -tvs 1 -f /dev/rst0

To vylistuje seznam souborů které jsou na prvním diskovém oddílu pásky. S informacemi uvedenými výše můžeme říct, že 1 bude váš root (/) file system.

Abyste si prohlédli co je uloženo na druhém diskovém oddílu, přesměrujte výstup do souboru, použijte něco jako:

# /sbin/restore -tvs 2 -f /dev/rst0 > /home/me/list.txt

Pokud máte mount tabulku podobnou té v jednodušším příkladu, 2ka by byla /usr, pokud je vaše složitější, tak 2ka by mohla být /var nebo jiný fs. Sekvenční čílo se shoduje s pořadím vkterém jsou file systémy azapisovány na pásku.

Obnova z pásky:

Příklad scénáře vypsaného dále by mohl být užitečný pokud vám spadl disk kompletně. V případě že budete chtít obnovit pouze jeden soubor, podívejte se na manuálovou stránku a věnujte pozor instrukcím pro interaktvní mod.

Pokud jste se pořádně připravili, výměna disku a obnova dat bude velmi rychlý proces. Standartní instalční/bootovací disketa s OpenBSD už obsahuje požadovanou utilitu restore stejně jako binárky nutné k tomu abyste udělali nový disk bootovatelný. Ve většine případů jsou tato disketa a páska se zálohou vše co potřebujete abyste obnovili data a znovu se rozjeli.

Jakmile jste fyzicky vyměnili disk, základní kroky jak obnovit vaše data by byly:

14.10 - Mountování disk images v OpenBSD

Abyste namontovali v OpenBSD disk image (ISO images, diskové images vytvořené pomocí dd, atd.) musíte konfigurovat zařízení vnd(4) Na příklad pokud máte ISO image v /tmp/ISO.image, následující kroky vám tento image namontují.

# vnconfig svnd0 /tmp/ISO.image
# mount -t cd9660 /dev/svnd0c /mnt

Všimněte si, že toto je CD image, takže při montování musíte specifikovat typ cd9660. To platí nezávisle na typu, například musíte zadat typ ffs pokud montujete diskové images.

K tomu abyste odmontovali image, použijte následující príkazy:

# umount /mnt
# vnconfig -u svnd0

Více informací naleznete v manuálové stránce vnconfig(8) man page.

14.11 - Pomoc! Dostávám chyby s PCIIDE!

PCI IDE DMA je nespolehlivá s mnoha kombinacemi hardware. Ještě donedávna se většina "mainstreamových" operačních systémů, které tvrdily, že podporují DMA transfery na IDE discích nedodávala s touto vlastností defaultně zapnutou.

OpenBSD je agresivní a poukouší se použít nejvyšší DMA mód, který může konfigurovat. Tímto ale dochází k narušení přenosů dat u některých nastavení, kvůli chybovému chipsetu zakládní desky, chybovým driverům a/nebo šumu na kabelu. Naštěstí Ultra-DMA mód přidává k datům CRC pro detekci těchto narušení. Pokud Ultra-DMA CRC je chybná, OpenBSD vypíše chybovou hlášku a zkouší transfer provést ještě jednou.

wd2a:  aborted command, interface CRC error reading fsbn 64 of 64-79 (wd2 bn 127; cn 0 tn 2 sn 1), retrying

Po několikerém selhání OpenBSD sníží konfiguraci na pomalejší (doufejme, že spolehlivější) Ultra-DMA mód. Pokud je dosaženo Ultra-DMA módu 0, řadič disku downgraduje na PIO mód.

Pokud vaše OpenBSD úspěšně nedowngraduje konfiguraci přenosového módu nebo tento proces způsobí, že stroj natvrdo zatuhne, napište prosím zprávu o chybě.

a name= "IDEDMA">

14.12 - Jak přikázat DMA přístup pro IDE disky

Kódu realizující obsluhu zařízení PCI IDE v jádře nemusí znát chipset vašeho řadiče. Pokud se tak stane, dostanete při startu zprávu jako:

pciide0: DMA, (unused)
Pokud jste ten případ, můžete se pokusit ještě stále DMA zprovoznit. Provedete to tak, že ve vašem konfiguračním souboru jádra přidáte k záznamu patřícímu pciide řadiči volbu 'flags 0x0001'. Daná řádka v konfiguračním souboru jádra pak bude vypada např. takto:
pciide* at pci ? dev ? function ? flags 0x0001
S touto úpravou zkusí pciide kód v jádře použít DMA mód bez ohledu na to, jestli ví, jak to udělat u vašeho chipsetu. Pokud se mu to podaří úspěšně a váš systém projde přes fsck a startovací rc skripty, je velmi pravděpodobné, že to bude fungovat trvale. Pokud tento způsob nefunguje a systém vytuhne nebo po nastartování skončí na kernel panic, pak nemůžete použít DMA mód (alespoň do té doby, než je přidána podpora pro váš chipset). Poznamenjme jen, že pokud někde najdete dokumentaci k vašemu chipsetu PCI-IDE řadiče, pak jste na dobré cestě, aby váš chipset byl zcela podporován pod OpenBSD. Můžete zkusit hledat třeba na webové stránce výrobce nebo mu zavolat. Pokud váš PCI-IDE řadiče je součástí základní desky, zjistěte výrobce chipsetu a od něho dokumentaci.

To, že DMA podpora u vašeho hardware byla pod OpenBSD zapnuta zjistíte pohledem na dmesg, konkrétně něco jako:

cd0(pciide0:1:0): using PIO mode 3, DMA mode 1
Výše uvedené znamená, že řadič pciide0, kanál 1, zařízení 0 (které se jeví jako ATAPI CD-ROM) používá DMA data transfery.

14.13 - Možnosti RAID v OpenBSD

RAID (Redundant Array of Inexpensive Disks) dává možnost použití několika disků abyste dosáhli vyššího výkonu, kapacity a/nebo redundance než kolik můžete získat z několika disků samotných. Ačkoliv je úplná diskuse nad výhodami a risky RAID mimo obsah tohoto článku, je několik bodů, které jsou důležité: Pokud je to pro vás nová informace, pak to není dobrý počáteční bod pro zkoumání RAIDu.

Softwarové možnosti

OpenBSD obsahuje RADIframe, softwarové řešení RAIDu. Dokumentace pro něj můžete nalézt na následujících místech:

V současné době nemůže být root partišna mirrorovaná pomocí RAIDframe na OpenBSD, to se ale změní s další release OpenBSD. Počínaje OpenBSD 3.1 může být root partišna přímo mirrorována na OpenBSD použitím opšny "Autoconfiguration" v RAIDframe. Předchozí vydání OpenBSD nemohly mít root partišnu takto mirrorovanou.

Hardwarová řešení

Mnoho OpenBSD platforem zahrnuje podporu pro různé RAID produkty. Tyto se liší od platformy, podívejte se na příslušnou stránku (zde).

Další možnost, která je dostupná pro mnoho platforem je jeden z mnoha produktů, které zpřístupňují několik disků, tak že se celek chová jako jeden IDE nebo SCSI adaptér. Tyto zařízení mohou pracovat na skoro jakékoliv platformě, která podporuje IDE nebo SCSI.

Někteří výrobci těchto produktů: (Poznámka: tyto jsou pouze produkty, které používají někteří uživatelé OpenBSD -- toto není úplný seznam.)

Ne-možnosti

Často jsou kladenou otázkou na mailing listech je "Je podporován Promise nebo HighPoint IDE RAID kontrolér ?". Odpověď je "Ne". Tyto karty a čipy nejsou opravdové RAID kontroléry, ale BIOS asistované bootvání softwrového RAIDu. Protože OpenBSD už podporuje softwarový RAID v hardware nezávislým způsobem, není příliš ochoty mezi OpenBSD developery implementovat speciální podporu pro tyto karty.

[Zpět na Hlavní Index] [Na Sekci 13.0 - IPsec]


[zpět] www@openbsd.org
Originally [OpenBSD: faq14.html,v 1.71 ]
$Translation: faq14.html,v 1.17 2003/11/02 21:49:27 certik Exp $
$OpenBSD: faq14.html,v 1.17 2003/11/03 14:19:31 horacio Exp $