The UNIX and Linux Forums  
Bonjour et bienvenu par les États-Unis à la UNIX et Linux Forums! Merci de votre visite et vous joindre à notre communauté mondiale.

Go Back   Les systèmes UNIX et Linux Forums > Top Forums > UNIX pour les nuls Questions et réponses > Réponses aux questions fréquemment posées > Conseils et Didacticiels
.
google unix.com



Conseils et Didacticiels Des articles de nos utilisateurs.

Plus d'UNIX et Linux Forum Sujets Vous trouverez peut-être utile
Fil Thread Starter Forum Réponses Last Post
octave-db 031008 (Default branch) iBot Logiciel de presse - RSS News 0 03-12-2008 07:00 PM
octave-ann 1,0 (Default branch) iBot Logiciel de presse - RSS News 0 03-10-2008 06:40 PM
Octave-FLTK 0.7.1 (Default branch) iBot Logiciel de presse - RSS News 0 02-05-2008 12:10 AM
Octave 3.0.0 (Default branch) iBot Logiciel de presse - RSS News 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 Recherche sur ce Thread Rate Thread Modes d'affichage
  #1 (permalink)  
Old 10-07-2006
Perderabo's Avatar
Perderabo Perderabo is offline Forum Staff  
Unix Daemon
  
 

Join Date: Aug 2001
Location: Ashburn, Virginia
Posts: 9119
Octave --- Octuple boot Mon ordinateur portable

Comme je l'ai promis à plusieurs threads, voici quelques notes sur la façon dont j'ai installé plusieurs systèmes d'exploitation sur mon portable. Je vais donner les liens vers les outils que j'ai obtenues de diverses tierces parties. Et je vais inclure le code source de quelques scripts que j'ai écrit.

Introduction
Il ya quelques mois, le disque dur sur mon Inspiron 8200 à frites. J'ai décidé de le personnaliser avec de nouveaux périphériques. J'ai reçu un disque Seagate de 100 Go et un graveur de DVD. C'est dur de 100 Go est monté dans un support. Il est un gros problème pour monter le disque dans un transporteur, mais enlever une vis et le transporteur peut être simplement retiré. J'ai acheté un second transporteur et une deuxième de 100 Go disque. Cela me permet de changer mon disque dur et si je peux essayer des expériences avec peu de risques. Je peux supprimer l'une de mes batteries et installer un autre lecteur dans la fente de la batterie. J'ai un lecteur de disquette pour installer là-bas. Mon BIOS supporte le démarrage à partir de n'importe quel périphérique ATA pour que je puisse démarrer à partir du disque dur, le lecteur de CD / DVD ou la disquette.

J'ai décidé d'installer autant d'OS que je pouvais sur la nouvelle configuration. Le problème est que, à l'exception de Linux, tout exige une partition primaire et il n'ya que 4 partitions primaires. Si l'un est utilisé comme une chaîne de partitions logiques, qui laisse 3 non-linux OS. J'ai décidé de vivre avec cela. Il ya des solutions extrêmes qui permettrait à davantage de non-linux OS, mais ils sont trop extrêmes. Je voulais NetBSD, Desktop BSD et Solaris 8, en plus de ce que j'ai fait installer. Mais ces 3 OS ne semble pas très utile de mesures extrêmes. J'ai donc liquidé avec:
  • Windows XP
  • Redhat
  • Fedora
  • SuSE
  • Debian
  • Scientifique
  • FreeBSD
  • Solaris 10

Outils

J'ai utilisé plusieurs outils logiciels pour m'aider avec ce projet.

GRUB
Tout d'abord, j'ai besoin d'un bon chargeur de démarrage que je comprends complètement. GRUB est vraiment le seul jeu dans la ville. Il existe des produits d'amorçage très puissant, mais sans accès au code source, il ya une limite à la façon dont je peux les comprendre. GRUB est très facile à comprendre, mais il a été mal documentée. Jusqu'à ce que j'ai compris GRUB, diverses catastrophes rendu mon système ne démarre. Dans chaque cas, j'ai pu finalement suivre exactement ce qui s'est passé. Il n'est plus vraiment possible de rendre mon système ne démarre.

