19.6. Оптик зөөвөрлөгчийг (CD-үүд) үүсгэж ашиглах нь

Хувь нэмэр болгон оруулсан Майк Мэйэр.

19.6.1. Танилцуулга

CD-үүд нь тэдгээрийг ердийн дискнүүдээс ялгах хэд хэдэн боломжуудтай байдаг. Эхлээд хэрэглэгч CD дээр бичих боломжгүй байсан. Тэдгээр нь замуудын хооронд толгойг шилжүүлэхдээ сааталгүйгээр үргэлжлэн уншдагаар хийгджээ. Тэр үед байсан адил хэмжээтэй зөөвөрлөгчийг зөөхөөс тэдгээрийг систем хооронд зөөх нь хамаагүй хялбар байдаг.

CD-үүд нь замтай байдаг боловч энэ нь дискний физик хэсэг биш харин үргэлжлэн уншигдах өгөгдлийн хэсгийг хэлдэг. FreeBSD дээр CD үүсгэхдээ CD дээр замууд үүсгэх өгөгдлийн файлуудыг бэлдэж дараа нь замуудыг CD уруу бичнэ.

ISO 9660 файлын систем нь эдгээр ялгаануудтай ажиллахаар хийгдсэн. Энэ нь тэр үед нийтлэг байсан файлын системийн хязгааруудыг харамсалтай нь кодчилдог. Азаар энэ нь зөв бичигдсэн CD-үүдэд тэдгээр хязгааруудыг давж гарахыг зөвшөөрөх өргөтгөлөөр хангадаг бөгөөд тэдгээр өргөтгөлүүдийг дэмждэггүй системүүдтэй ажиллаж чадсан хэвээр байдаг.

sysutils/cdrtools портод ISO 9660 файлын системийг агуулах өгөгдлийн файлыг үүсгэдэг програм mkisofs(8) байдаг. Энэ нь төрөл бүрийн өргөтгөлүүдийг дэмждэг тохируулгуудтай бөгөөд доор тайлбарлагдсан болно.

CD шарахдаа ямар хэрэгслийг ашиглах нь таны CD шарагч ATAPI юу аль эсвэл өөр үү гэдгээс шалтгаална. ATAPI CD шарагчид нь үндсэн системийн burncd програмыг ашигладаг. SCSI болон USB CD шарагчид нь sysutils/cdrtools портын cdrecord-г ашиглах ёстой. Мөн ATAPI тоног төхөөрөмж дээр SCSI хөтчүүдийн хувьд ATAPI/CAM модул ашиглан cdrecord-г хэрэглэх боломжтой байдаг.

Хэрэв та график хэрэглэгчийн интерфэйстэй CD шарагч програм хангамжийг хүсэж байгаа бол X-CD-Roast эсвэл K3b-г үзээрэй. Эдгээр хэрэгслүүд нь багц хэлбэрээр эсвэл sysutils/xcdroast болон sysutils/k3b портуудад байдаг. X-CD-Roast болон K3b нь ATAPI тоног төхөөрөмж дээр ATAPI/CAM модулийг шаарддаг.

19.6.2. mkisofs

sysutils/cdrtools портын хэсэг mkisofs(8) програм нь UNIX®-ийн файлын системийн нэрийн талбар дахь сангийн модны дүрс болох ISO 9660 файлын системийг үүсгэдэг. Хамгийн хялбар хэрэглээ нь:

# mkisofs -o imagefile.iso /path/to/tree

Энэ тушаал нь /path/to/tree дахь модны хуулбар ISO 9660 файлын системийг агуулах imagefile.iso файлыг үүсгэх болно. Энэ процессод файлын нэрсийг ISO 9660 файлын системийн стандартын хязгаарлалтуудад багтах нэрсэд тааруулах бөгөөд ISO файлын системүүдэд байдаггүй нэрс бүхий файлуудыг оруулахгүй байх болно.

