ملفات متعددة MultiFiles

نظام توزيع البرنامج الثابت firmware على متعدد الإرسال UDP multicast

تنزيل multifiles v0.5

ترخيص: GPLv2, GPLv3.

مبادئ عملية الملفات المتعددة Multifiles Operation Principles

يتم إرسال الملف المرسل بشكل دوري إلى الشبكة في دفق متعدد الإرسال UDP إلى عنوان متعدد الإرسال محدد (تلقائيا 224,2,2,4 مدخل 2222) لاستقبال البرنامج الثابت يحتاج الزبون للانضمام لمجموعة متعدد الإرسال عبر طلب IGMP وبدء تنزيل الملف. حال انتهاء التنزيل، ينفصل الزبون عن المجموعة ويفحص الملف بأكمله. عند نجاح الفحص، لا يتم تفكيك الملف (النسق .tar.gz) و customup.sh يشرع في النص الذي يوجد في الأرشيف المنزل حديثا. يقوم النص بتحيين الملفات المطلوبة ويجري عمليات أخرى للتحيين.

يسمح استخدام تعدد الإرسال بتحيين أي رقم لجهاز الإرسال الرقمي on-the-fly باستخدام دفق واحد.

لا يقوم الزبون بالتحيين إذا كانت النسخة الحالية للبرنامج الثابت firmware مماثلة أو أحدث من النسخة الموزعة في الدفق. إذا تم تحديد خيار "تحفيز التحيين" في الخادم، يتم التحيين دائما بغض النظر عن نسخة البرنامج.

 مخطط تعدد الملفات MultiFiles
الشكل 1. مخطط الشبكة مع ملفات متعددة

خصائص الدفق

يشمل الدفق ملفات UDP packets مع رأس النسق التالي:

struct mulfiles_header{
    uint32_t message_type;
    uint32_t flags;
    uint32_t data_size;
    uint32_t sequence_no;
    uint32_t file_offset;
};

يمكن لصنف_الرسالة أن يحمل إحدى القيمتين التاليتين:

#define MF_MTYPE_INFO 0x04030201
#define MF_MTYPE_DATA 0x04030202

الملفات من صنف MF_MTYPE_INFO هي ملفات معلوماتية وتضم معلومات حول الملف الموزع، بما في ذلك البيانات التالية:

struct mulfiles_message_info{
    uint32_t file_size;
    uint32_t fw_version;
    unsigned char md5sum[16];
    char filename[1024];
};

حجم الملف، نسخة البرنامج الثابت، اسم الملف و MD5 sum للفحص الشامل. يتم إرسال ملفات المعلومات كل ثانيتين تلقائيا.

الملفات من نوع MF_MTYPE_DATA تضم محتوى الملف الموزع. يشمل العنوان معلومات حول البيانات الموجودة في الملف مع اعتبار بداية الملف. يمكن للزبون بدء تنزيل الملف في أي وقت دون انتظار بداية الدورة التالية. يسمح المنطق بتنزيل الملفات دون تأخير قد ينتج عن البحث عن بداية الملف.

يمكن تعديل سرعة تحويل البيانات عبر الشبكة بواسطة خيار خط الأمر command line options لتطبيق الخادم. السرعة التلقائية هي 100 كلبايت في الثانية.

مميزات تطبيق الخادم

اختيارات خط التسيير command line للخادم:

multifiles # ./mfsrv -h
وظيفة تحميل الملف متعدد الإرسال لشركة NetUP (الخادم). جميع الحقوق (c) 2001-2008 محفوظة لشركة NetUP.
ملف www.netup.tv المضغوط: نونبر 3 2008 13:22:49
 استخدم هذه الخاصية على مسؤوليتك.
الاستخدام:
الخيارات
 [-i IP]            عنوان بروتوكول الإنترنت متعدد الإرسال Multicast IP المستخدم. تلقائيا: 224.2.2.4
 [-p port]                مدخل UDP المستخدم. تلقائيا: 2222
 [-d]              تفعيل رسائل إصلاح الشوائب debug. تلقائيا: إبطال
 [-f file]              اسم الملف المرسل. تلقائيا: testfile.bin
 [-s speed]              سرعة التحميل كلبايت/ثانية تلقائيا: 100 Kbytes/sec
 [-t delay]              تأخير رسائل المعلومات prophylactic info تلقائيا: ثانيتين
 [-u]              تحيين قوة الخصائص تلقائيا: تحيين القوة غير محدد
 [-a version]            نسخة البرنامج الثابت. تلقائيا: 0
 [-h]           هذا يساعد

