Tegrapart

Материал из Toshiba AC100 wiki
Перейти к навигации Перейти к поиску

Если Вы переразбивали внутренний накопитель, то вероятно вам пригодится понимание того, как работает tegrapart.

tegrapart - это один из вариантов, которым ядро находит партиции на накопителе тошки (второй механизм называется nvtegra). Параметры разбивки (партиции) задаются в cmdline в формате <абревиатура партиции>:<стартовый сектор>:<кол-во секторов>:<размер сектора>. Например, один из вариантов tegrapart=recovery:300:a00:800,boot:d00:1000:800,mbr:1d00:200:800 Здесь задается 3 партиции: recovery (5-я партиция в нумерации nvflash), boot (6-я партиция в нумерации nvflash) и mbr. В начале MBR партиции записан, как это ни странно, MBR. Тот самый, который присутствует в нулевом секторе жесткого диска обычного PC. Внутри MBR можно задать только 4 партиции. В заводской разбивке после MBR идет 5 партиций (APP, CAC, MSC, UBA, UDB), в которых размещаются данные android, поэтому инженерам пришлось использовать так называемую extended партицию (также делается на PC, если нужно разбить диск на более чем 4 партиции). Внутри этой партиции может содержаться большое количество логических томов. Для описания каждого такого тома необходима специальная запись, которая на тошибе размещается во вспомогательныхх партициях EM1 и EM2. После переразбивки положение и размер некоторых партиций меняется, удаляются партиции EM1 и EM2, а после MBR остается 2 партиции для данных. Чтобы после заработала логика tegrapart, нужно править MBR (иначе он будет указывать на старые места партиций) или описывать все партиции в cmdline (mbr описывать в этом случае нельзя, т.к. разбор останавливается на mbr партиции).

Замечание: наряду с tegrapart в ядре реализован механизм nvtegra, который опирается на описание партций, содержащееся в партиции PT (3-я партиция в нумерации nvflash), а не на cmdline и содержимое партиций MBR, EM1 и EM2.

Ошибка создания миниатюры: Не удаётся сохранить эскиз по месту назначения

117-я

Рассмотрим, что к чему на примере 117-й модели тошибы (stuw). Структура партиций вот такая:

Id Name Start   Size
2  BCT  0       1536
3  PT   1536    256
4  EBT  1792    1024
5  SOS  2816    2560
6  LNX  5376    4096
7  MBR  9472    512
8  APP  9984    153600
9  CAC  163584  204800
10 MSC  368384  1024
11 EM1  369408  256
12 UDA  369664  632320
13 EM2  1001984 256
14 UDB  1002240 2876672

Соответственно в партции 7 находится MBR:

% hexdump -C -n512 ./part-7-MBR.img
00000000  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
000001c0  00 00 83 00 00 00 00 08  00 00 00 60 09 00 00 00  |...........`....|
000001d0  00 00 83 00 00 00 00 68  09 00 00 80 0c 00 00 00  |.......h........|
000001e0  00 00 83 00 00 00 00 e8  15 00 00 10 00 00 00 00  |.......Х........|
000001f0  00 00 05 00 00 00 00 f8  15 00 00 34 d6 00 55 aa  |.......Ь...4ж.U╙|
00000200

Последние два байта 55aa, значит это и правда MBR. Партиции прописаны начиная со смещения 0x1BE:

Offset Type            Start    Size
0x1BE  0x83 (Linux)    2048     614400
0x1CE  0x83 (Linux)    616448   819200
0x1DE  0x83 (Linux)    1435648  4096
0x1EE  0x05 (Extended) 1439744  14038016

Обратим внимание на то, что в MBR размеры указаны в секторах по 512 байт, а в partitiontable - по 2048. Первая партиция начинается с 2048-го сектора (по 512 байт, или 512-го сектора по 2048 байт). Это соответствует партиции APP. Размер этой партиции также одинаков в MBR и partitiontable. Вторая партиция в MBR указывает на CAC, третья - на MSC. Четвертая партиция имеет тип extended и включает в себя EM1, UDA, EM2 и UDB.

% hexdump -C -n512 part-11-EM1.img
00000000  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
000001c0  00 00 83 00 00 00 00 04  00 00 00 98 26 00 00 00  |............&...|
000001d0  00 00 05 00 00 00 00 9c  26 00 00 98 af 00 00 00  |........&...╞...|
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 55 aa  |..............U╙|
00000200
Offset Type            Start    Size
0x1BE  0x83 (Linux)    1024     2529280
0x1CE  0x05 (Extended) 2530304  11507712
0x1DE  не используется
0x1EE  не используется

Первая описанная партиция начинается сразу после EM1 и имеет размер 2529280 секторов (632320, если сектора по 2048 байт), значит это описание UDA. Вторая - extended партиция, включающая в себя EM2 и UDB.

% hexdump -C -n512 part-13-EM2.img
00000000  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
000001c0  00 00 83 00 00 00 00 04  00 00 00 94 af 00 00 00  |............╞...|
000001d0  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 55 aa  |..............U╙|
00000200
Offset Type            Start    Size
0x1BE  0x83 (Linux)    1024     11506688
0x1CE  не задано
0x1DE  не используется
0x1EE  не используется

В EM2 описана одна партиция. Как несложно догадаться, это UDB.