The UNIX and Linux Forums  
Hej og Velkommen fra USA til UNIX og Linux Forums! Tak for dit besøg og deltager i vores globale samfund.

Go Back   UNIX og Linux Forums > Top Forums > UNIX for dummyer Spørgsmål & svar > Svar på ofte stillede spørgsmål > Tips og Tutorials
.
google unix.com



Tips og Tutorials Helpful articles fra vores brugere.

Mere UNIX og Linux Forum Emner du måske kan finde Helpful
Tråd Thread Starter Forum Svar Last Post
oktav-db 031008 (Default filial) iBot Software Releases - RSS Nyheder 0 03-12-2008 07:00 PM
oktav-ann 1,0 (Default filial) iBot Software Releases - RSS Nyheder 0 03-10-2008 06:40 PM
Oktav-FLTK 0.7.1 (Default filial) iBot Software Releases - RSS Nyheder 0 02-05-2008 12:10 AM
Oktav 3.0.0 (Default filial) iBot Software Releases - RSS Nyheder 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 Søg denne tråd 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
Beliggenhed: Ashburn, Virginia
Indlæg: 9.119
Oktav --- Min octuple boot laptop

Som jeg lovede i flere tråde, her er nogle noter om, hvordan jeg installeret flere operativsystemer på min laptap. Jeg vil give links til de værktøjer, som jeg fik fra forskellige tredjeparter. Og jeg vil omfatte kildekoden til et par scripts, som jeg skrev.

Indledning
For et par måneder siden den disk på min Inspiron 8.200 stegt ud. Jeg besluttede at tilpasse den med nye eksterne enheder. Jeg fik en 100 GB Seagate drev og en dvd-brænder. At 100 GB drev er monteret i en holder. Det er en stor ting at montere drevet i en transportvirksomhed, men fjerne en skrue og transportøren kan bare kan trækkes ud. Jeg købte et andet luftfartsselskab, og et andet 100 GB drev. Dette giver mig mulighed for at skifte min harddisk, og så jeg kan prøve eksperimenter med lille risiko. Jeg kan fjerne en af mine batterier og installere et andet drev i batteriholderen. Jeg har et diskettedrev til at installere det. Min BIOS understøtter opstart fra en ATA enhed, så jeg kan starte op fra harddisken, CD / DVD-drev eller diskette.

Jeg besluttede at installere så mange OS'er som jeg kunne på det nye setup. Problemet er, at med undtagelse af Linux, alt kræver en primær partition og der er kun 4 primære partitioner. Hvis man er brugt som en kæde af logiske partitioner, der efterlader 3 ikke-linux OS'er. Jeg besluttede at leve med. Der er nogle ekstreme løsninger, der vil give flere ikke-linux OS'er, men de er for ekstreme. Jeg ville NetBSD, Desktop BSD og Solaris 8 ud over, hvad jeg har installeret. Men disse 3 OS'er syntes ikke værd meget ekstreme foranstaltninger. Så jeg afsluttede med:
  • Windows XP
  • Redhat
  • Fedora
  • SuSE
  • Debian
  • Videnskabelige
  • FreeBSD
  • Solaris 10

Værktøj

Jeg brugte flere software-værktøjer til at hjælpe mig med dette projekt.

GRUB
For det første, jeg har brug for en virkelig god bootloader, at jeg forstår helt. GRUB er virkelig det eneste spil i byen. Der er nogle meget stærke bootloader produkter, men uden adgang til kildekoden, er der en grænse for, hvor godt jeg kan forstå dem. GRUB er faktisk meget nemt at forstå, men det er blevet dokumenteret dårligt. Indtil jeg forstod GRUB, forskellige katastrofer gjort mit system unbootable. I hvert tilfælde var jeg i stand til med tiden at opspore præcis, hvad der skete. Det er virkelig ikke længere muligt at gøre mit system unbootable.