Тэдгээр хязгаарлалтуудыг давж гарах хэд хэдэн тохируулгууд байдаг. Ялангуяа -R тохируулга UNIX системүүдэд нийтлэг байдаг Rock Ridge өргөтгөлүүдийг идэвхжүүлдэг, -J нь Microsoft системүүдэд хэрэглэгддэг Joilet өргөтгөлүүдийг идэвхжүүлдэг бөгөөд -hfs нь Mac OS®-д хэрэглэгддэг HFS файлын системүүдийг үүсгэхэд ашиглагддаг.

Зөвхөн FreeBSD системүүдэд ашиглагдах CD-үүдийн хувьд -U тохируулга бүх файлын нэрийн хязгаарлалтуудыг хаахад ашиглагдаж болно. -R тохируулгатай хэрэглэгдэх үед энэ нь таны эхэлсэн FreeBSD-ийн модтой ижил файлын системийн дүрсийг үүсгэдэг, гэхдээ энэ нь ISO 9660 стандартыг хэд хэдэн замаар зөрчиж болох юм.

Ердийн хэрэглээний сүүлийн тохируулга нь -b юм. Энэ нь ачаалагдах “El Torito” CD-г үүсгэхэд хэрэглэгдэх ачаалагдах дүрсний байрлалыг заахад ашиглагддаг. Энэ тохируулга нь CD уруу бичигдэх модны дээд хэсгийн ачаалагдах дүрс хүрэх замыг заах нэмэлт өгөгдлийг авдаг. Анхдагчаар mkisofs(8) нь “floppy disk emulation буюу уян дискний эмуляц” гэж нэрлэгддэг горимд ISO дүрсийг үүсгэдэг бөгөөд ачаалагдах дүрсийг яг 1200, 1440, эсвэл 2880 KB хэмжээтэй байна гэж тооцдог. FreeBSD түгээлтийн дискнүүдэд хэрэглэгддэг ачаалагч дуудагч зэрэг зарим ачаалагч дуудагчид нь эмуляц горимыг ашигладаггүй; энэ тохиолдолд -no-emul-boot тохируулгыг ашиглах шаардлагатай. Тэгэхээр хэрэв /tmp/myboot нь ачаалагдах FreeBSD системийг /tmp/myboot/boot/cdboot дэх ачаалагдах дүрстэй цуг агуулж байвал та ISO 9660 файлын системийн дүрсийг /tmp/bootable.iso-д иймэрхүү маягаар үүсгэж болох юм:

# mkisofs -R -no-emul-boot -b boot/cdboot -o /tmp/bootable.iso /tmp/myboot

Үүнийг хийснийхээ дараа хэрэв та цөмдөө md-г тохируулсан бол файлын системийг ингэж холбож болно:

# mdconfig -a -t vnode -f /tmp/bootable.iso -u 0
# mount -t cd9660 /dev/md0 /mnt

Энэ үед та /mnt болон /tmp/myboot нь ижил болохыг шалгаж болно.

mkisofs(8)-ийн ажиллагааг нарийн тааруулахын тулд та түүний бусад олон тохируулгуудыг ашиглаж болно. Ялангуяа ISO 9660-ийн байрлал болон Joilet ба HFS дискнүүдийн үүсгэлтэд өөрчлөлтүүд хийж болно. Дэлгэрэнгүйг mkisofs(8)-ийн гарын авлагын хуудаснаас үзнэ үү.

19.6.3. burncd

Хэрэв танд ATAPI CD шарагч байгаа бол та ISO дүрсийг CD уруу шарахдаа burncd тушаалыг ашиглаж болно. burncd нь үндсэн системийн хэсэг бөгөөд /usr/sbin/burncd гэж суулгагдсан байдаг. Энэ нь цөөн тохируулгуудтай болохоор хэрэглэхэд их хялбар байдаг:

# burncd -f cddevice data imagefile.iso fixate

