Moni nonse.
Zolemba zaposachedwa za Habré
Choyamba, ndinaganiza zotsitsa Elbrus OS, kapena m'malo mwake, kugawa komwe kulipo kwa zomangamanga za x86_64, onani momwe zimagwirira ntchito, ndikuyesa kukhazikitsa Veeam Agent kwa Linux. Ngati mukufuna kudziwa zomwe zidatuluka, chonde onani mphaka.
Chifukwa chake, kutsika pang'ono, ngati wina sakudziwa. "Elbrus" ndi choncho
Wina yaing'ono mokakamizidwa pobwerera. Chowonadi ndichakuti nthawi ina ndidachita nawo mapulogalamu apanyumba, monga MSVS ndi Baguette RTOS. Ndinali ndi chidziwitso chogwira ntchito ndi zigawo zapakhomo, kuphatikizapo purosesa yochokera ku MCST. Choncho, ndikhoza kunena ndi udindo wonse kuti pali zenizeni m'derali ndipo ndiyesetsa kuti ndisakhudze m'nkhaniyi. Pamene ndikufunadi, ndimayika chizindikiro [TBD]. Chifukwa chake tidzayesetsa kuchita popanda kupondaponda momveka bwino komanso kubuula kwa banal. Pamapeto pake, makampani achitetezo aku Russia ndi mabungwe aboma akuyenera kumvetsetsedwa. Dziko lalikulu - bajeti yaying'ono.. [TBD].
Zero stage - kukopera. Ndizodabwitsa kuti mbiri yoti Elbrus OS yapezeka idayambitsa kugunda, kotero kuti seva yogawa idatsika. [TBD] Chifukwa cha Yandex ndi injiniya yemwe adaganiza zosunthira kumeneko. Chifukwa chake liwiro lotsitsa ndilabwino.
Gawo loyamba - kukhazikitsa. Ndinayiyika pa hypervisor yoyamba yomwe inalipo kuti igwiritsidwe ntchito kwaulere. Ndidagawa ma cores awiri, ma gigs angapo a RAM, 32 MB ya kanema (padzakhala mawonekedwe ojambulira, ndimaganiza). disk ndi mwachizolowezi - 32 GB.
Ndinayamba kukhazikitsa. Sindinagwiritse ntchito malangizo oyika, kotero sindingathe kuyankhapo. Mawonekedwe oyika a TUI ndi ochepa kwambiri.
Chabwino, chabwino, titha kuchita popanda mbewa.
Ndinayendetsa zenera lotsatira pa kuyesa kwachiwiri. Bwanji osasankha chipangizo chokhazikika sr0 [TBD] mukakhazikitsa kuchokera pa disk?
Sankhani gwero la CD-ROM ndikupitilira.
Ndikusankha nthawi, ndinazindikira mwadzidzidzi kuti makinawa amagwiritsa ntchito init boot process, ndipo ndikugwira ntchito kuchokera ku TTY0.
Chabwino, ndiye tiyeni tigawane "Elbrus" ngati gulu
Zina zonse ndi zosafunikira: timayika zonse ndikuvomereza. Panjira, timapeza kuti kernel imagwiritsidwa ntchito 3.14.79-13.84. Hmm, Debian 7 anali ndi 3.2 [TBD].
Kenako, sankhani magawo a disk partitioning ndi... Tikuwona chenjezo:
Hmm, mwanjira ina kugawikana kwadzidzidzi sikunayende bwino ndi 32 gig disk. Sindinasinthe disk; Ndinamaliza kufunafuna ndi magawo a disk pamanja mumayendedwe a "all-in-one". Ndinayenera kukhazikitsa ext3, popeza / boot sangakhale mu ext4.
Dongosolo lidabwera popanda chochitika.
Gawo lachiwiri - fufuzani njira zina.
Nditafufuza zomwe zili mu diski yachiwiri, ndinazindikira kuti iyi ndi malo osungiramo zowonjezera. m'matumba. Ndipo ndikuyang'ana /etc/apt/sources.list, ndinazindikira kuti ikuyenera kukwera mu /mnt/cdrom. Koma sindinapeze /etc/os-release. Koma pali /etc/mcst-version ndi zomwe zili 3.0-rc36. 3.0 mwina ndiye mtunduwo - ukuwoneka kuti uyenera, koma rc36? Nthawi zambiri, mapulogalamu a chipani chachitatu sangathe kuzindikira kugawa kumeneku mwachikale.
Pagawo la mizu, chikwatu cha /mcst chimandigwira diso, ndipo pamenepo, ndi mtima wozama, ndidapeza /mcst/backup. Ndiko kuti, pali chida chosungira, ndipo chamangidwa mudongosolo! "Zabwino," ndinaganiza, "Tiyeni tiwone momwe izi zimagwirira ntchito!"
Zinapezeka kuti pali 4Kb bash script /mcst/bin/backup yomwe imapereka kukopera mafayilo. Mwachikhazikitso - kupita ku /mcst/backup directory. Mu code source ndimayembekezera kuwona lamulo la rsync, koma siliri mu kasinthidwe kosasintha. Zolemba zimangokopera mafayilo. Lamulo likuwoneka motere:
cp -rpdx <file backup> <file>
Fayilo yonse /mcst/bin/backup ili panoNdikukuchenjezani nthawi yomweyo kuti script iyi yokha sikwanira kumvetsetsa bwino. Imakoka ntchito kuchokera ku /mcst/bin/source, yomwe ili ngati laibulale ya ntchito. Sindinaphatikizepo (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
Ngakhale, mwinamwake sindinamvetse chinachake? Mwina wina atha kufotokozera m'mawu: Kodi script iyi imatsimikizira bwanji zosunga zobwezeretsera zotetezeka komanso zodalirika? [TBD]
rsync, mwa njira, ikuphatikizidwa muzowonjezera. nkhokwe. Mtundu wa 3.1.3. Ndikuganiza kuti kugwiritsa ntchito rsync ndikadali njira yabwinoko ku /mcst/bin/backup application.
Kenako, ndinaganiza zoika ina yatsopano Veeam Agent wa Linux. Wina angafunse kuti: "Kodi Veeam ndi kulowetsa m'malo mwa import zikukhudzana bwanji ndi izi?" Inde, sizili mu kaundula, koma zimatsimikiziridwa ndi FSTEC, zomwe zikutanthauza kuti popanda njira zina zingagwiritsidwe ntchito. Kuthera mphindi khumi ndi zisanu pa njira zina kuchokera
Gawo Lachitatu - kukhazikitsa kwa Veeam Agent kwa Linux.
Chifukwa chake, Veeam Agent ya Linux imakhala ndi mapaketi awiri: module ya veeamsnap kernel (mwa njira,
Panali vuto limodzi laling'ono pakuyika gawo la kernel - phukusi la dkms lomwe likusowa. Uwu ndi ntchito yomwe imakupatsani mwayi wopanga ma module a kernel kuchokera kugwero. Monga lamulo, imapezeka pamagawidwe onse a deb. Ndidayenera kutsitsa kuchokera kumalo osungira a chipani chachitatu. Chinthu chimodzi chomwe chinandisangalatsa ndichakuti phukusili silidalira kamangidwe kake, motero limakwanira ngati lakwawo. Chifukwa chiyani sichinaphatikizidwe pamndandanda wamaphukusi omwe alipo, kapena m'malo mwake, osapangidwa [TBD]? Mwina zimaganiziridwa kuti palibe amene ayenera kupanga ndikuyendetsa ma module omwe si a MCST kernel. Pali kusiyana kwenikweni apa - popeza pali mitu ya linux. Ndiko kuti, gawo, ngati lingafune, likhoza kusonkhanitsidwa ndi dzanja ndikuyambitsidwa ndi script pamene makina ayamba. Ndikuganiza kuti musayembekezere zosintha pafupipafupi kuchokera ku MCST [TBD].
"Chabwino, gawoli lakhazikitsidwa - gawo lovuta kwambiri latha," ndinaganiza ... Phukusi la veeam la deb repository ndi nsanja ya amd64, ndipo Elbrus OS ili ndi x86_64 [TBD] nsanja. Kusiyanitsa, ndithudi, kuli m'dzina lokha, koma kusiyana kumeneku kumapangitsa kuti pafupifupi mapepala onse a chipani chachitatu asagwirizane ndi Elbrus OS. Kusamvetsetsana kokwiyitsaku kumatha kuthetsedwa mophweka: ingosokonezani phukusi, konzani zambiri za zomangamanga ndikuzibwezeretsanso. Momwe mungachitire
mkdir tmp
dpkg-deb -R original.deb tmp
# edit DEBIAN/postinst
dpkg-deb -b tmp fixed.deb
Vuto lina ndi kudalira. Mafayilo ofunikira akuwoneka kuti alipo, koma mapaketi sali. Lingaliro linali lakuti mayina a mapaketiwo anali osiyana ndi "analogues" omwe adatumizidwa kunja. Mwina malaibulale amapakidwa mosiyana. Sindinapite mwatsatanetsatane, ndinachotsa pafupifupi zodalira zonse, ndipo kuyikako kunapitirira.
Kenako mavuto adawonekera ndi code yoyambira ntchito. Zolemba /lib/init/vars.sh zinalibe. Pazifukwa zina, Elbrus amakwanitsa popanda izo, kotero ifenso kuchotsa izo. Kenaka, tinayenera kusintha ntchito yotulutsa uthenga: log_daemon_msg ndi log_end_msg ntchito zinalibe. Nditafufuza mozungulira /lib/lsb/init-functions file, ndinapeza ntchito ya log_success_msg - zidzakhala zabwino kwa ife kuyesa. Mwa njira, mu fayilo ya /lib/lsb/init-functions mzere wa "# Source SuSE`s rc function" uli koyambirira kwa fayilo ya [TBD].
Pambuyo pakukonza koyipa kwa phukusi ndi fayilo, zosunga zobwezeretsera zamakina onse pagawo la NFS zidakhazikitsidwa bwino. Kuyika zosunga zobwezeretsera kudachitanso bwino. Chifukwa chake, ndikukhulupirira, pothandizira makina omwe ali ndi Elbrus PDK, otsitsidwa "monga choncho" popanda udindo uliwonse, Veeam Agent wa Linux ndiwoyeneradi. Ngakhale mutasintha zonse ndi fayilo.
Zachidziwikire, zida zogawa za Elbrus OS sizimathandizidwa, chifukwa sizinaphatikizidwe pamndandanda wazothandizira. Kuphatikiza apo, Veeam Agent wa Linux sanayesedwe ndi dipatimenti ya QA, kotero iwo. palibe chithandizo (osachepera pa nthawi yofalitsa nkhaniyo).
Ndikuyembekeza kuti nkhaniyi idzakhala yothandiza kwa iwo omwe akuyesera kukhazikitsa dongosolo No. 334 la June 29.06.2017, XNUMX. Wanga kwa inu... [TBD].
Source: www.habr.com