الجمعة، 17 أكتوبر، 2008

كيفية تحويل أقراص cd إلى dvd ؟

السلام عليكم ...

أحيانا يقوم الواحد منا بتحميل توزيعة من توزيعات لينكس وتكون مكونة من مجموعة من الأقراص -من 3 إلى 6 أقراص- وقد يزيد العدد أكثر من 6 ، وهذا أمر مزعج جدا، خاصة أثناء تنصيب التوزيعة، إذ يطلب منك إدخال القرص التالي لتتم عملية التنصيب، أحسن حل هو أن تقوم بتحميل قرص الـ DVD ^_~

ماذا لو أنك قمت بتحميل الأقراص الستة سهوا، هل ستعيد التحميل من جديد ؟
الجواب، لا ليس عليك هذا ، إليك طريقة بسيطة تمكنك من تحويل الأقراص التي حملتها إلى قرص واحد ذاتي الإقلاع،
الطريقة بالطبع مجربة وناجحة 100%، وهذه الطريقة تخص التوزيعات -الريدهاتية-

قم بحفظ هذا السكريبت في مجلد البيت -home- باسم من اختيارك، وليكن مثلا :makedvd.sh

#/bin/bash

# by Chris Kloiber
.
# A quick hack that will create a bootable DVD iso of a Red Hat Linux
# Distribution. Feed it either a directory containing the downloaded
# iso files of a distribution, or point it at a directory containing
# the "RedHat", "isolinux", and "images" directories.

# This version only works with "isolinux" based Red Hat Linux versions.

# Lots of disk space required to work, 3X the distribution size at least.

# GPL version 2 applies. No warranties, yadda, yadda. Have fun.


if [ $# -lt 2 ]; then
echo "Usage: `basename $0` source /destination/DVD.iso"
echo ""
echo " The 'source' can be either a directory containing a single"
echo " set of isos, or an exploded tree like an ftp site."
exit 1
fi

cleanup() {
[ ${LOOP:=/tmp/loop} = "/" ] && echo "LOOP mount point = \/, dying!" && exit
[ -d $LOOP ] && rm -rf $LOOP
[ ${DVD:=~/mkrhdvd} = "/" ] && echo "DVD data location is \/, dying!" && exit
[ -d $DVD ] && rm -rf $DVD
}

cleanup
mkdir -p $LOOP
mkdir -p $DVD

if [ !`ls $1/*.iso 2>&1>/dev/null ; echo $?` ]; then
echo "Found ISO CD images..."
CDS=`expr 0`
DISKS="1"

for f in `ls $1/*.iso`; do
mount -o loop $f $LOOP
cp -av $LOOP/* $DVD
if [ -f $LOOP/.discinfo ]; then
cp -av $LOOP/.discinfo $DVD
CDS=`expr $CDS + 1`
if [ $CDS != 1 ] ; then
DISKS=`echo ${DISKS},${CDS}`
fi
fi
umount $LOOP
done
if [ -e $DVD/.discinfo ]; then
awk '{ if ( NR == 4 ) { print disks } else { print ; } }' disks="$DISKS" $DVD/.discinfo > $DVD/.discinfo.new
mv $DVD/.discinfo.new $DVD/.discinfo
fi
else
echo "Found FTP-like tree..."
rsync -avP --exclude SRPMS $1/* $DVD
# cp -av $1/* $DVD
[ -e $1/.discinfo ] && cp -av $1/.discinfo $DVD
fi

rm -rf $DVD/isolinux/boot.cat
find $DVD -name TRANS.TBL | xargs rm -f

# My thanks to Mubashir Cheema for suggesting this fix.
# cd $DVD
mkisofs -J -R -v -T -o $2 -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 8 -boot-info-table $DVD

/usr/lib/anaconda-runtime/implantisomd5 --force $2
# Don't like forced mediacheck? Try this instead.
# /usr/lib/anaconda-runtime/implantisomd5 --supported-iso --force $2

cleanup
echo ""
echo "Process Complete!"
echo ""


لاحظ جيدا، السكريبت يحفظ بامتداد sh .

الآن، من سطر الأوامر، نفذ وأنت مستخدم جذر ما يلي //
chmod +x makedvd.sh
./makedvd.sh source_CD NEW_DVD.iso


حيث //
source_CD: هو المجلد الذي يحتوي الأقراص بصيغة ISO .
NEW_DVD: هو اسم قرص الـ DVD الناتج ، ويكون بامتداد ISO طبعا .




kaf-laarous
^_^

هناك 5 تعليقات :

  1. شكراً ياسر علي الاسكربت الجميل , وفكره حلوه

    ردحذف
  2. هلا كروم، بارك الله فيك على مرورك ..

    ردحذف
  3. يعطيك الصحة !!!

    ردحذف
  4. صح سليم، يعطيك الصحة ولد عمي !

    ردحذف
  5. السلام عليكم اخي العزيز انا اقوم باول مشاركة لي معكم في هذا الموقع وسؤالي هو: كيف اقوم بحفظ ملف makedvd.sh في مجلد Home وانا لم اقم بتثبيت لينكس ريدهات على الجهاز؟ وكذلك كيف لي ان استخدم سطر الاوامر ولم اقم بتثبيت النظام؟
    وسؤالي الثاني هو انني عندما قمت بتنصيب ريدهات 9 وبعد اكتمال القرص الاول طلب من القرص الثاني وحين ادخلت القرص الثاني ظهرت لي رسالة خطأ؟
    رجاءا ما هو السبب وكيف احل المشكلة؟
    اذا امكنني ان احول اقراص CD الثلاثة الى قرص واحد DVD اعتقد ان المشكلة سوف تحل ان شاء الله

    شكرا لكم
    اخوكم سلام من العراق

    ردحذف


(مَا يَلْفِظُ مِن قَوْلٍ إِلاَّ لَدَيْهِ رَقِيبٌ عَتِيد)