The Linux 2.4 SCSI subsystem HOWTO

Douglas Gilbert

      dgilbert@interlog.com
     

 - {

hisai@din.or.jp

Copyright (C) 2001, 2002, 2003 by Douglas Gilbert

2003-05-04

Revision History                                                       
Revision 2.0           2003-05-04          Revised by: dpg             
J[l 2.4.20ΉBlinuxdoc @tldp ɈڍsBraw foCX̍ŏIZN
^ɂāBblockdev ɂāB                                        
Revision 1.9           2002-11-20          Revised by: dpg             
xml ɕϊBJ[l 2.4.19 ΉBXyCB                         
Revision 1.8           2002-05-05          Revised by: dpg             
scsihosts ̋؂蕶ɃJ}Bgrub  lilo ɂāB                
Revision 1.7           2002-04-27          Revised by: dpg             
mkinitrd  scsi_debug ɂāBJ[l 2.4.18 ΉBATAPI ڍׂɁB
Revision 1.6           2002-01-26          Revised by: dpg             
ATAPI  CD-ROM ZNVB                                           
Revision 1.5           2001-12-21          Revised by: dpg             
16 oCg SCSI R}hBSCSI_IOCTL_GET_PCIB                        
Revision 1.4           2001-08-26          Revised by: dpg             
XyCBdd_rescueBmkinitrd ̗BJ[l 2.4 ΉB1394B        
Revision 1.3           2001-08-26          Revised by: dpg             
ATAPI  CD-ROM ̃ZNVB^CgύXBU320  iSCSIB            
Revision 1.2           2001-03-25          Revised by: dpg             
scu  dt ɂĂ̏BuAltvV[PXBߑ₷B              
Revision 1.1           2001-01-22          Revised by: dpg             
osst ɂĉB_EXTRA_DEVS ̐B                                

  ̃hLǵALinux J[l 2.4 nɂȂ_ł SCSI Tu
VXe܂B SCSI TuVXeTςĂ̂ȖړIł
B Linux  SCSI TuVXeVXeǗĂ̂ɖ𗧂f
Ă܂B܂TuVXe𗘗pAvP[VlɎQl
ƂȂ悤Aioctl() C^[tF[XɂĂȒPɐ܂B

  Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.1 or
any later version published by the Free Software Foundation; with no
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
Texts.

  For an online copy of the license see   www.fsf.org/copyleft/fdl.html
<http://www.fsf.org/copyleft/fdl.html>.

  y󒐁FGNU Free Documentation License, Version 1.1 ɂẮA  
GNU t[p_ <http://www.opensource.jp/fdl/fdl.ja.html>
QlɂĂz

 

Table of Contents
1. ͂߂
2. \Tς
3. OƃAhX
   
    3.1. SCSI ̃AhX̕t
    3.2. foCX
    3.3. devfs ł̃foCX
    3.4. scsidev ɂfoCX
   
4. J[l̐ݒ
5. u[g̃p^
6. W[Ƃ̃p^
7. Proc [t@CVXe
8. ԃxAC
   
    8.1. u[g̃p^
    8.2. W[̃p^
    8.3. proc C^tF[X
   
9. x̃hCo
   
    9.1. fBXNhCo(sd)
    9.2. CDROM hCo(sr  scd)
    9.3. e[vhCo(st)
    9.4. ėphCo(sg)
   
10. ჌x̃hCo
   
    10.1. [hCo
   
11. raw foCX
12. devfs [t@CVXe
A. ʓIȃoX̎(SCSI )
B. Linux J[l 2.2 ƌ̃J[l 2.4 Ԃ̕ύX
   
    B.1. ԃx̕ύX
    B.2. sd ̕ύX
    B.3. sr ̕ύX
    B.4. st ̕ύX
    B.5. sg ̕ύX
    B.6. Linux J[l 2.4 nł̕ύX
   
C. guV[eBO
D. ptH[}XAeXgAfobOp̃c[
E. RpCIvVƃVXeR[(ioctls ܂)
   
    E.1. ԃx
    E.2. sd hCo
    E.3. sr hCo
    E.4. st hCo
    E.5. sg hCo
   
F. QlƎӎAɂ

 

Chapter 1. ͂߂

  ̃hLǵALinux J[l 2.4 nɂȂ_ł SCSI Tu
VXe܂B

  SCSI TuVXeTςĂ̂ȖړIłB Linux  SCSI Tu
VXẽVXeǗɖ𗧂܂܂Ă܂B܂ATuVXe
𗘗pAvP[VlɁAioctl()̃C^[tF[Xɂ
GĂ܂BÃf[^\Ƃ̐݌v̖͈Ă܂
(W2Q)BȂ悤ɁARpCIvVƃVXeR
[(ioctl()܂)́AAppendix E ɋLq܂Braw foCX͌ɂ
SCSI TuVXëꕔł͂܂񂪁AɂĂ̐Chapter 11
ɂ܂B

  SCSI TuVXeɋȂ ATAPI CD C^[𓮍삳
ȂA Section 9.2.4ĂB Chapter 2ɖڂʂ̂ɗ
܂B

  ̃hLǵA5 NO Drew Eckhardt  SCSI-HOWTO (W7
Q)p̂łB SCSI-HOWTO ł́ALinux J[l 1.2 
1.3 n SCSI TuVXeĂ܂BLinux Documentation Project
(LDPBW8 Q)܂܂AuXVȂ(unmaintained)vZNV
ɒuĂ܂B̕ SCSI-HOWTO 悤ȍ\ɂȂĂ
܂ADrew ̃hLgɂ̓A_v^hCoɂĂ̏
񂪋LqĂ܂B

 y󒐁FDrew Eckhardt  SCSI-HOWTO ̓{́A  SCSI-HOWTO
̓{ <http://www.linux.or.jp/JF/JFdocs/archive/SCSI-HOWTO.html>
QƂĂz

  ̃hLg͓dq` www.tldp.org/HOWTO/SCSI-2.4-HOWTO <http:
//www.tldp.org/HOWTO/SCSI-2.4-HOWTO>ɂ܂Bz[TCg(т
炭̃hLg̍ŐVłƂ)́A  www.torque.net/scsi/
SCSI-2.4-HOWTO <http://www.torque.net/scsi/SCSI-2.4-HOWTO>ł(̓}
`y[W html `)B̃TCgł́AhLg txt  psApdfA
}`y[W html ƃVOy[W html()Ȃǂ̌`܂(Ⴆ
 postscript ł  www.torque.net/scsi/SCSI-2.4-HOWTO.ps <http://
www.torque.net/scsi/SCSI-2.4-HOWTO.ps>) łB

  ̃hLgŌɍXV̂́A2003 N 5  4 łB

 

Chapter 2. \Tς

  SCSI TuVXe 3 C\ĂāAuvx̓[U
[ԂJ[lԂ̃C^tF[XɁAuvx̓n[hEFAɐ
Ă܂Bx̃hCóAʂ 2 ̒ZŒmĂ
(Ⴆ΁usdv SCSI fBXNhCo)BΉ郂W[hCo
͉̂L̐}\{}ĂBjIȗRɂAW[h
Cô̖Ƒgݍ݃hCô̖قȂꍇ܂B

[scsi-arch]

  SCSI TuVXe 3 x̃hCo\

  x̃TuVXéA[UƃJ[l̊EʂT|[gĂ܂
B sd  sr ̓ubNfoCXAst  sg ̓LN^EfoCX̃C^
tF[XłB SCSI TuVXegǂȑ(Ⴆ΃fBXNZ
N^ǂݏo) A3 C̃hCoꂼ 1 g܂(Ⴆ
 sd  SCSI ̒ԃx̃hCoAaic7xxx hCo)B

  }Ă킩悤ɁASCSI ̒ԃxׂ͂Ă̑ŋʂłB
SCSI ̒ԃx́AC^tF[X`ĂAxA჌x
̃hCoɋʂ̃T[rX񋟂܂Bԃx񋟂 ioctl 
At@CfBXNv^x 4 ̃hCôǂɑĂĂ
LłB

  ubNfoCXɑ΂čł悭s鑀́At@CVXéu
}EgvłBʏ sd foCXp[eBV}Eg
( mount -t ext2 /dev/sda6 /home)Asr foCXfoCXŜ}Eg
肵܂ ( mount -t iso9660 /dev/sr0 /mnt/cdrom)BubNfoC
X̓ǂݏɂ dd R}hg܂B̏ꍇ́AubN̑傫
\(ubsv)ƂāÃfoCX̃ubN̑傫(Ⴆ΃fBX
N̏ꍇ͂Ă 512 oCg)ݒ肷邩ÃubN̑傫̐
{(Ⴆ 8192 oCg)ݒ肷Kv܂Bŋ߃ubNfoCXT
uVXéA1 ̃foCX(̓p[eBV) ɂnāA
d}Egł悤ɂȂ܂B

  sd ͔ėpfBXN 1 ŁAIDE TuVXe hd ɑ܂B sd
foCX}EgO΁Afdisk R}hgăfBXÑp[eB
Ve[uACł܂B hdparm ́AƂ ATA f
BXN(IDE  EIDE fBXNƂĒmĂ)R}hłA
SCSI fBXNɑ΂ċ@\IvV܂B

  sr  CD-ROM TuVXe 1 łBt@CVXe(Ⴆ
iso9660) }EgłقAI[fBI CD ǂނƂł܂BI[
fBI CD ǂލۂ́At@CVXe}Eg܂񂪁Aʂ
ioctl 񂩎s܂Bdd ̂悤ȈʓI Linux R}h́AI[
fBI CD ɂ͎g܂B

  st ̓LN^foCXŁAe[vǂݏ܂Bf[^̓]₻
̐ɂ́Aʏ mt R}hg܂B

  sg ̓LN^foCX̃C^tF[XgfoCX SCSI R}h
̂܂ܓn܂BėpI Linux R}hł́Asg foCX gȂ
ǂł傤Bsg 𗘗pĂAvP[V́ASANE(XLi[)
 cdrecordA cdrdao (CD C^[)Acdparanoia (I[fBI CD fW^
ɓǂݍ)ȂǂłB

 

Chapter 3. OƃAhX

  ̃ZNVł́ALinux  SCSI ̕ŎgĂď̂ƁAꂼ
̊֌W܂B

 

3.1. SCSI ̃AhX̕t

  Linux ł́ASCSI foCXɑ΂āA4 C̊KwIȃAhXt
Ă܂B

 E SCSI A_v^ԍ [host]
   
 E `lԍ [bus]
   
 E ID ԍ [target]
   
 E LUN [lun]
   
  uLUNv́ASCSI  Logical Unit Number ̗̂łBmn̒̒ṔA
[foCXt@CVXe(devfs)֋Xgp閼OłBȍ~̐
ł́Au`lvuoXvɗp܂B

  SCSI A_v^ԍ́Aʏ̓Rs[^̓o̓oX(PCIAPCMCIAA
ISA Ȃ) ɂA_v^J[hɑ΂āAтŕtꂽԍłB
̂悤ȃA_v^ HBA(host bus adapter)ƌꍇ܂B SCSI
A_v^̔ԍ́AJ[l 0 珸ɔs܂B

  HBA ͂ꂼASCSI oX 1 ȏ㐧䂵܂BlXȃ^Cv SCSI
oXAppendix AɋĂ܂B

  SCSI oXɂ͂ꂼꕡ SCSI foCXڑł܂BSCSI p
 HBA uCjVG[^vƌĂсAHBA  SCSI ID ԍ(ʏ 7) 1  
[1] ܂BCjVG[^ SCSI foCXƌĂ΂^[Qbg(Ⴆ΃f
BXN) Ƃ肵܂B SCSI ̃poXł́AID ̐ SCSI ̕
Ɗ֘A܂B 8 rbg̃oX(unarrowvƌĂԂƂ܂)́A8
 SCSI ID A̓ 1  HBA ɁAc 7  SCSI foCX
ɂȂ܂Bwide SCSI oX 16 rbgŁAő 15  SCSI foC
X(^[Qbg)ڑł܂B SCSI 3 Kĩhtgł́AƂ
 ID  SCSI oXɒu܂B

  e SCSI foCX́A Logical Unit Number (LUN)ێł܂B
̂悤ȕ LUN ́A̔}̂T|[gĂAȃe[v
u CD-ROM uŎg܂B

  Ƃ킯ŁALinux ɂ SCSI ̃AhXt̓́A4 C
KwƂȂ܂B

<scsi(_adapter_number), channel, id, lun>                              

devfs ̖O̕tɏKƁA͉L̂悤ɂȂ܂B

<host, bus, target, lun>                                               

 

3.2. foCX

  foCX́AfoCX̂̂ƂA𐧌䂷J[lh
Coւ̓ƍl܂BāÃfoCX̃foC
XwȀꍇ͏XقȂ񋟂̂邱Ƃ
Ȃł傤B

  /dev fBNgɂ́A܂܂ SCSI foCX܂B܂
Linux ł́ASCSI foCXʂ̂ SCSI ̃oXEAhX(Ⴆ
SCSI ̃^[Qbg ID  LUN)ł͂ȂÃW[A}Ci[ԍg
Ă܂B[foCXt@CVXe(devfs)́ÃW[A}Ci
[ԍgASCSI ̃oXEAhXɊÂfoCXg
Ɉڍs܂(قSection 3.3ŋc_܂BW5Q)Bʂ̕@
āAscsidev Ƃ[eBeB܂B̃[eBeBł́A
ύX_ Linux  SCSI TuVXe̓ň܂̂ŁA devfs ̂悤
ɃVXeŜɉeyڂ܂B scsidev ͌Section 3.4ŋc_
܂B W6QƂĂB

  SCSI fBXNɂ̓ubNW[ԍ 8 蓖ĂĂ܂B8A
65A 66A67A68A69A70A71 ̔ԍłBW[ԍ͂ꂼ 256
̃}Ci[ԍۗLłASCSI fBXN̏ꍇ͉L̂悤ɕ܂
B

[b,8,0]    /dev/sda                                                    
[b,8,1]    /dev/sda1                                                   
....                                                                   
[b,8,15]   /dev/sda15                                                  
[b,8,16]   /dev/sdb                                                    
[b,8,17]   /dev/sdb1                                                   
....                                                                   
[b,8,255]  /dev/sdp15                                                  

  ɕtȂfBXNfoCX(Ⴆ /dev/sda) ́AfBXN
ŜwĂ܂Bɑ΂ĐɕtĂfBXŃA
fBXÑp[eBV (15 ܂ŔF߂Ă) [2] ̓ 1 
wĂ܂B

  c 7 SCSI fBXNubÑW[ԍ́A悤ȃp^[
Ƃ܂B

[b,65,0]   /dev/sdq                                                    
[b,65,1]   /dev/sdq1                                                   
....                                                                   
[b,65,159] /dev/sdz15                                                  
[b,65,160] /dev/sdaa                                                   
[b,65,161] /dev/sdaa1                                                  
....                                                                   
[b,65,255] /dev/sdaf15                                                 
[b,66,0]   /dev/sdag                                                   
[b,66,1]   /dev/sdag1                                                  
....                                                                   
[b,66,255] /dev/sdav15                                                 
....                                                                   
[b,71,255] /dev/sddx15                                                 

  āAő 128 ̃fBXN(܂ /dev/sda  /dev/
sddx ܂)AꂼA15 ܂ł̃p[eBVĂ܂Bɑ΂
IDE TuVXéA20 ̃fBXN(10 ̃Rg[ꂼɃ}X^
[ 1 AX[u 1 )Aꂼꂪ 63 p[eBVĂ܂B

  SCSI  CD-ROM foCXɂ́AubNW[ԍ 11 蓖Ă
Ă܂B] sr foCXłA炭 scd ̕Ȃݐ[
ł傤Aŋ߂̃fBXgr[V̂͂Ił
B256  CD-ROM foCXt܂B

[b,11,0]   /dev/scd0          [or /dev/sr0]                            
[b,11,255] /dev/scd255        [or /dev/sr255]                          

  SCSI e[v́ALN^W[ԍ 9 蓖ĂĂ܂B 32
̃e[vfoCXT|[gĂAefoCXɂ 4 ̃[h (0A1
A2A3)̂ǂꂩŃANZXłAɃCh̗Lwł܂Bf
oCX͎̂悤Ɋ蓖Ă܂B

[c,9,0]    /dev/st0     [tape 0, mode 0, rewind]                       
[c,9,1]    /dev/st1     [tape 1, mode 0, rewind]                       
....                                                                   
[c,9,31]   /dev/st31    [tape 31, mode 0, rewind]                      
[c,9,32]   /dev/st0l    [tape 0, mode 1, rewind]                       
....                                                                   
[c,9,63]   /dev/st31l   [tape 31, mode 1, rewind]                      
[c,9,64]   /dev/st0m    [tape 0, mode 2, rewind]                       
....                                                                   
[c,9,96]   /dev/st0a    [tape 0, mode 3, rewind]                       
....                                                                   
[c,9,127]  /dev/st31a   [tape 31, mode 3, rewind]                      
[c,9,128]  /dev/nst0    [tape 0, mode 0, no rewind]                    
....                                                                   
[c,9,160]  /dev/nst0l   [tape 0, mode 1, no rewind]                    
....                                                                   
[c,9,192]  /dev/nst0m   [tape 0, mode 2, no rewind]                    
....                                                                   
[c,9,224]  /dev/nst0a   [tape 0, mode 3, no rewind]                    
....                                                                   
[c,9,255]  /dev/nst31a  [tape 31, mode 3, no rewind]                   

  SCSI ėpfoCX(sg)ɂ́ALN^W[ԍ 21 Ɋ蓖Ă
Ă܂Bő 256  SCSI ėpfoCX(sg)Ă܂B

[c,21,0]   /dev/sg0                                                    
[c,21,1]   /dev/sg1                                                    
....                                                                   
[c,21,255] /dev/sg255                                                  

  SCSI ėpfoCX̖O̍Ōɕt(Ⴆ /dev/sgc )́A
`łB

  SCSI fBXN SCSI CD-ROMASCSI e[v́A炩 sg foCXɃ}
bvĂ܂(fBXN̊ep[eBV̓}bvĂ܂
)B 3 ̃JeSłȂ SCSI foCX(Ⴆ΃XLi[)
Asg foCXƂČ܂B

  [foCX(Section 10.1Q)́Aʏ SCSI Ƃ͌ȂȂfoCX
 SCSI foCXƂĕ\܂BႦ ATAPI CD-ROM  ide-scsi [
hCoœ삵A/dev/scd0 Ƀ}bv܂B

  Linux ̃foCXƂɑΉW[A}Ci[ԍ̊蓖Ă
ẮAJ[l\[XƂƂɔzzĂ linux/Documentation/
devices.txt Mł郊t@XɂȂĂ܂B

 

3.3. devfs ł̃foCX

  foCX[t@CVXe /dev Ƀ}EgłAƏ]
Linux foCX̃TufBNgɒu܂B邢͕ʂ̏ꏊ(Ⴆ
 /devfs)Ƀ}Eg邱Ƃ\ŁÃfoCX\֒ǉ\
B

  devfs gȂƁAʏfoCX̓[gp[eBV dev fB
Ngň܂BāAfoCX (т̃p[~bV)
́At@CEVXeƓi܂BfoCXĂAK
foCX(͂̃foCX̃hCo)̎ɑ݂
ł͂܂B[UfoCX̃Gg[쐬(mknod
g)Ȃ߁AقƂǂ Linux fBXgr[Vɂ͉
foCX /dev fBNgɓĂ܂BAvP[VfoC
X open() 悤Ƃerrno l ENODEV Ԃꂽꍇ́AΉ
foCX(̓hCo)̎ɗpłȂƂ܂B

  devfs ͈@Ƃ܂BfoCX݂΁AȂ킿Ή
foCX(ƃhCo)݂邱ƂӖ܂B

  devfs  /dev Ƀ}EgĂꍇASCSI foCX̃vC}[fo
CX͂̂悤ɂȂ܂B

                                                                            
/dev/scsi/host0/bus0/target1/lun0/disc    [fBXNS]                    
/dev/scsi/host0/bus0/target1/lun0/part6   [p[eBV 6]                
/dev/scsi/host0/bus0/target1/lun0/generic [sg foCX̃fBXN]           
                                                                            
/dev/scsi/host1/bus0/target2/lun0/cd      [CD [_[ CD C^[] 
/dev/scsi/host1/bus0/target2/lun0/generic [sg foCX CD]                
                                                                            
/dev/scsi/host2/bus0/target0/lun0/mt      [e[v [h 0 Ch]      
/dev/scsi/host2/bus0/target0/lun0/mtan    [e[v [h 3 ChȂ]  
/dev/scsi/host2/bus0/target0/lun0/generic [sg foCX̃e[v]             

3 sڂ sg foCX́A1 sڂɂufBXNŚvɑΉĂA
̗҂͓AhX(܂ host0/bus0/target1/lun0)w܂B sg h
CoW[ł܂[hĂȂ(̓A[hĂ
)ꍇAL̃XgɂugenericvfoCX͌܂B

  (udiscvƂXyɒӁBdevfs ̊J҂́AČ̂̒Ԃ肪C
)B devfs ̖OtḰASection 3.1Ř_Ă SCSI ̃AhX
tɂ҂}b`Ă邱Ƃ킩ł傤BIDE TuVXe
悤(uscsivƂPuidevɒu)K devfs foCX
𖼕tĂ_oĂƗǂƎv܂Bdevfs Chapter 12 ł
ɘ_܂B

 

3.4. scsidev ɂfoCX

  scsidevƌĂ΂Ă郆[eBeBvÓAfoCX /dev/
scsi fBNgɒǉ܂B̃foCX́AefoCX SCSI Ah
X𔽉fĂ܂Bŏ 2 ͏ʃx SCSI hCo̖O
(Ⴆ sd  srAstAsg)łBuhv̌̐̓zXgԍŁǍ
u-v̓zXgʗp̔ԍłB PCI ̃A_v^ł͂̐͏ 0 ̂
łAISA A_v^ł͂ IO AhXɂȂ܂B(炭̃tB
[hɂ́Aɏ񂪓邩܂񂵁AȂ邩܂)B
ucvuivAulv̌ɂ鐔́Aꂼ`l(oX)ƃ^[Qbg
IDALUN ̒lɂȂ܂Braw fBXŃupvƃp[eBVԍt
B̓Ɋ܂܂ep[eBVɂ́Aupvƃp[eBVԍ
t܂B

y󒐁F}ɂƉL̂悤ɂȂ܂

 

sd  h0  -  0  c0  i0  l0  p1                                           
==  ==  =  =  ==  ==  ==  ===                                          
|   |   |  |   |   |   |   |                                           
|   |   |  |   |   |   |  p[eBVԍ 1                       
|   |   |  |   |   |   |                                               
|   |   |  |   |   |  LUN  0                                         
|   |   |  |   |   |                                                   
|   |   |  |   |  ^[Qbg ID  0                                   
|   |   |  |   |                                                       
|   |   |  |  oX(`l)ԍ 0                                   
|   |   |  |                                                           
|   |   |  PCI Ȃ 0, ISA Ȃ I/O AhX                           
|   |   |                                                              
|   |  Œ                                                            
|   |                                                                  
|  zXgԍ 0                                                      
|                                                                      
ʃx SCSI hCo̖O                                       

z

  scsidev ́Au[gV[PẌꕔƂē̂ʂłBSCSI ̐ݒ
ύXɂȂɓ̂ǂł傤(ႦΒ჌x̃hCoW
[ǉE폜Aadd/remove-single-device R}hg肷
)Bscsidev ̃VXeŎs /dev/scsi fBNg֒ǉ
ꂽO܂B̃VXeɂ́AfBXN 2 ACD-R hCu 1
AXLi[ 1 䂪tĂ܂B

$ ls -l /dev/scsi/   # abridged                                        
total 0                                                                
brw-------  8,   0 Sep  2 11:56 sdh0-0c0i0l0                           
brw-------  8,   1 Sep  2 11:56 sdh0-0c0i0l0p1                         
...                                                                    
brw-------  8,   8 Sep  2 11:56 sdh0-0c0i0l0p8                         
brw-------  8,  16 Sep  2 11:56 sdh0-0c0i1l0                           
brw-------  8,  17 Sep  2 11:56 sdh0-0c0i1l0p1                         
...                                                                    
brw-------  8,  24 Sep  2 11:56 sdh0-0c0i1l0p8                         
crw------- 21,   0 Sep  2 11:56 sgh0-0c0i0l0                           
crw------- 21,   1 Sep  2 11:56 sgh0-0c0i1l0                           
crw------- 21,   2 Sep  2 11:56 sgh1-0c0i2l0                           
crw------- 21,   3 Sep  2 11:56 sgh1-0c0i5l0                           
crw------- 21,   4 Sep  2 11:56 sgh1-0c0i6l0                           
br-------- 11,   0 Sep  2 11:56 srh1-0c0i2l0                           
br-------- 11,   1 Sep  2 11:56 srh1-0c0i6l0                           

SCSI ėpfoCX(sg)ƁÃfoCX̍xhCo(Ⴆ sd
AsrA st)Ő䂳ꂽꍇ̖OƂ̑Ή́A2 Ԗڂ̕𖳎ă}b
`閼OT΂킩܂B@łƁAusgh1-0c0i5l0vƂt
@C̓XLi[Ƃ킩܂B̃foCXɂ sg C^tF[Xo
RłANZXłȂłB

  scsidev pbP[W /etc/scsi.alias Ƃݒt@CA/dev/
scsi/scannerƂ悤ȖOt@\܂BpbP[Wɂ́A
rescan-scsi-bus.sh Ƃ֗ȃ[eBeB܂B scsidev ɂ
Ă̂ɏڂ W6ĂB̃VXeł́Adevfs 
scsidev ͉̖Ă܂B

 

Chapter 4. J[l̐ݒ

  Linux J[l̐ݒ́AʏJ[l\[X /usr/src/linux/.config
Ƃt@Cɂ܂B̃t@C͒ڂ̂ł͂ȂAL̃J
[lݒIvV̂ǂꂩ𗘗p邱Ƃ߂܂B

 E make config|LN^x[XŎ`ōs
   
 E make menuconfig|[w̐ݒc[ (ncurses gp)ōs
   
 E make xconfig|X x[X̐ݒc[ōs
   
  I̐́Aꂼ̃wv{^ŕ\܂B̓e
ASCII t@C /usr/src/linux/Documentation/Configure.help Ɋ܂܂Ă
܂B

  l܂ƂA̐ݒc[ .config t@CҏWĂ܂B
ÍAhCoJ[lɑgݍ܂(u=yv)AW[Ƃč
(u=mv)AIȂÂǂꂩłBIĂȂԂɂ́As
̐擪Ɂu#v(Ⴆ΁u# CONFIG_SCSIv͖ݒ\) ꍇ
A.config t@CɊ֘AsꍇƂ܂B

  SCSI TuVXe(mɂ SCSI ̒ԃx̃hCo)̎ȃIvV
́AL 3 ̂ꂩłB̒ 1 ۂ .config t@
Cɂ͂łB

CONFIG_SCSI=y                                                          
CONFIG_SCSI=m                                                          
# CONFIG_SCSI is not set                                               

  ̑AʓI SCSI ̐ݒIvV͉L̒ʂłB

                                                                       
CONFIG_BLK_DEV_SD        [fBXN(sd)hCo]                        
CONFIG_SD_EXTRA_DEVS     [ǉœfBXNp̑݃Xbg]        
CONFIG_BLK_DEV_SR        [SCSI CD-ROM(sr)hCo]                     
CONFIG_BLK_DEV_SR_VENDOR [CD-ROM ̃x_[ƎR}h]         
CONFIG_SR_EXTRA_DEVS     [ǉœ CD-ROM p̑݃Xbg]        
CONFIG_CHR_DEV_ST        [e[v(st)hCo]                          
CONFIG_CHR_DEV_OSST      [OnSteam  e[v(osst) hCo]            
CONFIG_CHR_DEV_SG        [SCSI ėphCo(sg)]                       
CONFIG_DEBUG_QUEUES      [̃L[̃fobOp]                    
CONFIG_SCSI_MULTI_LUN    [0 ȏ LUN ̃v[ű]               
CONFIG_SCSI_CONSTANTS    [SCSI ̃G[L̕]                     
CONFIG_SCSI_LOGGING      [sĨOW]                    
                                                                       
CONFIG_SCSI_<ll_driver>  [X̒჌x̃A_v^hCo]            
CONFIG_SCSI_DEBUG        [fobOp჌xhCo]                  
                                                                       
CONFIG_SCSI_PPA          [̃p|[g zip hCo]           
CONFIG_SCSI_IMM          [Ṽp|[g zip hCo]           
                                                                       
CONFIG_BLK_DEV_IDESCSI   [ide-scsi [A_v^]                       
CONFIG_I2O_SCSI          [I2O oXoR SCSI R}hEZbg]        
CONFIG_SCSI_PCMCIA       [PCMCIA oXoR SCSI HBA]                  
CONFIG_USB_STORAGE       [USBueʁv^Cv]                         
                                                                       
CONFIG_MAGIC_SYSRQ       [ً} sync p Alt+SysRq+S]                
                         [ً} ro ă}Egp Alt+SyrRq+U]        

  [gt@CVXe SCSI fBXNȂAJ[l SCSI ̒ԃ
x̃hCoAsd hCoÃfBXNȂĂA_v^̃h
CoKgݍłBĂ̏ꍇAsrAstAsg Ȃǂ̃hCo
̓W[Ƃč쐬Ă܂܂B̃hCo͕KvɂȂ
[h܂BXLi[̂悤ȃfoCXʂ̃A_v^ɐڑĂ
ȂÃhCo̓W[Ƃč쐬ǂł傤B̏
A_v^EhCóAXLi[FOɃ[hȂ΂Ȃ
܂B

  Linux fBXgr[Vɂ́ASCSI TuVXẽhCoW
[ƂĂĂ܂BŔAׂĂJ[lɑgݍނƋ
ɂȂĂ܂Au[g[_[̔\͂zĂ܂Ȃ
B́Au{悩A悩v̌ɂȂ܂B[gt@C
VXe[hɂ SCSI hCoKvɂȂ܂AhCo
[hɂ̓[gt@CVXe}EgȂ΂܂B
ɂ́A[h 2 iK𓥂 initrd foCXőΏł܂B (
ׂ́AChapter 6Q)B

 

Chapter 5. u[g̃p^

  PC ł́A}U[{[h BIOS  SCSI zXgA_v^̑啔񋟂
Ă SCSI BIOS ƂASCSI fBXNɂu[g[_[̃C
[WɃ[hEs鏈sĂ܂Bɂ́A}U[
{[h BIOS ̐ݒύXKv邩܂B 1 
ȏ SCSI A_v^ꍇɂ́ASCSI BIOS ̐ݒύXāAu[g
C[WfBXNȂĂA_v^ĂKv邩
܂Bu[gC[W ATA(IDE)fBXNu[^u CD-ROMA
tbs[EfBXNɑ݂ꍇ܂B

  Linux ̃u[g[_[ŗǂĝ́Alilo  grub łBݒt@
ĆAꂼ /etc/lilo.conf  /etc/grub.conf łB [3] ҂̈Ⴂ
 1 ́Alilo ŐݒύXA̐ݒLɂ邽߂ lilo R
}hs_ł(grub ł͂̂悤ȍƂ͕sv)Bg man y
[WĂB lilo  Linux ̃u[gV[PXɂĂ͑f炵
_܂B  ftp://icaftp.epfl.ch/pub/people/almesber/booting/
bootinglinux-0.ps.gz <ftp://icaftp.epfl.ch/pub/people/almesber/booting/
bootinglinux-0.ps.gz> łB grub ɂĂ͈ȉ䗗B  
www.gnu.org/software/grub <http://www.gnu.org/software/grub>B

  SCSI TuVXeɊ֘Au[g̃p^́AL̒ʂłB

                                                                       
 single         [VO[U[[h]                             
 <n>            [x <n> {0..6} ]                           
 root=/dev/sda6 [*]                                                    
 root=/dev/scsi/host0/bus0/target0/lun0/part6 [*]                      
 root=/dev/sd/c0b0t0u0p6   [*]                                         
 devfs=mount    [CONFIG_DEVFS_MOUNT=n ㏑]                        
 devfs=nomount  [CONFIG_DEVFS_MOUNT=y ㏑]                        
 init=<command> [init ł͂ȂA<command> ̎s]                      
 quiet          [u[gR\[o̓bZ[W̗}]               
 debug          [u[gR\[o̓bZ[W̏ڍ׉]             
 nmi_watchdog=0 [SMP }Vł NMI watchdog ~]                 
 max_scsi_luns=1  [LUN  0 ɑ΂Ă̂ SCSI oXXLs]      

* devfs gĂꍇAŏɃ[hEI[Ń[gp[eBV
}Eg鎞́A܂ł /dev/sd<a><n> Ƃ\LƂƂɐV
devfs ̕\Lgpł܂(ł͗Ă܂)Buroot=/dev/
sda6 singlevƂgݍ킹́AfBXN̓A_v^̕ύXɂ
AJ[lu[g̃[hȂɖɗł傤B

  uroot=v̈ 16 iłwł܂BႦ΃[gp[eBV
 /dev/sda3 ɂ΁Auroot=803vK؂ȕ\LƂȂ܂B 2 
ȑO̐߂ŏqׂ}Ci[foCXԍłB

  uinitvp^̃ftHg̈ /sbin/init ł(man 8  init 
Q)B/etc/fstab ̂悤ȃt@CɊԈڂꍇ́Auinit=
/bin/bashvŃVFɒڗ֗ł傤BLCu
t@C₻̃pXK؂łȂƁAs邩܂B
ꍇ́Auinit=/sbin/sashvƂ܂傤B͐ÓIɃNꂽVF
ŁAVXȅCɖ𗧂lXȃR}hĂ܂(man 8 sash 
Q)B

  Linux ͎̂悤ȃbZ[Woău[gɎs邱Ƃ܂B

  VFS: Cannot open root device 08:02                                   

́AJ[l /dev/sda2 foCXɃ[gp[eBV邱Ƃ
҂̂ɁAɂ͂ȂƂӖ܂BG[bZ[W̐
́AfoCX̃W[A}Ci[ԍ(16 i) ł(foCX̃}bs
OɂĂSection 3.2Q)B̂悤ȏꍇ́urootvu[gEIv
V֗ł(u[gC[W[gp[eBVTꏊύX
ɂ rdev R}hg܂)B

  lilo ̐ݒt@C /etc/lilo.conf Łuroot=vIvVw肷
 2 ̕@܂Bʏ́uroot=/dev/sda2vƂs܂B
̏ꍇAlilo R}hs̃VXȅԂɊÂāA/dev/sda2
̓W[A}Ci[ԍɕϊ܂B͓Ƀn[hEFA\
Xꍇɂ͂ȂƂɂȂ肩˂܂B̕@́Au
append="root=/dev/sda2"vƂs@łB̏ꍇA/dev/sda2
̓J[lɋN鎞ɓn܂B̓J[lu[gɁuroot=
/dev/sda2vR}hC̃vvgɓn̂ƓłBN
ɃJ[l߂܂̂(HBA  HBA ɐڑĂfoCXF
Ă)A_Ɉ܂B

 

Chapter 6. W[Ƃ̃p^

  SCSI ֘ÃW[͂񂠂܂BԂƏʃx̃W[
ɋ܂B

 E scsi_mod.o
   
 E sd_mod.o
   
 E sr_mod.o
   
 E st.o [osst.o]
   
 E sg.o
   
  ŏ 3 ́Aʏ̃hCoɁu_modvtĂ_ɒӂĂ
B჌x̃hCoɂ́AHBA ̐[J[̖O܂̗͂(
 advansys)ɉāAvȐp`bṽ`bvԍtƂ
܂ (Ⴆ sym53c8xx  NCR 53c8?? ñ`bvڂĂ symbios 
Rg[)B

  SCSI W[ׂ͂āAԃx̃hCoɈˑĂ܂B SCSI
̒ԃxhCoJ[lɑgݍ܂Ă炸A scsi_mod.o 
[hĂȂꍇA modprobe st ̂悤ȃR}hsƁA
scsi_mod.o W[[h邱ƂɂȂ܂B炭ɂˑ
W͂ŁAႦ modprobe sr_mod Ƃ΁ACD-ROM ̃W[
(܂[hĂȂ)[hł傤B܂ASCSI ̒ԃx
W[ȂASCSI TuVXêׂ̑ẴhCoW[
łȂ΂܂(̓J[l\z̐ݒc[ŋ܂)B

  modprobe <module_name> R}h́A<module_name> [hꍇA
 <module_name> ˑĂ郂W[ׂĂIɃ[h悤
Ƃ܂B܂A<module_name> w肷ہÁu.ovgq͕sv
BȂ΂̂悤ɑz肳܂By󒐁Fmodprobe ̃W[w
ɂ́ApX ('/') ▖ '.o' ܂߂Ă͂܂Bman modprobe 
z insmod <module_name>  <module_name> [h悤Ƃ܂
ÃW[ˑĂ郂W[Ƀ[h܂BW
[[hKA܂肠郂W[̑̃W[(K؂
p^)ǂ̂悤Ƀ[ĥ́Aʏ /etc/modules.conf
ɋLqĂ܂B( Linux J[lł́Ãt@C /etc/
conf.modules ƌĂłƂɒ)B̃t@Č`ɂĂ̂
ɏڂɂẮA man modules.conf Ă݂ĂB

  ǂ̃W[ɂR}hCŗpłp^A 
modinfo -p <module_name> R}hgĒׂ܂B

  x̃hCoAANeBuȃzXg݂Ȃꍇ
Aԃxuscsi_hostadaptervƂW[[h悤Ƃ
BŁualiasvgƁAuscsi_hostadaptervƎۂ̒჌x(A_
v^) hCo̖OƂѕt܂BႦ /etc/modules.conf Ɂu
alias scsi_hostadapter aic7xxxvƂsu΁Aaic7xxx W[
[h܂(ɃANeBuȒ჌x̃hCoȂ)B [4]

  W[̃p^(alias)łuscsi_hostadapterv initrd t@C
VXeɂ͓ʂȊ֌W܂BɏڂƂ́A man initrd  
man mkinitrd ĂB [5]

 

Chapter 7. Proc [t@CVXe

  proc [t@CVXéASCSI TuVXeɂĖ𗧂
܂Buproc_fsvIJ[l̐ݒIvV́A
CONFIG_PROC_FS ŁAĂ̏ꍇ͑IĂ͂łBSCSI ŗL̏
́A /proc/scsi ɂ܂B炭Ԃ悭ANZX鍀ڂ́A
Ă SCSI foCXXgAbv cat /proc/scsi/scsi łB
ׂ Section 8.3 ĂB

  ჌x̃hCóǍ` proc_fs Ɋ蓖ĂĂ܂B

    /proc/scsi/<driver_name>/<scsi_adapter_number>                     

<driver_name> ́uaic7xxxvuBusLogicvȂǂɂȂ܂B
<scsi_adapter_number>(zXgԍƂĂ)́A Section 3.1Ř_̂
ԍłB1 ̃hCõzXg𐧌䂷ꍇ̂ŁA
ӂĂB̃t@CɋL^ĂéA჌xhCo
ĕς܂ (̃t@Cʂăp^ݒłA_v^h
Co܂)Bj[XO[v⃁ei[ɏQ̕񍐂ۂɂ́A
̃t@C̏o͂YtƖɗ܂(Ⴆ cat /proc/scsi/
aic7xxx/0 )B

  CD-ROM hCóAڑĂ CD-ROM foCX̏ /proc/sys/dev
/cdrom fBNgŒ񋟂Ă܂Bɂ́ASCSI foCX(܂ sr
hCo䂵Ă) IDE foCX (܂ ide-cd hCo
䂵Ă)Ă܂B Section 9.2.3ĂB

  sg hCóAhCȍԂƐڑĂzXgуfoCX̏
 /proc/scsi/sg fBNgŒ񋟂Ă܂B

  proc [t@CVXeɂĂ̂ʓIȏ́AJ[l\[X
̃t@Cł /usr/src/linux/Documentation/filesystems/proc.txt ɂ
܂B

 

Chapter 8. ԃxAC

  SCSI ̒ԃx́ASCSI TuVXegꍇ͕Kp܂B
炭łdvȋ@\́ȂׂĂ SCSI hCogpC
^tF[XƓT[rXƂ`邱ƂłB݂̂ɂ
ẮÃhLgł͘_܂(W2Q)B

  匳̃J[lݒp^łuCONFIG_SCSIvɂāAԃx
gݍ݂(=y)AW[Ȃ̂(=m)܂܂BuCONFIG_SCSI=mvȂ
ȂׂĂ SCSI TuVXẽhCoW[ɂȂĂȂ
΂܂B

  ԃxW[Ƃč\zĂꍇA킴킴[h
Kv͂܂܂Bumodprobevgđ SCSI TuVXe
W[[h΁Aԃx(Ƀ[hĂȂ)[
h邩łB

  xƒ჌x̃hCoɂ́ÃhCo䂷foCX 1
Ȃ΁A(Sɂ)[hȂ̂܂Bɂ͂
񍐂P[X܂BႦΎɎ悤ɁAp|[gɐڑ
Ă zip hCo𐧌䂷 imm hCołB

$ modprobe imm                                                         
   imm.o: init_module: No such device                                  

lsmod ́uimmvW[[hꂽƂ͕\܂BƔȌ
ʂɂȂꍇ܂BႦ sg hCoVXeSCSI foCX
(ۂɂ̂͋[ɂ)ȂԂŃ[hƁA/proc/
scsi/sg fBNg͏o܂ (SCSI foCXFĂ͂߂č
܂)B

 

8.1. u[g̃p^

  J[lɑgݍ܂ꂽ SCSI hCóA炩ߌ߂ꂽԂŁA
䂷 HBA 邩ǂׂ܂B[U͂̏Ԃ𐧌䂷邱
͈؂ł܂B̏Ԃ͂ǂł\ȂꍇقƂǂłAÂ
ISA A_v^ł͌Fh߂ɒׂ̂~߂Ȃ΂ȂȂ̂
܂B [6] .

                                                                       
                                                                       
scsi_logging=<n>                                                       
    <n>  0 ƃO͎ȂB                                      
    <n>  0 łȂ΃OB                                    
                                                                       
max_scsi_luns=<n>                                                      
    <n>  1  8 ̒l(< lk 2.4.7)ŁAJ[l 2.4.7 ȏ͏      
    ɑ₹B                                                 
                                                                       
scsihosts=host0:hosts1::host3                                          

  ŋߌJꂽ devfs ł́AuscsihostsvƂu[gp^`
ĂA[Ȕ𐧌ł悤ɂȂĂ܂Bdevfs ̃hL
g (W5Q)̐ĂBu[gIvV́u
scsihostsvɓnXgɎw肷zXǵA჌x̃hCoł
(Ⴆ΁uscsihosts=advansys:imm::ide-scsiv)B [7] [8] uscsihostsv
p devfs ͕Kv܂Buscsihostsvp^́Aw肳΃u
[g̃bZ[Wɏo͂܂BႦ

scsi: host order: advansys:imm::ide-scsi                               

܂A HBA VXeɂƁA܂ŃXL܂(
Q)Buscsihostsvp^́A HBA ǂ̂悤ɏt
邩 (܂J[lǂ SCSI A_v^ԍƂǂ HBA ֌WtĂ
邩) ɉe܂BL̗ł́AuimmvhCou[gɌ
Ȃ΁ASCSI A_v^ԍu1v͊蓖Ă܂BuimmvhCo
ɃW[Ƃă[hƁA SCSI A_v^ԍu1v
蓖Ă܂BuscsihostsvɍڂĂȂhCoƁAɗ
p\ SCSI A_v^ԍgp܂(ႦΏL̗ȂAgݍ݂
aic7xxx hCóASCSI A_v^ԍ́u2vɂȂ)B

  J[lp^̑SXgƂ̐́A /usr/src/linux/Documentation
/kernel-parameters.txt t@Cɂ܂B

 

8.2. W[̃p^

  VXe SCSI fBXNꍇAʏ͒ԃx̃hCoJ[
lɑgݍޕ]܂ł傤BSCSI TuVXe܎gȂ
(Ⴆ ATAPI CD C^[ CD-R Ă)AԃxW[Ƃ
\zǂƎv܂BW[[h̃IvV́Agݍ
̂̂ƓłB

                                                                       
scsi_logging_level=<n>                                                 
    <n> ̓MOx̃}XN(0 MOȂ)                   
max_scsi_luns=<n>                                                      
scsihosts=host0::host2                                                 

 

8.3. proc C^tF[X

   SCSI TuVXeɐڑĂ(FĂ) SCSI foCX
\ɂ́Acat /proc/scsi/scsi ƂĂB

  o͉͂L̂悤ɂȂ܂B

    Attached devices:                                                  
    Host: scsi0 Channel: 00 Id: 02 Lun: 00                             
      Vendor: PIONEER  Model: DVD-ROM DVD-303  Rev: 1.10               
      Type:   CD-ROM              ANSI SCSI revision: 02               
    Host: scsi1 Channel: 00 Id: 00 Lun: 00                             
      Vendor: IBM      Model: DNES-309170W     Rev: SA30               
      Type:   Direct-Access       ANSI SCSI revision: 03               

  uAttached devices:vsɑAFĂfoCXꂼɂ
A3 s\܂B̂̍ŏ̍śASection 3.1Ř_
SCSI AhX̏łBƂ 2 śAfoCX̐ڑɎsꂽ
INQUIRY R}h瓾f[^łB̃foCX̏ sg hC
oł̏Ƃ̊֌WɂẮA Section 9.4Ă(Ă̏ꍇ
͓)B

  ̃foCX́A  echo "scsi remove-single-device <h> <b> <t> <l>"
> /proc/scsi/scsi gč폜ł܂B́AzXgƃoX(`l)
A^[Qbg(SCSI ID)A LUN łB̃R}hǂ́A
̃R}ȟ cat /proc/scsi/scsi s΂킩܂BfoCX
busy (Ⴆ΃foCXt@CVXeɃ}EgĂ)폜
sł傤B

  VK̃foCX́A  echo "scsi add-single-device <h> <b> <t> <l>" > /
proc/scsi/scsi gĒǉł܂B́AzXgƃoX(`l)A^
[Qbg(SCSI ID)A LUN łB̃R}hǂ́ÃR
}ȟ cat /proc/scsi/scsi s΂킩܂B [9]

  SCSI TuVXéASCSI foCX̃zbgvOT|[gĂ܂
 (SCSI poXɊ֘AdCIȖ)B
add+remove-single-device āAڑƂꍇ́A SCSI oX
̑̃foCXԈႢȂ~ĂB

   SCSI R}h܂Ƃ߂ăXgo͂ɂ́A  echo "scsi dump <n>
" > /proc/scsi/scsi gĂB<n> ̐l͉ł܂܂B
lɋ̂́A炭 SCSI TuVXẽoOǐՂ
ł傤B

  MOR\[⃍Oɏo~߂肷ɂ́A   echo
"scsi log <token> <n>" > /proc/scsi/scsi gpĂB <token>
ɂ́AuallAnoneAerrorAtimeoutAscanAmlqueueAmlcompleteA llqueue
AllcompleteAhlqueueAhlcompleteAioctlv̂ǂꂩ 1 w肵܂B
<n> ́A0  7 ̐łBuallvƁunonev́A<n> Ƃ܂
Bړ̈Ӗ͉L̒ʂłB

                                                                       
    hl    x̃hCo(OFsg ́utimeoutvg]             
    ml    ԃx                                                   
    ll    ჌x̃hCo                                           
          (A_v^hCoɂ͓Ǝ̃tO邱Ƃ悭)       

u0vƂl̓MO𖳌ɂAu7v͏o͂ł邾ڍׂɂ܂
BMÓAJ[l\z̍ۂ CONFIG_SCSI_LOGGING Iꍇ
̂ݏo͂܂B


                              Warning                               

xFuscsi log allv(ѓl̑̎w)ƂƁAOt@C  
(Ă /var/log/messages) SCSI fBXNɂꍇAO̖
[vN܂BJ[l̃MOf[𖳌ɂ
邩Ao͂ SCSI foCXł͂ȂfoCX֌ĂB        

 

Chapter 9. x̃hCo

  x̃hCóAfoCX̘_NX(Ⴆ΃fBXN)ɂāA
OS C^tF[X̃J[lǗ܂B܂x̃hCóAJ
[l SCSI R}h\ƂAJ[l SCSI TuVXe
̃\[XǗSĂ܂B[UԂœAvP[V́AX
yVt@C(ubN̓LN^)I[vÃh
CoɃANZX܂B̃XyVt@ĆAʏ /dev fBNg
c[ɂ܂B

 

9.1. fBXNhCo(sd)

  sd hCooRăANZXł SCSI foCX́A2 ނ܂B

 E uڃANZXvfoCXBʏ͎CfBXNwB (SCSI ӑu
    R[h 0)
   
 E ufoCXvBMOD fBXNƌĂ΂邱ƂB (SCSI 
    uR[h 7)
   
sd hCo̓ubNfoCXŁAڂɃubNTuVXeƌт
܂Bp[eBV̊TOT|[gĂ܂ (man sd 1992 N
݂܂)B

  sd hCóAJ[l̃u[gA̓u[gɃW[
ă[hꂽɁA128 ̃fBXNFł܂Bx[h
ƁAݕ̃fBXN͈̂ݔF܂B̑݃fBXN
̌́AJ[lݒp^ł CONFIG_SD_EXTRA_DEVS ɂĐݒ
܂BftHg̒l 40 łB

 

9.1.1. sd ̃u[g̃p^

  ܂B

 

9.1.2. sd W[̃p^

  sd hCóAW[Ƃă[hꂽꍇAp^Ƃ
BW[ sd_mod.o ł邱ƂYȂB

 

9.2. CDROM hCo(sr  scd)

  CD-ROM  DVD hCu( WORM foCX)́Ax̃foCXhC
oł sr oRŃANZXł܂BfoCXhCo̖Óusrvł
AW[́usr_modvłBfoCXt@C /dev/sr<n> 
 /dev/scd<n> łB

  L̐}\́Asr ܂ CD-ROM TuVXe̐łB

[cdrom]

  CD-ROM TuVXe̍\

  ̐}\ł́AvgRX^bNԂ̈Ⴂ͉BĂ܂BCD-ROM foC
X CD-ROM CꂵĖʓ|Ă킯ł͂ȂAނX
vgRX^bNʓ|Ă܂B IDE TuVXeł́ASɂ
uidevhCofoCX̖ʓ|Ă (܂Aide-cd hCo
͂Ȃ)̂ɑ΂ASCSI TuVXeł sr hCosĂ܂BUSB
 IEEE1394  cd foCX́Â̂̃X^bNʓ|Ă܂B
́A/dev/cdrom K؂ȃTuVXẽfoCXւ̃V{bNE
NɂȂĂ闝R̈ꕔƌ邩܂B

  sr hCooRŃANZXł SCSI foCXɂ́A2 ̃^Cv
܂B

 E CD-ROM foCX(DVD vC[܂) (SCSI Ӌ@R[h 5)
   
 E WORM ƌĂ΂uǋL^vfoCX (SCSI Ӌ@R[h 4)
   
  sr hCóAJ[l̃u[gA̓W[Ƃău[g
[hꂽɁA256  CD-ROM  DVD Fł܂BA
x[hƁAݕ̃hCu͈̂ݔF܂B̑
hCǔ́AJ[lݒp^ł CONFIG_SR_EXTRA_DEVS Ő
肵܂BftHg̒l 2 łB

 

9.2.1. sr ̃u[g̃p^

  ܂B

 

9.2.2. sr W[̃p^

  CD-ROM hCu XA [h([h 2)T|[gĂ邩ǂ𒲂
eXgsƁAhCuɂĂ̓t@[EFÃoOꍇ
܂B̂ XA [h̃T|[g̃`FbŃAftHgŖɂ
Ă܂B̂悤ȃW[p^܂B

    xa_test=<0|1>                                                      

ftHgύX܂B(sr hCoJ[lɑgݍ܂ĂƁA
ł XA [h̃eXgLɂ@悤ł)B

 

9.2.3. sr proc C^tF[X

  L̃t@C͒Nǂ߁AASCII ŏo͂܂B

 /proc/sys/dev/cdrom/autoclose                                         
 /proc/sys/dev/cdrom/autoeject                                         
 /proc/sys/dev/cdrom/check_media                                       
 /proc/sys/dev/cdrom/debug                                             
 /proc/sys/dev/cdrom/info                                              
 /proc/sys/dev/cdrom/lock                                              

̃t@ĆACD-ROM TuVXě݂̏Ԃ\킵Ă܂B
 procfs ̈̈ꕔŁAsysctl ̐ݒ@\ɒʂĂ܂ (man sysctl
Q)Binfo ȊÓAX[p[[U߂܂Binfo ɂ́AVXe
ɂ CD-ROM  DVD v[[ꂼ̗񂪑݂Ă܂ (SCSI fo
CXȊO܂)B

  ƂāAX[p[[U echo "1" > /proc/sys/dev/cdrom/autoeject
ƂƁAI[gGWFNg@\LɂȂ܂BƃA}Eg
ɃhCu CD-ROM CWFNg܂B

 

9.2.4. ATAPI CD-ROM

  Linux [Ȗ́ASCSI foCX(̓A_v^)Ă܂
B̂悤ȃ[ÚACD C^[̃\tgEFA(Ⴆ cdrecord  
cdrdao))≹y CD 𕷂vO(Ⴆ cdparanoia)AȂ Linux 
SCSI TuVXegp̂AX˘f܂B́ÃvO
foCXփANZX̂ɁA჌x̃hCoKvƂĂ邩
łB ATAPI(ATA Packet Interface)́A{I ATA ]zSCSI R
}hZbg𑗂oĂ܂ [10] (̃ZNVł̋c_́AATAPI e
[vhCu ATAPI tbs[hCuɂKpł܂)B

   cdrecord  cdparanoia ͂Ƃ SCSI ėphCo(sg) Ɛڑ
܂B܂ ATAPI CD foCX̏ꍇ́An[hEFAɃANZX̂
ide-scsi [foCX𗘗pĂ܂BJ[l 2.4 n ioctl ̃pP
bgC^tF[XA CD-ROM Cɒǉꂽ̂(L Section
9.2 ̐}Q)͍ύX邩܂B [11]

  Linux  IDE TuVXẽftHǵAgݍ݂̃hCo
Ă ATA foCX̊Ǘv܂B ATAPI CD C^[ȂAgݍ
݂ ide-cd hCovo܂BxȂƁASCSI TuVXe
 ATAPI foCX̐䂪łȂȂ܂B ide-scsi([჌x SCSI)
hCóAIDE TuVXeɂėvȂ ATAPI foCX
 SCSI TuVXeɓo^ł܂B

  Oȋgݍ݂ƂɒӂĂB ide-cd  ide-scsi h
CoW[ȂAŏɃ[hꂽ̂ ATAPI CD foCX(Ⴆ
 CD-ROM  DVD ̃[_[⃉C^[)v܂BɁAh
CoW[ rmmod ÃW[ modprobe 肵āA
؂ւ܂B

  /dev/hddɂ CD C^[ cdrecordANZX\Ƃ悤 IDE
̃RAhCoɑ΂Ė߂ɂ́AJ[lu[g̃IvVł
uhdd=ide-scsiv𗘗p@ł_ł傤B ide-cd hC
o /dev/hdd 𖳎܂(ide-cd hCogݍ݂łĂW[
łĂ֌W܂)Bide-scsi hCogݍ݂̓W
[Ƃđ݂΁A/dev/hdd ɂ CD C^[uv܂(v
ƁAIDE ̃RAƂȂhCo ide-scsi W[[h
)B

  ide-cd hCoW[ɂ́A ATA foCX𖳎悤A
̂悤ɖ߂ł܂B

modprobe ide-cd ignore='hdc hdd'                                       

̏ꍇAide-cd hCo /dev/hdc  /dev/hdd ɂfoCX𖳎
܂B /etc/modules.conf t@CɁuoptions ide-cd ignore=hddvƂ
sǉ邱Ƃɂēʂ܂B

  J[l 2.4 nɒǉꂽVIvVɁuhdd=scsiv܂
B̃IvV́ALŏqׂuhdd=ide-scsivƓ悤ȋ@\Ɍ
܂BɁuhdd=scsiv́ASCSI ԃx ide-scsi hCo҂
J[lɑgݍ܂ꂽɂpł܂(ȊȌꍇɂ
ide_setup ֐uBAD OPTIONv񍐂܂)B

  SCSI TuVXe ATAPI CD foCXuǗvĂ邩ǂ
ɂ́Acat /proc/scsi/scsi ̏o͂`FbNĂB 1 ̕@
́Acat /proc/sys/dev/cdrom/info ́udrive name:vāAusrvƂ
ڂɒڂ@łBL͎̃VXȅo͂łB

$ cat /proc/sys/dev/cdrom/info                                         
CD-ROM information, Id: cdrom.c 3.12 2000/10/18                        
                                                                       
drive name:             sr1     sr0                                    
drive speed:            16      0                                      
drive # of slots:       1       1                                      
Can close tray:         1       1                                      
Can open tray:          1       1                                      
Can lock tray:          1       1                                      
Can change speed:       1       1                                      
Can select disk:        0       0                                      
Can read multisession:  1       1                                      
Can read MCN:           1       1                                      
Reports media changed:  1       1                                      
Can play audio:         1       1                                      
Can write CD-R:         1       0                                      
Can write CD-RW:        1       0                                      
Can read DVD:           0       1                                      
Can write DVD-R:        0       0                                      
Can write DVD-RAM:      0       0                                      

  /dev/hdd ɂ ATAPI CD C^[xł SCSI TuVXe֓o^
ƁA CD-ROM ́uscdvƂfoCXgă}Eg͂ł
BCD v[[uscdvfoCXgȂ΂܂BȂƂɁA 
hdparm R}h́A܂ /dev/hdd foCXt@Cgp邱ƂɂȂ
܂ (́Auecho ... > /proc/ide/hdd/settingsvƂ@)B 
[12]

 

9.3. e[vhCo(st)

  e[vhCõC^tF[XɂẮA /usr/src/linux/drivers/
scsi/README.st t@CA st(4)  man y[W(man stƓ)ɂ܂Ƃ߂
Ă܂B README.st ɂ́AlXȃhCo̗lXȃp^IvV
AhCogĂ{IȂ݂LqĂ܂B

  e[vhCóAʏ mt R}h(man mt Q)ŃANZX܂B
mtx ́Ae[vI[g[_[̐ɑΉĂvOł ( 
mtx.sourceforge.net <http://mtx.sourceforge.net>Q)B

  st hCóAӋ@^CvuV[PVANZXv(R[hԍ
 1)ł SCSI foCXo܂(hCoureject_listvɂ
̂͏)B ( reject_list ɂ鍀ڂ OnStream ̃e[vhCu[
̃ZNVŐ]ł)B

  st hCo 32 ̃e[vhCuFł܂Be[vhCu
 8 ̃foCXt@C܂B4 ̃[h(ԍ 0  3
܂)ꂼɁAChAChȂ̃oG[V
Be[vfoCX̃t@ĆASection 3.2ɗႪ̂ŌĂ
Be[vhCu st hCõ[hɂłǉł܂ (x
 32 ܂)B

  ̃hCóAide-scsi [A_v^̃hCoƂɗp΁A
ATAPI e[vhCu𐧌ł܂BSection 9.2.4Ř_Ƃ́A ATAPI
e[vfoCX( ATAPI tbs[)ɂĂ͂܂܂B

 

9.3.1. st ̃u[g̃p^

 

                                                                                
st=xxx[,yyy]  xxx ͉L̓ 1 ܂B                               
buffer_kbs:<n>                                                                  
write_threshold_kbs:<n>                                                         
max_buffers:<n>                                                                 
max_sg_segs:<n>                                                                 
                                                                                
                                                                                
(ȑÕu[g̃p^ł st=aa[,bb[,cc[,dd]]] T|[gĂ܂A 
܂)                                                                 

  ftHg̃hCõobt@TCY(buffer_kbs) 32(܂ 32 KB)
BftHg̔񓯊臒l 30(܂ 30 KB)łBftHg
Ɋmۂobt@̐(max_buffers) 4 łBftHgŎgp
 scatter/gather ZOg̐(max_sg_segs) 32 łB

 y󒐁FScatter/Gather(XLb^EMU[) Ƃ́ADMAAoXE}X^[
Aȓ]sꍇɁAUĂ܂Ă郁̃f[^܂
߂ĘA]@\łz

 

9.3.2. st ̃W[̃p^

 

buffer_kbs=<n>                                                         
write_threshold_kbs=<n>                                                
max_buffers=<n>                                                        
max_sg_segs=<n>                                                        

 

9.3.3. st  proc C^tF[X

  ܂B

 

9.3.4. OnStream foCXp osst hCo

  OnStream e[vhCuɂ́Aʂ̃hCu܂BtI
ȍx̃hCoŁAst hCoƋł܂B̃hCóuosst
vł(W[)B

  OnStream  SC-x0 SCSI e[vhCúAW st hCoł͓삵
܂B̂ɁAʂ osst hCo /dev/osst<x> LN^f
oCXm[h(W[ԍ 206)KvɂȂ܂B (<x>  Section 3.2 
悤ȁAst foCXƓlȖKɏ]܂)B usb-storage 
ide-scsi p΁AUSB-x0  DI-x0 hCu삷邩܂B
OnStream ɂ́A񐢑̃e[vhCu(ADR-x0)݂邱Ƃɒӂ
B́Ae[v(QIC-157)p̕W SCSI-2 R}hT|[g
Ast ̕WhCoœ삵܂Bɏڂ́AJ[l\[X
̃t@Cł /usr/src/linux/drivers/scsi/README.osst Ă
B OnStream hCoɒm肽΁A  linux1.onstream.nl/test
/ <http://linux1.onstream.nl/test/>ɂ܂B

 

9.4. ėphCo(sg)

  ނ SCSI foCX́Asg hCooRŃANZXł܂B
܂A CD-ROM hCuȂAsr  sg hCołANZXł܂
BXLi[̂悤Ȃ̑ SCSI foCX sg hCogĂ̂݃A
NZXł܂B sg hCóA256  SCSI foCXFł܂B
foCX sg hCõ[hɂłǉł܂(x
256 ܂)B

  SCSI ėp(sg)hCõhLgW4QƂĂ(sg_utils p
bP[WɂĂ܂)B SCSI KiɂẮAW1 SCSI ̃vO~
OƂȂĂ鏑ЂQƂĂB݂׋΁A 
B3QƂĂB

  J[l 2.4 ɂ sg hCóuo[W 3vŁAC^tF[X
@\̒ǉƐV ioctl() ܂BVK ioctl() ňԂ
낢̂́A SG_IO ŁASCSI R}h𑗂oẢ҂܂B
Linux Documentation Project TCgɂ  www.tldp.org/HOWTO/
SCSI-Generic-HOWTO/ <http://www.tldp.org/HOWTO/SCSI-Generic-HOWTO/> 
́Asg hCoɂĂ̊ȉ܂B̃hLg(
炭V)o[ẂA  www.torque.net/sg/p/sg_v3_ho.html <http:
//www.torque.net/sg/p/sg_v3_ho.html>ɂ܂B

  J[lŎgpĂusgvƂɂ́ASCSI ėphCow
ꍇƁAŋ߂̓o̓foCX(ʂ DMA Ή)̑񋟂ĂA
scatter-gather @\wꍇɎgĂ܂BǂӖ̂́A
łBႦ΁ASG_GET_SG_TABLESIZE Ƃɂ sg  ioctl
()́A2 Ԗڂ́uSGv scatter-gather wĂ܂B

  sg ̌JC^tF[X /usr/src/linux/include/scsi/sg.h ɂ܂
BfBXgr[Vɂ܂A GNU Cũei
[ǗĂ /usr/include/scsi/sg.h Ɠe܂񂵁A
܂B 2 ̃t@C̓ełȂ΁AO҂̃wb
_[t@CgĂB sg x[XŃAvP[Vꍇ
Asg ̕āA̖[ǂł傤B

  sg hCóA݂ SCSI foCXׂĂo^Ă܂(̍
吔́A 256 )BVo^ SCSI foCXꂼɁAɗp\
ȃ}Ci[ԍmۂ܂BȂƂŏ̓́Acat /proc/scsi/scsi
ŕ\钆ԃx̂̂ƓԂłBsg foCX̃}bsÓA
cat /proc/scsi/sg/devices  cat /proc/scsi/sg/device_strs ł킩
܂B cat /proc/scsi/scsi  sg ̏̈Ⴂ̂́A჌x
hCo폜ꂽ(Ⴆ rmmod aha1542)foCX
remove-single-device ō폜ꂽłB sg hCóAcĂ
SCSI foCXύX邱ƖA}Ci[foCXԍɃ}bsO
܂B sg ̃}bsOɁuԁvcƂɂȂ܂BL
łB

$ cat /proc/scsi/scsi                                                  
Attached devices:                                                      
Host: scsi0 Channel: 00 Id: 00 Lun: 00                                 
  Vendor: IBM      Model: DNES-309170W     Rev: SA30                   
  Type:   Direct-Access            ANSI SCSI revision: 03              
Host: scsi1 Channel: 00 Id: 02 Lun: 00                                 
  Vendor: PIONEER  Model: DVD-ROM DVD-303  Rev: 1.10                   
  Type:   CD-ROM                   ANSI SCSI revision: 02              
Host: scsi1 Channel: 00 Id: 06 Lun: 00                                 
  Vendor: YAMAHA   Model: CRW4416S         Rev: 1.0g                   
  Type:   CD-ROM                   ANSI SCSI revision: 02              
                                                                       
$ cat /proc/scsi/sg/device_strs                                        
IBM             DNES-309170W            SA30                           
PIONEER         DVD-ROM DVD-303         1.10                           
YAMAHA          CRW4416S                1.0g                           
                                                                       
$ echo "scsi remove-single-device 1 0 2 0" > /proc/scsi/scsi           
                                                                       
$ cat /proc/scsi/scsi                                                  
Attached devices:                                                      
Host: scsi0 Channel: 00 Id: 00 Lun: 00                                 
  Vendor: IBM      Model: DNES-309170W     Rev: SA30                   
  Type:   Direct-Access            ANSI SCSI revision: 03              
Host: scsi1 Channel: 00 Id: 06 Lun: 00                                 
  Vendor: YAMAHA   Model: CRW4416S         Rev: 1.0g                   
  Type:   CD-ROM                   ANSI SCSI revision: 02              
                                                                       
$ cat /proc/scsi/sg/device_strs                                        
IBM             DNES-309170W            SA30                           
<no active device>                                                     
YAMAHA          CRW4416S                1.0g                           

sg hCoudevice_strsv̏o͂ɂāAcĂfoCX̕ш
uǂ̂悤ɊǗĂ邩悭ĂBPioneer  DVD v[
[폜 sg foCX̃}bsOɂ͌Ԃł܂A cat /
proc/scsi/scsi ɂ͌܂B́uԁv /dev/sg1 ɊY܂B

  V sg_io_hdr C^tF[Xɂ́A]f[^ʂJEg邽
́uresidvƂtB[h܂B჌x̃A_v^̂
̋@\T|[gĂȀꍇł݂̂̃tB[h 0 ȊO
܂B̃hLg̎Mł́AadvansysAaha152xAsym53c8xx h
Cő@\T|[gĂ܂B

 

9.4.1. sg ̃u[g̃p^

  sg hCóAI[vĂt@CfBXNv^ꂼɑ΂
A\ς݂̃obt@ǗĂ܂B̖ړÍAAvP[Ṽf
[^]ɍۂăJ[l̃ȂȂĂA\obt@̑傫
ɒB܂ł͓]sȂƂۏ؂邱ƂłB́A
cdrecord ̂悤 ENOMEM G[ȒPɂ͕łȂ(CD-R Ȃ̂) A
vP[VɂƂĂ͏dvłB

  u[g̃p^Ɂusg_def_reserved_sizevȂAsg W[
̃p^łudef_reserved_sizevȂ肷ƁAsg ̃t@C
fBXNv^I[vxɁAinclude/linux/sg.h ɒ`Ă
SG_DEF_RESERVED_SIZE ̂܂܎g܂B

  SG_DEF_RESERVED_SIZE ̒ĺAL̃J[lu[g̃IvVŕύX
\łB

    sg_def_reserved_size=<n>                                           

 

9.4.2. sg ̃W[̃p^

  sg W[[h鎞ASG_DEF_RESERVED_SIZE Œ`Ăl
͉L̃IvVŕύXł܂B

    def_reserved_size=<n>                                              

 

9.4.3. sg  proc C^tF[X

  ̃t@C͒Nׂēǂݏo\ŁAASCII `ŏo͂܂B
udef_reserved_sizev root ݉\łBASCII o͂́AlԂƃ}
V҂ǂ߂`ɂȂĂ܂(̂ߓǂ݂₷͋]ɂȂĂ
)B\o͂ɂ́A cat device_hdrs devices Ƃ Unix R}h
gĂB

                                                                                                                  
                                                                                                                  
/proc/scsi/sg/debug       [sg hCo̓]                                                                 
/proc/scsi/sg/def_reserved_size                                                                                   
                          [u[g̓W[[h                                             
                                                                                                p^Ɠ]   
/proc/scsi/sg/devices     [\̃foCX̃f[^e[u]                                                    
/proc/scsi/sg/device_hdr  [sg  foCX̃Jwb_[]                                                        
/proc/scsi/sg/device_strs [INQUIRY ̃̕e[u]                                                        
/proc/scsi/sg/hosts       [zXgf[^()̃e[u]                                                          
/proc/scsi/sg/host_hdr    [sg  zXg̃Jwb_[]                                                          
/proc/scsi/sg/host_strs   [zXg ID()̃e[u]                                                           
/proc/scsi/sg/version     [sg ̃o[WԍƓt]                                                             

L̃t@CׂĂ root I[i[ɂȂĂāAǂ̃[Uǂݍ
݉\łB def_reserved_size  root ݉\łB devices 
device_strs et@ĆAŏ̗ /dev/sg0 ɑΉĂ(sg ̃}C
i[foCXԍ 0)A2 Ԗڂ̗ /dev/sg1 ɑΉĂ܂ (ȉl)
B hosts  host_strs et@ĆAŏ̗񂪃zXg(A_v^ԍ) 0
ɑΉĂ܂(ȉl)BŏĂe[uł́AȂ
foCXzXg̗͂Ɂu-1vƂl\܂Bŏ
e[uł́AȂfoCX̓zXg̗͂Ɂu<no
active device/hostvƕ\܂B

 

Chapter 10. ჌x̃hCo

  ჌x SCSI hCóA܂ɂ񂠂̂ŁÃhL
gł͏ڂ܂BɁAł͂ƌĂA
҂̕ɏ悤ɃAhoCX܂B

  Linux J[l SCSI TuVXẽ\[XfBNgA /usr/src/
linux/drivers/scsi ͏o_ƂēKĂ܂B̃hCoł́A
README.<driver_name>Ƃureadmevt@Cɏ񂪂܂B̑
hCoAeu.cvt@C̐擪ɂ̏񂪏Ă܂B
̏ƂāAo[WԍAύXAJ[lu[g⃂W[
[h̃IvVȂǂ܂܂ꍇ悭܂BIvVɊւ
́AlX Linux fBXgr[ṼCXg[KChɂ
܂BhCõei[AWeb TCg𗧂グĂāAɍŐV
oOtBbNX񂪂P[X܂BItBVȃei[̕
X́A /usr/src/linux/MAINTAINERS t@Cɗ񋓂Ă܂Bɋ
ĂȂ΁ASCSI TuVXẽfBNgɂAYu.cv
t@CĂBÂhCo̒ɂ́AANeBuȃei[
Ȃ̂܂B̂悤ȏꍇ́Alinux-scsi j[XO[vɓ
e΁AĂ炦邩܂ (N1Q)B

  J[l̃\[Xc[񋟂hCȏS̑͂ނɂ́AJ[l
̐ݒvO(Ⴆ cd /usr/src/linux; make menuconfig) ̂ǂꂩ
pĂBꂼ̃ZNVɑΉwv́A 1 
()t@CA /usr/src/linux/Documentation/Configure.help ɂ
BhCo͑̏擾ł܂BJ[l 2.2 n(͂
O) pɍ쐬hCóAJ[l 2.4nł͍\z⓮삪ł\
͂킸łB (vO̖ʂ́AύXKvȂƂ͑Ƃ͂
܂)BhCoɂ̓oCi`p\Ȃ̂ł傤B
̏ꍇA񋟎҂MpāAwɏ]ĂB

  ჌x̃hCóA2 ނG[̂ǂ炩T|[gł
BÂ@͎xƂ݂ȂĂAV@́unew_ehvƌĂ΂
Ă܂Bunew_ehv̒́AƗJ[lXbhzXg(u
scsi_eh_<n>vƂOt܂B<n> ̓zXgԍ)PʂŎgpAG
[̕@\Ă_ɂ܂Bǂ̃G[񕜂̕@
J[l 2.2 nŗp\łAA_v^hCoŁunew_ehvg
̂͂قƂǂ܂BJ[l 2.4 nł́A葽̃hCo
new_eh gpĂAJ[l 2.5 Jłł́ÃG[
@̒ԃxɂT|[g͑ł؂ɂȂ܂B

  Drew Eckhardt  SCSI-HOWTO hLg(W7 Q)ł́A჌x
(A_v^)hCoɂāÃhLgɏڍׂɓݍ
ł܂B SCSI-HOWTO ́A5 NÔ̂Ȃ̂ŁǍ̕ύX
AhCoɑĂ܂B

  scsi_debugƂ჌x̃hCo܂B̃hCóARs
[^̃𗘗pāÁudirect accessvfoCX (Ⴆ΃fBX
N)V~[g܂BJ[l 2.4.17 ́Auram diskvƂē
܂BLinux ɂ͐FX ram disk ̎܂ (Ⴆ ramfs)A
scsi_debug ́Aݒ̖ŏQ SCSI hCo؂蕪̂
𗧂ł傤Bscsi_debug.c ɂɏ񂪂܂B

 

10.1. [hCo

  SCSI ̓R}h̏W܂ƁÃR}h̏W܂`Bn[hEFA
oX̏W܂Ƃ݂ȂƂł܂B̃n[hEFAoX͐p
SCSI (Ⴆ ultra wide p)ƂĎǵÃvgR(Ⴆ
USB  IEEE 1394)ƋṕAX SCSI Kił͒`ĂȂ
̓ɕ܂BŌ̃JeSɂ́AATAPI CD C^[APC p
oX ZIP hCuȂǂ̋[Ⴊ܂B̂悤ȃfoCX́A
SCSI ł͂ȂoX SCSI R}hZbg(͔ɋ߂)𗘗p
܂B

  ̃ZNVł́AlXȋ[჌xhCoƌĂ܂B
́A Linux TuVXe䂵ĂfoCXɑ΂ SCSI R
}hZbg𑗂邽߁AKRIɂ̃TuVXeƂ肷邱Ƃɂ
܂B̎A哱ǂ炪̂ƂNꍇ
Aꂪ[UAʓIɃei[ɐ̎₪邱
ƂɂȂĂ܂B

IDE-SCSI. ݒ̓_炷ƁAide-scsi ́AulCeBúvhCo
(ide-cd  ide-tape )蓖ĂĂȂ ATA(ʏ IDE)foCX̂
ׂĂ荞݁A䂵悤Ƃ܂BႦ ide-cd  ide-scsi J
[lɑgݍ܂ăRpCĂÃVXe ATAPI CD-ROM 
΁Aide-cd ł傤Bide-scsi gݍ܂Ă
Aide-scsi ̃foCX܂BJ[lu[gɁAǂ̃hCo
ǂ̃foCX𐧌䂷̂w肷p^܂B

  IDE TuVXȇIѕ́AL̃J[lu[gp^ŏ㏑
\ł(̃TuVXeɂƂāAŏ̂̂łdvł傤)B

 E  hdx=ide-scsi
   
 E  hdx=ide-cdrom
   
 E  hdx=ide-floppy
   
(hdx Ƃڂ́AhdaAhdbAhdc Ƃ IDE( ATA)foCX 1
w܂)B 2.4 nł́uhdx=scsivǉĂ܂AقǕ
ł͂܂B Section 9.2.4QƂĂB

  hCoĂƁAfoCX SCSI foCX (/dev/sda  /dev/
sr0 )găANZXłÃfoCXɑΉ /dev/hdx gĂ
ANZXł܂B̏ꍇł /dev/hdx foCX͗p\łA
p݂̂łB

  ʓI IDE ̐ݒp^(DMA ̗LEA32 rbg I/OA
unmasking IRQ ) ׂ͂āA/dev/hdx foCXg܂BႦ DMA 
Lɂɂ͉L̂悤ɂ܂B [13]

        hdparm -d1 /dev/hdx                                            

cat /proc/ide/hdx/settings ƂƁAwłݒ\܂Bėp
IDE hCo̐ݒ肷ׂĂg܂BĹuide-scsi ŗĹvݒg
܂B

 E bios_cyl
   
 E bios_head
   
 E bios_sect
   
 E transform
   
 E log
   
fBXNhCu(ZIP )̏ꍇA͂߂ 3 ̓hCu sd hCo
ԂzWIg\Ă܂Butransformv SCSI  ATAPI CDB
֕ϊ郌Cݒ肵ALɂAɂ肵܂By
FCDB Ƃ́ACommand Descriptor Block ̗̂ŁASCSI ߂̃f[^\
w܂z

 E 0 rbg: sg hCo甭ĂȂR}h̕ϊ̗L(1)
    ͖(0)B
   
 E 1 rbg: sg hCugĔsR}h̕ϊ̗L
    B
   
ulogv́AfobOL^܂Bsg hCog[UԂ̃v
OfobN̂ɂ𗧂܂BƂ̂AsꂽR}h
ɑ΂Ă͂̏IԂ܂߂ăXg邩łB̐ݒLɂ
Aɂ肷ɂ́AL̂悤ɂ܂B

        echo "log:1" > /proc/ide/hdx/settings                          

uusing_dmavtO𖳌ɂɂ́AL̂悤ɂ܂B

        echo "using_dma:0" > /proc/ide/hdx/settings                    

PPA + IMM. IOMEGA  ZIP hCúAp|[gASCSIAATAPI Ƃ
܂܂ȎނĂ܂Bp|[g^Cv́AÂ ppa
hCoŁAV imm hCoœ삵܂B

  p|[g ZIP hCúA SCSI foCXłBVPIO(Â)
VPI2(V)ƂC^tF[XgāAp|[gglA
SCSI R}h𗬂܂Bppa hCóAVPIO zXg̎Aimm VPI2
zXgŎłB

  HBA  ZIP hCuɓڂē삷̂ŁAzXgEA_v^Ǝ
Ӌ@킪➑̂ɂ邱ƂɂȂ܂B

PPSCSI. p|[gP[u𗘗p SCSI gpA[LeN`
 ppscsi ܂B́A܂{̂ɂ͓ĂȂAVA[
LeN`łB ppscsi W[̓R[h^Ă̂ŁAʂ
C^tF[X̎̂ȒPłB

  e ppscsi ̃vgRW[́Ag ppscsi W[Ƌ
ɓo^AvgREhCoׂĂɋʂlXȑ̃Gg[|
CgXgƂēn܂B

[ppscsi]

  PPSCSI hCo̍\

  ppscsi ̃A[LeN`ł́Appa  imm hCoƃvgRW[
\ɂȂĂ܂B܂̂Ƃ VPI0 Ă
B  www.torque.net/parport/ppscsi.html <http://www.torque.net/parport
/ppscsi.html> ĂB

USB. USB ͂foCX̃O[vueʋLuv(Ⴆ΃fBXN)
ĕނA SCSI R}hZbggĂ肵܂BW
[́Auusb-storagevłB  www.one-eyed-alien.net/~mdharm/
linux-usb <http://www.one-eyed-alien.net/~mdharm/linux-usb> Ă
B

  Microtek X6 USB XLi[𐧌䂷 usb/microtek hCo܂
Bݒ肳ƁASANE AvP[V sg hCog SCSI R}
h USB ʂđÃXLi[𐧌䂵܂B

I2O. J[l\[X /usr/src/linux/drivers/i2o/io2_scsi.c t@C
ĂB

IEEE 1394. SBP-2 vgRgĂ IEEE 1394 foCXAŋ
p\ɂȂ܂(Linux J[l 2.4.7)B̃ZNV IEEE 1394
̒iɂɏڂ񂪂܂B

iSCSI. iSCSI  IETF ̃htgƂĂ܂Ƃ܂܂BiSCSI ́A
SCSI R}hZbg TCP ̃lbg[NRlNVʂđ܂B
iSCSI ́ACɕyɌ܂ALinux ł̎s
܂B  sourceforge.net/projects/intel-iscsi/ <http://
sourceforge.net/projects/intel-iscsi/> ɂ̂悤Ȏ 1 
BĎ݂GWgāÃvWFNg{Ă݂Ă
B

 

Chapter 11. raw foCX

  raw foCX́A݂ubNfoCX(Ⴆ΃fBXN)ɐڑłA
Łuraw(Ȃ)vIO ŝɗpł܂B̂悤ȁuraw
vIO ́AʏubNfoCXɒʏtLbVI񂵂܂B
 raw foCX́AIȃfoCXւ̌oHuvĂ
ŁAAvP[V炻̕foCXɑ΂AIO ̃^C~Oׂ
ł܂B̂ raw foCX́AgŃLbVƂ
f[^x[XǗVXê悤ȁAGȃAvP[VɓKĂ
B

  raw foCX́ALN^foCX(W[ԍ 162)łBŏ̃}C
i[ԍ(܂ 0)́ApC^tF[XƂė\񂳂ĂāAʂ
/dev/rawctl ɂ܂Braw ƌĂ΂郆[eBeB(man rawQ)́A
raw foCXubNfoCXɐڑ̂ɗpł܂B
́ufoCXvƂẮAfBXN CD-ROMADVD Ȃǂ̂Aw
C^tF[X Linux ŃT|[gĂ(Ⴆ IDE(ATA) SCSI)
Y܂B

  ̃VXeŎsL̈ÃR}h́A܂ raw foCXX
gA SCSI fBXÑp[eBVڑAłɃfBXNŜ
Ă܂B

$ ls -lR /dev/raw*                                                     
crw-r--r--    1 root     root     162,   0 Dec  6 06:54 /dev/rawctl    
                                                                       
/dev/raw:                                                              
total 0                                                                
crw-r--r--    1 root     root     162,   1 Dec  6 06:54 raw1           
crw-r--r--    1 root     root     162,   2 Dec  6 06:54 raw2           
crw-r--r--    1 root     root     162,   3 Dec  6 06:54 raw3           
crw-r--r--    1 root     root     162,   4 Dec  6 06:54 raw4           
$                                                                      
$ raw -qa                                                              
$                                                                      
$ raw /dev/raw/raw1 /dev/sda3                                          
/dev/raw/raw1:  bound to major 8, minor 3                              
$ raw /dev/raw/raw2 /dev/sda                                           
/dev/raw/raw2:  bound to major 8, minor 0                              
$ raw -qa                                                              
/dev/raw/raw1:  bound to major 8, minor 3                              
/dev/raw/raw2:  bound to major 8, minor 0                              

  LN^foCXp̒ʏ̃VXeR[Q́Araw foCXłp
ł܂Bread(2) write(2)]傫́AIȃfoCXub
NTCY̐{łȂ΂܂B̓fBXNł̓ZN^̑傫
ɊYAʂ 512 oCgłBread() write()VXeR[ɗ^
f[^obt@́AubN̑傫ɍ킹̂łȂ΂܂
Blseek(2) VXeER[At@C̓ǂݏItZbgubN
̋Eɂ킹Ȃ΂܂Bpread(3)(man preadQ)́A read()
 lseek()˔VXeR[ŁAraw foCXŕ֗Ɏg܂
(pwrite()l)B32 rbgA[LeN` (܂ off_t ^ 32 rbg
)  2 GB(邢 4 GB)ȏ̃ItZbgpꍇɂ͒ӂKv
B@̂ЂƂ́A_llseek()VXeR[p邱Ƃł (man
llseekQ)B

  ŋ߂̃o[W dd  lmdd(lmbench ɓĂvO)̂悤
Unix [eBeB́Aq̃ubNACgŝŁAuraw
vfoCXƃf[^ł܂Bsg_util pbP[WɓĂ
߂̃o[W sg_dd R}h́Araw foCXɂ sg foCXɂAN
ZXł܂B

  foCX̃ZN^(blockdev --getsize /dev/raw/raw*)
킩܂)Araw o͂ł͍Ō̃ZN^ɃANZXł܂B


                              Warning                               

ubNfoCXɑ΂āÃfoCXɑΉĂ raw foC 
XoRŃANZXAʏ̃ubNC^tF[XoRłANZX
ƁA2 ̃ANZX@\ԂŃLbV̈ѐۂĂ܂BႦ΄
/dev/sda1 ҂Ń}EgAڑĂ raw foCXoRŃAN 
ZXƁAf[^ɕs邩܂B              

 

Chapter 12. devfs [t@CVXe

  devfs ̒jIȃhLǵAW5QlɂĂB SCSI TuV
Xeɂ devfs ̖K̊Tv́A Section 3.3ɂ܂B devfs
́AJ[l\zIvV CONFIG_DEVFS_FS őI܂Bu[g(/
dev Ƃ)}Eg邩ǂ́AJ[l\zIvV
CONFIG_DEVFS_MOUNT Ō܂܂B҂̃IvV́AJ[lu[g
IvVłudevfs=mountv́udevfs=nomountv̍Dȕǂ
ɂĂύXł܂B

  devfs  SCSI m[hƁAftHg̃p[~bV͉L̒ʂł
B

disc        rw-------   whole disk including mbr                       
part1       rw-------   first partition {...p1}                        
...                                                                    
part15      rw-------   15th partition {...p15}                        
cd          rw-rw-rw-   cd or dvd devices                              
mt          rw-rw-rw-   tape mode 0 with rewind {...m0}                
mtl         rw-rw-rw-   tape mode 1 with rewind {...m1}                
mtm         rw-rw-rw-   tape mode 2 with rewind {...m2}                
mta         rw-rw-rw-   tape mode 3 with rewind {...m3}                
mtn         rw-rw-rw-   tape mode 0 with no rewind {...m0n}            
mtln        rw-rw-rw-   tape mode 1 with no rewind {...m1n}            
mtmn        rw-rw-rw-   tape mode 2 with no rewind {...m2n}            
mtan        rw-rw-rw-   tape mode 3 with no rewind {...m3n}            
generic     rw-r-----                                                  

  ̃m[h́AΉĂfoCX(̓foCX̃TuGg
[ (Ⴆ΃p[eBV))ƃhCo݂鎞ɂ܂BႦ
 sg hCoȂ΁uėpvfoCX݂͑܂BĹop
́̕ALŐuc0b0t0u0vƂȗ\ĽɓKXǉ
܂B

  ubNXyVt@CLN^XyVt@CɂȂĂ
devfs t@CAł̓vC}foCXƌĂт܂Bdevfs ̃f
[ devfsd ́ÃvC}foCXɑ΂ẴV{
bNN𒣂Ă܂B͉ʌ݊Ɨ֐̂߂łB
̃V{bNEŃAZJ_foCXƌĂт܂B

  ZJ_foCX́Adevfsd ̐ݒt@CŐ䂳܂Bݒt@
C͒ʏ /etc/devfsd.conf łBftHg devfsd.conf t@Cg
ƁAZJ_foCX͉L̃XgɂȂ܂B

                                                                       
                                                                       
ZJ_         vC}foCXւ̃V{bNN        
--------------------------------------------------------------         
/dev/sda             /dev/scsi/host0/bus0/target2/lun0/disc            
/dev/sda1            /dev/scsi/host0/bus0/target2/lun0/part1           
/dev/sd/c0b0t2u0     /dev/scsi/host0/bus0/target2/lun0/disc            
/dev/sd/c0b0t2u0p1   /dev/scsi/host0/bus0/target2/lun0/part1           
/dev/sr0             /dev/scsi/host0/bus0/target4/lun0/cd              
/dev/sr/c0b0t4u0     /dev/scsi/host0/bus0/target4/lun0/cd              
/dev/st0             /dev/scsi/host1/bus0/target0/lun0/mt              
/dev/nst0a           /dev/scsi/host1/bus0/target0/lun0/mtan            
/dev/st/c1b0t0u0m0   /dev/scsi/host1/bus0/target0/lun0/mt              
/dev/st/c1b0t0u0m3n  /dev/scsi/host1/bus0/target0/lun0/mtan            
/dev/sg0             /dev/scsi/host0/bus0/target2/lun0/generic         
/dev/sg1             /dev/scsi/host0/bus0/target4/lun0/generic         
/dev/sg2             /dev/scsi/host1/bus0/target0/lun0/generic         
/dev/sg/c0b0t2u0     /dev/scsi/host0/bus0/target2/lun0/generic         
/dev/sg/c0b0t4u0     /dev/scsi/host0/bus0/target4/lun0/generic         
/dev/sg/c1b0t0u0     /dev/scsi/host1/bus0/target0/lun0/generic         

  SCSI CD-ROM pƂėǂg /dev/scd0 nT|[gĂȂ
ƂɋCÂ܂B/dev/discsA /dev/cdromsA/dev/tapes ƂA
JeSɓfoCXׂ(܂ASCSI foCXɌȂ) ɑ΂
V{bNNW߂fBNg݂܂B

                                                                       
                                                                       
ZJ_         vC}foCXւ̃V{bNN          
------------------------------------------------------------           
/dev/discs/disc0     /dev/ide/host0/bus0/target0/lun0      *           
/dev/discs/disc1     /dev/scsi/host0/bus0/target2/lun0     *           
/dev/cdroms/cdrom0   /dev/ide/host0/bus1/target1/lun0/cd               
/dev/cdroms/cdrom1   /dev/scsi/host0/bus0/target4/lun0/cd              
/dev/tapes/tape0     /dev/scsi/host1/bus0/target0/lun0     *           

  u*vڂ́AvC}foCXfBNgłB IDE
(ATA)foCX SCSI foCX̑OɃXg܂BZJ_fo
CX̉íAvC}foCXƓKɏ]܂B
ASCSI foCX(H)͂̒჌x͍x̃hCo폜
ƁAΉĂvC}EZJ_foCX폜܂B

  devfs  /dev Ń}EgĂꍇłAȑO /dev/sda6 
ł͗pł܂B̓J[lu[gɓ͂Kvȏꍇɕ֗ł
傤BႦ΃[UudevfsvgĂ}Ṽ[gp[eBV
ύXꍇ́AL̃u[gIvV̂g܂B

   root=/dev/sda6                                                      
   root=/dev/scsi/host0/bus0/target0/lun0/part6                        
   root=/dev/sd/c0b0t0u0p6                                             

  vO̒ɂ́AfoCXXLۂ devfs ȑÕfoCX
z肵Ă̂񂠂܂B̃vO devfs F
܂łɂ͂΂炭Ԃł傤B܂Asg hCõ[h
(W[ɂȂĂāA܂[hĂȂꍇ)A(Ⴆ) /dev/
sg0̃I[vɂčs悤ȃvO܂BɂĂ /
etc/devfsd.conf ̎̍ڂŒł܂B

        LOOKUP          sg.*            MODLOAD                        

 /etc/modules.devfs ͉L̂悤ɂȂ܂B

        probeall        /dev/sg         scsi-hosts sg                  
        alias           /dev/sg*        /dev/sg                        

  sg foCX̃p[~bV́A/etc/devfsd.conf t@C̍ڂŒ
ł܂B

  REGISTER scsi/host.*/bus.*/target.*/lun.*/generic                    
                              PERMISSIONS 0.0 rw-rw-rw-                

ڂ́Auman devfsdvĂB

  AvP[V devfsd 쒆ǂ𔻒f̂ɁA /dev
/.devfsd ̗Lg܂B

  iIȃt@CVXe(Ⴆ ext2)ɊÂ /dev fBNg̓
̂ЂƂɁAfoCXt@Cƃp[~bVƂ֌WtAu[
gƃu[g̊Ԃɂێ@\܂BLŏqׂ悤ɁAdevfs
̃ftHg̓ł́A}Vu[g邲ƂɃfoCXt@C̃p
[~bV蓖Ă܂B/etc/devfsd.conf  PERMISSION p[~
bVwɎg܂A͏Xʓ|Ǝv܂B devfs ̃hL
g(W5)ł́AΓ񒹂ȕ@LqĂ܂B̃eNjbN Linux
J[l 2.4 ɍŋߒǉꂽȀꏊɓt@CVXe}E
g@\ɂ̂łB

 

Appendix A. ʓIȃoX̎(SCSI )

  ̕t^ŐGlXȃoX̎(SCSI ̑)̊TςƂẮA  
www.pctechguide.com/04disk2.htm <http://www.pctechguide.com/
04disk2.htm>ɗDĂ܂B

SCSI. IWi SCSI 1 Ki(ANSI Ki X3.131-1986)́A8 rbg̃p
oXłB񓯊 1.5 MB/secA 5 MB/sec ܂ł̓]ł邱
ƂɂȂĂ܂BSCSI R}h͔񓯊ő܂BSCSI f[^͔
(ň̏ꍇ)́AlSVG[Vē(őP 5 MB/sec)
܂B

FAST SCSI. SCSI 2 KíAő哯x 10 MB/sec ܂ŏオ܂B
SCSI 2 ł̓poX`Ă܂BVOGh(SCSI
1 Ŏgp)ƁAVK̃fBt@VoXłBfBt@VoX
AσmCYɗDAőoX 25 m ɂȂ܂(ɑ΂ăVO
Gh 6 m)B^OL[̃R}h SCSI 2 Œǉ܂B

WIDE SCSI. SCSI 2 Kił̓oXLA16  32 rbg(wide)ȕώ
F߂܂B 32 rbg͂قƂǎgĂ܂̂ŁAuwidev
͒ʏ 16 rbg̃f[^pXw܂BpoXɐڑł SCSI
foCX̍ő吔́AoXɖڂɊ֘AĂAuwidevoXɂ͍ő 16
 SCSI foCXڑ\łB(foCX̓ȂƂ 1  SCSIu
CjVG[^vłȂ΂܂񂢁BʏCjVG[^̓zXgEA_v
^)B

ULTRA SCSI. ܂œ̃oX́ANbN(ʏ͕`g)̗オ
Ɨǂ炩œĂ܂Aŋ߂̓NbN̗オ
Ɨ藼ŃNbNApłш敝{ɂXɂ
܂B̕@ɂāAULTRA SCSI  SCSI 2 uvɂ 20 MB/
sec ƂȂ܂B

ULTRA WIDE SCSI. uULTRAvƓZp(16 rbg) wide SCSI p
oXɓKpAш敝 40 MB/sec ɂĂ܂B

ULTRA 2 WIDE SCSI. ̃^Cv́AVudvł̃fBt@V
ȐM`(LVD)ŁANbNx{ɂA(16 rbg)wide oXg
 80 MB/sec ɂĂ܂B̏ꍇ́ASCSI oX͍Œ 12 m łB
ultra wide Ƃ̉ʌ݊̂߁AuVOGhvł̑\ɂȂ
Ă܂Bɂ́ALVD/SE ƂꂪA_v^[J[ɂĎg
Ă܂B̎gݕ̌_ 1 ɁAU2W oX UW foCX
݂ĂƁA U2W foCX̑xxȂ(܂AUW ɂȂ)
܂_܂BA_v^ɂ́A_Iɂ͓ SCSI oXł
AI LVD  SE ƗoXɍڂǍ_Ă
܂B

ULTRA 160 SCSI. ULTRA 160 ́Ap SCSI ̃oXɂ܂{ɂ
Ă܂B16 rbg̃f[^oX LVD ̐M`(̍ڂQ)g
Ă܂B DT(Double Transition)NbNɂAш敝͍
 160 MB/sec ɂȂ܂Bǉ@\Ƃď璷(CRC)Af
[^̐(peBrbgƔׂ)サĂ܂B܂G[
܂ɍȂƁA]x𒲐hCof[V(domain
validation)Ă܂B " y󒐁FULTRA 160 ܂ł SCSI ʂɂ
Ă̐́A adaptec Ђ SCSI HAND BOOK({) <http://
www.adaptec.co.jp/about_scsi/book2/>QƂĂz "

ULTRA 320 SCSI. ܂Ȃ ULTRA 320 A_v^oꂵ܂(̃C^tF
[XfBXN͂łɎsɏoĂ܂)B̋Ki 16 rbg
LVD oXłBÂfoCXɑ΂݊ۂ߂ɑx𗎂Ƃ܂B
NbNx{ɂāAUltra 160 ̔\͂コĂ܂BR}h
Xe[^X (5MB/sec ł͂Ȃ) oh̃txőA Packetized
SCSI Ƃ@\܂܂܂B̑̉Ǔ_ƂāAuquick arbitration
and selection(QAS)vuread and write data streamingvAf[^Ɠl
R}hubNی삷 CRC veNVȂǂ܂(Ultra 160
̓f[^ɑ΂Ă CRC veNVL)B̂悤ȑxɂȂ
APCI oX{glbNɂȂ߂ɂ́A64 rbg PCI (ɗǂ̂
PCI-X) J[hKvƂ܂Bɏڂ́A www.scsita.org
<http://www.scsita.org> ĂBŋ߂ɂȂ Ultra 320  HBA
x_[́Ab̓o͑삪 105,000 ɂ܂ŒBƌĂ܂B
́AR}h SCSI oX̃I[o[wbh 10 ms ȓƂ
ƂɂȂ܂BULTRA 640 Kĩhtg܂AVAA^b`h
SCSI Ɏđł傤B " y󒐁Fuquick arbitration and
selection(QAS)vƁuread and write data streamingvɂẮA
adaptec Ђ Ultra320 SCSI: New Technology-Still SCSI <http://
www.adaptec.com/worldwide/product/markeditorial.html?prodkey=
ultra320_whitepaper>QƂĂz "

VAA^b`h SCSI(SAS). VAA^b`h SCSI(SAS)́AVA
ATA(sATA)Ɠ]ZpAɊgĎĝłB(sATA ɂĂ
q)BSAS ł́AOGNXp_gāA4096(?)̃foCXЂƂ
 HBA HŐł܂Bf[^]͑SdŁA1.5 Gbps ́uv
Ƃ߁AшL܂BP[u 6 m ܂łłBSAS fBXN̓f
A|[gɂȂĂ܂B sATA fBXŃASAS HBAɐڑł܂(
ASAS fBXN sATA HBA ɂ͐ڑł܂)B SAS ́Aŋ CeBit(
ێ/ʐMZp{s)Ńfs܂A 2004 N܂ł͎s
͏oȂł傤B " y󒐁FOGNXp_ɂẮA adaptec Ђ
SCSI HAND BOOK({) <http://www.adaptec.co.jp/about_scsi/book2/>Q
ƂĂz "

FC-AL. ́At@Co`lA[rgCg[vӖA2 GB/sec
̃VO[ht@Co[fAŐڑA10 Km ̌oH 400 MB/
sec ̗ʂ𗬂܂B storage area network(SAN)ƘAgP[X悭
܂B[vɂ 126 foCX܂Őڑł܂Bpublic loop [h
ƂɊg\ŁA 1600 ̐ڑ\ɂȂ܂B]}̂
͌P[ułȂĂ\܂BᑬŌoHZ΁A^P[u
(P[u)gpł܂B

IEEE 1394. ̋KíAuFire Wirev(APPLE ̏W)ƂuiLinkv(SONY 
W)ƂĂ΂Ă܂BVAoXŁA400 MB/sec ܂œ삵܂BUSB
ƎĂ܂AėpIȍ\ɂȂĂ܂BIEEE 1394 Kił́A
SCSI R}hZbg 1394 oXɍڂĂ܂BLinux  IEEE 1394 X^
bNƂẮAusbp2_1394vhCop\ɂȂ܂B
sbp2_1394 hCóA SCSI TuVXe̒჌xȃhCoł
(ċ@\Iɂ ide-scsi hCoƎĂ܂)B܂ASBP-2 v
gRgp IEEE 1394 foCX(Ⴆ΃fBXNA CD-RWADVD hC
uAMO hCuAXLi[)ɂ́ASCSI TuVXeʂăANZX
B  Linux1394.sourceforge.net <http://Linux1394.sourceforge.net> ɏ
񂪂܂B sbp2 hCóALinux J[l 2.4.7 Ɏ荞܂
܂B

iSCSI.  SCSI R}hZbg TCP ڑ(͂̓̂
)őAV IETF KiłB SCSI foCX(^[Qbg̓fB
XN̂悤Ȃ) lbg[N@ƂAzXg}V烍[J(
͉) ANZX邱Ƃ\Ƃ܂B

SCSI ȊÕoX. ꂩqׂoX SCSI Kił͒`Ă܂
ASCSI R}hZbg^ׂ邱ƁAʂ Linux  SCSI TuVXe
Ɋ֘AĂ邱ƁASCSI iƓl̋@\񋟂邱ƂȂǁA{̑
ۂƂȂ肤̂łB

IDE/ATA (ATAPI). IDE ́APC VXeŌݍłyĂ^CṽfB
XNłB́A Integrated Drive Electronics \Ă܂BO
ʂAIDE ł IO ́um\vfBXNRg[J[hɏW
Ă܂Bɑ΂AႦ SCSI ł́AIO @\foCX(Ă
fBXN)ƃRg[(HBA) ԂɕUĂ܂B IDE ́A1980 N
ST506  ESDI Ki͂܂܂BEIDE(extended IDE) ́Aނ̗
łB̃oXA[LeN`wŋ߂̋Ki ATA ƂĒmĂA
www.t13.org <http://www.t13.org> Ō܂BATA ̃pPbgC^tF
[X(ATAPI)́AfBXNw̃R}hZbggāACD-ROM e[v
hCuT|[gĂ܂BATAPI ̃R}hEZbǵASCSI R}h
ZbgƔɎĂ܂BŐV ATA ZpɂẮA̐߂ŏЉ܂
B

ATA 133. IDE foCXgp ATA KiA`e(Ⴆ fast 
ultra)␔(Ⴆ 2A33A66A100A133)ł܂BłV
̂ ATA 133 ŁAo[Xg 133 MB/sec ̑xƃoX 2 
ł̃foCXT|[gĂ܂B(PC ɂ͒ʏA2 {܂ 4 { ATA
oX܂)B ATA 66A 100A133 ɂ́Ap̃P[uKvɂȂ
B ATA P[u͂ȂZARs[^O IDE foCXu
̂͂̂łBP[u͂܂ 46 cm xłAŋ߂ɂ
 1 m ̂̂oĂ܂B133 MB/sec ƂĺA PC 
ő]xł܂B荂(шL)o[W PCI 
܂A܂قǕyĂ킯ł͂܂B

VA ATA (sATA). VA ATA ̓fBt@ṼyA 2 gg
A1 ̓fBXNf[^ sATA fBXNƃf[^܂B1 m 
̋ 1.5 G rbg/sec œ]܂B1 g̓f[^fBXNɑ
A 1 ̓fBXNf[^󂯂܂Bf[^x́A 150 MB/sec 
ŉ\ł(f[^]͔d)B sATA ̓|Cg]|CgڑŁAoX
ڑł͂܂̂ŁAATA ̃}X^[ƃX[uƂ֌W݂͑܂
BsATA ̔z͂肵ĂāAvO\Pbǧ`p ATA
( SCSI pC^tF[X) 菬ԂłBsATA foCX͎s
o͂߂ƂłBsATA-2 ̓htgKiŁAVÃf[^]ʂ
3 G rbg/sec ɂȂĂ܂B

USB. jo[TVAoX(USB)́Aш敝 1.5  12 M rbg/sec
(҂̑x USB 1.1)łBnuꂼɍő 7 ̃foCXڑł
Anu𕡐p 127 ܂ł̃foCXڑł܂(̌E 5 m)
B USB ́Ad̓foCXɁA 5 V 0.5 A ܂BUSB ́u
vOAhvCvŁAzbgvOłA]T|[g܂(
ш敝ۏ؂KvȃI[fBIrfIfoCXɓKĂ܂)B

PC p|[g. Ƃ PC ɂĂp|[g͕Е(v
^[)ŁA 10 KB/sec ̔\͂܂B1994 N IEEE 1284 K
ił́Af[^]@ 5 ނ܂B

 E ݊[h()
   
 E ju[h(t)
   
 E oCg[h(t)
   
 E EPP [h(o)
   
 E ECP [h(o)
   
GnXhpE|[g(EPP)́A]x 500 KB/sec  2 MB/
sec ̊ԂɂȂACD-ROMAe[vAn[hhCu^[QbgɂĂ܂
BGNXefbhPCpreB|[g(ECP)́AEOX
ADMA T|[gĂ܂B ECP ͍ȃv^[XLi[
^[QbgɂĂ܂B

I2O. uI2O(Intelligent Input/Output)dĺACeWFgȓo͂
߂̕WIȃA[LeN`ŁA䂳foCXzXg̃Iy[e
BOVXe(OS)ƗĂ܂v(www.i2osig.org <http://
www.i2osig.org>p)B I2O ́uhCovf`ĂA
ɂ OS Services Module(OSM)AzXg OS ̃foCXC^tF
[X I2O R~jP[VẘԂɓA Hardware Device Module
(HDM)AI2O R~jP[Vwƃn[hEFÅԂɓ܂BHDM ́A
炭pvZbT(IOP)œ삷ł傤B

 

Appendix B. Linux J[l 2.2 ƌ̃J[l 2.4 Ԃ̕ύX

  MׂƂƂẮALinux J[l 2.2 ł SCSI R}hL[
ЂƂȂ̂ɑ΂AfoCXƂɂЂƂ̃L[g悤
Ȃ܂B SCSI TuVXe SMP ɂeaȂ悤ɁAb
N̗xɍׂȂĂ܂Blinux J[l 2.2 ł́A{IɃT
uVXeŜ 1 ̃bNgĂ܂B

  SCSI TuVXëꕔł͂܂񂪁Adevfs Ή邱ƂŁASCSI
foCXȑOĂAhXt肪܂B devfs Ɋ֘A
āAdevfs ꍇɂƂĂ֗Ȃ̂AJ[lu[g (уW
[[h)́uscsihostsvIvVłB[U͂̃IvV
āA SCSI zXg̏t𐧌ł܂B

  Linux J[l 2.4(Ƃ̊Ju`)Ōʂ炩ɂȂ@\h
CóALinux J[l 2.2 n̐V[XɃobN|[gX
ɂ܂̂ŁA̕t^̍XV͗eՂł͂܂B

  (Linux J[l 2.4.2)AMO foCX̃T|[gȂĂ
BubNTCY 2048 oCgłÂ DOS t@CEVXe
Ƃ̕񍐂オĂ܂BubNTuVXegpĂ 1 KB
̘_ubNTCYAubNTCY傫fBAŋN
̂悤łB sd hCoɂ肪܂(KȂƂɁA2048oC
g̃ZN^Wł sr hCóA肠܂)B

 

B.1. ԃx̕ύX

 

SCSI_IOCTL_GET_IDLUN    {ioctl, changed}                               

 

B.2. sd ̕ύX

 

HDIO_GETGEO_BIG         {ioctl, new}                                   
                                                                       

 

B.3. sr ̕ύX

  sr ̕ύX͕񍐂Ă܂B֘AƂāAuhdx=scsivƂJ[
lu[g̃IvVǉĂ܂BڍׂSection 9.2.4 Q
ĂB

 

B.4. st ̕ύX

  C^tF[XɕύX͂܂BLinux J[l 2.2 ł́Au[g
ǉłőe[vfoCXڑ 3 ɐĂ܂B̐
Ȃ܂(ɏqׂʂAe[vfoCX̍ő吔 32 ̂܂)B

  st hCo̒Ԃłuosstv́AOnStream ̏f̃e[vh
CuΏۂɂĂALinux J[l 2.4 Œǉ܂B

 

B.5. sg ̕ύX

  ȕύX́Ausg_io_hdrvƂVC^tF[X\̂̒ǉłB
܂ł(usg_headervƌĂ΂Ă)C^tF[X\̂́Aread()
 wite() R}hɂāAraw f[^ƃ^f[^AKv
_A_ɌĂ܂B

                                                                             
sg_io_hdr          {VC^tF[X\}                              
SG_IO              {V ioctl}                                            
direct IO          {݂Ă邪ARgAEgĂBALLOW_DIOQ} 
procfs output      {/proc/scsi/sg directory ̐V}                    
boot/module parameters  {VK}                                               

  sg_io_hdr C^tF[X\̂́A64 oCg܂ł̃ZXf[^
ł܂B܂f[^]ɂc蕪̐擾ł悤ɂȂĂ
܂ (჌x̃hCoT|[gAc蕪 0 łȂ)B

 

B.6. Linux J[l 2.4 nł̕ύX

  Linux J[l 2.4 ńuŁvłAoOtBbNXłȂA
Ȃ̕ύX܂BL̃Xgɂ͒჌x(A_v^)̕ύX͓
܂BXgꂼ̍ڂ̐擪́A̕ύXAiEXꂽ
J[lo[WłB [14]

 E   [2.4.4] SCSI_IOCTL_GET_PCI ioctl() ǉB
   
 E   [2.4.7] foCXւ INQUIRY  SCSI x SCSI_2 ʂł
    Ƃ킩ꍇAuLUNvrbg(SCSI 1  SCSI 2 Kił 3 r
    bg LUN ̒l 0  7) ɂ SCSI R}h 2 oCgڂ̃}X
    N͍sȂB
   
 E   [2.4.7] J[l( scsi_mod W[)IvV max_scsi_luns
    l 1  7 A傫ȒlƂ悤ɂȂB(X
    LASÝA܂ REPORT_LUNS 𗘗pɃV[PVX
    Ls)B
   
 E   [2.4.7] scsi_unregister_host()  scsi_unregister_module()  int
    Ԃ悤ɂȂ(ȑÓAvoid Ԃ)B0 ŁA-1 s(
    Ă busy )B
   
 E   [2.4.7] x̃hCoAڑĂ SCSI foCX𐳂
    Ԃ悤ɂȂB(uDetected ...vł͂܂郍ÕbZ[WA
    ƂĂȃfoCXԂĂ(Ⴆ sdb ł͂Ȃ sdc Ƃ
    悤))BJ[l̃u[g̃bZ[WɁuAttached ...v̂悤
    ɁASCSI foCXo悤ɂȂB
   
 E   [2.4.7] Scsi_Host \̂Ɂumax_sectorsvǉꂽB
   
 E   [2.4.8] ԃx̃WbNύXAZXobt@Ř_j
    bg(ASC=4, ASQ=1)ƁAR}hgC悤
    ȂB
   
 E   [2.4.9] st ̃W[Abvf[gB
   
 E   [2.4.9] ჌x(A_v^) DID_RESET ԂƃR}hgC
    悤AԃxύXꂽB
   
 E   [2.4.10] ԃx REQUEST SENSE 𔭍sƁAX̌(SCSI
    ̏Ԃ܂)ۑ悤ɂȂAŕł悤ɂȂB
   
 E   [2.4.10] BLKGETSIZE64ABLKBSZSETABLKBSZGET e ioctl  sd  sr
    ֒ǉꂽB
   
 E   [2.4.10] sg ̋CAopen  access_count 𑝉(
    щɌ)悤ɂȂB
   
 E   [2.4.11] MODULE_LICENSE("GPL")łقƂǂ̃hCo
    MODULE_LICENSE }NǉB
   
 E   [2.4.11] eR}h scsi_pid  1 (ȂŁH)B
   
 E   st XVAaccess_count Bōx̃hCo
    Aׂ open  access_count 𑝂₵AɌ炷B
   
 E   [2.4.13] scatterlist \̂̊g(alt_address 폜Apage 
    offset ǉ)B
   
 E   [2.4.13] ^[Qbg <= SCSI_2 ȂA8 ȏ LUN ̓XLȂ
    B
   
 E   [2.4.14] scatterlist \̂̕ύXɊւ`[jO(oOC)
    (st ꂽH)
   
 E   [2.4.15] 16 oCg SCSI R}h(MAX_COMMAND_SIZE  12
     16 ɕύX)Bԃx 16 oCg SCSI R}hɂ́A
    HBA hCo Scsi_Host::max_cmd_len  16 ɐݒ肷KvB
   
 E   [2.4.15] SCSI TuVXeABLKGETSIZEABLKGETSIZE64 e ioctl
    ()̎폜ꂽ(ubNTuVXeɈړ)B
   
 E   [2.4.15] st ̑啝ȃAbvf[gB
   
 E   [2.4.15] Linux J[l 2.5.0 򂵁ALinux J[l 2.4.15 ==
    Linux J[l 2.5.0 ɂȂB
   
 E   [2.4.17] scsi_wait_req() generic_unplug_device()ǉB
    SCSI_IOCTL_SEND_COMMAND ɂ钷 wait B
   
 E   [2.4.17] foCXXLۂ scsi_level(܂ SCSI Ki
    ̑Ήx) ԈႦoOB
   
 E   [2.4.17] sg hCȏ啝ȍXVBmmap()-ed IO ̒ǉB
   
 E   [2.4.18] x̃hCoAuinit()v֐(Ⴆ
    sd_init())AƎ葱𓥂񂾏Ŏsł悤ɂȂB
    (Scsi_Device::detected  scsi_unregister_module()ǉ)B
   
 E   [2.4.18] MO foCXł SCSI R}h̃NX^OCB
   
 E   [2.4.18] st hCo̍XV(kASY)B
   
 E   [2.4.18] Documentation/scsi.txt  scsi-generic.txt ̍XVB
   
 E   [2.4.18] scsi_debug hCȍCB
   
 E   [2.4.19] SCSI ̗\@\ƃZbg@\ǉB\ɂāA
    }VfoCX(\E@\ɂ)Lł悤ɂȂ
    B\񂵂Ă̂ɔ̖}Vufvɂ́A(sg oR)
    SCSI ZbgKvƂB
   
 E   [2.4.19] BLIST_LARGELUN 𓱓ASCSI 2 ƔFĂ 7 傫
     LUN 悤ɂB
   
 E   [2.4.19] sd  sr ύXARECOVERED_ERROR n[hG[ƈ
    Ȃ悤ɂBO̓R\[Ɍx𑗂B
   
 E   [2.4.19] gpO sg ̃obt@[ɐݒ肷B(sg ̃o[W
     3.1.22  3.1.24 փAbvO[hAsg.h ɂ(\ʓIɂ)
    fĂȂ)B
   
 E   [2.4.20] nC(HIGHMEM)o͂̃T|[gǉBaic7xxx 
    3w-xxxxAespA megaraidAqlogicfcAsym53c8xx_2 LLDB
   
 E   [2.4.20] st Ƀu[gyуW[[h́ublocking_openvp
    ^ǉB
   
 

Appendix C. guV[eBO

  SCSI ̖̑́AP[u̎񂵂ƏI[(ĂȂA
͕sK)łBɂ SCSI oX̃ZbgAp
eB CRC G[NAɂ͓]xቺ܂BSCSI ̏I[̕
@ɂẮAf炵`[gÃTCgɂ܂B  
www.scsita.org/aboutscsi/SCSI_Termination_Tutorial.html <http://
www.scsita.org/aboutscsi/SCSI_Termination_Tutorial.html>B̃TCg
͑ɂA߂ɂȂ SCSI ̏񂪂܂ (W9Q)B

  SCSI ́uFAQvTCg܂(W10Q)BݒƃguV[eBO
낢ƈĂ܂B̃TCg̏œ_ Windows(Ƃ ASPI C^
tF[X)ɂ܂A Linux ⑼ Unix ̎ɂ SCSI 
֘AĂ܂B

  VXêǂł悤Ɍ鎞Ǎoɂ́A 
ps R}h𗧂܂BL̃IvV́AJ[l̂ǂ̕
NĂ̂肷̂ɕ֗łB̏ei[ɑĂ
ĂB

ps -eo cmd,wchan                                                       
ps -eo fname,tty,pid,stat,pcpu,wchan                                   
ps -eo pid,stat,pcpu,nwchan,wchan=WIDE-WCHAN-COLUMN -o args            

unOvĂ鏊ôɍł厖ȃIvV́Auwchanv
BꂪJ[l̃AhXȂ΁Aps  /proc/ksyms gāAł
V{̈ʒu܂BunwchanvIvV́AŌun
OvAhXłB

  L[łĂVXeȂꍇAeLXg[h
<Alt+ScrollLock> Ƃ΃X^bNg[Xo͂A<Ctrl+ScrollLock>
Ƃ΂ׂẴvZẌꗗo͂͂łBO@\܂
Ă΁Ao͂̓OƃR\[ɂ܂B

  CONFIG_MAGIC_SYSRQ ݒ肵ăJ[l\zĂ΁AeLXg[h
 <Alt+SysRq+H> ƁAgpłR}hXg܂B
<Alt+SysRq+S> ́Aً} sync ꍇɖ𗧂A<Alt+SysRq+U> ́A
[hI[Ńt@CVXe}Eĝɕ֗łBs
A <Alt+SysRq+B> Ń}Vu[g邱ƂɂȂł傤B

 

Appendix D. ptH[}XAeXgAfobOp̃c[

scu. SCSI Command Utility(SCU)ɂ́ASCSI @̓̃eiXff
ɕKvȗlX SCSI R}hpӂĂ܂B܂܂Ă@\́At
H[}bgAsǃubÑXL(ƃubN̍Ĕzu)AVt@[
EFÃ_E[hAff̎sAptH[}X̎擾Ȃǂ
BUnix vbgtH[( NT)̂ŗp\łAł̓o
Ci`݂̂̒񋟂łBڍׂ  www.bit-net.com/~rmiller/scu.html
<http://www.bit-net.com/~rmiller/scu.html>ĂB

dd. fBXN CD-ROMADVD ŁAXg[~O\̃eXgɂƂĂ֗
Bڍׂ man dd Ă݂ĂBƂāA0 ubN͂܂ 1
GB(10**9 oCg)̃f[^fBXNǂݎ̂ɂǂ̂炢̂
ׂĂ܂B

$ time dd if=/dev/sda of=/dev/null bs=512 count=1953126                

/dev/sda  raw foCX /dev/raw/raw1 ȂAL̍s͉LƓ
܂B

$ time dd if=/dev/raw/raw1 of=/dev/null bs=512 count=1953126           

x 1 ZN^ 512 oCgǂł̂ŁA҂ĂȂ
܂Bdd ̍Ō 2 ̈ubs=8k count=122071vɕύX΁A
urawvւ dd ͂荂ɂȂ͂łB

dt. Data Test(DT)vÓAdd ̏𐗌`ɂĂ܂BAdt
ɂ̓V[PVȃRs[̑ɂA낢ȋ@\܂BfBXN
e[vA CD-ROMADVD ̂悤 SCSI foCX̑Iȃf[^eXg
vOłB Unix vbgtH[( NT)̂ŗp\ŁA
\[Xp\ł (ꂪOóuscuvƈقȂ܂)B  
www.bit-net.com/~rmiller/dt.html <http://www.bit-net.com/~rmiller/
dt.html> ɏڂ񂪂܂B

lmdd. ̃R}h́Almbench ɓĂvO 1 ŁAdd R}
hƓñvOłBo͂̑pɂȂĂāAɂ
ԂƓ]ʂo͂܂B܂ time R}hƓd͕KvȂȂ
܂B

blockdev. ubNfoCX(ʏ̓fBXN)̃ZN^TCYƃZN^A
ǂݏԂ擾܂Bobt@tbV̂ɂpłAp[eB
Ve[u̍ēǂݍ݂\łBman blockdev QƂĂB

sg_dd. ̃R}h sg_utils pbP[Ẅꕔ(W4Q) łBdd R}
h̒ԂŁAo͗͂ꂩ sg  raw foCX
ɑ΂čs܂BubNTCŸ(ubsv) ́A̕foCX̂
̂ƍvĂKv܂B́uskipvƁuseekv́A32 rbgA
[LeN`ł 2**31 - 1 ܂ŐݒłA1 TB(2G * 512)̃fBXNɃAN
ZXł܂B64 rbg̃t@C̓ǂݏItZbg̃V[Nɂ́A
Linux ̃VXeR}h llseek() p܂Blmdd ́A2 GB 
ꍇ͈܂񂵁Add R}h͕̑ΓI seek sƂ܂Ƃ
Ȍʂ͕Ԃ܂Bsg_dd ɂ́Aubptv(]̃ubN)
Ao͂ꂼɂǂݏ̃ubN𐧌䂵܂B

  sg_utils pbP[Wɂ͂̑ɂvO܂BSCSI oXX
L(sg_scan  sg_map)ASCSI oX̓]ʂv(sg_rbuf  
sg_turs)A SCSI  INQUIRY R}h̃f[^\(sg_inq)A}
XsAbv_E肷(sg_start)܂B

dd_rescue + scsiinfo.  dd nR}h́ASCSI( IDE)fBXN
 CD-ROM (W6Q)Ƃ}̂Q畜邽߂ɍ܂B
scsiinfo ́A[hy[W\ύX肷郆[eBeB
Ał܂B

sard. ̃[eBeB́ASystem V Release 4  sar -dQlɂA}
EgĂfoCXƃp[eBV̓o͏Ԃ悤ɂ
BStephen Tweedie 쐬Asard [eBeBĂ܂B /
proc/partitions ɏo͂悤gɂ̓J[lpb`KvłB  
ftp.uk.linux.org/pub/linux/sct/fs/profiling <ftp://ftp.uk.linux.org/pub
/linux/sct/fs/profiling>ł܂B vmstat(uman vmstatvQ)
̂悤ȃvOƔׂāArI჌x(Ⴆ SCSI ̒ԃx)
ԂW܂B

 

Appendix E. RpCIvVƃVXeR[(ioctls ܂)

  ̕t^ł́ARpC̃IvV̂AVXeǗ҂ύX
Ȃł낤̂ɂďqׂ܂BftHgł̓[ŮҒʂ
IĂ̂ŁA命͉ύXKv͂Ȃł傤BJ[l
\zIvV̐ݒɂẮAJ[lu[g̃p^ƃW[
[h̃p^AhCõRpCIvVƓʂ
ꍇ܂B

  VXeR[́AAvP[VvOƃJ[lƂ̃hCo
Ԃ̃C^tF[XƂē삵܂BSCSI TuVXe̗pĂ郌C
ꂽhCõA[LeN`ł́AVXeR[̑唼͍x
̃hCoĂ܂B

  SCSI TuVXéuwɒʒmĂvioctl \ɂȂĂ܂B
I[vĂt@CfBXNv^ɑΉx̃hCo
ioctl ߂悤Ƃ܂BꂪłȂƁAioctl ͒ԃxɓn
܂BԃxłʖڂȏꍇAt@CfBXNv^ɑΉ჌x
̃hCoɓn܂B჌x̃hCoʖڂȂAEINVAL G[
܂B

  ֘AĂTuVXeɏC ioctl ܂B

 

E.1. ԃx

  J[l\[Xɂ鉺L̃wb_t@ĆAԃxɊ֘AĂ
B

        /usr/src/linux/include/scsi/scsi.h                             
        /usr/src/linux/include/scsi/scsi_ioctl.h                       

  ̃t@ĆAAvP[Vp邽߂̂̂ł
(__KERNEL__ ̃RpCubNȊO̕)B /usr/
include/scsi fBNgɂ܂A glibc CuƂ
ɃeiXĂAJ[l̃o[WɒǐĂȂ̂ŁA
MȂłB Linux VXeł́A /usr/include/linuxJ[l
\[X include ̈ɃV{bNNĂ܂(ʂ́A /usr/
src/linux/include/linux)B̃V{bNNgƁA#include
<linux/../scsi/scsi_ioctl.h> ƂZɂāAmscsi_ioctl.hC
N[hł܂B

   /usr/src/linux/drivers/scsi/scsi.h ́ASCSI TuVXěƂ
wb_[t@CłB(AʃfBNgɑ݂)t
@CA͂̃ZNV̍ŏŒڂt@CłƂ
_wEĂ܂B͂Ƃǂ̌ɂȂ܂B

  ԃx̃t@C drivers/scsi/scsi_scan.c ɂ́Am SCSI fo
CX̑Lq@ōڂĂ܂B(́uubNXgv
ĒmĂ܂A܂ɒfIƂ݂ȂĂ܂)B̔z
ÓufoCXXgvłB̂悤ɂ낢Ȓl܂B

 E BLIST_NOLUN LUN  0 
   
 E BLIST_FORCELUN 8 ׂĂ LUN IɌ
   
 E BLIST_BORKEN ჌x̃hCoɌ̏tOn
   
 E BLIST_KEY bNOhCoɑʂo MODE SENSE (pc=0x2e)
    
   
 E BLIST_SINGLELUN ́Ax 1  LUN ɂo͂Ȃ
   
 E BLIST_NOTQ ^OL[𖳌
   
 E BLIST_SPARSELUN LUN ȂĂ
   
 E BLIST_MAX5LUN LUN T̂ő 5 ܂
   
 E BLIST_ISDISK INQUIRY ^CvIɃfBXN (ڃANZX)
   
 E BLIST_ISROM INQUIRY ^CvI ROM 
   
 

E.1.1. ԃx̃RpCIvV

  ܂B

 

E.1.2. ԃx ioctl

  ̃t@CĂB

/usr/src/linux/include/scsi/scsi.h                                     

  include/scsi/scsi.h Œ`Ă SCSI ̏Ԓ萔́ASCSI KiŒ`
ĂlɔׂāA1 rbgEɃVtgĂ_ɒӂĂB

                                                                       
                                                                       
scsi.h 萔           l       SCSI 2 Ki̒l                         
----------------------------------------------------                   
CHECK_CONDITION       0x1           0x2                                
CHECK_GOOD            0x2           0x4                                
BUSY                  0x4           0x8                                
....                                                                   

  ioctl()̊Tv͉L̒ʂłB

SCSI_IOCTL_SEND_COMMAND                                                          
                                                                                 
  ̃C^tF[X͋łBɔėp SCSI(sg)C^tF[X            
  𗘗pĂBėp SCSI(sg)C^tF[XgAfoCX          
  _Ɉ܂B                                                         
                                                                                 
  ܂ŐGė܂łA\͉̂L̂悤ɂȂ܂B                 
  struct sdata {                                                                 
                                                                                 
   unsigned int inlen;     [i] foCXɏ񂾃f[^                      
   unsigned int outlen;    [i] foCXǂݍ񂾃f[^                    
   unsigned char cmd[x];   [i] SCSI R}h(6 <= x <= 16)                       
                           [o] foCXǂݍ񂾃f[^͂Jn        
                           [o] G[ɂ́AZXobt@͂Jn        
   unsigned char wdata[y]; [i] foCXɏ񂾃f[^͂Jn          
  };                                                                             
                                                                                 
  ӁF                                                                         
    ESCSI R}h́AR}h̍ŏ̃oCgł킩܂B㏑        
      @͂܂B                                                     
    Ef[^]́APAGE_SIZE(i386  4 KAalpha  8 K)ɐ܂B         
    E(x + y)̒́AG[NɃZXobt@pɁA                  
      Œ OMAX_SB_LEN oCgȂ΂Ȃ܂BZXobt@                
      OMAX_SB_LEN (16)oCgɏk߂Ă̂ŁAÂR[hłx͂ł܂B 
    EUnix ŃG[ꍇ(Ⴆ ENOMEM)A[U͕̕Ԃl           
      uerrnovɂ Unix ̃G[R[h󂯎܂B                        
      SCSI R}h 0 Ԃ܂B̐󂯎ƁA         
      SCSI ̃G[R[h̏W܂ɂȂĂ܂(4 oCg int ЂƂɂ܂Ƃ    
      Ă)BʃoCg SCSI ̏Ԃ\Ă܂Bڂ          
      drivers/scsi/scsi.h t@CĂB                               
SCSI_IOCTL_GET_IDLUN                                                             
                                                                                 
   ioctl  3 Ԗڂ̈Ƃāustruct scsi_idlunvIuWFNg              
  ւ̃|C^Ƃ܂Bustruct scsi_idlunv̒`́A<scsi/scsi.h>           
  ɂ܂Bɂ́ÃfoCX SCSI zXgA`lAfoCX IDA      
  LUN f[^Ă܂B                                                     
  ɂAwb_t@C͍\̂u#ifdef __KERNEL__vubN              
 uBāv܂B𗘗pɂ́A\̂[ŨvOɃRs[        
  Ȃ΂Ȃ܂B                                                         
  ̂悤ɂȂ܂B                                                           
  typedef struct my_scsi_idlun {                                                 
                                                                                 
      int four_in_one;    /* 4 ̓ƗoCg                              
                             1  int ɂ܂Ƃ߂Ă */                        
      int host_unique_id; /* [J[J[hƋ */                       
  } My_scsi_idlun;                                                               
                                                                                 
     ufour_in_onev́AL̂悤ɍ\Ă܂B                           
      (scsi_device_id | (lun << 8) | (channel << 16) |                           
      (host << 24))                                                              
   4 ͂̕ꂼ 1 oCgł(Ń}XNĂ)Ƃ             
  OɂȂĂ܂B                                                           
SCSI_IOCTL_GET_BUS_NUMBER                                                        
                                                                                 
  Linux J[l 2.2 ȑOł́A ioctl ɂ̓zXgԍKvłB           
  Linux J[l 2.3 JłɂȂāASCSI_IOCTL_GET_IDLUN ioctl ύX         
  ȂȀ񂪓悤ɂȂ܂BāA ioctl ͉ʌ݊      
  ̂߂ɂKvłB                                                         
SCSI_IOCTL_TAGGED_ENABLE                                                         
                                                                                 
  炭AԃxȑOĂ̖cłB󂱂̋@\́A           
  ჌x̃hCo䂵Ă܂B̂ԂłB                     
SCSI_IOCTL_TAGGED_DISABLE                                                        
                                                                                 
  SCSI_IOCTL_TAGGED_ENABLE ̃RgĂB                            
SCSI_IOCTL_PROBE_HOST                                                            
                                                                                 
   ioctl  3 Ԗڂ̈ɉL̂悤ȋp̂ւ̃|C^v܂B       
  union probe_host {                                                             
                                                                                 
    unsigned int length;  /* [i] ASCII o͂̍ő咷 */                     
    char str[length];     /* [o] ӁB'\0' Kv邩               
                                 Ȃ */                                     
  };                                                                             
                                                                                 
  foCX fd ɑΉzXǵAzXgɈˑ̕񂩁A             
  ꂪȂ΃zXg̖O^ꂽ\̂ɏo͂܂Bo͂͗^ꂽ   
  \̂̐擪o͂s邱ƂɒӂĂ(͂ length ͏㏑    
  )BuӁvo͕ length ɐ؂l߂ꂽꍇ́AɁu\0v    
  Kv邩܂BԂl 1 ̏ꍇ̓zXg݂邱Ƃ      
  \A0 ̏ꍇ̓zXg݂ȂƂ\܂(ǂ̂悤ȏꍇH)B̒l     
  ̓G[Ӗ܂B                                                         
                                                                                 
SCSI_IOCTL_DOORLOCK                                                              
SCSI_IOCTL_DOORUNLOCK                                                            
SCSI_IOCTL_TEST_UNIT_READY                                                       
                                                                                 
  jbg(foCX)łĂ 0 ԂAłĂȂ          
  ̒lԂAOS ̃G[ꍇ͕̒lԂ܂B                    
                                                                                 
SCSI_IOCTL_START_UNIT                                                            
SCSI_IOCTL_STOP_UNIT                                                             
                                                                                 
SCSI_EMULATED_HOST          {SG_EMULATED_HOST <new>Ɠ}                       
                                                                                 
SCSI_IOCTL_GET_PCI                                                               
                                                                                 
  ჌x(A_v^)ɑΉPCI ̃Xbg(pci_dev::slot_name)̂A       
  ݃foCX𐧌䂵Ă̂\܂Bő 8 uvŎw        
  ꂽꏊɏo͂܂B݂̃foCX PCI foCXɂĐ䂳      
  Ȃ΁Aerrno  ENXIO ݒ肳܂B( ioctl()́ALinux J[l     
  2.4.4 œ܂)B                                                      

 

E.2. sd hCo

 

 

E.2.1. sd ̃RpCIvV

 

MAX_RETRIES     {5}                                                    
SD_TIMEOUT      {30 seconds}                                           
SD_MOD_TIMEOUT  {75 seconds}                                           

 

E.2.2. sd  ioctl ƃ[UC^tF[X

  ֘At@C͉L̒ʂłB

include/linux/hdreg.h                                                  
include/linux/genhd.h                                                  
include/linux/fs.h                                                     

  ioctl()̃Xg͉L̒ʂłB

HDIO_GETGEO_BIG                                                         
                                                                        
HDIO_GETGEO     [fBXÑWIg擾]                            
BLKGETSIZE      [foCX̃ZN^]                                    
BLKROSET        [[hI[tO̐ݒ]                            
BLKROGET        [[hI[tO̎擾]                            
BLKRASET        [ǂݒl̐ݒ]                                        
BLKRAGET        [ǂݒl̎擾]                                        
BLKFLSBUF       [SCSI TuVXeɃobt@tbV悤ɖ] 
BLKSSZGET       [foCX̃ubNTCY擾]                        
BLKPG           [p[eBVe[ȗ]                          
BLKELVGET       [elevator p^̎擾]                               
BLKELVSET       [elevator p^̐ݒ]                               
BLKRRPART       [p[eBVe[u̍ēǂݍ]                    
                                                                        
open()    (tOׂĖ)                                            
close()                                                                 
ioctl()   (L̃XgQ)                                          

 

E.3. sr hCo

 

 

E.3.1. sr ̃RpCIvV

  ܂B

 

E.3.2. sr  ioctl ƃ[UC^tF[X

  L̃t@CĂB

/usr/src/linux/include/linux/cdrom.h                                   
/usr/src/linux/drivers/cdrom/cdrom.c [revision history section]        
/usr/src/linux/Documentation/cdrom/cdrom-standard.tex                  

  L ioctl ̂́Acdrom-standard.tex ŋLqĂ܂B

CDROMCLOSETRAY                                                         
CDROM_SET_OPTIONS                                                      
CDROM_CLEAR_OPTIONS                                                    
CDROM_SELECT_SPEED                                                     
CDROM_SELECT_DISC                                                      
CDROM_MEDIA_CHANGED                                                    
CDROM_DRIVE_STATUS                                                     
CDROM_CHANGER_NSLOTS                                                   
CDROM_LOCKDOOR                                                         
CDROM_DEBUG                                                            
CDROM_GET_CAPABILITY                                                   
DVD_READ_STRUCT                                                        
DVD_WRITE_STRUCT                                                       
DVD_AUTH                                                               
CDROM_SEND_PACKET                                                      
CDROM_NEXT_WRITABLE                                                    
CDROM_LAST_WRITTEN                                                     

  scd foCX open()Ɏg O_NONBLOCK tO͏dvłBꂪ
ƁA}̂foCXɓ܂ŁAopen()^[Ƒ҂Ƃɂ
܂B

                                                                       
open()          O_NONBLOCK                                             
close()                                                                
read()                                                                 
write()                                                                
ioctl()                                                                

 

E.4. st hCo

 

 

E.4.1. st ̃RpCIvV

  L̃RpCIvV̑啔́Au[g̓W[[
h̃p^Ǝs̐ݒ(Ⴆ ioctl)̗͂ǂ炩
㏑\łB

  L̃p^́Alinux/drivers/scsi/st_options.h Œ`Ă܂
B

ST_NOWAIT                    {0}                                       
ST_IN_FILE_POS               {0}                                       
ST_RECOVERED_WRITE_FATAL     {0}                                       
ST_DEFAULT_BLOCK             {0}                                       
ST_BUFFER_BLOCKS             {32}                                      
ST_WRITE_THRESHOLD_BLOCKS    {30}                                      
ST_MAX_BUFFERS               {4}                                       
ST_MAX_SG                    {16}                                      
ST_FIRST_SG                  {8}                                       
ST_FIRST_ORDER               {5}                                       
ST_TWO_FM                    {0}                                       
ST_BUFFER_WRITES             {1}                                       
ST_ASYNC_WRITES              {1}                                       
ST_READ_AHEAD                {1}                                       
ST_AUTO_LOCK                 {0}                                       
ST_FAST_MTEOM                {0}                                       
ST_SCSI2LOGICAL              {0}                                       
ST_SYSV                      {0}                                       

  L̃p^́Alinux/drivers/scsi/st.c ɒ`Ă܂B

ST_TIMEOUT                   {900*HZ}                                  
ST_LONG_TIMEOUT              {14000*HZ}                                

 

E.4.2. st  ioctl ƃ[UC^tF[X

  Linux ̃e[vC^tF[X́A /usr/src/linux/include/linux/mtio.h
. Œ`Ă܂B

  L ioctl()̓At@xbgɃXgĂAȒPȐE
܂B (st ̃hLg( man 4 st) QƁB)

                                                                          
MTIOCTOP   [e[vR}hsAhCuhCõIvVݒ] 
MTIOCGET   [hCȍԂ擾]                                         
MTIOCPOS   [݂̃e[vʒu擾]                                       
                                                                          
open()   O_RDONLY, O_RDWR                                                 
close()                                                                   
read()                                                                    
write()                                                                   
ioctl()                                                                   

 

E.5. sg hCo

  J[l\[Xɂ鉺L̃wb_t@CAsg hCoɊ֘AĂ
B

        /usr/src/linux/include/scsi/sg.h                               

  Section E.1ŎwEʂAAvP[V̗pɂẮA

    #include <linux/../scsi/sg.h>                                      

̂悤ɃCN[ĥőPłB

 

E.5.1. sg ̃RpCIvV

  ł sg.h ɒ`ĂA[UύXƎv̂
Ă܂B̃ftHg̒ĺAE{}ɕ\Ă
܂B

                                                                        
SG_SCATTER_SZ           {32768}                                         
SG_DEF_RESERVED_SIZE    {SG_SCATTER_SZ}                                 
SG_DEF_FORCE_LOW_DMA    {0}                                             
SG_DEF_FORCE_PACK_ID    {0}                                             
SG_DEF_KEP_ORPHAN       {0}                                             
SG_MAX_QUEUE            {16}                                            
SG_DEFAULT_RETRIES      {1}  # i.e. don't retry                         
SG_BIG_BUFF             {SG_DEF_RESERVED_SIZE}                          
SG_DEFAULT_TIMEOUT      {60 seconds}                                    
SG_DEF_COMMAND_Q        {0 *}                                           
SG_DEF_UNDERRUN_FLAG    {0}                                             
                                                                        
                                                                        
* V sg_io_hdr \̂ɊÂ write()oƁAt@CƂ 
   fBXNv^ɂRs[́A 1 ɕς܂(܂AR}h 
   L[LɂȂ)B                                                

 

E.5.2. sg  ioctl ƃ[UC^tF[X

  L ioctl()̓At@xbgɃXgĂAȒPȐE
Ă܂B(sg ̃hLgQ)B

                                                                              
                                                                              
SG_EMULATED_HOST     [A_v^ ide-scsi ǂ]                     
SG_GET_COMMAND_Q     [R}hL[tȌ]                             
SG_GET_KEEP_ORPHAN   [fꂽ SG_IO keep orphan tȌ]              
SG_GET_LOW_DMA       [ulow dma tOv(i386  <= 16 MB)̏]             
SG_GET_NUM_WAITING   [read()҂]                                       
SG_GET_PACK_ID       [ read() pack_id (ꍇ -1)]            
SG_GET_REQUEST_TABLE [sꂽNGXg̔z𐶐]                       
SG_GET_RESERVED_SIZE [\obt@̌̑傫]                             
SG_GET_SCSI_ID       [ԃx SCSI_IOCTL_GET_IDLUN ioctl       
                      ڂ]                                             
SG_GET_SG_TABLESIZE  [zXg scatter gather e[u̍őGg[]     
SG_GET_TIMEOUT       [^CAEg̐(PʁFWtB[(jyffyBi386  10ms)] 
SG_GET_TRANSFORM     [ide-scsi transform tȌ]                        
SG_IO                [SCSI R}h𑗂A҂]                        
SG_NEXT_CMD_LEN      [̃R}h̃R}hύX]                         
SG_SCSI_RESET        [SCSI oXAfoCXAzXgɃZbg𑗂]            
SG_SET_COMMAND_Q     [R}hL[̏Ԃݒ{old=0, new=1}]               
SG_SET_DEBUG         [fobNx̐ݒ{0}]                                
SG_SET_KEEP_ORPHAN   [SG_IO keep orphan tO̐ݒ {0}]                     
SG_SET_FORCE_LOW_DMA [DMA buffer  low ɋ(i386  <= 16 MB) {0}]         
SG_SET_FORCE_PACK_ID [pack_id  read()s{0}]                             
SG_SET_RESERVED_SIZE [ftHg̃obt@TCYύX                        
                      {SG_DEF_RESERVED_SIZE}]                                 
SG_SET_TIMEOUT       [݂̃^CAEgύX{60 secs} ]                     
SG_SET_TRANSFORM     [ide-scsi  ATAPI transform tO {0}]                 
                                                                              
open()    [F O_ tO: O_RDONLY, O_RDWR, O_EXCL, O_NONBLOCK]          
close()                                                                       
read()                                                                        
write()                                                                       
ioctl()                                                                       
poll()    [O_NONBLOCK [h̎Ɏgp]                                       
fasync()  [read() ɑ΂ SIGIO VOiL]                        

 

Appendix F. QlƎӎAɂ

WEB. L̎Ql Web Ō܂BNÂȂĂA
܂ŕ񍐂ĂB

  [W1] SCSI(htg)KiA񌹁B www.t10.org <http://www.t10.org>

  [W2] Eric Youngdale  SCSI TuVXẽ`[tA[LeNgłB 
www.andante.org/scsi.html <http://www.andante.org/scsi.html>

  [W4] ҂ scsi generic(sg)TCǵA  www.torque.net/sg <http://
www.torque.net/sg>. Linux Documentation Project ̃TCgɁA  
www.tldp.org/HOWTO/SCSI-Generic-HOWTO/ <http://www.tldp.org/HOWTO/
SCSI-Generic-HOWTO/> . ܂BhLg(ŐV)o[ẂA
Lɂ܂B  www.torque.net/sg/p/sg_v3_ho <http://www.torque.net/
sg/p/sg_v3_ho> . sg_utils  sg3_utils pbP[W tarball ƃoCi
ƃ\[XArpm ŁÃy[Wɂ܂B̃pbP[W₻̑ sg
hCoŗpł͉̂LŘ_܂B  www.torque.net/sg/
u_index.html <http://www.torque.net/sg/u_index.html>.

  [W5] Richard Gooch  devfs TCǵA  www.atnf.csiro.au/~rgooch/
linux/docs/devfs.html <http://www.atnf.csiro.au/~rgooch/linux/docs/
devfs.html>

  [W6] Kurt Garloff ̃TCg(scsidev  scsiinfo [eBeB
)́A  www.garloff.de/kurt/linux/ <http://www.garloff.de/kurt/linux/>
. Kurt ͉ꂽ}̂𕜋vO dd_rescue ̃TCgŗp
Ă܂B  www.garloff.de/kurt/linux/ddrescue <http://www.garloff.de
/kurt/linux/ddrescue>

  [W7] Drew Eckhardt  1996 N SCSI-HOWTO(ASCII`)́A  
metalab.unc.edu/pub/Linux/docs/HOWTO/unmaintained/SCSI-HOWTO <http://
metalab.unc.edu/pub/Linux/docs/HOWTO/unmaintained/SCSI-HOWTO>

  [W8] Linux Documentation Project (LDP):  tldp.org <http://tldp.org>

  [W9] SCSI Trade Association TCgɂ́A̖𗧂񂪂
B  www.scsita.org <http://www.scsita.org>

  [W10] SCSI FAQ TCg|𗧂񌹂ƃNWB  www.scsifaq.org
<http://www.scsifaq.org>

j[XO[v. L̃Gg[̓j[XO[vł͂ȂAj[X
O[ṽtN^ (e ML ֗Ă)łB web 
낢ȏꏊ (Ⴆ marc.theaimsgroup.com <http://
marc.theaimsgroup.com>)ŃA[JCuĂ܂B

  [N1] Linux SCSI reflector: < linux-scsi@vger.kernel.org >. rIe
ʂȂ( 200 )Linux SCSI p̃O[vŁASCSI TuVX
ẽei[̑Ă܂B

  [N2] Linux kernel reflector: < linux-kernel@vger.kernel.org >. rI
eʂ( 5000 )O[vŁALinux J[lSʂɂ
Ă܂B܂͂߂ Linux SCSI tN^Ă݂ĂB

. ł́A҂ɗƎv鏑Ђ܂B

  [B1] "Linux Device Drivers" Second edition by Alessandro Rubini and
Jonathan Corbet [O'Reilly 2001 ISBN 0-596-00008-1] ̏Ђ́ASCSI T
uVXȅ܂ށALinux foCXEhCoɂĐMu܂
BubNTuVXeƓlALN^foCXɂĂA
ႪڂĂ܂BLinux 2.4 ñJ[lɒǐĂA Linux 2.2 
2.0 ̏ڂĂ܂B̏Ђ߂ł܂B҂ƏoŎЂ
ŁȀЂ GNU t[p_ (o[W 1.1)Ƃ
pł悤ɂ܂Bhtml `ŁA  www.oreilly.com/catalog/
linuxdrive2/chapter/book <http://www.oreilly.com/catalog/linuxdrive2/
chapter/book> ɒuĂ܂B

 y󒐁FuLinux Device Driversv̓{󂪏ołĂ܂B  u
Linux foCXhCo 2 Łv <http://www.oreilly.co.jp/BOOK/
lidriver2/>z

  [B2] "Running Linux" 3rd edition by M. Welsh, M. K. Dalheimer & L.
Kaufman [O'Reilly 1999 ISBN 1-56592-469-X]  SCSI ̐ݒ܂
Linux ŠłB

 y󒐁FuRunning Linuxv̖|{ołĂ܂B  uRunning Linux
 4 Łv <http://www.oreilly.co.jp/BOOK/rulinux4/>z

  [B3] "The Programmer's Guide to SCSI" by Brian Sawert [Addison Wesley
1998 ISBN 0-201-18538-5] ́ASCSI ̃gsbNڂĂāA
Linux(sg)݂̂ Windows ŎgĂ ASPI  ASPI32 ʂ舵
Ă܂B

ӎ. vĂAL̕XɊӒv܂B

 E Kai Mkisara (st) <Kai.Makisara@metla.fi>
   
 E Jens Axboe (sr) <axboe@suse.de>
   
 E Richard Gooch (devfs) <rgooch@atnf.csiro.au>
   
 E Tim Waugh (ppa, imm, ppscsi + docbook) <twaugh@redhat.com>
   
 E Gadi Oxman (ide-scsi) <gadio@netvision.net.il>
   
{Ŏӎ. ̖|sɓāAL̕ɂbɂȂ܂B
̏Ă\グ܂B

 E 앐Y
   
 E ӂ
   
ƒ. Ă΂ǂ̂悤Ȃ̂łA҂܂ł肭
B <dgilbert@interlog.com> or <dougg@torque.net> .

Notes

[1]  SCSI Kił́A1 {̃oXɕ̃CjVG[^Ă܂ 
     B Linux ł͂܂܂񂪁A󋵂Ppb` 
     B                                                              
                                                                       
[2]  15 ̃p[eBVőȂ΁ALogical Volume Manager (LVM) 
     ĂB/usr/src/linux/Documentation/LVM-HOWTO Q 
     ĂBLVM ́ÃubNfoCXɂ܂_Iȃp[
     eBV܂B                                            
                                                                       
[3]  grub ̂ƂHv 1 ́A/etc/grub.conf  /boot/grub/   
     grub.conf ւ̃V{bNNł_łB /boot ʃp 
     [eBVɂȂĂꍇɁAmĂƕ֗܂By
     󒐁F grub.confAmenu.list ̈ʒu⑶݂́AfBXgr[V
     ɂĕς悤łz                                          
                                                                       
[4]  [gt@CVXeASCSI foCXɂA𐧌䂷჌ 
     x (A_v^)hCo /etc/modules.conf ɋLqĂꍇ
     A[h鏇Ɋւ肪܂Bu[g[_[ SCSI fo
     CX(Ă(}X^[)u[gR[h)AŏɃJ[lǂ
     悤ɎĂ̂AƂ܂B҂͒ʏVXe  
     BIOS ̓A_v^EJ[h BIOS ʓ|݂Ă܂B         
                                                                       
[5]  mkinitrd ̎gpłB[gp[eBV SCSI fBXNɂ 
     A Adaptec ̃Rg[(aic7xxx hCoKv)ɐڑ 
     ĂƂ܂Baic7xxx hCoW[ƂăJ[l\z
     AJ[lC[Wʏ̏ꏊɒu܂(炭 /boot fB
     Ng)BɁualias scsi_hostadapter aic7xxxvƂ悤ȍs 
     /etc/modules.conf t@Cɂ邱ƂmF܂B /boot fBN 
     g mkinitrd /boot/initrd-2.4.5.img 2.4.5 ̂悤ȃR}h 
     CsĂ(Linux J[l 2.4.5 \zĂƉ) 
     B initrd-2.4.5.img ͂łB /etc/lilo.conf 
     ́AL̂悤ȍڂǉ邱ƂɂȂł傤B                
                                                                       
     image=/boot/vmlinuz-2.4.5                                         
         label=linux                                                   
         initrd=/boot/initrd-2.4.5.img                                 
         read-only                                                     
         root=/dev/sda7                                                
                                                                       
     J[l̐ݒł͎̂悤ȓeIĂKv܂B    
                                                                       
     CONFIG_BLK_DEV_RAM=y                                              
     CONFIG_BLK_DEV_RAM_SIZE=4096                                      
     CONFIG_BLK_DEV_INITRD=y                                           
                                                                       
     Documentation/initrd.txt ĂB                         
                                                                       
[6]  PCI A_v^͌Â ISA A_v^ɔׂāAR[huS 
     vłBāAPCI A_v^̏ߒŌł܂悤ȂƂ͂
     Ƃǂ܂B̏ꍇAgݍ݃hCȍ̏(܂ 
     ASCSI A_v^ԍ)́A SCSI TuVXe Makefile (/usr/src/  
     linux/drivers/scsi/Makefile)ɂ鍀ڂ̏ύXΏCł
     ܂B()̃hCoFhCo܂  
     (Ⴆ NCR ̃`bvx[X̃A_v^)B                           
                                                                       
[7]  uscsihostsv̋؂蕶́AJ}̓RłB܂u   
     scsihosts=advansys,imm,,ide-scsivLłB                    
                                                                       
[8]  uscsihostsvgƁARs[^ BIOS ̓u[ggbN(
     lilo  grub Őݒ肳ꂽu[gݒ)ǂꂩ̃fBXNɌA
     J[l̓[gp[eBVʂ̃fBXNŌAƂ
     悤ȏ󋵂ɂȂ邱Ƃ܂BvɍsĂ܂ƁA͂
     荬܂B lilo  grub Łuscsihostsv̐ݒύX(  
     )́A}Vu[gAǂ̃fBXNANZX邩 
     ̂łB                                                  
                                                                       
[9]  uadd-single-devicevƁuremove-single-devicevł̃p[Y͗Zʂ 
     ܂Bė]ȋ(^u)ꂸAŋ
     ܂܂ɂ悤ɂĂB                                    
                                                                       
[10] ATA ͍ŋ߂̌ĂіŁAȑO IDE  EIDE ƌĂ܂B 
     Linux ł́A܂ł̌o܂ ATA foCX𐧌䂷TuVXe 
     uIDEvTuVXeƌĂł_ɒӂĂB           
                                                                       
[11] e[vtbs[̂悤ȑ ATA foCX́AĂ ATAPI C
     ^tF[XgĂ܂BA|I ATA fBXŃA   
     ATAPI C^tF[XgĂ܂B                            
                                                                       
[12] Linux J[l 2.4 nł́Aide-scsi hCop cdrecord 
     ATAPI(IDE) CD C^[𐧌ł悤ɂꍇɁA肪邱
     ƂȂĂ܂B̖́AIDE TuVXe䉺̃foC
     Xɑ΂āAȂŃf[^]xœK悤Ƃ_Ɋ
     AĂ悤łB^CAEg}Vł܂肷
     ۂol̒ɂ́A hdparm R}hg DMA ̐ݒx 
     邱ƂŖł悤łBCD C^[ /dev/ 
     hdd ɐڑĂ΁AL 2 ̃R}ĥǂ炩ŁA܂ 
     Ƃ킩܂B                                          
                                                                       
         hdparm -d0 -c1 /dev/hdd                                       
         hdparm -d 1 -X 34 /dev/hdd                                    
                                                                       
     ŏ̂̂ DMA SɖÂ̂́u}`[h DMA 
     [h 2vɂ܂BCD C^[́Aŋ߃fBXNgp悤ȃ^C 
     v̑xKvƂĂ܂Bu16{vŏĂƂĂAێ
     ]x 150 KB/sec  16 {A͂ق 2.4MB/sec ɓ܂ 
     B͍Ƃ͌܂B܂A IDE Rg[(Promise 
     ) CD C^[OA}U[{[h̒ᑬ IDE Rg[
     ڑƁAsKɔ IDE oX̃Zbg肪A 
     Ƃ񍐂܂Bʂ̕񍐂ł́AIDE n[hfBXN DMA  
     ɂ(͖ɂ)ƌł܂邱ƂȂȂAƂ܂B
                                                                       
[13] fBXgr[VɂẮAhdparm R}hsƂ 
     񍐂Ă܂B̂悤ȏꍇ "echo ... > /proc/ide/hdx/ 
     settings" gĂB                                  
                                                                       
[14] ̃Xg www.kernel.org <http://www.kernel.org>ɂ̃J 
     [l 2.4 n[XW߂̂łBfBXgr[V 
     ƗČ̃J[lĂ܂̂ŁASCSI TuVXẽT 
     |[g(͕ύX)ɂeoł傤BႦ΂̃}Vł̓J
     [lu2.4.18-27.8.0vƂȂĂ܂B炭̃J[l   
     2.4.18 ɂĂāAfBXgr[V́u8.0vł̂߂ɁA
     x_[ 27 ɓnďCƂƂł傤BύX̎
     ̈ƂāA 2.4.18 ɓĂ aic7xxx hCo       
     Adaptec  Ultra 320 V[Y PCI A_v^T|[gĂ܂
     Ax_[̃o[Wł̓T|[gĂ܂B                  

