Kusunga Linux kuchokera ku Veeam pa Elbrus OS. Lowetsani m'malo ['?' | | '.' | | '!']

Moni nonse.
Zolemba zaposachedwa za Habré Kulowetsa m'malo mwakuchita. Gawo 1. Zosankha и Nyimbo sizinasewere kwa nthawi yayitali ... kapena momwe Elbrus OS sanakhale mfulu sanandisiye wopanda chidwi. Ndinaganiza kuti ndiphunzire nkhaniyi muzochitika za ntchito yosunga zobwezeretsera. Komanso, mu nkhaniyi Zogulitsa za Veeam Software zimatchulidwa, zomwe zikutanthauza kuti nkhaniyi ikhoza kukhala yofunikira makamaka potengera kulowetsa m'malo.

Kusunga Linux kuchokera ku Veeam pa Elbrus OS. Lowetsani m'malo ['?' | | '.' | | '!']
gwero lachithunzi choyambirira

Choyamba, ndinaganiza zotsitsa Elbrus OS, kapena m'malo mwake, kugawa komwe kulipo kwa zomangamanga za x86_64, onani momwe zimagwirira ntchito, ndikuyesa kukhazikitsa Veeam Agent kwa Linux. Ngati mukufuna kudziwa zomwe zidatuluka, chonde onani mphaka.

Chifukwa chake, kutsika pang'ono, ngati wina sakudziwa. "Elbrus" ndi choncho CPU ndi dongosolo la malamulo enieni. Kuphatikiza apo, pali pulogalamu ya Elbrus OS. Ndipo - mosiyana ndi zomwe anthu ambiri amakhulupirira - kugwiritsa ntchito Elbrus OS, sikoyenera kukhala ndi dongosolo la hardware lochokera pa purosesa ya Elbrus. Pali "PDK "Elbrus" ya x86" - kwenikweni, idawonekera poyera ngati mawonekedwe a disk yoyika. Mwa njira, pali mawu am'munsi "PDK - zida zachitukuko cha nsanja, zida zomangira" - zabwino, zomwe zikutanthauza kuti pali wophatikiza pamenepo.

Wina yaing'ono mokakamizidwa pobwerera. Chowonadi ndichakuti nthawi ina ndidachita nawo mapulogalamu apanyumba, monga MSVS ndi Baguette RTOS. Ndinali ndi chidziwitso chogwira ntchito ndi zigawo zapakhomo, kuphatikizapo purosesa yochokera ku MCST. Choncho, ndikhoza kunena ndi udindo wonse kuti pali zenizeni m'derali ndipo ndiyesetsa kuti ndisakhudze m'nkhaniyi. Pamene ndikufunadi, ndimayika chizindikiro [TBD]. Chifukwa chake tidzayesetsa kuchita popanda kupondaponda momveka bwino komanso kubuula kwa banal. Pamapeto pake, makampani achitetezo aku Russia ndi mabungwe aboma akuyenera kumvetsetsedwa. Dziko lalikulu - bajeti yaying'ono.. [TBD].

Zero stage - kukopera. Ndizodabwitsa kuti mbiri yoti Elbrus OS yapezeka idayambitsa kugunda, kotero kuti seva yogawa idatsika. [TBD] Chifukwa cha Yandex ndi injiniya yemwe adaganiza zosunthira kumeneko. Chifukwa chake liwiro lotsitsa ndilabwino.

Gawo loyamba - kukhazikitsa. Ndinayiyika pa hypervisor yoyamba yomwe inalipo kuti igwiritsidwe ntchito kwaulere. Ndidagawa ma cores awiri, ma gigs angapo a RAM, 32 MB ya kanema (padzakhala mawonekedwe ojambulira, ndimaganiza). disk ndi mwachizolowezi - 32 GB.
Ndinayamba kukhazikitsa. Sindinagwiritse ntchito malangizo oyika, kotero sindingathe kuyankhapo. Mawonekedwe oyika a TUI ndi ochepa kwambiri.

Kusunga Linux kuchokera ku Veeam pa Elbrus OS. Lowetsani m'malo ['?' | | '.' | | '!']
Chabwino, chabwino, titha kuchita popanda mbewa.

Ndinayendetsa zenera lotsatira pa kuyesa kwachiwiri. Bwanji osasankha chipangizo chokhazikika sr0 [TBD] mukakhazikitsa kuchokera pa disk?
Sankhani gwero la CD-ROM ndikupitilira.

Kusunga Linux kuchokera ku Veeam pa Elbrus OS. Lowetsani m'malo ['?' | | '.' | | '!']

