Ako nabútovať Linux zo súboru

Možnosť vytvoriť súbor, z ktorého operačné systémy bútujú, dnes ponúkajú Corel Linux, BeOS a ešte iné systémy U...


Možnosť vytvoriť súbor, z ktorého operačné systémy bútujú, dnes ponúkajú Corel
Linux, BeOS a ešte iné systémy Unixu. Nevýhodou týchto inštalácií je
skutočnosť, že jednoduchý užívateí vlastne ani nevie v prípade, ak si chce
takýto súbor prekopírovať na iný disk prípadne CD že ho na inom disku nebude
mÖcť používať, ak neupraví ramdisk, teda súbor initrd.gz. Tento článok sa
pokúsi objasniť niektoré zložitejšie stránky bútovania Linuxu zo súboru a
pomÖže čitateíovi takýto súbor vytvoriť.
Niekedy mÖže byť veími užitočné vytvoriť si takýto súbor sám a podía vlastných
potrieb. Takto možno systém kdekoívek preniesť, ak máte CD zapisovačku, a
používať či prezentovať ho bez rizika delenia diskov na iných počítačoch.
SpÖsob tu uvedený bol mnou odskúšaný na Red Hat 6.0, 6.1, 6.2 a SuSE 6.4.
Ako na to
Linux má v adresári /dev zariadenie loop, pomocou ktorého mÖžete pripojiť súbor
ako disk. Pomocou takéhoto súboru, kde si uložíte celý systém, mÖžete spustiť
Linux aj z diskového oddielu FAT32 či menej používaných súborových systémov
(napr. hpfs). Tento spÖsob je lepší než Umsdos, ale to je skÖr mÖj názor,
pretože raz sa mi stalo, že som potreboval vymazať adresár súborového systému
Umsdos v C:Linux a trvalo mi to viac ako hodinu. Bolo už neskoro, keď ma
napadlo, že DOS pracuje rýchlejšie s utilitou smartdrive, ktorú som si
nenainštaloval. A navyše, kopírovanie veía súborov, ktoré dohromady zaberajú
menej miesta než jeden veíký súbor, trvá oveía dlhšie. Umsdos síce pekne
funguje a správa sa na dosovskom diskovom oddieli priateísky, súbor loop je
však len jeden, možno ho íahko napáliť na CD a prenášať či kopírovať na
hardisky bez starostí. Súbor, ktorý bútuje cez zariadenie loop, používa
ramdisk, ktorý je tiež virtuálne zariadenie. Ak si však chcete vytvoriť takýto
súbor, je nutné urobiť nasledovné:
Zabezpečte si dosť miesta na disku. Samozrejme, treba mať nainštalovaný Linux,
v ktorom si vytvoríte jeden adresár, ktorý pomenujete hocijako, povedzme /loop.
Potrebné je si urobiť plán, ako má vyzerať Linux, XFree86, či je potrebné KDE,
GNOME, či stačí iba jednoduchý X Windows Manager ako fvwm, či výsledný súbor
zazipujete alebo nie, alebo či sa skÖr uspokojíte s miniverziou Linuxu. Keďže
rÖzne systémy používajú kadejaké grafické karty, bolo by dobre prekonfigurovať
si X Windows na štandardnú grafickú kartu VGA, aby sme X Windows spustili na
hocijakom systéme.
Ramdisk vytvoríte takto: mkdir /loop
potom cd /loop ; dd if=/dev/zero of=initrd bs=1k count=1024
Teraz si vytvoríme disk povedzme o veíkosti 650 MB v tom istom adresári:
dd if=/dev/zero of=dsk.img bs=1k count= 665600 a dsk.img naformátujeme: mke2fs
-i 1024 -b 1024 -m 5 -F -v dsk.img
Dobré by bolo vytvoriť swap file:
dd if=/dev/zero of=swp.img bs=1k count=8192 (čo je 8MB)
Swap inicializujeme: swapon swp.img
Teraz naformátujeme ramdisk:
mke2fs -i 1024 -b 1024 -m 5 -F -v initrd
Pripojíme Ramdisk:
mount initrd -o loop /mnt (sme v adresári/loop)
Týmto sme súbor initrd pripojili do adresára /mnt a teraz doň prekopírujeme
potrebné súbory. Samozrejme, stačí nám troška tvorivosti a intuície, aby sme
vedeli, aké súbory treba vybrať a prekopírovať.
Potrebné súbory
V zásade by sme mali zachovať takúto štruktúru:
bin, dev, etc, lib, mnt, initrd (adresáre) a súbor linuxrc, ktorý bude
obsahovať nasledovné: #!/bin/sh
echo INITRD: Pripajam Linux
if /bin/mount -n -t msdos /dev/hda1 /mnt; then
echo INITRD: Mounted OK
/bin/losetup /dev/loop0 /mnt/linux/dsk.img
/bin/losetup /dev/loop1 /mnt/linux/swp.img
exit 0
else
echo INITRD: Mount sa nepodaril
exit 1
fi
Do adresára /dev dáme základné diskové zariadenia a čosi navyše: hda, hda1,
hda2, hda3, hda4, hda5, hda6, hda7, hdb, hdb1, hdb2, hdb3, hdb4, hdb5, hdb6,
hdb7, hdc, hdc1, hdc2, hdc3, loop0, loop1, null, sda, sda4, tty, tty1, tty2,
zero; do adresára /bin dáme shell ash, ktorý zaberá oveía menej miesta než
bash, losetup (kontroluje zariadenie loop) a mount. Urobíme symlink bash a sh
na ash (ln s bash ash; ln s sh ash) a pridáme tieto knižnice do adresára lib:
ld-linux.so.1, libc.so. 5.4.13, libc.so.5 (Red Hat). Keby ste sa neodvážili
urobiť tento krok sami, možno pochopiteíne použiť už existujúci initrd.gz súbor
z nejakej jestvujúcej mini distribúcie Linuxu, kde však treba editovať súbor
linuxrc. Takéto mini distribúcie si mÖžete vyhíadať na http://freshmeat.net,
prípadne použite veími kvalitnú mini distribúciu muLinux. Súbor linuxrc je
potrebné upraviť pre viac diskov. Keď ho upravíme, odpojíme adresár /mnt
(umount /mnt) a súbor initrd prekopírujeme na iné miesto, povedzme do adresára
/hda1. Tam súbor initrd ešte musíme zapakovať (gzip initrd), čím získame súbor
initrd.gz vhodný pre disk hda1 (dosovské C:). Pokračujeme tak, že upravíme
riadok "if /bin/mount -n -t msdos /dev/hda1 /mnt; then" aby sme mali viac
súborov initrd.gz s odkazom na rÖzne disky /dev/hda1 zmeňte na /dev/hda2, potom
na /dev/hda3, potom /dev/hda4 až /dev/hdc atď. Zakaždým po zapísaní disku vo
vašom obíúbenom editore odpojte súbor initrd z adresára /mnt (umount /mnt) a
následne ho prekopírujte do adekvátneho adresára, kde ho zapakujte gzipom
("gzip initrd"), až ich budete mať niekoíko pre rÖzne disky. Takto budete mÖcť
bútovať bez problémov aj z počítača, kde je DOS či MS Windows a jeho niekoíko
logických diskov.
V prípade, že by ste chceli bútovať priamo z CD disku, treba ešte upraviť
riadok "if /bin/mount -n -t msdos /dev/hdc /mnt; then", kde za prepínač "-t"
dáme iso9660 (-t iso9660). Pochopiteíne, ak používate OS/2, za prepínač "-t"
mÖžete dať hpfs (-t hpfs), ale podpora hpfs musí byť zakompilovaná v jadre.
Adresár /etc by mal obsahovať súbor ld.so.cache a fstab. Pochopiteíne, bútovať
možno aj zo Zip disku, kde však kernel treba prekompilovať pre podporu Zip
Drive a /dev/hda1 zmeníme na /dev/sda4 ak Zip bude mať dosovský formát.
Rootdisk
Teraz si potrebujeme spraviť rootdisk. Ale nezabudnime, že súbor /etc/fstab v
ramdisku (initrd.gz) sa musí odkazovať na zariadenie loop napríklad takto:
/dev/loop0 / ext2 defaults 1 1
/dev/loop1 swap swap defaults 1 1
Keby ste používali staršie jadro (Red Hat 6.0), nezabudnite, že treba urobiť
zmenu v súbore /usr/src/init/main.c, pretože staršie jadro nepodporuje
bútovanie z loop implicitne a treba ho prekompilovať s podporou pre loop. Ak
neviete ako, stačí použiť súbor main.c z novších zdrojových kódov pre jadro. A
teraz to najdÖležitejšie. Pripojíte si súbor dsk.img do nejakého adresára,
napr. /mnt, ktorý však treba odpojiť v prípade, že bol doň pripojený ramdisk.
Súbor pripojíte takto: mount dsk.img o loop /mnt. Do súboru, resp. do adresára /
mnt prekopírujete linuxovské adresáre tak, aby veíkosť adresára /mnt
nepresiahla viac ako 650 MB (jeho veíkosť mÖže byť však oveía väčšia, ak neskÖr
plánujete súbor dsk.img zazipovať a tak ho napáliť na CD). Ak náhodou neviete,
ako to urobiť, mÖžete kíudne prekopírovať celý Linux do /mnt a potom aj zmazať
všetky manuálové stránky z /mnt/usr/man, dokumenty z /mnt/usr/doc,
/mnt/usr/info a zdrojové kódy pre jadro z /mnt/usr/src. Ak veíkosť adresára
pripojeného súboru dsk.img presahuje 650 MB a neviete si rady, použite rpm na
odinštalovanie nepotrebných balíkov, prípadne utilitu upx, ktorú nájdete na
http://freshmeat.net. Pomocou nej skomprimujete spustiteíné súbory tak, že
budete sami prekvapení. Ak ste všetko urobili podía mojich pokynov, potrebujete
iba päť súborov v adresári Linux niekde v systéme DOS: dsk.img, swp.img,
initrd.gz, lodalin.exe a spustma.bat. Po ich prekopírovaní na DOS si editujete
dávkový súbor spustma.bat takto:
loadlin zImage initrd=initrd.gz root=/ dev/loop0
Samozrejme, musíte použiť taký súbor initrd.gz, ktorého linuxrc sa odkazuje na
disk, kde sa nachádzajú naše súbory. Napokon reštartujte počítač z Linuxu do
DOSu a vyskúšajte to. Po nabútovaní Linuxu budete mať v adresári /initrd
pripojený disk, z ktorého ste spustili súbor dsk.img. Teraz mÖžete, ak sa
neobjavili nejaké problémy, súbory napáliť na CD a kdekoívek ich priniesť a
prezentovať. Nezabudnite však, že ich treba napáliť aj s najmenej desiatimi
súbormi initrd.gz, ktoré budete mať v nejakom adresári, napr.
X:ramdiskhda1... až... hdb9, kde X: je vaša CD mechanika v DOSe. Veía šťastia!
0 2892 / pen









Komentáře
K tomuto článku není připojena žádná diskuze, nebo byla zakázána.