Instalace Linuxu z ISO obrazů na disku

12. 11. 2004
Doba čtení: 9 minut

Sdílet

Návod určený pro ty, kdo rádi upgradují své distribuce, ale nemají k dispozici rychlé připojení k Internetu, ani se jim nechce pořád dokola přepalovat instalační média. Návod je optimalizován pro Debian.

Nejedna distribuce Linuxu je v mezidobích oddělujících release verze k dispozici ve verzích testovacích, které sice nejsou tak stabilní jako release, zato se pohybují na hraně současných možností. Mnoho distribucí je i v těchto nestabilních verzích k dispozici v podobě CD či DVD ISO obrazů, což přijde vhod, zejména pokud chybí rychlé a levné připojení k Internetu. Chcete-li, aby byl i takto hendikepovaný počítač „na hraně“, možná to bude znamenat pravidelně stahovat obrazy CD, následně je vypalovat na přepisovatelná média a při instalaci pravidelně zažívat soukromou diskotéku – například unstable a testing větev Debianu již nabubřela do rozsahu cca 15 CD. Pravděpodobně vás to časem začne nudit, a to ani nemluvím o riziku zulámání dvířek mechaniky. I já jsem se cítil poněkud znuděn – a tak jsem napsal tenhle návod. Návod je, jak již už možná tušíte, mírně Debian-specifický, pokud ovšem používáte distribuci jinou, nejspíš zde i tak najdete pár styčných bodů…

Varování na úvod

Zatoužíte-li po maximálně aktuálním systému, je pro vás určena Sid (unstable) větev Debianu. Budete se ale muset smířit se s tím, že možná na vlastní kůži poznáte, co to znamená „unstable“. V Debian Sid FAQ jsou zmíněny situace, kdy byl např. chybný balíček libpam. Chybný byl dost na to, že se po jeho instalaci nebylo možné přihlásit do systému. Jindy se stalo, že nefungoval grep, a tak počítač najížděl a najížděl a… najížděl by navěky, nedošla-li by někomu trpělivost. Nedávno jsem zažil určité potíže s Tomcatem a s Javou. Prostě za maximální aktuálnost zaplatíte zvýšeným rizikem. Větev testing je trochu pozadu za unstable a má taktéž občasné mouchy – např. poměrně dlouhou dobu nešlo nainstalovat KDE kvůli chybně definovaným závislostem (nevím, zda je tento problém již vyřešen), ale obecně je testing přeci jenom stabilnější. Na dotaz, zda by se hodil Sid na server, odpovídají v Sid FAQ ve smyslu: Šílíte? Rozhodně ne! Na servery patří stable, byť možná trochu okořeněný vybranými backporty.

Kam na obrazy?

ISO obrazy non-stable verzí Debianu nenajdete na oficiálních stránkách, bude třeba zapátrat po zdrojích třetích stran, popř. si je sestavit vlastnoručně.

1) FTP

Jedním z dobrých zdrojů je např. server

ftp://ftp.fsn.hu/pub/CDROM-Images/debian-unofficial/sid
ftp://ftp.fsn.hu/pub/CDROM-Images/debian-unofficial/sarge

odkud je snadno stáhnete, a je to asi nejsnadnější řešení, nenáročné na konfiguraci a použité nástroje. Tyto neoficiální obrazy jsou vytvářeny většinou každou sobotu. Server vás při přihlášení ani moc nepozdraví a spíš varuje:

         ftp.fsn.hu's unofficial Debian CDs
         ----------------------------------

These images are not the official debian CDs. Please
note that some of these CDs are made automatically so
we can not guarantee that they are perfect, the quality
depends on the quality of the debian-cd script.

For mirrors see:
ftp://ftp.fsn.hu/pub/CDROM-Images/debian-unofficial/MIRRORS

Please don't forget to take a look at:
ftp://ftp.fsn.hu/pub/CDROM-Images/debian-unofficial/NEWS

If you have a mirror and aren't listed in that file
please contact bra@fsn.hu!

Jak vidíte, kvalita není zaručena a dozvídáme se ještě o zrcadlech…

2) BitTorrent

Další možností je využít pro stahování P2P síť BitTorrent, kde platí zásada jeden pro všechny a všichni pro jednoho, a tak je možné dosahovat vysokých rychlostí a přitom odlehčit přetíženým ftp serverům. Pro stažení čehokoliv v síti budete potřebovat jakýsi stahovací předpis – soubor obvykle končící příponou .torrent. Kupříkladu na adrese

cdimage.debian­.org/pub/weekly/to­rrents/i386

