dd copie van CF kaartje boot niet

Pagina: 1
Acties:
  • 392 views sinds 30-01-2008
  • Reageer

  • Boudewijn
  • Registratie: Februari 2004
  • Niet online

Boudewijn

omdat het kan

Topicstarter
Hoi


Ik heb een CF kaartje (compact flash) waarop een embedded debian clone (voyage) staat met wat extra features en fixes.

Die CF kaart wil ik snel kunnen clonen en daarvoor is dd (disk duplicate ) een prima tool.
Dit gaat volgens mij ook goed, maar de disk is brak (hij boot niet maar de data staat er wel op ... lees bij het mounten zie ik alle mappen).


Echter het bootblock lijkt niet over te komen:

code:
1
2
3
4
5
6
7
8
9
PC Engines WRAP.1C/1D/1E v1.08
640 KB Base Memory
130048 KB Extended Memory

01F0 Master 848A HYPERSTONE FLASH DISK
Phys C/H/S 1016/16/63 Log C/H/S 1016/16/63
Invalid or damaged Bootable partitionPC Engines WRAP.1C/1D/1E v1.08
640 KB Base Memory
130048 KB Extended Memory


Duidelijk lijkt me... en het origineel doet het wel.
Ik gebruik op het bootende stickje trouwens Lilo .


Dit heb ik gedaan:

(sdd is inderdaad het stickje)
code:
1
dd if=/dev/sdd of=/home/boudewijn/output.img

daarna (na het kaartje omwisselen):
code:
1
dd if=/home/boudewijn/output.img of=/dev/sdd



om het leuk te maken heb ik natuurlijk wel een ander merk kaartje gepakt (kinston als bron en ? als output). Kan dat de reden zijn dat hij niet goed het bootblock (gok ik) copieert?

De fdisks:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
boudewijn boudewijn # fdisk -l /dev/sdd

Disk /dev/sdd: 515 MB, 515579904 bytes
16 heads, 32 sectors/track, 1966 cylinders
Units = cylinders of 512 * 512 = 262144 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sdd1   *           1         993      254192    6  FAT16
boudewijn boudewijn # fdisk -l /dev/sdd

Disk /dev/sdd: 524 MB, 524353536 bytes
16 heads, 63 sectors/track, 1016 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sdd1   *           1        1015      511528+   6  FAT16


de bovenste is de bron.


wat kan ik hier nou het beste aan doen ? (nu moet ik een windows box opzoeken en 'rawwrite' draaien :X)


Google, en de nos-search hielpen niet.

Zaram module kopen voor je glasvezelaansluiting?


  • BèR
  • Registratie: Mei 2002
  • Laatst online: 20-11-2022
Het lijkt dat de partities verschillend in lengte zijn. Lijkt me best mogelijk dat er daardoor iets b0rked. Zorg eens dat de doelpartitie ook maar tot sector 993 gaat, en try again. :)

  • Boudewijn
  • Registratie: Februari 2004
  • Niet online

Boudewijn

omdat het kan

Topicstarter
ja, maar ik wil eigenlijk een beetje zorgen dat ik het op elk 512mb stickje kan doen.
ik schrijf trouwens naar de disk en *niet* naar een parititie (lees sdd en niet sdd1).


ik probeer het nu met eenzelfde kingston kaart van 993 blocks.

Zaram module kopen voor je glasvezelaansluiting?


  • igmar
  • Registratie: April 2000
  • Laatst online: 31-01 23:50

igmar

ISO20022

Boudewijn schreef op donderdag 02 november 2006 @ 11:04:
code:
1
2
3
4
5
6
7
8
9
PC Engines WRAP.1C/1D/1E v1.08
640 KB Base Memory
130048 KB Extended Memory

01F0 Master 848A HYPERSTONE FLASH DISK
Phys C/H/S 1016/16/63 Log C/H/S 1016/16/63
Invalid or damaged Bootable partitionPC Engines WRAP.1C/1D/1E v1.08
640 KB Base Memory
130048 KB Extended Memory
Je bootloader valt over het feit dat je partities zijn opgebouwd op een manier die voor die disk niet geldig is. In de partitietabel staan de start en eind CHS, en die zijn afhankelijk van je disk. Sommige bootloaders controleren hierop, anderen pakken puur de sectoren die er ook instaan.

Je zal dus de partitie moeten aanmaken, en vervolgens de partitie met dd copieeren. Ik zou in dit geval kiezen voor een gewone copie met cp, en niet met dd, maar da's persoonlijke voorkeur.

  • Boudewijn
  • Registratie: Februari 2004
  • Niet online

