Isipele se-Linux kusuka ku-Veeam ku-Elbrus OS. Ngenisa esikhundleni ['?' | '.' | '!']

Sanibonani nonke.
Izihloko zakamuva ezikhuluma ngo-Habré Ngenisa esikhundleni ngokwenza. Ingxenye 1. Izinketho и Umculo awuzange udlale isikhathi eside... noma ukuthi i-Elbrus OS ayizange ikhululeke kanjani akangishiyanga ngingenandaba. Nginqume ukufunda lolu daba kumongo womsebenzi wokulondoloza. Ngaphezu kwalokho, ku lesi sihloko Imikhiqizo ye-Veeam Software iyabaluliwe, okusho ukuthi udaba lungase lufaneleke ngokuqondile endabeni yokushintshaniswa kwezinto kwamanye amazwe.

Isipele se-Linux kusuka ku-Veeam ku-Elbrus OS. Ngenisa esikhundleni ['?' | '.' | '!']
umthombo wesithombe sangempela

Okokuqala, nginqume ukulanda i-Elbrus OS, noma kunalokho, ukusatshalaliswa okutholakalayo kwe-architecture ye-x86_64 kuphela, bheka ukuthi isebenza kanjani, bese uzama ukufaka i-Veeam Agent ye-Linux kuyo. Uma ufuna ukwazi ukuthi yini eyaphuma kulokhu, sicela ubone ikati.

Ngakho-ke, ukwehla okuncane, uma kwenzeka umuntu engazi. "Elbrus" injalo CPU ngohlelo lomyalo othize. Ngaphezu kwalokho, kukhona isofthiwe ye-Elbrus OS. Futhi - ngokuphambene nenkolelo evamile - ukusebenzisa i-Elbrus OS, akudingekile ukuba nesistimu yehadiwe esekelwe kuphrosesa ye-Elbrus. Kukhona "i-PDK "Elbrus" ye-x86" - empeleni, ivele esizindeni somphakathi ngesimo sediski yokufaka. Phela, kunombhalo waphansi othi “PDK - ikhithi yokuthuthukisa yesikhulumi, ikhithi yonjiniyela” - kuhle, lokho kusho ukuthi kukhona okungenani umdidiyeli lapho.

Okunye ukuhlehla okuncane okuphoqelekile. Iqiniso liwukuthi ngake ngabhekana nesofthiwe yasekhaya, njenge-MSVS ne-Baguette RTOS. Ngibe nolwazi lokusebenza nezingxenye zasekhaya, okuhlanganisa iphrosesa evela ku-MCST. Ngakho-ke, ngingasho ngomthwalo wemfanelo ogcwele ukuthi kukhona ukucaciswa okuthile kule ndawo futhi ngizozama ukuthi ngingathinti kuso esihlokweni. Uma ngifuna ngempela, ngizobeka ithegi [TBD]. Ngakho-ke sizozama ukwenza ngaphandle kokunyathela ngokuqondile kanye nokububula kwe-banal. Ekugcineni, imboni yezokuvikela yaseRussia kanye nezinhlaka zikahulumeni zidinga ukuqondwa. Izwe elikhulu - isabelomali esincane.. [TBD].

Isiteji esingu-Zero - landa. Kuyaphawuleka ukuthi izindaba zokuthi i-Elbrus OS isiyatholakala zabangela ukuduma, kangangokuthi iseva yokusabalalisa yehla. [TBD] Siyabonga ku-Yandex kanye nonjiniyela ocabange ukuyihambisa lapho. Ngakho isivinini sokulanda sihle.

Isigaba sokuqala - ukufakwa. Ngiyifake ku-hypervisor yokuqala eyayitholakala ukuze isetshenziswe mahhala. Nginikeze ama-cores amabili, amagigi ambalwa we-RAM, ama-32 MB wevidiyo (kuzoba nesixhumi esibonakalayo, bengicabanga). Idiski injengokujwayelekile - 32 GB.
Ngaqala ukufaka. Angizange ngisebenzise imiyalelo yokufaka, ngakho-ke angikwazi ukuphawula ngakho. I-interface yokufaka ye-TUI i-minimalistic kakhulu.

Isipele se-Linux kusuka ku-Veeam ku-Elbrus OS. Ngenisa esikhundleni ['?' | '.' | '!']
Hhayi-ke, kuhle, singenza ngaphandle kwegundane.

Ngiphathe iwindi elilandelayo ngomzamo wesibili. Kungani ungakhethi idivayisi ezenzakalelayo ethi sr0 [TBD] lapho uyifaka kudiski?
Khetha umthombo we-CD-ROM bese uqhubekela phambili.

Isipele se-Linux kusuka ku-Veeam ku-Elbrus OS. Ngenisa esikhundleni ['?' | '.' | '!']

Ngenkathi ngikhetha indawo yesikhathi, ngivele ngabona ukuthi uhlelo lusebenzisa inqubo ye-init boot, futhi ngisebenza ku-TTY0.

