баккап/восстановление разбивки hdd и т.п.

Софт для классических Amiga. AmigaOS 1.x-3.9, Morphos 1.x

Модераторы: striimii, Vinnny

баккап/восстановление разбивки hdd и т.п.

Сообщение easy_john 12 янв 2009, 19:52

Привык я, что на пц под линухом я всегда могу сделать
dd if=/dev/hda bs=512 count=63 >filename
и у меня будет баккап всего заголовка винта: мбр, партишен тейбл, бутлоадер. Ну и потом с любого лайвсиди я смогу загрузиться и вернуть все обратно, даже если что-то затерло партишены, бутлоадер слетел или еще что.
А можно ли как-то так же загрузчик/партишены (рдб?) баккапить на амиге? А то мало-ли рука промахнется и я там затру или поменяю позицию раздела случайно. Ну или еще что случиться с винтом. А то было уже один раз, вставил винт амижный в пц, там винда что-то на него записала и все, разбивки нет. Данные то на винте наверняка не пострадали, но без партишенов их восстанавливать сложно.
Последний раз редактировалось easy_john 12 янв 2009, 21:05, всего редактировалось 1 раз.
PegasosII G4 1.0/1Gb/80Gb/Ati 9200/MorphOS unreg/Debian
a4000/PPC 233mhz/68060 50mhz/128mb/cv ppc/toccata/x-surf/kickflash/indivision/AOS3.9-4.0
a1200/PPC 200mhz/68040 25mhz/256mb/bv ppc/delfina/wifi/indivision sd+ff/AOS 3.9-4.0
a600/68000 7mhz/8mb fast/wifi/AOS 3.0
Аватара пользователя
easy_john
Менеджер
Менеджер
 
Сообщения: 4296
Зарегистрирован: 03 мар 2006, 15:24
Откуда: SPb

Re: баккап/восстановление разбивки/и т.п.

Сообщение anny 12 янв 2009, 20:29

Так же как на линуксе - хз, скорее всего нет. Но можно посмотреть в сторону GeekGadget софта (порты юниксовых утилей, я даже как то XWindow запускал у себя (т.е. прямо в окне WB) ). Возможно там есть все эти binutilsы и dd и тд. Если же нет, то есть конрктено проги по сохранению rdb в файл, по записи rdb из файла, по изменению нужного параметра в rdb (например я юзал одну из, чтобы менять boot priority в rdb. Т.е. у меня на амиге было одновременно 2 видяхи. Одна bvision, а вторая mediator/voodoo3. Для каждой видяхи была своя партиция system. И когда мне надо было грузится или с одной, или с другой, без прибегания к 2м кнопкам при перезагрузке, а в шеле вбивал нечто типа: bootchange hd0=1 hd1=0). Именно названий конкретных я сейчас не вспомню, но вот если зайти на аминет опятьже, и зделать поиск по слову RDB, то есть ReadRDB.lha, в ридми которого:

Can read an RDB (Rigid Disk Block) and save it to a file, as for backup purpose, and write it back later on the hard disk. Gives also the state of the reselection flag and all of rdb_Flags. English and French documentation

Возможно ее я и юзал. Но в целом просто пробовать надо то что понравится. Вариантов даж на аминете дофига.
anny
Беспардонный Амигофлуд
Беспардонный Амигофлуд
 
Сообщения: 1266
Зарегистрирован: 05 дек 2004, 01:22

Re: баккап/восстановление разбивки/и т.п.

Сообщение easy_john 12 янв 2009, 21:04

ага. а рдб в себе что содержит?
там есть файловые системы? а размер партиций?
PegasosII G4 1.0/1Gb/80Gb/Ati 9200/MorphOS unreg/Debian
a4000/PPC 233mhz/68060 50mhz/128mb/cv ppc/toccata/x-surf/kickflash/indivision/AOS3.9-4.0
a1200/PPC 200mhz/68040 25mhz/256mb/bv ppc/delfina/wifi/indivision sd+ff/AOS 3.9-4.0
a600/68000 7mhz/8mb fast/wifi/AOS 3.0
Аватара пользователя
easy_john
Менеджер
Менеджер
 
