Ajiyayyen Linux daga Veeam akan Elbrus OS. Shigo da canji ['?' | '. | '!']

Sannu kowa da kowa.
Labaran baya-bayan nan kan Habré Shigo da canji a aikace. Sashe na 1. Zaɓuɓɓuka и Kiɗa ba ta daɗe ba... ko kuma yadda Elbrus OS bai taɓa zama 'yanci ba bai bar ni ba. Na yanke shawarar yin nazarin wannan batu a cikin mahallin aikin madadin. Haka kuma, in wannan labarin An ambaci samfuran software na Veeam, wanda ke nufin cewa batun zai iya dacewa da shi musamman a yanayin sauya shigo da kaya.

Ajiyayyen Linux daga Veeam akan Elbrus OS. Shigo da canji ['?' | '. | '!']
tushen hoton asali

Da farko, na yanke shawarar zazzage Elbrus OS, ko kuma a maimakon haka, kawai rarrabawar da ake samu don gine-ginen x86_64, duba yadda yake aiki, da ƙoƙarin shigar da Agent na Linux akan sa. Idan kana son sanin abin da ya fito daga wannan, don Allah duba cat.

Don haka, ƙaramin digression, idan wani bai sani ba. "Elbrus" haka yake processor tare da takamaiman tsarin umarni. Baya ga shi, akwai manhajar Elbrus OS. Kuma - akasin sanannen imani - don sarrafa Elbrus OS, ba lallai ba ne a sami tsarin kayan masarufi dangane da na'ura mai sarrafa Elbrus. Akwai "PDK "Elbrus" na x86 - a gaskiya, ya bayyana a cikin jama'a yankin a cikin nau'i na shigarwa faifai. Af, akwai alamar rubutu "PDK - kayan haɓaka dandamali, kayan haɓakawa" - mai girma, wannan yana nufin akwai aƙalla mai tarawa a can.

Wani karamin ja da baya tilas yayi. Gaskiyar ita ce, na taɓa yin hulɗa da software na gida, kamar MSVS da Baguette RTOS. Ina da gogewa wajen aiki tare da kayan aikin gida, gami da na'ura mai sarrafawa daga MCST. Don haka, zan iya cewa tare da cikakken alhakin cewa akwai takamaiman takamaiman yanki a wannan yanki kuma zan yi ƙoƙarin kada in taɓa shi a cikin labarin. Lokacin da nake so sosai, zan sanya alamar [TBD]. Don haka za mu yi ƙoƙari mu yi ba tare da trolling da banal nishi ba. A ƙarshe, ana buƙatar fahimtar masana'antar tsaron Rasha da hukumomin gwamnati. Babban kasa - ƙananan kasafin kuɗi.. [TBD].

Matakin sifili - zazzagewa. Abin lura ne cewa labarai cewa Elbrus OS ya samu ya haifar da resonance, har sabar rarraba ya ragu. [TBD] Godiya ga Yandex da injiniyan da ya yi tunanin motsa shi a can. Don haka saurin saukewa yana da kyau.

Mataki na farko - shigarwa. Na shigar dashi akan farkon hypervisor wanda akwai don amfani kyauta. Na ware nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan RAM guda biyu, 32 MB don bidiyo (za a sami hanyar sadarwa ta hoto, na yi tunani). Disk kamar yadda aka saba - 32 GB.
Na fara shigarwa. Ban yi amfani da umarnin shigarwa ba, don haka ba zan iya yin sharhi game da shi ba. Tsarin shigarwa na TUI yana da ƙarancin ƙarancin ƙima.

Ajiyayyen Linux daga Veeam akan Elbrus OS. Shigo da canji ['?' | '. | '!']
To, mai girma, za mu iya yin ba tare da linzamin kwamfuta ba.

Na gudanar da taga na gaba akan gwaji na biyu. Me yasa baza'a zaɓi tsohuwar na'urar sr0 [TBD] lokacin shigarwa daga faifai ba?
Zaɓi tushen CD-ROM kuma ci gaba.

Ajiyayyen Linux daga Veeam akan Elbrus OS. Shigo da canji ['?' | '. | '!']

Yayin zabar yankin lokaci, kwatsam na gane cewa tsarin yana amfani da tsarin init boot, kuma ina aiki daga TTY0.

Ajiyayyen Linux daga Veeam akan Elbrus OS. Shigo da canji ['?' | '. | '!']

Ok, to bari mu rarraba "Elbrus" a matsayin al'umma Tsofaffin Muminai[TBD]. A ka'ida, wannan yana da kyau: ba kwa buƙatar neman lambar tushe don ganin yadda tsarin saukewa ke aiki, tun da duk abin da aka rubuta.

Sauran kusan ba su da mahimmanci: mun sanya komai kuma mun yarda. Tare da hanyar, mun gano cewa ana amfani da kwaya 3.14.79-13.84. Hmm, Debian 7 yana da 3.2 [TBD].

Na gaba, zaɓi tsohowar faifan diski kuma… Muna ganin gargaɗi:

Ajiyayyen Linux daga Veeam akan Elbrus OS. Shigo da canji ['?' | '. | '!']

Hmm, ko ta yaya rabon atomatik bai dace da faifan gig 32 ba. Ban canza faifai ba; Na kammala nema tare da rarraba faifai na hannu a cikin salon “duk-in-one”. Dole ne in shigar da ext3, tunda /boot ba zai iya kasancewa a cikin ext4 ba.
Tsarin ya fito ba tare da wani tashin hankali ba.

Mataki na biyu - bincika madadin.
Bayan rummaging ta cikin abinda ke ciki na faifai na biyu, na gane cewa wannan ma'ajiya ce tare da ƙarin. a cikin kunshin. Kuma duba /etc/apt/sources.list, na gane cewa yana buƙatar a saka shi a /mnt/cdrom. Amma ban sami /etc/os-release ba. Amma akwai /etc/mcst-version tare da abun ciki na 3.0-rc36. 3.0 shine mai yiwuwa sigar - da alama ya dace, amma rc36? Gabaɗaya, software na ɓangare na uku ba za su iya gane wannan rarraba ta hanyar gargajiya ba.

A cikin tushen ɓangaren, directory ɗin /mcst yana kama idona, kuma a can, tare da zuciya mai nutsewa, na gano /mcst/backup. Wato, akwai kayan aiki na ajiya, kuma an gina shi a cikin tsarin! "Mai girma," Na yi tunani, "Bari mu ga yadda wannan ke aiki!"

Ya juya cewa akwai 4Kb bash script /mcst/bin/backup wanda ke ba da kwafin fayil. Ta tsohuwa - zuwa ga /mcst/directory directory. A cikin lambar tushe Ina tsammanin ganin umarnin rsync, amma ba a cikin saitunan tsoho ba. Rubutun yana kwafi fayiloli kawai. Umurnin yayi kama da haka:

cp -rpdx <file backup> <file>

Duk fayil ɗin /mcst/bin/backup yana nanIna gargadin ku nan da nan cewa wannan rubutun kadai bai isa ku fahimta sosai ba. Yana jan ayyuka daga /mcst/bin/source, wanda shine wani abu kamar ɗakin karatu na ayyuka. Ban hada shi ba (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

Ko da yake, watakila ban fahimci wani abu ba? Wataƙila wani zai iya yin bayani a cikin sharhi: ta yaya wannan rubutun ke tabbatar da aminci da amincin bayanan bayanan? [TBD]

rsync, ta hanyar, an haɗa shi a cikin ƙarawa. wuraren ajiya. Shafin 3.1.3. Ina tsammanin yin amfani da rsync har yanzu shine mafi kyawun madadin aikace-aikacen /mcst/bin/ajiyayyen.

Na gaba, na yanke shawarar sanya sabo Veeam Agent don Linux. Wani zai tambaya: "Menene alakar Veeam da shigo da canji?" Haka ne, ba a cikin rajistar ba, amma FSTEC ce ta tabbatar da shi, wanda ke nufin cewa idan babu madadin za a iya amfani da shi. Ana kashe mintuna goma sha biyar akan madadin daga rajista, Na sami damar samun hanyoyin haɗin kai guda 3 don kalmar "ajiyayyen" (babu mai alaƙa da tambayata na kalmar "ajiye"). Ban yi zurfin bincike kan waɗannan shirye-shiryen ba, don haka ba zan yi ƙoƙarin yin hukunci yadda suka dace don tallafawa injinan da ke aiki da Linux ba. Duk wanda yake buƙatar hakan zai zana nasa ƙarshe kuma ya raba shi a cikin sharhi.

Mataki na Uku - shigarwa na Veeam Agent don Linux.
Don haka, Wakilin Veeam na Linux ya ƙunshi fakiti biyu: ƙirar kernel veeamsnap (a hanya, tushen nan) da lambar sararin samaniya ta mai amfani a cikin nau'in fakitin veeam.

Akwai wata ƙaramar matsala tare da shigar da kernel module - kunshin dkms da ya ɓace. Wannan sabis ɗin ne wanda ke ba ku damar gina ƙirar kernel daga tushe. A matsayinka na mai mulki, yana samuwa akan duk rarraba bashi. Dole ne in zazzage shi daga wurin ajiyar kuɗi na ɓangare na uku. Wani abu da ya faranta min rai shine, kunshin bai dogara da gine-gine ba, don haka ya dace kamar na ɗan ƙasa. Me yasa ba a haɗa shi cikin jerin fakitin da ake da su ba, ko kuma, ba a haɓaka [TBD] ba? Wataƙila ana ɗauka cewa babu wanda ya isa ya gina da gudanar da kowane nau'in kwaya wanda ba na MCST ba. Da gaske akwai saɓani a nan - tunda akwai masu rubutun Linux. Wato, tsarin, idan ana so, ana iya haɗa shi da hannu kuma a ƙaddamar da shi ta hanyar rubutun lokacin da injin ya fara. Ina tsammanin bai kamata ku yi tsammanin sabuntawa akai-akai daga MCST [TBD].

"Ok, an shigar da tsarin - ɓangaren mafi wuya ya ƙare," Ina tsammanin... Kunshin veeam don ajiyar kuɗi na amd64 ne, kuma Elbrus OS yana da dandamali na x86_64 [TBD]. Bambanci, ba shakka, yana cikin sunan kawai, amma wannan bambanci yana sa kusan dukkanin fakiti daga wuraren ajiyar kuɗi na ɓangare na uku ba su dace da Elbrus OS ba. Wannan rashin fahimta mai ban haushi za a iya kawar da shi kawai: kawai tarwatsa kunshin, gyara bayanin game da gine-ginen kuma mayar da shi tare. Yadda za a yi Googled shi nan take.

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

Wata matsalar ita ce dogaro. Fayilolin da ake buƙata suna da alama suna can, amma fakitin babu. Ma'anar ita ce sunayen fakitin sun bambanta da "analogin da aka shigo da su". Wataƙila ɗakunan karatu an haɗa su daban. Ban shiga daki-daki da yawa ba, cire kusan duk abin dogaro, kuma shigarwa ya ci gaba.

Sannan matsaloli sun bayyana tare da lambar fara sabis. Rubutun /lib/init/vars.sh ya ɓace. Don wasu dalilai, Elbrus yana sarrafawa ba tare da shi ba, don haka za mu cire shi ma. Bayan haka, dole ne mu maye gurbin aikin fitar da saƙo: ayyukan log_daemon_msg da log_end_msg sun ɓace. Bayan rummaging a cikin /lib/lsb/init-functions fayil, na sami aikin log_success_msg - zai yi mana kyau don gwaji. Af, a cikin /lib/lsb/init-functions fayil layin "# Source SuSE's rc services" yana farkon fayil ɗin [TBD].

Bayan irin wannan mummunan aiki na kunshin tare da fayil, an yi nasarar ƙaddamar da madadin injin gabaɗaya akan rabon NFS. Dutsen madadin shima yayi nasara. Don haka, na yi imani, don tallafawa na'ura tare da Elbrus PDK, wanda aka zazzage "kamar haka" ba tare da wani wajibai ba, Veeam Agent na Linux ya dace da shakka. Ko da bayan duk gyare-gyare tare da fayil.

Tabbas, kayan rarrabawar Elbrus OS ba su da tallafi bisa ƙa'ida, tunda ba a haɗa shi cikin jerin masu tallafi ba. Bugu da kari, ba a gwada Veeam Agent na Linux ta sashen QA ba, don haka wadancan. babu tallafi (akalla a lokacin buga labarin).

Ina fatan labarin zai kasance da amfani ga waɗanda ke ƙoƙarin aiwatar da oda mai lamba 334 na Yuni 29.06.2017, XNUMX. Nawa gare ku... [TBD].

source: www.habr.com

Add a comment