Tải xuống multifiles phiên bản 0.5
Bản quyền: GPLv2, GPLv3.
Tập tin cần được phân phối được gửi đến hệ thống mạng theo chu kỳ trong một dòng đa hướng UDP đến một địa chỉ đa hướng được chỉ định (mặc định là (224.2.2.4 cổng 2222). Để nhận phần sụn, máy khách cần phải liên kết nhóm đa hướng bằng cách gửi một yêu cầu IGMP và cần bắt đầu tải tập tin xuống. Ngay sau khi hoàn tất tải xuống, máy khách sẽ ngắt kết nối với nhóm và xác minh tính nguyên vẹn của tập tin. Nếu xác minh thành công, tập tin sẽ được giải nén (định dạng là .tar.gz) và tập lệnh customup.sh được khởi động và nằm trong thư mục lưu trữ vừa mới tải xuống. Tập lệnh này cập nhật các tập tin yêu cầu và thực hiện các hoạt động cần thiết khác để cập nhật.
Sử dụng hệ thống đa hướng cho phép cập nhật bất kỳ số lượng hộp giải mã tín hiệu truyền hình IP nào trên chương trình đang chạy bằng cách sử dụng một dòng duy nhất.
Máy khách không thực hiện cập nhật nếu phiên bản phần sụn hiện tại tương đương với hoặc mới hơn so với phiên bản được phân phối trong dòng. Tuy nhiên, nếu tùy chọn "force update" (bắt buộc cập nhật) được chỉ định trên máy chủ, cập nhật sẽ luôn được thực hiện dù đó là phiên bản phần mềm nào.
Hình 1. Sơ đồ hệ thống mạng với multifiles
Dòng này bao gồm các gói UDP với phần tiêu đề thuộc định dạng sau đây:
struct mulfiles_header{
uint32_t message_type;
uint32_t flags;
uint32_t data_size;
uint32_t sequence_no;
uint32_t file_offset;
};
message_type có thể có một trong hai giá trị:
#define MF_MTYPE_INFO 0x04030201 #define MF_MTYPE_DATA 0x04030202
Các gói có dạng MF_MTYPE_INFO là những gói thông tin và chứa các thông tin về tập tin được phân phối, bao gồm các dữ liệu sau đây:
struct mulfiles_message_info{
uint32_t file_size;
uint32_t fw_version;
unsigned char md5sum[16];
char filename[1024];
};
kích thước tập tin, phiên bản phần sụn, tên tập tin và tổng MD5 để kiểm tra tính nguyên vẹn. Theo mặc định, các gói thông tin được gửi đi cứ 2 giây một lần.
Các gói có dạng MF_MTYPE_DATA chứa nội dung của tập tin được phân phối. Phần tiêu đề gồm những thông tin về dung lượng bị bỏ qua của dữ liệu trong gói liên quan đến phần đầu của tập tin. Máy khách có thể bắt đầu tải tập tin xuống bất kỳ lúc nào mà không cần đợi đến khi chu kỳ kế tiếp bắt đầu. Lôgic này cho phép tải các tập tin xuống mà không có thêm bất kỳ trì hoãn nào gây ra do tìm kiếm phần bắt đầu hoặc kết thúc của tập tin.
Tốc độ truyền dữ liệu qua hệ thống mạng có thể được điều chỉnh bằng các tùy chọn dòng lệnh thuộc ứng dụng máy chủ. Theo mặc định, tốc độ là 100 Kbyte mỗi giây.
Các tùy chọn dòng lệnh của máy chủ:
multifiles # ./mfsrv -h NetUP's multicast file upload utility (server). Copyright (c) 2001-2008 NetUP Inc. www.netup.tv. Compile date: Nov 3 2008 01:22:49 CH Use this utility at your own risk. usage: options [-i IP] Multicast IP address to use. Default: 224.2.2.4 [-p port] UDP port to use. Default: 2222 [-d] Enable debug messages. Default: disabled [-f file] Name of the file to send. Default: testfile.bin [-s speed] Upload speed Kbytes/sec. Default: 100 Kbytes/sec [-t delay] Prophylactic info messages delay, sec. Default: 2 sec [-u] Setting force update flag. Default: force update flag not set [-a version] Firmware version. Default: 0 [-h] This help
Một ví dụ về khởi động máy chủ:
multifiles # ./mfsrv -i 224.5.6.7 -p 1111 -f ./netup.tgz -s 100 -a 1104 -t 6 Using file:./netup.tgz file name:netup.tgz prophylactic_delay:6 Speed:102400 bytes/sec psleep: 13513 + Sending file: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 File:netup.tgz successfully sent + Sending file:netup.tgz sequence:2
Vì có thể nhìn thấy từ ví dụ trên, tập tin netup.tgz đang được gửi đến nhóm đa hướng 224.5.6.7:1111 ở tốc độ 100 Kbyte/giây. Phiên bản phần sụn là 1104.
Các tùy chọn dòng lệnh của máy khách:
multifiles # ./mfcln -h
NetUP's multicast file upload utility (client). Copyright (c) 2001-2008 NetUP Inc.
www.netup.tv. Compile date: Nov 3 2008 13:22:48
Use this utility at your own risk.
usage:
options
[-i IP] Multicast IP address to use. Default: 224.2.2.4
[-p port] UDP port to use. Default: 2222
[-t socket wait timeout] UDP socket timeout, sec. Default: 10 sec.
[-d] Enable debug messages. Default: disabled
[-f file] Name of the file to save. Default using filename coming from server
[-s stat_file] Name of the file to save stats in. Default: /tmp/mfstat.log
[-a fw_version] Current fw version. Download is started only if
the received version is newer than current. Default: 0
[-h] This help
Một ví dụ về khởi động máy khách:
multifiles # ./mfcln -i 224.5.6.7 -p 1111 -a 1100 Waiting for incoming data ... Info message received. sequence:9240 filename:netup.tgz outfilename:netup.tgz.9240 size:5741931 bytes Receiving data ... Filling file to required 5741931 bytes, blocks size is:1048576 File filled. Size is:5741931 requested size is:5741931. Starting write into First offset:1379 Prophylactic info message received. filename:netup.tgz offset:208380 size:5741931 bytes force update:0 fw_version:1104 Prophylactic info message received. filename:netup.tgz offset:615480 size:5741931 bytes force update:0 fw_version:1104 Prophylactic info message received. filename:netup.tgz offset:1022580 size:5741931 bytes force update:0 fw_version:1104 Prophylactic info message received. filename:netup.tgz offset:1431060 size:5741931 bytes force update:0 fw_version:1104 Prophylactic info message received. filename:netup.tgz offset:1838160 size:5741931 bytes force update:0 fw_version:1104 Prophylactic info message received. filename:netup.tgz offset:2245260 size:5741931 bytes force update:0 fw_version:1104 Prophylactic info message received. filename:netup.tgz offset:2653740 size:5741931 bytes force update:0 fw_version:1104 Prophylactic info message received. filename:netup.tgz offset:3060840 size:5741931 bytes force update:0 fw_version:1104 Prophylactic info message received. filename:netup.tgz offset:3467940 size:5741931 bytes force update:0 fw_version:1104 Prophylactic info message received. filename:netup.tgz offset:3875040 size:5741931 bytes force update:0 fw_version:1104 Prophylactic info message received. filename:netup.tgz offset:4283520 size:5741931 bytes force update:0 fw_version:1104 Prophylactic info message received. filename:netup.tgz offset:4690620 size:5741931 bytes force update:0 fw_version:1104 Prophylactic info message received. filename:netup.tgz offset:5097720 size:5741931 bytes force update:0 fw_version:1104 Prophylactic info message received. filename:netup.tgz offset:5506200 size:5741931 bytes force update:0 fw_version:1104 Prophylactic info message received. filename:netup.tgz offset:69000 size:5741931 bytes force update:0 fw_version:1104 File 'netup.tgz.9240' received. Checking ... e7a646426d66b5df3318ba09f1ae33d2 - our file md5. size:5741931 e7a646426d66b5df3318ba09f1ae33d2 - received md5 MD5 check success File 'netup.tgz.9240' checked. Success.
Vì có thể nhìn thấy từ ví dụ trên, tập tin netup.tgz đang được nhận từ nhóm đa hướng 224.5.6.7:1111. Phiên bản tập tin hiện tại là 1100, nhưng phiên bản do máy chủ cung cấp là 1104.
Nội dung của thư mục chứa tập lệnh:
multifiles # ls -al scripts/ total 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
Tập lệnh createfw.sh được dùng để khởi tạo phần sụn. Ví dụ như tập lệnh là:
multifiles # cat scripts/createfw.sh FWPATH="firmware" FWNAME="mf_fw.tgz" (cd $FWPATH; tar cvfz ../$FWNAME ./*) echo "Firmware created. File: $FWNAME"
Vì có thể nhìn thấy, tập lệnh này lưu trữ nội dung của thư mục phần sụn trong tập tin mf_fw.tgz. Tập tin này sẽ được cung cấp trên hệ thống đa hướng như mô tả ở trên.
Thư mục scripts/firmware/ chứa các tập tin yêu cần cho cập nhật và tập lệnh customup.sh thực hiện các hoạt động cần thiết trên thiết bị máy khách sau khi tải xuống. Sau đây là một ví dụ đơn giản về tập lệnh này:
multifiles # cat scripts/firmware/customup.sh echo "Running custom upgrade shell script ... Please, wait" echo "Copying new files ... " cp stb_client/bin/stb_client /netup/stb_client/bin/stb_client echo "Updating config files ... "
Vì có thể nhìn thấy, tập lệnh này sao chép các tập tin mới, và nếu cần, sẽ cập nhật các tập tin cài đặt cấu hình.
Một ví dụ về tập lệnh tổ chức nhận và xử lý phần sụn trên thiết bị máy khách (ví dụ này được cung cấp cho một IP STB):
multifiles # cat scripts/update.sh
MFPATH="/mfupdater"
NEPATH="/netup"
DSTPATH=$MFPATH/dst
STATFILE="/tmp/mfstat.log"
# Show update splash screen
cat $MFPATH/updatesp.bmp > /dev/fb0 2>/dev/null
# get current ver
if [ -f $NEPATH/version ]; then
export CURVER=`cat $NEPATH/version`
else
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 "Updating software ... "
# 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. You can do this in customup.sh
echo "Update done. New fw version:"
cat $NEPATH/version
fi
Vì có thể thấy từ phần mã trên, tập lệnh đó sẽ thực hiện các bước sau đây:
Thư mục lưu trữ bao gồm các thiết lập hệ nhi phân sẵn có cho các nền hệ thống sau đây:
Nên bao gồm cả ứng dụng máy khách (mfcln) trong cung cấp IP STB cơ sở. Trên mỗi khởi động IP STB, yêu cầu phải chạy ứng dụng để kiểm tra sự xuất hiện của dòng đa hướng cùng với phần sụn. Phần kiểm tra này sẽ không mất trên 2 giây, và nếu không tìm thấy dòng đa hướng phần sụn nào hoặc phần sụn cũ hơn được cung cấp, một khởi động thông thường không có bất kỳ thay đổi nào sẽ tiến hành. Nếu đã có được một phiên bản phần sụn mới hơn, phiên bản này được cài đặt và các lần khởi động kế tiếp có thể thực hiện theo một sơ đồ khác do phần sụn được cài đặt cung cấp . Điều này có tính đến việc chương trình của IP STB vừa mới cài đặt phải được đưa vào hoạt động tự động bằng cách lấy phần sụn cụ thể cho hệ thống mạng hiện tại.