The UNIX and Linux Forums  
Hallo en welkom van de Verenigde Staten aan de UNIX en Linux Forum! Bedankt voor uw bezoek en Deelnemen aan onze wereldwijde gemeenschap.

Go Back   De Unix-en Linux Forum > Top Forums > UNIX voor Dummies Questions & Answers > Answers to Frequently Asked Questions > Tips en Tutorials
.
google unix.com



Tips en Tutorials Nuttige artikelen van onze gebruikers.

Meer UNIX en Linux Forum Onderwerpen Misschien vindt u Helpful
Draad Thread Starter Forum Antwoorden Last Post
octaaf-db 031008 (Default branch) iBot Software releases - RSS Nieuws 0 03-12-2008 07:00 PM
octaaf-ann 1.0 (Default branch) iBot Software releases - RSS Nieuws 0 03-10-2008 06:40 PM
Octaaf-FLTK 0.7.1 (Default branch) iBot Software releases - RSS Nieuws 0 02-05-2008 12:10 AM
Octave 3.0.0 (Default branch) iBot Software releases - RSS Nieuws 0 01-10-2008 06:40 PM

 
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Thread Tools Zoeken in deze Thread Rate Thread Display Modes
  #1 (permalink)  
Old 10-07-2006
Perderabo's Avatar
Perderabo Perderabo is offline Forum Staff  
Unix Daemon
  
 

Join Date: Aug 2001
Locatie: Ashburn, Virginia
Berichten: 9.123
Octave --- Mijn achtvoudig opstarten laptop

Zoals ik beloofd in meerdere threads, hier zijn enkele opmerkingen over hoe ik geïnstalleerd meerdere besturingssystemen op mijn laptop. Ik zal links naar de tools die ik verkregen uit verschillende derde partijen. En ik zal ook de broncode voor een paar scripts die ik geschreven heb.

Inleiding
Een paar maanden geleden heeft de schijf op mijn Inspiron 8200 gebakken uit. Ik heb besloten om met nieuwe randapparatuur. Ik heb een 100 GB Seagate schijf en een DVD-brander. Dat de 100 GB schijf is gemonteerd in een vervoerder. Het is een groot probleem om de schijf in een drager, maar een schroef te verwijderen en de vervoerder kunnen gewoon worden teruggetrokken. Ik kocht een tweede vervoerder en een tweede 100 GB schijf. Dit laat ik mijn harde schijf en zo kan ik proberen experimenten met weinig risico. Ik kan een van mijn batterijen en installeer een ander station in de batterijsleuf. Ik heb een floppy drive te installeren daar. Mijn BIOS ondersteunt opstarten vanaf een ATA-apparaat, zodat ik kan booten vanaf de harde schijf, de cd / dvd-station of de floppy.

Ik besloot te installeren als OS is veel als ik kon op de nieuwe setup. Het probleem is dat, behalve voor Linux, alles vraagt om een primaire partitie en zijn er slechts 4 primaire partities. Als een wordt gebruikt als een keten van logische partities, dat bladeren 3 niet-linux OS's. Ik besloot te leven. Er zijn enkele extreme oplossingen die het mogelijk maken meer niet-linux OS's, maar ze zijn te extreem. Ik wilde NetBSD, Desktop BSD, Solaris 8 en in aanvulling op wat ik gedaan heb installeren. Maar die 3 OS's lijkt niet de moeite waard zeer extreme maatregelen. Dus ik geliquideerd met:
  • Windows XP
  • Redhat
  • Fedora
  • SuSE
  • Debian
  • Wetenschappelijk
  • FreeBSD
  • Solaris 10

Gereedschap

Ik maakte gebruik van verschillende software tools om me te helpen met dit project.

GRUB
Ten eerste, ik moet echt een goede bootloader dat ik begrijp het helemaal. GRUB is echt het enige spel in de stad. Er zijn enkele zeer krachtige bootloader producten, maar zonder toegang tot de broncode, er is een limiet aan hoe goed ik kan begrijpen. GRUB is eigenlijk heel gemakkelijk te begrijpen, maar het is slecht gedocumenteerd. Tot ik begreep GRUB, diverse rampen gesmolten mijn systeem unbootable. In elk geval kon ik uiteindelijk sporen precies wat er gebeurd is. Het is echt niet meer mogelijk om mijn systeem unbootable.

Disk Director / True Image
Ik moest een partitie manager en ik hebben gebruikt Partition Magic in het verleden. Maar PowerQuest verkocht het product naar een ander bedrijf, en het lijkt niet goed ondersteund nu. Ik heb besloten om te proberen Acronis Disk Director, die minder duur is. Het is niet perfect, maar het werkte goed genoeg. Ik heb ook gekocht Acronis True Image. Weer niet perfect, maar het kan volledig herstellen van het systeem op een nieuwe schijf van een DVD backup. Kunt u een opstartbare cd is dat beide producten op. Dit maakt back-ups en herstelt van een ruststroomprincipe schijf. Disk Director wordt geleverd met een grafische editor die sector is aantoonbaar beter dat dskprobe.

Disk Wizard / Seatools
Seagate heeft deze hulpprogramma's downloaden van hun site. Dit zijn opstartbare cd's die kunnen rijden, diagnostiek en schrijf nullen de loop van een hele schijf tussen verschillende andere taken. Ik ben dol op nul uit een station voordat ik een re-install (9 uur voor 100 GB!). En het kan niet-destructieve proeven op het station. Andere fabrikanten hebben vergelijkbare utilities.

System Rescue CD
Toen ik had problemen tijdens het project, dit is het gereedschap dat je me uit de bossen. Het is in feite een "Live CD" met een heleboel handige tools beschikbaar.

Sector Inspector
Dit is een XP opdracht regel gebaseerd fysieke sector nutsbedrijven. Het kan wel een heleboel dingen die de GUI gebaseerde sector van de redactie niet kunnen doen. Dit is een Microsoft programma en het is gratis.

grub
Acronis Disk Director Suite 10.0
Acronis True Image 9.0 Home
Disk Wizard
Seatools
SystemRescueCd
sector inspecteur

Ik ben overgestapt van dskprobe aan de Acronis Sector Editor. Maar dskprobe is gratis en het gaat bij de ondersteuning tools pakket op de XP-installatie-cd. Of u kunt downloaden van de Support Tools hier. dskprobe komt met een doc bestand genaamd dskprtrb.doc die ik dacht was very helpful. Ook dskprobe is een stand-alone nut terwijl de Acronis sector editor is een sub-instrument van Disk Director.

Installatie Opmerkingen