مثال لبدء مثال الخادم:

multifiles # ./mfsrv  -i 224.5.6.7 -p 1111 -f ./netup.tgz -s 100 -a 1104 -t 6
استخدام الملف:./netup.tgz file name:netup.tgz prophylactic_delay:6
السرعة:102400 بايت/ثانية psleep: 13513
+ إرسال الملف:netup.tgz sequence:1
o    Prophylactic info: 1068 bytes from 1068 send to socket:3
o    Prophylactic info: 1068 bytes from 1068 send to socket:3
o    Prophylactic info: 1068 bytes from 1068 send to socket:3
o    Prophylactic info: 1068 bytes from 1068 send to socket:3
o    Prophylactic info: 1068 bytes from 1068 send to socket:3
o    Prophylactic info: 1068 bytes from 1068 send to socket:3
o    Prophylactic info: 1068 bytes from 1068 send to socket:3
o    Prophylactic info: 1068 bytes from 1068 send to socket:3
o    الملف:netup.tgz مرسل بنجاح
+ إرسال الملف:netup.tgz sequence:2

كما يظهر من المثال، يتم إرسال الملف netup.tgz إلى مجموعة الإرسال المتعدد 224.5.6.7:1111 بسرعة 100 كلبايت/ثانية، نسخة البرنامج الثابت 1104.

مميزات تطبيق الزبون

اختيارات خط التسيير command line للزبون:

multifiles # ./mfcln -h
وظيفة تحميل الملف متعدد الإرسال لشركة NetUP (الزبون). جميع الحقوق (c) 2001-2008 محفوظة لشركة NetUP.
تاريخ www.netup.tv المضغوط: نونبر 3 2008 13:22:48
 استخدم هذه الخاصية على مسؤوليتك.
الاستخدام:
الخيارات
 [-i IP]            عنوان بروتوكول الإنترنت متعدد الإرسال Multicast IP المستخدم. تلقائيا: 224.2.2.4
 [-p port]                مدخل UDP المستخدم. تلقائيا: 2222
 [-t socket wait timeout]        انتهاء وقت مقبس UDP socket، ثانية تلقائيا: 10 ثوان
 [-d]              تفعيل رسائل إصلاح الشوائب debug. تلقائيا: إبطال
 [-f file]            اسم الملف المحفوظ.  اسم الملف التلقائي المستخدم القادم من الخادم
 [-s stat_file]     اسم ملف حفظ الحالة stats تلقائيا:  /tmp/mfstat.log
 [-a fw_version]    نسخة fw الحالية. يبدأ التنزيل فقط إذا 
                  كانت النسخة المستقبلة أحدث من النسخة الحالية. تلقائيا: 0
 [-h]           هذا يساعد

مثال لبدء مثال الزبون:

multifiles # ./mfcln -i 224.5.6.7 -p 1111 -a 1100
في انتظار البيانات القادمة ...
رسالة المعلومات المستقبلة. sequence:9240 filename:netup.tgz outfilename:netup.tgz.9240 
الحجم:5741931 bytes
في استقبال البيانات ...
ملف الملء ل 5741931 بايت المطلوبة، حجم الكتل:1048576
الملف المملوء. الحجم هو:5741931 الحجم المطلوب:5741931. بداية الكتابة في
First offset:1379
رسالة المعلومات prophylactic المستقبلة. اسم الملف:netup.tgz offset:208380 الحجم:5741931 بايت 
تحفيز التحيين:0 fw_version:1104
رسالة المعلومات prophylactic المستقبلة. اسم الملف:netup.tgz offset:615480 الحجم:5741931 بايت 
تحفيز التحيين:0 fw_version:1104
رسالة المعلومات prophylactic المستقبلة. اسم الملف:netup.tgz offset:1022580 الحجم:5741931 بايت 
تحفيز التحيين:0 fw_version:1104
رسالة المعلومات prophylactic المستقبلة. اسم الملف:netup.tgz offset:1431060 الحجم:5741931 بايت 
تحفيز التحيين:0 fw_version:1104
رسالة المعلومات prophylactic المستقبلة. اسم الملف:netup.tgz offset:1838160 الحجم:5741931 بايت 
تحفيز التحيين:0 fw_version:1104
رسالة المعلومات prophylactic المستقبلة. اسم الملف:netup.tgz offset:2245260 الحجم:5741931 بايت 
تحفيز التحيين:0 fw_version:1104
رسالة المعلومات prophylactic المستقبلة. اسم الملف:netup.tgz offset:2653740 الحجم:5741931 بايت 
تحفيز التحيين:0 fw_version:1104
رسالة المعلومات prophylactic المستقبلة. اسم الملف:netup.tgz offset:3060840 الحجم:5741931 بايت 
تحفيز التحيين:0 fw_version:1104
رسالة المعلومات prophylactic المستقبلة. اسم الملف:netup.tgz offset:3467940 الحجم:5741931 بايت 
تحفيز التحيين:0 fw_version:1104
رسالة المعلومات prophylactic المستقبلة. اسم الملف:netup.tgz offset:3875040 الحجم:5741931 بايت 
تحفيز التحيين:0 fw_version:1104
رسالة المعلومات prophylactic المستقبلة. اسم الملف:netup.tgz offset:4283520 الحجم:5741931 بايت 
تحفيز التحيين:0 fw_version:1104
رسالة المعلومات prophylactic المستقبلة. اسم الملف:netup.tgz offset:4690620 الحجم:5741931 بايت 
تحفيز التحيين:0 fw_version:1104
رسالة المعلومات prophylactic المستقبلة. اسم الملف:netup.tgz offset:5097720 الحجم:5741931 بايت 
تحفيز التحيين:0 fw_version:1104
رسالة المعلومات prophylactic المستقبلة. اسم الملف:netup.tgz offset:5506200 الحجم:5741931 بايت 
تحفيز التحيين:0 fw_version:1104
رسالة المعلومات prophylactic المستقبلة. اسم الملف:netup.tgz offset:69000 الحجم:5741931 بايت 
تحفيز التحيين:0 fw_version:1104
الملف المستقبل 'netup.tgz.9240'. قيد الفحص ...
e7a646426d66b5df3318ba09f1ae33d2 - ملفنا md5. الحجم:5741931
e7a646426d66b5df3318ba09f1ae33d2 - المسقبل md5
MD5 افحص النجاح
الملف المفحوص 'netup.tgz.9240'. النجاح.

كما يظهر من المثال، يتم استقبال الملف netup.tgz من مجموعة الإرسال المتعدد 224.5.6.7:1111. نسخة الملف الحالية 1100، بينما النسخة المقدمة من الخادم هي 1104.

إنشاء البرنامج الثابت

محتوى ملف النصوص scripts directory:

multifiles # ls -al scripts/
المجموع 16
drwxr-xr-x 4 root root   84 Oct 27 13:51 .
drwxr-xr-x 5 root root 4096 Oct 27 15:36 ..
-rwxr-xr-x 1 root root  115 Oct 27 13:51 createfw.sh
-rwxr-xr-x 1 root root  187 Oct 27 13:42 customup.sh
drwxr-xr-x 3 root root   35 Oct 27 13:51 firmware
-rwxr-xr-x 1 root root  889 Oct 27 13:39 update.sh

createfw.sh يستخدم النص لإنشاء البرنامج الثابت. كمثال على ذلك، النص هو:

multifiles # cat scripts/createfw.sh
FWPATH="firmware"
FWNAME="mf_fw.tgz"

