Just nu i M3-nätverket
Gå till innehåll
rogerk8

Hex dump/adress editor

Rekommendera Poster

rogerk8

Hej! Jag tror mig klurat ut hur bootning av vanlig Intel-bestyckad dator går till. Eftersom min hårddisk är full och jag inte varken vill eller kan installera om allt på ny större hårddisk och att det, enligt säkra källor, inte går att varesig slå ihop två fysiska diskar/partitioner eller att kloning är så lätt (om du inte har SATA för då finns kloningsutrustning att köpa för hyfsad peng t.ex på kjell&co) så har jag gett mig den på att få ordning på det ändå.

 

Jag har kommit fram till att efter det att spänning slagits på går processorn till adress FFFFFFF0h. Denna adress måste vara hårdkodad till BIOS-minnet. Det första som händer i BIOS är sedan att en JMP-instruktion utförs (då det nästan är slut på adresser). Processorn hoppar då till lämpligare adressarea inom BIOS där BIOS-programmet börjar.

 

I slutändan av BIOS-programmet går det/processorn ut och söker igenom sektor 1 på hårddisken efter körbar kod (som bara kan finnas där efter en OS-installation). Sen vet jag inte mer annat än att den första körbara koden borde vara ytterligare en JMP-instruktion med adress till resten av OSet. Här spekulerar jag bara men det verkar troligt att sektor 1 ska användas till enbart just bootning och att OS:et lägger sig nån annanstans då sektor 1 är såpass reserverat att det inte går att kopiera dit (jag har av säkra källor fått reda på att om man tar loss C: från första datorn, sätter in den och en större disk i en annan dator samt gör copy mha det operativsystemet så kommer inte boot-sektorn med).

 

Mest för att kolla min teori skulle jag vilja ha tag i nån typ av program där man åtminstone kan se godtycklig adress data. Sen vore det naturligtvis kul om man tom kunde editera en del av den datan (läs lägga till en JMP-instruktion med dito adress i just boot-sektorn). Men det kräver dessutom att jag kan läsa och ta reda på vart OSet faktiskt börjar.

 

Tilläggas skall att jag kör Win XP.

 

MVH/Roger

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
Cecilia

Allra först på hårddisken ligger MBR (Master Boot Record), som är 512 bytes stor och innehåller diverse information. http://en.wikipedia.org/wiki/Master_boot_record

MBR kan t ex se ut så här i en hex-editor:

Skärmklipp.PNG

 

 

Exempel på en hexeditor: http://mh-nexus.de/en/hxd/

 

Jag tyckte inte att det var särskilt svårt att klona en dålig PATA-ansluten hårddisk till en nyinköpt PATA-ansluten när jag gjorde det för ca 5 år sedan. Det var XP installerad på hårddisken men eftersom kloningsprogrammet låg på en startbar CD så spelade det ingen roll.

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
Mikael63

Det är väl varken svårare eller enklare att klona en SATA jämfört med PATA.

Någon speciell utrustning krävs ju inte, en dator med plats för båda diskarna eller en usb-disk, antingen att klona till eller att mellanlagra en image.

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
rogerk8

Hej igen!

 

Jag tackar för hjälpen!

 

Jag är dock inte bara dataokunnig utan en dinosaur som kör med gamla IDE-hårddiskar som jag tyvärr missade att nämna tidigare.

 

Jag vet dock att man kan installera kloningsprogram även för IDE. Ett litet aber är dock att klonen blir just en klon. Detta verkar speciellt innebära att den nya STÖRRE hårddiskens utrymme inte så lätt kan användas. Men jag antar lekmannamässigt att man kan använda Disc Managern för att utöka partionen. Så detta är nog inget större problem.

 

Jag är dock mest intresserad av datorer på hårdvarunära konkret nivå. Jag vill således veta vad som faktiskt händer iom MBR.

 

Jag har kommit fram till att det sista som händer i MBR är att BIOS går ut och "pollar" vissa förutbestämda adresser på hårddisken. Där jag inbillar mig JMP-adressen till OS:et skall ligga.

 

Jag skulle vilja disassemblera hela BIOSet men har tack vare dig Cecilia insett att det räcker med främst 1BEh (+16 bytes). Men kanske också 1CEh, 1DEh och 1EEh då där borde ligga andra boot-bara diskar såsom floppy (yes, jag har tom en floppy :-) och CD.

 

