Vervangen harddisk

  Hardware

Er worden nog steeds computers geleverd door diverse fabrikanten zonder installatie media. er staat dan vaak iets van een rescue image op de harddisk. Je kan bij de fabrikant uiteraard de juiste installatie media opvragen maar dit word door de meeste mensen vergeten. Als je dan zoals in dit voorbeeld een kapotte disk hebt en je wilt deze vervangen voor een andere je niet de originele Windows versie terug kan zetten. Ook als je de disk wilt vervangen voor een groter of sneller exemplaar loop je tegen de zelfde problemen aan.

Er zijn natuurlijk ook tools als Norton Ghost, maar waarom zou je betalen voor een product als het net zo makkelijk met een l gratis Linux live CD kan.

In deze beschrijving was het een kapotte disk, er waren veel bad sectors. het ging op een DELL laptop met een 60GB disk, deze was kapot en moest vervangen worden door een nieuwe en wel een 160GB exemplaar. Op de laptop stond Windows XP maar deze stappen zullen ook werken bij Windows vista, en Windows 7.

Wat heb je nodig

uiteraard gereedschap (schroeven draaier) om de oude disk en later de nieuwe disk in en uit het systeem te halen. Een Linux Live cd/dvd. bv Ubuntu of Knoppix, maakt allemaal niet zoveel uit het hoeft ook niet eens een recente te zijn. verder heb je externe opslag nodig in de vorm van een grote USB stick of USB harddisk je hebt ongeveer een 5GB vrije ruimte nodig kan ook minder zijn.

Stap 1 backup van de oude situatie

Boot het systeem van de live CD/DVD. als het systeem is gestart, sluit je de USB harddisk aan. openen een console/terminal Windows. en zorg dat je root rechten krijgt. bij de meeste live distributies kan je dan krijgen met sudo su –

ubuntu@ubuntu~$ sudo su - 
root@ubuntu:~# 

We gaan nu controleren of we de oude disk kunnen zien en of we de externe usb harddrive ook zien.

 root@ubuntu:~# fdisk -l

 Disk /dev/sda: 58.5 GB, 58506416640 bytes
 255 heads, 63 sectors/track, 7113 cylinders
 Units = cylinders of 16065 * 512 = 8225280 bytes
 Sector size (logical/physical): 512 bytes / 512 bytes
 I/O size (minimum/optimal): 512 bytes / 512 bytes
 Disk identifier: 0x434e78fe

   Device Boot      Start         End      Blocks   Id  System
 /dev/sda1               1          10       80293+  de  Dell Utility
 /dev/sda2   *          11        6719    53890042+   7  HPFS/NTFS
 /dev/sda3            6721        7112     3148740   db  CP/M / CTOS / ...                                     
                                                                        
 Disk /dev/sdb: 1000.2 GB, 1000204886016 bytes                                   
 255 heads, 63 sectors/track, 121601 cylinders                                   
 Units = cylinders of 16065 * 512 = 8225280 bytes                                
 Sector size (logical/physical): 512 bytes / 512 bytes                           
 I/O size (minimum/optimal): 512 bytes / 512 bytes                               
 Disk identifier: 0x469d60df                                                     
                                                                                
   Device Boot      Start         End      Blocks   Id  System                  
 /dev/sdb1               1      121601   976760001    c  W95 FAT32 (LBA)  

We zien de oude disk met 3 partition er op. en de usb disk van 1TB is ook aanwezig. waarschijnlijk is de usb disk ook al automatisch gemount op het systeem we moeten alleen nog even kijken wat de juiste directory is. waarschijnlijk iets van /media/usbdisk

root@ubuntu:~# df -h 

tijdelijk geen juiste df -h output voorhanden komt nog. maar het mountpoint wat we gebruiken is /media/usbdisk

we gaan nu als eerste de partition table weg schrijven naar de USB disk. wil je meer details over cloning van partition table kijk dan in het Clone partition table artikel. om de partition table te backupen gebruik je sfdisk.

root@ubuntu:~# sfdisk -d /dev/sdb > /media/usbdisk/parttable.txt

Nu moeten we alleen nog de boot sector backupen van de disk en de rescue image en de rescue utility van dell backupen. dit kan eenvoudig met dd omdat we wegschrijven op een FAT32 file systeem kunnen files niet groter worden als 2GB voor de image partition gebruiken we dus compressie zodat hij kleiner blijft als 2GB de rest doen we uncompressed om de verschillen de laten zien. Zoals je kon zijn in de fdisk output zijn de te backupen partities /dev/sda1 en /dev/sda3 de boot sector komt van /dev/sda

backup de bootsector. deze zit aan het begin van de disk op de eerste 512 blocks

root@ubuntu:~# dd if=/dev/sda of=/media/usbdisk/bootsecoter.img bs=512 count=1

ALs dat gelukt is backupen we de 2 over gebleven partities.

root@ubuntu:~# dd if=/dev/sda1 of=/media/usbdisk/rescueutil.img 
160587+0 records in
160587+0 records out
82220544 bytes (82 MB) copied, 3.12502 s, 26.3 MB/s
root@ubuntu:~# dd if=/dev/sda3 | gzip > /media/usbdisk/rescueimg.img 
6297480+0 records in
6297480+0 records out
3224309760 bytes (3.2 GB) copied, 299.302 s, 10.8 MB/s
 