Сообщения: 4296
Зарегистрирован: 03 мар 2006, 15:24
Откуда: SPb

Re: баккап/восстановление разбивки hdd и т.п.

Сообщение anny 12 янв 2009, 22:00

Там и файловые системы и размеры партиций и бутовые приоритеты и все остальное по аналогии с mbr на x86тых. Формат полный я кстати кидал в артикле про загрузку оси (где логи снупи показывающие как и что загружается). Там в самом начале речь про rdb идет. Если по русски то:

--
Если вы делаете на винте более одну или больше партиций, то автоматически будете иметь RDB (RigidDiskBlock) в котором содержится много интересной информации включая такую как:

a). сколько имеется партиций на винте
b). где находятся бутблоки этих партиций. (или один бутблок если партиция одна)
c). физическая и логическая инфа о винте
d). и тд.

Полная структура RDB описана в include/devices/hardblocks.h (осевые инклуды идущие или в NDK, или с компиляторами, или как угодно еще).

Код: Выделить всё
struct RigidDiskBlock {
   ULONG   rdb_ID;             /* 4 character identifier (ID) */
   ULONG   rdb_SummedLongs;    /* size of this checksummed structure  */
   LONG    rdb_ChkSum;         /* block checksum (longword sum to zero) */
   ULONG   rdb_HostID;         /* SCSI Target ID of host */
   ULONG   rdb_BlockBytes;     /* size of disk blocks */
   ULONG   rdb_Flags;          /* see below for defines */

   /* block list heads */
   ULONG   rdb_BadBlockList;   /* optional bad block list */
   ULONG   rdb_PartitionList;  /* optional first partition block */
   ULONG   rdb_FileSysHeaderList; /* optional file system header block */
   ULONG   rdb_DriveInit;      /* optional drive-specific init code */
                               /* DriveInit(lun,rdb,ior): "C" stk & d0/a0/a1 */
   ULONG   rdb_Reserved1[6];   /* set to $ffffffff */
   /* physical drive characteristics */
   ULONG   rdb_Cylinders;      /* number of drive cylinders */
   ULONG   rdb_Sectors;        /* sectors per track */
   ULONG   rdb_Heads;          /* number of drive heads */
   ULONG   rdb_Interleave;     /* interleave */
   ULONG   rdb_Park;           /* landing zone cylinder */
   ULONG   rdb_Reserved2[3];
   ULONG   rdb_WritePreComp;   /* starting cylinder: write precompensation */
   ULONG   rdb_ReducedWrite;   /* starting cylinder: reduced write current */
   ULONG   rdb_StepRate;       /* drive step rate */
   ULONG   rdb_Reserved3[5];
   /* logical drive characteristics */
   ULONG   rdb_RDBBlocksLo;    /* low block of range reserved for hardblocks */
   ULONG   rdb_RDBBlocksHi;    /* high block of range for these hardblocks */
   ULONG   rdb_LoCylinder;     /* low cylinder of partitionable disk area */
   ULONG   rdb_HiCylinder;     /* high cylinder of partitionable data area */
   ULONG   rdb_CylBlocks;      /* number of blocks available per cylinder */
   ULONG   rdb_AutoParkSeconds;/* zero for no auto park */
   ULONG   rdb_HighRDSKBlock;  /* highest block used by RDSK */
                               /* (not including replacement bad blocks) */
   ULONG   rdb_Reserved4;
   /* drive identification */
   char    rdb_DiskVendor[8];
   char    rdb_DiskProduct[16];
   char    rdb_DiskRevision[4];
   char    rdb_ControllerVendor[8];
   char    rdb_ControllerProduct[16];
   char    rdb_ControllerRevision[4];
   ULONG   rdb_Reserved5[10];
};