Disk Director / True Image
J'avais besoin d'un gestionnaire de partition, et j'ai utilisé Partition Magic dans le passé. Mais PowerQuest vendu le produit à une autre société, et il ne semble pas être bien supporté aujourd'hui. J'ai décidé d'essayer Acronis Disk Director, qui est moins cher. Il n'est pas parfait, mais il a travaillé suffisamment. J'ai également acheté Acronis True Image. Encore une fois n'est pas parfait, mais il peut restaurer complètement le système à un tout nouveau lecteur de DVD de sauvegarde. Vous pouvez créer un cd bootable qui a la fois des produits sur lui. Cela permet des sauvegardes et des restaurations à partir d'un disque de repos. Réalisateur de disque est livré avec un éditeur d'interface graphique du secteur est sans doute mieux que dskprobe.

Disk Wizard / Seatools
Seagate a ces utilitaires disponibles pour téléchargement à partir de leur site. Ce sont des CD de démarrage qui peut fonctionner de diagnostics et d'écrire des zéros sur l'ensemble d'une route entre les différentes autres tâches. Je me plais à zéro sur un disque avant de faire une ré-installation (9 heures pour 100 Go!). Et il peut faire des essais non destructifs sur le lecteur. D'autres constructeurs ont des services publics.

System Rescue CD
Quand j'ai eu du mal au cours du projet, c'est l'outil qui m'a sorti du bois. Il s'agit essentiellement d'un "Live CD", avec beaucoup d'outils disponibles.

Secteur de l'inspecteur
Il s'agit d'une ligne de XP COMAND secteur physique utilité. Il peut faire beaucoup de choses que l'interface graphique secteur éditeurs ne peuvent pas faire. Il s'agit d'un programme de Microsoft et il est gratuit.

grub
Acronis Disk Director Suite 10.0
Acronis True Image 9.0 Home
Disk Wizard
Seatools
SystemRescueCd
secteur de l'inspecteur

J'ai passé du dskprobe Acronis Secteur de l'éditeur. Mais dskprobe est libre et il vient dans le paquet d'outils de soutien sur le CD d'installation XP. Ou vous pouvez télécharger les outils de support ici. dskprobe est livré avec un fichier appelé dskprtrb.doc doc que j'ai trouvé très utile. Aussi dskprobe est un stand-alone utilité alors que le secteur Acronis est un éditeur de sous-outil de Disk Director.

Notes d'installation

Voici quelques notes sur ce que j'ai fait pour installer l'OS. Je n'ai pas seulement de recueillir un ensemble d'OS et de sauter directement dans la masse installation. J'ai fait des installations d'essai d'abord acquérir de l'expérience à chaque installation. Dans tous les cas, j'ai utilisé la "coutume" options afin de maximiser mon flexibilité lors de l'installation. Cela signifie que je devais comprendre chaque installation plutôt bien. Rappelez-vous que le Master Boot Record a une table pour 4 entrées de partition.

Windows XP
J'ai installé XP d'abord sur la première partition que j'ai formaté avec un système de fichier NTFS. J'ai installé la console de récupération et j'ai ajouté une option pour démarrer en mode sans échec. Cela signifie que le chargeur de démarrage NT présente pas un menu à la différence du menu grub. J'ai créé un E: qui a utilisé la partition FAT32. Il s'agit de ma première partition logique. La seconde entrée de la table de partition est maintenant consommé à l'appui de ma chaîne de partitions logiques. Cette partition contient les fichiers de données et Linux vont le monter en / driveE. Cela me permet de me déplacer des fichiers entre Linux et Windows XP. Au moment du démarrage, le chargeur NT recherche un fichier nommé hiberfil.sys. S'il est trouvé, il est chargé en mémoire et l'exécution reprend. C'est ainsi que la mise en veille prolongée est mis en œuvre. Au réveil de l'hibernation, il est essentiel que rien n'a changé depuis la mise en veille prolongée a commencé. Même l'accostage ou l'appareillage est un ordinateur portable est assez causer des problèmes. Je serai le démarrage via grub et je ne peux pas garantir que l'autre OS peut ne pas démarrer. Depuis que je suis partage entre les partitions de l'OS ce serait une recette pour un désastre. Donc, j'ai désactivé la mise en veille prolongée.

