bsdlabel — чтение и запись метки диска

НАЗВАНИЕ

bsdlabel — чтение и запись метки диска

СИНТАКСИС

bsdlabel [-A] диск | -f файл

bsdlabel -w [-An] [-B [-b загрузчик]] [-m машина] диск | -f файл [тип]

bsdlabel -e [-An] [-B [-b загрузчик]] [-m машина] диск | -f файл

bsdlabel -R [-An] [-B [-b загрузчик]] [-m машина] [-f] диск | -f файл

файл_прототипа

Утилита bsdlabel устанавливает, проверяет или изменяет метку BSD в раз-

деле диска или в файле, содержащем образ раздела.  Кроме того, bsdlabel

может установить на диск код загрузчика.

ОПИСАНИЕ

Имя дискового устройства

При указании устройства (т.е., когда опция -f не используется) префикс

/dev/ может быть опущен и bsdlabel добавит его автоматически.

Общие опции

Опция -A

включает обработку традиционных частей метки BSD.  Если опция не

указана, эти поля автоматически инициализируются подходящими значениями.

Опция -f

говорит bsdlabel о том, что вместо раздела диска нужно будет

оперировать с файлом.

Опция -n

прерывает работу bsdlabel сразу перед тем, как диск был бы моди-

фицирован, и вместо записи результата на диск просто показывает его.

Опция -m

машина заставляет bsdlabel использовать формат другой архитек-

туры.  В настоящее время допустимыми значениями являются i386, amd64,

ia64, pc98 и alpha.  Если эта опция опускается, утилита bsdlabel будет

использовать формат машины, на которой она работает.

Чтение метки диска

Чтобы просмотреть имеющуюся метку диска, используйте bsdlabel так:

bsdlabel [-A] [-m машина] диск

Аргумент диск указывает на желаемый диск, и может быть задан в виде da0

или /dev/da0.  Эта команда отобразит текущую конфигурацию разделов.

Запись стандартной метки

Чтобы записать стандартную метку, используйте bsdlabel так:

bsdlabel -w [-An] [-m машина] диск [тип]

Если указан тип диска, будет использована соответствующая запись из файла

disktab(5), в противном случае будет записана стандартная метка.

Редактирование существующей метки диска

Чтобы отредактировать существующую метку диска, используйте bsdlabel так:

bsdlabel -e [-An] [-m машина] диск

Эта команда открывает дисковую метку в редакторе по умолчанию, после

редактирования проверяет её на корректность и записывает её на диск.

Восстановление метки диска из файла

Чтобы восстановить метку диска из файла, используйте bsdlabel так:

bsdlabel -R [-An] [-m машина] диск файл_прототипа

Утилита bsdlabel позволяет восстановить метку диска, которая была предва-

рительно сохранена в файл в формате ASCII.  Файл прототипа должен иметь

тот же формат, что используется при чтении или редактировании метки.

Комментарии начинаются со знака `#’ и продолжаются до конца строки.

Установка загрузчика

Если указана опция -B, код загрузчика будет cчитан из файла /boot/boot и

записан на диск.  Опция -b загрузчик позволяет задать другой файл с кодом

загрузчика.

ФАЙЛЫ

/boot/boot    Образ стандартного загрузчика.

/etc/disktab  Файл описания дисков.

ФОРМАТ СОХРАНЯЕМОГО ФАЙЛА

Утилита bsdlabel использует ASCII формат для чтения, редактирования и

восстановления метки диска.  Формат метки следующий:

8 partitions:

#        size   offset    fstype   [fsize bsize bps/cpg]

a:    81920       16    4.2BSD     2048 16384  5128

b:  1091994    81936      swap

c:  1173930        0    unused        0     0         # «raw» part, don’t edit

Если указана опция -A, то формат будет таким:

# /dev/da1c:

type: SCSI

disk: da0s1

label:

flags:

bytes/sector: 512

sectors/track: 51

tracks/cylinder: 19

sectors/cylinder: 969

cylinders: 1211

sectors/unit: 1173930

rpm: 3600

interleave: 1

trackskew: 0

cylinderskew: 0

headswitch: 0           # milliseconds

track-to-track seek: 0  # milliseconds

drivedata: 0

8 partitions:

#        size   offset    fstype   [fsize bsize bps/cpg]

a:    81920       16    4.2BSD     1024  8192    16

b:   160000    81936      swap

c:  1173930        0    unused        0     0         # «raw» part, don’t edit

Строки, начинающиеся с символа `#’ являются комментариями.

Таблица разделов может иметь до 8 разделов.  Каждый раздел содержит сле-

дующую информацию:

#       Идентификатор раздела.  Обозначается одной латинской буквой в

интервале от `a’ до `h’.  По договорённости, раздел `c’ зарезер-

вирован для описания диска в целом.

size    Размер раздела в секторах, K (килобайтах — 1024), M (мегабайтах —

1024*1024), G (гигабайтах — 1024*1024*1024), % процентах после

удаления всех разделов с фиксированным размером, кроме раздела

`c’), или * (всё свободное место, оставшееся после разделов с

фиксированным размером и разделов, описанных в процентах).  Для