Дээрх тушаал нь imagefile.iso-н хуулбарыг cddevice уруу шарах болно. Анхдагч төхөөрөмж нь /dev/acd0 юм. Бичих хурд, шарсны дараа CD-г гаргах болон аудио өгөгдөл бичихийг заах тохируулгуудын талаар burncd(8)-с үзнэ үү.

19.6.4. cdrecord

Хэрэв танд ATAPI CD шарагч байхгүй бол та өөрийн CD-үүдийг шарахын тулд cdrecord-г ашиглах шаардлагатай. cdrecord нь үндсэн системд байдаггүй; та үүнийг sysutils/cdrtools дахь портоос эсвэл тохирох багцаас суулгах ёстой. Үндсэн системд хийгдсэн өөрчлөлт нь энэ програмын хоёртын хувилбарыг ажиллахгүй болгож, магадгүй “асуудалд (coaster)” хүргэж болох юм. Тийм болохоор та өөрийн системээ шинэчлэхдээ портоо бас шинэчлэх эсвэл хэрэв та -STABLE салбарыг дагаж байгаа бол портыг шинэ хувилбар гарахад нь шинэчлэх хэрэгтэй.

cdrecord нь олон тохируулгатай байдаг боловч үндсэн хэрэглээ нь burncd-с бүр илүү хялбар байдаг. ISO 9660 дүрсийг шарахдаа:

# cdrecord dev=device imagefile.iso

cdrecord-г хэрэглэхэд гардаг нэг заль нь dev тохируулгыг олох явдал юм. Зөв тохиргоог олохын тулд cdrecord-ийн -scanbus тугийг хэрэглэх хэрэгтэй бөгөөд энэ нь иймэрхүү үр дүнд хүргэж болох юм:

# cdrecord -scanbus
Cdrecord-Clone 2.01 (i386-unknown-freebsd7.0) Copyright (C) 1995-2004 Jörg Schilling
Using libscg version 'schily-0.1'
scsibus0:
        0,0,0     0) 'SEAGATE ' 'ST39236LW       ' '0004' Disk
        0,1,0     1) 'SEAGATE ' 'ST39173W        ' '5958' Disk
        0,2,0     2) *
        0,3,0     3) 'iomega  ' 'jaz 1GB         ' 'J.86' Removable Disk
        0,4,0     4) 'NEC     ' 'CD-ROM DRIVE:466' '1.26' Removable CD-ROM
        0,5,0     5) *
        0,6,0     6) *
        0,7,0     7) *
scsibus1:
        1,0,0   100) *
        1,1,0   101) *
        1,2,0   102) *
        1,3,0   103) *
        1,4,0   104) *
        1,5,0   105) 'YAMAHA  ' 'CRW4260         ' '1.0q' Removable CD-ROM
        1,6,0   106) 'ARTEC   ' 'AM12S           ' '1.06' Scanner
        1,7,0   107) *

Энэ нь жагсаалтан дахь төхөөрөмжүүдийн хувьд тохирох dev утгыг жагсаадаг. Өөрийн CD шарагчийг олохын тулд dev тохируулгын утгад гурван дугаарыг таслалаар тусгаарлан хэрэглэнэ. Энэ тохиолдолд CRW төхөөрөмж нь 1,5,0, байх бөгөөд тохирох оролт нь dev=1,5,0 болно. Энэ утгыг заах амархан аргууд байдаг; дэлгэрэнгүйг cdrecord(1)-с үзнэ үү. Мөн тэндээс аудио замуудыг бичих, хурдыг хянах болон бусад зүйлүүдийн тухай мэдээллийг үзэж болно.

19.6.5. Аудио CD-үүдийг хувилах

Та аудио өгөгдлийг CD-ээс файлуудын цуваа болгон задалж дараа нь эдгээр файлуудыг хоосон CD дээр бичин аудио CD-г хувилж болно. Энэ процесс нь ATAPI болон SCSI хөтчүүдийн хувьд нэлээн өөр байдаг.

