Mo ki gbogbo yin.
Awọn nkan aipẹ lori Habré
Ni akọkọ, Mo pinnu lati ṣe igbasilẹ Elbrus OS, tabi dipo, pinpin nikan ti o wa fun faaji x86_64, wo bii o ṣe n ṣiṣẹ, ati gbiyanju lati fi Agent Veeam fun Linux sori rẹ. Ti o ba fẹ mọ ohun ti o wa ninu eyi, jọwọ wo ologbo.
Nitorinaa, digression kekere kan, ti ẹnikan ko ba mọ. "Elbrus" jẹ bẹ
Miiran kekere fi agbara mu padasehin. Otitọ ni pe Mo ni ẹẹkan ṣe pẹlu sọfitiwia ile, bii MSVS ati Baguette RTOS. Mo ni iriri ṣiṣẹ pẹlu abele irinše, pẹlu a isise lati MCST. Nitorinaa, Mo le sọ pẹlu ojuse kikun pe pato kan wa ni agbegbe yii ati pe Emi yoo gbiyanju lati ma fi ọwọ kan rẹ ninu nkan naa. Nigbati mo ba fẹ gaan, Emi yoo fi aami si [TBD]. Nitorinaa a yoo gbiyanju lati ṣe laisi trolling taara ati ẹkun banal. Ni ipari, ile-iṣẹ aabo Russia ati awọn ile-iṣẹ ijọba nilo lati loye. Ilu nla - isuna kekere .. [TBD].
Ipele odo - gbaa lati ayelujara. O jẹ akiyesi pe awọn iroyin ti Elbrus OS ti di wa nfa ariwo kan, tobẹẹ ti olupin pinpin lọ silẹ. [TBD] Ṣeun si Yandex ati ẹlẹrọ ti o ronu gbigbe sibẹ. Nitorina iyara igbasilẹ naa dara.
Akọkọ ipele - fifi sori. Mo ti fi sori ẹrọ lori akọkọ hypervisor ti o wa fun free lilo. Mo pin awọn ohun kohun meji, awọn gigi meji ti Ramu, 32 MB fun fidio (ni wiwo ayaworan kan yoo wa, Mo ro). Disiki naa jẹ bi igbagbogbo - 32 GB.
Mo bẹrẹ fifi sori ẹrọ. Emi ko lo awọn ilana fifi sori ẹrọ, nitorina Emi ko le sọ asọye lori rẹ. Ni wiwo fifi sori TUI jẹ minimalistic pupọ.
O dara, nla, a le ṣe laisi asin kan.
Mo ti ṣakoso awọn tókàn window lori keji gbiyanju. Kilode ti o ko yan ẹrọ aiyipada sr0 [TBD] nigba fifi sori ẹrọ lati disk?
Yan orisun CD-ROM ki o tẹsiwaju.
Lakoko ti o yan agbegbe aago, Mo lojiji rii pe eto naa nlo ilana bata init, ati pe Mo n ṣiṣẹ lati TTY0.
O dara, lẹhinna jẹ ki a ṣe lẹtọ "Elbrus" gẹgẹbi agbegbe kan
Awọn iyokù jẹ fere ko ṣe pataki: a fi ohun gbogbo ati gba. Ni ọna, a rii pe ekuro ti lo 3.14.79-13.84. Hmm, Debian 7 ní 3.2 [TBD].
Nigbamii, yan ipin disiki aiyipada ati... A rii ikilọ kan:
Unh, bakan pipin aifọwọyi ko farada daradara pẹlu disiki gigi 32 kan. Emi ko yi disk pada; Mo pari ibeere naa pẹlu pipin disiki afọwọṣe ni aṣa “gbogbo-ni-ọkan”. Mo ni lati fi sori ẹrọ ext3, niwon / bata ko le wa ni ext4.
Eto naa wa laisi iṣẹlẹ.
Ipele keji - wa fun yiyan.
Lẹhin rummaging nipasẹ awọn akoonu ti disk keji, Mo rii pe eyi jẹ ibi ipamọ pẹlu afikun. ninu awọn idii. Ati wiwo /etc/apt/sources.list, Mo rii pe o nilo lati gbe soke ni /mnt/cdrom. Sugbon Emi ko ri /etc/os-release. Ṣugbọn o wa /etc/mcst-version pẹlu awọn akoonu 3.0-rc36. 3.0 le jẹ ẹya - o dabi pe o baamu, ṣugbọn rc36? Ni gbogbogbo, sọfitiwia ẹni-kẹta yoo ṣeese julọ kii yoo ni anfani lati ṣe idanimọ pinpin yii ni ọna kilasika.
Ni awọn root ipin, awọn / mcst liana mu oju mi, ati nibẹ, pẹlu kan rì ọkàn, Mo ti se awari / mcst/afẹyinti. Iyẹn ni, ọpa afẹyinti wa, ati pe o ti kọ sinu eto naa! “Nla,” Mo ro, “Jẹ ki a wo bi eyi ṣe nṣiṣẹ!”
O wa jade pe iwe afọwọkọ bash 4Kb wa / mcst / bin / afẹyinti ti o pese didaakọ faili. Nipa aiyipada - si /mcst/itọsọna afẹyinti. Ninu koodu orisun Mo nireti lati rii aṣẹ rsync, ṣugbọn kii ṣe ni iṣeto ni aiyipada. Awọn iwe afọwọkọ nìkan daakọ awọn faili. Aṣẹ naa dabi iru eyi:
cp -rpdx <file backup> <file>
Gbogbo faili /mcst/bin/afẹyinti wa nibiMo kilọ fun ọ lẹsẹkẹsẹ pe iwe afọwọkọ yii nikan ko to lati loye ni kikun. O fa awọn iṣẹ lati / mcst/bin/orisun, eyiti o jẹ nkan bi ile-ikawe ti awọn iṣẹ. Emi ko pẹlu rẹ (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
Botilẹjẹpe, boya Emi ko loye nkankan? Boya ẹnikan le ṣe alaye ninu awọn asọye: bawo ni iwe afọwọkọ yii ṣe rii daju ailewu ati afẹyinti data ti o gbẹkẹle? [TBD]
rsync, nipasẹ ọna, wa ninu afikun. awọn ibi ipamọ. Ẹya 3.1.3. Mo ro pe lilo rsync tun jẹ yiyan ti o dara julọ si ohun elo / mcst/bin/afẹyinti.
Nigbamii, Mo pinnu lati fi tuntun kan Aṣoju Veeam fun Linux. Ẹnikan yoo beere: “Kini Veeam ati aropo agbewọle ni lati ṣe pẹlu rẹ?” Bẹẹni, ko si ninu iforukọsilẹ, ṣugbọn o jẹ ifọwọsi nipasẹ FSTEC, eyiti o tumọ si pe laisi awọn omiiran o le ṣee lo. Lilo iṣẹju mẹdogun lori yiyan lati
Ipele mẹta - fifi sori ẹrọ ti Aṣoju Veeam fun Linux.
Nitorinaa, Aṣoju Veeam fun Linux ni awọn idii meji: module ekuro veeamsnap (nipasẹ ọna,
Iṣoro kekere kan wa pẹlu fifi sori ẹrọ module ekuro - package dkms ti o padanu. Eyi jẹ iṣẹ kan ti o fun ọ laaye lati kọ awọn modulu ekuro lati orisun. Bi ofin, o wa lori gbogbo awọn pinpin deb. Mo ni lati ṣe igbasilẹ rẹ lati ibi ipamọ deb ẹni-kẹta kan. Ohun kan ti o mu inu mi dun ni pe package ko dale lori faaji, nitorinaa o baamu bii ti abinibi. Kilode ti a ko fi sii ninu atokọ ti awọn akojọpọ ti o wa, tabi dipo, ko ni idagbasoke [TBD]? Boya o ti ro pe ko si ẹnikan ti o yẹ ki o kọ ati ṣiṣẹ eyikeyi awọn modulu ekuro ti kii-MCST. Iyatọ kan wa looto nibi - nitori awọn akọle-linux wa. Iyẹn ni, module, ti o ba fẹ, le ṣe apejọ nipasẹ ọwọ ati ifilọlẹ nipasẹ iwe afọwọkọ nigbati ẹrọ ba bẹrẹ. Mo ro pe o yẹ ki o ko reti awọn imudojuiwọn loorekoore lati MCST [TBD].
“O DARA, module ti fi sii - apakan ti o nira julọ ti pari,” Mo ro… package veeam fun ibi ipamọ deb jẹ fun pẹpẹ amd64, ati pe Elbrus OS ni pẹpẹ x86_64 [TBD]. Iyatọ naa, nitorinaa, jẹ nikan ni orukọ, ṣugbọn iyatọ yii jẹ ki gbogbo awọn idii lati awọn ibi ipamọ deb ẹni-kẹta ko ni ibamu pẹlu Elbrus OS. Aigbọye didanubi yii le jẹ imukuro ni irọrun: kan ṣajọpọ package, ṣatunṣe alaye nipa faaji ki o fi sii papọ. Bawo ni lati ṣe
mkdir tmp
dpkg-deb -R original.deb tmp
# edit DEBIAN/postinst
dpkg-deb -b tmp fixed.deb
Iṣoro miiran jẹ awọn igbẹkẹle. Awọn faili pataki dabi pe o wa nibẹ, ṣugbọn awọn idii ko si. Imọran naa ni pe awọn orukọ ti awọn idii yatọ si “awọn analogues ti a gbe wọle”. Boya awọn ile-ikawe ti wa ni akojọpọ oriṣiriṣi. Emi ko lọ sinu awọn alaye pupọ, yọkuro fere gbogbo awọn igbẹkẹle, ati fifi sori ẹrọ ti lọ siwaju.
Lẹhinna awọn iṣoro farahan pẹlu koodu ibẹrẹ iṣẹ. Iwe afọwọkọ naa /lib/init/vars.sh nsọnu. Fun idi kan, Elbrus ṣakoso laisi rẹ, nitorinaa a yoo yọ kuro. Nigbamii, a ni lati rọpo iṣẹ iṣelọpọ ifiranṣẹ: log_daemon_msg ati awọn iṣẹ log_end_msg ti nsọnu. Lẹhin rummaging ni ayika ninu faili /lib/lsb/init-functions, Mo rii iṣẹ log_success_msg - yoo dara fun wa fun awọn idanwo. Nipa ọna, ninu faili /lib/lsb/init-functions faili laini “# Source SuSE`s rc function” wa ni ibẹrẹ ti faili [TBD].
Lẹhin iru sisẹ inira ti package pẹlu faili kan, gbogbo afẹyinti ẹrọ lori ipin NFS ti ṣe ifilọlẹ ni aṣeyọri. Oke afẹyinti tun jẹ aṣeyọri. Nitorinaa, Mo gbagbọ pe fun atilẹyin ẹrọ kan pẹlu Elbrus PDK, ṣe igbasilẹ “gẹgẹbi iyẹn” laisi awọn adehun eyikeyi, Aṣoju Veeam fun Linux ni pato dara. Paapaa lẹhin gbogbo awọn iyipada pẹlu faili kan.
Nitoribẹẹ, ohun elo pinpin Elbrus OS ko ni atilẹyin ni deede, nitori ko si ninu atokọ ti awọn atilẹyin. Ni afikun, Aṣoju Veeam fun Linux ko ni idanwo lori rẹ nipasẹ ẹka QA, nitorinaa awọn. ko si atilẹyin (o kere ju ni akoko ti a gbejade nkan naa).
Mo nireti pe nkan naa yoo wulo fun awọn ti o ngbiyanju lati ṣe aṣẹ No.. 334 ti Oṣu Karun ọjọ 29.06.2017, Ọdun XNUMX. temi si yin... [TBD].
orisun: www.habr.com