Isipele se-Linux kusuka ku-Veeam ku-Elbrus OS. Ngenisa esikhundleni ['?' | '.' | '!']

KULUNGILE, bese sihlukanisa okuthi "Elbrus" njengomphakathi Amakholwa Amadala[TBD]. Empeleni, lokhu kuhle: awudingi ukucela ikhodi yomthombo ukuze ubone ukuthi inqubo yokulanda isebenza kanjani, njengoba yonke into ibhaliwe.

Okunye cishe akubalulekile: sibeka konke futhi sivumelana. Endleleni, sithola ukuthi i-kernel isetshenziswa 3.14.79-13.84. Hmm, i-Debian 7 ibe ne-3.2 [TBD].

Okulandelayo, khetha ukwahlukanisa okuzenzakalelayo kwediski futhi... Sibona isexwayiso:

Isipele se-Linux kusuka ku-Veeam ku-Elbrus OS. Ngenisa esikhundleni ['?' | '.' | '!']

Hmm, ngandlela thile ukwahlukanisa okuzenzakalelayo akuzange kubhekane kahle nediski ye-32 gig. Angizange ngiyishintshe idiski; ngiqedele imfuno ngokuhlukanisa idiski ngesandla ngesitayela "sokukodwa-kokukodwa". Bekufanele ngifake i-ext3, ngoba / i-boot yayingeke ibe ku-ext4.
Uhlelo luqhamuke ngaphandle kwesigameko.

Isigaba sesibili - cinga ezinye izindlela.
Ngemva kokuphenya okuqukethwe kwediski yesibili, ngabona ukuthi lena yindawo yokugcina eyengeziwe. emaphaketheni. Futhi ngibheka ku-/etc/apt/sources.list, ngabona ukuthi idinga ukufakwa ku-/mnt/cdrom. Kepha angitholanga /etc/os-release. Kodwa kukhona /etc/mcst-version nokuqukethwe 3.0-rc36. 3.0 mhlawumbe inguqulo - ibonakala ilingana, kodwa rc36? Ngokuvamile, isofthiwe yenkampani yangaphandle cishe ngeke ikwazi ukubona lokhu kusatshalaliswa ngendlela yakudala.

Engxenyeni yempande, umkhombandlela /mcst ubamba iso lami, futhi lapho, ngenhliziyo ecwilayo, ngathola /mcst/backup. Okusho ukuthi, kukhona ithuluzi lokusekelayo, futhi lakhelwe ohlelweni! “Kuhle,” ngacabanga, “Ake sibone ukuthi lokhu kusebenza kanjani!”

Kuvele ukuthi kune-4Kb bash script /mcst/bin/backup ehlinzeka ngokukopishwa kwefayela. Ngokuzenzakalelayo - kuhla lwemibhalo /mcst/backup. Ekhodini yomthombo bengilindele ukubona umyalo we-rsync, kepha awukho ekucushweni okuzenzakalelayo. Umbhalo umane ukopishe amafayela. Umyalo ubukeka kanjena:

cp -rpdx <file backup> <file>