Chacune des procédures d'installation d'autres OS est prête à co-exister avec un pré-existant XP exemple dans la première partition primaire. La plupart d'entre eux l'installation d'un chargeur d'amorçage qui peut démarrer XP ou elle-même. Voir le «failsafe boot» l'article ci-dessous pour voir pourquoi ce n'est pas un problème.

Linux Distros
J'ai utilisé LVM pour chaque distribution Linux. Even / sous LVM, mais Linux ne peut pas démarrer à partir de LVM, donc j'ai créé un temporaire partition / boot lors de l'installation. Prenons comme RedHat suis exemple ... il a été la première distribution que j'ai installé. J'ai copié / boot sur / mastergrub / RedHat. Puis, j'ai déménagé / mastergrub / RedHat / grub dans / mastergrub / grub. / mastergrub / RedHat / grub est devenu un lien symbolique vers / mastergrub / grub. Et / boot est un lien symbolique vers / mastergrub / RedHat. Chaque distribution possède son propre sous-répertoire sous / mastergrub et chacun de ces sous-répertoires est un lien symbolique pointant vers grub / mastergrub / grub. Ainsi, l'ensemble des distributions de liquidation en utilisant le même exemple grub. Cette partition / boot est juste jeté.

J'ai utilisé un / tmp et swap partition partition putside de LVM. Le swap est 2 Go et / tmp est de 1 GB. Chaque distribution Linux utilise les mêmes partitions. Donc, au total, je utiliser 3 Go pour / tmp et swap au lieu de 15 GB. Je suis en train de modifier les scripts de démarrage à reconstruire le répertoire / tmp lors du démarrage. Cela signifie que tous les systèmes d'exploitation peuvent utiliser le swap et / tmp zone à n'importe quelle fin. Il explique également pourquoi le répertoire / tmp en ext2 plutôt que ext3. Il n'y a pas de point dans un journal, si je reconstruire le système de fichiers à chaque démarrage.

RedHat est assez vieux et il est en décalage avec les autres distributions. Mais je rencontre RedHat déployés par les entreprises afin que je voulais une version sur mon ordinateur portable. RedHat utilise LVM version 1 et les autres distributions utiliser LVM version 2. J'ai choisi Fedora, et a fait un "vgscan - makenodes". Cela m'a donné les fichiers de périphériques pour tous les autres distributions "volumes logiques. Je peux monter les autres distributions quand j'ai besoin. Je vais l'utiliser pour développer un fichier de sauvegarde pour le niveau de distributions Linux. J'ai également utilisé ce pour corriger un problème avec les scripts de démarrage.

Chaque partition Linux est une partition logique. Cela inclut les partitions Grub et LVM partitions. J'ai un / userdata partition formatée en ext3 laquelle toutes les distributions Linux de montage. J'ai un petit / home (sous LVM) dans chaque distribution de sorte que chacun puisse avoir ses propres fichiers de démarrage, etc Mais la plupart de mes affaires vont dans / userdata. Ainsi, chaque distribution a sa propre partition LVM. Mais alors il ya de swap, / tmp, / userdata, et / mastergrub (chacun dans une partition logique) utilisé par toutes les distributions en commun. Et il est / driveE dont ils monter aussi.

FreeBSD
FreeBSD passe en partition primaire 3. J'ai utilisé Acronis à pré-allouer la partition avant l'installation. FreeBSD taille de la partition INTP pièces qu'il appelle également à confusion partitions. En théorie, Grub peut démarrer FreeBSD directement, mais je n'ai pas pu obtenir que de travailler. J'ai donc installer FreeBSD son propre chargeur de démarrage dans la partition, laissant ainsi le MBR seul. Ensuite, j'ai modifié pour grub.conf chainloader en elle. Je voudrais obtenir un travail de démarrage Grub et je prévois de travailler à ce projet. Pour l'instant, il est assez bon.