Jag har idag läst en del av en Intel-manual för att försöka förstå. 1BEh har hos din hex-dump datan 00h som första byte. Enligt Intels manual betyder detta en ADD-instruktion. Längre än så har jag inte kommit då pdf-manualen knepigt nog var ofullständig (började med kapitel 4...).

 

Trots att jag läst en del av manualen är jag fortfarande konfunderad över hur din hex-dump ser ut. Adresslängden stämmer men vadå data i byte-format? Borde inte varje data vara 4 bytes lång? Det är väl en 32X32 bits processor? Det här förstår jag inte. Men kanske höga bitar fylls ut med t.ex nollor? Men om det gjorde det så vore det ett oerhört slöseri med klockcykler! Kanske därför Windows är så långsamt :-)

 

Ha det bra!

 

MVH/Roger

PS

Här är länken till manualen som jag hittat: http://download.inte...uals/253667.pdf

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
Cecilia

Du måste skilja på BIOS och MBR. BIOS ligger i ett särskilt minne på moderkortet. MBR ligger på hårddisken, dvs där finns inget om andra enheter. 1BEH är början på partitionstabellen för hårddisken och omfattar de upp till 4 primära och logiska partitioner som finns på en NTFS-formaterad hårddisk. Det är ingen assemblerkod med instruktioner.

 

Att hexeditorn presenterade informationen i bytes betyder inte att BIOS läser informationen byte för byte.

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
rogerk8

Du måste skilja på BIOS och MBR. BIOS ligger i ett särskilt minne på moderkortet. MBR ligger på hårddisken, dvs där finns inget om andra enheter. 1BEH är början på partitionstabellen för hårddisken och omfattar de upp till 4 primära och logiska partitioner som finns på en NTFS-formaterad hårddisk. Det är ingen assemblerkod med instruktioner.

 

:Detta ska jag tänka på.

 

Att hexeditorn presenterade informationen i bytes betyder inte att BIOS läser informationen byte för byte.

 

:Här har du fel. BIOS-minnet kan aldrig läsa data, det är det alltid processorn som gör.

 

:Tack för ditt svar!

 

:MVH/Roger

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
Cecilia

Okej, för att förtydliga då:

BIOS-programmet läser data från hårddisken med hjälp av processorn. Det är ju trots allt ett program som beordrar vad processorn ska göra så man brukar säga att program läser information som finns på hårddisken, i minnet osv.

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
Mikael63
kör med gamla IDE-hårddiskar

http://sv.wikipedia.org/wiki/Parallell_ATA

 

De gånger jag klonat en disk har det inte uppstått något "bekymmer" med att man inte kunnat nyttja den nya diskens storlek.

 

En disk utan MBR kan ju få det ex. med hjälp av Rescatux.

Det går ju även att kopiera MBR.

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
rogerk8

Hej Mikael och Cecilia!

 

Tack, där sa du nåt! Det går ju faktiskt att kopiera MBR! Åtminstone borde det gå mha Cecilias Hex Editor.

 

Detta är faktiskt en lösning.

 

Dock, vilket är det egentliga problemet, skulle jag inte bli direkt nåt klokare. Man bara kringgår problemet.

 

Så jag kommer fortsätta min amatörforskning.

 

Jag bifogar en skiss på hur jag tror det går till på hårdvarunivå.

 

EA står för Effective Address (läs typ första adressen). När det gäller CD-ROM och Floppy så måste dom ha var sin adress i minnesmappen för att vara nåbara. Eventuellt ligger även drivrutinerna (vad nu det är...) där. Jag vet inte. Men en sak är säker, och det är nästan det enda jag vet om BIOS, diskarna pollas/bootas i prioritetsordning styrd av BIOS.

 

Jag tror alltså att vid spänningstillslag (POR=Power-On-Reset) lägger processorn ut FFFFFFF0h ut på adress-bussen. Denna ingår i adressarean för BIOS men eftersom det bara återstår 15 adresser innan taket måste första instruktion i BIOS vara en JMP-instruktion till lämpligare startadress/area (som jag kallat HBLB).

 

