Blu-ray диски в Ubuntu Linux
Что есть Blu-ray диск
Blu-ray (нар. блюрей) - круглый кусок многослойного пластика, запись информации на который осуществляется с помощью фиолетового (405 нм) лазера.
Бывают BD-R - для однократной записи. BD-RE - для многократной записи. BD-ROM - штампованный диск для чтения.
Blu-ray диски имеют повышенную емкость, в сравнении с CD,DVD. Обычный однослойный blu-ray диск - емкость 25 гигабайт. Двуслойный - 50 гигабайт. Трехслойный BDXL диск - 100 Гб. Четырехслойный 128 Гб.
Возможности хранения такого объема данных предопределили их преимущественное использование для хранения видео высокого разрешения.
Основное отличие, на программном уровне, blu-ray диска от CD,DVD дисков - использование файловой системы UDF, против ISO9660 в CD/DVD. Universal Disk Format (UDF) версии 2.50 или 2.60.
Для наших применений эта оптическая технология подходит очень хорошо. 25 Гигабайт - серъезный объем для любительских целей.
Blu-ray в Ubuntu Linux
Поддержка Blu-ray дисков в Linux cуществует на базовом уровне. Т.е. доступны системные утилиты для записи образов. Однако графические утилиты менее распространены и платны.
В операционной системе Linux, в частности Ubuntu, существует пакет dvdrwtools для работы с DVD и Blu-ray дисками.
Для записи blu-ray диска будем использовать предварительно сформированный образ blu-ray диска.
Последовательность записи Blu-ray
1. Создание UDF-файла-образа
2. Форматирование UDF-файла-образа
3. Монтирование UDF-файла-образа в точку монтирования
4. Заполнение UDF-файла-образа содержимым
5. Отмонтирование UDF-файла-образа
6. Запись файла-образа на диск
7. Проверка корректности записанного образа
Файловая система UDF уже более менее знакома, применяется, например на флешках (см. Файловая система флешки).
Создание UDF-файла образа
Чтобы корректно сформировать файл-образ blu-ray, надо точно указать размер создаваемого файла. Т.к. 25 Гигабайт Blu-ray это такие же гигабайты как и у жестких дисков, т.е. приставка Гига означает 10^9 в международной системе единиц.
Итак размер файла должен быть: 25х1000х1000х1000 байт
Создадим папку для хранения образов дисков:
root@microserver:# mkdir /home/udfs/
Для создания файла используется команда truncate, она быстро работает, в отличии от dd.
root@microserver# truncate --size=25GB /home/udfs/archive.udf
Лучше так:
root@microserver# truncate --size=23610MiB /home/udfs/archive.udf
При создании образа Blu-ray необходимо учитывать точный размер доступного пространства на blu-ray диске. MiB - это 1024х1024 (старые мегабайты, а ныне мибибайты).
Удобно использовать небольшой SSD диск на 32-64 Гб для хранения образа и ускорения операций его заполнения.
Форматирование UDF-файла-образа
root@microserver:# mkudffs --utf8 /home/udfs/archive.udf
По умолчанию, устанавливается версия UDF2.01, выше нет возможности. Это может вызывать несомвестимость записанного диска, с рядом устройств. Но для наших целей - в принципе неважно.
Для поддержки русских имен лучше использовать опцию --utf8.
Для blu-ray диска также нет опции --media-type.
Монтирование UDF-Файла-образа. Петлевое монтирование
root@microserver:# mount -oloop,rw,users,sync,gid=iam,uid=iam /home/udfs/archive.udf /mnt/udf
Некоторые полезные опции монтирования, относящиеся к файловой системе udf.
gid= группа
umask= Установить маску по умолчанию. Задается в восьмеричном формате.
uid= пользователь.
iocharset Набор символов (кодировка).
bs= размер блока данных.
Например:
gid=iam,uid=iam,iocharset=utf8
Это позволит получать доступ к файловой системе не только суперпользователю, но и пользователю iam.
Заполнение
Копирование файлов для архивирования. Да, 25 Гигабайт еще поискать.
После копирования файлов - сброс остатков буфера.
root@microserver:# sync
sync - сброс внутреннего буфера.
Отмонтирование
root@microserver:# umount /mnt/udf
Запись файла-образа на диск Blu-ray
Скорость привода 1х - 36 Мбит/с - 4.5 МБайт/с.
Время записи Blu-Ray диска на скорости 1х - 90 минут (1.5 часа) для 25 Гб. Для 59 Гб.
180 минут (3 часа).
Однако, growisofs использует проверку записанных блоков, сразу после записи, и это удлиняет время записи до 2 раз. И в спецификации Blu-ray есть возможность неверно записанный блок записать в специальную запасную область, которая имеет размер минимум 256Мб.
root@microserver:# growisofs -speed=1 -Z /dev/sr0=/home/udfs/archive.udf
Чистый BD диск нуждается в предварительном форматировании и его выполняет growisofs, определив автоматически наличие неформатированного BD диска, либо отдельной командой dvd+rw-format (cм. Опции.).
Для быстрой записи можно указать в опции -speed скорость, которую поддерживает диск blu-ray. А также отключить проверки.
Долговечность Blu-ray
Долговечность Blu-ray это вопрос еще мало исследованный, однако есть несколько рекомендаций.
Использовать, по возможности, специальные архивные диски Archival Grade.
Использовать неорганические Blue-ray диски, вместо органических более дешевых LTH.
Использовать диски произведённые проверенными производителями - обычно из Японии (Panasonic).
Хранить в рекомендуемых условиях.
И да, не использовать Blu-ray для хранения оригиналов важных данных.
Опция. Форматирование Blu-ray диска
Непосредственное форматирование оптического диска выполняется командой dvd+rw-format.
Операция быстрая минута-две.
root@fobos:# dvd+rw-format /dev/dvd
/dev/dvd - устройство (привод BDR).
Чтобы переформатировать диск Blu-ray полностью (длительная операция - несколько часов).
root@fobos:# dvd+rw-format -blank /dev/dvd
Опция. Информация о Blu-ray диске
Например, при вставленном Blu-ray диске Verbatim BD-RE 2x 25 Gb.
root@mir:# dvd+rw-mediainfo /dev/sr0
Емкость указываемая при создании UDF-раздела GPT жесткого диска: 23610MiB.
INQUIRY: [PIONEER ][BD-RW BDR-207M][1.20]
GET [CURRENT] CONFIGURATION:
Mounted Media: 43h, BD-RE
Media ID: CMCMAG/CN2
Current Write Speed: 2.0x4495=8990KB/s
Write Speed #0: 2.0x4495=8990KB/s
Speed Descriptor#0: 00/12088319 R@2.0x4495=8990KB/s W@2.0x4495=8990KB/s
READ DISC INFORMATION:
Disc status: complete
Number of Sessions: 1
State of Last Session: complete
Number of Tracks: 1
READ FORMAT CAPACITIES:
formatted: 12088320*2048=24756879360
00h(3000): 11826176*2048=24220008448
30h(3000): 11826176*2048=24220008448
30h(5000): 11564032*2048=23683137536
30h(1000): 12088320*2048=24756879360
31h(800): 12219392*2048=25025314816
READ TRACK INFORMATION[#1]:
Track State: complete
Track Start Address: 0*2KB
Free Blocks: 0*2KB
Track Size: 12088320*2KB
FABRICATED TOC:
Track#1 : 14@0
Track#AA : 14@12088320
Multi-session Info: #1@0
READ CAPACITY: 12088320*2048=24756879360
Информация о неформатированном диске 50GB Panasonic в системе Linux
root@fobos:~# dvd+rw-mediainfo /dev/dvd
INQUIRY: [PIONEER ][BD-RW BDR-207M][1.20]
GET [CURRENT] CONFIGURATION:
Mounted Media: 43h, BD-RE
Media ID: MEI/T01
Current Write Speed: 2.0x4495=8990KB/s
Write Speed #0: 2.0x4495=8990KB/s
Speed Descriptor#0: 00/24438783 R@2.0x4495=8990KB/s W@2.0x4495=8990KB/s
:-[ READ BD SPARE INFORMATION failed with SK=5h/MEDIUM NOT FORMATTED]: Wrong medium type
READ DISC INFORMATION:
Disc status: blank
Number of Sessions: 1
State of Last Session: empty
"Next" Track: 1
Number of Tracks: 1
READ FORMAT CAPACITIES:
unformatted: 24438784*2048=50050629632
00h(6000): 23652352*2048=48440016896
30h(6000): 23652352*2048=48440016896
30h(9000): 23259136*2048=47634710528
30h(1000): 24307712*2048=49782194176
31h(800): 24438784*2048=50050629632
READ TRACK INFORMATION[#1]:
Track State: blank
Track Start Address: 0*2KB
Free Blocks: 0*2KB
Track Size: 24438784*2KB
Информация о форматированном диске 50GB Panasonic в системе Linux
Емкость для указания при создании UDF-раздела GPT жесткого диска: 46196MiB (48440016896).
root@fobos:~# dvd+rw-mediainfo /dev/dvd
INQUIRY: [PIONEER ][BD-RW BDR-207M][1.20]
GET [CURRENT] CONFIGURATION:
Mounted Media: 43h, BD-RE
Media ID: MEI/T01
Current Write Speed: 2.0x4495=8990KB/s
Write Speed #0: 2.0x4495=8990KB/s
Speed Descriptor#0: 00/23652351 R@2.0x4495=8990KB/s W@2.0x4495=8990KB/s
READ DISC INFORMATION:
Disc status: complete
Number of Sessions: 1
State of Last Session: complete
Number of Tracks: 1
READ FORMAT CAPACITIES:
formatted: 23652352*2048=48440016896
00h(6000): 23652352*2048=48440016896
30h(6000): 23652352*2048=48440016896
30h(9000): 23259136*2048=47634710528
30h(1000): 24307712*2048=49782194176
31h(800): 24438784*2048=50050629632
READ TRACK INFORMATION[#1]:
Track State: complete
Track Start Address: 0*2KB
Free Blocks: 0*2KB
Track Size: 23652352*2KB
FABRICATED TOC:
Track#1 : 14@0
Track#AA : 14@23652352
Multi-session Info: #1@0
READ CAPACITY: 23652352*2048=48440016896
Строка READ CAPACITY отражает доступную пользователю емкость, в байтах.
Экспериментальная опция. Использование свободного раздела на жестком диске для образа Blu-ray
У меня сделан свободный раздел на жестком диске, который я могу использовать как дополнительный загрузочный том, либо как дополнительное место.
В этот раз, я его отформатирую в UDF. Его размер около 25 Гигабайт.
Итак, для начала выясняю точные размеры разделов и дисков Blu-ray. Они отличаются.
Раздел жесткого диска (у меня /dev/sda3), размер 24 996 625 920 байт.
Диск Blu-ray Verbatim BD-RE 2x 25 Gb (медиа-код CMCMAG-CN2-000), 24 756 879 360 байт, 12 088 320 секторов по 2048 байт.
Диск Blu-ray Mirex BD-RE 2x 25 Gb (медиа-код PHILIP-W02-000), размер 24 220 008 448 байт, 11826176 секторов по 2048 байт.
Итак, все размеры отличаются.
При наличии чистого жесткого диска, можно создать раздел точно под размер Blu-ray диска. В результате получиться точная байтовая копия Blu-ray диска.
А вот с существующим разделом отличного размера, могут быть трудности и они есть. И вообще, на работающей системе, манипуляция с разделами - крайне опасная операция, чреватая потерей данных.
Для удобства на новом жестком диск лучше использовать разметку GPT, это позволяет создать до 34 разделов. Можно создать разделы, по размеру соответствующие разным blu-ray дискам, dvd-дискам, cd-дискам.
Т.к. встроенное приложение disks в gnome shell не позволяет точно задать размер раздела, то будем использовать команду gdisk - аналог fdisk, но для работы с GPT дисками.
Т.к. нам требуется создать раздел размером 24 756 879 360 байт, то для получения числа 512-байтных секторов, воспользуемся расчетом.
24 756 879 360 / 512 = 48353280 секторов по 512 байт.
При создании раздела в GPT, он выравнивается по границе 2048. Если это первый раздел, то начальный сектор нашего раздела будет 2048.
Чтобы получить, точный адрес сектора конца раздела, надо произвести расчёт следующего вида:
48353280 + 2048 - 1.
Т.к. нумерация секторов начинается с нуля.
И после создания и записи таблицы GPT с таким разделом, мы получим в точности совпадающий раздел по объему с Verbatim BD-RE 25GB.
И программа "Диски" (disks) в Gnome Shell покажет точный размер нового раздела в байтах.
Попробуем создать файловую систему UDF по размеру, соответствующую blu-ray диску, в данном случае - Verbatim. 12088320 секторов.
root@mir:# mkudffs --utf8 -b 2048 /dev/sda3
start=0, blocks=16, type=RESERVED
start=16, blocks=3, type=VRS
start=19, blocks=237, type=USPACE
start=256, blocks=1, type=ANCHOR
start=257, blocks=16, type=PVDS
start=273, blocks=1, type=LVID
start=274, blocks=12087789, type=PSPACE
start=12088063, blocks=1, type=ANCHOR
start=12088064, blocks=239, type=USPACE
start=12088303, blocks=16, type=RVDS
start=12088319, blocks=1, type=ANCHOR
Файловая система создана. Видно, что последний блок в точности попадает в размер.
Чтобы задать метки для UDF-раздела, видимые в Nautilus, можно использовать опции --lvid и --vid.
# mkudffs --utf8 -b 2048 --lvid=BDRE25GB --vid=BDRE25GB /dev/sda5
где /dev/sda5 - раздел, размеров 23610MiB.
Примонтируем её в точку /mnt/udf:
root@mir:# mount -t udf -o rw,users,gid=iam,uid=iam /dev/sda3 /mnt/udf
Теперь её можно заполнить простым копирование в программе файлового менеджера Nautilus.
root@mir:# sync && umount /dev/sda3
И запись UDF-раздела на оптический диск Verbatim:
root@mir:# growisofs --speed=2 -Z /dev/sr0=/dev/sda3
Ждем 180 минут, т.к. growiso пишет с проверками. Их также можно отключить.
Проверяем записанный диск в Windows 7, и в Nautilus.
Что-же касается диск Mirex, значение его емкости остается для меня непонятным, надо смотреть спецификации. Однако, можно тоже самое проделать и для диска Mirex, просто цифры будут отличаться. Вот что будет с записью раздела verbatim на меньший диск mirex? Программа записи по исчерпании емкости выдаст ошибку записи.
Однако, есть интересная опция у growisofs, наследовання от genisoimage, позволяющая задать количество записываемых секторов. -stream-media-size, что позволит записать кусок раздела, при условии, что в этом куске создана udf-файловая система. Т.е. размер файловой системы меньше раздела на диске. Подробнее man genisoimage. Пока не проверял, но что-то подсказывает, что это верный путь. Попробовал, пока не получается задать эту опцию. И остается единственный способ - это раздел, который равен размеру blu-ray диска.
Аналогичным образом можно поступить и с DVD дисками и спокойно записывать их потом простой командой из консоли, без подготовки промежуточного файла-образа.
Ресурсы
. http://ru.wikipedia.org/wiki/Blu-ray_Disc
. http://fy.chalmers.se/~appro/linux/DVD+RW/Blu-ray/