Ndikusankha nthawi, ndinazindikira mwadzidzidzi kuti makinawa amagwiritsa ntchito init boot process, ndipo ndikugwira ntchito kuchokera ku TTY0.

Kusunga Linux kuchokera ku Veeam pa Elbrus OS. Lowetsani m'malo ['?' | | '.' | | '!']

Chabwino, ndiye tiyeni tigawane "Elbrus" ngati gulu Okhulupirira Akale[TBD]. M'malo mwake, izi ndizabwino: simuyenera kufunsa gwero kuti muwone momwe kutsitsa kumagwirira ntchito, popeza chilichonse chimalembedwa.

Zina zonse ndi zosafunikira: timayika zonse ndikuvomereza. Panjira, timapeza kuti kernel imagwiritsidwa ntchito 3.14.79-13.84. Hmm, Debian 7 anali ndi 3.2 [TBD].

Kenako, sankhani magawo a disk partitioning ndi... Tikuwona chenjezo:

Kusunga Linux kuchokera ku Veeam pa Elbrus OS. Lowetsani m'malo ['?' | | '.' | | '!']

Hmm, mwanjira ina kugawikana kwadzidzidzi sikunayende bwino ndi 32 gig disk. Sindinasinthe disk; Ndinamaliza kufunafuna ndi magawo a disk pamanja mumayendedwe a "all-in-one". Ndinayenera kukhazikitsa ext3, popeza / boot sangakhale mu ext4.
Dongosolo lidabwera popanda chochitika.

Gawo lachiwiri - fufuzani njira zina.
Nditafufuza zomwe zili mu diski yachiwiri, ndinazindikira kuti iyi ndi malo osungiramo zowonjezera. m'matumba. Ndipo ndikuyang'ana /etc/apt/sources.list, ndinazindikira kuti ikuyenera kukwera mu /mnt/cdrom. Koma sindinapeze /etc/os-release. Koma pali /etc/mcst-version ndi zomwe zili 3.0-rc36. 3.0 mwina ndiye mtunduwo - ukuwoneka kuti uyenera, koma rc36? Nthawi zambiri, mapulogalamu a chipani chachitatu sangathe kuzindikira kugawa kumeneku mwachikale.

Pagawo la mizu, chikwatu cha /mcst chimandigwira diso, ndipo pamenepo, ndi mtima wozama, ndidapeza /mcst/backup. Ndiko kuti, pali chida chosungira, ndipo chamangidwa mudongosolo! "Zabwino," ndinaganiza, "Tiyeni tiwone momwe izi zimagwirira ntchito!"

Zinapezeka kuti pali 4Kb bash script /mcst/bin/backup yomwe imapereka kukopera mafayilo. Mwachikhazikitso - kupita ku /mcst/backup directory. Mu code source ndimayembekezera kuwona lamulo la rsync, koma siliri mu kasinthidwe kosasintha. Zolemba zimangokopera mafayilo. Lamulo likuwoneka motere:

cp -rpdx <file backup> <file>

