Hlavní navigace

Klonování počítačů

Jakub Jirků

Určitě jste se někdy dostali do situace, kdy jste museli instalovat víc identických počítačů. Ale nainstalovat řekněme 15 počítačů (typická školní učebna) a potom je nakonfigurovat je docela dost práce, zvlášť, když na všech počítačích provádíte totéž. Možná by bylo jednodušší nainstalovat a nakonfigurovat jeden počítač a potom ho nějak zkopírovat. Chtěli byste vědět, jak se takové věci dělají? Pak čtěte dál.

Jak naklonovat počítač? Asi jediná možnost je nainstalovat na něj systém, nastavit si ho podle svých potřeb (mám na mysli nastavení systému, ne takové věci, jako je pozadí na ploše ;), potom udělat jeho kopie na ostatní počítače, a na nich už změnit jenom takové věci, jako je jméno počítače, ip adresa atd. A jak na to?

No v zásadě existují tři cesty. Buďto použijete standardní unixové nastroje a zkopírujete soubory, nebo použijete tytéž (no dobrá, ne _úplně_ tytéž ;) nástroje a zkopírujete celé partišny, a nebo použijete přímo k tomuhle určené programy (je tady ještě jedna cesta, a to opakovaná instalace podle šablony, kterou popisoval na ROOTovi Vac, ale ta tohle neřeší, protože jenom nainstaluje systém a konfiguraci nechá na správci).

Takže tady je první cesta. Jmenuje se tarová, podle hlavního (takříkajíc nosného) programu. Budete potřebovat nějakou minidistribuci obsahující tar, podporu sítě, ssh, a to je asi tak všechno. Ještě podotknu, že tuhle metodu můžete použít jenom na Linux nebo na Unix, s jehož souborovým systémem umí Linux pracovat. Takže tady je postup.

Napřed si na zdrojový počítač nainstalujte nějakou distribuci a nastavte si ji, jak uznáte za vhodné. Až bude vypadat podle vašich představ, nastartujte minidistribuci, nahoďte síť (klony se budou ukládat na serveru), připojte partišnu se systémem, který chcete klonovat, a přejděte do ní. A teď samotná akce – spusťte

# tar -cp ./ | ssh uzivatel@server "cat > /tmp/cil.tar"

kde nahraďte uzivatel, server a /tmp/cil skutečnými hodnotami (silně doporučuji vytvořit si na schraňování klonů zvláštní účet). Pokud budete chtít data zkomprimovat, přidejte taru odpovídající parametr (tj. -z pro gzip, -j pro b2zip) Pokud budete chtít vědět, jak je tar daleko, přidejte parametr -v. Tím je práce na zdrojovém počítači u konce.

Na cílovém počítači nastartujte minidistribuci, vytvořte odpovídající partišny, naformátujte je, připojte a přejděte do místa, kde jsou připojeny. Potom spusťte

# ssh uzivatel@server "cat /tmp/zdroj.tar" | tar -xp

(to xp je tam skutečně jenom náhodou ;). Až bude tohle hotovo, chrootněte se do už naklonovaného systému, upravte věci, ve kterých se má tenhle systém od toho původního lišit (ip adresa, hostname, fstab), a nezapomeňte obnovit bootloader, jinak systém nenastartujete. Až tohle všechno bude hotovo, můžete se jenom těšit z nově naklonovaného systému.

Bohužel tahle cesta má jednu nevýhodu: Nelze ji použít na jiný systém než na Linux. K tomu je tady ta druhá cesta.

Ta spočívá v používání programu cat, proto se jí dá říkat třeba catová, nebo česky kočičí. Jediný rozdíl oproti té předcházející je v tom, že se partišny nemontují, ale kopírují celé. Má to svoje výhody i nevýhody. Výhodou je, že můžete klonovat jakýkoliv OS, nevýhodou je, že se partišny skutečně kopírují _celé_, tedy i s volným místem. Z toho vyplývá, že 5 GB partišna bude na serveru zkutečně zabírat 5 GB, i když bude zabraná jenom z poloviny. Postup je skoro totožný.

Opět si nainstalujte a nakonfigurujte distribuci, opět si nastartujte minidistribuci a opět si spusťte síť. Tentokrát ale už nebudete nic nikam mountovat a rovnou spustíte

# cat /dev/hda1 | ssh uzivatel@server "cat > /tmp/cil"

Pokud toužíte po kompresi (jako že asi ano), přiřaďte do řetězce mezi cat a ssh bzip2. Nějak takhle

# cat /dev/hda1 | bzip2 -s | ssh uzivatel@server "cat > /tmp/cil.bz2"

Postup pro cílový stroj je opět velmi podobný. Nastartujte minidistribuci, rozdělte disk (POZOR, cílová partišna musí být stejně velká jako zdrojová, a to na sektor) a spusťte

ssh uzivatel@server "cat /tmp/zdroj" > /dev/hda1

S (de)kompresí tohle

ssh uzivatel@server "cat /tmp/zdroj.bz2" | bunzip -c > /dev/hda1

Teď připojte čerstvě naklonovanou partišnu, chrootněte se do ní, upravte rozdíly a spusťte bootloader. A opět se můžete těšit z nově naklonovaného systému.

Ale občas je ale potřeba skloubit obě možnosti do jedné, tedy klonovat jiný OS než Linux a přitom nepřenášet celou 40 GB partišnu. K tomu je tady třetí cesta, založená na používaní programu Partimage.

Partimage je projekt, o kterém každý klonér snil. Přetahuje jenom obsazené místo, a to na reiserfs, ext2/3, fat12/16/32, ntfs, jfs, xfs, hpfs, hfs a ufs a má vestavěnou podporu sítě. Způsob použití je skutečně jednoduchý a navíc se od těch předcházejících liší jen velmi málo. Tady je.

Napřed si budete muset připravit minidistribuci. Buďto do nějaké stávajcí nakopírujete binárku partimage (na stránkách projektu jsou i staticky linkované), nebo použijte už připravenou, která je také k nalezení na stránkách projektu.

Opět si nainstalujte váš oblíbený systém, opět si spusťte minisistribuci, opět si nahoďte síť. Potom na serveru spusťte program partimaged a na klientovi partimage. Vyberte partišnu ke klonování, soubor, kam se image uloží, zaškrtněte zaškrtávátko Connect to server a do kolonky IP of server napište adresu serveru. V další obrazovce potom vyberte druh komprese a v další napište nějaký popisek (jesti nechcete, tak nemusíte).

Až partimage skončí, přesuňte se k cílovému stroji, kde proveďte totéž (tj. spustit minidistribuci, nastavit síť, rozdělit disk, spustit partimage), až na to, že místo Save partition into a new image file zaškrtněte Restore partition from an image file. Stiskem <F5> se presuňte dál a potom jestě dál a potom už se data (konečně) zkopírují. Potom připojte partišnu, proveďte změny a nezapomeňte na boot loader. A můžete si užívat s nově naklonovaným počítačem.

A to je vše. Doufám, že vám tyhle informace byly nějak užitečné. Ať už přímo, či jenom na rozšíření obzorů.

Našli jste v článku chybu?