(cd $FWPATH; tar cvfz ../$FWNAME ./*)
echo "البرنامج الثابت الجديد. الملف: $FWNAME"

كما يتبين، يجمع النص أرشيف محتوى ملف البرنامج الثابت في ملف mf_fw.tgz يتم تقديم هذا الملف على متعدد الإرسال multicast كما هو مبين أعلاه.

يشمل الملف scripts/firmware/ الملفات المطلوبة للتحيين ونص customup.sh الذي يقوم بالإجراءات المطلوبة على جهاز الزبون بعد التنزيل. في ما يلي مثال بسيط عن هذا النص:

multifiles # cat scripts/firmware/customup.sh
echo "Running custom upgrade shell script ... المرجو الانتظار"
echo "نسخ الملفات الجديدة ... "
cp stb_client/bin/stb_client /netup/stb_client/bin/stb_client

echo "تحيين الملفات ... "

كما يتبين، ينسخ النص ملفات جديدة، كما هو مطلوب، ويقوم بتحيين الملفات.

العمل مع البرنامج الثابت على الزبون

كمثال على النص الذي ينظم استقبال ومعالجة البرنامج الثابت على جهاز الزبون (يقدم المثال على IP STB):

multifiles # cat scripts/update.sh
MFPATH="/mfupdater"
NEPATH="/netup"
DSTPATH=$MFPATH/dst
STATFILE="/tmp/mfstat.log"

# أظهر شاشة التحيين splash
cat $MFPATH/updatesp.bmp > /dev/fb0 2>/dev/null

# أحصل على هذه النسخة
if [ -f $NEPATH/version ]; then
    export CURVER=`cat $NEPATH/version`
آخر
    export CURVER=0
fi


$MFPATH/mfcln -s $STATFILE -t 3 -i 224.5.6.7 -p 1111 -f $MFPATH/download.bin -a $CURVER

if [ $? -eq 0 ]; then
    echo "تحيين البرنامج ... "

    # Create dst path
    mkdir $DSTPATH 2>/dev/null

    # unbzip received file into /netup
    cd $DSTPATH
    cat $MFPATH/download.bin | tar -xz

    # run custom script in received file
    cd $DSTPATH
    sh customup.sh

    # save new version
    if [ -f $STATFILE ]; then
        cat $STATFILE > $NEPATH/version
    fi

    # cleanup dst dir if required. يمكنك عمل هذا على customup.sh

    echo "تم التحيين ... نسخة fw الجديدة:"
    cat $NEPATH/version
fi

كما يتبين من الكود أعلاه، يجري النص الخطوات التالية:

  • يجلب النسخة الحالية للبرنامج الثابت. المعلومات حول النسخة مخزنة في /netup/version
  • إبدأ في تنزيل البرنامج الثابت من مجموعة متعدد الإرسال
  • إذا تم تنزيل الملف بنجاح، قم بتفكيكه وشغل نص customup.sh الموجود في الأرشيف. يقوم النص بالإجراءات المطلوبة (النسخ، تحيين الإظهار، إلخ.)
  • تم تخزين النسخة الجديدة في الملف /netup/version. سيتم التحيين القادم عند توفر نسخة أحدث من البرنامج الثابت من الخادم أو عند تحديد خيار "تحفيز التحيين" على الخادم.

البناء الثنائي Binary Builds

يشمل الأرشيف بناءات ثنائية binary builds جاهزة للأساسات platforms التالية:

  • SH-4
  • Mipsel uclibc
  • ARM9
  • PPC
  • x86

لمصنعي IP STB

ينصح بتضمين تطبيق الزبون (mfcln) في الإمداد الأساسي IP STB. في كل بداية ل IP STB يطلب تشغيل التطبيق من أجل فحص وجود دفق متعدد الإرسال مع البرنامج الثابت. لن يدوم الفحص لأكثر من ثانيتين، وفي حالة عدم وجود دفق متعدد الإرسال للبرنامج الثابت أو وجود نسخة أقدم للبرنامج الثابت، سيشرع في تشغيل عادي دون أي تغييرات. عند الحصول على نسخة جديدة من البرنامج الثابت، يتم تثبيته وقد تتبع التشغيلات اللاحقة خطة مختلفة من قبل البرنامج الثابت المثبت. هذا سيسمح بتشغيل تلقائي ل IP STB المثبت حديثا عبر الحصول على البرنامج الثابت الخاص للشبكة الحالية.


Get Adobe Flash player