Disk Director / True Image
Jeg havde brug for en Partition Manager, og jeg har brugt Partition Magic i fortiden. Men PowerQuest solgt produktet til et andet selskab, og det synes ikke at være godt understøttet i dag. Jeg besluttede at prøve Acronis Disk Director, som er billigere. Det er ikke perfekt, men det fungerede godt nok. Jeg købte også Acronis True Image. Igen ikke perfekt, men det kan helt gendanne systemet på en helt ny bil fra DVD backup. Du kan oprette en brugelig til opstart cd, der har både produkter på det. Dette giver mulighed for backup og gendanner fra fredfyldte disk. Disk Director kommer med en GUI sektor editor, der er nok bedre at dskprobe.

Disk guiden / SeaTools
Seagate har disse værktøjer kan hentes fra deres hjemmeside. Disse er brugelig til opstart CD's, der kan køre diagnostik og skrive nuller over et helt drev blandt forskellige andre opgaver. Jeg vil gerne nul ud et drev, før jeg lave en re-installere (9 timer for 100 GB!). Og det kan gøre ikke-destruktiv test på drevet. Andre producenter har lignende værker.

System Rescue CD
Da jeg havde problemer i løbet af projektet, dette er det værktøj, der fik mig ud af skoven. Det er dybest set en "Live CD" med en masse nyttige værktøjer til rådighed.

Sektor Inspector
Dette er en XP COMAND baseret linje fysiske sektor nytte. Det kan gøre en masse ting, at GUI baseret sektor redaktører ikke kan gøre. Dette er et Microsoft-program, og det er gratis.

grub
Acronis Disk Director Suite 10,0
Acronis True Image 9,0 Hjem
Disk guiden
SeaTools
SystemRescueCd
sektor inspektør

Jeg har skiftet fra dskprobe til Acronis Sector Editor. Men dskprobe er gratis, og det kommer i supportværktøjer pakke på XP-installations-cd'en. Eller du kan downloade Support Tools her. dskprobe kommer med en doc-fil kaldet dskprtrb.doc som jeg syntes var meget hjælpsom. Også dskprobe er en stand-alone værktøj, mens Acronis sektor editor er et sub-værktøj Disk Director.

Installation Notes

Her er nogle noter om, hvad jeg gjorde for at installere os'es. Jeg har ikke bare samle en samling af OS'er og springe lige ind i masse installation. Jeg har teste installationer første til at få erfaring med de enkelte installatør. I hvert fald brugte jeg den "custom" muligheder for at maksimere mit fleksibilitet under installationen. Det betyder, at jeg var nødt til at forstå den enkelte montør ganske godt. Husk, at Master Boot Record har et bord til 4 partitionsposter.

Windows XP
Jeg har installeret XP først på den første primære partition som jeg formateret med NTFS-filsystem. Jeg har installeret Genoprettelseskonsol, og jeg tilføjet en mulighed for at starte i fejlsikret tilstand. Det betyder, at NT bootloader præsenterer en menu ikke ulig grub menuen. Jeg oprettede en E: partition, der bruges FAT32. Dette er mit første logisk partition. Den anden post i partitionstabellen er nu forbruges til at støtte mit streng af logiske partitioner. Denne partition vil indeholde data, filer og Linux vil montere den som / driveE. Dette giver mig mulighed for at flytte filer mellem Linux og XP. På boot tid, ser NT magasin til en fil kaldet hiberfil.sys. Hvis der findes, det er indlæst i hukommelsen og udførelse genoptages. Dette er, hvordan dvale er gennemført. Efter opvågning fra dvaletilstand, er det afgørende, at intet har ændret sig siden dvale begyndte. Selv docking eller frigør en laptop er nok skabe problemer. Jeg vil være opstart via GRUB, og jeg kan ikke garantere, at et andet OS ikke kan komme i gang. Da jeg deler skillevægge mellem OS'er dette ville være en opskrift på katastrofe. Så jeg har deaktiveret dvale.