we hebben nu 3 img bestanden.

Stap 2 afsluiten en disk verwisselen

sluit de computer af en vervang de interne disk. en start alles weer op van de live cd.

Stap 3 terug zetten van de images

De nieuwe disk zit nu in het systeem, en de usb schijf hebben we ook weer gekoppeld. een fisk -l zal ongeveer de volgende output geven.

 root@ubuntu:~# fdisk -l 

 Disk /dev/sda: 160.0 GB, 160041885696 bytes
 255 heads, 63 sectors/track, 19457 cylinders
 Units = cylinders of 16065 * 512 = 8225280 bytes
 Sector size (logical/physical): 512 bytes / 512 bytes
 I/O size (minimum/optimal): 512 bytes / 512 bytes
 Disk identifier: 0x00000000

 Disk /dev/sda doesn't contain a valid partition table

 Disk /dev/sdb: 1000.2 GB, 1000204886016 bytes                                   
 255 heads, 63 sectors/track, 121601 cylinders                                   
 Units = cylinders of 16065 * 512 = 8225280 bytes                                
 Sector size (logical/physical): 512 bytes / 512 bytes                           
 I/O size (minimum/optimal): 512 bytes / 512 bytes                               
 Disk identifier: 0x469d60df                                                     
                                                                                
   Device Boot      Start         End      Blocks   Id  System                  
 /dev/sdb1               1      121601   976760001    c  W95 FAT32 (LBA)  

de externe disk zal wel weer automatisch gemount zijn anders met de hand doen.

Als eerste gaan we nu de partition table terug zetten op de nieuwe disk. wederom met sfdisk.

 root@ubuntu:~# sfdisk /dev/sda < /media/usbdisk/parttable.txt 
 Checking that no-one is using this disk right now ...
 OK

 Disk /dev/sda: 19457 cylinders, 255 heads, 63 sectors/track

 sfdisk: ERROR: sector 0 does not have an msdos signature
  /dev/sda: unrecognized partition table type
 Old situation:
 No partitions found
 New situation:
 Units = sectors of 512 bytes, counting from 0

    Device Boot    Start       End   #sectors  Id  System
 /dev/sda1            63    160649     160587  de  Dell Utility
 /dev/sda2   *    160650 107940734  107780085   7  HPFS/NTFS
 /dev/sda3     107956800 114254279    6297480  db  CP/M / CTOS / ...
 /dev/sda4             0         -          0   0  Empty
 Successfully wrote the new partition table 

 Re-reading the partition table ...

 If you created or changed a DOS partition, /dev/foo7, say, then use dd(1)
 to zero the first 512 bytes:  dd if=/dev/zero of=/dev/foo7 bs=512 count=1
 (See fdisk(8).)

als dat gebeurt is kunnen we de images terug zetten.

root@ubuntu:~# dd if=/media/usbdisk/rescueutil.img of=/dev/sda1
160587+0 records in
160587+0 records out
82220544 bytes (82 MB) copied, 3.12502 s, 26.3 MB/s
root@ubuntu:~# gzip -dc /media/usbdisk/rescueimg.img | dd if=/dev/sda3 
6297480+0 records in
6297480+0 records out
3224309760 bytes (3.2 GB) copied, 299.302 s, 10.8 MB/s

Als dat gelukt is alleen de bootsector nog.

root@ubuntu:~# dd if=/media/usbdisk/bootsecoter.img of=/dev/sda bs=512 count=1

Alles is nu terug gezet we kunnen dus het systeem rebooten en de proberen te booten van de harddisk. Om bij de DELL laptop in de herstel modes te komen druk je tijdens het booten op crtl-F11 volg daarna de instructies op het scherm.

Extra Informatie

Tot slot nog extra info. Als je Windows weer geboot hebt kan je daarna de extra ruimte op je disk partitioneren en gebruiken of de huidige vergroten. misschien een nog beter tip maak je systeem dual boot en ga met Linux werken. 🙂

Je kan bovengenoemde methode ook gebruiken om disken van bestaande systemen te upgraden/vervangen maak dan nog een extra img aan van de 2de partitie. als je die op een FAT32 bestands-systeem weg schrijft zal de compressie optie alleen niet voldoende zijn. je kan dan bv ook nog het commando split gebruiken. ik geef hier ook nog eens de complete disk op het is dan niet nodig om alles appart te doen.

dd if=/dev/sda bs=1024| gzip -c | split -b 2000m - /media/usbdisk/disk-sda.img.gz

dit commando maakt files aan van bijna 2GB en ze krijgen en extra volg letters mee.

/media/usbdisk/disk-sda.img.gz.aa
/media/usbdisk/disk-sda.img.gz.ab
/media/usbdisk/disk-sda.img.gz.ac

Om deze img terug te zetten. doe je het volgende

cat /media/usbdisk/disk-sda.img.gz.* | gzip -dc | dd of=/dev/sda bs=1024

om de alles een beetje te versnellen heb ik er nog een blocksize aan geplakt.