summaryrefslogtreecommitdiffstats
path: root/DOCS/ru/cd-dvd.html
blob: 991fa7cc7f715878bd1a3e3b292cf43c86df6d59 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>

<HEAD>
  <LINK REL="stylesheet" TYPE="text/css" HREF="../default.css">
  <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=koi8-r">
</HEAD>

<BODY>


<P><B><A NAME=drives>4.1.  Дисководы CD-ROM</A></B></P>

<P>Из Linux'овской документации:</P>

<P>Некоторые CD-ROM'ы способны регулировать скорость чтения. Несколько
аргументов в пользу использования этой возможности:</P>

  <UL>
    <LI>При высоких оборотах возрастает вероятность ошибки при чтении,
    особенно с неправильно записанных дисков.</LI>
    <LI>Уровень шума, возрастающий с оборотами, может оказаться весьма
    существенным.</LI>
  </UL>

<P>Рекомендуется использования программ 'hdparm' или 'setcd'.</P>

<P>&nbsp;&nbsp;&nbsp;&nbsp;<CODE>hdparm -E [скорость] [дисковод]</CODE></P>

<P>&nbsp;&nbsp;&nbsp;&nbsp;<CODE>setcd -x [скорость] [дисковод]</CODE></P>

<P>Альтернативный метод:</P>

<P>&nbsp;&nbsp;&nbsp;&nbsp;<CODE>echo current_speed:4 &gt;/proc/ide/[дисковод]/settings</CODE></P>

<P>но для этого требуются привилегии администратора. Следующая команда
тоже может быть полезна:</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;<CODE>echo file_readahead:2000000 &gt;/proc/ide/[дисковод]/settings</CODE></P>

<P>Таким образом предварительно cчитывается 2 мегабайта (полезно при
дисках с царапинами). Если поставить слишком высокое значение, то постоянный
запуск и остановка вращения диска драматически снизят эффективность.
Предлагается также использовать программу 'hdparm':</P> 


<P>&nbsp;&nbsp;&nbsp;&nbsp;<CODE>hdparm -d1 -a8 -u1 [дисковод]</CODE></P>

<P>Таким образом включается непосредственный доступ к памяти[DMA], предварительное
чтение и размаскировка IRQ (если это непонятно, <EM>прочти man-страницу
'hdparm'</EM>)</P>

<P>Можешь поэкспериментировать файлом <CODE>/proc/ide/[дисковод]/settings</CODE>
для прочих настроек.</P>

<P>FreeBSD:</P>

<P>&nbsp;&nbsp;&nbsp;&nbsp;Скорость: <CODE>cdcontrol [-f дисковод] speed [скорость]</CODE></P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;DMA: <CODE>sysctl hw.ata.atapi_dma=1</CODE></P>

<P><B><A NAME=dvd>4.2. Просмотр DVD</A></B></P>

<P>Полный список возможных опций можно прочитать в man.</P>

<H4>Новая поддержка DVD (mpdvdkit2)</H4>

<P><B>MPlayer</B> использует библиотеки <CODE>libdvdread</CODE> и
<CODE>libdvdcss</CODE> для расшифровки и просмотра DVD. Эти две программы
находятся в субдиректории <CODE>libmpdvdkit/</CODE>, так что отдельно
устанавливать их не нужно (и бесполезно). Мы выбрали такое решение потому,
что нам пришлось исправить ошибку в <CODE>libdvdread</CODE> и добавить патч
к <CODE>libdvdcss</CODE> для поддержки <B>сохранения взломанных ключей
CSS</B>, что в свою очередь предотвращает повторного взлома ключа при каждом
просмотре, существенно увеличивая скорость.</P> 

<P><B>MPlayer</B> способен использовать <CODE>libdvdread</CODE> и 
<CODE>libdvdcss</CODE> установленные отдельно, но такое решение <B>не
рекомендуется</B>, так как может приводить к ошибкам, несовместимости и
потере скорости.</P>

<H4>Навигация DVD (dvdnav)</H4>

<P>Работы по поддержке <CODE>libdvdnav</CODE> проводились, но эта часть кода
никогда не была доведена до ума, и на данном этапе заброшена, не работает.</P> 

<P><B>Старая поддержка DVD - <I>ОПЦИОНАЛЬНО</I></B></P>