Hier zijn een aantal opmerkingen over wat ik gedaan heb voor het installeren van de os'es. Ik heb niet alleen het verzamelen van een collectie van OS en sprong recht in de massa van de installatie. Ik heb installaties eerste test om ervaring op te doen met elke installateur. In elk geval heb ik gebruik gemaakt van de "aangepaste" opties te maximaliseren mijn flexibiliteit tijdens de installatie. Dit betekent dat ik moest begrijpen iedere installateur vrij goed. Vergeet niet dat de Master Boot Record heeft een tafel voor 4 partitie inzendingen.

Windows XP
Ik installeerde XP eerste op de eerste primaire partitie die ik geformatteerd met een NTFS-bestandssysteem. Ik installeerde het herstel console en voegde ik een optie voor opstarten in de veilige modus. Dit betekent dat de NT bootloader presenteert een menu niet anders dan de grub menu. Ik heb een E: partitie die gebruikt FAT32. Dit is mijn eerste logische partitie. Het tweede item in de partitie tabel is nu verbruikt ter ondersteuning van mijn string van logische partities. Deze partitie bevat gegevens bestanden en Linux mounten als / driveE. Dit maakt me verplaatsen van bestanden tussen Linux en XP. Bij het opstarten tijd, de NT loader zoekt naar een bestand genaamd Hiberfil.sys. Indien gevonden, wordt dit in het geheugen geladen en uitvoering hervat. Dit is hoe de slaapstand wordt uitgevoerd. Bij het ontwaken uit de slaapstand, is het essentieel dat er niets is veranderd sinds winterslaap begonnen. Zelfs dockingstation of undocking een laptop is genoeg problemen veroorzaken. Ik zal opstarten via grub en ik kan niet garanderen dat een ander OS misschien niet de slag te gaan. Aangezien ik het delen van partities onder OS is dit een recept voor een ramp. Dus ik heb een handicap winterslaap.

Elk van de andere OS installatie procedures is bereid om samen te bestaan met een reeds bestaande XP bijvoorbeeld in de eerste primaire partitie. De meeste van hen zou het installeren van een bootloader die kunnen opstarten XP of themself. Zie de "failsafe boot" artikel hieronder in te zien waarom dit niet een probleem.

Linux distributies
Ik gebruikte LVM voor elke Linux distro. Zelfs / is onder LVM, maar Linux kan niet booten van LVM, dus heb ik een tijdelijke / boot partitie tijdens de installatie. Laten we als RedHat ben voorbeeld ... het was de eerste distro ik geïnstalleerd. Ik gekopieerd / boot naar / mastergrub / RedHat. Daarna ben ik verhuisd / mastergrub / RedHat / grub naar / mastergrub / grub. / mastergrub / RedHat / grub werd een symlink naar / mastergrub / grub. En / boot wordt een symlink naar / mastergrub / RedHat. Elke distro krijgt zijn eigen subdirectory onder / mastergrub en elk van deze submappen krijgt een grub symlink wijst naar / mastergrub / grub. Dus al het distros liquideren met dezelfde grub aanleg. Dat / boot partitie is dan gewoon weggegooid.

Gebruikte ik een aparte / tmp partitie en swap partitie putside van LVM. De swap-gebied is 2 GB en / tmp is 1 GB. Elke Linux distro gebruikt dezelfde partities. Dus, in totaal, gebruik ik 3 GB voor / tmp en ruilen in plaats van 15 GB. Ik ben in het proces van de aanpassing van de opstart-scripts voor de wederopbouw / tmp tijdens het booten. Dit betekent dat een OS kan gebruik maken van de swap of / tmp ruimte voor enig doel. Het verklaart ook waarom / tmp in ext2 dan ext3. Er is geen punt in een log als ik het herstel van het bestandssysteem op elke boot.

RedHat is nogal oud en het is uit de pas met de andere distributies. Maar ik ben nog steeds met RedHat ingezet door bedrijven, dus ik wilde een versie op mijn laptop. RedHat gebruikt LVM versie 1 en de andere distributies gebruik LVM versie 2. Ik heb Fedora, en heeft een "vgscan - makenodes". Dit gaf me apparaat bestanden voor alle andere distro's' logische volumes. Ik monteer de andere distributies als ik behoefte aan. Ik gebruik dit voor de ontwikkeling van een back-up bestand niveau voor de Linux-distributies. Ik heb deze ook gebruikt voor het corrigeren van een probleem met opstart-scripts.

Elke Linux-partitie is een logische partitie. Dit omvat de Grub partities en de LVM partities. Ik heb een / userdata partitie geformatteerd als ext3 waarin alle van de Linux distributies mount. Ik heb een klein / home (onder LVM) in elke distro zodat ieder kan zijn eigen start-up van bestanden, enz. Maar de meeste van mijn spullen gaan in / userdata. Dus elke distro heeft zijn eigen LVM partitie. Maar dan is er swap, / tmp, / userdata en / mastergrub (elk in een aparte logische partitie) die gebruikt worden door alle distributies gemeen. En er is / driveE die zij mount ook.

FreeBSD
FreeBSD gaat in primaire partitie 3. Ik gebruikte Acronis voor een pre-toewijzing van de partitie voor de installatie. FreeBSD carves de partitie intp stukken dat het verwarrend ook partities. In theorie kan Grub boot FreeBSD rechtstreeks, maar ik kon niet komen, dat aan het werk. Dus ik had FreeBSD installeren eigen bootloader in de partitie, waardoor de MBR alleen. Daarna heb ik bewerkt grub.conf aan chainloader in. Ik wil graag een directe Grub boot werken en ik ben van plan om te werken op dit punt. Voor nu, het is goed genoeg.

Solaris
Ik heb een primaire partitie naar links en ik geïnstalleerde Solaris 10 in. Net als FreeBSD, Solaris carves de partitie op. Het maakt gebruik van "plakken" zodat een beschrijving van de stukken. Nogmaals, ik preallocated de partitie voordat de installatie. Op het laatste moment merkte ik dat zondag was een nieuwe versie van Solaris 10 op hun site. Ik ben meestal niet direct naar elke nieuwe versie, maar zondag had ingeschakeld vanuit hun eigen bootloader te gebruiken GRUB. Dus ik gedownload de laatste Solaris 10. Nou, geen van mijn versies van Grub kan lezen Solaris plakjes ... Ik heb zelfs gedownload de laatste Grub uit de Grub home pagina en nog niet gaan. Zondag moeten modified Grub. Ik mag naar Sun's versie op een bepaald punt. Maar voor nu, mijn Grub is chainloadering Sun Grub.

