Zo simpel is het dus niet.
Je moet namelijk weten waar die bootsector staat voordat je met dd aan de slag kunt.
Vrij lastig, maar wel te doen.
Stap 1. Vraag info op met fdisk (commando 'p')
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| root@a:/home/simon# fdisk /dev/hda
The number of cylinders for this disk is set to 1027.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)
Command (m for help): p
Disk /dev/hda: 255 heads, 63 sectors, 1027 cylinders
Units = cylinders of 16065 * 512 bytes
Device Boot Start End Blocks Id System
/dev/hda1 1 420 3373618+ 97 Unknown
/dev/hda2 * 421 455 281137+ 83 Linux native
/dev/hda3 456 827 2988090 83 Linux native
/dev/hda4 828 860 265072+ 82 Linux swap
Command (m for help): q
root@a:/home/simon# |
Zoek de bootable partitie, dus die met het sterretje. Het kan zijn dat door je bootmanager een andere bootable is, je moet in ieder geval de root-partitie hebben van je Linux-systeem.
In mijn geval is dat /dev/hda2
Stap 2. Block berekenen
Waar staat die bootsector?
Uitrekenen!
Formule: Sectors per cylinder * begincylinder
De sectors per cylinder kun je vinden bij het regeltje "units = cylinders of <getal> * 512 bytes"
Dat <getal> heb je nodig. Is in mijn geval 16065.
Ook heb je de begincylinder nodig. Die vind je terug in de partitietabel, in de kolom start.
In mijn geval is dat 421. Cylinders moeten echter vanaf 0 worden getald en fdisk doet het vanaf 1. Dus moet je er 1 aftrekken.
Mijn begincylinder is dus 421 - 1 = 420
Rekenen: 16065 * 420 = 6747300
Stap 3. Met dd de bootsector opslaan
code:
1
2
3
| dd if=/dev/hda of=./bootsector count=1 skip=<getal>
Bij getal moet je het bij stap 2 berekende getal invullen |
In mijn geval:
code:
1
2
3
| root@a:/home/simon# dd if=/dev/hda of=./bootsector skip=6747300 count=1
1+0 records in
1+0 records out |
Met hexdump controleren of je het goed hebt gedaan:
Als het laatste getal aa55 is, is de kans groot dat je met een bootsector hebt te maken en je het goed hebt gedaan.
ALs het niet aa55 is, heb je het niet goed gedaan, of je hebt Lilo (of een andere loader) niet in je bootsector staan.
Want bedenk je wel: Lilo moet je in de bootsector hebben geinstalleerd (niet in het MBR!)