Поздрав свима.
Недавни чланци о Хабреу
Пре свега, одлучио сам да преузмем Елбрус ОС, тачније, само доступну дистрибуцију за архитектуру к86_64, да видим како функционише и покушам да инсталирам Вееам Агент за Линук на њега. Ако желите да знате шта је изашло из овога, погледајте мачку.
Дакле, мала дигресија, ако неко не зна. „Елбрус“ је такав
Још једно мало принудно повлачење. Чињеница је да сам се некада бавио домаћим софтвером, као што су МСВС и Багуетте РТОС. Имао сам искуства у раду са домаћим компонентама, укључујући процесор из МЦСТ-а. Стога, могу са пуном одговорношћу да кажем да постоји одређена специфичност у овој области и трудићу се да је не дотичем у чланку. Када заиста желим, ставићу ознаку [ТБД]. Зато ћемо покушати без директног троловања и баналног кукања. На крају, руску одбрамбену индустрију и владине агенције треба разумети. Велика земља - мали буџет.. [ТБД].
Зеро стаге - преузимање. Важно је напоменути да је вест да је Елбрус ОС постао доступан изазвала резонанцију, толико да је сервер за дистрибуцију пао. [ТБД] Хвала Иандек-у и инжењеру који је смислио да га премести тамо. Дакле, брзина преузимања је добра.
Прва фаза - инсталација. Инсталирао сам га на првом хипервизору који је био доступан за бесплатно коришћење. Одвојио сам два језгра, пар гига РАМ-а, 32 МБ за видео (постојаће графички интерфејс, мислио сам). Диск је као и обично - 32 ГБ.
Почео сам инсталацију. Нисам користио упутства за инсталацију, тако да не могу да коментаришем. ТУИ инсталациони интерфејс је веома минималистички.
Па, супер, можемо и без миша.
Успео сам у следећем прозору из другог покушаја. Зашто не бисте изабрали подразумевани уређај ср0 [ТБД] приликом инсталирања са диска?
Изаберите ЦД-РОМ извор и наставите даље.
Док сам бирао временску зону, изненада сам схватио да систем користи инит боот процес, а ја радим са ТТИ0.
У реду, онда хајде да класификујемо „Елбрус“ као заједницу
Остало је готово неважно: стављамо све и слажемо се. Успут сазнајемо да се кернел користи 3.14.79-13.84. Хмм, Дебиан 7 је имао 3.2 [ТБД].
Затим изаберите подразумевано партиционисање диска и... Видимо упозорење:
Хмм, некако се аутоматско партиционисање није добро носило са диском од 32 гигабајта. Нисам променио диск, завршио сам потрагу са ручним партиционисањем диска у стилу „све у једном“. Морао сам да инсталирам ект3, пошто /боот није могао бити у ект4.
Систем је прошао без инцидената.
Друга фаза - тражење алтернатива.
Након што сам претурао по садржају другог диска, схватио сам да је ово спремиште са додатним. у пакетима. И гледајући /етц/апт/соурцес.лист, схватио сам да га треба монтирати у /мнт/цдром. Али нисам нашао /етц/ос-релеасе. Али постоји /етц/мцст-верзија са садржајем 3.0-рц36. 3.0 је вероватно верзија - изгледа да одговара, али рц36? Генерално, софтвер треће стране највероватније неће моћи да препозна ову дистрибуцију на класичан начин.
У основној партицији, директоријум /мцст ми упада у очи, и тамо, са срцем који тоне, открио сам /мцст/бацкуп. То јест, постоји алатка за прављење резервних копија, и она је уграђена у систем! „Одлично“, помислио сам, „Да видимо како ово функционише!“
Испоставило се да постоји басх скрипта од 4Кб /мцст/бин/бацкуп која омогућава копирање датотека. Подразумевано - у директоријум /мцст/бацкуп. Очекивао сам да ћу у изворном коду видети команду рсинц, али она није у подразумеваној конфигурацији. Скрипта једноставно копира датотеке. Команда изгледа отприлике овако:
cp -rpdx <file backup> <file>
Цела датотека /мцст/бин/бацкуп је овдеОдмах вас упозоравам да овај сценарио сам по себи није довољан за потпуно разумевање. Повлачи функције из /мцст/бин/соурце, што је нешто попут библиотеке функција. Нисам га укључио (44КБ).
#!/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
Мада, можда нешто нисам разумео? Можда неко може да објасни у коментарима: како ова скрипта обезбеђује сигурну и поуздану резервну копију података? [ТБД]
рсинц је, иначе, укључен у додатак. спремишта. Верзија 3.1.3. Мислим да је коришћење рсинц и даље боља алтернатива апликацији /мцст/бин/бацкуп.
Затим сам одлучио да ставим нови Вееам Агент за Линук. Неко ће питати: „Какве везе Вееам и замена увоза имају с тим?“ Да, није у регистру, али је сертификован од ФСТЕЦ-а, што значи да се у недостатку алтернатива може користити. Проводећи петнаест минута на алтернативе из
фаза три — инсталација Вееам Агент-а за Линук.
Дакле, Вееам Агент за Линук се састоји од два пакета: модул кернела вееамснап (успут,
Постојао је један мали проблем са инсталирањем модула кернела - недостајући дкмс пакет. Ово је услуга која вам омогућава да направите модуле кернела из извора. По правилу је доступан на свим деб дистрибуцијама. Морао сам да га преузмем из деб спремишта треће стране. Једна ствар која ме је обрадовала је то што пакет не зависи од архитектуре, па се уклапа као изворни. Зашто није уврштен на листу доступних пакета, односно није развијен [ТБД]? Можда се претпоставља да нико не треба да прави и покреће било које модуле кернела који нису МЦСТ. Овде заиста постоји неслагање - пошто постоје линук-заглавља. То јест, модул се, по жељи, може саставити ручно и покренути скриптом када се машина покрене. Мислим да не бисте требали очекивати честа ажурирања од МЦСТ-а [ТБД].
„У реду, модул је инсталиран – најтежи део је завршен“, помислио сам... Вееам пакет за деб спремиште је за платформу амд64, а Елбрус ОС има к86_64 [ТБД] платформу. Разлика је, наравно, само у имену, али ова разлика чини скоро све пакете из деб репозиторијума трећих страна некомпатибилним са Елбрус ОС-ом. Овај досадни неспоразум се може једноставно елиминисати: само раставите пакет, исправите информације о архитектури и поново га саставите. Како се то ради
mkdir tmp
dpkg-deb -R original.deb tmp
# edit DEBIAN/postinst
dpkg-deb -b tmp fixed.deb
Други проблем су зависности. Чини се да потребне датотеке постоје, али пакети нису. Утисак је био да се називи пакета разликују од њихових „увезених аналога”. Можда су библиотеке другачије упаковане. Нисам улазио превише у детаље, уклонио сам скоро све зависности и инсталација је кренула.
Тада су се појавили проблеми са кодом за почетак услуге. Недостајала је скрипта /либ/инит/варс.сх. Елбрус се из неког разлога сналази и без њега, па ћемо и њега уклонити. Затим смо морали да заменимо функцију излаза поруке: недостајале су функције лог_даемон_мсг и лог_енд_мсг. Након што сам претурао по датотеци /либ/лсб/инит-фунцтионс, нашао сам функцију лог_суццесс_мсг - биће нам добра за експерименте. Иначе, у датотеци /либ/лсб/инит-фунцтионс ред „# Соурце СуСЕ`с рц фунцтионс“ налази се на почетку датотеке [ТБД].
После овако грубе обраде пакета са датотеком, успешно је покренута резервна копија целе машине на НФС дељеном простору. Резервно монтирање је такође било успешно. Дакле, верујем да је за прављење резервне копије машине са Елбрус ПДК-ом, преузетом „баш тако“ без икаквих обавеза, Вееам Агент за Линук дефинитивно прикладан. Чак и након свих модификација са датотеком.
Наравно, дистрибутивни комплет Елбрус ОС није формално подржан, јер није укључен у листу подржаних. Поред тога, Вееам Агент за Линук није тестиран на њему од стране КА одељења, тако да они. нема подршке (бар у време објављивања чланка).
Надам се да ће чланак бити користан онима који покушавају да спроведу наредбу број 334 од 29.06.2017. јуна XNUMX. године. Моје теби... [ТБД].
Извор: ввв.хабр.цом