Re: BSD disklabels
- From
- Dmitry Pryanishnikov (2:464/36)
- To
- Aleksey Cheusov
- Date
- 2006-09-18T22:56:34Z
- Area
- RU.UNIX.BSD
From: Dmitry Pryanishnikov <dmitry@atlantis.dp.ua>
Привет!
On Thu, 14 Sep 2006, Aleksey Cheusov wrote:
> полностью игнорируется *BSD (я имею ввиду именование разделов, т.е. номера).
> Вместо этого используется своя, та, что задается disklabels,
> как выясняется несовместимая между разными *BSD.
Несовместимость там, насколько я разбирался этой весной (на примере NetBSD)
достаточно условная (см. мои письма в -current за середину марта с темой
"[patch] NetBSD disklabel support for geom_bsd"): дело практически упирается
в разный размер таблицы разделов (у FreeBSD максимум установлен в 8 элементов,
реально до конца 512-байтового сектора есть место для 22). Я вначале предложил
довольно сложный патч (мне показалось, что FreeBSD и NetBSD по-разному
трактуют смещение раздела p_offset - это оказалось ошибкой). Все гораздо
проще, нужно просто "собраться с духом" и поднять MAXPARTITIONS до 22;
при этом проанализировать, чтобы под этот подъем везде корректно была выделена
память. Плюс для обратной совместимости все-таки вновь создаваемые таблицы
делать на 8 входов по-умолчанию (но давать возможность потом расширять до
MAXPARTITIONS). Это все - не утопия, поскольку перед массивом описателей
разделов есть их реальное количество:
u_int16_t d_npartitions; /* number of partitions in following */
Задача для меня сейчас низкоприоритетная, найду для нее время - доведу до ума.
А что до ссылок на мифическую "геометрию" - ее там нет:
struct partition { /* the partition table */
u_int32_t p_size; /* number of sectors in partition */
u_int32_t p_offset; /* starting sector */
u_int32_t p_fsize; /* filesystem basic fragment size */
u_int8_t p_fstype; /* filesystem type, see below */
u_int8_t p_frag; /* filesystem fragments per block */
u_int16_t p_cpg; /* filesystem cylinders per group */
} d_partitions[MAXPARTITIONS]; /* actually may be more */
Местоположение раздела описавает пара p_size + p_offset . Тут ограничение
такое же, как и для i386 MBR-слайсов: 2^32 секторов. Остальные поля, насколько
я понимаю, не влияют на доступ к разделу, а просто служать хинтами для newfs.
> Планируется ли где-нибудь когда-нибудь кем-нибудь
> избавиться (сделать опциональными) disklabels в пользу
> нативной системы организации разделов (partitions).
Вот тут главное недоразумение: disklabels для *BSD-систем _и есть_
нативная система организации разделов. RTFM UNIX history. Она не начинается
на i386 и не ограничивается набором из (i386|amd64).
Sincerely, Dmitry
--
Atlantis ISP, System Administrator
e-mail: dmitry@atlantis.dp.ua
nic-hdl: LYNX-RIPE
--- ifmail v.2.14.os-p7
* Origin: Atlantis ISP (2:464/36@fidonet)
SEEN-BY: 46/999 50/12 400/520 814 450/1024 460/120 463/68 464/0 34 36 41 66
SEEN-BY: 464/100 128 405 562 999 3000 5555 465/213 550/5068 4642/44 4646/1
SEEN-BY: 5000/0 20 26 27 61 94 104 116 130 170 5000 5002/76 5002 5004/75 1111
SEEN-BY: 5005/14 5009/14 5010/77 275 5011/13 5012/46 5013/21 5015/28 5019/31
SEEN-BY: 5020/545 2395 2871 4441 5021/29 5025/3 5027/12 5029/34 5030/1080 1957
SEEN-BY: 5035/38 5045/7 5054/1 4 8 9 11 28 35 36 37 45 63 66 67 70 75 84 85
SEEN-BY: 5055/177 5057/119 5059/9 5062/10 5063/3 5064/7 5070/66 5077/70
SEEN-BY: 5085/13 5090/1029 5095/20 5096/18 6001/10 6090/1
PATH: 464/36 5000/5000 5020/545 5054/1 37