Mijn laatste Grub-configuratie
Met elk OS dat gebruikt Grub, Ik nam een kijkje op haar grub.conf. Vele malen zag ik een nieuwe techniek, en als ik vonden het leuk, ik toegevoegd aan mijn tas trucs. SuSE sterk veranderde Grub en ik kon niet vinden veel info op hun mods. Er zijn waarschuwingen dat SuSE mods een veiligheidsprobleem. Dus ik zal geen gebruik maken van de SuSE versie van GRUB. Maar zelfs met SuSE, vond ik sommige dingen te gebruiken. Mijn grub.conf:
Code:
#
#  This configuration file is maintained by a series of scripts that support the concept of this
#  partition being moved or copied.  Statements like "    r00t (xxxx) " where there is exactly one
#  space between the word "root" and the opening parenthesis will be replaced with a grub device
#  that corresponds to the current partition.  Put extra spaces after "root" to protect a root entry
#  from this automatic replacement.
default=1
timeout=60
color red/black black/green
	title Boot Octave from grub.conf on mastergrub
	root
title 1) Windows XP Pro
	root		(hd0,0)
	makeactive
	chainloader	+1
title 2) RedHat
	root (hd0,6)
	kernel /Redhat/vmlinuz-2.4.18-14 ro root=/dev/RedHat00/LogVol00 hdb=ide-scsi
	initrd /Redhat/initrd-2.4.18-14.img
title 3) Fedora Core
	root (hd0,6)
	kernel /Fedora/vmlinuz-2.6.15-1.2054_FC5 ro root=/dev/Fedora00/LogVol00 rhgb quiet
	initrd /Fedora/initrd-2.6.15-1.2054_FC5.img
title 4) SuSE
	root (hd0,6)
	kernel /SuSE/vmlinuz root=/dev/SuSE00/lvol0 vga=0x31a    resume=/dev/hda8  splash=silent showopts
	initrd /SuSE/initrd
title 5) Debian 
	root (hd0,6)
	kernel	/Debian/vmlinuz-2.4.27-2-386 root=/dev/mapper/Debian00-lvol0 ro 
	initrd	/Debian/initrd.img-2.4.27-2-386
title 6) Scientific 
	root (hd0,6)
	kernel /Scientific/vmlinuz-2.6.9-34.EL ro root=/dev/Scientific00/LogVol00 rhgb quiet
	initrd /Scientific/initrd-2.6.9-34.EL.img
title 7) FreeBSD
	rootnoverify (hd0,2)
	makeactive
	chainloader	+1
title 8) Solaris
	rootnoverify (hd0,3)
	makeactive
	chainloader +1
title ----UTILITIES----
	root
title ______reboot
	reboot
title ______off
	halt
title ______halt
	halt --no-apm
title ______floppy
	chainloader (fd0)+1
  #2 (permalink)  
Old 10-07-2006
Perderabo's Avatar
Perderabo Perderabo is offline Forum Staff  
Unix Daemon
  
 

Join Date: Aug 2001
Locatie: Ashburn, Virginia
Berichten: 9.123
Een van de geheimen van succes in een complexe installatie, zoals dit is volledig te begrijpen precies waar alles is op de schijf. Acronis disk directeur kan de lijst een aantal van de info, maar ik nodig meer. Ik schreef een instrument om de info dat Acronis weergegeven en een tafel voor mijn notities ...

Code:
   ===== Device Name ====                                     ========== Start ========== ========== End ============== ====== Length ========
P#   Grub   Linux FreeBSD      Description    Partition Type     LBA     Cyl--Head--Sectr    LBA     Cyl--Head--Sector   Sectors    MB    Cyls
-- -------- ----- ------- ------------------- --------------- ---------- ---------------- ---------- ------------------ --------- ------ -----
   (hd0)    hda           the whole disk                               0 (0---0---1)       195371568 (12161---81---1)     5371569   2622   334
                          first full cylinder                          0 (0---0---1)           16064 (0---254---63)         16065      7     1
                          usable space                                 0 (0---0---1)       195366464 (12160---254---63)   5366465   2620   334
                          unusable space                       195366465 (12161---0---1)   195371568 (12161---81---1)        5104      2
                          MBR                                          0 (0---0---1)               0 (0---0---1)                1
                          the hidden sectors                           1 (0---0---2)              62 (0---0---63)              62
1  (hd0,0)  hda1  ad0s1   XP                  NTFS       0x07         63 (0---1---1)        31519529 (1961---254---63)    1519467    741    94
                          EBR                                   31519530 (1962---0---1)     31519592 (1962---0---63)           63
5  (hd0,4)  hda5  ad0s4   driveE              FAT32      0x0B   31519593 (1962---1---1)     52500419 (3267---254---63)    0980827    478    61
                          EBR                                   52500420 (3268---0---1)     52500482 (3268---0---63)           63
6  (hd0,5)  hda6  ad0s5   /userdata           EXT3       0x83   52500483 (3268---1---1)     62990864 (3920---254---63)    0490382    239    30
                          EBR                                   62990865 (3921---0---1)     62990934 (3921---1---7)            70
7  (hd0,6)  hda7  ad0s7   /mastergrub         EXT3       0x83   62990935 (3921---1---8)     63263969 (3937---254---63)     273035    133    16
                          EBR                                   63263970 (3938---0---1)     63264032 (3938---0---63)           63
8  (hd0,7)  hda8  ad0s8                       Linux swap 0x82   63264033 (3938---1---1)     67472999 (4199---254---63)    4208967   2055   262
                          EBR                                   67473000 (4200---0---1)     67473062 (4200---0---63)           63
9  (hd0,8)  hda9  ad0s9   /tmp                EXT3       0x8E   67473063 (4200---1---1)     69577514 (4330---254---63)    2104452   1027   131
                          EBR                                   69577515 (4331---0---1)     69577577 (4331---0---63)           63
10 (hd0,9)  hda10 ad0s10  Redhat00            Linux LVM  0x8E   69577578 (4331---1---1)     77979509 (4853---254---63)    8401932   4102   523
                          EBR                                   77979510 (4854---0---1)     77979572 (4854---0---63)           63
11 (hd0,10) hda11 ad0s11  Fedora00            Linux LVM  0x8E   77979573 (4854---1---1)     88469954 (5506---254---63)    0490382    239    30
                          EBR                                   88469955 (5507---0---1)     88470017 (5507---0---63)           63
12 (hd0,11) hda12 ad0s12  SuSE00              Linux LVM  0x8E   88470018 (5507---1---1)    101064914 (6290---254---63)    2594897   1267   161
                          EBR                                  101064915 (6291---0---1)    101064977 (6291---0---63)           63
13 (hd0,12) hda13 ad0s13  Debian00            Linux LVM  0x8E  101064978 (6291---1---1)    117852839 (7335---254---63)    6787862   3314   422
                          EBR                                  117852840 (7336---0---1)    117852902 (7336---0---63)           63
