Automatické klonování diskových oddílů

Dne: 14. 9. 2007

Tagy:  linux   skripty 

Přečteno: 574/984


Úvodem

Tento text vznikl pro vnitřní potřebu VOŠ a SPŠE Olomouc. Pokud bude užitečný i někomu jinému, je to jen dobře. Program Partimage i skripty, které jsem napsal já, jsou šířeny pod licencí GNU GPL. Dokumentace -- tedy i tento text -- pod licencí GNU FDL.

Pro nedočkavce

Nedočkavci si můžou vše stáhnout si v jednom balíčku. Případně si můžete stáhnout makefile a vše by se mělo provést automaticky. Stačí jen:

  # aptitude install make
  # wget tlapicka.net/data/klonovani/Makefile

Pro instalaci clienta:

  # make client

Pro instalaci serveru:

  # make server

Toť vše. Můžete restartovat a klonovat. Pokud jste tedy provedli vše, co je napsáno níže.

Znalci se jistě rádi pokochají i samotnými skripty. Jsou celkem tři:

  1. klon.client
  2. klon.vyber
  3. klon.server

Předpoklady

Předpokládám, že chceme hromadně nainstalovat školní PC, na kterém bude nainstalován vedle M$ Windows i Linux. Potřebujeme tedy 4 diskové oddíly.

  1. M$ Widows
  2. GNU/Linux
  3. Swap oddíl (Není nutný, ale hodí se. Moderní OS totiž umí swapovat přímo na disk, což je rychlejší než swapovat do souboru.)
  4. Klonovací systém (Linux)

Také předpokládám, že všechna klonovaná PC mají stejný HW.

Stačí tedy 4 oddíly. To je dobře protože si vystačíme s primárními oddíly. Tabulka rozdělení disků je pak uložena přímo v MBR a značně nám to zjednodušuje práci. MBR lze totiž snadno kopírovat a přenášet na jiné počítače.

Kolik místa?

Záleží samozřejmě na tom, jak velký je disk. Předpokládám, že mám 60 GB disk.

  1. Windows: 15 GB
  2. GNU/Linux: 15 GB -- to je až moc
  3. Swap 1 GB
  4. Klonovací systém (GNU/Linux): 26 GB. Sem dám vždycky nejvíc. Protože sem se budou ukládat samotné klony.

Asi si říkáte proč jen 26 GB. Je důležité aby na konci disku zbylo nějaké volné místo. Každý disk -- přestože stejný -- je maličko jinak velký. Mohlo by se proto stát, že si takto vytvořenou tabulku oddílů přenesete na jiný disk a poslední oddíl bude končit až za posledním sektorem disku.

Instalace

M$ Windows

Mám prázdný disk a chci instalovat. Napřed se pustím do M$ Windows. Proč?

  1. Je to nejotravnější práce a chci ji mít brzo za sebou.
  2. Nebudu používat M$ zavaděč. Pouze se na něj budu odkazovat při zavádění Windows.

Při instalaci nedělím disk tak, jak jsem uvedl výše, ale udělám pouze jeden jediný oddíl potřebný pro instalaci Windows (15 GB). Bude samozřejmě na začátky disku.

Linux

Nyní se pustím do instalace GNU/Linuxu. Já používám Debian GNU/Linux V prostředí VOŠ a SPŠE stačí nabootovat ze sítě. Nebo si můžete stáhnout obraz CD. Jako archytekturu vyberte i386. Doporučuju stáhnu CD označené jako kde-CD-1. Vše ostatní potřebné si instalátor stáhne automaticky z internetu. Instalační příručka popisuje také instalaci z USB zařízení

Druhý oddíl (/dev/hda2) vyhradím pro kořenový adresář (/ 15 GB) a třetí oddíl (/dev/hda3) pro odkládací prostor -- swap (1 GB). Důležité je, že to všechno to musí být oddíly primární.

Po instalaci základního systému budete vyzvání k výběru tzv. instalačních úloh. Vyberte "Stolní počítač" a "Standardní nástroje".

Zavaděč nechám nainstalovat NE do MBR, ale na kořenový oddíl. Sice do tohoto systému zatím nebudu moci nabootovat, ale to přijde později. Instaluji ho tedy na druhý oddíl. To je na zařízení /dev/hda2. (Pokud máte SCSI nebo SATA disky, tak je to /dev/sda2.)

