Nyadangkeun Linux Ubuntu ti Veeam on Elbrus OS. Impor substitusi ['?' | '.' | '!']

Sampurasun sadayana.
Artikel panganyarna ngeunaan Habré substitusi impor dina prakna. Bagian 1. Pilihan и musik teu maén keur lila ... atanapi kumaha Elbrus OS pernah jadi bébas teu ninggalkeun kuring cuek. Kuring mutuskeun pikeun diajar masalah ieu dina konteks tugas cadangan. Leuwih ti éta, di artikel ieu Produk Veeam Software disebatkeun, anu hartosna masalahna tiasa relevan sacara khusus dina kontéks substitusi impor.

Nyadangkeun Linux Ubuntu ti Veeam on Elbrus OS. Substitusi impor ['?' | '.' | '!']
sumber gambar aslina

Anu mimiti, kuring mutuskeun pikeun ngundeur Elbrus OS, atawa rada, ngan distribusi sadia pikeun arsitektur x86_64, tingali kumaha gawéna, sarta nyoba install Veeam Agén pikeun Linux Ubuntu. Upami anjeun hoyong terang naon anu kaluar tina ieu, mangga tingali ucing.

Ku kituna, a digression leutik, bisi aya nu teu nyaho. "Elbrus" sapertos kitu prosesor kalawan sistem paréntah rada husus. Sajaba ti éta, aya software Elbrus OS. Jeung - sabalikna mun misconception umum - pikeun Elbrus OS jalan, teu perlu boga sistem hardware dumasar kana processor Elbrus. Aya "PDK "Elbrus" pikeun x86 - kanyataanna, éta muncul dina domain publik dina bentuk disk instalasi. Ku jalan kitu, aya footnote "PDK - platform development kit, developer kit" - hébat, hartina sahenteuna aya compiler dinya.

Lain leutik kapaksa mundur. Kanyataan yén kuring pernah ngurus parangkat lunak domestik, sapertos MSVS sareng Baguette RTOS. Kuring kungsi pangalaman gawé bareng komponén domestik, kaasup processor ti MCST. Kukituna, kuring tiasa nyarios kalayan tanggung jawab pinuh yén aya spésifisitas anu tangtu di daérah ieu sareng ieu anu kuring bakal nyobian henteu nyabak dina tulisan éta. Nalika Abdi hoyong pisan, abdi bakal nempatkeun tag [TBD]. Ku kituna urang bakal coba ngalakukeun tanpa trolling outright jeung moaning banal. Tungtungna, industri pertahanan Rusia sareng lembaga pamaréntahan kedah kahartos. Nagara badag - anggaran leutik.. [TBD].

Tahap nol - ngundeur. Éta noteworthy yén warta yén Elbrus OS geus sadia ngabalukarkeun résonansi a, jadi loba nu server distribution turun. [TBD] Hatur nuhun ka Yandex sareng insinyur anu panginten ngalih ka dinya. Jadi speed download téh alus.

Tahap Kahiji - pamasangan. Kuring dipasang dina hypervisor munggaran anu sayogi gratis. Kuring nyayogikeun dua inti, sababaraha gigs RAM, 32 MB pikeun pidéo (bakal aya antarmuka grafis, panginten). Disk sapertos biasa - 32 GB.
Kuring ngamimitian pamasangan. Abdi henteu nganggo petunjuk instalasi, janten kuring henteu tiasa mairan. Antarbeungeut pamasangan TUI parah pisan minimalis.

Nyadangkeun Linux Ubuntu ti Veeam on Elbrus OS. Substitusi impor ['?' | '.' | '!']
Nya, saé, urang tiasa ngalakukeun tanpa beurit.

Kuring junun jandela hareup dina try kadua. Naha henteu milih alat standar sr0 [TBD] nalika masang tina disk?
Pilih sumber CD-ROM jeung ngaléngkah.

Nyadangkeun Linux Ubuntu ti Veeam on Elbrus OS. Substitusi impor ['?' | '.' | '!']

Nalika milih zona waktos, kuring ujug-ujug sadar yén sistem nganggo prosés boot init, sareng kuring damel ti TTY0.