14 (hd0,13) hda14 ad0s14  Scientific00        Linux LVM  0x8E  117852903 (7336---1---1)    130447799 (8119---254---63)    2594897   1267   161
                          EBR                                  130447800 (8120---0---1)    130447862 (8120---0---63)           63
15 (hd0,14) hda15 ad0s15  /backupgrub         EXT3       0x83  130447863 (8120---1---1)    130720904 (8136---254---63)     273042    133    17
                          EBR                                  130720905 (8137---0---1)    130720967 (8137---0---63)           63
16 (hd0,15) hda16 ad0s16  /testgrub           EXT3       0x83  130720968 (8137---1---1)    130994009 (8153---254---63)     273042    133    17
                          Free Space                           130994010 (8154---0---1)    158256314 (9850---254---63)    7262305   3546   452
2  (hd0,2)  hda2  ad0s2                       FreeBSD    0xA5  158256315 (9851---0---1)    172939724 (10764---254---63)   4683410   2286   291
3  (hd0,3)  hda3  ad0s3                       Solaris    0xBF  172939725 (10765---0---1)   195366464 (12160---254---63)   2426740   1184   151
Sommige nota's over dit ...

MBR, de verborgen sectoren, en de EBR's
De Master Boot Record (MBR) is de eerste sector van de schijf. Het heeft de boot-code en de partitie tabel in. De rest van het eerste nummer heet "de verborgen sectoren". In mijn geval, Grub stadium 1.5 is in de verborgen sectoren. De structuur van dit eerste nummer is gedupliceerd voor elke logische partitie. Elke logische partitie heeft een structuur zoals een MBR als op het eerste sector. Dan is de rest van de eerste track wordt genegeerd. Dit eerste nummer onmiddellijk voorafgaat aan de logische partitie die het beschrijft. Microsoft gebruikt de term "logisch station", dat betekent bijna hetzelfde als "logische partitie". Maar kijken aandachtig naar de definities lijkt het mij dat "logisch station" \u003d EBR + "verspild sectoren" + "logische partitie". In ieder geval moet je de MBR en de EBR's om de partitie-indeling van een station. Ik zie programma om backups te maken van de MBR, maar ze altijd aan de EBR's. Ik zal vast dat door het schrijven van een utility om een reservekopie van het MBR plus de EBR's. Strickly spreken de EBR is een sector en wordt gevolgd door enkele verspild sectoren. In mijn grafiek heb ik een beetje bedrogen en opnieuw de EBR worden alle overhead tussen sectoren partities. Ik denk dat de grafiek is "druk genoeg", en zou zelfs nog moeilijker te lezen met twee lijnen tussen elke partitie.


Cilinder Uitlijning
Merk op hoe de partities zijn meestal afgestemd op cilinder grenzen. De uitzondering is / mastergrub en dit is te wijten aan een fout in Acronis Disk Director. Ik had oorspronkelijk / mastergrub op ,5 MB die is te groot. Ik geslonken, maar ik heb de vrije ruimte verschijnen voor de partitie in plaats van erna. (Dit wil ik shuffle de vrije ruimte en voeg deze toe aan mijn XP partitie.) Toen ik aan deze grafiek, ik merkte dat / mastergrub was niet goed uitgelijnd. Dit afval nog een paar flessen, maar het lijkt weinig gevolgen. De enige mogelijke problemen die ik kan bedenken ... Sommige programma's proberen te raden de schijf geometrie .... met verbazingwekkend succes. Zij kunnen dit doen door te kijken naar de aanpassing van de partities. Sommige programma's (zoals Acronis zelf) kunnen lokaliseren en herstellen geschrapt partities. Dit kan mislukken als de partitie is verkeerd om te beginnen. Ik merk dat Acronis heeft een "snelle" en "trage" zoek geschrapt partities (met de "trage" optie meer robuust) en dit kan duw je in de "trage" optie.

Dit me aangemoedigd om te experimenteren met partities die zijn echt logisch, maar hadden ook een item in het vierde sleuf MBR als een primaire partitie. Mijn idee was om over te schakelen een van de vele logicals in het primaire slot, de installatie van een OS, vernietigen de eerste binnenkomst, en starten vanaf de logische partitie. Dit werkte niet erg goed. Een slimme bootloader kunnen schakelen een partitie van logisch primaire en vervolgens opstarten, maar ik wilde niet schrijven van een bootloader.

Ik merk dat elke logische partitie is verspillen het grootste deel van een volledige baan. Ik ben overweegt misaligning al de partities te herstellen die ruimte. Er is niet veel ruimte in te vorderen en dit kan niet de moeite waard. Ook Acronis heeft niet genoeg controle om me te proberen. Ik denk dat QTParted kan dit wel.

Solaris Changed Soorten
Solaris 10 wordt met behulp van BF als partitie type en de Solasis 10 installatieprogramma niet herkent partitie met een soort van 82 meer.

Ik wilde niet op de start en eindigt LBA's voor de EBR's. Het script zou moeten kunnen berekenen ze uit de voorgaande en de volgende items. Dit verhoogde de complexiteit van het script, maar op de lange termijn het opgeslagen inspanning. En hier is de broncode ...
Code:
#! /usr/bin/ksh

typeset -L3 opartn
typeset -L9 ogrubdev
typeset -L6 olinuxdev
typeset -L8 ofbsddev
typeset -L20 odesc
typeset -L11 otype
typeset -L5 ohextype
typeset -R9 ofirst
typeset -L17 ofirstchs
typeset -R9 olast
typeset -L20 olastchs
typeset -R7 olong
typeset -R6 omegs
typeset -R5 ocyls
function chs
{
        ((s=$1%63))
        ((rest=$1/63))
        ((h=rest%255))
        ((c=rest/255))
        ((c=rest/255))
        ((s=s+1))
        echo "(${c}---${h}---${s})"
        return 0
}
some_data_left=1
saved_record=0

echo '   ===== Device Name ====                                     ========== Start ========== ========== End ============== ====== Length ========'
echo 'P#   Grub   Linux FreeBSD      Description    Partition Type     LBA     Cyl--Head--Sectr    LBA     Cyl--Head--Sector   Sectors    MB    Cyls'
echo '-- -------- ----- ------- ------------------- --------------- ---------- ---------------- ---------- ------------------ --------- ------ -----'

