Захотелось у себя орагнизовать на генте сабж.
По мотивам gentoo-wiki.com делал:
1) Вкомпилил поддержку УДФ в ядро (а не модулем)
2) сделал "emerge udftools"
3)
=======/etc/conf.d/cdrw========
cdrw_list="/dev/hdc"
===============================
/dev/hdc - Это резак, собственно.
========/etc/init.d/cdrw=======
#!/sbin/runscript
# Copyright 1999-2003 Gentoo Technologies, Inc.
# Distributed under the terms of the GNU General Public License v2
# $Header: $
depend() {
need localmount
}
start() {
# Starting with kernel 2.6.8 there is a different syntax
# for the pktsetup program.
kernel_major=$(( `uname -r | cut -d'-' -f1 | cut -d'.' -f2` ))
kernel_minor=$(( `uname -r | cut -d'-' -f1 | cut -d'.' -f3` ))
local i
local minor=0
local retval=0
local last_result=0
if [ ! -e "/dev/pktcdvd" ]
then
/sbin/modprobe -a pktcdvd
fi
for i in ${cdrw_list}
do
ebegin "Enabling CD-RW packet writing on ${i}"
if [ ${kernel_major} -ge 6 ] && [ ${kernel_minor} -ge 8 ]
#then /usr/bin/pktsetup /dev/pktcdvd/${minor} ${i} >/dev/null 2>&1
then /usr/bin/pktsetup ${minor} ${i} >/dev/null 2>&1
#else /usr/bin/pktsetup /dev/pktcdvd${minor} ${i} >/dev/null 2>&1
else /usr/bin/pktsetup pktcdvd${minor} ${i} >/dev/null 2>&1
fi
if [ -b /dev/pktcdvd/${minor} ]
then last_result=0
else last_result=1
fi
retval=$(( ${retval} + ${last_result} ))
minor=$(( ${minor} + 1 ))
if [ ${last_result} -gt 0 ]
then
ewend ${last_result} "Failed to enable packet writing on ${i}"
fi
done
eend ${retval}
}
stop() {
# Starting with kernel 2.6.8 there is a different syntax
# for the pktsetup program.
kernel_major=$(( `uname -r | cut -d'-' -f1 | cut -d'.' -f2` ))
kernel_minor=$(( `uname -r | cut -d'-' -f1 | cut -d'.' -f3` ))
local i
local minor=0
local retval=0
local last_result=0
for i in ${cdrw_list}
do
ebegin "Disabling CD-RW packet writing on ${i}"
umount /dev/pktcdvd/${minor} >/dev/null 2>&1 || true
if [ ${kernel_major} -ge 6 ] && [ ${kernel_minor} -ge 8 ]
#then /usr/bin/pktsetup -d /dev/pktcdvd/${minor} >/dev/null 2>&1
then /usr/bin/pktsetup -d ${minor} >/dev/null 2>&1
#else /usr/bin/pktsetup -d /dev/pktcdvd${minor} >/dev/null 2>&1
else /usr/bin/pktsetup -d pktcdvd${minor} >/dev/null 2>&1
fi
if [ -b /dev/pktcdvd/${minor} ]
then last_result=1
else last_result=0
fi
retval=$(( ${retval} + ${last_result} ))
minor=$(( ${minor} + 1 ))
if [ ${last_result} -gt 0 ]
then
ewend ${last_result} "Failed to disable packet writing on ${i}"
fi
done
eend ${retval}
}
===============================
4) сhmod +x /etc/init.d/cdrw && rc-update add default cdrw
Всё до этого пунтка сделалось без к.-либо ошибок.
5) Перезгрузился в новое ядро.
При загрузке строчка: "Enabling CD-RW packet writing бла-бла-бла"
Всё вроде здорово.
В /dev/pktcdvd : три файла "0", "setup", "ещё чё-то"
В /etc/fstab'е строка:
/dev/pktcdvd/0 /mnt/cdrw udf noauto,noatime,rw,users 0 0
6) Вставляю компашку (rw) в привод, делаю
cdrwtool -d /dev/hdc -q
все ОК.
Но не монтируется :(
Если в фстабе вместо /dev/pktcdvd/0 записать /dec/hdc
то при попытке примонтировать:
mount: wrong fs type, bad option, bad superblock on /de v/hdc,
or too many mounted file systems
Всё,после этого резак начмнает что-то читать (писать?), и ни на что не реагирует :(
ВОПРОС: ГДЕ МОГУТ БЫТЬ ГРАБЛИ? ЧТО НЕ ПРАВИЛЬНО СДЕЛАЛ?
$ pktsetup pktcdvd0 /dev/hdc
$ mount -t udf /dev/pktcdvd/0 /mnt/cdrw
mount: /dev/pktcdvd/0: can't read superblock
$ mount -t udf /dev/pktcdvd0 /mnt/cdrw
mount: /dev/pktcdvd/0: can't read superblock
$ mount -t udf /dev/hdc /mnt/cdrw
mount: block device /dev/hdc is write-protected, mounting read-only
mount: wrong fs type, bad option, bad superblock on /dev/hdc,
or too many mounted file systems
когда пытаеь /dev/hdc присобачить, то начинает драйв что-то читать,
не реагирует ни на что :(
Ещё предложения? :/
Блин, теперь так:
При попытке отформатировать диск под удф (cdrwtool -d /dev/hdc -q)
using device /dev/hdc
1082KB internal buffer
setting write speed to 12x
Settings for /dev/hdc:
Fixed packets, size 32
Mode-2 disc
I'm going to do a quick setup of /dev/hdc. The disc is going to be blanked and formatted
with one big track. All data on the device will be lost!! Press CTRL-C to cancel now.
ENTER to continue.
Initiating quick disc blank
wait_cmd: Input/output error
Command failed: a1 01 00 00 00 00 00 00 00 00 00 00 - sense 03.0c.00
blank disc: Illegal seek
??? Причем cdrecord'ом компашка стирается/записывается.
$mount -t udf -o rw /dev/pktcdvd/0 /mnt/cdrw
mount: /dev/pktcdvd/0: can't read superblock
(видать потому что диск не такой как надо, потому что с форматированием косяк вышел)
Привод: какой-то Nec, довольно старенький.
В чем ещё может дело быть?