раздела `c’ размер * обозначает весь диск.  Допустимо указание

суффиксов K, M и G в нижнем регистре.  Размер и суффикс должны

быть указаны без пробелов между ними.

Пример: 2097152, 1G, 1024M и 1048576K все обозначают один и тот

же размер (с учётом 512-байтовых секторов).

offset  Смещение начала раздела относительно начала диска в секторах, или

*, чтобы утилита bsdlabel сама посчитала правильное значение

(конец предыдущего раздела плюс один, раздел `c’ игнорируется).

Для раздела `c’, * обозначает нулевое смещение.  Первый раздел

должен иметь смещение 16, потому что первые 16 секторов зарезер-

вированы под метаданные.

fstype  Описывает назначение раздела.  Пример выше показывает все исполь-

зуемые в настоящий момент типы разделов.  Для файловых систем UFS

и разделов ccd(4) используется тип 4.2BSD.  Для дисков Vinum

используется тип vinum.  К другим часто встречающимся типам отно-

сятся swap и unused.  По соглашению, раздел `c’ представляет

собой весь слайс и должен иметь тип unused, хотя утилита bsdlabel

не заставляет придерживаться этого соглашения.  Утилита bsdlabel

также знает о других типах разделов, которые не используются в

настоящее время.  (Смотрите определения, начинающиеся с

FS_UNUSED, в  для более подробного ознакомле-

ния.)

fsize   Только для файловых систем 4.2BSD, размер фрагмента; см.

newfs(8).

bsize   Только для файловых систем 4.2BSD, размер блока; см. newfs(8).

bps/cpg

Только для файловых систем 4.2BSD, количество цилиндров в группе;

см. newfs(8).

ПРИМЕРЫ

Показать метку первого слайса диска da0, полученную через /dev/da0s1:

bsdlabel da0s1

Записать метку da0s1, хранящуюся в ядре, в файл savedlabel.  В дальнейшем

этот файл может быть использован для восстановления метки с помощью опции

-R:

bsdlabel da0s1 > savedlabel

Создать метку на da0s1:

bsdlabel -w /dev/da0s1

Прочитать метку с da0s1, отредактировать её и записать результат на диск:

bsdlabel -e da0s1

Прочитать метку da0s1, отредактировать её, и показать, какой бы была

новая метка (в секторах).  Эта команда не записывает новую метку, ни в

ядро, ни на диск:

bsdlabel -e -n da0s1

Записать стандартную метку на da0s1.  Чтобы впоследствии отредактировать

разделы и параметры файловых систем, воспользуйтесь другой командой,

bsdlabel -e:

bsdlabel -w da0s1

Восстановить метку диска на da0s1 на основе информации, полученной из

файла savedlabel:

bsdlabel -R da0s1 savedlabel

Показать, какой бы была метка на da0s1, используя конфигурацию разделов в

файле label_layout.  Полезно для определения актуального дискового про-

странства, выделяемого под разделы, при использовании схемы разбиения на

разделы на основе % и *:

bsdlabel -R -n da0s1 label_layout

Установить новый загрузчик на da0s1.  Код загрузчика берётся из файла

/boot/boot:

bsdlabel -B da0s1

Установить новую метку и загрузчик.  Код загрузчика берётся из файла

newboot в текущем рабочем каталоге:

bsdlabel -w -B -b newboot /dev/da0s1

Полностью стереть всю предыдущую информацию на диске, создав на её месте

новый загрузочный диск с таблицей DOS-разделов, состоящей из одного

слайса на весь диск.  Инициализировать метку на этом слайсе, затем отре-

дактировать её.  Команды dd(1) не являются обязательными, но могут потре-

боваться, чтобы некоторые BIOSы правильно распознали диск:

dd if=/dev/zero of=/dev/da0 bs=512 count=32

fdisk -BI da0

dd if=/dev/zero of=/dev/da0s1 bs=512 count=32

bsdlabel -w -B da0s1

bsdlabel -e da0s1

Пример метки диска с использованием новых типов размера разделов, таких

как %, M, G и *, который может быть использован в качестве исходного

файла для «bsdlabel -R ad0s1 new_label_file»:

# /dev/ad0s1:

8 partitions:

#        size   offset    fstype   [fsize bsize bps/cpg]

a:   400M       16    4.2BSD     4096 16384    75     # (Cyl.    0 — 812*)

b:     1G        *      swap

c:      *        *    unused

e: 204800        *    4.2BSD

f:     5g        *    4.2BSD

g:      *        *    4.2BSD

ДИАГНОСТИКА

Драйверы устройств ядра не позволят уменьшить размер раздела диска или

изменить его смещение, если раздел используется системой.

СОВМЕСТИМОСТЬ

Поскольку для хранения количества секторов используется тип u_int32_t,

BSD метки ограничены максимумом в 2~~32-1 секторов.  Обычно это означает 2

терабайта дискового пространства.  Диски большего размера могут быть

поделены на части, используя другие методы, например gpt(8).

Разные операционные системы семейства BSD используют немного отличающиеся

версии меток, которые в целом несовместимы друг с другом.

СМОТРИ ТАКЖЕ

ccd(4), geom(4), md(4), disktab(5), boot0cfg(8), fdisk(8), gpt(8),

newfs(8)

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *