Ndabere Linux sitere na Veeam na Elbrus OS. Bubata nnọchi ['?' | '.' | '!']

Ndewonu onye obula.
Akụkọ ọhụrụ gbasara Habré Bubata nnọchi na omume. Nkebi nke 1. Nhọrọ и Egwu ahụ emeghị ogologo oge ... ma ọ bụ ka Elbrus OS enweghị ike bụrụ n'efu ahapụghị m enweghị mmasị. Ekpebiri m ịmụ okwu a n'ihe gbasara ọrụ ndabere. Ọzọkwa, na isiokwu a Ekwuru ngwaahịa sọftụwia Veeam, nke pụtara na okwu a nwere ike ịdị mkpa n'ihe gbasara nnọchi mbubata.

Ndabere Linux sitere na Veeam na Elbrus OS. Bubata nnọchi ['?' | '.' | '!']
isi mmalite onyonyo

Nke mbụ, ekpebiri m ibudata Elbrus OS, ma ọ bụ karịa, ọ bụ naanị nkesa dị maka ụlọ ọrụ x86_64, hụ ka o si arụ ọrụ, wee gbalịa ịwụnye Veeam Agent maka Linux na ya. Ọ bụrụ na ịchọrọ ịma ihe si na nke a pụta, biko hụ pusi.

Ya mere, obere digression, ma ọ bụrụ na mmadụ amaghị. "Elbrus" dị otú ahụ njikwa na a kama kpọmkwem iwu usoro. Na mgbakwunye na ya, e nwere Elbrus OS software. Na - megidere nkwenkwe ndị a ma ama - iji rụọ ọrụ Elbrus OS, ọ dịghị mkpa ịnweta sistemụ ngwaike dabere na Elbrus processor. Enwere “PDK “Elbrus” maka x86 - n'ezie, ọ pụtara na ngalaba ọha n'ụdị diski nrụnye. Site n'ụzọ, enwere ihe odide ala ala ala “PDK - ngwa mmepe ikpo okwu, ngwa nrụpụta” - ọmarịcha, nke ahụ pụtara na enwere opekata mpe ebe ahụ.

Obere mgbagha nke mmanye ọzọ. Nke bụ́ eziokwu bụ na otu oge m na-emeso sọftụwia ụlọ, dị ka MSVS na Baguette RTOS. Enwere m ahụmịhe na-arụ ọrụ na akụrụngwa ụlọ, gụnyere ihe nrụpụta sitere na MCST. Ya mere, enwere m ike ịsị na ọrụ zuru oke na enwere ụfọdụ nkọwa na mpaghara a ma m ga-agbalị ka m ghara imetụ ya aka na isiokwu ahụ. Mgbe m chọrọ n'ezie, m ga-etinye mkpado [TBD]. Ya mere, anyị ga-agbalị ime na-enweghị trolling kpọmkwem na banal-asụ ude. N'ikpeazụ, ọ dị mkpa ka a ghọta ụlọ ọrụ nchekwa Russia na ụlọ ọrụ gọọmentị. Nnukwu obodo - obere mmefu ego .. [TBD].

Ogbo efu - budata. Ọ bụ ihe kwesịrị ịrịba ama na ozi ọma na Elbrus OS aghọọla mere ka a resonance, nke mere na nkesa nkesa gbadara. [TBD] Daalụ Yandex na onye injinia chere ịkwaga ya ebe ahụ. Ya mere ọsọ nbudata dị mma.

The akpa ogbo - echichi. M tinye ya na hypervisor nke mbụ dị maka iji n'efu. Enyere m cores abụọ, gigs nke RAM, 32 MB maka vidiyo (a ga-enwe interface eserese, echere m). Disk dị ka ọ dị na mbụ - 32 GB.
M malitere echichi. Ejighị m ntuziaka nwụnye, yabụ enweghị m ike ịza ajụjụ na ya. Ihe nrụnye TUI dị ntakịrị.

Ndabere Linux sitere na Veeam na Elbrus OS. Bubata nnọchi ['?' | '.' | '!']
Ọfọn, nnukwu, anyị nwere ike ime na-enweghị òké.

Ejisiri m windo na-esote na mbọ nke abụọ. Kedu ihe kpatara na ị gaghị ahọrọ ngwaọrụ ndabara sr0 [TBD] mgbe ị na-etinye na diski?
Họrọ isi iyi CD-ROM wee gaa n'ihu.

Ndabere Linux sitere na Veeam na Elbrus OS. Bubata nnọchi ['?' | '.' | '!']

Mgbe m na-ahọrọ mpaghara oge, achọpụtara m na mberede na sistemụ na-eji usoro buut init, ana m arụ ọrụ site na TTY0.

Ndabere Linux sitere na Veeam na Elbrus OS. Bubata nnọchi ['?' | '.' | '!']