BIOS är inte speciellt stort och behöver heller ej vara det. Det är ju så lite den behöver göra. Och man kan hårdkoda resetvektorn till att med hjälp av Chip Select styra BIOS till att vara aktivt enbart längst ner i minnesmappen.

 

När processorn hoppar till HBLB och kört större delen av BIOS-programmet går processorn ut och försöker boota från en lista av 4 partioner/OS. I BIOS kan man säkerligen sätta vilken partition den ska börja med.

 

Detta är vad jag tror mig förstå. Återkom gärna med synpunkter.

 

Jag hade förresten fått informationen om problemet med klon-storlek från säker källa. Åtminstone trodde jag så...

 

MVH/Roger

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
Mikael63

För mig så låter det som att gå över många vattendrag för att hämta en klunk vatten...

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
rogerk8

För mig så låter det som att gå över många vattendrag för att hämta en klunk vatten...

 

Haha, beror på vad man är intresserad av :-)

 

MVH/Roger

PS

Jag har bestämt mig för att använda ditt fantastiskt triviala tips, även om det tar emot :-D

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
Mikael63
Tack, där sa du nåt! Det går ju faktiskt att kopiera MBR! Åtminstone borde det gå mha Cecilias Hex Editor.

Se

//eforum.idg.se/topic/332322-fixmbr-fungerar-inte/page__view__findpost__p__1558106

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
rogerk8

Intressant.

 

Om jag har fattat det rent egoistiskt rätt så kan man alltså

 

1) Format D: (i DOS-prompten varvid D: blir av typen NTFS?)

2) Flytta C: och D: till annan dator.

3) Kopiera C: (som då får ett annat namn) till D:

4) Flytta tillbaks åtminstone D: till ursprungsdatorn (120GB isf 20GB)

5) Skriva FDISK /MBR i DOS-prompten (varvid en ny MBR skapas)

 

Har jag fattat detta rätt?

 

MVH/Roger

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
fagerja

Här hittar du (på tyska) hur partitionstabellen är uppbyggd: http://www.wikidorf.de/reintechnisch/Inhalt/HDDPartitionierungKHDE 446 första byten i MBR är bootloaderdata och de följande 64 den primära partitionstabellen. De resterande två byten är signatur. De 446 byten räcker inte till för att boota modärna OS. Där för ingår där ett hopp till OS:ets bootloader, som kan vara filer i första partitionen ( Windows XP:s NTLDR, BOOT.INI) eller i sektorerna efter MBR (GRUB).

Partitionstabellen innehåller ingen körbar assamblerkod utan enbart data hur disken är partitionerad. På varje disk har partitionstabellen börjar partitationstabellen på 1BEh. Första partitionen börjar på följande cylinder (cylinder 1). MBR finns på cylinder 0. Resten av cylinder 0 kan användas för bootloader. Cylinder 0 är inte tillgänglig för vanliga program.

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
Mikael63

Intressant.

 

Om jag har fattat det rent egoistiskt rätt så kan man alltså

 

1) Format D: (i DOS-prompten varvid D: blir av typen NTFS?)

2) Flytta C: och D: till annan dator.

3) Kopiera C: (som då får ett annat namn) till D:

4) Flytta tillbaks åtminstone D: till ursprungsdatorn (120GB isf 20GB)

5) Skriva FDISK /MBR i DOS-prompten (varvid en ny MBR skapas)

 

Har jag fattat detta rätt?

 

MVH/Roger

Varför steg 2, varför en annan dator?

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
rogerk8

Varför steg 2, varför en annan dator?

 

Windows kan väl inte kopiera sig själv?

 

MVH/Roger

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
fagerja

Intressant.

 

Om jag har fattat det rent egoistiskt rätt så kan man alltså

 

1) Format D: (i DOS-prompten varvid D: blir av typen NTFS?)

2) Flytta C: och D: till annan dator.

3) Kopiera C: (som då får ett annat namn) till D:

4) Flytta tillbaks åtminstone D: till ursprungsdatorn (120GB isf 20GB)

5) Skriva FDISK /MBR i DOS-prompten (varvid en ny MBR skapas)

 

Har jag fattat detta rätt?

 

MVH/Roger

