හැමෝටම ආයුබෝවන්.
Habré පිළිබඳ මෑත ලිපි
පළමුවෙන්ම, මම Elbrus OS බාගත කිරීමට තීරණය කළෙමි, නැතහොත්, x86_64 ගෘහ නිර්මාණ ශිල්පය සඳහා පවතින බෙදාහැරීම පමණක්, එය ක්රියා කරන ආකාරය බලන්න, සහ Linux සඳහා Veeam Agent ස්ථාපනය කිරීමට උත්සාහ කරන්න. මේකෙන් ආපු දේ දැනගන්න ඕන නම් පූසා බලන්න.
ඉතින්, කුඩා අපගමනය, යමෙකු නොදන්නා අවස්ථාවක. "Elbrus" එහෙමයි
තවත් කුඩා බලහත්කාරයෙන් පසුබැසීමක්. කාරණය නම් මම වරක් MSVS සහ Baguette RTOS වැනි ගෘහස්ථ මෘදුකාංග සමඟ කටයුතු කළෙමි. MCST වෙතින් ප්රොසෙසරයක් ඇතුළුව ගෘහස්ථ සංරචක සමඟ වැඩ කිරීමේ අත්දැකීම මට තිබුණි. එබැවින්, මෙම ප්රදේශයේ යම් නිශ්චිතතාවයක් ඇති බව මට සම්පූර්ණ වගකීමෙන් පැවසිය හැකි අතර ලිපියෙහි එය ස්පර්ශ නොකිරීමට මම උත්සාහ කරමි. මට ඇත්තටම අවශ්ය වූ විට, මම ටැගය [TBD] දමන්නෙමි. එබැවින් අපි කෙලින්ම ට්රොලිං සහ අශෝභන විලාපයකින් තොරව කිරීමට උත්සාහ කරමු. අවසානයේදී රුසියානු ආරක්ෂක කර්මාන්තය සහ රාජ්ය ආයතන තේරුම් ගත යුතුය. විශාල රට - කුඩා අයවැය.. [TBD].
ශුන්ය අදියර - බාගත. එල්බ්රස් මෙහෙයුම් පද්ධතිය ලබා ගත හැකි බවට වූ පුවත අනුනාදයක් ඇති කළ අතර එමඟින් බෙදා හැරීමේ සේවාදායකය ක්රියා විරහිත විය. [TBD] Yandex සහ එය එහි ගෙන යාමට සිතූ ඉංජිනේරුවරයාට ස්තුතියි. ඉතින් ඩවුන්ලෝඩ් ස්පීඩ් එක හොදයි.
පළමු අදියර - ස්ථාපන. මම එය නොමිලේ භාවිතා කිරීමට ලබා ගත හැකි පළමු හයිපර්වයිසර් මත ස්ථාපනය කළෙමි. මම cores දෙකක්, RAM ගිග් කිහිපයක්, වීඩියෝ සඳහා 32 MB වෙන් කළෙමි (චිත්රක අතුරු මුහුණතක් ඇත, මම සිතුවෙමි). තැටිය සුපුරුදු පරිදි - 32 GB.
මම ස්ථාපනය ආරම්භ කළා. මම ස්ථාපන උපදෙස් භාවිතා නොකළ නිසා මට ඒ ගැන අදහස් දැක්විය නොහැක. TUI ස්ථාපන අතුරුමුහුණත දැඩි ලෙස අවම වේ.
හොඳයි, නියමයි, අපට මූසිකයක් නොමැතිව කළ හැකිය.
මම දෙවන උත්සාහයේදී ඊළඟ කවුළුව කළමනාකරණය කළෙමි. තැටියෙන් ස්ථාපනය කිරීමේදී පෙරනිමි උපාංගය sr0 [TBD] තෝරා නොගන්නේ මන්ද?
CD-ROM මූලාශ්රය තෝරා ඉදිරියට යන්න.
කාල කලාපය තෝරාගැනීමේදී, පද්ධතිය init ඇරඹුම් ක්රියාවලිය භාවිතා කරන බව මට හදිසියේම වැටහුණි, මම TTY0 වෙතින් වැඩ කරමි.
හරි, එහෙනම් අපි "Elbrus" ප්රජාවක් ලෙස වර්ග කරමු
ඉතිරිය පාහේ වැදගත් නොවේ: අපි සියල්ල දමා එකඟ වෙමු. මාර්ගය ඔස්සේ, කර්නලය 3.14.79-13.84 භාවිතා කරන බව අපි සොයා ගනිමු. හ්ම්, Debian 7 හි 3.2 [TBD] තිබුනා.
ඊළඟට, පෙරනිමි තැටි කොටස් කිරීම තෝරන්න සහ... අපි අනතුරු ඇඟවීමක් දකිමු:
හ්ම්, කෙසේ හෝ ස්වයංක්රීය කොටස් කිරීම 32 ගිග් තැටියක් සමඟ හොඳින් කටයුතු කළේ නැත. මම තැටිය වෙනස් කළේ නැත; මම "සියල්ලෙන් එක" ශෛලියෙන් අතින් තැටි කොටස් කිරීම සමඟ ගවේෂණය සම්පූර්ණ කළෙමි. /boot ext3 හි තිබිය නොහැකි නිසා මට ext4 ස්ථාපනය කිරීමට සිදු විය.
සිස්ටම් එක සිද්දියක් නැතුව ආවා.
දෙවන අදියර - විකල්ප සොයන්න.
දෙවන තැටියේ අන්තර්ගතය හරහා සැරිසැරීමෙන් පසුව, මෙය අතිරේක සහිත ගබඩාවක් බව මට වැටහුණි. පැකේජ වල. සහ /etc/apt/sources.list දෙස බැලීමේදී, එය /mnt/cdrom හි සවි කළ යුතු බව මට වැටහුණි. නමුත් මම /etc/os-release සොයා ගත්තේ නැත. නමුත් 3.0-rc36 අන්තර්ගතය සහිත /etc/mcst-අනුවාදය ඇත. 3.0 බොහෝ විට අනුවාදය වේ - එය ගැලපෙන බව පෙනේ, නමුත් rc36? සාමාන්යයෙන්, තෙවන පාර්ශවීය මෘදුකාංග බොහෝ විට මෙම ව්යාප්තිය සම්භාව්ය ආකාරයෙන් හඳුනා ගැනීමට නොහැකි වනු ඇත.
මූල කොටසේදී, /mcst නාමාවලිය මගේ ඇසට හසු වන අතර, එහි ගිලෙන හදවතක් සමඟ, මම /mcst/backup සොයා ගත්තෙමි. එනම්, උපස්ථ මෙවලමක් ඇත, එය පද්ධතිය තුළට ගොඩනගා ඇත! "නියමයි," මම හිතුවා, "අපි බලමු මේක කොහොමද කියලා!"
ගොනු පිටපත් කිරීම සපයන 4Kb bash script /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 යෙදුමට වඩා හොඳ විකල්පයක්.
ඊළඟට, මම නැවුම් එකක් තැබීමට තීරණය කළෙමි Linux සඳහා Veeam නියෝජිතයා. යමෙක් අසනු ඇත: "වීම් සහ ආනයන ආදේශනයට එයට ඇති සම්බන්ධය කුමක්ද?" ඔව්, එය ලේඛනයේ නැත, නමුත් එය FSTEC විසින් සහතික කර ඇත, එයින් අදහස් කරන්නේ විකල්ප නොමැති විට එය භාවිතා කළ හැකි බවයි. සිට විකල්ප සඳහා විනාඩි පහළොවක් වැය කිරීම
තුන්වන අදියර - Linux සඳහා Veeam නියෝජිත ස්ථාපනය.
එබැවින්, Linux සඳහා Veeam නියෝජිතයා පැකේජ දෙකකින් සමන්විත වේ: veeamsnap කර්නල් මොඩියුලය (මාර්ගය අනුව,
කර්නල් මොඩියුලය ස්ථාපනය කිරීමේදී එක් කුඩා ගැටළුවක් ඇති විය - අතුරුදහන් වූ dkms පැකේජය. මෙය මූලාශ්රයෙන් කර්නල් මොඩියුල සෑදීමට ඔබට ඉඩ සලසන සේවාවකි. රීතියක් ලෙස, එය සියලුම deb බෙදාහැරීම් මත පවතී. මට එය තෙවන පාර්ශවීය deb ගබඩාවකින් බාගත කිරීමට සිදු විය. මගේ සතුටට කරුණක් නම්, පැකේජය ගෘහ නිර්මාණ ශිල්පය මත රඳා නොපවතින බැවින් එය දේශීය එකක් ලෙස ගැලපේ. එය පවතින පැකේජ ලැයිස්තුවට ඇතුළත් නොකළේ, එසේත් නැතිනම්, [TBD] සංවර්ධනය නොකළේ මන්ද? සමහර විට කිසිවකු MCST නොවන කර්නල් මොඩියුල ගොඩනගා ධාවනය නොකළ යුතු යැයි උපකල්පනය කෙරේ. ඇත්තටම මෙහි විෂමතාවයක් ඇත - ලිනක්ස්-ශීර්ෂ ඇති බැවින්. එනම්, මොඩියුලය, අවශ්ය නම්, අතින් එකලස් කර යන්ත්රය ආරම්භ වන විට ස්ක්රිප්ට් එකකින් දියත් කළ හැකිය. ඔබ MCST [TBD] වෙතින් නිතර යාවත්කාලීන කිරීම් බලාපොරොත්තු නොවිය යුතු යැයි මම සිතමි.
"හරි, මොඩියුලය ස්ථාපනය කර ඇත - අමාරුම කොටස අවසන්," මම හිතුවා ... deb ගබඩාව සඳහා veeam පැකේජය amd64 වේදිකාව සඳහා වන අතර, Elbrus OS හි x86_64 [TBD] වේදිකාවක් ඇත. ඇත්ත වශයෙන්ම වෙනස ඇත්තේ නමේ පමණි, නමුත් මෙම වෙනස තෙවන පාර්ශවීය ඩෙබ් නිධි වලින් පැකේජ සියල්ලම පාහේ Elbrus 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 ගොනුවේ "# මූලාශ්ර SuSE`s rc ශ්රිත" රේඛාව [TBD] ගොනුවේ ආරම්භයේ ඇත.
ගොනුවක් සමඟ පැකේජය එවැනි රළු සැකසුම් කිරීමෙන් පසුව, NFS කොටසෙහි සම්පූර්ණ යන්ත්ර උපස්ථය සාර්ථකව දියත් කරන ලදී. උපස්ථ සවි කිරීම ද සාර්ථක විය. එබැවින්, කිසිදු බැඳීමක් නොමැතිව “එසේම” බාගත කර ඇති Elbrus PDK සමඟ යන්ත්රයක් උපස්ථ කිරීම සඳහා, Linux සඳහා Veeam නියෝජිතයා අනිවාර්යයෙන්ම සුදුසු බව මම විශ්වාස කරමි. ගොනුවක් සමඟ සියලු වෙනස් කිරීම් වලින් පසුව පවා.
ඇත්ත වශයෙන්ම, Elbrus OS බෙදාහැරීමේ කට්ටලය නිල වශයෙන් සහාය නොදක්වයි, මන්ද එය සහාය දක්වන ලැයිස්තුවට ඇතුළත් කර නොමැත. මීට අමතරව, QA දෙපාර්තමේන්තුව විසින් Linux සඳහා Veeam නියෝජිතයා එය පරීක්ෂා කර නැත, එබැවින් ඒවා. කිසිදු සහායක් නොමැත (අවම වශයෙන් ලිපිය ප්රකාශයට පත් කරන අවස්ථාවේදී).
334 ජුනි 29.06.2017 දින අංක XNUMX දරන නියෝගය ක්රියාත්මක කිරීමට උත්සාහ කරන අයට ලිපිය ප්රයෝජනවත් වනු ඇතැයි මම බලාපොරොත්තු වෙමි. මගේ ඔබට... [TBD].
මූලාශ්රය: www.habr.com