Boudewijn

omdat het kan

Topicstarter
nou het probleem met een cp is dat ik de bootloader zelf niet meekrijg.
ik kan het op zich daarna wel handmatig gaan installeren maar het is de bedoeling dat dit gewoon met een enkele scriptaanroep kan (iets met n00bs die het moeten kunnen en veel kaartjes).

cp lijkt me dus afvallen omdat hij dan niet bootable meer is.

je bedoelt in je 2e alinea:

dd if=/dev/oud1 of=oudPart1.img

maak met fdisk partitie aan op stick 'new' die hetzelfde is als die op stick 'oud'.
en dan die img terug-dd-en?


ik heb die image net op een even grote 512mb kingston stick gezet met evenveel blocks:

code:
1
2
3
4
5
6
7
8
boudewijn boudewijn # fdisk -l  /dev/sdd

Disk /dev/sdd: 524 MB, 524353536 bytes
16 heads, 62 sectors/track, 1032 cylinders
Units = cylinders of 992 * 512 = 507904 bytes

Disk /dev/sdd doesn't contain a valid partition table
boudewijn boudewijn #

Ik loop iets goed fout te doen :/

Zaram module kopen voor je glasvezelaansluiting?


  • cherwin
  • Registratie: Maart 2006
  • Niet online
Dit is inderdaad vreemd, wat gebeurd er als jij het volgende doet?

code:
1
dd if=/dev/sda of=~boudewijn/sda.img bs=4096 conv=sync,notrunc

Tell me your problem, not the solution you think I should build for you.


  • Boudewijn
  • Registratie: Februari 2004
  • Niet online

Boudewijn

omdat het kan

Topicstarter
ok en dan ook zo wegschrijven, cherwin?

Zaram module kopen voor je glasvezelaansluiting?


  • cherwin
  • Registratie: Maart 2006
  • Niet online
Jep :)

Tell me your problem, not the solution you think I should build for you.


  • Boudewijn
  • Registratie: Februari 2004
  • Niet online

Boudewijn

omdat het kan

Topicstarter
code:
1
2
3
4
5
boudewijn boudewijn # dd if=/dev/sdd of=~boudewijn/sdd_cherwin.img bs=4096 conv=sync,notrunc
dd: reading `/dev/sdd': Input/output error
125852+0 records in
125852+0 records out
515489792 bytes (515 MB) copied, 583.318 seconds, 884 kB/s

Die io error lijkt me niet liev.

de image is ook niet te mounten met::
code:
1
2
3
4
5
boudewijn boudewijn # mount sdd_cherwin.img /mnt/usbstick/ -o loop -t vfat
mount: wrong fs type, bad option, bad superblock on /dev/loop0,
       missing codepage or other error
       In some cases useful info is found in syslog - try
       dmesg | tail  or so


Error:
FAT: bogus number of FAT structure
VFS: Can't find a valid FAT filesystem on dev loop0.


Lijkt me dus vrij kansloos .

Zaram module kopen voor je glasvezelaansluiting?


  • cherwin
  • Registratie: Maart 2006
  • Niet online
Er gaat duidelijk iets fout met het lezen van /dev/sdd, waardoor de image corrupt raakt. Waar het precies corrupt raakt weet ik niet, misschien dat je conv=sync,notrunc,noerror kan proberen. Wellicht dat dit jouw probleem verhelpt.

Tell me your problem, not the solution you think I should build for you.


  • u_nix_we_all
  • Registratie: Augustus 2002
  • Niet online
Boudewijn schreef op donderdag 02 november 2006 @ 13:04:
code:
1
2
3
4
5
boudewijn boudewijn # dd if=/dev/sdd of=~boudewijn/sdd_cherwin.img bs=4096 conv=sync,notrunc
dd: reading `/dev/sdd': Input/output error
125852+0 records in
125852+0 records out
515489792 bytes (515 MB) copied, 583.318 seconds, 884 kB/s

Die io error lijkt me niet liev.

de image is ook niet te mounten met::
code:
1
2
3
4
5
boudewijn boudewijn # mount sdd_cherwin.img /mnt/usbstick/ -o loop -t vfat
mount: wrong fs type, bad option, bad superblock on /dev/loop0,
       missing codepage or other error
       In some cases useful info is found in syslog - try
       dmesg | tail  or so


Error:
FAT: bogus number of FAT structure
VFS: Can't find a valid FAT filesystem on dev loop0.