Du kan inte flytta C: eller D: till en annan dator. C: och D: är monteringspunkter inte diskar eller partitioner. En monteringspunkt är en adress. Gör såhär (kopiera med dd): 1. Gör en avbild av filsystemet på C: till en fil på en annan dator. Skapa även en avbild av de 446 första byten i MBR för säkerhets skull.2. Partionera om ursprungsdatorn 3. Kopiera filsystemet till första partitionen.

Alternativt om du endast vill utöka systempartitionen:Gör backup eller flytta datat från D:.Ta bort partitionen efter systempartitionen (monterad på D:)Expandera systempartitionen (monterad på C:)Skapa en ny mindre partition om du inte använt hela utrymmet till systempartitionen.

 

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
rogerk8
Postad (redigerade)

Jag tror mig vara på god väg att lösa problemet. Såhär långt har jag kommit:

 

1) Flyttat över allt nödvändigt från E: till C:

2) Kört format E: i DOS-prompten (gick inte fort kan jag meddela)

3) Kört xcopy C: E: /S i DOS-promten

4) När jag lämnade bygget höll kopieringen fortfarande på...

 

När det gäller punkt 3) så blev det lite trial-and-error för först ville den bara kopiera C:-roten. Men efter att ha använt den fantastiska hjälpen (help) i DOS så kunde jag klura ut att den så kallade switchen /S behövdes för att alla underkataloger också skulle kopieras.

 

Sen la jag ett par filer på en diskett (och ja, jag har floppy på min fantastiska dator :-) och körde xcopy a: c:. Vilket fungerade ypperligt. Efter jag gjort det prövade jag även, på min kära kollegas inrådan, ha en av filerna öppen SAMTIDIGT som jag gjorde en xcopy. Vad tror ni hände? DOS sket fullständigt i det och kopierade bara som vanligt. Ingen patetisk windows-varning om att filen var öppen mao...

 

Dessutom verkar detta betyda att DOS kan kopiera sig själv. Vi får se på måndag...

 

När det gäller punkt 4) så var det en skön känsla att se hur det swischade förbi massa filkopior i DOS-fönstret.

 

Dessutom var det en skön känsla att för första gången i mitt liv få prövat kommandot format e:. Har alltid velat göra det :-)

 

Om allt har gått väl kommer jag på måndag bara ha dessa punkter kvar

 

5) Köra fdisk /mbr i DOS-prompten (skapar tydligen en MBR)

6) Bygla om IDE-diskarna så Master och Slave byter plats

 

Har jag en datoramatörs tur så är sedan problemet löst!

 

MVH/Roger

PS

Skulle det inte gå med fdisk /mbr så verkar det således finnas en möjlighet att manuellt kopiera C:'s MBR (Master Boot Record, först på hårddisken och okopierbar på sedvanligt sätt) till E: mha den Hex-editor du Cecilia så trevligt rekommenderar. Men detta känns naturligtvis knöligare.

Redigerad av rogerk8

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
vertpre

Jag har följt den här tråden. Intressant och mycket förbryllande. Jag har svårt att förstå hur man kan eller varför man vill, så till den milda grad, komplicera något så enkelt som att klona en hårddisk.

 

Säg att man har en hårddisk på 100GB, med en partition på 40GB och en på 60GB. Klonar man den till en disk på 200GB får man en partition på 80GB och en på 120GB. Allt utrymme på den nya disken utnyttjas alltså. Finns operativsystemet med på en av de klonade partitionerna, blir den nya disken också startbar.

 

Det går också väldigt bra att slå samman 2 partitioner som finns på samma hårddisk. Det finns flera gratisprogram som klarar detta.

 

Sedan är klart att om man bara av ren nyfikenhet vill veta hur allt fungerar, då är det en annan sak. Däremot är denna information helt onödig för att klona en partition eller hårddisk. Men som sagt, det är ju upp till var och en, hur man vill gå tillväga. Personligen föredrar jag det "triviala" sättet.

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
rogerk8

Hej!

 

Eftersom jag är mycket intresserad av datorer på hårdvarunära nivå kommer jag fortsätta min amatörforskning :-)

 

Idag blev jag emellertid besviken. När jag kom till jobbet stog det nämligen "sharing violation" sist på skärmen och all kopiering hade stannat där (runt windows).

 