najdete torrenty k testing větvi. Unstable torrenty raději nehledejte – větev se mění příliš rychle na to, aby mělo smysl takto ji šířit. O technologii BitTorrent vyšel článek i na Rootovi – viz seznam doporučovaných URL.

3) Jigdo

Pokud tento nástroj použijete, nebudete omezeni na zdroje hotových ISO obrazů, kterých je o poznání méně než těch„normálních“, balíčkových. Můžete tak stahovat ze serverů blízkých, a tedy rychleji. Jigdo je oficiální nástroj Debianu. Jak funguje? Stahuje z klasického zrcadla ty jednotlivé balíčky, které patří na požadované CD. Jakmile jsou všechny na disku, sestaví z nich jeden velký soubor – ISO obraz. To všechno se ale děje nepozorovaně, tak říkajíc za oponou – jediné, co musíte udělat, je určit umístění kýženého .jigdo předpisu. Ke všem obrazům na ftp.fsn.hu najdete příslušné předpisy tamtéž, v podadresáři jigdo. Více se o projektu se dozvíte na jeho domovské stránce, případně v Jigdo HOWTO.

Adresáře pro montování

Dobrá, hřejete si na disku svých čerstvě stažených 14 CD, co tedy dál? Slibovali jsme, že vypalování se konat nebude, tak se pusťme do vaření. Řešení je snadné – vytvoříme strukturu adresářů, do kterých stažené obrazy namontujeme. Body pro montování můžete umístit, kam chcete, já jsem pro ně vyhradil /inst. Do tohoto adresáře jsem umístil soubor list s čísly stažených CD:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

Seznam se bude hodit dále pro některé skripty a příkazy. Možná namítnete, že by ve skriptech stačilo používat nějakou sekvenci ve smyslu 1..15. Máte pravdu, ovšem když takto vyjmenujete všechna CD, budete moci snadno např. vyškrtnout chybějící CD.

Adresáře vytvoříme např. takto:

for x in `cat /inst/list`
do
md /inst/$x
done

Vlastní obrazy jsem umístil do /usr/0/debian/.

Skripty pro líné

Pro pohodlnou práci s obrazy stojí za to vyrobit pár velejednoduchých skriptíků. Například tímhle obrazy přimontujete do vytvořených adresářů; bude možná nutné upravit základ názvu souboru.

cat /inst/mountinst
#!/bin/sh
for x in `cat /inst/list`
do
mount /usr/0/debian/sarge-i386-$x.iso -t iso9660 -o loop /inst/$x
done 

Do fstab jsem záznamy nepřidával, ovšem myslím, že vám v tom nic nebrání, budete pak moci nastavit automatické montování po startu. Takto vypadá můj skript pro odmontování všech CD:

cat /inst/umountinst
#!/bin/sh
for x in `cat /inst/list`
do
umount /inst/$x
done

Následujícím skriptem zaktualizujete databázi balíčků, které jsou k dispozici pro instalaci:

cat /inst/aptinst
#!/bin/sh
for x in `cat list`
do
apt-cdrom --cdrom /inst/$x --no-mount add
done

Protože některé nástroje (např. Aptitude) vyžadují pro určité úkoly mít CD připojená do /cdrom, v zájmu zvýšení komfortu mám ještě jeden skript volaný s parametrem čísla požadovaného CD:

cat /inst/moc
#!/bin/sh
umount /cdrom
mount /usr/0/debian/sarge-i386-$1.iso -t iso9660 -o loop /cdrom 

Zprovoznění více loop zařízení

Zdá se, že jsme provedli již všechno nezbytné. Je tady ale jeden háček. Jak vidno, k připojování ISO obrazů slouží loop zařízení. Těch je ale omezený počet. Starší kernely (kolem 2.2.) měly počet osmi loop zařízení pevně zakompilovaný, a bylo tedy možné najednou připojit maximálně osm obrazů nebo třeba sdílených síťových CD. Pro zvýšení jejich počtu bychom se neobešli bez zásahu do zdrojáků a rekompilace jádra. Novější kernely (2.4) umožňují přidávat loop zařízení dvěma způsoby:

1) Nastavením loop modulu

Do souboru /etc/modules.conf či /etc/conf.modules přidáte řádek

options loop max_loop=32

Toto řešení funguje, pouze pokud je podpora loop zaváděna jako modul jádra. Po změně počítač restartujte. Můžete také modul zkusit odstranit (rmmod) a přidat (insmod) za běhu. Ozve-li se vám v takovém případě

loop: Device or resource busy

znamená to, že máte nějaké loop zařízení přimontováno, a tak nelze modul odebrat. restart to každopádně vyřeší.

2) Parametrem jádra