OK, ka anyị kewaa "Elbrus" dịka obodo Ndị kwere ekwe ochie[TBD]. Na ụkpụrụ, nke a dị mma: ọ dịghị mkpa ka ị rịọ maka koodu isi iyi ka ị hụ ka usoro nbudata na-arụ ọrụ, ebe ọ bụ na ihe niile edere.

Ndị ọzọ fọrọ nke nta ka ọ bụrụ ihe na-adịghị mkpa: anyị na-etinye ihe niile ma kwenye. N'akụkụ ụzọ, anyị na-achọpụta na a na-eji kernel 3.14.79-13.84. Hmm, Debian 7 nwere 3.2 [TBD].

Ọzọ, họrọ nkebi diski ndabara na... Anyị na-ahụ ịdọ aka ná ntị:

Ndabere Linux sitere na Veeam na Elbrus OS. Bubata nnọchi ['?' | '.' | '!']

Hmm, n'ụzọ ụfọdụ nkewa akpaka anabataghị nke ọma na diski gig 32. Agbanweghị m diski ahụ; Emechara m ọchịchọ ahụ site na nkebi diski akwụkwọ ntuziaka na ụdị "niile-in-one". Ekwesịrị m ịwụnye ext3, ebe / buut enweghị ike ịdị na ext4.
Sistemu bịara n'enweghị ihe ọ bụla.

Nke abụọ - chọọ ụzọ ọzọ.
Mgbe m nwetasịrị ihe dị na diski nke abụọ, achọpụtara m na nke a bụ ebe nchekwa na mgbakwunye. na ngwugwu. Na ilele /etc/apt/sources.list, achọpụtara m na ọ dị mkpa ka etinye ya na /mnt/cdrom. Mana ahụghị m /etc/os-release. Mana enwere /etc/mcst-ụdị nwere ọdịnaya 3.0-rc36. 3.0 nwere ike ịbụ ụdị - ọ dị ka ọ dabara, mana rc36? N'ozuzu, ngwanrọ nke ndị ọzọ agaghị enwe ike ịmata nkesa a n'ụzọ oge gboo.

Na mgbọrọgwụ nkebi, akwụkwọ ndekọ / mcst na-ejide anya m, ma n'ebe ahụ, na obi na-ada mbà, achọpụtara m / mcst/backup. Ya bụ, e nwere ngwá ọrụ ndabere, ma etinyere ya n'ime usoro ahụ! "Ọ dị mma," ka m chere, "Ka anyị hụ ka nke a si arụ ọrụ!"

Ọ tụgharịrị na enwere 4Kb bash script /mcst/bin/ndabere na-enye iṅomi faịlụ. Site na ndabara - gaa na /mcst/ndabere ndabere. Na koodu isi iyi m tụrụ anya ịhụ iwu rsync, mana ọ bụghị na nhazi ndabara. Edemede ahụ na-eṅomi faịlụ naanị. Iwu ahụ dị ka nke a:

cp -rpdx <file backup> <file>