Lonke ifayela /mcst/bin/backup lilaphaNgiyakuxwayisa ngaso leso sikhathi ukuthi lesi sikripthi sisodwa asanele ukusiqonda ngokugcwele. Idonsa imisebenzi ukusuka ku-/mcst/bin/source, okufana nomtapo wezincwadi wemisebenzi. Angizange ngiyifake (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

Nakuba, mhlawumbe angizange ngiqonde okuthile? Mhlawumbe othile angachaza kumazwana: lesi script siqinisekisa kanjani isipele sedatha ephephile nethembekile? [TBD]

rsync, ngendlela, ifakiwe ku-add-on. izinqolobane. Inguqulo 3.1.3. Ngicabanga ukuthi ukusebenzisa i-rsync kuseyindlela engcono yohlelo lokusebenza lwe-/mcst/bin/backup.

Ngokulandelayo, nganquma ukubeka entsha I-Veeam Agent ye-Linux. Omunye uzobuza: “I-Veeam kanye nokufaka esikhundleni sokungenisa kwamanye amazwe kuhlangene ngani nakho?” Yebo, ayikho kurejista, kodwa iqinisekiswe yi-FSTEC, okusho ukuthi uma zingekho ezinye izindlela ingasetshenziswa. Ukuchitha imizuzu eyishumi nanhlanu kokunye okuvela ukubhalisa, ngikwazile ukuthola izixhumanisi ezingu-3 zegama elithi “ikhophi yasenqolobaneni” (azikho ezihlobene nombuzo wami wegama elithi “gcina”). Angenzanga ukuhlaziya okujulile kwalezi zinhlelo, ngakho-ke ngeke ngizame ukwahlulela ukuthi zifaneleka kangakanani ukusekela imishini esebenzisa i-Linux. Noma ubani oyidingayo uzofinyelela esiphethweni sakhe futhi asihlanganyele emibhalweni.

Isigaba sesithathu - ukufakwa kwe-Veeam Agent ye-Linux.
Ngakho-ke, i-Veeam Agent ye-Linux iqukethe amaphakheji amabili: imojula ye-veeamsnap kernel (ngendlela, umthombo lapha) kanye nekhodi yendawo yomsebenzisi yokuphathelene ngendlela yephakheji ye-veeam.

Kube nenkinga eyodwa encane ngokufaka imojuli ye-kernel - iphakheji ye-dkms engekho. Lena isevisi ekuvumela ukuthi wakhe amamojula e-kernel kusuka emthonjeni. Njengomthetho, iyatholakala kukho konke ukusatshalaliswa kwedeb. Kwadingeka ngiyilande endaweni yokugcina imali yenkampani yangaphandle. Into eyodwa eyangijabulisa ukuthi iphakheji ayincikile ekwakhiweni kwezakhiwo, ngakho ilingana njengowomdabu. Kungani ingazange ifakwe ohlwini lwamaphakheji atholakalayo, noma kunalokho, ingathuthukiswanga [TBD]? Mhlawumbe kucatshangwa ukuthi akekho okufanele akhe futhi asebenzise noma yimaphi amamojula angewona awe-MCST kernel. Kukhona ngempela umehluko lapha - njengoba kukhona i-linux-headers. Okusho ukuthi, imojula, uma ifunwa, ingahlanganiswa ngesandla futhi yethulwe ngombhalo lapho umshini uqala. Ngicabanga ukuthi akufanele ulindele izibuyekezo ezivamile ezivela ku-MCST [TBD].

"KULUNGILE, imojula ifakiwe - ingxenye enzima kakhulu isiphelile," ngacabanga ... Iphakheji ye-veeam ye-deb repository eyeplathifomu ye-amd64, futhi i-Elbrus OS ine-x86_64 [TBD] yesikhulumi. Umehluko, yiqiniso, usegameni kuphela, kodwa lo mehluko wenza cishe wonke amaphakheji avela kumakhosombe e-deb party angahambisani ne-Elbrus OS. Lokhu kungezwani okucasulayo kungaqedwa kalula: vele uhlukanise iphakheji, ulungise ulwazi mayelana nezakhiwo bese ulibuyisela ndawonye. Kwenziwa kanjani IGoogle khona manjalo.

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

Enye inkinga ukuncika. Amafayela adingekayo abonakala ekhona, kodwa amaphakheji awekho. Umbono wawuwukuthi amagama amaphakheji ahluke "ku-analogues yawo engenisiwe". Mhlawumbe imitapo yolwazi ipakishwe ngendlela ehlukile. Angizange ngingene emininingwaneni eminingi, ngisuse cishe konke okuncikile, futhi ukufakwa kwaqhubeka.

Bese kuvela izinkinga ngekhodi yokuqala yesevisi. Iskripthi /lib/init/vars.sh besingekho. Ngesizathu esithile, i-Elbrus ilawula ngaphandle kwayo, ngakho-ke sizoyisusa futhi. Okulandelayo, bekufanele simiselele umsebenzi wokuphuma komlayezo: log_daemon_msg kanye nemisebenzi ye-log_end_msg ibingekho. Ngemva kokuphenya kufayela /lib/lsb/init-functions, ngithole umsebenzi we-log_success_msg - kuzoba kuhle kithi ukuhlola. Nokho, kufayela elithi /lib/lsb/init-functions umugqa othi “# Source SuSE`s rc function” usekuqaleni kwefayela le-[TBD].

Ngemva kokucutshungulwa kanzima kwephakheji ngefayela, isipele somshini wonke esabelweni se-NFS sethulwe ngempumelelo. Ukukhweza ikhophi yasenqolobaneni nakho kube yimpumelelo. Ngakho-ke, ngikholelwa ukuthi ngokusekela umshini nge-Elbrus PDK, elandiwe “njengaleyo” ngaphandle kwanoma yiziphi izibopho, i-Veeam Agent ye-Linux ifaneleka ngempela. Ngisho nangemva kwazo zonke izinguquko ngefayela.

Kunjalo, ikhithi yokusabalalisa ye-Elbrus OS ayisekelwe ngokusemthethweni, ngoba ayifakiwe ohlwini lwabasekelwe. Ngaphezu kwalokho, i-Veeam Agent ye-Linux ayizange ihlolwe kuyo ngumnyango we-QA, ngakho labo. akukho ukusekelwa (okungenani ngesikhathi sokushicilelwa kwesihloko).

Ngithemba ukuthi lesi sihloko sizoba usizo kulabo abazama ukusebenzisa i-oda No. 334 kaJuni 29.06.2017, XNUMX. Eyami kuwe... [TBD].

Source: www.habr.com

Engeza amazwana