Pokud máte loop podporu pevně zakompilovanou do jádra (tedy nikoliv jako modul), bude třeba dát o potřebě vyššího počtu zařízení dát vědět přímo jemu, a to při najíždění. Slouží k tomu parametr:

linux max_loop=32

Pokud používáte zavaděč LILO, bude rozumné nastavit parametr v jeho konfiguraci (/etc/lilo.conf). Slouží k tomu řádek append=. Takhle nějak může vypadat příslušná sekce konfiguračního souboru:

image=/vmlinuz
label=Linux
read-only

append=" max_loop=32"

Mezera před max_loop je záměrná. Že je třeba upravit jen řádek s append a ostatní nechat nedotčené, snad nemusím zdůrazňovat. Po úpravě nezapomeňte změny zavést:

lilo
Added linux *
Added windows
Added floppy

Po restartu by měl být kernel schopný pracovat s více loop zařízeními. Zda jsou parametry správně nastaveny, ověříte:

cat /proc/cmdline

Tvorba loop zařízení v /dev

Kernel již vypadá tak, jak má, ovšem ještě to není vše – je třeba ještě vytvořit samotné soubory loop zařízení. Kolik jich již exituje, zjistíte takto:

ls -l /dev/loop*

Další zařízení vytvoříte příkazem mknod. Major číslo bude 7, minor začíná nulou. Loop číslo 8 vytvoříte takto:

mknod -m660 /dev/loop8
b 7 8

Jste-li dostatečně líní, můžete si práci usnadnit nějakým tím for cyklem pro vytvoření všech potřebných souborů zařízení. Podle potřeby také můžete upravit práva k souborům a jejich vlastníky.

Používání

Nyní již máte snad připraveno vše potřebné pro pohodlnou instalaci přímo z přimontovaných obrazů. Celý postup aktualizace systému můžeme shrnout do těchto kroků:

  1. stažení nových ISO (wget, lynx, ftp, BitTorrent, Jigdo..)
  2. odmontování starých obrazů (/inst/umountinst)
  3. umístění obrazů do /usr/0/debian
  4. přimontování nových obrazů (/inst/mountinst)
  5. aktualizace databáze APT (/inst/aptinst)
  6. a můžeme instalovat (apt, aptitude..)

Pro vlastní instalaci používám nejraději Aptitude. Tento nástroj je sympatický pohodlným ovládáním, spoluprací s APT a zejména tím, že vytváří a spravuje databázi důvodů pro instalaci jednotlivých balíčků, tedy zda jste o daný balíček požádali sami, anebo zda byl nainstalován za účelem splnění závislostí. Kompletní upgrade všech balíčků můžete zahájit např. takto:

aptitude dist-upgrade

Aptitude občas, například při odinstalaci či upgradu, nepochopí, že všechna CD jsou v /inst, a vyzve k vložení CD. Pokud se tak stane, bude třeba nejlépe z vedlejší konzole spustit /inst/moc s číslem CD jako parametrem, tedy např. pro cd 11:

/inst/moc 11

Možná by šlo nějak Aptitude přesvědčit, aby si s nestandardním připojováním poradil, ovšem zatím nevím jak – možná někdo poradíte. I tak je ale o poznání komfortnější občas napsat pár písmen a jedno číslo než neustále přehazovat CD.

Dodatek 1: Kterak jsem instaloval

Při nedávné instalaci unstable verze Debianu mne Aptitude zdrtil hláškou

Warning: could not lock the cache file. Opening in read-only mode 

místo aby se pustil do instalace připravených balíčků. Použitím strace -f jsem vystopoval, že chyba souvisí s voláním:

open("/usr/share/tasksel/debian-tasks.desc", O_RDONLY) = 23 

Odebrání balíčku tasksel pomohlo a instalace dále probíhala jako po másle. Vzhledem k tomu, že inkriminovaný balíček je po prvotní instalaci systému stejně tak asi na dvě věci, nepídil jsem se po hlubších příčinách a spokojil se s takto brutálním řešením. Nejspíše šlo o klasický šum daný nestabilností unstable větve…

ict ve školství 24

Dodatek 2: Jiné možnosti instalace z disku

Montování ISO obrazů není samozřejmě jedinou cestou k instalaci z disku. Za zmínku stojí třeba zřízení lokálního zrcadla s balíčky. Po zrcadlu nejspíše sáhnete, potřebujete-li udržovat Debian na sítích větších než miniaturních. Ale to je námět na jiný článek..

Seznam doporučovaných URL

FTP zdroj obrazů
BitTorrent zdroj obrazů
Článek o technologii BitTorrent
Howto k nástroji Jigdo
Howto k LILO
Manuál k Aptitude