SCSI хөтчүүд

  1. Аудиог cdda2wav ашиглан задлана.

    % cdda2wav -vall -D2,0 -B -Owav
    
  2. cdrecord ашиглан .wav файлуудыг бичнэ.

    % cdrecord -v dev=2,0 -dao -useinfo  *.wav
    

    Хэсэг 19.6.4 хэсэгт тайлбарласны дагуу 2,0 гэж зөв заагдсан эсэхийг шалгаарай.

ATAPI хөтчүүд

Тэмдэглэл: ATAPI/CAM модулийн тусламжтай cdda2wav тушаал ATAPI хөтчүүд дээр ашиглагдаж болно. Энэ хэрэгсэл нь доор санал болгож байгаа аргыг бодвол ихэнх хэрэглэгчдийн хувьд ихэвчлэн илүүтэй сонголт байдаг (доргио засварлалт, төгсгөгчийн асуудал гэх мэт).

  1. ATAPI CD драйвер нь зам бүрийг /dev/acddtnn маягаар болгодог бөгөөд d нь хөтчийн дугаар ба nn нь шаардлагатай бол урдаа 0 тавьж хоёр оронтой тоогоор бичигдсэн замын дугаар юм. Тэгэхээр эхний диск дээрх эхний зам нь /dev/acd0t01, хоёр дахь нь /dev/acd0t02, гурав дахь нь /dev/acd0t03 гэх мэтчилэн байна.

    Тохирох файлууд /dev санд байгаа эсэхийг шалгаарай. Хэрэв оруулгууд байхгүй байгаа бол зөөвөрлөгчийг дахин үзэхээр системийг хүчлэх хэрэгтэй:

    # dd if=/dev/acd0 of=/dev/null count=1
    
  2. Зам бүрийг dd(1) ашиглан задална. Файлуудыг задлахдаа та тусгай блокийн хэмжээг бас ашиглах ёстой.

    # dd if=/dev/acd0t01 of=track1.cdr bs=2352
    # dd if=/dev/acd0t02 of=track2.cdr bs=2352
    ...
    
  3. Задалсан файлуудаа диск уруу burncd ашиглан шарна. Та эдгээрийг аудио файл гэж зааж өгөх хэрэгтэй бөгөөд burncd нь дуусахдаа дискийг бэхжүүлэх ёстой.

    # burncd -f /dev/acd0 audio track1.cdr track2.cdr ... fixate
    

19.6.6. Өгөгдлийн CD-үүдийг хувилах

Та өгөгдлийн CD-г mkisofs(8)-р үүсгэсэн дүрс файлтай ажиллагааны хувьд адилхан дүрс файл уруу хуулж болох бөгөөд та үүнийг ямар ч өгөгдлийн CD хувилахад ашиглаж болно. Энд өгөгдсөн жишээ нь таны CDROM төхөөрөмжийг acd0 гэж үзэх болно. Өөрийн зөв CDROM төхөөрөмжөөр солиорой.

# dd if=/dev/acd0 of=file.iso bs=2048

Одоо та нэгэнт дүрстэй болсон болохоор үүнийг CD уруу дээр тайлбарласны дагуу шарж болно.

19.6.7. Өгөгдлийн CD-үүдийг ашиглах

Одоо та стандарт өгөгдлийн CDROM үүсгэсэн болохоор түүнийг холбож түүн дээрх өгөгдлийг уншихыг хүсэх байх. Анхдагчаар mount(8) нь файлын системийг ufs төрлийнх гэж үздэг. Хэрэв та доорх шиг оролдвол:

# mount /dev/cd0 /mnt

Incorrect super block” гэж гомдоллохыг та харах бөгөөд холболт хийгдэхгүй байх болно. CDROM нь UFS файлын систем биш, тэгэхээр ингэж холбохыг оролдох нь амжилтгүй болох болно. Та mount(8)-д файлын системийн төрөл нь ISO9660 гэж зааж өгөхөд л бүгд ажиллах болно. Та -t cd9660 тохируулгыг mount(8)-д өгч үүнийг хийнэ. Жишээ нь хэрэв та CDROM төхөөрөмж /dev/cd0/mnt-д холбохыг хүсвэл дараах тушаалыг ажиллуулах болно:

# mount -t cd9660 /dev/cd0 /mnt

Таны төхөөрөмжийн нэр (энэ жишээн дээр /dev/cd0) таны CDROM ямар интерфэйс ашиглаж байгаагаас хамааран өөр байж болох юм. Мөн -t cd9660 тохируулга нь ердөө л mount_cd9660(8)-г ажиллуулдаг. Дээрх жишээг ингэж богиносгож болно:

# mount_cd9660 /dev/cd0 /mnt

Та ерөнхийдөө энэ аргаар ямар ч үйлдвэрлэгчийн өгөгдлийн CDROM-уудыг ашиглаж болно. Гэхдээ зарим нэг ISO 9660 өргөтгөлүүдтэй дискнүүд хачин ажиллаж болох юм. Жишээ нь Joilet дискнүүд нь бүх файлын нэрсийг хоёр байт Юникод тэмдэгтээр хадгалдаг. FreeBSD цөм нь Юникодоор ярьдаггүй, гэхдээ FreeBSD-ийн CD9660 драйвер Юникод тэмдэгтүүдийг шууд хувиргаж чаддаг. Хэрэв зарим нэг Англи бус тэмдэгтүүд асуултын тэмдэг хэлбэрээр харагдвал та ашиглаж байгаа локал тэмдэгтийн олонлогоо -C тохируулгаар зааж өгөх хэрэгтэй. Дэлгэрэнгүй мэдээллийг mount_cd9660(8) гарын авлагын хуудаснаас лавлана уу.

Тэмдэглэл: Энэ тэмдэгтийн хувиргалтыг -C тохируулгын тусламжтай хийхийн тулд цөм cd9660_iconv.ko модулийг дуудсан байхыг шаардах болно. Энэ мөрийг loader.conf файлд нэмж үүнийг:

cd9660_iconv_load="YES"

гэж хийн машиныг дахин ачаалах буюу эсвэл модулийг kldload(8)-н тусламжтай дуудан хийж болох юм.

Хааяа таныг CDROM-г холбохыг оролдох үед “Device not configured” гэсэн алдаа гарч болох юм. Энэ нь ихэнхдээ CDROM хөтөч нь төхөөрөмжид диск байхгүй эсвэл хөтөч нь шугаманд (bus) харагдахгүй байна гэж үзэж байна гэсэн үг юм. CDROM хөтөч нь хоёр секундын дотор үүнийг мэддэг болохоор тэвчээртэй байгаарай.

Шугамын дахин тогтоолтод хариу өгөх хангалттай хугацаа байхгүйн улмаас заримдаа SCSI CDROM-ийг олохгүй байж болох юм. Хэрэв та SCSI CDROM-той бол та дараах тохируулгыг цөмийн тохиргоондоо нэмж өөрийн цөмийг дахин бүтээнэ үү.

options SCSI_DELAY=15000

Энэ нь таны SCSI шугамд ачаалах үедээ 15 секунд түр саатахыг хэлж өгөх бөгөөд ингэснээр шугамын дахин тогтоолтод таны CDROM хөтчөөр хариу өгүүлэхийн тулд бүх байж болох боломжийг түүнд өгч байна гэсэн үг юм.

19.6.8. Түүхий өгөгдлийн CD-үүдийг шарах

Та ISO 9660 файлын системийг үүсгэлгүйгээр файлыг CD уруу шууд шарахаар сонгож болно. Зарим хүмүүс үүнийг нөөцлөх зорилгоор хийдэг. Энэ нь стандарт CD-г шарахаас илүү хурдан ажилладаг:

# burncd -f /dev/acd1 -s 12 data archive.tar.gz fixate

Тийм CD-д шарагдсан өгөгдлийг авахын тулд та түүхий төхөөрөмжийн цэгээс өгөгдлийг унших ёстой:

# tar xzvf /dev/acd1

Та энэ дискийг ердийн CDROM-ийг холбодог шиг холбож чадахгүй. Ийм CDROM нь FreeBSD-ээс өөр ямар ч үйлдлийн систем дээр уншигдахгүй. Хэрэв та CD-гээ холбохыг эсвэл өөр үйлдлийн системтэй өгөгдлөө хуваалцах хүсэлтэй байгаа бол дээр тайлбарласны дагуу mkisofs(8)-г ашиглах ёстой.

19.6.9. ATAPI/CAM драйверийг ашиглах

Хувь нэмэр болгон оруулсан Марк Фонвил.

Энэ драйвер нь ATAPI төхөөрөмжүүдэд (CD-ROM, CD-RW, DVD хөтчүүд гэх мэт...) SCSI дэд системээр хандах боломжийг олгох бөгөөд ингэснээр sysutils/cdrdao эсвэл cdrecord(1) зэрэг програмуудыг ашиглах боломжийг олгодог.

Энэ драйверыг ашиглахын тулд та дараах мөрийг /boot/loader.conf файл уруу нэмэх хэрэгтэй болно:

atapicam_load="YES"

тэгээд өөрийн машинаа дахин ачаална.

Тэмдэглэл: Хэрэв та өөрийн цөмдөө atapicam(4) дэмжлэгийг статикаар эмхэтгэхийг хүсвэл энэ мөрийг өөрийн цөмийн тохиргооны файлдаа нэмэх хэрэгтэй болно:

device atapicam

Мөн та өөрийн цөмийн тохиргооны файлдаа дараах мөрүүдийг бас нэмэх хэрэгтэй болно:

device ata
device scbus
device cd
device pass

Эдгээр нь аль хэдийн байж байх ёстой. Дараа нь дахин бүтээгээд өөрийн цөмийг суулгаж машинаа дахин ачаалах хэрэгтэй.

Ачаалах процессийн үед таны шарагч иймэрхүү маягаар гарч ирэх ёстой:

acd0: CD-RW <MATSHITA CD-RW/DVD-ROM UJDA740> at ata1-master PIO4
cd0 at ata1 bus 0 target 0 lun 0
cd0: <MATSHITA CDRW/DVD UJDA740 1.00> Removable CD-ROM SCSI-0 device
cd0: 16.000MB/s transfers
cd0: Attempt to query device size failed: NOT READY, Medium not present - tray closed

Одоо хөтчид /dev/cd0 төхөрөөмжийн нэрийг ашиглан хандаж болох бөгөөд жишээ нь CD-ROM-г /mnt-д холбохдоо дараах тушаалыг бичих хэрэгтэй:

# mount -t cd9660 /dev/cd0 /mnt

root хэрэглэгчээр дараах тушаалыг ажиллуулж та шарагчийн SCSI хаягийг авч болно:

# camcontrol devlist
<MATSHITA CDRW/DVD UJDA740 1.00>   at scbus1 target 0 lun 0 (pass0,cd0)

Тэгэхээр 1,0,0 нь cdrecord(1) болон бусад SCSI програмтай ашиглах SCSI хаяг болох юм.

ATAPI/CAM болон SCSI системийн талаар дэлгэрэнгүй мэдээллийг atapicam(4) болон cam(4) гарын авлагын хуудаснуудаас лавлана уу.

Энэ болон бусад баримтуудыг ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/ хаягаас татаж авч болно.

FreeBSD-ийн талаар <questions@FreeBSD.org> хаягтай холбоо барихаасаа өмнө баримтыг уншина уу.
Энэ бичиг баримттай холбоотой асуулт байвал <doc@FreeBSD.org> хаягаар цахим захидал явуулна уу.
Энэ бичиг баримтын орчуулгатай холбоотой асуулт байвал <admin@mnbsd.org> хаягаар цахим захидал явуулна уу.