Klonovací sytém

Zde postačí jakákoli minimální instalace GNU/Linuxu. Já používám minimální instalaci Debianu. Pokud se vám nepodaří nabootovat ze sítě, stáhněte si obraz CD označený jako netinst. Obraz je veliký jen asi 160 MB a obsahuje základní nástroje.

Klonovací systém budeme instalovat na čtvrtý oddíl. To je /dev/hda4. Je důležité na tomto oddílu zapnou příznak zavádění. Tzv. "Boot flag".

Po instalaci základního systému budete opět vyzvání k výběru instalačních úloh. Nic nevybírejte a to, co je předvybráno zrušte. Vše potřebné je již nainstalováno a pokud nám bude něco chybět hravě si to doinstalujeme.

Zavaděč nainstalujeme opět na kořenový oddíl, tedy ne do MBR, ale na /dev/hda4. Pokud bude vše v pořádku, instalátor by měl rozpoznat předchozí dva, již nainstalované, systémy a pokud byl dobře nastaven příznaku zavádění už by mělo jít bootovat.

Poinstalační natavení

Windows se tu zabývat nebudu. To mají na starosti jiní.

Jen připomenu, že je potřeba dbát na to, aby před vytvořením klonu bylo PC vytaženo z domény. Po obnovení klonu je potřeba změnit hostname a PC opět do domény přidat.

Linux

Je třeba doinstalovat...

Po instalaci je systém plně funkční! Pokud jste instalovali z CD, je myslím dobré upravit zdroje software a ze seznamu zdrojů smazat CD. (V Lennym už se to děje automaticky.) Nebude ho potom po vás při instalaci chtít, ale vše si stáhne ze sítě. Dělá se to v souboru /etc/apt/sources.list. Řádek s CDROMem se zakomentuje # nebo smaže.

V každém případě je systém dobré aktualizovat:

  # aptitude update       #aktualizuje databázi balíčků
  # aptitude full-upgrade #povýší všechny balíčky na nejnovější verzy

K instalaci a odinstalaci balíčků slouží např. konzolový program aptitude. Pokud chcete program s GUI tak doporučuju synaptic nebo kpackage

systém
anacron, htop, tree, less, ssh-client, mc, lftp, gkrellm, rxvt-unicode, screen, yakuake, krusader
desktopy
kde, gnome-core, xfce
vývoj
vim-gtk, emacs, kate, quanta
grafika
inkscape, gimp, gqview, openclipart
dokumenty
kpdf, xpdf, msttcorefonts, ttf-freefont, ttf-opensymbol, xfonts-terminus

No -- je toho hodně. Naštěstí nejsme v M$ Windows, takže to bude trvat jen chvilku:

  # aptitude install anacron htop tree less ssh-client mc lftp gkrellm rxvt-unicode \
    scree kde gnome-core xfce vim-gtk emacs kate quanta \
    inkscape gimp gqview openclipart yakuake krusader \
    kpdf xpdf msttcorefonts ttf-freefont ttf-opensymbol xfonts-terminus

Stačí označit tento text myší a pomocí prostředního tlačítka myši ho přenést do konzoly superuživatele root.

Uživatele root ze sebe uděláte pomocí příkazu su:

  $ su
  Password:>tocosemnapisunenividet<
  # 

Pak je také dobré nastavit jako výchozí prostředí KDE:

  # update-alternatives --config x-session-manager   #vyberte /usr/bin/startkde

Pro hromadnou zprávu více počítačů ke své naprosté spokojenosti používám multissh ve spojení s ssh klíči.

Nastavení zavaděče

