prenos systemu na novy disk

Alexandr Malusek malusek na hroch.ujf.cas.cz
Sobota Leden 24 20:16:39 CET 1998


dzon na writeme.com (Dzon) writes:

> byl mi predhozen problem: mejme dan [>:->] pocitac s 1GB HDD a na nem
> Linux [a wokna]. Mejme novy disk 2GB.
> Potrebuju ten 2GB misto 1GB a chci zachovat stavajici nastaveni Linuxu
> [ten 1GB pujde uplne pryc].
> Dotaz: Staci k tomuhle vytvorit na 2GB partition a na ni pod rootem
> prekopirovat adresarovy strom [krome veci jako /proc atd.]
> Jak se zachovaji devices?

Vyjdu z nasledujici konfigurace:

             1 GB        2 GB
MS-Windows   /dev/hda1   /dev/hdb1
Linux swap   /dev/hda2   /dev/hdb2
Linux root   /dev/hda3   /dev/hdb3

1. # fdisk /dev/hdb       # 2GB disk se rozdeli na partitions.

2. # mkswap -c /dev/hdb2  # pripravi se swap

3. # mke2fs -c /dev/hdb3  # vytvori se ext2 filesystem. Pouziji
                            se 1KB bloky. Chcete-li jinou velikost,
                            pouzijte volbu -b
4. # e2fsck /dev/hdb3     # nadbytecne, ale clovek nikdy nevi

5. # mount /dev/hdb3 /mnt # pripojeni do FS

6. # dump 0f - /dev/hda3 | (cd /mnt; restore rf - ) # prekopirovani root FS

7. # umount /mnt

8. # e2fsck /dev/hdb3     # nadbytecne, ale clovek nikdy nevi

V teto fazi je Linux prekopirovan, ale jeste je potreba, aby LILO
zapsalo informace do MBR na /dev/hdb. Metod je vic, navrhnu jednu,
kterou jsem kdysi pouzil - je mozne, ze neni nejvhodnejsi.

9. Nyni je potreba prekopirovat Windows. Vzhledem k tomu, ze tento OS
nepouzivam, tak Vam neporadim, je-li vyhodnejsi udelat to z Linuxu,
nebo z Windows. Asi bych to delal z Windows a desne bych pri tom nadaval.

10. Odstraneni 1 GB HD. 2 GB HD je nyni /dev/hda

11. Konfigurace LILO. Doufam, ze si to pamatuji spravne.
- Nabootovat z instalacni diskety v rescue modu
- # mount /dev/hda3 /mnt
- # chroot /mnt /bin/bash -i  # "Prepnuti" do root FS na HD
- # /sbin/lilo                # Instalace LILO.  
- # exit                      # ukonceni bash a chroot
- # umount /mnt
- # halt, vyjmout disketu, rebootovat
Jeste jednou upozornuji, ze bod 11. jsem delal davno a mozna
ho uvadim nepresne.


> Slysel jsem ze se na tohle da pouzit dd, jak? primo z /dev/hda na
> /dev/hdb?

Da, ale je potreba vedet, jak to funguje, protoze tato metoda
se neda pouzit obecne.

# dd if=/dev/hda3 of=/dev/hdb3 bs=1024k
z partition na /dev/hda3 cte posloupnost bytu a zapisuje ji na
/dev/hdb3. Veskere informace o velikosti puvodniho FS, ..., se
prekopiruji do /dev/hdb3. Je zrejme, ze je-li /dev/hdb3 mensi nez
/dev/hda3, nebude to fungovat. Je-li /dev/hdb3 vetsi, fungovat to
bude, ale FS nebude vyuzivat celou velikost partition. (Funguje to,
nebot ve FS nejsou ulozeny absolutni adresy diskovych bloku na HD -
pouze relativni, FS je tedy invariantni vuci "posunu" na disku - no,
doufam ze ext2fs tuto vlastnost ma, u MS-Windows nevim)

Je tedy mozne pro nektere partitions na /dev/hda vytvorit na /dev/hdb
partitions o stejne velikosti a pomoci dd je prekopirovat. Pak je
potreba dokonfigurovat LILO.

Maji-li oba disky stejnou velikost, je mozne pouzit prikaz
# dd if=/dev/hda of=/dev/hdb bs=1024k
ktery okopiruje cely obsah disku vcetne partition table, primarniho
zavadece, ... Pak jiz neni treba LILO prekonfigurovavat.

Pozn: parametr "bs" ovlivnuje pouze rychlost prenosu. Je mozne pouzit
jinou hodnotu.

> Zkopiruji se mi tam takhle i ty wokna? :)

Ano, ale nevim, jestli budou po konfiguraci LILO bootovat. Tenhle OS
je pro me zahalen prilis mnoha tajemstvimi.


Pro zajimavost jeste uvedu nekolik casu pro porovnani rychlosti.
# df -k /hdc2
Filesystem         1024-blocks  Used Available Capacity Mounted on
/dev/hdc2            1326527 1059396   198587     84%   /hdc2

# time dd if=/dev/hdc2 bs=4128768 > /dev/null
0.01user 51.41system 5:23.63elapsed

# time dump 0f - /dev/hdc2 >/dev/null
15.65user 80.95system 1:21:47elapsed

# time tar cpf -  /hdc2 > /dev/null
2.26user 55.54system 4:32.87elapsed

find /hdc2 -depth -print | cpio -o -H newc > /dev/null
24.04user 55.58system 5:24.09elapsed

Je videt, ze dump je *velmi* pomaly. Nicmene dump/restore se da
pouzit i pro defragmentaci disku.

--
A. Malusek  (malusek na ujf.cas.cz)
UJF AV CR


Další informace o konferenci Linux