سب کو سلام۔
Habré پر حالیہ مضامین
سب سے پہلے، میں نے ایلبرس OS ڈاؤن لوڈ کرنے کا فیصلہ کیا، یا اس کے بجائے، صرف x86_64 فن تعمیر کے لیے دستیاب تقسیم، دیکھیں کہ یہ کیسے کام کرتا ہے، اور اس پر لینکس کے لیے Veeam ایجنٹ انسٹال کرنے کی کوشش کریں۔ اگر آپ جاننا چاہتے ہیں کہ اس سے کیا نکلا ہے تو براہ کرم بلی کو دیکھیں۔
لہذا، ایک چھوٹا سا اختلاف، اگر کسی کو معلوم نہ ہو۔ "ایلبرس" ایسا ہی ہے۔
ایک اور چھوٹی جبری پسپائی۔ حقیقت یہ ہے کہ میں نے ایک بار گھریلو سافٹ ویئر، جیسے MSVS اور Baguette RTOS سے نمٹا تھا۔ مجھے گھریلو اجزاء کے ساتھ کام کرنے کا تجربہ تھا، بشمول MCST کا پروسیسر۔ لہذا، میں پوری ذمہ داری کے ساتھ کہہ سکتا ہوں کہ اس علاقے میں ایک خاصیت ہے اور میں مضمون میں اس کو چھونے کی کوشش نہیں کروں گا۔ جب میں واقعی چاہوں گا، میں ٹیگ [TBD] ڈالوں گا۔ لہذا ہم مکمل طور پر ٹرولنگ اور عام آہوں کے بغیر کرنے کی کوشش کریں گے۔ آخر میں، روسی دفاعی صنعت اور حکومتی اداروں کو سمجھنے کی ضرورت ہے۔ بڑا ملک - چھوٹا بجٹ.. [TBD]۔
زیرو اسٹیج - ڈاؤن لوڈ کریں. یہ بات قابل ذکر ہے کہ ایلبرس او ایس کے دستیاب ہونے کی خبر نے ایک گونج پیدا کر دی، اتنا کہ تقسیم کا سرور نیچے چلا گیا۔ [TBD] Yandex اور انجینئر کا شکریہ جنہوں نے اسے وہاں منتقل کرنے کا سوچا۔ تو ڈاؤن لوڈ کی رفتار اچھی ہے۔
پہلے مرحلے - تنصیب. میں نے اسے پہلے ہائپر وائزر پر انسٹال کیا جو مفت استعمال کے لیے دستیاب تھا۔ میں نے ویڈیو کے لیے دو کور، ریم کے چند گِگس، 32 MB مختص کیے (ایک گرافیکل انٹرفیس ہوگا، میں نے سوچا)۔ ڈسک ہمیشہ کی طرح ہے - 32 جی بی۔
میں نے انسٹالیشن شروع کر دی۔ میں نے انسٹالیشن کی ہدایات کا استعمال نہیں کیا، اس لیے میں اس پر تبصرہ نہیں کر سکتا۔ TUI انسٹالیشن انٹرفیس انتہائی کم سے کم ہے۔
ٹھیک ہے، بہت اچھا، ہم ایک ماؤس کے بغیر کر سکتے ہیں.
میں نے دوسری کوشش میں اگلی ونڈو کا انتظام کیا۔ ڈسک سے انسٹال کرتے وقت ڈیفالٹ ڈیوائس sr0 [TBD] کو کیوں نہ منتخب کریں؟
CD-ROM ذریعہ منتخب کریں اور آگے بڑھیں۔
ٹائم زون کا انتخاب کرتے وقت، مجھے اچانک احساس ہوا کہ سسٹم init بوٹ کے عمل کو استعمال کرتا ہے، اور میں TTY0 سے کام کر رہا ہوں۔
ٹھیک ہے، پھر آئیے "ایلبرس" کو ایک کمیونٹی کے طور پر درجہ بندی کریں۔
باقی تقریبا غیر اہم ہے: ہم سب کچھ ڈالتے ہیں اور متفق ہیں. راستے میں، ہمیں پتہ چلا کہ دانا 3.14.79-13.84 استعمال ہوتا ہے۔ ہمم، Debian 7 میں 3.2 [TBD] تھا۔
اگلا، ڈیفالٹ ڈسک پارٹیشننگ کو منتخب کریں اور... ہمیں ایک انتباہ نظر آتا ہے:
ہمم، کسی نہ کسی طرح خودکار تقسیم نے 32 گیگ ڈسک کا مقابلہ نہیں کیا۔ میں نے ڈسک کو تبدیل نہیں کیا؛ میں نے "آل ان ون" انداز میں دستی ڈسک تقسیم کے ساتھ تلاش مکمل کی۔ مجھے ext3 انسٹال کرنا پڑا، کیونکہ /boot ext4 میں نہیں ہو سکتا۔
سسٹم بغیر کسی واقعے کے سامنے آیا۔
دوسرے مرحلے - متبادل تلاش کریں۔
دوسری ڈسک کے مشمولات کو چھاننے کے بعد، میں نے محسوس کیا کہ یہ اضافی کے ساتھ ایک ذخیرہ ہے۔ پیکجوں میں اور /etc/apt/sources.list کو دیکھتے ہوئے، میں نے محسوس کیا کہ اسے /mnt/cdrom میں نصب کرنے کی ضرورت ہے۔ لیکن مجھے /etc/os-release نہیں ملا۔ لیکن مواد 3.0-rc36 کے ساتھ /etc/mcst-version موجود ہے۔ 3.0 شاید ورژن ہے - ایسا لگتا ہے کہ یہ فٹ ہے، لیکن rc36؟ عام طور پر، تھرڈ پارٹی سافٹ ویئر غالباً اس تقسیم کو کلاسیکی انداز میں پہچاننے کے قابل نہیں ہوگا۔
روٹ پارٹیشن میں، /mcst ڈائریکٹری میری آنکھ کو پکڑتی ہے، اور وہاں، ڈوبتے ہوئے دل کے ساتھ، میں نے /mcst/backup کو دریافت کیا۔ یعنی، ایک بیک اپ ٹول ہے، اور یہ سسٹم میں شامل ہے! "بہت اچھا،" میں نے سوچا، "آئیے دیکھتے ہیں کہ یہ کیسے کام کرتا ہے!"
پتہ چلا کہ ایک 4Kb bash اسکرپٹ /mcst/bin/backup ہے جو فائل کاپی کرنے کی سہولت فراہم کرتا ہے۔ پہلے سے طے شدہ طور پر - /mcst/backup ڈائریکٹری میں۔ سورس کوڈ میں مجھے rsync کمانڈ دیکھنے کی توقع تھی، لیکن یہ ڈیفالٹ کنفیگریشن میں نہیں ہے۔ اسکرپٹ صرف فائلوں کو کاپی کرتا ہے۔ کمانڈ کچھ اس طرح نظر آتی ہے:
cp -rpdx <file backup> <file>
پوری فائل /mcst/bin/backup یہاں ہے۔میں آپ کو فوراً خبردار کرتا ہوں کہ صرف یہ اسکرپٹ مکمل طور پر سمجھنے کے لیے کافی نہیں ہے۔ یہ /mcst/bin/source سے فنکشنز کھینچتا ہے، جو کہ فنکشنز کی لائبریری کی طرح ہے۔ میں نے اسے شامل نہیں کیا (44KB)۔
#!/bin/bash
unalias -a
set +vx
source $(dirname $0)/source
[[ $? != 0 ]] && exit 1
OPTIONS="hvcdrRil:L:"
usage()
{
echo "Usage: $PROG_NAME [-$OPTIONS] [backup]"
echo " h - this help"
echo " v vv vvv - verbose, very verbose, extremly verbose"
echo " c - create backup"
echo " d - diffs backup and system"
echo " r - recovery system"
echo " R - remove backup"
echo " i - prompt before backup removing"
echo " l list - additional backup files list"
echo " L list - global backup files list"
echo " backup - backup directory, default /mcst/backup/backup"
}
init_prog()
{
typeset flg=0
while getopts $OPTIONS opt
do
case $opt in
h ) usage; exit 0;;
v ) (( verbose = verbose + 1 )); set_verbose;;
c ) flg=1; c_flg=1;;
d ) flg=1; d_flg=1;;
r ) flg=1; r_flg=1;;
R ) flg=1; R_flg=1;;
i ) i_flg=1;;
l ) l_flg=1; list_arg="$list_arg $OPTARG";;
L ) L_flg=1; LIST_arg="$LIST_arg $OPTARG";;
* ) usage "Invalid option"; exit 1;;
esac
done
set_verbose
check_su
init_variables
shift $((OPTIND-1))
if (( $# > 1 ))
then
echo_fatal "invalid arguments number, exp 0|1, act $#"
exit 1
fi
[[ $# = 1 ]] && BACKUP=$1
echo "Backup directory is $BACKUP"
if [[ $L_flg = 1 ]]
then
backup_list="$LIST_arg"
elif [[ $c_flg != 1 && $R_flg != 1 ]]
then
get_output_cmd "cat $BACKUP/$BACKUP_LIST_NAME"
backup_list="$output_cmd"
else
get_output_cmd "get_backup_list"
backup_list="$output_cmd"
fi
if [[ $l_flg = 1 ]]
then
backup_list="$backup_list $list_arg"
fi
if [[ $flg = 0 ]]
then
if [[ -d $BACKUP ]]
then
ls -laR $BACKUP
else
echo_info "Cannot access $BACKUP"
fi
echo "backup_list=$backup_list"
exit 0
fi
### echo "Backup list: $backup_list"
}
create_file()
{
typeset f=$1 fr=$2
typeset fb
[[ -z $fr ]] && fr=$f
fb=${f#/}
fb=$BACKUP/$fb
xcmd="rm -rf $fb"
set_cmd "$xcmd"
run_cmd
xcmd="mkdir -p $fb"
set_cmd "$xcmd"
run_cmd
if [[ -a $fr ]]
then
xcmd="cp -rpdx $fr $fb/file"
set_cmd "$xcmd"
run_cmd
xcmd="touch $fb/create"
set_cmd "$xcmd"
run_cmd
else
xcmd="touch $fb/delete"
set_cmd "$xcmd"
run_cmd
fi
}
diff_file()
{
typeset f=$1
typeset fb
fb=${f#/}
fb=$BACKUP/$fb
if [[ -f $fb/delete ]]
then
echo_info "$f absent"
elif [[ -f $fb/create ]]
then
# echo "state: create $f"
if [[ ! -a $f ]]
then
echo_info "cannot access $f"
else
xcmd="diff -r $f $fb/file"
echo "$xcmd"
set_cmd "$xcmd" "" "0 1 2"
run_cmd
fi
else
echo_fatal "wrong $f backup"
exit 1
fi
}
recovery_file()
{
typeset f=$1
typeset fb
fb=${f#/}
fb=$BACKUP/$fb
if [[ ! -a $fb ]]
then
echo_fatal "cannot access $fb"
exit 1
fi
xcmd="rm -rf $f"
set_cmd "$xcmd"
run_cmd
if [[ -f $fb/delete ]]
then
:
elif [[ -f $fb/create ]]
then
xcmd="cp -rpdx $fb/file $f"
set_cmd "$xcmd"
run_cmd
else
echo_fatal "wrong $fb backup"
exit 1
fi
}
remove_backup()
{
echo "Remove backup"
if [[ ! -d $BACKUP ]]
then
echo_info "Cannot access $BACKUP"
return
fi
if [[ ! -f $BACKUP/$BACKUP_LIST_NAME ]]
then
echo_fatal "$BACKUP_LIST_NAME absent, remove backup manually"
exit 0
fi
answer=
if [[ $i_flg = 1 ]]
then
echo -n "Remove $BACKUP directory (yes/...)?"
read answer
else
answer=yes
fi
if [[ $answer = yes ]]
then
xcmd="rm -rf $BACKUP"
set_cmd "$xcmd"
run_cmd
fi
}
recovery_backup()
{
echo "Recovery system from $BACKUP"
for f in $backup_list
do
get_output_cmd "get_mount_point $f"
mnt=$output_cmd
get_output_cmd "is_ro_mounted $mnt"
mnt=$output_cmd
if [[ ! -z $mnt ]]
then
remount_rw_fs $mnt
fi
recovery_file $f
if [[ ! -z $mnt ]]
then
remount_ro_fs $mnt
fi
done
echo "The system is ready, reboot the system manually"
}
create_backup()
{
echo "Create backup"
xcmd="mkdir -pm0777 $BACKUP"
set_cmd "$xcmd"
run_cmd
for v in $backup_list
do
f=${v%%:*}
backup_list2="$backup_list2 $f"
fr=${v#*:}
create_file $f $fr
done
echo "$backup_list2" >$BACKUP/$BACKUP_LIST_NAME
}
diff_backup()
{
echo "Diffs system and backup"
if [[ ! -d $BACKUP ]]
then
echo_fatal "cannot access $BACKUP"
exit 1
fi
for f in $backup_list
do
diff_file $f
done
}
main()
{
typeset f mnt mnt_list answer
if [[ $R_flg = 1 ]]
then
remove_backup
fi
if [[ $r_flg = 1 ]]
then
recovery_backup
fi
if [[ $c_flg = 1 ]]
then
create_backup
fi
if [[ $d_flg = 1 ]]
then
diff_backup
fi
}
init_prog "$@"
main
exit 0
اگرچہ، شاید میں کچھ نہیں سمجھا؟ ہوسکتا ہے کہ کوئی تبصرے میں وضاحت کرے: یہ اسکرپٹ محفوظ اور قابل اعتماد ڈیٹا بیک اپ کو کیسے یقینی بناتا ہے؟ [TBD]
rsync، ویسے، ایڈ آن میں شامل ہے۔ ذخیرے ورژن 3.1.3۔ میرے خیال میں rsync کا استعمال اب بھی /mcst/bin/backup ایپلیکیشن کا ایک بہتر متبادل ہے۔
اگلا، میں نے ایک تازہ ڈالنے کا فیصلہ کیا لینکس کے لیے ویم ایجنٹ. کوئی پوچھے گا: "ویم اور امپورٹ متبادل کا اس سے کیا تعلق ہے؟" جی ہاں، یہ رجسٹر میں نہیں ہے، لیکن یہ FSTEC سے تصدیق شدہ ہے، جس کا مطلب ہے کہ متبادل کی غیر موجودگی میں اسے استعمال کیا جا سکتا ہے۔ سے متبادلات پر پندرہ منٹ خرچ کرنا
مرحلہ تین - لینکس کے لیے Veeam ایجنٹ کی تنصیب۔
لہذا، لینکس کے لیے Veeam ایجنٹ دو پیکجوں پر مشتمل ہے: veeamsnap کرنل ماڈیول (ویسے،
کرنل ماڈیول کو انسٹال کرنے میں ایک چھوٹا مسئلہ تھا - غائب dkms پیکیج۔ یہ ایک ایسی خدمت ہے جو آپ کو ذریعہ سے کرنل ماڈیول بنانے کی اجازت دیتی ہے۔ ایک اصول کے طور پر، یہ تمام deb تقسیم پر دستیاب ہے۔ مجھے اسے تھرڈ پارٹی ڈیب ریپوزٹری سے ڈاؤن لوڈ کرنا پڑا۔ ایک چیز جس نے مجھے خوش کیا وہ یہ ہے کہ پیکیج فن تعمیر پر منحصر نہیں ہے، لہذا یہ مقامی کی طرح فٹ بیٹھتا ہے۔ اسے دستیاب پیکجز کی فہرست میں کیوں شامل نہیں کیا گیا، یا اس کے بجائے، [TBD] تیار نہیں کیا گیا؟ شاید یہ فرض کیا جاتا ہے کہ کسی کو بھی غیر MCST کرنل ماڈیولز نہیں بنانا اور نہیں چلانا چاہیے۔ یہاں واقعی ایک تضاد ہے - چونکہ یہاں لینکس ہیڈر ہیں۔ یعنی، ماڈیول، اگر چاہیں، ہاتھ سے جمع کیا جا سکتا ہے اور مشین کے شروع ہونے پر اسکرپٹ کے ذریعے لانچ کیا جا سکتا ہے۔ میرے خیال میں آپ کو MCST [TBD] سے متواتر اپ ڈیٹس کی توقع نہیں کرنی چاہیے۔
"ٹھیک ہے، ماڈیول انسٹال ہو گیا ہے - سب سے مشکل حصہ ختم ہو گیا ہے،" میں نے سوچا... ڈیب ریپوزٹری کے لیے ویم پیکیج amd64 پلیٹ فارم کے لیے ہے، اور Elbrus OS کے پاس ایک x86_64 [TBD] پلیٹ فارم ہے۔ فرق، بلاشبہ، صرف نام میں ہے، لیکن یہ فرق تھرڈ پارٹی ڈیب ریپوزٹریز کے تقریباً تمام پیکجوں کو ایلبرس OS سے مطابقت نہیں رکھتا۔ اس پریشان کن غلط فہمی کو آسانی سے ختم کیا جا سکتا ہے: بس پیکج کو الگ کریں، فن تعمیر کے بارے میں معلومات کو درست کریں اور اسے دوبارہ ایک ساتھ رکھیں۔ یہ کیسے کرنا ہے
mkdir tmp
dpkg-deb -R original.deb tmp
# edit DEBIAN/postinst
dpkg-deb -b tmp fixed.deb
ایک اور مسئلہ انحصار ہے۔ بظاہر ضروری فائلیں موجود ہیں، لیکن پیکجز نہیں ہیں۔ تاثر یہ تھا کہ پیکجوں کے نام ان کے "امپورٹڈ اینالاگ" سے مختلف ہیں۔ شاید لائبریریوں کو مختلف طریقے سے پیک کیا گیا ہے۔ میں بہت زیادہ تفصیل میں نہیں گیا، تقریباً تمام انحصار کو ہٹا دیا، اور انسٹالیشن آگے بڑھ گئی۔
پھر سروس اسٹارٹ کوڈ کے ساتھ مسائل سامنے آئے۔ اسکرپٹ /lib/init/vars.sh غائب تھا۔ کسی وجہ سے، Elbrus اس کے بغیر انتظام کرتا ہے، لہذا ہم اسے بھی ہٹا دیں گے۔ اگلا، ہمیں میسج آؤٹ پٹ فنکشن کو تبدیل کرنا پڑا: log_daemon_msg اور log_end_msg فنکشنز غائب تھے۔ /lib/lsb/init-functions فائل میں گھومنے پھرنے کے بعد، مجھے log_success_msg فنکشن ملا - یہ ہمارے لیے تجربات کے لیے اچھا ہوگا۔ ویسے، /lib/lsb/init-functions فائل میں لائن "# Source SuSE`s rc functions" [TBD] فائل کے شروع میں ہے۔
ایک فائل کے ساتھ پیکج کی اتنی سخت پروسیسنگ کے بعد، NFS شیئر پر پوری مشین کا بیک اپ کامیابی کے ساتھ شروع کیا گیا۔ بیک اپ ماؤنٹ بھی کامیاب رہا۔ لہذا، مجھے یقین ہے کہ Elbrus PDK کے ساتھ کسی مشین کا بیک اپ لینے کے لیے، بغیر کسی ذمہ داری کے "بالکل اسی طرح" ڈاؤن لوڈ کی گئی، لینکس کے لیے Veeam ایجنٹ یقینی طور پر موزوں ہے۔ یہاں تک کہ ایک فائل کے ساتھ تمام تر ترمیم کے بعد۔
یقیناً، ایلبرس او ایس ڈسٹری بیوشن کٹ باضابطہ طور پر تعاون یافتہ نہیں ہے، کیونکہ یہ معاون کی فہرست میں شامل نہیں ہے۔ اس کے علاوہ، لینکس کے لیے Veeam ایجنٹ کا QA ڈیپارٹمنٹ کے ذریعے تجربہ نہیں کیا گیا، اس لیے وہ۔ کوئی حمایت نہیں ہے (کم از کم مضمون کی اشاعت کے وقت)۔
مجھے امید ہے کہ مضمون ان لوگوں کے لیے کارآمد ثابت ہو گا جو 334 جون 29.06.2017 کے آرڈر نمبر XNUMX کو نافذ کرنے کی کوشش کر رہے ہیں۔ میں آپ کے لیے... [TBD]۔
ماخذ: www.habr.com