Hver af de andre OS installation procedurer er parat til at sameksistere med en allerede eksisterende XP instans i den første primære partition. De fleste af dem ville installere en boot-loader, der kunne boot XP eller selv. Se "Fejlsikker boot" artiklen nedenfor for at se, hvorfor dette er ikke et problem.

Linux distributioner
Jeg brugte LVM for hver Linux-distro. Selv / er under LVM, men Linux kan ikke starte op fra LVM, så jeg oprettet en midlertidig / boot partitionen under installation. Lad os tage RedHat som jeg eksempel ... det var det første distro jeg installeret. Jeg har kopieret / boot til / mastergrub / RedHat. Så flyttede jeg / mastergrub / RedHat / grub til / mastergrub / grub. / mastergrub / RedHat / grub blev et symlink til / mastergrub / grub. Og / boot bliver et symlink til / mastergrub / RedHat. Hver distro får sin egen undermappe under / mastergrub og hvert af disse undermapper får en larve symlink peger på / mastergrub / grub. Så alle distros vinden op ved hjælp af samme grub instans. At / boot partition er så bare kasseres.

Jeg brugte en separat / tmp partition og swap-partition putside af LVM. Swap-område er 2 GB og / tmp er 1 GB. Hver Linux-distro bruger samme partitioner. Så i alt bruger jeg 3 GB til / tmp og bytte i stedet for 15 GB. Jeg er i færd med at ændre opstart scripts til at genopbygge / tmp ved opstart. Dette vil betyde, at enhver OS kan bruge swap eller / tmp område til ethvert formål. Det forklarer også, hvorfor / tmp i ext2 snarere end ext3. Der er ingen mening i en log, hvis jeg genopbygge filsystemet ved hver opstart.

RedHat er temmelig gamle, og det er ude af trit med de andre distributioner. Men jeg stadig støder på RedHat anvendes af virksomheder, så jeg ville have en version på min laptop. RedHat benytter LVM version 1 og de andre distros bruge LVM version 2. Jeg valgte Fedora, og gjorde en "vgscan - makenodes". Dette gav mig enhedsfiler for alle de andre distros 'logisk mængder. Jeg kan montere de andre distros, når jeg har brug for. Jeg vil bruge dette til at udvikle en fil niveau sikkerhedskopi for Linux-distributioner. Jeg har også brugt denne til at rette et problem med boot oppe scripts.

Enhver Linux partition er en logisk partition. Dette omfatter Grub partitioner og LVM partitioner. Jeg har en / userdata partition formateret som ext3 som alle Linux-distributioner mount. Jeg har en lille / home (under LVM) i hver distribution, således at den enkelte kan have sit eget nystartede filer, osv. Men de fleste af mine ting vil gå i / userdata. Så hver distro har sin egen LVM partition. Men så er der swap, / tmp, / userdata, og / mastergrub (hver i en separat logisk partition), der anvendes af alle distros til fælles. Og der er / driveE, som de monterer også.

FreeBSD
FreeBSD går i primær partition 3. Jeg plejede Acronis til at pre-tildele den partition, før installationen. FreeBSD skærer op partition INTP stykker, at det forvirrende opfordrer også partitioner. I teorien kan Grub FreeBSD direkte, men jeg kunne ikke få det til at arbejde. Så jeg havde FreeBSD installere sin egen bootloader i den partition, hvilket giver de MBR alene. Så jeg ændret grub.conf at chainloader ind i det. Jeg vil gerne få en direkte Grub arbejder, og jeg planlægger at arbejde på dette. For nu er det godt nok.

