Afẹyinti Linux lati Veeam lori Elbrus OS. Ṣe agbewọle aropo ['?' | '.' | '!']

Mo ki gbogbo yin.
Awọn nkan aipẹ lori Habré Gbe wọle aropo ni asa. Apá 1. Awọn aṣayan и Orin naa ko ṣiṣẹ fun pipẹ… tabi bii Elbrus OS ko ṣe di ọfẹ ko fi mi silẹ alainaani. Mo pinnu lati ṣe iwadi ọrọ yii ni ipo ti iṣẹ-ṣiṣe afẹyinti. Pẹlupẹlu, ni Arokọ yi Awọn ọja sọfitiwia Veeam mẹnuba, eyiti o tumọ si pe ọran naa le jẹ pataki ni pataki ni ipo ti ifidipo agbewọle.

Afẹyinti Linux lati Veeam lori Elbrus OS. Ṣe agbewọle aropo ['?' | '.' | '!']
orisun aworan atilẹba

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ẹ Sipiyu pẹlu kan dipo pato pipaṣẹ eto. Ni afikun si rẹ, Elbrus OS software wa. Ati pe - ni ilodi si igbagbọ olokiki - lati ṣiṣẹ Elbrus OS, ko ṣe pataki lati ni eto ohun elo kan ti o da lori ero isise Elbrus. “PDK “Elbrus” wa fun x86 - ni otitọ, o han ni agbegbe gbangba ni irisi disiki fifi sori ẹrọ. Nipa ọna, akọsilẹ ẹsẹ kan wa “PDK - ohun elo idagbasoke Syeed, ohun elo idagbasoke” - nla, iyẹn tumọ si pe o kere ju alakojo kan wa nibẹ.

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ọ.

Afẹyinti Linux lati Veeam lori Elbrus OS. Ṣe agbewọle aropo ['?' | '.' | '!']
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.

Afẹyinti Linux lati Veeam lori Elbrus OS. Ṣe agbewọle aropo ['?' | '.' | '!']

Lakoko ti o yan agbegbe aago, Mo lojiji rii pe eto naa nlo ilana bata init, ati pe Mo n ṣiṣẹ lati TTY0.

Afẹyinti Linux lati Veeam lori Elbrus OS. Ṣe agbewọle aropo ['?' | '.' | '!']

O dara, lẹhinna jẹ ki a ṣe lẹtọ "Elbrus" gẹgẹbi agbegbe kan Awon onigbagbo agba[TBD]. Ni opo, eyi dara: iwọ ko nilo lati beere fun koodu orisun lati wo bi ilana igbasilẹ naa ṣe n ṣiṣẹ, niwon ohun gbogbo ti jẹ iwe afọwọkọ.

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:

Afẹyinti Linux lati Veeam lori Elbrus OS. Ṣe agbewọle aropo ['?' | '.' | '!']

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 iforukọsilẹ, Mo ni anfani lati wa awọn ọna asopọ 3 fun ọrọ "afẹyinti" (ko si ọkan ti o ni ibatan si ibeere mi fun ọrọ naa "ifipamọ"). Emi ko ṣe itupalẹ jinlẹ ti awọn eto wọnyi, nitorinaa Emi kii yoo gbiyanju lati ṣe idajọ bawo ni wọn ṣe dara fun atilẹyin awọn ẹrọ ti n ṣiṣẹ Linux. Ẹnikẹni ti o nilo rẹ yoo fa ipari tirẹ ki o pin ninu awọn asọye.

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, orisun nibi) ati koodu aaye olumulo ohun-ini ni irisi package veeam.

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 Googled o lesekese.

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

Fi ọrọìwòye kun