Salut alleguer.
Rezent Artikelen iwwer Habré
Als éischt hunn ech décidéiert den Elbrus OS erofzelueden, oder éischter, nëmmen déi verfügbar Verdeelung fir d'x86_64 Architektur, kuckt wéi et funktionnéiert, a probéiert Veeam Agent fir Linux drop z'installéieren. Wann Dir wësse wëllt wat aus dësem erauskomm ass, kuckt w.e.g. Kaz.
Also, eng kleng Digression, am Fall wou een et net weess. "Elbrus" ass esou
Eng aner kleng gezwongen Réckzuch. D'Tatsaach ass datt ech eemol mat Haussoftware beschäftegt hunn, wéi MSVS a Baguette RTOS. Ech hat Erfahrung mat Gewalt Komponente schaffen, dorënner engem Prozessor aus MCST. Dofir kann ech mat voller Verantwortung soen datt et eng gewësse Spezifizitéit an dësem Beräich ass an ech probéieren et net am Artikel ze beréieren. Wann ech wierklech wëll, setzen ech den Tag [TBD]. Also wäerte mir probéieren ouni direkt Trolling a banal Stéierungen ze maachen. Um Enn mussen d'russesch Verteidegungsindustrie a Regierungsagenturen verstane ginn. Grousst Land - klenge Budget .. [TBD].
Null Etapp - eroflueden. Et ass bemierkenswäert datt d'Nouvelle datt den Elbrus OS verfügbar ass eng Resonanz verursaacht huet, sou vill datt de Verdeelungsserver erofgaang ass. [TBD] Merci un Yandex an dem Ingenieur deen geduecht huet et dohinner ze plënneren. Also d'Downloadgeschwindegkeet ass gutt.
Déi éischt Stuf - Installatioun. Ech hunn et op den éischten Hypervisor installéiert, dee gratis benotzt gouf. Ech hunn zwee Kären zougewisen, e puer Optrëtter vum RAM, 32 MB fir Video (et gëtt eng grafesch Interface, hunn ech geduecht). D'Disk ass wéi gewinnt - 32 GB.
Ech hunn d'Installatioun ugefaangen. Ech hunn d'Installatiounsinstruktiounen net benotzt, also kann ech et net kommentéieren. D'TUI Installatioun Interface ass schwéier minimalistesch.
Gutt, mir kënnen ouni Maus maachen.
Ech hunn déi nächst Fënster op der zweeter Versuch gelongen. Firwat wielt net de Standardapparat sr0 [TBD] wann Dir vun der Disk installéiert?
Wielt d'CD-Rom Quell a fuert weider.
Wärend der Zäitzone auswielen, hunn ech op eemol gemierkt datt de System den Init Bootprozess benotzt, an ech schaffen vun TTY0.
OK, da loosst eis "Elbrus" als Gemeinschaft klassifizéieren
De Rescht ass bal onwichteg: mir setzen alles an averstanen. Ënnerwee fanne mir eraus datt de Kernel 3.14.79-13.84 benotzt gëtt. Hmm, Debian 7 hat 3.2 [TBD].
Als nächst wielt d'Standarddiskpartitionéierung an ... Mir gesinn eng Warnung:
Hmm, iergendwéi huet d'automatesch Partitionéierung net gutt mat enger 32 Gig Disk gepackt. Ech hunn d'Disk net geännert; Ech hunn d'Quest mat manueller Diskpartitionéierung am "All-in-One" Stil ofgeschloss. Ech hu missen ext3 installéieren, well /boot konnt net an ext4 sinn.
De System koum ouni Tëschefall op.
Déi zweet Stuf - Sich no Alternativen.
Nodeems ech d'Inhalter vun der zweeter Disk geraumt hunn, hunn ech gemierkt datt dëst e Repository mat zousätzlech ass. a Packagen. A kuckt op /etc/apt/sources.list, hunn ech gemierkt datt et an /mnt/cdrom muss montéiert ginn. Awer ech hunn /etc/os-release net fonnt. Awer et gëtt /etc/mcst-Versioun mat dem Inhalt 3.0-rc36. 3.0 ass wahrscheinlech d'Versioun - et schéngt ze passen, awer rc36? Am Allgemengen, wäert Drëtt Partei Software héchstwahrscheinlech dës Verdeelung op déi klassesch Manéier net erkennen.
An der Root-Partition fënnt den /mcst Verzeichnis meng Aen, an do, mat engem ënnerzegoen Häerz, hunn ech /mcst/backup entdeckt. Dat ass, et gëtt e Backup-Tool, an et ass an de System agebaut! "Ganz", hunn ech geduecht, "loosst eis kucken wéi dat funktionnéiert!"
Et huet sech erausgestallt datt et e 4Kb Bash-Skript /mcst/bin/Backup gëtt deen d'Dateikopéierung ubitt. Par défaut - an den /mcst/backup Verzeechnes. Am Quellcode hunn ech erwaart de Kommando rsync ze gesinn, awer et ass net an der Standardkonfiguratioun. De Skript kopéiert einfach Dateien. De Kommando gesäit sou eppes aus:
cp -rpdx <file backup> <file>
Déi ganz Datei /mcst/bin/backup ass heiEch warnen Iech direkt datt dëst Skript eleng net genuch ass fir voll ze verstoen. Et zitt Funktiounen aus /mcst/bin/source, wat eppes ass wéi eng Bibliothéik vu Funktiounen. Ech hunn et net abegraff (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
Obwuel, vläicht hunn ech eppes net verstanen? Vläicht kann iergendeen an de Kommentaren erklären: wéi garantéiert dëse Skript eng sécher an zouverléisseg Datebackup? [TBD]
rsync, iwwregens, ass am Add-on abegraff. Repositories. Versioun 3.1.3. Ech denken datt d'Benotzung vun rsync nach ëmmer eng besser Alternativ zu der /mcst/bin/Backup Applikatioun ass.
Als nächst hunn ech decidéiert eng frësch ze setzen Veeam Agent fir Linux. Eppes wäert froen: "Wat huet Veeam an Importsubstitutioun domat ze maachen?" Jo, et ass net am Register, awer et ass vun FSTEC zertifizéiert, dat heescht datt et an der Verontreiung vun Alternativen benotzt ka ginn. Ausgaben fofzéng Minutten op Alternativen aus
Stage Three - Installatioun vum Veeam Agent fir Linux.
Also, Veeam Agent fir Linux besteet aus zwee Packagen: de veeamsnap Kernel Modul (iwwregens,
Et gouf e klenge Problem mat der Installatioun vum Kernelmodul - de fehlenden dkms Package. Dëst ass e Service deen Iech erlaabt Kernel Moduler aus der Quell ze bauen. Als Regel ass et op all Deb Verdeelungen verfügbar. Ech hu missen et vun engem Drëtt Partei Deb Repository eroflueden. Eng Saach déi mech glécklech gemaach huet ass datt de Package net vun der Architektur hänkt, also passt et wéi eng gebierteg. Firwat war et net an der Lëscht vun verfügbare Packagen abegraff, oder éischter, net entwéckelt [TBD]? Vläicht gëtt ugeholl datt keen net-MCST Kernel Moduler bauen an ausféieren. Et gëtt wierklech eng Diskrepanz hei - well et Linux-Header gëtt. Dat ass, de Modul, wann Dir wëllt, kann mat der Hand zesummegesat ginn a vun engem Skript lancéiert ginn wann d'Maschinn ufänkt. Ech mengen Dir sollt net dacks Updates vu MCST [TBD] erwaarden.
"OK, de Modul ass installéiert - den haardsten Deel ass eriwwer", hunn ech geduecht ... De veeam Package fir den Deb Repository ass fir d'amd64 Plattform, an d'Elbrus OS huet eng x86_64 [TBD] Plattform. Den Ënnerscheed ass natierlech nëmmen am Numm, awer dësen Ënnerscheed mécht bal all Packagen vun Drëtt Partei Deb Repositories inkompatibel mam Elbrus OS. Dëst lästeg Mëssverständnis kann einfach eliminéiert ginn: einfach de Package ofbauen, d'Informatioun iwwer d'Architektur korrigéieren an erëm zesummesetzen. Wéi et ze maachen
mkdir tmp
dpkg-deb -R original.deb tmp
# edit DEBIAN/postinst
dpkg-deb -b tmp fixed.deb
En anere Problem ass Ofhängegkeet. Déi néideg Dateie schéngen do ze sinn, awer d'Packagen sinn net. Den Androck war datt d'Nimm vun de Packagen vun hiren "importéierten Analoga" ënnerscheeden. Vläicht sinn d'Bibliothéike anescht verpackt. Ech sinn net ze vill Detailer gaang, bal all Ofhängegkeete geläscht, an d'Installatioun ass viru gaangen.
Dunn sinn Probleemer mam Startcode vum Service entstanen. De Skript /lib/init/vars.sh fehlt. Aus e puer Grënn geréiert den Elbrus et ouni, also wäerte mir et och ewechhuelen. Als nächst musse mir d'Messageausgangsfunktioun ersetzen: d'log_daemon_msg a log_end_msg Funktiounen fehlen. Nodeems ech an der Datei /lib/lsb/init-functions geraumt hunn, hunn ech d'log_success_msg Funktioun fonnt - et wäert gutt fir eis fir Experimenter sinn. Iwwregens, an der /lib/lsb/init-functions Datei ass d'Linn "# Source SuSE's rc functions" um Ufank vun der [TBD] Datei.
No sou enger rauer Veraarbechtung vum Package mat enger Datei, gouf de ganze Maschinn Backup op der NFS Share erfollegräich gestart. De Backup Mount war och erfollegräich. Also, ech gleewen datt fir eng Maschinn mat der Elbrus PDK ze backen, "just esou" erofgelueden ouni Obligatiounen, Veeam Agent fir Linux ass definitiv gëeegent. Och no all Ännerungen mat engem Fichier.
Natierlech gëtt den Elbrus OS Verdeelungskit net formell ënnerstëtzt, well et net an der Lëscht vun ënnerstëtzten abegraff ass. Ausserdeem gouf de Veeam Agent fir Linux net vun der QA Departement getest, also déi. et gëtt keng Ënnerstëtzung (op d'mannst zum Zäitpunkt vun der Verëffentlechung vum Artikel).
Ech hoffen den Artikel wäert nëtzlech sinn fir déi, déi probéieren d'Bestellung Nr 334 vum 29.06.2017. Juni XNUMX ëmzesetzen. Meng fir Iech ... [TBD].
Source: will.com