Solaris
J'ai une partition principale à gauche et je l'ai installé Solaris 10 dans celle-ci. Tout comme FreeBSD, Solaris sculpte la partition en place. Il utilise des "tranches" pour décrire les pièces. Encore une fois, je preallocated la partition avant de faire l'installation. Au cours de la dernière minute, j'ai remarqué que Sun a une nouvelle version de Solaris 10 sur leur site. Je n'ai pas l'habitude de sauter instantanément à chaque nouvelle version, mais Sun a changé à partir de leurs propres d'amorçage à l'aide de grub. Donc j'ai téléchargé la dernière version de Solaris 10. Eh bien, aucune de mes versions de GRUB peut lire les tranches Solaris ... J'ai téléchargé la dernière Grub Grub de la page d'accueil et toujours pas de faire. Dimanche Grub doit être modifié. Je mai passer à la version de dimanche à un certain point. Mais pour l'instant, mon Grub est chainloadering Sun Grub.

Ma configuration finale Grub
Pour chaque système d'exploitation utilisé Grub, j'ai pris un coup d'oeil à sa grub.conf. Plusieurs fois, j'ai vu une nouvelle technique, et, si j'ai aimé, j'ai ajouté à mon sac de tricks. SuSE Grub fortement modifiées et je ne pouvais pas trouver beaucoup d'infos sur les mods. Il ya des avertissements de mods que SuSE a présenté un problème de sécurité. Je vais donc pas utiliser la version SuSE de Grub. Mais même avec SuSE, j'ai trouvé des choses à utiliser. Mon 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
Location: Ashburn, Virginia
Posts: 9119
Un des secrets du succès dans une installation complexe, comme cela est de comprendre exactement où tout est sur le disque. Acronis disque pourrait dresser une liste de directeur de l'info, mais j'ai besoin de plus. J'ai écrit un outil pour prendre les informations qui s'affichent Acronis et de produire un tableau de mes notes ...

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
Quelques notes sur le ...

MBR, les secteurs cachés et de la CDE
Le Master Boot Record (MBR) est le premier secteur du disque. Il a le code de démarrage et la table de partition en elle. Le reste de la première piste est appelé «le secteur caché". Dans mon cas, Grub étape 1.5 est caché dans les secteurs. La structure de cette première piste est dupliqué pour chaque partition logique. Chaque partition logique dispose d'une structure comme un MBR comme le premier secteur. Ensuite, le reste de la première piste est ignoré. Cette première piste précède immédiatement la partition logique qu'il décrit. Microsoft utilise le terme "lecteur logique", qui signifie presque la même chose que "logical partition". Mais, d'examiner les définitions, il me semble que "lecteur logique" \u003d CDE + "gaspillage des secteurs" + "partition logique". Dans tous les cas, vous avez besoin du MBR et de la CDE pour définir la mise en page de la partition d'un disque. Je vois des programmes visant à sauvegarder le MBR, mais ils ont toujours ignorer la Charte de l'. Je vais corriger cela en écrivant un utilitaire de sauvegarde le MBR et la CDE's. Strickly parlant de la CDE est un secteur et elle est suivie par certains secteurs de gaspillage. Dans mon tableau, j'ai triché un peu et de redéfinition de la Charte à l'ensemble des frais généraux entre secteurs partitions. Je pense que la carte est "assez occupé" et serait encore plus difficile à lire avec deux lignes entre chaque partition.


Cylindre Alignement
Remarquez comment les partitions sont généralement alignés sur les bouteilles de frontières. L'exception est / mastergrub et cela est dû à un bogue dans Acronis Disk Director. Je l'origine / mastergrub à ,5 MB qui est trop grand. J'ai hésité, mais j'ai fait de l'espace libre devant la partition plutôt que d'après elle. (Cela me laisse l'espace libre shuffle et l'ajouter à ma partition XP.) Lorsque j'ai réalisé ce tableau, j'ai noté que / mastergrub n'était pas aligné correctement. Cette déchets un peu plus de cylindres, mais il semble avoir peu de conséquences. Le seul problème potentiel que je pense de ... Certains programmes d'essayer de deviner le disque avec la géométrie .... incroyable succès. Ils pourraient le faire en regardant l'alignement des partitions. Certains programmes (comme Acronis lui-même) peut localiser et restaurer des partitions supprimées. Cela peut échouer si la partition a été mal au début. Je remarque que Acronis a un "rapide" et "lent" de recherche pour supprimer des partitions (avec le "slow" option étant plus robuste), ce qui pourrait vous pousser dans le "slow" option.

