Qof walba raalli.
Maqaalladii u dambeeyay ee Habré
Ugu horreyntii, waxaan go'aansaday inaan soo dejiyo Elbrus OS, ama halkii, kaliya qaybinta la heli karo ee naqshadaha x86_64, arag sida ay u shaqeyso, oo isku day inaad ku rakibto Veeam Agent ee Linux. Haddii aad rabto inaad ogaato waxa arrintan ka soo baxay, fadlan eeg bisad.
Markaa, dib-u-dhac yar, haddii qof aanu garanayn. "Elbrus" waa sidaas oo kale
Dib u gurasho yar oo kale oo qasab ah. Xaqiiqdu waxay tahay in aan mar la macaamilay software-ka gudaha, sida MSVS iyo Baguette RTOS. Waxaan khibrad u lahaa la shaqaynta qaybaha gudaha, oo ay ku jiraan processor ka MCST. Haddaba, aniga oo mas’uuliyad buuxda ah, waxaan odhan karaa arrin gaar ah ayaa meeshan ka jirta oo aan isku dayi doono inaan maqaalka ku taaban. Marka aan runtii rabo, waxaan dhejin doonaa sumadda [TBD]. Markaa waxaan isku dayi doonaa inaan samayno iyada oo aan si toos ah loo barooran iyo cabashada banal. Ugu dambeyntii, warshadaha difaaca Ruushka iyo hay'adaha dawladda waxay u baahan yihiin in la fahmo. Waddan weyn - miisaaniyad yar.. [TBD].
Marxaladda eber - soo dejiso. Waxaa xusid mudan in warka ku saabsan in Elbrus OS uu soo baxay uu sababay buuq, ilaa uu server-ka qaybintu hoos u dhacay. [TBD] Waad ku mahadsan tahay Yandex iyo injineerkii ka fikiray inuu halkaas u raro. Markaa xawaaraha soo dejintu waa wanaagsan yahay.
Heerka koobaad - rakibidda. Waxaan ku rakibay hypervisor-kii ugu horreeyay ee diyaar u ahaa isticmaalka bilaashka ah. Waxaan u qoondeeyay laba nooc, laba gig oo RAM ah, 32 MB oo fiidiyoow ah (waxaa jiri doona interface garaaf ah, waxaan u maleeyay). Disk-gu waa sida caadiga ah - 32 GB.
Waxaan bilaabay rakibidda. Ma aan isticmaalin tilmaamaha rakibaadda, markaa kama faalloon karo. Isku xirka rakibaadda TUI aad buu u yar yahay.
Waa hagaag, weyn, waxaan samayn karnaa la'aanteed.
Waxaan maamulay daaqada xigta ee isku daygii labaad. Waa maxay sababta aadan u dooran aaladda caadiga ah ee sr0 [TBD] marka aad ka soo rakibayso saxanka?
Dooro isha CD-ROM-ka oo dhaqaaq.
Markii aan dooranayay aagga waqtiga, waxaan si lama filaan ah u ogaaday in nidaamku isticmaalo habka boot boot, oo waxaan ka shaqeynayaa TTY0.
OK, ka dib aynu u kala saarno "Elbrus" bulsho ahaan
Inta soo hartay waxay ku dhowdahay mid aan muhiim ahayn: wax walba waanu dhignay waana ku heshiinnay. Jidka dhexdiisa, waxaan ogaanay in kernel-ka loo isticmaalo 3.14.79-13.84. Hmm, Debian 7 wuxuu lahaa 3.2 [TBD].
Marka xigta, dooro qaybinta saxanka caadiga ah iyo... Waxaan aragnaa digniin:
Hmm, si uun qaybintu si toos ah ulamay qabsan 32 gig disk. Anigu ma beddelin saxanka; Waxaan ku dhammaystiray raadintii iyada oo qaybinta saxanka gacanta ku jirta qaabka "dhan-ku-jirka". Waa inaan rakibaa ext3, maadaama / boot uusan ku jiri karin ext4.
Nidaamku wuxuu ku yimid iyada oo aan dhicin.
Marxaladda labaad - raadi meelo kale.
Ka dib markii aan ku dhexjiray waxa ku jira diskka labaad, waxaan ogaaday in tani ay tahay meel kayd ah oo dheeraad ah. baakadaha. Oo markaan eegay /etc/apt/sources.list, waxaan ogaaday inay u baahan tahay in lagu dhejiyo /mnt/cdrom. Laakiin ma helin /etc/os-release. Laakiin waxaa jira /etc/mcst-version oo leh waxa ku jira 3.0-rc36. 3.0 malaha waa nooca - waxay u muuqataa inay ku habboon tahay, laakiin rc36? Guud ahaan, software-ka saddexaad waxay u badan tahay inaanu awoodin inuu u aqoonsado qaybintan habka caadiga ah.
Qaybta xididka, tusaha /mcst ayaa indhahayga qabanaya, oo halkaas, aniga oo wadne quusaya, waxaan helay /mcst/backup. Taasi waa, waxaa jira qalab gurmad ah, oo lagu dhisay nidaamka! "Weyn," waxaan u maleeyay, "Aan aragno sida tani u shaqeyso!"
Waxaa soo baxday in uu jiro 4Kb bash script /mcst/bin/backup oo bixiya nuqul ka mid ah faylka. Sida caadiga ah - ilaa /mcst/backup directory. Koodhka isha waxaan filayey inaan arko amarka rsync, laakiin kuma jiro qaabeynta caadiga ah. Qoraalku si fudud buu u koobiyayaa faylasha. Amarku wuxuu u eg yahay sidan:
cp -rpdx <file backup> <file>
Dhammaan faylka /mcst/bin/backup waa halkanWaxaan isla markiiba kaaga digayaa in qoraalkan oo keliya aanu ku filnayn in si buuxda loo fahmo. Waxay ka soo jiidataa hawlaha /mcst/bin/source, taas oo ah wax la mid ah maktabadda hawlaha. Kuma darin (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
In kastoo, laga yaabaa in aanan fahmin wax? Waxaa laga yaabaa in qof uu ku sharxi karo faallooyinka: sidee buu qoraalkani u xaqiijiyaa badbaadada xogta badbaadada iyo kalsoonida leh? [TBD]
rsync, habka, waxaa lagu daraa ku-darka. kayd. Nooca 3.1.3. Waxaan u maleynayaa in isticmaalka rsync ay wali tahay beddelka ka wanaagsan codsiga /mcst/bin/backup.
Marka xigta, waxaan go'aansaday inaan mid cusub dhigo Wakiilka Veeam ee Linux. Qof ayaa ku weydiin doona: "Maxay ka leeyihiin beddelka Veeam iyo soo dejinta?" Haa, kuma jiro diiwaanka, laakiin waxaa shahaado siisay FSTEC, taas oo macnaheedu yahay in maqnaanshaha beddelka la isticmaali karo. Ku qaadashada shan iyo toban daqiiqo oo beddelka ah
Marxaladda saddexaad - rakibida Wakiilka Veeam ee Linux.
Marka, Wakiilka Veeam ee Linux wuxuu ka kooban yahay laba xirmo: moduleka kernel veeamsnap (sida, jidka,
Waxaa jiray hal dhibaato oo yar oo ku saabsan rakibidda moduleka kernel - xirmada dkms ee maqan. Kani waa adeeg kuu ogolaanaya inaad ka dhisto cutubyada kernel-ka isha. Sida caadiga ah, waxaa laga heli karaa dhammaan qaybinta deynta. Waxay ahayd inaan ka soo dejiyo kaydka deb qolo saddexaad. Hal shay oo iga farxiyay ayaa ah in xirmada aysan ku xirneyn qaab dhismeedka, sidaas darteed waxay ku habboon tahay mid asal ah. Maxay tahay sababta loogu darin liiska xirmooyinka la heli karo, ama taa beddelkeeda, aan loo horumarin [TBD]? Waxaa laga yaabaa in loo maleeyo in qofna uusan dhisin oo maamulin wax kasta oo aan ahayn cutubyada kernel-ka ee MCST. Runtii halkan farqi ayaa ka jira - maadaama ay jiraan madax-madaxeedyo linux ah. Taasi waa, moduleka, haddii la rabo, waxaa lagu soo ururin karaa gacanta oo lagu bilaabi karaa qoraal marka mashiinku bilowdo. Waxaan u maleynayaa inaadan ka filaneynin cusbooneysiin joogto ah MCST [TBD].
"OK, moduleka waa la rakibay - qaybta ugu adkeyd way dhammaatay," waxaan u maleeyay... Xidhmada veeam ee kaydka deb-ka waxaa loogu talagalay amd64 platform, iyo Elbrus OS wuxuu leeyahay x86_64 [TBD]. Farqiga, dabcan, waa magaca kaliya, laakiin farqigani wuxuu ka dhigayaa ku dhawaad dhammaan baakadaha kaydka deb ee dhinac saddexaad oo aan ku habboonayn Elbrus OS. Isfaham la'aantan dhibka leh ayaa si fudud loo tirtiri karaa: kaliya kala furfur xirmada, sax macluumaadka ku saabsan qaab dhismeedka oo dib isugu soo celi. Sida loo sameeyo
mkdir tmp
dpkg-deb -R original.deb tmp
# edit DEBIAN/postinst
dpkg-deb -b tmp fixed.deb
Dhibaato kale waa ku-tiirsanaanta. Faylasha lagama maarmaanka ah waxay u muuqdaan inay jiraan, laakiin xirmooyinku maaha. Aragtida ayaa ahayd in magacyada baakadaha ay ka duwan yihiin "analoogyada la soo dejiyey". Waxaa laga yaabaa in maktabaduhu si kala duwan loo baakadeeyay. Ma aanan gelin faahfaahin badan, ka saaray ku dhawaad dhammaan ku tiirsanaanta, iyo rakibidda ayaa sii socotay.
Kadibna dhibaatooyin ayaa ka soo baxay furaha adeegga. Qoraalkii /lib/init/vars.sh wuu maqnaa. Sababaha qaar, Elbrus waxay maamushaa la'aanteed, sidaas darteed sidoo kale waanu ka saari doonaa. Marka xigta, waxay ahayd inaan bedelno shaqada soo saarista fariinta: log_daemon_msg iyo log_end_msg shaqooyinka ayaa maqan. Ka dib markii aan ku dhex wareegay faylka /lib/lsb/init-functions file, waxaan helay log_success_msg function - waxay noo fiicnaan doontaa tijaabooyinka. Jid ahaan, gudaha /lib/lsb/init-functions faylka xarriiqda "# Source SuSE`s rc function" waa bilowga faylka [TBD].
Ka dib habaynta adag ee xirmada oo fayl wadata, kaydinta mashiinka oo dhan ee saamiga NFS ayaa si guul leh loo bilaabay. Buurta kaydka ahi sidoo kale waa lagu guulaystay. Marka, waxaan aaminsanahay in lagu taageerayo mishiinka Elbrus PDK, oo la soo dejiyey "sidaas oo kale" iyada oo aan wax waajibaad ah lahayn, Wakiilka Veeam ee Linux waa hubaal ku habboon. Xitaa ka dib dhammaan wax ka beddelka faylka.
Dabcan, qalabka qaybinta Elbrus OS si rasmi ah looma taageero, maadaama aan lagu darin liiska kuwa la taageeray. Intaa waxaa dheer, Wakiilka Veeam ee Linux laguma tijaabin waaxda QA, sidaas darteed kuwa. ma jirto taageero (ugu yaraan wakhtiga daabacaadda maqaalka).
Waxaan rajeynayaa in maqaalku uu faa'iido u yeelan doono kuwa isku dayaya in ay fuliyaan amarka lambar 334 ee Juun 29.06.2017, XNUMX. Aniga adigaa leh... [TBD].
Source: www.habr.com