Fayilo yonse /mcst/bin/backup ili panoNdikukuchenjezani nthawi yomweyo kuti script iyi yokha sikwanira kumvetsetsa bwino. Imakoka ntchito kuchokera ku /mcst/bin/source, yomwe ili ngati laibulale ya ntchito. Sindinaphatikizepo (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

Ngakhale, mwinamwake sindinamvetse chinachake? Mwina wina atha kufotokozera m'mawu: Kodi script iyi imatsimikizira bwanji zosunga zobwezeretsera zotetezeka komanso zodalirika? [TBD]

rsync, mwa njira, ikuphatikizidwa muzowonjezera. nkhokwe. Mtundu wa 3.1.3. Ndikuganiza kuti kugwiritsa ntchito rsync ndikadali njira yabwinoko ku /mcst/bin/backup application.

Kenako, ndinaganiza zoika ina yatsopano Veeam Agent wa Linux. Wina angafunse kuti: "Kodi Veeam ndi kulowetsa m'malo mwa import zikukhudzana bwanji ndi izi?" Inde, sizili mu kaundula, koma zimatsimikiziridwa ndi FSTEC, zomwe zikutanthauza kuti popanda njira zina zingagwiritsidwe ntchito. Kuthera mphindi khumi ndi zisanu pa njira zina kuchokera kaundula, Ndinatha kupeza maulalo a 3 a mawu oti "zosunga zobwezeretsera" (palibe okhudzana ndi funso langa la mawu oti "kusunga"). Sindinafufuze mozama mapulogalamuwa, kotero sindiyesa kuweruza momwe alili oyenera kusungira makina oyendetsa Linux. Aliyense amene angafune adzipangira yekha malingaliro ake ndikugawana nawo mu ndemanga.

Gawo Lachitatu - kukhazikitsa kwa Veeam Agent kwa Linux.
Chifukwa chake, Veeam Agent ya Linux imakhala ndi mapaketi awiri: module ya veeamsnap kernel (mwa njira, gwero apa) ndi nambala yamalo ogwiritsira ntchito omwe ali ngati phukusi la veeam.

Panali vuto limodzi laling'ono pakuyika gawo la kernel - phukusi la dkms lomwe likusowa. Uwu ndi ntchito yomwe imakupatsani mwayi wopanga ma module a kernel kuchokera kugwero. Monga lamulo, imapezeka pamagawidwe onse a deb. Ndidayenera kutsitsa kuchokera kumalo osungira a chipani chachitatu. Chinthu chimodzi chomwe chinandisangalatsa ndichakuti phukusili silidalira kamangidwe kake, motero limakwanira ngati lakwawo. Chifukwa chiyani sichinaphatikizidwe pamndandanda wamaphukusi omwe alipo, kapena m'malo mwake, osapangidwa [TBD]? Mwina zimaganiziridwa kuti palibe amene ayenera kupanga ndikuyendetsa ma module omwe si a MCST kernel. Pali kusiyana kwenikweni apa - popeza pali mitu ya linux. Ndiko kuti, gawo, ngati lingafune, likhoza kusonkhanitsidwa ndi dzanja ndikuyambitsidwa ndi script pamene makina ayamba. Ndikuganiza kuti musayembekezere zosintha pafupipafupi kuchokera ku MCST [TBD].

"Chabwino, gawoli lakhazikitsidwa - gawo lovuta kwambiri latha," ndinaganiza ... Phukusi la veeam la deb repository ndi nsanja ya amd64, ndipo Elbrus OS ili ndi x86_64 [TBD] nsanja. Kusiyanitsa, ndithudi, kuli m'dzina lokha, koma kusiyana kumeneku kumapangitsa kuti pafupifupi mapepala onse a chipani chachitatu asagwirizane ndi Elbrus OS. Kusamvetsetsana kokwiyitsaku kumatha kuthetsedwa mophweka: ingosokonezani phukusi, konzani zambiri za zomangamanga ndikuzibwezeretsanso. Momwe mungachitire Googled izo nthawi yomweyo.

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

Vuto lina ndi kudalira. Mafayilo ofunikira akuwoneka kuti alipo, koma mapaketi sali. Lingaliro linali lakuti mayina a mapaketiwo anali osiyana ndi "analogues" omwe adatumizidwa kunja. Mwina malaibulale amapakidwa mosiyana. Sindinapite mwatsatanetsatane, ndinachotsa pafupifupi zodalira zonse, ndipo kuyikako kunapitirira.

Kenako mavuto adawonekera ndi code yoyambira ntchito. Zolemba /lib/init/vars.sh zinalibe. Pazifukwa zina, Elbrus amakwanitsa popanda izo, kotero ifenso kuchotsa izo. Kenaka, tinayenera kusintha ntchito yotulutsa uthenga: log_daemon_msg ndi log_end_msg ntchito zinalibe. Nditafufuza mozungulira /lib/lsb/init-functions file, ndinapeza ntchito ya log_success_msg - zidzakhala zabwino kwa ife kuyesa. Mwa njira, mu fayilo ya /lib/lsb/init-functions mzere wa "# Source SuSE`s rc function" uli koyambirira kwa fayilo ya [TBD].

Pambuyo pakukonza koyipa kwa phukusi ndi fayilo, zosunga zobwezeretsera zamakina onse pagawo la NFS zidakhazikitsidwa bwino. Kuyika zosunga zobwezeretsera kudachitanso bwino. Chifukwa chake, ndikukhulupirira, pothandizira makina omwe ali ndi Elbrus PDK, otsitsidwa "monga choncho" popanda udindo uliwonse, Veeam Agent wa Linux ndiwoyeneradi. Ngakhale mutasintha zonse ndi fayilo.

Zachidziwikire, zida zogawa za Elbrus OS sizimathandizidwa, chifukwa sizinaphatikizidwe pamndandanda wazothandizira. Kuphatikiza apo, Veeam Agent wa Linux sanayesedwe ndi dipatimenti ya QA, kotero iwo. palibe chithandizo (osachepera pa nthawi yofalitsa nkhaniyo).

Ndikuyembekeza kuti nkhaniyi idzakhala yothandiza kwa iwo omwe akuyesera kukhazikitsa dongosolo No. 334 la June 29.06.2017, XNUMX. Wanga kwa inu... [TBD].

Source: www.habr.com

Kuwonjezera ndemanga