Cela m'a encouragé à expérimenter avec des partitions qui ont été vraiment logique, mais a aussi une entrée dans le quatrième MBR slot comme une partition primaire. Mon idée était de passer l'une de plusieurs logicals dans le premier emplacement, installer un système d'exploitation, de détruire la première entrée, et de démarrer à partir de la partition logique. Cela ne fonctionne pas très bien. Une puce pourrait passer de démarrage d'une partition de logique à l'enseignement primaire et ensuite le démarrer, mais je ne voulais pas écrire un chargeur de démarrage.

Je remarque que chaque partition logique est de perdre plus d'un suivi. Je suis misaligning examiner toutes les partitions pour récupérer cet espace. Il n'y a pas beaucoup d'espace pour être récupérés et ce mai pas être en valeur l'effort. Aussi Acronis ne possède pas assez de contrôle pour me permettre de juger. Je crois que QTParted peut le faire cependant.

Solaris changé Types
Solaris 10 est BF utilisant comme type de partition et de la Solasis 10 installateur ne reconnaît pas la partition avec un type de 82 plus.

Je ne voulais pas entrer dans le début et la fin de la LBA pour la CDE's. Le script devrait être capable de les calculer à partir de la précédente et suivantes. Cette augmentation de la complexité du scénario, mais, à long terme, sauvés effort. Et voici le code source ...
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
Location: Ashburn, Virginia
Posts: 9119
Failsafe Démarrer

Le / la partition a mastergrub grub logiciels et les amandes pour chaque distribution Linux installée. Grub étape 1 réside dans le Master Boot Record (MBR), qui est le premier secteur du disque. Le plus souvent, d'installer chaque système d'exploitation de réécrire le MBR au point de sa propre copie de grub ou un autre chargeur de démarrage. Parfois, je violon autour du logiciel dans grub / mastergrub et de le briser. En plus d'installer grub phase 1 dans le MBR, étape 1 peut être installé dans le premier secteur de cette partition. Et puis une autre chargeur de démarrage, il peut en chainloader. J'ai écrit mes propres scripts d'installation. Ils sont:

mbrinstall
Ce script installe grub simplement l'étape 1 dans le MBR.

