Hej alla.
Senaste artiklar om Habré
Först och främst bestämde jag mig för att ladda ner Elbrus OS, eller snarare, bara den tillgängliga distributionen för x86_64-arkitekturen, se hur det fungerar och försök installera Veeam Agent för Linux på det. Om du vill veta vad som kom ut av detta, se katt.
Så, en liten utvikning, om någon inte vet. "Elbrus" är så
Ännu en liten påtvingad reträtt. Faktum är att jag en gång sysslade med inhemsk programvara, som MSVS och Baguette RTOS. Jag hade erfarenhet av att arbeta med inhemska komponenter, inklusive en processor från MCST. Därför kan jag med fullt ansvar säga att det finns en viss specificitet på detta område och jag kommer att försöka att inte beröra det i artikeln. När jag verkligen vill sätter jag taggen [TBD]. Så vi ska försöka klara oss utan direkt trolling och banala stön. I slutändan måste den ryska försvarsindustrin och statliga myndigheter förstås. Stort land - liten budget.. [TBD].
Noll steg - ladda ner. Det är anmärkningsvärt att nyheten att Elbrus OS har blivit tillgängligt orsakade resonans, så mycket att distributionsservern gick ner. [TBD] Tack till Yandex och ingenjören som tänkte flytta den dit. Så nedladdningshastigheten är bra.
Det första steget - installation. Jag installerade den på den första hypervisorn som var tillgänglig för fri användning. Jag tilldelade två kärnor, ett par spelningar RAM, 32 MB för video (det kommer att finnas ett grafiskt gränssnitt, trodde jag). Disken är som vanligt - 32 GB.
Jag startade installationen. Jag använde inte installationsinstruktionerna, så jag kan inte kommentera det. TUI-installationsgränssnittet är extremt minimalistiskt.
Bra, vi klarar oss utan en mus.
Jag klarade nästa fönster på andra försöket. Varför inte välja standardenheten sr0 [TBD] när du installerar från disk?
Välj CD-ROM-källa och gå vidare.
När jag valde tidszon insåg jag plötsligt att systemet använder startprocessen, och jag arbetar från TTY0.
OK, låt oss då klassificera "Elbrus" som en gemenskap
Resten är nästan oviktigt: vi lägger allt och är överens. Längs vägen får vi reda på att kärnan används 3.14.79-13.84. Hmm, Debian 7 hade 3.2 [TBD].
Välj sedan standarddiskpartitioneringen och... Vi ser en varning:
Hmm, på något sätt klarade den automatiska partitioneringen inte bra med en 32 gig disk. Jag ändrade inte disken; jag slutförde uppdraget med manuell diskpartitionering i "allt-i-ett"-stilen. Jag var tvungen att installera ext3, eftersom /boot inte kunde vara i ext4.
Systemet kom upp utan incidenter.
Det andra steget - söka efter alternativ.
Efter att ha rotat igenom innehållet på den andra skivan insåg jag att detta är ett arkiv med ytterligare. i paket. Och när jag tittade på /etc/apt/sources.list insåg jag att den måste monteras i /mnt/cdrom. Men jag hittade inte /etc/os-release. Men det finns /etc/mcst-version med innehållet 3.0-rc36. 3.0 är förmodligen versionen - den verkar passa, men rc36? I allmänhet kommer programvara från tredje part sannolikt inte att kunna känna igen denna distribution på det klassiska sättet.
I rotpartitionen fångar katalogen /mcst mitt öga, och där, med ett sjunkande hjärta, upptäckte jag /mcst/backup. Det vill säga, det finns ett säkerhetskopieringsverktyg, och det är inbyggt i systemet! "Jättebra", tänkte jag, "låt oss se hur det här fungerar!"
Det visade sig att det finns ett 4Kb bash-skript /mcst/bin/backup som ger filkopiering. Som standard - till katalogen /mcst/backup. I källkoden förväntade jag mig att se kommandot rsync, men det är inte i standardkonfigurationen. Skriptet kopierar helt enkelt filer. Kommandot ser ut ungefär så här:
cp -rpdx <file backup> <file>
Hela filen /mcst/bin/backup finns härJag varnar dig direkt att det här manuset ensamt inte räcker för att helt förstå. Den hämtar funktioner från /mcst/bin/source, vilket är ungefär som ett bibliotek med funktioner. Jag inkluderade det inte (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
Fast jag kanske inte förstod något? Kanske kan någon förklara i kommentarerna: hur säkerställer detta skript en säker och pålitlig säkerhetskopiering av data? [TBD]
rsync, förresten, ingår i tillägget. förråd. Version 3.1.3. Jag tror att användningen av rsync fortfarande är ett bättre alternativ till /mcst/bin/backup-applikationen.
Därefter bestämde jag mig för att lägga en ny Veeam Agent för Linux. Någon kommer att fråga: "Vad har Veeam och importsubstitution att göra med det?" Ja, det finns inte i registret, men det är certifierat av FSTEC, vilket innebär att det i avsaknad av alternativ kan användas. Att lägga femton minuter på alternativ från
Steg tre — installation av Veeam Agent för Linux.
Så Veeam Agent för Linux består av två paket: veeamsnap-kärnmodulen (förresten,
Det fanns ett litet problem med att installera kärnmodulen - det saknade dkms-paketet. Detta är en tjänst som låter dig bygga kärnmoduler från källkod. Som regel finns det på alla debdistributioner. Jag var tvungen att ladda ner den från ett deb-förråd från tredje part. En sak som gjorde mig glad är att paketet inte är beroende av arkitekturen, så det passar som en infödd. Varför ingick det inte i listan över tillgängliga paket, eller snarare inte utvecklat [TBD]? Kanske antas det att ingen ska bygga och köra några icke-MCST-kärnmoduler. Det finns verkligen en diskrepans här - eftersom det finns linux-headers. Det vill säga att modulen, om så önskas, kan monteras för hand och startas av ett script när maskinen startar. Jag tror att du inte ska förvänta dig frekventa uppdateringar från MCST [TBD].
"OK, modulen är installerad - den svåraste delen är över," tänkte jag... Veeam-paketet för deb-förvaret är för amd64-plattformen, och Elbrus OS har en x86_64 [TBD]-plattform. Skillnaden ligger naturligtvis bara i namnet, men denna skillnad gör att nästan alla paket från tredjepartsdeb-lager är inkompatibla med Elbrus OS. Detta irriterande missförstånd kan helt enkelt elimineras: plocka bara isär paketet, korrigera informationen om arkitekturen och sätt ihop det igen. Hur man gör det
mkdir tmp
dpkg-deb -R original.deb tmp
# edit DEBIAN/postinst
dpkg-deb -b tmp fixed.deb
Ett annat problem är beroenden. De nödvändiga filerna verkar finnas där, men paketen är det inte. Intrycket var att namnen på förpackningarna skilde sig från deras "importerade analoger". Kanske är biblioteken paketerade annorlunda. Jag gick inte in på för mycket detaljer, tog bort nästan alla beroenden och installationen gick vidare.
Sedan uppstod problem med tjänstens startkod. Skriptet /lib/init/vars.sh saknades. Av någon anledning klarar sig Elbrus utan den, så vi tar bort den också. Därefter var vi tvungna att ersätta meddelandeutgångsfunktionen: log_daemon_msg och log_end_msg funktionerna saknades. Efter att ha rotat runt i filen /lib/lsb/init-functions hittade jag funktionen log_success_msg - den kommer att vara bra för oss för experiment. Förresten, i filen /lib/lsb/init-functions finns raden "# Source SuSE:s rc-funktioner" i början av [TBD]-filen.
Efter en sådan grov bearbetning av paketet med en fil, lanserades säkerhetskopieringen av hela maskinen på NFS-resursen framgångsrikt. Säkerhetskopieringen lyckades också. Så, jag tror, för att säkerhetskopiera en maskin med Elbrus PDK, laddad ner "bara sådär" utan några skyldigheter, är Veeam Agent för Linux definitivt lämplig. Även efter alla ändringar med en fil.
Naturligtvis stöds inte distributionssatsen Elbrus OS formellt, eftersom den inte ingår i listan över de som stöds. Dessutom testades inte Veeam Agent för Linux på den av QA-avdelningen, så de. det finns inget stöd (åtminstone vid tidpunkten för publicering av artikeln).
Jag hoppas att artikeln kommer att vara användbar för dem som försöker implementera order nr 334 av den 29.06.2017 juni XNUMX. Min till dig... [TBD].
Källa: will.com