Hola a tots
Articles recents sobre Habré
En primer lloc, vaig decidir descarregar el sistema operatiu Elbrus, o millor dit, només la distribució disponible per a l'arquitectura x86_64, veure com funciona i intentar instal·lar-hi Veeam Agent per a Linux. Si voleu saber què va sortir d'això, consulteu cat.
Per tant, una petita digressió, per si algú no ho sap. "Elbrus" és així
Una altra petita retirada forçada. El fet és que una vegada vaig tractar amb programari domèstic, com MSVS i Baguette RTOS. Vaig tenir experiència treballant amb components domèstics, inclòs un processador de MCST. Per tant, puc dir amb tota responsabilitat que hi ha una certa especificitat en aquest àmbit i intentaré no tocar-hi a l'article. Quan realment vull, posaré l'etiqueta [TBD]. Així que intentarem prescindir de trolls i gemecs banals. Al final, cal entendre la indústria de defensa russa i les agències governamentals. Gran país - petit pressupost... [TBD].
Etapa zero - descarregar. Cal destacar que la notícia que el sistema operatiu Elbrus ja està disponible va causar una ressonància, tant que el servidor de distribució va caure. [TBD] Gràcies a Yandex i a l'enginyer que va pensar a traslladar-lo allà. Així que la velocitat de descàrrega és bona.
La etapa primera - instal·lació. El vaig instal·lar al primer hipervisor que estava disponible per a ús gratuït. Vaig assignar dos nuclis, un parell de gigues de RAM, 32 MB per a vídeo (hi haurà una interfície gràfica, vaig pensar). El disc és com de costum: 32 GB.
Vaig començar la instal·lació. No he utilitzat les instruccions d'instal·lació, així que no puc comentar-hi. La interfície d'instal·lació de la TUI és molt minimalista.
Bé, genial, podem prescindir del ratolí.
Vaig gestionar la següent finestra al segon intent. Per què no seleccioneu el dispositiu predeterminat sr0 [TBD] quan instal·leu des del disc?
Seleccioneu la font del CD-ROM i continueu.
Mentre seleccionava la zona horària, de sobte em vaig adonar que el sistema utilitza el procés d'arrencada d'inici i estic treballant des de TTY0.
D'acord, doncs classifiquem "Elbrus" com a comunitat
La resta gairebé no té importància: ho posem tot i estem d'acord. Al llarg del camí, descobrim que el nucli s'utilitza 3.14.79-13.84. Hmm, Debian 7 tenia 3.2 [TBD].
A continuació, seleccioneu la partició de disc per defecte i... Veiem un avís:
Hmm, d'alguna manera la partició automàtica no va fer front bé amb un disc de 32 gig. No vaig canviar el disc; vaig completar la recerca amb la partició manual del disc a l'estil "tot en un". Vaig haver d'instal·lar ext3, ja que /boot no podia estar a ext4.
El sistema va sorgir sense incidents.
La segona etapa - buscar alternatives.
Després de recórrer el contingut del segon disc, em vaig adonar que es tracta d'un dipòsit amb addicionals. en paquets. I mirant /etc/apt/sources.list, em vaig adonar que cal muntar-lo a /mnt/cdrom. Però no he trobat /etc/os-release. Però hi ha /etc/mcst-version amb el contingut 3.0-rc36. 3.0 és probablement la versió; sembla que encaixa, però rc36? En general, el programari de tercers probablement no serà capaç de reconèixer aquesta distribució de la manera clàssica.
A la partició arrel, el directori /mcst em crida l'atenció i allà, amb el cor enfonsat, vaig descobrir /mcst/backup. És a dir, hi ha una eina de còpia de seguretat i està integrada al sistema! "Genial", vaig pensar, "A veure com funciona això!"
Va resultar que hi ha un script bash de 4Kb /mcst/bin/backup que proporciona la còpia de fitxers. Per defecte - al directori /mcst/backup. Al codi font esperava veure l'ordre rsync, però no es troba a la configuració predeterminada. L'script simplement copia els fitxers. L'ordre sembla una cosa així:
cp -rpdx <file backup> <file>
Tot el fitxer /mcst/bin/backup és aquíUs adverteixo de seguida que aquest guió per si sol no és suficient per entendre-ho completament. Treu funcions de /mcst/bin/source, que és una cosa així com una biblioteca de funcions. No el vaig incloure (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
Encara que potser no he entès res? Potser algú ho pot explicar als comentaris: com garanteix aquest script una còpia de seguretat de dades segura i fiable? [TBD]
rsync, per cert, s'inclou al complement. repositoris. Versió 3.1.3. Crec que utilitzar rsync encara és una millor alternativa a l'aplicació /mcst/bin/backup.
A continuació, vaig decidir posar-ne un de nou Veeam Agent per a Linux. Algú preguntarà: "Què hi tenen a veure Veeam i la substitució d'importacions?" Sí, no consta al registre, però està certificat per FSTEC, la qual cosa vol dir que a falta d'alternatives es pot utilitzar. Dedicar quinze minuts a alternatives de
L'etapa 3 — instal·lació de Veeam Agent per a Linux.
Per tant, Veeam Agent per a Linux consta de dos paquets: el mòdul del nucli veeamsnap (per cert,
Hi va haver un petit problema amb la instal·lació del mòdul del nucli: el paquet dkms que falta. Aquest és un servei que us permet crear mòduls del nucli des de la font. Per regla general, està disponible a totes les distribucions de deb. Vaig haver de baixar-lo des d'un dipòsit de deb de tercers. Una cosa que em va fer feliç és que el paquet no depèn de l'arquitectura, de manera que encaixa com un nadiu. Per què no es va incloure a la llista de paquets disponibles, o més aviat, no es va desenvolupar [per determinar]? Potser se suposa que ningú hauria de construir i executar cap mòdul del nucli que no sigui MCST. Realment hi ha una discrepància aquí, ja que hi ha capçaleres linux. És a dir, el mòdul, si es vol, es pot muntar a mà i llançar-se mitjançant un script quan s'inicia la màquina. Crec que no hauríeu d'esperar actualitzacions freqüents de MCST [TBD].
"D'acord, el mòdul està instal·lat; la part més difícil s'ha acabat", vaig pensar... El paquet veeam per al dipòsit deb és per a la plataforma amd64 i el sistema operatiu Elbrus té una plataforma x86_64 [TBD]. La diferència, per descomptat, només està en el nom, però aquesta diferència fa que gairebé tots els paquets de repositoris de deb de tercers siguin incompatibles amb el sistema operatiu Elbrus. Aquest malentès molest es pot eliminar simplement: només cal desmuntar el paquet, corregir la informació sobre l'arquitectura i muntar-lo de nou. Com fer-ho
mkdir tmp
dpkg-deb -R original.deb tmp
# edit DEBIAN/postinst
dpkg-deb -b tmp fixed.deb
Un altre problema són les dependències. Sembla que hi ha els fitxers necessaris, però els paquets no. La impressió va ser que els noms dels paquets diferien dels seus "anàlegs importats". Potser les biblioteques estan empaquetades de manera diferent. No vaig entrar en massa detalls, vaig eliminar gairebé totes les dependències i la instal·lació va seguir endavant.
Aleshores van sorgir problemes amb el codi d'inici del servei. Faltava l'script /lib/init/vars.sh. Per alguna raó, Elbrus se'n gestiona sense, així que també l'eliminarem. A continuació, vam haver de substituir la funció de sortida del missatge: faltaven les funcions log_daemon_msg i log_end_msg. Després de rebuscar al fitxer /lib/lsb/init-functions, vaig trobar la funció log_success_msg: ens anirà bé per als experiments. Per cert, al fitxer /lib/lsb/init-functions la línia "# Source SuSE`s rc functions" es troba al començament del fitxer [TBD].
Després d'un processament tan aproximat del paquet amb un fitxer, la còpia de seguretat de tota la màquina a la compartició NFS es va llançar amb èxit. El muntatge de còpia de seguretat també va tenir èxit. Per tant, crec que per fer una còpia de seguretat d'una màquina amb Elbrus PDK, descarregat "així" sense cap obligació, Veeam Agent per a Linux és definitivament adequat. Fins i tot després de totes les modificacions amb un fitxer.
Per descomptat, el kit de distribució Elbrus OS no s'admet formalment, ja que no està inclòs a la llista de suports. A més, el departament de control de qualitat no va provar Veeam Agent per a Linux, així que aquests. no hi ha suport (almenys en el moment de la publicació de l'article).
Espero que l'article sigui útil per a aquells que intenten aplicar l'ordre núm. 334 de 29.06.2017 de juny de XNUMX. El meu per a tu... [TBD].
Font: www.habr.com