Faịlụ niile /mcst/bin/backup dị ebe aM na-adọ gị aka ná ntị ozugbo na naanị edemede a ezughị iji ghọta nke ọma. Ọ na-ewepụ ọrụ site na /mcst/bin/source, nke bụ ihe dị ka ọba akwụkwọ nke ọrụ. Etinyeghị m ya (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

Agbanyeghị, ma eleghị anya, aghọtaghị m ihe? Ma eleghị anya, mmadụ nwere ike ịkọwa na nkwupụta: kedu ka edemede a si eme ka ndabere data dị mma na nke a pụrụ ịdabere na ya? [TBD]

rsync, n'ụzọ, gụnyere na mgbakwunye. ebe nchekwa. Ụdị 3.1.3. Echere m na iji rsync ka bụ ihe ọzọ dị mma na /mcst/bin/ndabere ngwa.

Ọzọ, ekpebiri m itinye nke ọhụrụ Veeam Agent maka Linux. Mmadụ ga-ajụ: "Gịnị ka Veeam na nnọchi mbubata nwere metụtara ya?" Ee, ọ bụghị na ndekọ, mana FSTEC kwadoro ya, nke pụtara na ọ bụrụ na enweghị ihe ọzọ enwere ike iji ya. Na-emefu nkeji iri na ise na ụzọ ọzọ si ndekọ, Enwere m ike ịchọta njikọ 3 maka okwu ahụ bụ "ndabere" (ọ nweghị ihe metụtara ajụjụ m maka okwu ahụ bụ "dokwa"). Emebeghị m nyocha miri emi nke mmemme ndị a, yabụ agaghị m anwa ikpebi etu ha si dị mma maka ịkwado igwe na-agba Linux. Onye ọ bụla chọrọ ya ga-ewepụta nkwubi okwu nke ya ma kesaa ya na nkọwa.

Nkeji atọ - ntinye nke Veeam Agent maka Linux.
Yabụ, Veeam Agent maka Linux nwere ngwugwu abụọ: veeamsnap kernel modul (n'agbanyeghị, isi mmalite ebe a) yana koodu oghere onye ọrụ n'ụdị ngwugwu veeam.

Enwere otu obere nsogbu na ịwụnye modul kernel - ngwugwu dkms efu. Nke a bụ ọrụ na-enye gị ohere ịmepụta modul kernel site na isi iyi. Dịka iwu, ọ dị na nkesa ụgwọ niile. Ekwesịrị m ibudata ya na ebe nchekwa ego ndị ọzọ. Otu ihe mere m obi ụtọ bụ na ngwugwu anaghị adabere na ụkpụrụ ụlọ, ya mere ọ dabara dị ka onye obodo. Kedu ihe kpatara na etinyeghị ya na ndepụta ngwugwu dị, ma ọ bụ kama emebebeghị [TBD]? Ikekwe a na-eche na ọ nweghị onye kwesịrị ịrụ ma rụọ modul kernel ọ bụla na-abụghị MCST. N'ezie enwere ọdịiche ebe a - ebe ọ bụ na e nwere linux-headers. Ya bụ, modul, ma ọ bụrụ na achọrọ, enwere ike iji aka chịkọta ya wee malite edemede mgbe igwe malitere. Echere m na ị gaghị atụ anya mmelite ugboro ugboro site na MCST [TBD].

"Ọ dị mma, arụnyere modul ahụ - akụkụ kacha sie ike agwụla," echere m ... ngwugwu veeam maka ebe nchekwa ego bụ maka amd64 ikpo okwu, na Elbrus OS nwere usoro x86_64 [TBD]. Ihe dị iche, n'ezie, bụ naanị n'aha, mana ọdịiche a na-eme ka ihe fọrọ nke nta ka ọ bụrụ nchịkọta niile sitere na ebe nchekwa ego ndị ọzọ na-ekwekọghị na Elbrus OS. Enwere ike iwepụ nghọtahie a na-akpasu iwe n'ụzọ dị mfe: naanị ịkwasa ngwugwu ahụ, dozie ozi gbasara ihe owuwu ahụ ma tinyeghachi ya ọnụ. Otu esi eme ya Googled ya ozugbo.

mkdir tmp
dpkg-deb -R original.deb tmp
# edit DEBIAN/postinst
dpkg-deb -b tmp fixed.deb

Nsogbu ọzọ bụ ịdabere. Faịlụ ndị dị mkpa dị ka ọ dị, mana ngwugwu adịghị. Echiche ahụ bụ na aha ngwugwu ahụ dị iche na "analọgụ ebubata" ha. Ikekwe, a na-achịkọta ọba akwụkwọ ndị ahụ n'ụzọ dị iche. Anaghị m abanye n'ime oke nkọwa, wepụ ihe fọrọ nke nta ka ọ bụrụ ihe niile dabere, na nrụnye gara n'ihu.

Mgbe ahụ nsogbu bilitere na koodu mmalite ọrụ. Edemede /lib/init/vars.sh na-efu. Maka ihe ụfọdụ, Elbrus na-achịkwa na-enweghị ya, yabụ anyị ga-ewepụ ya. Ọzọ, anyị ga-eji dochie ọrụ mmepụta ozi: log_daemon_msg na log_end_msg ọrụ na-efu. Mgbe agbachara gburugburu na faịlụ /lib/lsb/init-functions, ahụrụ m ọrụ log_success_msg - ọ ga-adịrị anyị mma maka nnwale. Site n'ụzọ, na /lib/lsb/init-functions faịlụ ahịrị "# Source SuSE`s rc function" dị na mmalite nke faịlụ [TBD].

Mgbe nhazi ihe siri ike nke ngwugwu ahụ na faịlụ, a na-ewepụta nkwado ndabere igwe dum na òkè NFS nke ọma. Ugwu ndabere ahụ nwekwara ihe ịga nke ọma. Yabụ, ekwenyere m na maka ịkwado igwe na Elbrus PDK, ebudatara “dị ka nke ahụ” na-enweghị ọrụ ọ bụla, Veeam Agent maka Linux dabara adaba. Ọbụna mgbe niile mgbanwe na faịlụ.

N'ezie, anaghị akwado ngwa nkesa Elbrus OS, ebe ọ bụ na etinyeghị ya na ndepụta ndị akwadoro. Na mgbakwunye, Veeam Agent maka Linux anwaleghị ya site na ngalaba QA, yabụ ndị ahụ. enweghị nkwado (opekata mpe n'oge mbipụta nke isiokwu).

Enwere m olileanya na isiokwu ahụ ga-aba uru nye ndị na-agbalị imejuputa iwu nke 334 nke June 29.06.2017, XNUMX. Nke m diri gi... [TBD].

isi: www.habr.com

Tinye a comment