Solaris
Jeg har en primær partition venstre og jeg installeret Solaris 10 i det. Meget gerne FreeBSD, Solaris skærer den partition op. Det bruger "skiver", så beskrive stykker. Igen, jeg formålsbestemte den partition, inden man installerer. I sidste øjeblik jeg bemærket, at Sun havde en ny version af Solaris 10 på deres websted. Jeg plejer ikke straks springe til hver ny version, men Sun var gået bort fra deres egen bootloader til at bruge grub. Så jeg downloadet den nyeste Solaris 10. Nå, kan ingen af mine versioner af Grub læs Solaris skiver ... jeg selv hentet den nyeste Grub fra Grub hjemmeside og stadig no go. Solen skal have ændret Grub. Jeg kan skifte til Suns version på et tidspunkt. Men for nu, er mit Grub chainloadering Suns Grub.

Min Final Grub Configuration
Med hver OS, der anvendes Grub, jeg tog et kig på sin grub.conf. Mange gange jeg så en ny teknik, og hvis jeg kunne lide det, jeg har tilføjet det til min taske med tricks. SuSE stærkt modificerede Grub, og jeg kunne ikke finde meget info om deres mods. Der er advarsler, SuSE's mods indført et sikkerhedsproblem. Så jeg vil ikke bruge SuSE version af Grub. Men selv med SuSE, fandt jeg nogle ting at bruge. Min 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
Beliggenhed: Ashburn, Virginia
Indlæg: 9.119
En af hemmelighederne bag succes i en kompleks anlæg som dette er til helt at forstå præcis, hvor alt er på disken. Acronis Disk Director kunne nævne nogle af info, men jeg havde brug for mere. Jeg skrev et værktøj til at tage den info, at Acronis vises, og producere en tabel for mine noter ...

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
Nogle noter om dette ...

MBR, de skjulte sektorer, og EBR's
Master Boot Record (MBR) er den første sektor på disken. Det har den startkode og partitionstabellen i det. Resten af første spor kaldes "den skjulte sektorer". I mit tilfælde er Grub etape 1.5 i det skjulte sektorer. Strukturen i dette første nummer er gentaget for hvert logisk partition. Hver logisk partition har en struktur som en MBR, som den første sektor. Derefter resten af det første spor er ignoreret. Det første nummer står umiddelbart foran en logisk partition, at den beskriver. Microsoft bruger udtrykket "logiske drev", som næsten betyder det samme som "logisk partition". Men ser man nøje på de definitioner, forekommer det mig, at "det logiske drev" \u003d EBR + "spildt sektorer" + "logisk partition". Under alle omstændigheder behøver du MBR og EBR's til at definere partitionslayoutet af et drev. Jeg kan se programmer til at lave en backup af MBR, men de altid ignorere EBR's. Jeg vil fastsætte, at ved at skrive et hjælpeprogram til sikkerhedskopiering MBR plus EBR's. Strickly taler det EBR er en sektor, og det er efterfulgt af nogle spildte sektorer. I mit diagram jeg har snydt lidt og omdefineret EBR at være alle faste sektorer mellem partitioner. Jeg føler, at kortet er "travlt nok", og vil blive endnu sværere at læse med to linjer mellem hver partition.


Cylinder Alignment
Bemærk, hvordan partitioner er generelt tilpasset cylinder grænser. Undtagelsen er / mastergrub og dette skyldes en fejl i Acronis Disk Director. Jeg havde oprindeligt / mastergrub på ,5 MB, der er for stor. Jeg skrumpet ind, men jeg gjorde det frie rum møde den partition, snarere end efter det. (Dette vil jeg blande det frie rum ned og tilføje den til min XP-partition.) Når jeg producerede dette diagram, jeg bemærkede, at / mastergrub var ikke justeret korrekt. Dette affald nogle flere flasker, men det ser ud til at have nogle konsekvenser. Den eneste potentielle problemer, som jeg kan tænke på ... Nogle programmer forsøger at gætte disken geometri .... med forbløffende succes. De kan gøre dette ved at kigge på tilpasning af partitioner. Nogle programmer (f.eks Acronis selv) kan finde og gendanne slettede partitioner. Dette kan mislykkes, hvis den partition, var misvisende at begynde med. Jeg bemærker, at Acronis har en "hurtig" og "langsom" søg slettede partitioner (med "langsom" valgmulighed er mere robust), og dette kan skubbe dig ind i "langsom" valgmulighed.

