Следваща
точка Предишна
точка Съдържание
Тази
точка се
отнася до
следните
типове записвачки:
SCSI, IDE/ATAPI и
устройства,
включвани
чрез паралелен
порт. USB
CD-записвачките
не се
разглеждат в
това
упътване (ще
ги видим
по-нататък :). Записвачките,
които не са SCSI
изискват т.н.
compatibility drivers (драйвери
за
съвместимост),
с помощта на
които те
изглеждат
така, все
едно че са реални
SCSI
устройства.
От една
страна
подобна
унифицираща
стратегия е
лесна
("всичко е SCSI"),
защото на
програмно
ниво можете
да споделяте
вашата
записвачка с
другите
юзери, без
значение от
модела и. От
друга страна,
трябва да
конфигурирате
програми, като
например CD players
или mount, за да се
отразят
промените,
предизвикани
от новото име
на драйвера. Например,
ако вие сте
влизали във
вашия ATAPI CD-R през
файла-устройство
/dev/hdc преди, то
сега записвачката
ще е достъпна
през /dev/scd0 след
активирането
на SCSI съвместимите
драйвери.
След
като сте
настроили
успешно
вашия хардуер,
командата cdrecord -scanbus
показва
устройствата,
закачени на SCSI
шината.
Трябва да
видите нещо
подобно на това:
shell> cdrecord -scanbus
Cdrecord release 1.7a1 Copyright (C) 1995-1998 Jörg Schilling
scsibus0:
0,0,0) 'Quantum ' 'XP34300 ' 'F76D' Disk
0,1,0) 'SEAGATE ' 'ST11200N ' '8334' Disk
0,2,0) *
0,3,0) 'TOSHIBA ' 'MK537FB/ ' '6258' Disk
0,4,0) 'WANGTEK ' '5150ES SCSI 36 ' 'ESB6' Removable Tape
0,5,0) 'EXABYTE ' 'EXB-8500-85QUE ' '0428' Removable Tape
0,6,0) 'TOSHIBA ' 'XM-3401TASUNSLCD' '3593' Removable CD-ROM
0,7,0) *
scsibus1:
1,0,0) 'Quantum ' 'XP31070W ' 'L912' Disk
1,1,0) *
1,2,0) *
1,3,0) 'TEAC ' 'CD-R55S ' '1.0H' Removable CD-ROM
1,4,0) 'MATSHITA' 'CD-R CW-7502 ' '4.02' Removable CD-ROM
1,5,0) *
1,6,0) 'YAMAHA ' 'CDR400t ' '1.0d' Removable CD-ROM
1,7,0) *
Листинг
:
Детектване
на
устройства
по
SCSI
шината
Тази пример показва общо четири CD-писачки. Имайте предвид, обаче че -scanbus също така показва и другите устройства, т.е. обикновените CD-ROM-и хард-дискове. Последната колона дава описание на устройствата, но само с нейна помощ не може да се различат обикновените CD-ROM-и от записващите CD-ROM-и. Но идентификацията на продукта (средната колона) дава подсказка относно типа CD-ROM (R, -R или -RW)
Тази
точка има за
цел да обясни
бързо и лесно
начина на
конфигуриране.
Не
всички
възможни
настройки са
разгледани, но все
пак
изпробвайте
тези, които
са обяснени.
Първо
проверете
коя версия е Linux
ядрото: uname –r, или cat
/proc/version. Трябва
да е нещо
като 2.0.36 (най-малко)
или 2.4.20
(или
подобно).
Листинга по-долу показва командите, с които трябва да започнете. Тези команди създават файлове-устройства в /dev, ако те вече не съществуват.
test `whoami` = 'root' || echo "You must be root to execute the commands."
cd /dev/
umask -S u=rwx,g=rwx,o-rwx
[ -f loop0 ] \
|| ./MAKEDEV loop \
|| for i in 0 1 2 3 4 5 6 7; do mknod loop$i b 7 $i; done
[ -f sg0 -o -f sga ] \
|| ./MAKEDEV sg \
|| for i in 0 1 2 3 4 5 6 7; do mknod sg$i c 21 $i; done
Листинг
:
Създаване
на файловете
за
устройства
Достъпа до хардуера под Linux се извършва чрез файловете-устройства в /dev. Затова преди всичко се убедете, че тези файлове съществуват. devfs файловата система е налична години наред, и тя създава сигурна (!) и далеч по-чиста система за именуване на устройствата и ги прави автоматично видими под /dev. Някои изтъкват аргументи, че devfs не е перфектното решение, но досега не са предложили нищо по-добро, нито съвместимо и дори нищо за тестване.
Следващото нещо, за което трябва да бъдем сигурни е, че Linux ядрото е екипирано с необходимите драйвери. Следващите команди проверяват различни файлове за наличието на драйвери в работещо Linux ядро. Обикновено командата "cdrecord -scanbus" би трябвало да зареди автоматично всички драйвери. В случай, че драйверът още не е наличен в ядрото (както става при мен), той трябва да се зареди ръчно като модул (module) с командата insmod.
test `whoami` = 'root' || echo "You must be root to execute the commands."
cdrecord -scanbus > /dev/null
if ! (pidof kerneld || test -f "/proc/sys/kernel/modprobe"); then
echo "Neither kerneld nor kmod are running to automatically load modules".
fi
report_no_autoload() {
echo "Ensure the module $1 is loaded automatically next time."
}
if test ! -f "/proc/scsi/scsi"; then
report_no_autoload scsi_mod && insmod scsi_mod
fi
if ! grep "^........ sg_" /proc/ksyms > /dev/null; then
report_no_autoload sg && insmod sg
fi
if ! grep "^........ sr_" /proc/ksyms > /dev/null; then
report_no_autoload sr_mod && insmod sr_mod
fi
if ! grep "^........ loop_" /proc/ksyms > /dev/null; then
report_no_autoload loop && insmod loop
fi
if ! grep iso9660 /proc/filesystems > /dev/null; then
report_no_autoload iso9660 && insmod iso9660
fi
echo "The following is only needed for IDE/ATAPI CD-writers."
if ! grep ide-scsi /proc/ide/drivers > /dev/null; then
report_no_autoload ide-scsi && insmod ide-scsi
fi
cdrecord -scanbus
Листинг
:
Тестване
на
драйверите
Прочетете следващата точка за insmod преди да се оплаквате за липсващи модули. Ако сте в текстова среда или чиста конзола (console), зареждането на модули може да е съпроводено с отпечатването на съобщения на монитора. Тези съобщения може да се видят с: dmesg.
Има няколко начина да се заредят модулите при следващото стартиране на Линукс:
(1) Подходяща insmod команда се слага във файл-скрипт, наречен /etc/rc.d/rc.local или подобен.
(2a) Стартира се kerneld или kmod.
(2b) Конфигурира се файлът /etc/modules.conf
Щастливците
със SCSI-записвачка
(като мен :)
може да
пропуснат
останалата
част от тази
точка, защото cdrecord обикновено
разпознава
техния
хардуер. Ако не –
тогава ръчно
стартирайте: modprobe
подходящия_драйвер io=0x_нещо_си irq=прекъсването_на_SCSI_контролера и след
това
хардуерът няма
как да не
бъде
разпознат
мамка му! В
моя случай: modprobe
aha152x io=0x140 irq=9 и
всичко после
е ОК.
Сега малко за щастливците със CD-записвачки тип IDE/ATAPI. Както беше обяснено в предишната точка, трябва да заредите съвместим драйвер ide-scsi. Но този драйвер дава достъп до записвачката само ако никой друг драйвер преди това не е бил зареден със същите цели. С други думи, трябва да се укаже на обикновения IDE драйвер да остави CD-записвачката неразпозната, за да може ide-scsi драйвера да я разпознае.
hda = IDE bus/connector 0 master device
hdb = IDE bus/connector 0 slave device
hdc = IDE bus/connector 1 master device
hdd = IDE bus/connector 1 slave device
Таблица
:
Имена
на
IDE/ATAPI
устройствата
Примера по-долу показва връзките между имената на устройствата и мястото им на IDE шината. Името на устройството, представляващо CD-записвачката трябва да бъде поставено като драйвер в Linux ядрото. Пример: hdc=ide-scsi. Същия ред трябва да се добави в lilo.conf ако ако драйверът е компилиран директно в ядрото, което е най-често срещаната настройка (абе така пише в howto-то, ама според мен най-често драйверите се компилират като модули). Ако трябва да сложите повече от един параметър към ядрото, тогава ги разделете с интервал. Следващия листинг показва примерна конфигурация за /etc/lilo.conf. Имайте предвид, че append параметъра е специфичен за ядрото (т.е. не го слагайте веднага най-отгоре).
image=/boot/zImage-2.4.20
label=Linux
read-only
append="hdc=ide-scsi"
Листинг
:
Примерна
конфигурация
за
lilo
(/etc/lilo.conf)
Ако драйверът за IDE/ATAPI CD-ROM-а е зареден като модул, тогава включете примера по-долу в /etc/modules.conf. Последните три линии са предложение за по-нататъшно автоматизирано зареждане на необходимите модули.
options ide-cd ignore=hdc # указва на ide-cd модула да игнорира hdc
alias scd0 sr_mod # зарежда sr_mod за достъп до scd0
#pre-install ide-scsi modprobe imm # разкоментирайте го, само ако имате ZIP устройство
pre-install sg modprobe ide-scsi # зарежда ide-scsi преди sg
pre-install sr_mod modprobe ide-scsi # зарежда ide-scsi преди sr_mod
pre-install ide-scsi modprobe ide-cd # зарежда ide-cd преди ide-scsi
Листинг
:
Примерна
конфигурация
за
/etc/modules.conf
Ако CD-записвачката
е
единственото
CD-ROM устройство,
тогава
запомнете, че
имате достъп
до CD-ROM-а
през
файла-устройство
/dev/scd× където
×=0,..,8. (Най-често
scd0).
Може да
промените
символната
връзка cdrom да сочи
към новото
име на
устройство. Ето
пример за scd0:
cd /dev && rm cdrom && ln -s scd0 cdrom
Листинг
:
Създаване
на
cdrom
като
символна
връзка към
scd0
Ако
записвачката
и
обикновения CD-ROM са две
различни
устройства, тогава
- за бога
братя - не си
играйте със
символната
връзка cdrom!
Убедете
се, че
записвачката
ви се
разпознава
от BIOS чрез
SCSI картата
си. Всяка
SCSI карта
(или
по-модерно:
контролер)
сканира SCSI шината
след
включване и
показва
всички устройства
свързани към
нея. Този
своеобразен
рапорт
включва SCSI ID на
устройствата
и тяхно
кратко
описание.
Ако планирате да свържете вашите SCSI устройства през паралелен порт (не се бъркайте с IDE свързани през паралелния порт), вие се нуждаете от специален активен кабел и специален драйвер за ядрото. Подобни мазохисти могат да видят: http://www.torque.net/parport/parscsi.html за да научат повече за тези опции.
По този въпрос и howto-то не знае нищо. Вижте все пак: http://www.torque.net/parport/paride.html или /usr/src/linux/Documentation/paride.txt.
Няма
нужда да
четете тази точка
ако вашият
хардуер е
вече
разпознат и конфигуриран.
Линукс ядрото може да бъде екипирано с драйвери според съответните нужди. Може да компилирате драйверите директно в ядрото или като модули, които се зареждат при необходимост. Последното е за предпочитане, защото води до по-малко и по-бързо ядро. Както и да е, някои драйвери са крайно необходими на системата (трябват и, за да тръгне) и не трябва да се компилират като модули. Например: Ако системата ви е базирана на IDE твърд диск, драйвера за твърдия диск трябва да се компилира директно в ядрото, а не като модул.
Има три основни типа CD-записвачки: SCSI, IDE/ATAPI и външни записвачки, които работят през USB или паралелен порт. Таблицата по-долу показва как да конфигурирате ядрото за тези CD-R-и. Първата колона на таблицата е относно менюто за конфигурация на ядрото, където ще се правят настройките. Втората колона е описание на модулите, които ще се настройват. Третата колона съдържа имената на модулите. Колоните, именувани SCSI, IDE и PP съдържат необходимите опции за съответния хардуер (PP = паралелен порт).
Sect. Description Module SCSI IDE PP
------------------------------------------------------------
BLOCK Enhanced IDE/MFM/RLL... Y
BLOCK IDE/ATAPI CDROM ide-cd M
BLOCK SCSI emulation support ide-scsi M
BLOCK Loopback device loop M M M
PARIDE Parallel port IDE device paride Y/M
PARIDE Parallel port ATAPI CD-ROMs M
PARIDE Parallel port generic ATAPI M
PARIDE (select a low-level driver) Y
SCSI SCSI support scsi_mod Y/M Y/M
SCSI SCSI CD-ROM support sr_mod Y/M Y/M
SCSI Enable vendor-specific Y Y
SCSI SCSI generic support sg Y/M Y/M
SCSI (select a low-level driver) Y
FS ISO 9660 CDROM filesystem iso9660 Y/M Y/M Y/M
FS Microsoft Joliet cdrom... joliet Y Y Y
Таблица
:
Избор
на
хардуер за
различните
типове записвачки
Y означава, че драйверът трябва да се компилира директно в ядрото. M – като модул. Y/M – възможност за избор – директно или като модул Празното поле означава, че не трябва да проявявате излишно творчество J. Там където драйверите за SCSI и ATAPI се припокриват, най-добре ги компилирайте като модули.
Включването на драйвер за loopback устройството не е задължително (според хауто-то, но според мен е!). Това устройство ви позволява да тествате image или iso файлове (едно и също е) преди запис на CD. Ако искате да четете CD-роми, се нуждаете от поддръжка на ISO 9660 файлова система. Драйвера за нея автоматично включва RockRidge поддръжка. Поддръжката на Microsoft Joliet CD-ROM автоматично би трябвало да се осигурява от ISO 9660 файловата система. За всеки случай компилирайте като модул поддръжката на Microsoft Joliet CD-ROM. За SCSI и за паралелен порт, са налични много драйвери.
Инсталирането на полученото ядро излиза извън рамките на това HOWTO. Консултирайте се с документацията на вашата Линукс дистрибуция.
RedHat
Linux потребителите
трябва да
включат
поддръжка на
"Ramdisk support" и
"Initial ramdisk".
(Според мен
това важи за
всички
дистрибуции)
По детайлен преглед по тази тема има на: http://www.fokus.gmd.de/research/cc/glone/employees/joerg.schilling/private/cdb.html.
Следните
програми са
необходими
за генериране
на iso images на
CD-R-те (Само
за CD-ROM-ми
с данни):
ftp://tsx-11.mit.edu/pub/linux/packages/mkisofs/
(mkisofs)
ftp://ftp.ge.ucl.ac.uk/pub/mkhfs (mkhybrid)
За
запис на iso images на CD-R, се
нуждаете от
следните
програми:
ftp://ftp.fokus.gmd.de/pub/unix/cdrecord/
(cdrecord)
http://www.ping.de/sites/daneb/cdrdao.html
(cdrdao)
http://www.munich-vision.de/vcd/ (mkvcdfs)
Не
вярвайте на man
страницата
на старите
версии на mkisofs
,
според която
се нуждаете
от 1.5 версия на cdwrite
.
Просто
използвайте
cdrecord и се
радвайте на
живота.
Имайте
предвид, че
новите
версии на cdrecord съдържат
разширени
възможности
на mkisofs и много
полезни
програми в
поддиректорията misc/ (readcd, isosize).
Всички те са т.н. front-end на конзолните програми, но са по-лесни за употреба и изглеждат по-красиво.
X-CD-Roast
е
пакет за
лесно
създаване на
CD под
Linux. Той
комбинира
конзолните
програми cdrecord
и mkisofs
в
приятен
графичен
интерфейс.
http://www.fh-muenchen.de/home/ze/rz/services/projects/xcdroast/e_overview.html
BurnIT
е JAVA
front-end на cdrecord, mkisofs и cdda2wav-0.95 Може
да се свали
от:
CD-Tux
е
текстова
програма,
базирана на mkisofs
и cdrecord. Тя
използва NCURSES библиотеките
и е само 75K.
http://www.datadictator.co.za/cdtux/