localinstall
Ce script installe grub étape 1 dans la partition. (/ mastergrub pour l'instant.) Ensuite utilise dd pour obtenir une copie du premier secteur de la partition. Ceci est mis dans un fichier dans / driveE système de fichiers. Rappelons que / diveE un système de fichiers FAT32 est utilisé pour transmettre des fichiers entre linux et XP. Windows XP obtiendrez le secteur et l'intégrer dans la séquence de démarrage XP. Dans mon fichier boot.ini XP est quelque chose comme:
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
Alors maintenant, si je peux boot XP, je peux utiliser XP pour transférer le contrôle à grub dans / mastergrub. Il s'agit d'une grande aide car la plupart des scripts d'installation OS installer un chargeur de démarrage avec une option de démarrage Windows. Je peux donc utiliser cette option, à commencer boot XP, mais choisissez l'option de menu de boot / mastergrub. Puis-je démarrer une distribution et d'exécuter le script ci-dessus mbrinstall.

floppyinstall
Amorcer à partir de XP ne fonctionne pas si j'ai endommagé le logiciel dans grub / mastergrub. Je n'ai pas de place sur une disquette pour les amandes, mais je n'ai jamais cassé mes noyaux. Je avoir de la place facilement sur une disquette de grub, y compris le fichier grub.conf. Ce script crée une telle disquette. Ensuite je peux la disquette de démarrage et démarrer le système de cette façon.

cdinstall
Que faire si je suis entièrement d'perdent / mastergrub? cdinstall crée un CD qui est une sauvegarde complète de / mastergrub. En outre, il est un CD bootable qui permet de démarrer l'une des distributions sans l'aide de / mastergrub à tous. Ce script a besoin d'un morceau de Grub appelé stage2_eltorito qui n'a pas été fourni avec une version de Grub que j'avais. Donc j'ai téléchargé et compilé le code source de la page d'accueil de Grub.

/backupgrub et / testgrub
En fait, tous ces scripts ont benn étendu à l'appui / backupgrub. C'est tout simplement une autre partition qui est une copie de / mastergrub. De temps en temps, je utiliser rsync pour copier les fichiers sur. Puis, j'ai en cd / backupgrub et exécuter le script localinstall. Chaque fois que l'un de ces scripts fonctionne, elle est ce que la partition, il est en cours d'exécution in Le fichier grub.conf est ajusté pour tenir compte de la partition (ou dans le cas de cdinstall, ajusté pour démarrer à partir du cd). J'ai également créé un / testgrub partition pour que je arrêter des expériences dangereuses dans une partition.

supermbrbackup
Un certain nombre d'utilitaires existent pour sauvegarder et restaurer le MBR. Cela comprend le code de démarrage et la table de partition. La chose est que de mes partitions sont décrites à l'Extended Boot Records éparpillés sur mon disque. Je voulais un utilitaire qui permettrait de recréer de toutes mes partitions (vide bien sûr) sur un tout nouveau disque. Et pendant que j'étais à lui, j'ai eu, il scan les secteurs non utilisés après le MBR qui est le lieu où réside GRUB étape 1.5. Ainsi, cette sauvegarde tout, sauf le contenu des partitions. La sauvegarde est écrite sur une disquette avec un script pour les restaurer. Ce script peut être lancé après l'amorçage du système Rescue CD. Mon intention était que ce serait la première étape d'un métal nu restaurer. Mais il s'avère que je ne l'ai pas besoin.

Bare Metal Restore
C'est ce qui se passe si je perds tout le disque dur. C'est le summum en veillant à ce que je peux démarrer. J'ai utilisé Acronis True Image pour faire une sauvegarde complète de mon disque. Il ne supporte pas Linux LVM, ni tranches FreeBSD et Solaris. Mais il peut le faire secteur par secteur de la sauvegarde de ces partitions. Une fois la sauvegarde terminée, j'ai remplacé mon disque dur et utilisé mon disque bootable Seatools à zéro it out (9 heures avec un disque dur de 100 Go). Ensuite, j'ai démarré mon Acronis disque de démarrage et d'alimentation de la sauvegarde de DVD. Il recréé mon système tout entier.

J'ai utilisé un utilitaire de Seagate pour écrire des zéros à l'intégralité du disque avant de commencer. Cela signifie que le LVM Linux et FreeBSD / Solaris partitions probablement eu beaucoup de zéro dans les secteurs de l'espace inutilisé. Cela permet la compression de routine dans la Acronis secteur par secteur sauvegarde faire un bon travail.

J'ai toujours besoin d'un niveau de sauvegarde des fichiers pour Linux / FreeBSD / Solaris. Je vais travailler sur cela.
  #4 (permalink)  
Old 10-22-2006
Perderabo's Avatar
Perderabo Perderabo is offline Forum Staff  
Unix Daemon
  
 

Join Date: Aug 2001
Location: Ashburn, Virginia
Posts: 9119
Voici le code source pour les scripts mentionnés ci-dessus.

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
 

Bookmarks

Thread Tools Recherche sur ce Thread
Recherche sur ce Thread:

Recherche avancée
Modes d'affichage Rate this thread
Rate this thread:

Règles de messages
Tu mai pas de nouvelles discussions: nonoui
Tu mai pas envoyer des réponses:
Tu mai pas envoyer des pièces jointes
Tu mai pas modifier vos messages

BB code est Sur
Smilies sont Sur
[IMG] code est Sur
Le code HTML est Hors tension
Trackbacks sont Sur
Pingbacks sont Sur
Refbacks sont Sur




Toutes les heures sont au format GMT -4. Le temps est maintenant 07:19 PM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Traductions Langue Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
Les systèmes UNIX et Linux Forums Content Copyright © 1993-2009. Tous droits Reserved.Ad de gestion par RedTyger

Content Relevant URLs par vBSEO 3.2.0