Dette opmuntrede mig til at eksperimentere med skillevægge, der var virkelig logisk, men også havde en post i fjerde MBR slot, som en primær partition. Min idé var at skifte en af flere logicals i den primære slot, installere et operativsystem, ødelægge den primære indrejse, og boot fra den logiske partition. Det virkede ikke særlig godt. En smart bootloader kunne skifte en partition fra logisk med den primære og derefter starte den op, men jeg havde ikke lyst til at skrive en bootloader.

Jeg bemærker, at hver logisk partition er spilder det meste af en fuld spor. Jeg overvejer misaligning alle de partitioner til at inddrive den plads. Der er ikke meget plads, der skal tilbagebetales, og det kan ikke være umagen værd. Også Acronis har ikke nok kontrol til at tillade mig at prøve. Jeg tror, at qtparted kan gøre dette selv.

Solaris Changed Typer
Solaris 10 er bruger BF som sin partition type og Solasis 10 installationsprogrammet ikke genkender partition med en type af 82 mere.

Jeg ønskede ikke at komme ind på start og afslutning LBA's for EBR's. Scriptet bør være i stand til at beregne dem fra den foregående og følgende angivelser. Denne øgede kompleksitet af scriptet, men i det lange løb gemt indsats. Og her er kildekoden ...
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
Beliggenhed: Ashburn, Virginia
Indlæg: 9.119
Fejlsikker Opstart

Den / mastergrub partition har grub software og kernerne for hvert installeret Linux-distro. Grub fase 1 er bosat i Master Boot Record (MBR), som er den første sektor på disken. Oftere end ikke, hver OS installere ville omskrive MBR at pege på sin egen kopi af GRUB eller anden bootloader. Nogle gange vil jeg rode rundt grub software / mastergrub og bryde den. Ud over at installere grub fase 1 i MBR, kan fase 1 skal installeres i den første sektor af denne partition. Og så nogle andre bootloader kan chainloader ind i det. Jeg skrev min egen installation scripts. De er:

mbrinstall
Dette script blot installerer grub fase 1 i MBR.

localinstall
Scriptet installerer grub fase 1 i den lokale partition. (/ mastergrub for nu.) Så er bruger dd at få en kopi af den første sektor af den lokale partition. Dette er sat i en fil i / driveE filsystem. Erindre, at / diveE er et FAT32-filsystem, der anvendes til at videregive filer mellem Linux og XP. Windows XP vil indhente sektoren og indarbejde det i XP boot sekvensen. I XP min boot.ini fil er noget i retning af:
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
Så nu, hvis jeg kan starte XP, kan jeg bruge XP til at overdrage kontrollen til at rydde i / mastergrub. Dette er en stor hjælp, da de fleste OS installere scripts installere en boot-loader med muligheden for at starte Windows. Så jeg kan bruge denne mulighed, begynder at starte XP, men vælg menupunktet til at starte / mastergrub. Så jeg starte en distro, og køre mbrinstall scriptet er nævnt ovenfor.

floppyinstall
Opstart af XP vil ikke arbejde, hvis jeg har skadet grub software / mastergrub. Jeg har ikke plads på en diskette for disse kerner, men jeg har aldrig brudt mig kerner. Jeg let have plads på en diskette til grub, herunder grub.conf fil. Dette script opretter sådan en diskette. Så jeg kan starte den diskette og starte systemet på den måde.

cdinstall
Hvad nu, hvis jeg helt mister / mastergrub? cdinstall skaber en cd, som er en komplet backup af / mastergrub. Desuden er det en startbar cd, der kan starte en af de distros uden brug / mastergrub på alle. Dette script brug for et stykke Grub hedder stage2_eltorito som ikke blev leveret med en version af Grub, at jeg havde. Så jeg downloadet og kompileret kildekode fra Grub hjemmeside.