Nastavení zavaděče se provádí v konfiguračním souboru /boot/grub/menu.lst.

  1. Natavit práva: chmod 600 /boot/grub/menu.lst
  2. Natavit timeout: Volba timeout na řádku asi 19. Doporučuji hodnotu 1.
  3. Zamknout: Volba password na řádku asi 30. Musí se to odkomentovat -- zrušit hash(#) a napsat tam vlastní heslo.
  4. Pokud vám v textové konzole nestačí 80 znaků na řádek, tak si nastavte frame-buffer. Dělá to volba vga= v parametrech jádra při bootování. Řádek 81 změňte na:
      # defoptions=vga=788
    
    Ten hash je třeba tam nechat! Potom pustit update-grub.

Chci tam vidět flešku

Nastavení přípojných bodů se provádí v souboru /etc/fstab Řádek, který se stará o usbdisk vypadá např. na mém PC takto:

  /dev/sda1 /media/usb vfat rw,user,users,noauto,iocharset=utf8,codepage=852,umask=111,dmask=000 0 0

Samozřejmě přípojný bod /media/usb musí existovat.

  # mkdir /media/usb

Připojování diskových oddílů se provádí příkazem mount.

  $ mount /media/usb     #připojení disku
  $ umount /media/usb    #odpojení disku

Pokud by přípojný bod v /etc/fstab nebyl nastaven, musel bych příkazu mount říct, jaké zařízení chci připojit:

  # mount /dev/sda1 /media/usb

a musel bych tento příkaz provést jako superuživatel root.

Aby se uživatelé vůči serveru ověřovati mohli

  1. Zajistit připojení síťového souborového systému. Nakonec souboru /etc/fstab přidat řádku:
      172.16.0.100:/home/users /home/users nfs defaults 0 0
    
    To provedu příkazem:
      # echo >>/etc/fstab "172.16.0.100:/home/users /home/users nfs defaults 0 0" 
    
    Samozřejmě přípojný bod /home/users musí existovat:
      # mkdir /home/users
    
    .

Po klonování

Po naklonování na ostatní stroje je potřeba změnit hostname v soubotu /etc/hosname a mailname v souboru /etc/mailname. Pokud ale vše funguje jak mám, měl by to automaticky provést skript firststart. Pokud bude soubor /etc/hostname prázdný, bude se hostname sosat z DHCP.

Pokud zaznamenáte problémy s odezvou startu aplikací je nejspíš špatně nastaven soubor /etc/hosts. Soubory /etc/{hostname,mailname,hosts} spolu musí ladit. Jinak jsou problémy.

Další problémy jsem zaznamenal se síťovým zařízením. Jeho jméno je v souboru /etc/udev/rules.d/z25_persistent-net.rules. (Nebo tak nějak.) Problém je, že toto jméno je přiřazeno k HW adrese. Po naklonování je HW adresa jiná, a proto se zařízení nejmenuje stejně jako na mateřském PC.-( V klonovacích skriptech je vše směřováno na zařízení eth0. Proto je potřeba po naklonování příslušné zařízení správně pojmenovat. Stejný efekt by mělo mít i smazání příslušného řádku těsně před vytvořením image -- po restartu by se toto zařízení mělo přejmenovat správně.

Klonovací systém

Doinstalovat...

  	aptitude -y update
  	aptitude -y upgrade
  	aptitude -y install mc htop less vim socket

Klonovací skripty stačí stáhnout a rozbalit do systému:

  # wget -P /tmp tlapicka.net/data/klonovani/klonovani.tar.gz
  # tar -C / -xzf /tmp/klonovani.tar.gz 
  

Pak vytvořit adresář pro image disků a přípojný bod:

  # mkdir /var/partimage /mnt/debian

a udělat symlinky do startovacích skriptů:

client
  # ln -s /sbin/klon.client /etc/rc2.d/S97klonovani
server
  # ln -s /sbin/klon.vyber /etc/rc2.d/S97klonovani

Práci se vším výše uvedeným si můžete ušetřit stažením Makefile pro nedočkavce. Doporuču ovšem Makefile stáhnout, ale pustit ho až potom, co tento klonovací systém rozklonuji. :-D To už totiž vím, co je client a co server.

Aby klonováni fungovalo správně je ještě potřeba upravit IP adresu v souboru /etc/klonovani.conf

Nastavení zavaděče

Nastavení zavaděče se provádí v konfiguračním souboru /boot/grub/menu.lst.

  1. Natavit práva: chmod 600 /boot/grub/menu.lst
  2. Natavit timeout: Volba timeout na řádku asi 19. Doporučuji hodnotu 20. Jako 20 sekund.
  3. Zamknout: Volba password na řádku asi 30. Musí se to odkomentovat -- zrušit hash(#) a napsat tam vlastní heslo.
  4. Pokud vám v textové konzole nestačí 80 znaků na řádek, tak si nastavte frame-buffer. Dělá to volba vga= v parametrech jádra při bootování. Řádek 81 změňte na:
      # defoptions=vga=788
    
    Ten hash je třeba tam nechat! Potom pustit update-grub.
  5. Zeditovat startovací nabídku. Ta bude mít tři položky. Položka Winsows a Debian GNU/Linux vždy jen předají řízení jejich vlastnímu zavaděči. Položka Image nabootuje klonovací systém. Spodní část souboru potom může vypadat !!přibližně!! nějak takto:
      ...
      ...
      ...
      ### END DEBIAN AUTOMAGIC KERNELS LIST
      
      # This is a divider, added to separate the menu items below from the Debian
      # ones.
      #title		Other operating systems:
      #root
      
      
      # This entry automatically added by the Debian installer for a non-linux OS
      # on /dev/hda1
      title		Microsoft Windows XP Professional
      root		(hd0,0)
      savedefault
      chainloader	+1
      
      title		Debian GNU/Linux
      root		(hd0,1)
      savedefault
      chainloader	+1
      
      title		Image
      lock
      root		(hd0,3)
      kernel		/boot/vmlinuz-2.X.XX-X-XXX root=/dev/hda4 vga=788 ro 
      initrd		/boot/initrd.img-2.X.XX-X-XXX
      savedefault
      boot
    
    Řádek lock u položku Image zakazuje boot klonovacího systému pokud nezadáte heslo.

Kterak naklonovat klonovací systém abych mohl klonovat?

Mám kompletně nainstalované a nastavené jedno PC. Napřed musím na ostatní počítače přenést rozdělení disku a klonovací systém. Ostatní už by pak mělo jít samo. Postup bude následující:

  1. Nabootovat odjinud než z disku :-)
  2. Pustit Partimage. Je to interaktivní program, kde je možné vše "naklikat".
  3. Zazálohovat "někam" klonovací systém (/dev/hda4) a MBR. Obojí umí partimage.
  4. Přesunout se k prázdnému PC.
  5. Nabootovat stejně jako předtím.
  6. Pomocí Partimage obnovit MBR.
  7. Reboot
  8. Pomocí Partimage obnovit klonovací systém (/dev/hda4)
  9. naformátovat swap:
      # mkswap /dev/hda3
    
    Napsal jsem to i do Makefile, takže pokud pustíte  make client až po klonovani, tak se to udělá samo.

Pozor na problémy se síťovým rozhraním popsané výše.

Jak nabootovat?

Mě se pro tyto účely osvědčila distribuce Damn small Linux. Lze ji jednoduše vypálit nebo dostat na flash disk. Oficiální dokumentace uvádí postup instalace na usb flash disk. Já jsem to dělal následovně:

  1. Na flash disk si nainstaluji zavaděč -- syslinux. Provedu to podle návodu v instalační příručce Debianu.
  2. Stáhnu si verzi označenou jako *-embedet-*.zip a rozbalím ji do kořenového adresáře na flash disk.
  3. pro případ, že by PC neumělo bootovat z USB, stáhnu si obraz diskety označený jako bootfloppy-usb a vyrobím bootovací disketu:
      # dd if=bootfloppy-usb.img of=/dev/fd0 bs=512 
    
    Takle je to asi správně. Niméně
      # cat bootfloppy-usb.img >/dev/fd0
    
    mi taky vždycky fungobvalo. :-)
  4. Je dobré na flah disk dát i statické binárky partimage, ať je -- až budu chtít klonovat -- nemusím nikde hledat. Po nabootování je najdu v adresáři /cdrom.

Bootovat doporučuji jako dsl 2. Naběhne to jen do textového režimu -- a to úplně stačí.

Pokud v DSL potřebujete superuživatele použijte příkaz sudo

  $ sudo <příkaz>

nebo:

  $ sudo bash
  # <příkazy>

Další dobrou zkušenost jsem udělal s SystemRescueCd. To lze také nainstalovat na USB flash disk a obsahuje program Partimage.

KONEC šmitec

| menu |

Valid XHTML 1.1 Valid CSS! Powered by Debian GNU/Linux Powered by Apache Powered by Perl Creative Commons License  Marek Nožka