« Отговор #10 -: Jan 03, 2004, 17:44 »
приятели,
настръхва ми косата като ви чета съобщенията.
dd е програмата disk dump и служи точно за това.
с нея можеш да си свалиш mbr-a върху файл или да
си направиш backup на дял, обаче да копираш дискове
по този начин е все едно да опитваш да ковеш пирони с
паве - става, ама е някак неудобно.
cat /dev/hda > /dev/hdb е същото, но вместо паве имаш
ръбат камък. и не е вярно, че размерът няма значение в
този случай. така се копира и партишън таблицата, и
суперблока на файловата система – все места, които са
строго зависими от геометрията на диска.
най-смисленото предложение, изказано дотук, е това с
tar-a. като изключим факта, че за целта е нужно още
толкова празно място, колкото е информацията върху
целия диск.
в предишния си пост съвсем тенденциозно пропуснах
да дам каквито и да било команди, за да не се впусне
някой в сляпо следване на инструкции, което да му скапе
компютъра. сега ще дам малко по-детайлни разяснения,
за да имате предвид за в бъдеще как стават тези работи.
за да копирате работеща система върху нов диск, трябва
да изпълните приблизително следното:
1. закачете новия диск към системата. ако планирате
върху него да има и друга операционна система (примерно
windows), по-добре е да инсталирате първо нея.
2. направете дяловете. самият аз съм минималист и затова
ползвам един-единствен root дял, който обхваща цялото
свободно пространство върху диска.
обикновено правя swap-а върху файл, защото така мога
да променям размера му когато си поискам.
3. направете файловата система. хубаво е преди това
да помислите малко за какво ще ползвате диска и
евентуално да ограничите броя на i-нодовете и копията
на суперблока. прочетете man-a на mkfs за файловата
система, която ползвате. евентуално:
man mke2fs
mke2fs /dev/<new_hd> [<опции>]
където <new_hd> е новия root дяла.
4. монтирайте новия диск някъде, примерно:
mkdir /new
mount /dev/<new_hd> /new
не ползвайте mount point в /mnt, защото самото /mnt
също трябва да бъде копирано.
5. откачете всички монтирани външни устройства:
флопита, cd-та, nfs-и, windows-дялове и прочее.
6. изкопирайте системата върху новия диск:
cp -a /bin /boot /dev /etc /home /mnt /root /sbin /usr /var /new
ако имате и някакви други директории в /, копирайте и
тях. забележете, че /proc, /mklost+found и /tmp са
пропуснати и това не е случайно.
7. преминете в /new и създайте липсващите директории:
cd /new
mkdir proc
chmod 555 proc
mkdir tmp
chmod 777 tmp
директорията mklost+found се създава автоматично.
8. преминете в /new/etc и направите съответните ремонти.
тук не мога да ви помогна повече, защото всичко зависи
от дистрибуцията. лично аз ползвам bsd инициализация и
затова ми се налага да пипна само fstab и rc.d/rc.S.
една полезна команда, която може да ви помогне, е:
grep -r <old_hd>
където <old_hd> е root дяла, който се ползва от старата
инсталация. прегледайте внимателно всяко място, където
се среща и преценете дали не трябва да го промените.
тук има и още една подробност: когато правите промените,
ползвайте обозначение за новия диск предвид бъдещото
му местоположение в системата, а не според текущото.
примерно, ако новият диск е монтиран като secondary
master (/dev/hdc), но планирате да работи като primary
master (/dev/hda), ползвайте hda в скриптовете.
9. настройте boot loader-a. това е най-тънката част от
работата. никога не съм ползвал grub и затова не мога да
ви дам някаква рецепта как да се преборите с него.
вместо това ще ви опиша как става с lilo, надявайки
се, че ще ви помогна донякъде:
9.1. редактирайте lilo.conf на новия диск:
vi /new/etc/lilo.conf
оправете всички дискови адреси така, че да сочат към
дяла върху новия диск, където седи zImage (bzImage)
на операционната система.
9.2. копирайте zImage (bzImage) върху някаква празна
дискета:
cp /boot/bzImage /dev/fd0
rdev /dev/fd0 /dev/<new_hd>
където <new_hd> е root дяла, който ще се ползва за в
бъдеще.
9.3. махнете стария диск, инсталирайте новия като
primary master и заредете от дискетата.
9.4. ако сте направили всичко както трябва, системата
ще зареди нормално. остава само да пуснете lilo, за да
актуализира map-a на boot loader-a и това е всичко.
ако все пак възникне проблем, все още разполагате със
стария диск, от който можете да заредите и да потърсите
проблема.
има и по-пряк начин да се свърши същата работа, който
не изисква ползването на дискета, обаче съществува
по-голям риск да повредите стария диск.