Lijkt me dus vrij kansloos .
Die read error komt volgens mij omdat je laatste 4k block niet volledig gelezen kan worden;
gebruik eens bs=512 , waarschijnlijk is die dan weg.

Het probleem met het mounten komt doordat je een hele disk probeert te mounten ipv de partitie met het filesystem (/dev/sdd1)

[edit]

Dit verklaart alleen de fouten, of het uberhaupt kan met kaartjes met verschillende layout (C/H/S) weet ik ook niet.

Het is me wel eens gelukt m.b.v. dd een kaartje zonder partitie tabel te klonen, maar als ze identiek zijn zou het met een partitietabel erbij ook moeten kunnen lijkt me.

Misschien moet je de bs eens gelijk maken aan de sectorsize ?

[ Voor 13% gewijzigd door u_nix_we_all op 02-11-2006 13:19 ]

You don't need a parachute to go skydiving. You need a parachute to go skydiving twice.


  • cherwin
  • Registratie: Maart 2006
  • Niet online
u_nix_we_all schreef op donderdag 02 november 2006 @ 13:15:
[...]
Het probleem met het mounten komt doordat je een hele disk probeert te mounten ipv de partitie met het filesystem (/dev/sdd1)
Hey die heb ik over het hoofd gezien :+

Je kunt ook een partitie dat in een image zit mounten:
You need to work out where in the disk image the partition starts:

sfdisk -l -uS image_file.dd

The offset is given in sectors (512 bytes), so multiply that by 512
and you have the offset in bytes.
Then:

mount -oloop,offset=xxxx image.dd /mnt/point

This will work if the offset is less than 2G, other wise you can look
for the NASA loopback driver which supports large offsets.
http://edseek.com/~jasonb/articles/linux_loopback.html

[ Voor 3% gewijzigd door cherwin op 18-03-2008 04:27 . Reden: url toegevoegd ]

Tell me your problem, not the solution you think I should build for you.


  • doelman
  • Registratie: April 2004
  • Laatst online: 12:23
Boudewijn, die input/output errors komen me bekend voor. Kunnen heel goed komen door waarschijnlijk een bug in een linux-driver voor bepaalde cardreaders. Ik had het ook en met een andere cardreader was het opgelost.
Kzal morgen die cardreader ff voor je meenemen ;)

Mijn pianomuziek: http://www.youtube.com/user/doelman


  • Boudewijn
  • Registratie: Februari 2004
  • Niet online

Boudewijn

omdat het kan

Topicstarter
ik heb nu dit gedaan:
code:
1
2
3
4
5
6
7
8
9
boudewijn boudewijn # dd if=/dev/sdd1 of=~boudewijn/u_nix_we_all bs=512 conv=sync,notrunc
dd: reading `/dev/sdd1': Input/output error
1006816+0 records in
1006816+0 records out
515489792 bytes (515 MB) copied, 602.062 seconds, 856 kB/s
boudewijn boudewijn # dd if=~boudewijn/u_nix_we_all of=/dev/sdd1 bs=512 conv=sync,notrunc
1006816+0 records in
1006816+0 records out
515489792 bytes (515 MB) copied, 4998.04 s, 103 kB/s

en inderdaad is de geproduceerde image gewoon k*t.
code:
1
2
3
4
5
6
7
PC Engines WRAP.1C/1D/1E v1.08
640 KB Base Memory
130048 KB Extended Memory

01F0 Master 848A CF300
Phys C/H/S 999/16/63 Log C/H/S 999/16/63
<bordje hangt>


Op zich is het okay om een nettere oplossing te gebruiken zoals het CPen van de file en dan daarna vanuit het script de bootloader op het cf-kaartje douwen maar dat kan afaik niet zonder chroot, en dat is dan weer niet mogelijk in een script.


iemand een (creatieve) oplossing?

Zaram module kopen voor je glasvezelaansluiting?


  • Boudewijn
  • Registratie: Februari 2004
  • Niet online

Boudewijn

omdat het kan

Topicstarter
doelman schreef op donderdag 02 november 2006 @ 16:59:
Boudewijn, die input/output errors komen me bekend voor. Kunnen heel goed komen door waarschijnlijk een bug in een linux-driver voor bepaalde cardreaders. Ik had het ook en met een andere cardreader wa het opgelost.
Kzal morgen die cardreader ff voor je meenemen ;)
ah ok is prima
offtopic:
@roeland: Lol dan hoeven we niet verbouwen maar kunnen we gewoon nerden morgen :*)

Zaram module kopen voor je glasvezelaansluiting?

Pagina: 1