echo ';(hd0)   ;hda       ;            ;the whole disk     ;          ;    ;        0;195371568
      ;        ;          ;            ;first full cylinder;          ;    ;        0;    16064
      ;        ;          ;            ;usable space       ;          ;    ;        0;195366464
      ;        ;          ;            ;unusable space     ;          ;    ;195366465;195371568
      ;        ;          ;            ;MBR                ;          ;    ;        0;        0
      ;        ;          ;            ;the hidden sectors ;          ;    ;        1;       62
     1;(hd0,0) ;hda1      ;ad0s1       ;XP                 ;NTFS      ;0x07;       63; 31519529
      ;        ;          ;            ;EBR                ;          ;    ;         ;
     5;(hd0,4) ;hda5      ;ad0s4       ;driveE             ;FAT32     ;0x0B; 31519593; 52500419
      ;        ;          ;            ;EBR                ;          ;    ;         ;
     6;(hd0,5) ;hda6      ;ad0s5       ;/userdata          ;EXT3      ;0x83; 52500483; 62990864
      ;        ;          ;            ;EBR                ;          ;    ;         ;
     7;(hd0,6) ;hda7      ;ad0s7       ;/mastergrub        ;EXT3      ;0x83; 62990935; 63263969
      ;        ;          ;            ;EBR                ;          ;    ;         ;
     8;(hd0,7) ;hda8      ;ad0s8       ;                   ;Linux swap;0x82; 63264033; 67472999
      ;        ;          ;            ;EBR                ;          ;    ;         ;
     9;(hd0,8) ;hda9      ;ad0s9       ;/tmp               ;EXT3      ;0x8E; 67473063; 69577514
      ;        ;          ;            ;EBR                ;          ;    ;         ;
    10;(hd0,9) ;hda10     ;ad0s10      ;Redhat00           ;Linux LVM ;0x8E; 69577578; 77979509
      ;        ;          ;            ;EBR                ;          ;    ;         ;
    11;(hd0,10);hda11     ;ad0s11      ;Fedora00           ;Linux LVM ;0x8E; 77979573; 88469954
      ;        ;          ;            ;EBR                ;          ;    ;         ;
    12;(hd0,11);hda12     ;ad0s12      ;SuSE00             ;Linux LVM ;0x8E; 88470018;101064914
      ;        ;          ;            ;EBR                ;          ;    ;         ;
    13;(hd0,12);hda13     ;ad0s13      ;Debian00           ;Linux LVM ;0x8E;101064978;117852839
      ;        ;          ;            ;EBR                ;          ;    ;         ;
    14;(hd0,13);hda14     ;ad0s14      ;Scientific00       ;Linux LVM ;0x8E;117852903;130447799
      ;        ;          ;            ;EBR                ;          ;    ;         ;
    15;(hd0,14);hda15     ;ad0s15      ;/backupgrub        ;EXT3      ;0x83;130447863;130720904
      ;        ;          ;            ;EBR                ;          ;    ;         ;
    16;(hd0,15);hda16     ;ad0s16      ;/testgrub          ;EXT3      ;0x83;130720968;130994009
      ;        ;          ;            ;Free Space         ;          ;    ;130994010;158256314
     2;(hd0,2) ;hda2      ;ad0s2       ;                   ;FreeBSD   ;0xA5;158256315;172939724
     3;(hd0,3) ;hda3      ;ad0s3       ;                   ;Solaris   ;0xBF;172939725;195366464'|\
while ((some_data_left)) ; do
        if ((saved_record)) ; then
                saved_record=0
                partn=$saved_partn
                grubdev=$saved_grubdev
                linuxdev=$saved_linuxdev
                fbsddev=$saved_fbsddev
                desc=$saved_desc
                type=$saved_type
                hextype=$saved_hextype
                first=$saved_first
                last=$saved_last
        else
                if IFS=";" read partn grubdev linuxdev fbsddev desc type hextype first last ; then
                        if [[ "$desc" = EBR* ]] ; then
                                if IFS=";" read partn grubdev linuxdev fbsddev desc type hextype fir
                                        saved_record=1
                                        saved_partn=$partn
                                        saved_grubdev=$grubdev
                                        saved_linuxdev=$linuxdev
                                        saved_fbsddev=$fbsddev
                                        saved_desc=$desc
                                        saved_type=$type
                                        saved_hextype=$hextype
                                        saved_first=$first
                                        saved_last=$last
                                        partn=""
                                        grubdev=""
                                        linuxdev=""
                                        fbsddev=""
                                        type=""
                                        hextype=""
                                        desc="EBR"
                                        ((first=old_last+1))
                                        ((last=saved_first-1))
                                else
                                        echo error EBR is last record >&2
                                        exit 1
                                fi
                        fi
                else
                        some_data_left=0
                fi
        fi

        if ((some_data_left)) ; then
                opartn=$partn
                ogrubdev=$grubdev
                olinuxdev=$linuxdev
                ofbsddev=$fbsddev
                odesc=$desc
                otype=$type
                ohextype=$hextype
                ofirst=$first
                ofirstchs=$(chs $first)
                olast=$last
                olastchs=$(chs $last)
                ((olong=last-first+1))
                if ((olong>2048)) ; then
                        ((omegs=olong/2048))
                else
                        omegs=""
                fi
                if ((olong>16064)) ; then
                        ((ocyls=(olong+64)/16065))
                else
                        ocyls=""
                fi
                echo "${opartn}${ogrubdev}${olinuxdev}${ofbsddev}${odesc}${otype}${ohextype}" \
                        "${ofirst} ${ofirstchs} ${olast} ${olastchs} ${olong} ${omegs} ${ocyls}"

                old_partn=$partn
                old_grubdev=$grubdev
                old_linuxdev=$linuxdev
                old_fbsddev=$fbsddev
                old_desc=$desc
                old_type=$type
                old_hextype=$hextype
                old_first=$first
                old_last=$last
        fi
done
exit 0
  #3 (permalink)  
Old 10-12-2006
Perderabo's Avatar
Perderabo Perderabo is offline Forum Staff  
Unix Daemon
  
 

Join Date: Aug 2001
Locatie: Ashburn, Virginia
Berichten: 9.123
Failsafe Booten

De / mastergrub partitie heeft de grub software en de pitten voor elke geïnstalleerde Linux distro. Grub fase 1 woont in de Master Boot Record (MBR), dat is de eerste sector van de schijf. Vaker wel dan niet, elk OS installeren zou herschrijven de MBR te wijzen op zijn eigen kopie van grub of andere bootloader. Soms zou ik knoeien de grub software / mastergrub en breken. Naast het installeren van grub fase 1 in de MBR, fase 1 kan worden geïnstalleerd in de eerste sector van die partitie. En dan sommige andere bootloader kan chainloader in. Ik schreef mijn eigen installatie scripts. Zij zijn:

mbrinstall
Dit script installeert gewoon grub fase 1 in de MBR.