Nyadangkeun Linux Ubuntu ti Veeam on Elbrus OS. Substitusi impor ['?' | '.' | '!']

OKÉ, teras hayu urang mengklasifikasikan "Elbrus" salaku komunitas Percaya heubeul[TBD]. Sacara prinsip, ieu téh alus: anjeun teu kudu ménta kodeu sumber pikeun nempo kumaha prosés download jalan, saprak sagalana geus scripted.

Sésana ampir teu penting: urang nempatkeun sadayana sareng satuju. Sapanjang jalan, urang manggihan yén kernel dipaké 3.14.79-13.84. Hmm, Debian 7 ngagaduhan 3.2 [TBD].

Salajengna, pilih partisi disk standar sareng... Kami ningali peringatan:

Nyadangkeun Linux Ubuntu ti Veeam on Elbrus OS. Substitusi impor ['?' | '.' | '!']

Hmm, kumaha bae partisi otomatis teu Cope ogé kalawan 32 manggung disk. Kuring teu ngarobah disk; Kuring réngsé quest kalawan partisi disk manual dina gaya "sadayana-dina-hiji". Kuring kungsi install ext3, saprak / boot teu bisa di ext4.
Sistem muncul tanpa kajadian.

Tahap kadua - milarian alternatif.
Saatos rummaging ngaliwatan eusi disk kadua, abdi sadar yén ieu téh Repository kalawan tambahan. dina bungkusan. Sareng ningali /etc/apt/sources.list, kuring sadar yén éta kedah dipasang dina /mnt/cdrom. Tapi kuring henteu mendakan /etc/os-release. Tapi aya /etc/mcst-version kalawan eusi 3.0-rc36. 3.0 meureun versi - sigana cocog, tapi rc36? Sacara umum, parangkat lunak pihak katilu sigana moal tiasa ngakuan distribusi ieu ku cara klasik.

Dina partisi akar, diréktori / mcst nangkep panon kuring, sareng di dinya, kalayan haté anu tilelep, kuring mendakan /mcst/backup. Nyaéta, aya alat cadangan, sareng éta diwangun kana sistem! "Hebat," saur kuring, "Hayu urang tingali kumaha ieu jalanna!"

Tétéla aya skrip bash 4Kb /mcst/bin/backup anu nyayogikeun file salinan. Sacara standar - kana diréktori /mcst/cadangan. Dina kode sumber kuring diperkirakeun ningali paréntah rsync, tapi teu di konfigurasi standar. Skrip ngan saukur nyalin file. Paréntah sigana sapertos kieu:

cp -rpdx <file backup> <file>

