Hi everyone
Resinte artikels oer Habré
Alderearst besleat ik it Elbrus OS te downloaden, of leaver, allinich de beskikbere distribúsje foar de x86_64-arsjitektuer, sjoch hoe't it wurket, en besykje Veeam Agent foar Linux derop te ynstallearjen. As jo witte wolle wat der út kaam, sjoch dan kat.
Dus, in lytse ôfwiking, foar it gefal dat immen it net wit. "Elbrus" is sa
In oare lytse twongen retreat. It feit is dat ik ienris mei ynlânske software behannele, lykas MSVS en Baguette RTOS. Ik hie ûnderfining mei wurkjen mei ynlânske komponinten, ynklusyf in prosessor út MCST. Dêrom kin ik mei folsleine ferantwurdlikens sizze dat d'r in bepaalde spesifisiteit is yn dit gebiet en it is krekt dit dat ik sil besykje net yn it artikel te berikken. As ik echt wol, set ik de tag [TBD]. Sa sille wy besykje te dwaan sûnder gewoane trolling en banale kreunen. Oan 'e ein moatte de Russyske definsje-yndustry en oerheidsynstânsjes begrepen wurde. Grut lân - lyts budzjet .. [TBD].
Nul poadium - download. It is opmerklik dat it nijs dat it Elbrus OS beskikber is in resonânsje feroarsake, sa folle dat de distribúsjetsjinner del gie. [TBD] Mei tank oan Yandex en de yngenieur dy't tocht om it dêr te ferpleatsen. Dat de downloadsnelheid is goed.
De earste poadium - ynstallaasje. Ik haw it ynstalleare op 'e earste hypervisor dy't beskikber wie foar fergees gebrûk. Ik haw twa kearnen tawiisd, in pear optredens fan RAM, 32 MB foar fideo (d'r sil in grafyske ynterface wêze, tocht ik). De skiif is as gewoanlik - 32 GB.
Ik begon de ynstallaasje. Ik haw de ynstallaasje-ynstruksjes net brûkt, dus ik kin der gjin kommentaar oer jaan. De TUI-ynstallaasje-ynterface is slim minimalistysk.
No, geweldich, wy kinne sûnder in mûs.
Ik slagge it folgjende finster by de twadde poging. Wêrom net selektearje it standert apparaat sr0 [TBD] by it ynstallearjen fan skiif?
Selektearje de CD-ROM boarne en gean troch.
By it selektearjen fan de tiidsône, realisearre ik ynienen dat it systeem it init-bootproses brûkt, en ik wurkje fan TTY0.
OK, dan litte wy "Elbrus" klassifisearje as in mienskip
De rest is hast ûnbelangryk: wy sette alles en iens. Oan 'e wei fine wy út dat de kernel 3.14.79-13.84 brûkt wurdt. Hmm, Debian 7 hie 3.2 [TBD].
Selektearje dêrnei de standert skiif partitioning en ... Wy sjogge in warskôging:
Hmm, op ien of oare manier koe de automatyske partitionearring net goed omgean mei in 32 gig-skiif. Ik haw de skiif net feroare; Ik foltôge de syktocht mei manuele skiifdieling yn 'e "all-in-one" styl. Ik moast ext3 ynstallearje, om't /boot net yn ext4 koe wêze.
It systeem kaam sûnder ynsidint op.
De twadde poadium - sykje nei alternativen.
Nei it rommeljen fan 'e ynhâld fan' e twadde skiif, realisearre ik dat dit in repository is mei ekstra. yn pakketten. En sjoch op /etc/apt/sources.list, ik realisearre dat it moat wurde monteard yn /mnt/cdrom. Mar ik fûn /etc/os-release net. Mar d'r is /etc/mcst-ferzje mei de ynhâld 3.0-rc36. 3.0 is wierskynlik de ferzje - it liket te passen, mar rc36? Yn 't algemien sil software fan tredden nei alle gedachten dizze ferdieling net op' e klassike manier kinne werkenne.
Yn 'e root-partysje falt de map /mcst myn each, en dêr, mei in sinkend hert, ûntduts ik /mcst/backup. Dat is, d'r is in reservekopy-ark, en it is ynboud yn it systeem! "Geweldich," tocht ik, "lit ús sjen hoe't dit wurket!"
It die bliken dat d'r in 4Kb bash-skript /mcst/bin/backup is dat it kopiearjen fan bestân leveret. Standert - nei de map /mcst/backup. Yn 'e boarnekoade ferwachte ik it rsync-kommando te sjen, mar it is net yn' e standertkonfiguraasje. It skript kopiearret gewoan bestannen. It kommando sjocht der sa út:
cp -rpdx <file backup> <file>
De hiele triem /mcst/bin/backup is hjirIk warskôgje jo daliks dat dit skript allinich net genôch is om folslein te begripen. It lûkt funksjes út /mcst/bin/source, dat is wat as in bibleteek fan funksjes. Ik haw it net opnommen (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
Hoewol, miskien haw ik wat net begrepen? Miskien kin immen yn 'e kommentaren útlizze: hoe soarget dit skript foar feilige en betroubere backup fan gegevens? [TBD]
rsync, trouwens, is opnommen yn 'e add-on. repositories. Ferzje 3.1.3. Ik tink dat it brûken fan rsync noch altyd in better alternatyf is foar de /mcst/bin/backup-applikaasje.
Dêrnei besleat ik in frisse te setten Veeam Agent foar Linux. Immen sil freegje: "Wat hat Veeam en ymportferfanging dêrmei te krijen?" Ja, it is net yn it register, mar it is sertifisearre troch FSTEC, wat betsjut dat by it ûntbrekken fan alternativen it kin wurde brûkt. Fyftjin minuten besteegje oan alternativen fan
Stage Three - ynstallaasje fan Veeam Agent foar Linux.
Dus, Veeam Agent foar Linux bestiet út twa pakketten: de veeamsnap kernel module (troch de manier,
D'r wie ien lyts probleem mei it ynstallearjen fan de kernelmodule - it ûntbrekkende dkms-pakket. Dit is in tsjinst wêrmei jo kernelmodules kinne bouwe fan boarne. As regel is it beskikber op alle deb-distribúsjes. Ik moast it downloade fan in deb-repository fan tredden. Ien ding dat my bliid makke is dat it pakket net ôfhinklik is fan 'e arsjitektuer, dus it past as in lânseigen. Wêrom wie it net opnommen yn 'e list mei beskikbere pakketten, of leaver net ûntwikkele [TBD]? Miskien wurdt oannommen dat gjinien gjin net-MCST kernel modules moat bouwe en útfiere. D'r is hjir echt in diskrepânsje - om't d'r linux-headers binne. Dat is, de module, as winske, kin wurde gearstald mei de hân en lansearre troch in skript as de masine begjint. Ik tink dat jo net moatte ferwachtsje faak updates fan MCST [TBD].
"OK, de module is ynstalleare - it hurdste diel is foarby," tocht ik ... It veeam-pakket foar it deb-repository is foar it amd64-platfoarm, en it Elbrus OS hat in x86_64 [TBD]-platfoarm. It ferskil is fansels allinich yn 'e namme, mar dit ferskil makket hast alle pakketten fan deb-repositories fan tredden ynkompatibel mei it Elbrus OS. Dit ferfelende misferstân kin gewoan elimineare wurde: gewoan it pakket demontearje, de ynformaasje oer de arsjitektuer korrigearje en it wer byinoar sette. Hoe it te dwaan
mkdir tmp
dpkg-deb -R original.deb tmp
# edit DEBIAN/postinst
dpkg-deb -b tmp fixed.deb
In oar probleem is ôfhinklikens. De nedige triemmen lykje der te wêzen, mar de pakketten binne net. De yndruk wie dat de nammen fan 'e pakketten ferskille fan har "ymporteare analogen". Miskien binne de bibleteken oars ynpakt. Ik gie net yn te folle detail, fuorthelle hast alle ôfhinklikens, en de ynstallaasje gie foarút.
Doe ûntstiene problemen mei de startkoade fan 'e tsjinst. It skript /lib/init/vars.sh ûntbrekt. Om ien of oare reden slagget Elbrus sûnder, dat wy sille it ek fuortsmite. Dêrnei moasten wy de berjochtútfierfunksje ferfange: de funksjes log_daemon_msg en log_end_msg ûntbrekken. Nei it rommeljen yn it /lib/lsb/init-functions-bestân, fûn ik de funksje log_success_msg - it sil goed wêze foar ús foar eksperiminten. Trouwens, yn it /lib/lsb/init-functions-bestân stiet de rigel "# Source SuSE's rc-funksjes" oan it begjin fan it [TBD]-bestân.
Nei sa'n rûge ferwurking fan it pakket mei in bestân, waard de reservekopy fan 'e hiele masine op it NFS-diel mei súkses lansearre. De reservekopy mount wie ek suksesfol. Dat, ik leau dat Veeam Agent foar Linux perfoarst geskikt is foar it meitsjen fan in reservekopy fan in masine mei de Elbrus PDK, "krekt sa" downloade sûnder ferplichtingen. Ek nei alle oanpassings mei in triem.
Fansels wurdt de Elbrus OS-distribúsjekit net formeel stipe, om't it net is opnommen yn 'e list mei stipe. Derneist waard Veeam Agent foar Linux der net op testen troch de QA-ôfdieling, dus dy. der is gjin stipe (op syn minst op it momint fan publikaasje fan it artikel).
Ik hoopje dat it artikel nuttich wêze sil foar dyjingen dy't besykje bestelling nr. 334 fan 29.06.2017 juny XNUMX út te fieren. Myn oan dy ... [TBD].
Boarne: www.habr.com