<P>Это может оказаться полезным, например, при просмотре зашифрованных
VOB-файлов с <B>жесткого диска</B>. Cкомпилируй и установи <B>libcss</B>
(версию 0.0.1, не в коем случае не более позднюю). Если <B>MPlayer</B> ее не
обнаружит, добавь <CODE>-csslib /path/to/libcss.so</CODE>. Для использования
необходимы привилегии администратора или suid root на выполняемом файле.</P>

<H4>Структура DVD</H4>

<P>Диски DVD используют сектора размером в 2048 байтов с ECC/CRC. На них обычно
единственная файловая система UDF на одной дорожке, которая содержит
различные файлы (коротенькие .IFO и .BUK и длинные (порядка гигабайта)
.VOB). Это настоящие файлы, которые можно просматривать/переписывать сo
cмонтированного не зашифрованного DVD.</P>
  
<P>Файлы .IFO содержат информацию для навигации (раздел/ролик/угол/язык и
пр.), необходимую для интерпретации содержания .VOB (кино). Файлы .BUK
&mdash; их дубли. Эти файлы содержат адреса в <B>секторах</B>, так что для
исполнения навигации и расшифровки DVD, нужен доступ к файлам на уровне
секторов.</P>

<P>Из-за этого старая поддержка DVD нуждается в cмонтированной файловой
системе и посекторному доступу к устройству. К сожалению, для этого нужны
привилегии администратора (под Linux). Проблема решается двумя способами:</P>

<UL>
  <LI>Привилегированный доступ или исполняемый файл с suid root.</LI>
  <LI>Исполнение файловой системы UDF в userspace. Именно это делают
    libdvdread 0.9.x и libmpdvdkit (новая поддержка DVD). В таком случае
    драйвер UDF в ядре не нужен, как и монтирование DVD, так как
    используется исключительно посекторное чтение.</LI>
</UL>

<P>Иногда пользователям закрыт доступ к /dev/dvd, так что авторы libdvdread
исполнили некий эмуляционный слой, который конвертирует секторные
адреса в названия файла и офсет, таким образом эмулируя непосредственный
доступ на монтированной файловой системе или на жестком диске.</P>

<P>libdvdread также принимает точку монтирования вместо устройства, и получает
его название из <CODE>/proc/mounts</CODE>. Этот метод придуман для
Solaris-ов, где данные названия присваиваются динамически.</P>

<P>Устройство DVD по умолчанию &mdash; <CODE>/dev/dvd</CODE>. Если у тебя это не
так, то сделай символический линк или добавь правильное название в командной
строке после ключа <CODE>-dvd-device</CODE>.</P>

<H4>DVD аутентификация</H4>

<P>Это, как и взлом ключей зашифрованных DVD происходит при помощи
отпатченого libdvdcss. Выбор метода осуществляется через переменную
окружения <CODE>DVDCSS_METHOD</CODE>. Возможные значения: <CODE>key</CODE>,
<CODE>disk</CODE>, или <CODE>title</CODE>.</P>
  
<P>Если ничего не предписано, делаются следующие попытки (по умолчанию: key,
title request):</P>

<OL>
  <LI><B>bus key:</B> этот ключ вырабатывается в процессе аутентификации
    (множество ioctl вперемешку с обменами ключами &mdash;
    криптографические процедуры), и при его помощи шифруются ключи диска и
    роликов передаваемые по открытой шине (во избежания подслушивания). Он
    необходим для получения и предварительной расшифровки ключа диска.</LI>
  <LI><B>cached key:</B> MPlayer подбирает подходящий взломанный ключ из директории
    <CODE>~/.mplayer/DVDKeys</CODE> (быстро ;-)</LI>
  <LI><B>key:</B> При отсутствии подходящего ключа, MPlayer пытается
    расшифровать диск при помощи набора ключей проигрывателя.</LI>
  <LI><B>disk:</B> В случае неудачи (на пример при отсутствии ключей
    проигрывателя) ключ диска форсируется. Этот метод интенсивно использует
    процессор и нуждается в 64 мегабайтах памяти (хэш-таблица из 16 миллионов 32-разрядных
    записей). Работает наверняка (но медленно).</LI>
  <LI><B>title request:</B> Используя ключ диска MPlayer получает
    зашифрованные ключи роликов находящиеся в <I>скрытых секторах</I> при
    помощи <CODE>ioctl()</CODE>. Региональная защита проигрывателей RPC-2
    осуществляется именно на этом этапе; может не сработать на подобных
    проигрывателях. При удачи, ключи роликов расшифровываются при помощи
    ключа диска и ключа шины.</LI>
  <LI><B>title:</B> Данный метод используется если title request не
    срабатывает. Он не опирается на обмен ключами с дисководом. Ключи роликов
    непосредственно атакуются криптографически, исходя из избыточности
    расшифрованного содержания .VOB файлов. Метод также известен под названиями
    "атака с известным открытым текстом" или "DeCSSPlus". В редких случаях
    этот метод проваливается, по причине недостаточности зашифрованного
    содержания для статистической атаки или изменения ключа в середине
    ролика. Это единственный метод расшифровать содержания DVD на жестком
    диске или на диске из неподходящего региона на проигрывателе RPC-2.
    (медленный метод)</LI>