Sakabéh file /mcst/bin/backup aya di dieuKuring ngingetkeun anjeun langsung yén naskah ieu nyalira teu cukup pikeun pinuh ngartos. Éta narik fungsi tina /mcst/bin/source, anu mangrupikeun perpustakaan fungsi. Abdi henteu kalebet (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

Sanajan, meureun kuring teu ngarti hal? Panginten aya anu tiasa ngajelaskeun dina koméntar: kumaha naskah ieu mastikeun cadangan data anu aman sareng dipercaya? [TBD]

rsync, saliwatan, kaasup kana add-on. repositories. Vérsi 3.1.3. Jigana ngagunakeun rsync masih alternatif hadé kana /mcst/bin/aplikasi cadangan.

Salajengna, abdi mutuskeun pikeun nempatkeun hiji seger Agén Veeam pikeun Linux. Aya anu bakal naros: "Naon hubunganana Veeam sareng substitusi impor sareng éta?" Sumuhun, éta teu di register, tapi ieu Certified ku FSTEC, nu hartina dina henteuna alternatif eta bisa dipaké. Méakkeun lima belas menit dina alternatif tina pendaptaran, Kuring éta bisa manggihan 3 Tumbu pikeun kecap "cadangan" (euweuh patali sual kuring pikeun kecap "cadangan"). Kuring henteu acan ngalakukeun analisa jero ngeunaan program ieu, janten kuring moal nyobian nangtoskeun kumaha aranjeunna cocog pikeun mesin cadangan anu ngajalankeun Linux. Saha waé anu peryogi éta bakal narik kacindekan sorangan sareng ngabagikeunana dina koméntar.

Panggung Tilu - pamasangan Veeam Agent pikeun Linux.
Janten, Veeam Agent for Linux diwangun ku dua pakét: modul kernel veeamsnap (nyaéta, sumber di dieu) jeung kode spasi pamaké proprietary dina bentuk paket veeam.

Aya hiji masalah leutik kalawan masang modul kernel - pakét dkms leungit. Ieu mangrupikeun jasa anu ngamungkinkeun anjeun ngawangun modul kernel tina sumber. Sakumaha aturan, éta sayogi dina sadaya distribusi deb. Kuring kedah ngaunduh éta tina gudang deb pihak katilu. Hiji hal anu ngajadikeun kuring bagja nyaéta yén pakét henteu gumantung kana arsitéktur, janten pas sapertos anu asli. Naha éta henteu kalebet dina daptar bungkusan anu sayogi, atanapi langkungna, henteu dikembangkeun [TBD]? Panginten panginten teu aya anu kedah ngawangun sareng ngajalankeun modul kernel non-MCST. Nyaan aya bédana di dieu - sabab aya linux-headers. Nyaéta, modul, upami hoyong, tiasa dirakit ku leungeun sareng diluncurkeun ku naskah nalika mesin ngamimitian. Jigana anjeun teu kedah nyangka apdet sering ti MCST [TBD].

"OKÉ, modul dipasang - bagian hardest geus réngsé," Teu sangka ... Paket veeam pikeun Repository deb pikeun platform amd64, sarta Elbrus OS boga x86_64 [TBD] platform. Bédana, tangtosna, ngan ukur dina nami, tapi bédana ieu ngajantenkeun ampir sadaya bungkusan ti repositori deb pihak katilu teu cocog sareng Elbrus OS. Salah paham anu ngaganggu ieu tiasa dileungitkeun ngan saukur: ngan ukur ngabongkar bungkusan, ngabenerkeun inpormasi ngeunaan arsitéktur sareng ngahijikeun deui. Kumaha carana ngalakukeun eta Googled eta sakedapan.

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

Masalah sanésna nyaéta katergantungan. Berkas anu diperyogikeun sigana aya, tapi bungkusan henteu. Gambaran éta yén nami bungkusan bénten tina "analogi impor"na. Panginten perpustakaan-perpustakaan dibungkus béda. Abdi henteu langkung seueur detil, ngaleungitkeun ampir sadaya katergantungan, sareng pamasangan teras diteruskeun.

Lajeng masalah mecenghul kalayan kode mimiti jasa. Aksara /lib/init/vars.sh leungit. Kanggo sababaraha alesan, Elbrus ngatur tanpa éta, janten kami ogé bakal ngahapus. Salajengna, urang kedah ngagentos fungsi kaluaran pesen: fungsi log_daemon_msg sareng log_end_msg leungit. Saatos rummaging sabudeureun dina / lib / lsb / file init-fungsi, kuring manggihan fungsi log_success_msg - éta alus keur urang keur percobaan. Ku jalan kitu, dina file /lib/lsb/init-functions baris "# Source SuSE`s rc functions" aya dina awal file [TBD].

Saatos ngolah kasar pakét sareng file, cadangan sadaya-mesin dina saham NFS parantos diluncurkeun. Gunung cadangan ogé suksés. Janten, kuring yakin, pikeun nyadangkeun mesin sareng Elbrus PDK, diunduh "sapertos kitu" tanpa kawajiban, Veeam Agent pikeun Linux pasti cocog. Malah sanggeus sagala modifikasi jeung file a.

Tangtosna, kit distribusi Elbrus OS henteu dirojong sacara resmi, sabab éta henteu kalebet dina daptar anu dirojong. Salaku tambahan, Veeam Agent pikeun Linux henteu diuji ku departemen QA, janten éta. teu aya dukungan (sahenteuna dina waktos publikasi artikel).

Mugi-mugi artikel ieu tiasa mangfaat kanggo anu bade ngalaksanakeun Paréntah No 334 kaping 29.06.2017 Juni XNUMX. milik anjeun ... [TBD].

sumber: www.habr.com

Tambahkeun komentar