/backupgrub og / testgrub
Faktisk alle de ovenstående scripts har benn udvidet til at støtte / backupgrub. Dette er blot en anden partition, som er en kopi af / mastergrub. Nu og da, jeg bruger rsync til at kopiere filerne over. Så jeg cd ind / backupgrub og køre localinstall script. Hvis ét af disse scripts kører, er det tal ud af, hvad partition det kører i. grub.conf fil er justeret for at afspejle den aktuelle partition (eller i tilfælde af cdinstall, justeret for at starte op fra cd). Jeg har også skabt en / testgrub partition, så jeg ville stoppe med at køre farlige eksperimenter i en kritisk partition.

supermbrbackup
Et antal værktøjer findes til backup og gendannelse MBR. Dette omfatter startkode og partitionstabellen. Sagen er imidlertid, at af mine partitioner er beskrevet i Ekstra Boot Records spredt ud over hele min disk. Jeg ønskede et hjælpeprogram, der vil genskabe alle mine partitioner (tom selvfølgelig) på en helt ny disk. Og mens jeg var på det, jeg havde det scanne de uudnyttede sektorer efter MBR, der er, hvor GRUB etape 1,5 bosat. Så dette sikkerhedskopierer alt bortset fra indholdet af partitioner. Sikkerhedskopien er skrevet til en diskette sammen med et script til at genoprette dem. Dette script kan køres efter opstart System Rescue CD. Min hensigt var, at dette ville være det første skridt i en bart metal genoprette. Men det viser sig, at jeg ikke havde brug for det.

Bare Metal Restore
Dette er, hvad der sker, hvis jeg mister hele harddisken. Dette er det ultimative inden for sikre, at jeg kan starte op. Jeg brugte Acronis True Image at lave en komplet sikkerhedskopi af mine drev. Det understøtter ikke Linux LVM eller FreeBSD og Solaris skiver. Men det kan gøre en sektor for sektor backup af disse partitioner. Efter den backup færdig, jeg erstattet min harddisk og brugt min brugelig SeaTools disk til nul det ud (9 timer med en 100 GB harddisk). Så jeg opstartet min Acronis boot disk, og fodres det backup DVD's. Det genskabte hele mit system.

Jeg brugte en Seagate værktøj til at skrive nuller til hele disken, før jeg begyndte. Det betyder, at Linux LVM og FreeBSD / Solaris-partitioner sandsynligvis havde en masse nulstilles sektorer i uudnyttet plads. Dette hjælper kompressionen rutine i Acronis sektor for sektor backup gøre et godt stykke arbejde.

Jeg har stadig brug for en fil niveau backup for Linux / FreeBSD / Solaris. Jeg vil arbejde på det.
  #4 (permalink)  
Old 10-22-2006
Perderabo's Avatar
Perderabo Perderabo is offline Forum Staff  
Unix Daemon
  
 

Join Date: Aug 2001
Beliggenhed: Ashburn, Virginia
Indlæg: 9.119
Her er kildekoden til de scripts, der er nævnt ovenfor.

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
 

Bogmærker

Thread Tools Søg denne tråd
Søg denne tråd:

Avanceret søgning
Display Modes Bedøm denne tråd
Bedøm denne tråd:

Udstationering Regler
Du kan ikke post nye tråde
Du kan ikke post svar
Du kan ikke post vedhæftede filer
Du kan ikke redigere dine indlæg

BB-kode er
Smilies er
[IMG] koden er
HTML-koden er Slukket
Trackbacks er
Pingbacks er
Refbacks er




Alle tidspunkter er GMT -4. Den tid er nu 07:21 AM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Oversættelser Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX og Linux Forums Content Copyright © 1993-2009. Alle rettigheder Reserved.Ad Management ved RedTyger

Content Relevant webadresser ved vBSEO 3.2.0