</OL>

<P>С дисководами RPC-1, региональная защита осуществляется программно.
Дисководы RPC-2 защищены аппаратными средствами, разрешающими менять регион
всего 5 раз. Рекомендуется перегрузить RPC-1 в firmware если у тебя дисковод
RPC-2 с <A HREF="http://www.firmware-flash.com/">этого</A> сайта.  Если для
твоего дисковода нет апгрейда, используй для изменения региона дисковода
<A HREF="http://www.linuxtv.org/download/dvd/dvd_disc_20000215.tar.gz">regionset</A>
(под Linux). <B>Осторожно:</B> Изменить регион можно всего 5 раз.</P>

<P><B><A NAME="vcd">4.3.  просмотр VCD</A></B></P>

<P>Полный список возможных опций можно прочитать в man. Синтаксис для обычного
Видео-CD (VCD):</P>

<P><CODE>mplayer -vcd &lt;дорожка&gt; [-cdrom-device &lt;устройство&gt;]</CODE></P>

<P>Пример: <CODE>mplayer -vcd 2 -cdrom-device /dev/hdc</CODE></P> 

<P>Устройство VCD по умолчанию &mdash; <CODE>/dev/cdrom</CODE>. Если у тебя это не
так, то сделай символический линк или добавь правильное название в командной
строке после ключа <CODE>-cdrom-device</CODE>.</P>

<P><B>Замечание:</B> Некоторые дисководы SCSI (по крайней мере Plextor 
и некоторые изделия Toshiba) работают ужасно плохо при чтении VCD. Это
объясняется неполным исполнением ioctl CDROMREADRAW для этих дисководах.
Если ты имеешь некоторые познания в сфере программирования SCSI, пожалуйста
<A HREF="tech/patches.txt">помоги нам</A> в исполнении общей поддержки
SCSI для VCD.</P>

<H4>Структура VCD</H4>

<P>Диски VCD состоят из одной или нескольких дорожек:</P>

<UL>
  <LI>Первая дорожка содержит несколько мегабайтов секторами по 2048 байтов,
    с файловой системой iso9660, обычно содержащей проигрыватель VCD для
    Windows или прочую информацию, вроде картинок или текста.</LI>
  <LI>Вторая и остальные дорожки содержат MPEG-поток секторами по 2324
    байта, по одному пакету MPEG PS на сектор вместо файловой системы. Так
    же как и дорожки аудио дисков, эти дорожки <B>не монтируются</B>. Так
    как большинство фильмов именно на этой дорожке, попробуй сначала
    <CODE>-vcd 2</CODE>.</LI> 
  <LI>Существуют VCD диски без первой дорожки (единственная дорожка без файловой
    системы). Они просматриваются, но не монтируются.</LI>
</UL>

<P>Про файлы .DAT:</P>

<P>Файл в примерно 600 мегабайтов на первой дорожке не настоящий. Это так
называемый ISO-переход, для доступа к другим дорожкам, не поддерживаемый
драйвером файловой системы iso9660 в оригинальном ядре Linux. Драйвер для
такого доступа входит в PowerDVD для Linux. Альтернативами для копирования
VCD может послужить новый драйвер cdfs (не входит в официальное ядро)
который показывает дорожки на диске как файлы образов или
<A HREF="http://cdrao.sf.net/">cdrao</A>, приложения для побитного
чтения/копирования CD.</P>


</BODY>

</HTML>