debian: ปรับปรุงเครื่องคัดลอกแผ่นซีดีบน Lenny
ปรับปรุงจาก debian: เครื่องคัดลอกแผ่นซีดี
ทำบนเดเบียน Lenny โดยจะปรับให้สามารถเขียนแผ่น DVD ได้ด้วย
มีการเปลี่ยนแปลงสคริปต์เล็กน้อย แต่คราวนี้ขอเขียนขั้นตอนแบบเริ่มใหม่ตั้งแต่ต้น
สมบัติของเครื่องที่นำมาใช้ทดสอบและรุ่นของเดเบียน
cpu: AMD Athlon (tm) XP 2400+
motherboard: ECS L7VMM2
ram: DDR 512M
harddisk: Seagate 10G เป็น /dev/hda
cdrom: DVD-Writer Lite-on จำนวน 3 เครื่อง เป็น /dev/hdb /dev/hdc และ /dev/hdd ตามลำดับ
os: Debian GNU/Linux 5.0 (2.6.26-2-686) - Lenny
packages: wodim setcd dvd+rw-tools
ความสามารถของโปรแกรม
สามารถคัดลอก cd, vcd และ dvd ได้ เป็นแบบเข้า 1 ออก 3 และเขียนด้วยความเร็วต่ำสุดที่เป็นไปได้ ทั้งนี้เพื่อให้แผ่นมีความทนทานใช้งานได้ยาวนาน
การทำงานของเครื่อง
- เมื่อเปิดเครื่อง ถาด /dev/hdb จะดีดออกมารับแผ่นต้นฉบับ เครื่องจะส่งเสียง 1 ปี๊ปเว้น 3 วินาที ไปเรื่อย ๆ จนกว่าจะใส่แผ่นต้นฉบับ หรือดังครบ 100 ครั้งเครื่องจะดับตัวเอง
- เมื่อใส่แผ่นต้นฉบับแล้ว เครื่องจะทำการอ่านข้อมูลไปเก็บในฮาร์ดดิสก์จนเสร็จ เครื่องเขียนซีดีทั้ง 3 ถาดจะดีดออกมาเพื่อรับแผ่นว่าง โดยจะส่งเส่ียง 2 ปี๊ปเว้น 3 วินาที ไปเรื่อย ๆ จนกว่าจะใส่แผ่นว่าง เว้นแต่ถ้าเขียนผิดพลาดจะส่งเสียง 6 ปี๊ปครั้งเดียว
- หากเสร็จแล้วให้กดถาดเปล่ากลับเข้าไป ซีดีเครื่องนั้นจะหยุดการทำงาน
- หลังจากหยุดการทำงานครบทั้ง 3 ถาดแล้ว เครื่องจะดับตัวเอง
เริ่มสร้างด้วย...
การติดตั้งเดเบียนแบบเปล่า ๆ ดูตัวอย่างจาก debianclub: การติดตั้ง Debian เป็น Desktop แต่ของเราไม่ต้องเลือก Desktop Environment
ติดตั้งแพกเกจที่ต้องการ
# aptitude install vim less wodim dvd+rw-tools setcd
สร้างไฟล์เริ่มการทำงานอ่านซีดี ชื่อ d.inittab-cpcd
# vi /root/d.inittab-cpcd
#!/bin/bash
# CD COPIER PROGRAM
# PREREQUISITE:
# # aptitude install wodim setcd dvd+rw-tools
# file: d.inittab-cpcd d.func-cpcd
# PUT THE LINE
# D1:2345:once:/root/d.inittab-cpcd
# IN /etc/inittab THEN REBOOT
#
#VARIABLE
DEV=/dev/hdb #SOURCE DRIVE
TMP=/tmp/x.bin #TEMP.IMAGE FILE
beep() {
echo -e "\a"
}
beeperror() {
for i in `seq 1 6`; do beep; sleep .15; done
}
wait_read_close() {
# MAX RETRY LOOP = 100
for (( i=0; i<=100; i++ ))
do
if setcd -i $DEV | grep open >> /dev/null; then
# SLEEP 1 SECONDS
beep; sleep 3
else
#TRY CLONE MODE
readom -v dev=$DEV f=$TMP -clone retries=128 ts=128k
ISCLONE=$?
if [ $ISCLONE -ne 0 ]; then
readom -v dev=$DEV f=$TMP retries=128 ts=128k
fi
return
fi
done
eject -t $1
/sbin/shutdown -h now
return
}
rm -rf $TMP
#CHECK 1ST CDR IS ORIGINAL CD THEN DUP. TO /tmp
while ! [ -s $TMP ]
do
eject $DEV
wait_read_close $DEV
beep
done
# CALL MULTIPLE INSTANCE IN 3 DRIVES /dev/hdb /dev/hdc AND /dev/hdd
/root/d.func-cpcd /dev/hdb $ISCLONE 1 $TMP &
/root/d.func-cpcd /dev/hdc $ISCLONE 1 $TMP &
/root/d.func-cpcd /dev/hdd $ISCLONE 1 $TMP &
wait
/sbin/shutdown -h now
# chmod 755 /root/d.inittab-cpcd
สร้างไฟล์ฟังก์ชั่นเขียนซีดีแบบขนาน
# vi /root/d.func-cpcd
#!/bin/bash
DEV=$1
ISCLONE=$2
SPEED=$3
TMP=$4
beep() {
echo -e "\a"
}
beepwrite() {
beep; sleep .15; beep
}
beeperror() {
for i in `seq 1 6`; do beep; sleep .15; done
}
wait_write_close() {
# MAX RETRY LOOP = 100
for (( i=0; i<=100; i++ ))
do
# WAIT FOR INSERT DISC
if setcd -i $DEV | grep 'is open' >> /dev/null; then
beepwrite; sleep 3
# IF NO DISC INSERTED THEN BREAK
elif setcd -i $DEV | grep 'No disc' >> /dev/null; then
exit 1
else
if [ $ISCLONE -ne 0 ]; then
wodim -v gracetime=2 dev=$DEV speed=$SPEED driveropts=burnfree -overburn -eject $TMP
else
wodim -v gracetime=2 dev=$DEV speed=$SPEED driveropts=burnfree -raw96r -clone -overburn -eject $TMP
fi
# LAST CHECK WRITING
if setcd -i $DEV | grep 'error' >> /dev/null; then
beeperror; sleep 3
else
eject $DEV
return
fi
fi
done
#END PROG
eject -t $1
exit 1
}
if [ ! $1 ] && [ ! $2 ] && [ ! $3 ] ; then
echo " USAGE : $0 DRIVE SPEED TEMP-IMG"
echo " EXAM1 : $0 /dev/hdb 8 /tmp/x.bin"
exit 1
fi
#CHECK IMAGE FILE
if ! [ -f $TMP ] ; then
echo " Image file $TMP does not existed"
exit 1
fi
#COPY TO NEW BLANK CD
while [ -f $TMP ]
do
eject $DEV
wait_write_close $DEV
beepwrite
done
# chmod 755 /root/d.func-cpcd
แก้ไข inittab ให้เรียกการทำงานตอนเริ่มต้นเปิดเครื่อง
# vi /etc/inittab
... #COPY CD D1:2345:once:/root/d.inittab-cpcd
เสร็จแล้ว บูตเครื่องแล้วใช้ได้เลย
เที่ยวนี้มีเวลาทดสอบน้อย ฝากทดสอบกันเองนะครับ
- Printer-friendly version
- Log in or register to post comments
- 3286 reads







Recent comments