localinstall
Dit script installeert grub fase 1 in de lokale partitie. (/ mastergrub voor nu.) Daarna wordt gebruikt dd het verkrijgen van een kopie van de eerste sector van de lokale partitie. Dit wordt in een bestand in de / driveE bestandssysteem. Herinneren dat / diveE is een FAT32-bestandssysteem gebruikt om bestanden tussen Linux en XP. Windows XP zal het verkrijgen van de sector en nemen deze in de XP opstarten sequentie. In XP mijn boot.ini-bestand is zoiets als:
Code:
[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Windows XP Pro" /fastdetect /NoExecute=OptIn
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Windows XP Pro (Safe Mode)" /fastdetect /NoExecute=OptIn /safeboot:minimal /sos /bootlog
C:\bootsector.mastergrub="MasterGrub Menu"
C:\CMDCONS\BOOTSECT.DAT="Microsoft Windows Recovery Console" /cmdcons
Dus nu, als ik kan booten XP, ik kan gebruiken XP om controle te grub in / mastergrub. Dit is een grote hulp, aangezien de meeste OS installeren scripts installeren van een boot loader met een optie voor het opstarten van Windows. Dus ik kan die optie, start bij het opstarten van XP, maar selecteert u de menu-optie op te starten / mastergrub. Daarna heb ik een boot distro, en voer de mbrinstall script hierboven vermeld.

floppyinstall
Het opstarten van XP werkt niet als ik de beschadigde grub software / mastergrub. Ik heb geen kamer op een diskette voor de pitten, maar ik heb nooit mijn kernels. Ik makkelijk hebben kamer op een diskette voor grub, met inbegrip van de grub.conf bestand. Dit script zorgt voor een floppy. Dan kan ik het opstarten van de diskette en start het systeem op die manier.

cdinstall
Wat als ik helemaal kwijt / mastergrub? cdinstall creëert een cd die een volledige backup van / mastergrub. Daarnaast is een opstartbare cd kunt opstarten, die een van de distributies zonder gebruik te maken van / mastergrub op alle. Dit script nodig een stuk genaamd Grub stage2_eltorito die niet werd geleverd met een versie van Grub dat ik had. Dus ik gedownload en gecompileerd de broncode van Grub startpagina.

/backupgrub en / testgrub
Eigenlijk alle bovenstaande scripts hebben benn uitgebreid tot support / backupgrub. Dit is gewoon een andere partitie die een kopie van / mastergrub. Zo nu en dan gebruik ik rsync om de bestanden te kopiëren overgenomen. Daarna heb ik de cd in / backupgrub en voer de localinstall script. Wanneer een van deze scripts loopt, dan de cijfers wat partitie het draait inch De grub.conf bestand wordt aangepast aan de huidige partitie (of in het geval van cdinstall, aangepast te starten vanaf cd). Ik heb ook een / testgrub partitie, zodat ik zou stoppen gevaarlijke experimenten in een kritieke partitie.

supermbrbackup
Een aantal hulpmiddelen bestaan om een back-up en herstel van de MBR. Dit omvat de boot-code en de partitie tabel. Het punt is echter dat van mijn partities worden beschreven in Extended Boot Records verspreid over heel mijn schijf. Ik wilde een hulpprogramma dat zou recreëren al mijn partities (leeg natuurlijk) op een nieuwe schijf. En terwijl ik was, ik had het scannen van de ongebruikte sectoren na de MBR waar GRUB stadium 1-5 woont. Dus dit back-up van alles behalve de inhoud van de partities. De backup wordt weggeschreven naar een diskette samen met een script te herstellen ervan. Dit script kan worden uitgevoerd na het opstarten van de System Rescue CD. Mijn bedoeling was dat dit zou de eerste stap in een blank metaal herstellen. Maar het blijkt dat ik niet nodig.

Bare Metal Restore
Dit is wat gebeurt er als ik verlies de hele harde schijf. Dit is het ultieme om ervoor te zorgen dat ik kan booten. Gebruikte ik Acronis True Image om een volledige backup van mijn drive. Het biedt geen ondersteuning voor Linux LVM noch FreeBSD en Solaris plakjes. Maar het kan doen per sector back-up van deze partities. Nadat de back-up klaar is, als ik mijn harde schijf en gebruikt mijn Seatools opstartbare schijf op nul uit (9 uur met een 100 GB schijf). Toen ik startte mijn Acronis opstartdiskette en gevoed dat de back-up DVD's. Het herschapen mijn hele systeem.

Ik gebruikte een Seagate gebruiksmodellen te schrijven nullen voor de gehele disk, voordat ik begon. Dat betekent dat de Linux LVM en FreeBSD / Solaris partities waarschijnlijk had veel van nul sectoren in de ongebruikte ruimte. Dit helpt de compressie routine in de Acronis sectorgewijze backup doen goed werk.

Ik moet nog een bestand niveau backup voor Linux / FreeBSD / Solaris. Ik zal het werk op.
  #4 (permalink)  
Old 10-22-2006
Perderabo's Avatar
Perderabo Perderabo is offline Forum Staff  
Unix Daemon
  
 

Join Date: Aug 2001
Locatie: Ashburn, Virginia
Berichten: 9.123
Hier is de broncode voor de scripts bovengenoemde.

Code:
#! /bin/bash

#
#  mbrinstall --- install grub from this partition on to the MBR of the
#  current disk.  When the BIOS subsequently boots this disk, it will run
#  grub from this partition.

if [[ $(pwd) != */scripts  || $0 != ./* ]]  ; then
	echo error you must cd to the scripts directory and invoke this script with "./name"
	exit 1
fi
#
#  Extract device file name and mount point from the output of "df" command
set $(df -k . | awk  'NR == 2 { print $0}')
devicefile=$1
mountpoint=$6
name=${mountpoint#/}

#
#  Build grub style device name

devicefile=$(df -k . | awk  'NR == 2 { print $1}')
string=${devicefile#/dev/}
partition=${string#???}
drive=${string%$partition}
case "$drive" in
	hda) grubdrive="hd0" ;;
	hdb) grubdrive="hd1" ;;
	hdc) grubdrive="hd2" ;;
	hdd) grubdrive="hd3" ;;
	*)
		echo localinstall cannot handle device $drive
		exit 1
		;;
esac
((partition=partition-1))
grubdevice="(${grubdrive},${partition})"
echo devicefile=$devicefile
echo mountpoint=$mountpoint
echo name=$name
echo partition = $partition
echo drive = $drive
echo grubdrive = $grubdrive
echo grubdevice = $grubdevice

#
# rewrite grub.conf to reflect the local partition

cp ../grub/grub.conf ../grub/grub.conf.old
sed < ../grub/grub.conf.old > ../grub/grub.conf \
's/.*root (.*/	root '${grubdevice}'/
s/.*title Boot Octave from.*/	title Boot Octave from '${name}'/'

#  
#  Use grub to install itself on the drive

set -x
${mountpoint}/bin/grub --batch --verbose --device-map=${mountpoint}/grub/device.map << End
root  $grubdevice
setup  (${grubdrive})
End
set +x
exit 0
Code:
#! /bin/bash

#
#  localinstall --  install grub in the first sector of the current partition. 
#  This will make the current partition bootable.

dir=$(pwd)

if [[ $dir != */scripts  || $0 != ./* ]]  ; then
	echo error you must cd to the scripts directory and invoke this script with "./name"
	exit 1
fi
exit 0
#
#  Extract device file name and mount point from the output of "df" command
set $(df -k . | awk  'NR == 2 { print $0}')
devicefile=$1
mountpoint=$6
name=${mountpoint#/}

#
#  Build grub style device name

string=${devicefile#/dev/}
partition=${string#???}
drive=${string%$partition}
case "$drive" in
	hda) grubdrive="hd0" ;;
	hdb) grubdrive="hd1" ;;
	hdc) grubdrive="hd2" ;;
	hdd) grubdrive="hd3" ;;
	*)
		echo localinstall cannot handle device $drive
		exit 1
		;;
esac
((partition=partition-1))
grubdevice="(${grubdrive},${partition})"
echo devicefile=$devicefile
echo mountpoint=$mountpoint
echo name=$name
echo partition = $partition
echo drive = $drive
echo grubdrive = $grubdrive
echo grubdevice = $grubdevice


#
# rewrite grub.conf to reflect the local partition

cp ../grub/grub.conf ../grub/grub.conf.old
sed < ../grub/grub.conf.old > ../grub/grub.conf \
's/.*root (.*/	root '${grubdevice}'/
s/.*title Boot Octave from.*/	title Boot Octave from '${name}'/'

set -x


# 
#  We are going to write on the raw device so
#  make sure that the filesystem does not also
#  do any writing.

mount -o remount -o ro $mountpoint
sync

#  
#  Use grub to install itself on the device

${mountpoint}/bin/grub --batch --verbose --device-map=${mountpoint}/grub/device.map << End
root  $grubdevice
setup  $grubdevice
End

#
#  Now we need a new copy of bootsector to give to XP
[[ ! -d /driveE/bootsectors ]] && mkdir /driveE/bootsectors
dd if=${fulldevice} bs=512 count=1 of=/driveE/bootsectors/bootsector.$name

set +x

#
#  Restore read-write access to mountpoint
mount -o remount -o rw $mountpoint
exit 0
Code:
#! /bin/bash

#
#  floppyinstall -- install the grub software including the configuration file 
#  from this partition on to a floppy. This will create a bootable floppy that 
#  will boot the kernels from this partition.
#
if [[ $(pwd) != */scripts  || $0 != ./* ]]  ; then
	echo error you must cd to the scripts directory and invoke this script with "./name"
	exit 1
fi
#
#  Extract device file name and mount point from the output of "df" command
set $(df -k . | awk  'NR == 2 { print $0}')
devicefile=$1
mountpoint=$6
name=${mountpoint#/}

#
#  Build grub style device name

string=${devicefile#/dev/}
partition=${string#???}
drive=${string%$partition}
case "$drive" in
	hda) grubdrive="hd0" ;;
	hdb) grubdrive="hd1" ;;
	hdc) grubdrive="hd2" ;;
	hdd) grubdrive="hd3" ;;
	*)
		echo localinstall cannot handle device $drive
		exit 1
		;;
esac
((partition=partition-1))
grubdevice="(${grubdrive},${partition})"
echo devicefile=$devicefile
echo mountpoint=$mountpoint
echo name=$name
echo partition = $partition
echo drive = $drive
echo grubdrive = $grubdrive
echo grubdevice = $grubdevice

#
#  set up the floppy

set -x
mkdosfs -F 32 -c /dev/fd0
[[ ! -d /media/floppy ]]  && mkdir -p /media/floppy
mount -t vfat -o shortname=winnt /dev/fd0 /media/floppy

mkdir -p /media/floppy/boot/grub
cd /media/floppy/boot/grub
cp ${mountpoint}/grub/stage1 .
cp ${mountpoint}/grub/stage2 .
cd ${mountpoint}

#
# rewrite grub.conf to reflect the local partition

sed < ${mountpoint}/grub/grub.conf > /media/floppy/boot/grub/grub.conf \
's/.*root (.*/	root '${grubdevice}'/
s/.*title Boot Octave from.*/	title Boot Octave from '${name}' via floppy built '"$(date +'%B %e, %Y')"'/'

umount /dev/fd0

#  
#  Use grub to install itself on floppy

set -x
${mountpoint}/bin/grub --batch --verbose --device-map=${mountpoint}/grub/device.map << End
root  (fd0)
setup  (fd0)
End
exit 0
Code:
#! /bin/bash


#
#  cdinstall -- install the grub software including the configuration file 
#  from this partition on to a cd. This will create a bootable cd that 
#  can boot the kernels from the cd itself.
#
if [[ $(pwd) != */scripts  || $0 != ./* ]]  ; then
	echo error you must cd to the scripts directory and invoke this script with "./name"
	exit 1
fi
#
#  Extract device file name and mount point from the output of "df" command
set $(df -k . | awk  'NR == 2 { print $0}')
devicefile=$1
mountpoint=$6
name=${mountpoint#/}

#
#  Build grub style device name

string=${devicefile#/dev/}
partition=${string#???}
drive=${string%$partition}
case "$drive" in
	hda) grubdrive="hd0" ;;
	hdb) grubdrive="hd1" ;;
	hdc) grubdrive="hd2" ;;
	hdd) grubdrive="hd3" ;;
	*)
		echo localinstall cannot handle device $drive
		exit 1
		;;
esac
((partition=partition-1))
grubdevice="(${grubdrive},${partition})"
grubdevice="(cd)"
echo devicefile=$devicefile
echo mountpoint=$mountpoint
echo name=$name
echo partition = $partition
echo drive = $drive
echo grubdrive = $grubdrive
echo grubdevice = $grubdevice


set -x
mkdir /tmp/iso
mkdir /tmp/iso/backup
cp -R $mountpoint /tmp/iso/backup
mkdir -p /tmp/iso/boot/grub

cp /mastergrub/src/grub-0.97/stage2/stage2_eltorito /tmp/iso/boot/grub
#cp /mastergrub/grub/grub.conf /tmp/iso/boot/grub
# rewrite grub.conf to reflect the local partition

sed < ${mountpoint}/grub/grub.conf > /tmp/iso/boot/grub/menu.lst \
's/.*root (.*/	root '${grubdevice}'/
s/.*title Boot Octave from.*/	title Boot Octave from cd built '"$(date +'%B %e, %Y')"'/'
#cp /mastergrub/grub/grub.conf /tmp/iso/boot/grub/menu.lst
cp -R /mastergrub/Redhat /tmp/iso
cp -R /mastergrub/Fedora /tmp/iso
cp -R /mastergrub/SuSE /tmp/iso
cp -R /mastergrub/Debian /tmp/iso
cp -R /mastergrub/Scientific /tmp/iso
mkisofs -R -b boot/grub/stage2_eltorito -no-emul-boot -boot-load-size 4 -boot-info-table -o /driveE/grub.iso /tmp/iso
exit 0
Code:
#! /bin/bash
#
#  supermbrbackup --  save disk infrastructure
#  This script backs up the partition structure on hd0.  It also scans the hidden sectors and backs up any
#  non-zero data.  In my case, this is grub stage 1.5.  And naturally, the boot code in the mbr is included.
#  Without this stuff, the disk won't be bootable.   The data is saved on a floppy disk.  Also a shell script
#  to restore the data is included on the floppy.  That script can be run from a bootable cd such as the
#  System Rescue CD.  So this is intended as the first step of a bare metal restore.
# 

#
#  We need some info about the disk (psuedo) geometry
SECT_NUM=63 #### Sectors per cylinder
SECT_LNG=512 ### Bytes per sector

#
#  This was originally a ksh script which was converted to bash.  The original ksh code is still here,
#  prefixed with "##".  
##integer bytes
##set -A bytes abytes
declare -a bytes abytes
typeset -i bytes

#
#  Build a filesystem on the floppy

mkfs -t ext2 -b 1024 -i 1024 -O sparse_super /dev/fd0 2>/dev/null
mkdir -p /media/fd0
mount -t ext2 /dev/fd0 /media/fd0

#
#  The variable called "restore" will contain the entire restore script.  The script will be written out
#  once it is complete.  I wanted to prevent excess i/o on the floppy drive and I expect the script to 
#  be short... so I decided to build it in-core.

total_saved=0
restore="#! /bin/bash"

#
#  Read a specified sector and set up the arrays abytes and bytes with the contents of each byte

function read_sector 
{
	skip=$1
	## dd if=/dev/hda bs=$SECT_LNG skip=$skip count=1 2>/dev/null| od -An -t x1  -w32 -v
	abytes=( $(dd if=/dev/hda bs=$SECT_LNG skip=$skip count=1 2>/dev/null| od -An -t x1  -w32 -v ))
	for((ibyte=0; ibyte < ${#abytes[*]}; ibyte++)) ; do
		bytes[ibyte]="16#${abytes[ibyte]}"
	done
	return 0
}

#
#  Write the sector onto the floppy disk (also update the restore script)

function save_sector
{
	((total_saved++))
	dd if=/dev/hda bs=$SECT_LNG skip=$1 count=1 2>/dev/null of=/media/fd0/sec${1}
	restore="$restore
	dd if=sec${1} bs=$SECT_LNG seek=$1 count=1 of=/dev/hda"
	return 0
}

#
#  Nothing to check.... sector zero is always saved.

echo sector 0 is the MBR
save_sector 0

#
#  Now scan the hidden sectors.  Back them up only if the sectors contains some non-zero data

for((sec=1; sec < $SECT_NUM; sec++)) ; do
	read_sector $sec
	nonzero=0
	for((ibyte=0; ibyte < ${#bytes[*]}; ibyte++)) ; do
		((${bytes[ibyte]})) && nonzero=1
	done
	if ((nonzero)) ; then
		echo sector $sec has non-zero data
		save_sector $sec
	fi
done

##typeset -R2 partition
##typeset -i bytes
##typeset -R11 next
read_sector 0
exstart=0

#
#  Scan the partition table looking for an extended partition.

for ((partition=1; partition < 5; partition++))  ; do
	((s=430 + (partition * 16)))
	status=${abytes[s]}
	type=${abytes[s+4]}
	(( fval=(( (${bytes[s+11]}*256+${bytes[s+10]})*256 + ${bytes[s+9]})*256)+${bytes[s+8]} ))
	(( length=(((${bytes[s+15]}*256+${bytes[s+14]})*256+${bytes[s+13]})*256)+${bytes[s+12]} ))
	((lval=fval+length-1))
	((lval == -1)) && ((lval=0))
	if [[ $type = 0f ]] ; then
		exstart=$fval
	fi
done

#
#  If we found an extended partition, step though the logical's and back up each MBR of each logical
#  drive.
if ((exstart)) ; then
	next=$exstart
	while ((next)) ; do
		read_sector $next
		((s=430 + (1 * 16)))
		type=${abytes[s+4]}
		(( fval=(( (${bytes[s+11]}*256+${bytes[s+10]})*256 + ${bytes[s+9]})*256)+${bytes[s+8]} ))
		(( length=(((${bytes[s+15]}*256+${bytes[s+14]})*256+${bytes[s+13]})*256)+${bytes[s+12]} ))
		((lval=fval+length-1))
		((lval == -1)) && ((lval=0))
		((pstart=fval + next))
		((pstop=lval + next))
		((s=430 + (2 * 16)))
		type=${abytes[s+4]}
		(( fval=(( (${bytes[s+11]}*256+${bytes[s+10]})*256 + ${bytes[s+9]})*256)+${bytes[s+8]} ))
		(( length=(((${bytes[s+15]}*256+${bytes[s+14]})*256+${bytes[s+13]})*256)+${bytes[s+12]} ))
		((lval=fval+length-1))
		((lval == -1)) && ((lval=0))
		if ((length)) ; then
			((nextnext=fval+exstart))
		else
			((nextnext=0))
		fi
		echo "sector $next describes logical partition $partition ($pstart - $pstop)"
		save_sector $next
		((partition=partition+1))
		((next=nextnext))
	done
fi

#
#  Write out the restore script and finish up

echo "$restore" > /media/fd0/restore
chmod 755 /media/fd0/restore
umount /dev/fd0
exit 0
 

Bladwijzers

Thread Tools Zoeken in deze Thread
Zoeken in deze Thread:

Uitgebreid zoeken
Display Modes Beoordeel deze draad
Beoordeel deze draad:

Posting Regels
Jij mag niet Post Nieuwe threads
Jij mag niet na antwoorden
Jij mag niet post attachments
Jij mag niet bewerk uw berichten

BB code is Aan
Smilies zijn Aan
[IMG] code Aan
HTML-code is Uit
Trackbacks zijn Aan
Pingbacks zijn Aan
Refbacks zijn Aan




Alle tijden zijn GMT -4. Het is nu 03:15.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Vertalingen Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
De Unix-en Linux Forums Copyright © 1993-2009. Alle rechten Reserved.Ad Beheer door RedTyger

Content Relevante URL's door vBSEO 3.2.0