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