struct PartitionBlock {
    ULONG   pb_ID;      /* 4 character identifier */
    ULONG   pb_SummedLongs;   /* size of this checksummed structure */
    LONG    pb_ChkSum;      /* block checksum (longword sum to zero) */
    ULONG   pb_HostID;      /* SCSI Target ID of host */
    ULONG   pb_Next;      /* block number of the next PartitionBlock */
    ULONG   pb_Flags;      /* see below for defines */
    ULONG   pb_Reserved1[2];
    ULONG   pb_DevFlags;   /* preferred flags for OpenDevice */
    UBYTE   pb_DriveName[32];   /* preferred DOS device name: BSTR form */
            /* (not used if this name is in use) */
    ULONG   pb_Reserved2[15];   /* filler to 32 longwords */
    ULONG   pb_Environment[20];   /* environment vector for this partition */
    ULONG   pb_EReserved[12];   /* reserved for future environment vector */
};



Например у меня была fastata3, и я из своего 40гигового винта зделал 10винтов по 4гига (потому как scsi.device в связи с тем какие дрова и как это все прикручено считал что это не 10 партиций, а 10 винтов).

Вот мой RDB в "первого" (если так можно сказать) винта:

Код: Выделить всё
Offset      0  1  2  3  4  5  6  7   8  9  A  B  C  D  E  F

00000000   52 44 53 4B 00 00 00 40  54 6E E4 C2 00 00 00 07   RDSK...@Tn¤‚....
00000010   00 00 02 00 00 00 00 10  FF FF FF FF 00 00 00 01   ........пппп....
00000020   00 00 00 02 FF FF FF FF  FF FF FF FF FF FF FF FF   ....пппппппппппп
00000030   FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF   пппппппппппппппп
00000040   00 00 20 82 00 00 00 3F  00 00 00 10 00 00 00 01   .. '...?........
00000050   00 00 20 82 00 00 00 00  00 00 00 00 00 00 00 00   .. '............
00000060   00 00 20 82 00 00 20 82  00 00 00 03 00 00 00 00   .. '.. '........
00000070   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ................
00000080   00 00 00 00 00 00 07 DF  00 00 00 02 00 00 20 81   .......џ...... _
00000090   00 00 03 F0 00 00 00 00  00 00 00 D1 00 00 00 00   ...а.......‘....
000000A0   53 54 33 34 30 30 31 36  41 20 20 20 20 20 20 20   ST340016A       
000000B0   20 20 20 20 20 20 20 20  34 47 31 39 00 00 00 00           4G19....
000000C0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ................

                         ...skip zeroes...

000001E0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ................
000001F0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ................
00000200   50 41 52 54 00 00 00 40  62 EE 90 5A 00 00 00 07   PART...@b®_Z....
00000210   FF FF FF FF 00 00 00 01  00 00 00 00 00 00 00 00   пппп............
00000220   00 00 00 00 03 44 48 30  30 45 5F 4D 45 00 00 00   .....DH00E_ME...
                         ...skip zeroes...

00000280   00 00 00 10 00 00 00 80  00 00 00 00 00 00 00 10   ......._........
00000290   00 00 00 01 00 00 00 3F  00 00 00 02 00 00 00 00   .......?........
000002A0   00 00 00 00 00 00 00 02  00 00 20 81 00 00 01 2C   .......... _...,
000002B0   00 00 00 00 00 FF FF FF  7F FF FF FE 00 00 00 00   .....пппппо....
000002C0   53 46 53 00 00 00 00 00  00 00 00 00 00 00 00 00   SFS.............
000002D0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ................
000002E0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ................
000002F0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ................
00000300   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ................


Т.е. глазом, по чисто ascii можно глянуть, что в этом RDB указано помимо всего прочего:

1. ST340016A
2. DH0 (моя бутовая партиция)
3. она SFS

Ну и тд. В целом чтобы совсем все точно знать (если оно надо), можно взять вот этот файлик где структуры все записаны, здампить свой rdb и байт за байтом все посчитать и проверить как оно на самом деле и тд.
anny
Беспардонный Амигофлуд
Беспардонный Амигофлуд
 
Сообщения: 1266
Зарегистрирован: 05 дек 2004, 01:22


Вернуться в Софт Classic Amiga

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

cron