Detta är egentligen ett ganska självklart meddelande då jag ju kört xcopy c: e: /s där själva kommandot härstammar från ett emulerat program i windows (e.g DOS). Jag har alltså försökt be windows kopiera sig själv, vilket ju är tämligen självklart att det inte går. Även om xcopy tydligen kunde kopiera öppna filer...

 

Idag lyckades jag emellertid skapa en DOS startdiskett (görs mha Min dator/högerklick A:/format/MS DOS startdiskett) och lägga en kopia av xcopy.exe på den.

 

Men när jag bootade från startdisketten (fick ställa om lite i BIOS) och prövade köra min tillagda xcopy så protesterade den nåt i stil med " this program cannot run in DOS mode".

 

Detta fick mig att söka på nätet efter äldre versioner av xcopy.exe (som inte emuleras utan är rena DOS-program).

 

Jag hittade dock inga. Mycket skit på nätet nuförtiden :-)

 

I morgon har jag således tänkt leta i programförrådet efter nån gammal DOS. Köra DIR på de disketterna och leta rätt på fdisk.exe och xcopy.exe samt kopiera dom till en ny startdiskett för att göra ett sista försök med speciellt xcopy.

 

Det är dock intressant att man mha startdisketten kan komma så långt som att kunna köra enkla DOS-kommandon. Eftersom datorn har bootats från startdisketten så finns inga andra program inblandade än dom maximalt 1.44MB som startdisketten innehåller. På denna lilla yta finns alltså en enkel DOS integrerad. Mycket fascinerande!

 

Funkar det inte med den modifierade startdisketten (läs om jag inte hittar nån DOS) så blir det att fortsätta den hårda vägen, dvs ta ur diskarna och placera dom i en annan dator (som vi har) samt köra xcopy där.

 

Men det hade varit roligare om jag bara kunde

 

1) Köra xcopy c: e: /s (under startdisketten/a:)

2) Köra e: (viktigt att sätta den som aktiv enhet. Det är ju den som behöver en ny MBR)

3) Köra fdisk /mbr (efter att jag sniffat sektor 1 mha Cecilias program så att jag har koll på skillnaden)

4) Rycka diskarna och bygla om master till slave och vice versa samt plugga i dom igen.

 

Som ni märker har jag ingen riktig koll på vad jag försöker göra :-)

 

Ha det bra!

 

MVH/Roger

PS

Hittar jag nåt gammalt DOS så funderar jag, som sista åtgärd före den hårdvarumässiga ovan, på att installera det på E: och köra xcopy därifrån. Men jag har inga större förhoppningar om att hitta nåt gammalt DOS så det ser ut att bli datorbytet enligt ovan. Även om det suger lite i bökighet :-)

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
Cecilia

Frågan är om någon gammal DOS-version kan hantera partitioner formaterade med NTFS (till skillnad från en modernare Linux-distribution).

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
rogerk8

Jag tackar för tipsen!

 

Jag kommer prova detta i morgon. Det skall bli intressant!

 

Tack!

 

MVH/Roger

PS

Men det är lång väg att vandra :-)

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
fagerja

DOS-versionerna av xcopy kan inte kopiera NTFS. Skall du använda DOS måste du använda ett råkopieringsprogram. Använd istället linux som Mikael63 föreslår. Kopieringskommandot i linux är cp. Med kommandot man cp får du fram manualen. MBR kan du kopiera helt eller delvis med dd. Du kan alternativt klona hela hårddisken med dd.Med dd kan du kopiera både från filer och blockenheter (diskar, USB-minnen, CD/DVD-skivor). Med dd måste du vara mycket noga med att ange målet korrekt då dd skriver över utan att varna.

I linux heter hårddiskarna /dev/sda, /dev/sdb, /dev/sdc o.s.v.. Partitionerna anges med en siffra efter hårddisknamnet (t.ex. /dev/sdd2 är andra partitionen på fjärde disken). Kommandot blkid listar blockenheterna ( namn, LABEL och UUID).

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Skapa ett nytt konto på vårt forum. Det är lätt!

Registrera ett nytt konto

Logga in

Redan medlem? Logga in här.

Logga in nu



×
×
  • Skapa nytt...