FileSystem/ISO 9660
の編集
Top
>
FileSystem
> ISO 9660
[
ホーム
] [
一覧
|
検索
|
ヘルプ
]
-- 雛形とするページ --
!Template
A20
API
ATA/ATAPI
ATA/ATAPI/Command
ATA/ATAPI/I/O Port, Register
ATA/ATAPI/Transfer
ATA/ATAPI/Transfer/UltraDMA
Address space
Assembly language
BBS
Barn
Books
Boot process
Build
Comments/El Torito
Comments/Memo
Comments/OS glossary
Comments/Privilege levels
Comments/Projects/TestOS_CD
Computer language
Computer language/C
Computer language/C++
Computer language/C++/Class
Computer language/C++/Class/Inheritance
Computer language/C++/Operator
Computer language/C++/関数名forアセンブリ
Computer language/C/Complex sentence
Computer language/GNU Assembler
DMA
DMAC
DMAC/Intel 8237A
Development environment for Linux
Device
Device/82093AA
Device/8259
Device/PCI
Device/PCI to ISA Bridge
Device/PCI/Class Code
El Torito
Exception
FDC
FDC/82077AA
FDD boot
FDDブート
FileSystem
FileSystem/ISO 9660
FileSystem/Joliet
Format/FileFormat
Format/FileFormat/ELF
Format/FileFormat/PNG
FormattingRules
GCC
GHex
Help
Info
Info/Copyright Policy
Info/Introduction
Inline assembly
InterWikiName
I/O port address
I/O port address/0x0000~0x03ff
I/O port address/0x0c00~0x0fff
I/Oポートアドレス
KBC
KBC/Intel 8042
Kernel
Linker script
Links
MBR
Makefile
Memo
Memo/Flags
Memo/Linux
Memo/if文が遅い理由
Memo/アドレスの種類
Memo/クラス設計パターン
Memo/コメントアウト手法
Memo/ブートセクタ
Memo/メモリの連続領域(一次元)を多次元で扱う
Memo/リンカスクリプト
Memo/二重ループをアセンブリで書く
Memo/勉強会でのプレゼン
Memory management
Memory map
Menu
NDP
OS
OS glossary
OS用語集
PIC
PIT
PIT/Intel 8254
PORTA
PORTB
Page fault
Paging
Popular
Privilege levels
Projects
Projects/ML_Check
Projects/TestOS_CD
Projects/TestOS_FDD
QEMU
RTC
RTC/MC146818A
Recent
SandBox
Section
Stack
Stack switching
System port A
System port B
Top
Trouble Information
UEFI
VESA
arch/arm
x64
x64/Descriptor/Base
x64/Descriptor/Segment descriptor
x64/Descriptor/System descriptor
x64/Descriptor/System descriptor/System segment descriptor/LDT segment descriptor
x64/Descriptor/System descriptor/System segment descriptor/TSS descriptor
x64/Descriptor/System descriptor/Type
x86
x86/Descriptor
x86/Descriptor/AVL
x86/Descriptor/Base
x86/Descriptor/DPL
x86/Descriptor/D/B
x86/Descriptor/G
x86/Descriptor/Limit
x86/Descriptor/P
x86/Descriptor/S
x86/Descriptor/Segment descriptor
x86/Descriptor/Segment descriptor/A
x86/Descriptor/Segment descriptor/Type
x86/Descriptor/System descriptor
x86/Descriptor/System descriptor/Gate descriptor
x86/Descriptor/System descriptor/Gate descriptor/Call gate descriptor
x86/Descriptor/System descriptor/Gate descriptor/Interrupt gate descriptor
x86/Descriptor/System descriptor/Gate descriptor/Task gate descriptor
x86/Descriptor/System descriptor/Gate descriptor/Trap gate descriptor
x86/Descriptor/System descriptor/System segment descriptor
x86/Descriptor/System descriptor/System segment descriptor/LDT segment descriptor
x86/Descriptor/System descriptor/System segment descriptor/TSS descriptor
x86/Descriptor/System descriptor/Type
x86/GDT
x86/IDT
x86/Interrupt management
x86/LDT
x86/Register
x86/Segment selector
x86/Task management
x86/Task management/TSS
システム・ポートA
システム・ポートB
セクション
ヒデ
特権レベル
***L,B [#z9d6d172] リトルエンディアンにビッグエンディアンが続く構成。~ これは、両エンディアンに対応するため。 |0x050-0x057(8Byte)|ボリューム空間の大きさ|ボリュームの論理ブロック数[[(L,B)>#z9d6d172]]| の場合、 |~Byte|0|1|2|3|4|5|6|7| |~ボリューム空間の大きさ|>|>|>|L|>|>|>|B|
タイムスタンプを変更しない
*ISO 9660 [#b1214e5d] **目次 [#k6a4220e] #contents **概要 [#mee4e5ad] ISO 9660は、ISOで標準化された、CD-ROMのファイルシステムです。~ さまざまなOSに対応するため、かなり制限があり、文字コードまで決まっています。 ISO 9660ファイルシステムのCDイメージを作成するために、mkisofsというコマンドがlinuxにあります。~ →[[Manpage of MKISOFS>http://linuxjm.sourceforge.jp/html/cdrecord/man8/mkisofs.8.html]] **エンディアン [#g6547565] ISO 9660は、エンディアンが違っても読み取れるように、工夫されています。 -L : リトルエンディアン -B : ビッグエンディアン ***L,B [#z9d6d172] リトルエンディアンにビッグエンディアンが続く構成。~ これは、両エンディアンに対応するため。 |0x050-0x057(8Byte)|ボリューム空間の大きさ|ボリュームの論理ブロック数[[(L,B)>#z9d6d172]]| の場合、 |~Byte|0|1|2|3|4|5|6|7| |~ボリューム空間の大きさ|>|>|>|L|>|>|>|B| ***L/B [#g123804b] リトルエンディアンかビッグエンディアンのどちらかで記述する。 **d文字, a文字 [#e8e72d42] |>|>|>|>|>|>|>|>|>|>|>|>|>|>|>|>|CENTER:|c |>|>|>|>|>|>|>|~d文字|BGCOLOR(#ddd):|>|>|>|>|>|>|>|~a文字| |~Hex|~Char|~Hex|~Char|~Hex|~Char|~Hex|~Char|~|~Hex|~Char|~Hex|~Char|~Hex|~Char|~Hex|~Char| |0x00||0x20||0x40||0x60||~|0x00||0x20|SP|0x40||0x60|| |0x01||0x21||0x41|A|0x61||~|0x01||0x21|!|0x41|A|0x61|| |0x02||0x22||0x42|B|0x62||~|0x02||0x22|"|0x42|B|0x62|| |0x03||0x23||0x43|C|0x63||~|0x03||0x23||0x43|C|0x63|| |0x04||0x24||0x44|D|0x64||~|0x04||0x24||0x44|D|0x64|| |0x05||0x25||0x45|E|0x65||~|0x05||0x25|%|0x45|E|0x65|| |0x06||0x26||0x46|F|0x66||~|0x06||0x26|&|0x46|F|0x66|| |0x07||0x27||0x47|G|0x67||~|0x07||0x27|'|0x47|G|0x67|| |0x08||0x28||0x48|H|0x68||~|0x08||0x28|(|0x48|H|0x68|| |0x09||0x29||0x49|I|0x69||~|0x09||0x29|)|0x49|I|0x69|| |0x0a||0x2a||0x4a|J|0x6a||~|0x0a||0x2a|*|0x4a|J|0x6a|| |0x0b||0x2b||0x4b|K|0x6b||~|0x0b||0x2b|+|0x4b|K|0x6b|| |0x0c||0x2c||0x4c|L|0x6c||~|0x0c||0x2c|,|0x4c|L|0x6c|| |0x0d||0x2d||0x4d|M|0x6d||~|0x0d||0x2d|-|0x4d|M|0x6d|| |0x0e||0x2e||0x4e|N|0x6e||~|0x0e||0x2e|.|0x4e|N|0x6e|| |0x0f||0x2f||0x4f|O|0x6f||~|0x0f||0x2f|/|0x4f|O|0x6f|| |0x10||0x30|0|0x50|P|0x70||~|0x10||0x30|0|0x50|P|0x70|| |0x11||0x31|1|0x51|Q|0x71||~|0x11||0x31|1|0x51|Q|0x71|| |0x12||0x32|2|0x52|R|0x72||~|0x12||0x32|2|0x52|R|0x72|| |0x13||0x33|3|0x53|S|0x73||~|0x13||0x33|3|0x53|S|0x73|| |0x14||0x34|4|0x54|T|0x74||~|0x14||0x34|4|0x54|T|0x74|| |0x15||0x35|5|0x55|U|0x75||~|0x15||0x35|5|0x55|U|0x75|| |0x16||0x36|6|0x56|V|0x76||~|0x16||0x36|6|0x56|V|0x76|| |0x17||0x37|7|0x57|W|0x77||~|0x17||0x37|7|0x57|W|0x77|| |0x18||0x38|8|0x58|X|0x78||~|0x18||0x38|8|0x58|X|0x78|| |0x19||0x39|9|0x59|Y|0x79||~|0x19||0x39|9|0x59|Y|0x79|| |0x1a||0x3a||0x5a|Z|0x7a||~|0x1a||0x3a|:|0x5a|Z|0x7a|| |0x1b||0x3b||0x5b||0x7b||~|0x1b||0x3b|;|0x5b||0x7b|| |0x1c||0x3c||0x5c||0x7c||~|0x1c||0x3c|<|0x5c||0x7c|| |0x1d||0x3d||0x5d||0x7d||~|0x1d||0x3d|=|0x5d||0x7d|| |0x1e||0x3e||0x5e||0x7e||~|0x1e||0x3e| > |0x5e||0x7e|| |0x1f||0x3f||0x5f|_|0x7f||~|0x1f||0x3f|?|0x5f|_|0x7f|| **ボリュームの構成 [#od907601] ISO 9660のボリュームは、次の要素で構成されます。 -システムエリア(0-15セクタ) -[[ボリューム・ディスクリプタ群>#o08cf1ec]] -[[パステーブル>#k4ec8023]] -[[ディレクトリ・レコード>#he93e62f]] -ファイル本体 ちなみに、ボリュームとは管理の単位で、直訳すると(本の)"巻"などの意味がある。 **ボリューム・ディスクリプタ群 [#o08cf1ec] ボリューム・ディスクリプタには、以下のものがある。 -[[PVD : Primary Volume Descriptor>#x2726d88]](必須) -[[SVD : Supplementary Volume Descriptor>#x2726d88]] -[[EVD : Enhanced Volume Descriptor>#x2726d88]] -[[VPD : Volume Partition Descriptor>#c607518d]] -[[BRVD : Boot Record Volume Descriptor>#x7203626]] -[[VDT : Volume Descriptor Set Terminator>#d7efe73d]](必須) ***PVD : Primary Volume Descriptor, SVD : Supplementary Volume Descriptor, EVD : Enhanced Volume Descriptor [#x2726d88] PVDは必須のディスクリプタで、システムエリア(0-15セクタ)の次(16セクタ)に配置する。 |~Byte|~Size|>|>|~内容| |>|RIGHT:||||c |0x0000|0x0001|ボリューム記述子タイプ|PVD|1| |~|~|~|SVD|2| |~|~|~|EVD|2| |0x0001|0x0005|規格識別子|>|"CD001"| |0x0006|0x0001|ボリューム記述子バージョン|PVD|1| |~|~|~|SVD|1| |~|~|~|EVD|2| |0x0007|0x0001|BGCOLOR(#ddd):未使用|BGCOLOR(#ddd):PVD|BGCOLOR(#ddd):0| |~|~|フラグ|SVD|bit0:ISO 2375登録外のエスケープシーケンスが含まれない(0)/含まれる(1)| |~|~|~|EVD|~| |0x0008|0x0020|[[システム識別子>#z50ea3cb]]|>|[[a文字>#e8e72d42]]| |0x0028|0x0020|[[ボリューム識別子>#f8dd4732]]|>|[[d文字>#e8e72d42]]| |BGCOLOR(#ddd):0x0048|BGCOLOR(#ddd):0x0008|BGCOLOR(#ddd):未使用|>|BGCOLOR(#ddd):0| |0x0050|0x0004*2|[[ボリューム空間サイズ>#kbf57c82]]|>|ボリュームの論理ブロック数[[(L,B)>#z9d6d172]]| |0x0058|0x0020|BGCOLOR(#ddd):未使用|BGCOLOR(#ddd):PVD|BGCOLOR(#ddd):0| |~|~|エスケープシーケンス|SVD|エスケープシーケンス| |~|~|~|EVD|~| |0x0078|0x0002*2|[[ボリューム集合サイズ>#i867eb34]]|>|ボリューム集合サイズ[[(L,B)>#z9d6d172]]| |0x007c|0x0002*2|[[ボリューム順序番号>#i867eb34]]|>|ボリューム順序番号[[(L,B)>#z9d6d172]]| |0x0080|0x0002*2|論理ブロックのサイズ|>|論理ブロックのバイト数(通常は2,048)[[(L,B)>#z9d6d172]]| |0x0084|0x0004*2|[[パステーブル>#k4ec8023]]サイズ|>|[[パステーブル>#k4ec8023]]のバイト数[[(L,B)>#z9d6d172]]| |0x008c|0x0004|[[パステーブル>#k4ec8023]]の位置|>|先頭の論理ブロック番号[[(L)>#g6547565]]| |0x0090|0x0004|任意の[[パステーブル>#k4ec8023]]の位置|>|先頭の論理ブロック番号[[(L)>#g6547565]]| |0x0094|0x0004|[[パステーブル>#k4ec8023]]の位置|>|先頭の論理ブロック番号[[(B)>#g6547565]]| |0x0098|0x0004|任意の[[パステーブル>#k4ec8023]]の位置|>|先頭の論理ブロック番号[[(B)>#g6547565]]| |0x009c|0x0022|[[ルートディレクトリのディレクトリ・レコード>#w3083ffa]]|>|[[ディレクトリ・レコード>#he93e62f]]| |0x00be|0x0080|[[ボリューム集合識別子>#i867eb34]]|>|[[d文字>#e8e72d42]]| |0x013e|0x0080|出版者識別子|>|[[a文字>#e8e72d42]]| |0x01be|0x0080|データ編集者識別子|>|[[a文字>#e8e72d42]]| |0x023e|0x0080|応用システム識別子|>|[[a文字>#e8e72d42]]| |0x02be|0x0025|著作権ファイル識別子|>|[[d文字>#e8e72d42]]| |0x02e3|0x0025|抄録ファイル識別子|>|[[d文字>#e8e72d42]]| |0x0308|0x0025|書誌ファイル識別子|>|[[d文字>#e8e72d42]]| |0x032d|0x0011|ボリューム作成日時|>|[[日時構造体>#s4aeefb8]]| |0x033e|0x0011|ボリューム更新日時|>|[[日時構造体>#s4aeefb8]]| |0x034f|0x0011|ボリューム失効日時|>|[[日時構造体>#s4aeefb8]]| |0x0360|0x0011|ボリューム発効日時|>|[[日時構造体>#s4aeefb8]]| |0x0371|0x0002|ファイル構造バージョン|>|1| |>|RIGHT:BGCOLOR(#ddd):|>|>|BGCOLOR(#ddd):|c |0x0373|0x0001|予約|>|0| |0x0374|0x0200|アプリケーション用|>|-| |0x0574|0x028c|予約|>|0| ****日時構造体 [#s4aeefb8] |~Byte|~Size|>|~内容| |0x0000|0x0004|西暦年|[[d文字>#e8e72d42]](1-9999)| |0x0004|0x0002|月|[[d文字>#e8e72d42]](1-12)| |0x0006|0x0002|日|[[d文字>#e8e72d42]](1-31)| |0x0008|0x0002|時|[[d文字>#e8e72d42]](0-23)| |0x000a|0x0002|分|[[d文字>#e8e72d42]](0-59)| |0x000c|0x0002|秒|[[d文字>#e8e72d42]](0-59)| |0x000e|0x0002|1/100秒|[[d文字>#e8e72d42]]| |0x0010|0x0001|グリニッジ標準時からの偏差|15分単位| "グリニッジ標準時からの偏差"以外は文字列で、数値ではありません。 ****システム識別子 (Byte:0x0008) [#z50ea3cb] ****ボリューム識別子 (Byte:0x0028) [#f8dd4732] ボリュームの名前です。~ DOS等ではボリュームラベルとして見えるようです。 ****ボリューム空間サイズ (Byte:0x0050) [#kbf57c82] ****ボリューム集合サイズ (Byte:0x0078), ボリューム順序番号 (Byte:0x007c), ボリューム集合識別子 (Byte:0x00be) [#i867eb34] ディスクが複数枚で構成される場合に使用します。~ *****ボリューム集合サイズ (Byte:0x0078) [#hd1bc508] ディスクの枚数を指定します。~ 2バイト*2の[[(L,B)>#z9d6d172]]構成です。~ 1枚構成の場合は、01 00 00 01です。 *****ボリューム順序番号 (Byte:0x007c) [#b9e99970] ディスクの番号を指定します。~ 2バイト*2の[[(L,B)>#z9d6d172]]構成です。~ 1枚構成の場合は、01 00 00 01です。 *****ボリューム集合識別子 (Byte:0x00be) [#yb3bc018] 複数枚ディスクのグループに対する名前を指定します。 [[ボリューム識別子>#f8dd4732]]と同じでいいと思います。 ****ルートディレクトリのディレクトリ・レコード (Byte:0x009c) [#w3083ffa] 0x22バイト構成の[[ディレクトリ・レコード>#he93e62f]]がそのまま入ります。~ ディレクトリ識別子は0x00で、システム用エリアはありません。~ ディレクトリ識別子までで0x22バイトなので、パディングもありません。 ***VPD : Volume Partition Descriptor [#c607518d] |~Byte|~Size|>|~内容| |>|RIGHT:|||c |0x0000|0x0001|ボリューム記述子タイプ|3| |0x0001|0x0005|規格識別子|"CD001"| |0x0006|0x0001|ボリューム記述子バージョン|1| |BGCOLOR(#ddd):0x0007|BGCOLOR(#ddd):0x0001|BGCOLOR(#ddd):未使用|BGCOLOR(#ddd):0| |0x0008|0x0020|システム識別子|[[a文字>#e8e72d42]]| |0x0028|0x0020|ボリューム・パーティション識別子|[[d文字>#e8e72d42]]| |0x0048|0x0004*2|ボリューム区画の位置|先頭の論理ブロック番号[[(L,B)>#z9d6d172]]| |0x0050|0x0004*2|ボリューム空間の大きさ|ボリュームの論理ブロック数[[(L,B)>#z9d6d172]]| |BGCOLOR(#ddd):0x0058|BGCOLOR(#ddd):0x07a8|BGCOLOR(#ddd):システム用|BGCOLOR(#ddd):システム用| ***BRVD : Boot Record Volume Descriptor [#x7203626] |~Byte|~Size|>|~内容| |>|RIGHT:|||c |0x0000|0x0001|ボリューム記述子タイプ|0| |0x0001|0x0005|規格識別子|"CD001"| |0x0006|0x0001|ボリューム記述子バージョン|1| |0x0007|0x0020|起動システム識別子|[[a文字>#e8e72d42]]| |0x0027|0x0020|起動識別子|[[a文字>#e8e72d42]]| |BGCOLOR(#ddd):0x0047|BGCOLOR(#ddd):0x07b9|BGCOLOR(#ddd):起動システム用|BGCOLOR(#ddd):起動システム用| ***VDT : Volume Descriptor Set Terminator [#d7efe73d] ボリューム・ディスクリプタ群の終端を表すディスクリプタ。~ 無駄遣いもいいところ。。。 |~Byte|~Size|>|~内容| |>|RIGHT:|||c |0x0000|0x0001|ボリューム記述子タイプ|255| |0x0001|0x0005|規格識別子|"CD001"| |0x0006|0x0001|ボリューム記述子バージョン|1| |BGCOLOR(#ddd):0x0077|BGCOLOR(#ddd):0x07f9|BGCOLOR(#ddd):予約|BGCOLOR(#ddd):0| **パステーブル [#k4ec8023] パステーブルには、ボリュームが持つ全てのディレクトリの階層情報と、ディレクトリの場所が記されています。~ その情報はパステーブル・レコードに記されていて、一つのパステーブル・レコードは一つのディレクトリに対応しています。 ***パステーブル・レコード [#o415765f] |~Byte|~Size|>|~内容| |>|RIGHT:|||c |0x0000|0x0001|ディレクトリ識別子の長さ|| |0x0001|0x0001|拡張属性レコードの長さ|| |0x0002|0x0004|ディレクトリ・レコードの先頭LBA|[[(L/B)>#g123804b]]| |0x0006|0x0002|親ディレクトリの番号|[[(L/B)>#g123804b]]| |0x0008|可変|ディレクトリ識別子|| ||0x0001|パディング|全体を偶数にするための埋め合わせ。| **ディレクトリ・レコード [#he93e62f] ディレクトリ・レコードは、そのディレクトリが持つファイルやディレクトリの情報を記したものです。~ 子ファイル(ディレクトリ)の情報が連続で格納されています。 |~Byte|~Size|>|~内容| |>|RIGHT:|||c |0x0000|0x0001|このディレクトリ・レコード自体の長さ|ディレクトリ・レコードのバイト数| |0x0001|0x0001|拡張属性レコードの長さ|| |0x0002|0x0004*2|ディレクトリまたはファイルの先頭位置|論理ブロック番号[[(L,B)>#z9d6d172]]| |0x000a|0x0004*2|ディレクトリまたはファイルの大きさ|ディレクトリまたはファイルのバイト数[[(L,B)>#z9d6d172]]| |0x0012|0x0007|記録日時|| |0x0019|0x0001|[[ファイル属性フラグ>#d8bc8eba]]|[[ファイル属性フラグ>#d8bc8eba]]| |0x001a|0x0001|[[ファイルユニットの大きさ>#if7374ba]]|| |0x001b|0x0001|[[インタリーブ間隙の大きさ>#dd1bb2c3]]|| |0x001c|0x0002*2|[[ボリューム順序番号>#h0c27cbb]]|[[(L,B)>#z9d6d172]]| |0x0020|0x0001|ファイル識別子の長さ|| |0x0021|可変|[[ファイル/ディレクトリ識別子>#y5ab7903]]|[[d文字>#e8e72d42]]| ||0x0001|パディング|全体を偶数にするための埋め合わせ。| ||可変|システム用|| ***日時構造体 [#b128837d] |~Byte|~Size|>|~内容| |0x0000|0x0001|西暦年|1900年からの年| |0x0001|0x0001|月|1-12| |0x0002|0x0001|日|1-31| |0x0003|0x0001|時|0-23| |0x0004|0x0001|分|0-59| |0x0005|0x0001|秒|0-59| |0x0006|0x0001|グリニッジ標準時からの偏差|15分単位| ***ファイル属性フラグ [#d8bc8eba] |~bit|~値|~内容| |0|0|可視| |~|1|不可視| |1|0|ファイル| |~|1|ディレクトリ| |2|0|主ファイル| |~|1|関連ファイル| |3|0|ファイルがレコード形式を持たない| |~|1|ファイルがレコード形式を持つ| |4|0|許可条件無効| |~|1|許可条件有効| |>|>|BGCOLOR(#ddd):|c |5||予約| |6||予約| |>|>||c |7|0|ファイルの最終ディレクトリレコードである| |~|1|ファイルの最終ディレクトリレコードでない| ***ファイルユニットの大きさ [#if7374ba] ***インタリーブ間隙の大きさ [#dd1bb2c3] ***ボリューム順序番号 [#h0c27cbb] ***ファイル/ディレクトリ識別子 [#y5ab7903] ファイル名・ディレクトリ名です。~ [[d文字>#e8e72d42]]を使い、 ファイル名 + '.' + 拡張子 + ';' + バージョン の形で記述します。 **参考・関連 [#zd88a331] -[[El Torito]] -[[../Joliet]] -[[ISO 9660 CD-ROMファイルシステムの概要>http://euc.jp/periphs/iso9660.ja.html]] -[[「ISO 9660」の基礎知識>http://www.cds21solutions.org/osj/j/iso9660/]] -[[ISO9660について>http://www.h5.dion.ne.jp/~sfsf11/iso9660.html]] -[[ISO9660 と Joliet ファイルシステム>http://senbee.seesaa.net/article/46511886.html]] -[[Manpage of MKISOFS>http://linuxjm.sourceforge.jp/html/cdrecord/man8/mkisofs.8.html]]
Since 2008 July. OS Project Wiki