ããã«ã¡ã¯ã
ããã¬ã«é¢ããæè¿ã®èšäº
ãŸãæåã«ãElbrus OSãã€ãŸã x86_64 ã¢ãŒããã¯ãã£ã§å©çšå¯èœãªãã£ã¹ããªãã¥ãŒã·ã§ã³ã®ã¿ãããŠã³ããŒããããããã©ã®ããã«æ©èœãããã確èªããVeeam Agent for Linux ãã€ã³ã¹ããŒã«ããŠã¿ãããšã«ããŸããã ãã®çµæãç¥ãããå Žåã¯ãcat ãåç
§ããŠãã ããã
ããã§ã誰ããç¥ããªãå Žåã«åããŠãã¡ãã£ãšããäœè«ã§ãã ããšã«ãã«ã¹ãã£ãŠãããªæã
ãŸããŸãå°èŠæš¡ãªåŒ·å¶æ€éã å®ã¯ç§ããã€ãŠMSVSãBaguette RTOSãªã©ã®åœç£ãœãããŠã§ã¢ãæ±ã£ãããšããããŸãã MCST ã®ããã»ããµãŒãªã©ãåœç£ã³ã³ããŒãã³ããæ±ã£ãçµéšããããŸããã ãããã£ãŠããã®åéã«ã¯ããçš®ã®ç¹æ®æ§ããããšç§ã¯è²¬ä»»ãæã£ãŠèšããŸãã®ã§ããã®èšäºã§ã¯è§Šããªãããã«ããŸãã ã©ãããŠããããå Žåã¯ãæªå®ãã¿ã°ãä»ããããŠããã ããŸãã ãããã£ãŠãç§ãã¡ã¯ãããããŸãªèãããå¹³å¡ãªããã声ãåºããã«æžãããã«åªããŸãã çµå±ã®ãšããããã·ã¢ã®é²è¡ç£æ¥ãšæ¿åºæ©é¢ãç解ããå¿ èŠãããã å€§åœ - äºç®ã¯å°ãªã.. [æªå®]ã
ãŒãã¹ããŒãž - ããŠã³ããŒãã Elbrus OS ãå©çšå¯èœã«ãªã£ããšãããã¥ãŒã¹ãåé¿ãåŒã³ãé åžãµãŒããŒãããŠã³ããã»ã©ã«ãªã£ãããšã¯æ³šç®ã«å€ããŸãã [æªå®] Yandex ãšãYandex ãããã«ç§»åããããšãèãããšã³ãžãã¢ã«æè¬ããŸãã ãããã£ãŠãããŠã³ããŒãé床ã¯è¯å¥œã§ãã
第1ã¹ããŒãž - åãä»ãã ç¡æã§äœ¿çšã§ããæåã®ãã€ããŒãã€ã¶ãŒã«ã€ã³ã¹ããŒã«ããŸããã 32 ã€ã®ã³ã¢ãæ°ã®ã¬ã® RAMããããªçšã« 32 MB ãå²ãåœãŠãŸãã (ã°ã©ãã£ã«ã« ã€ã³ã¿ãŒãã§ã€ã¹ããããšæããŸãã)ã ãã£ã¹ã¯ã¯éåžžã©ãã XNUMX GB ã§ãã
ã€ã³ã¹ããŒã«ãéå§ããŸããã ã€ã³ã¹ããŒã«æé ã¯äœ¿çšããªãã£ãã®ã§ãã³ã¡ã³ãã§ããŸããã TUI ã€ã³ã¹ããŒã« ã€ã³ã¿ãŒãã§ã€ã¹ã¯éåžžã«æå°éã«æããããŠããŸãã
ããã§ãããããŠã¹ãªãã§ã倧äžå€«ã§ãã
0 åç®ã®è©Šè¡ã§æ¬¡ã®ãŠã£ã³ããŠã管çã§ããŸããã ãã£ã¹ã¯ããã€ã³ã¹ããŒã«ãããšãã«ããã©ã«ãã®ããã€ã¹ srXNUMX [TBD] ãéžæããŠã¿ãŠã¯ãããã§ãããã?
CD-ROM ãœãŒã¹ãéžæããŠæ¬¡ã«é²ã¿ãŸãã
ã¿ã€ã ãŸãŒã³ãéžæããŠãããšãã«ãã·ã¹ãã ã init boot ããã»ã¹ã䜿çšããŠãããTTY0 ããäœæ¥ããŠããããšã«çªç¶æ°ã¥ããŸããã
OKãããã§ã¯ãElbrusããã³ãã¥ããã£ãšããŠåé¡ããŸããã
æ®ãã¯ã»ãšãã©éèŠã§ã¯ãããŸãããç§ãã¡ã¯ãã¹ãŠãå ¥ããŠåæããŸãã éäžã§ãã«ãŒãã«ã 3.14.79-13.84 ã䜿çšãããŠããããšãããããŸãã ããŒããDebian 7 ã«ã¯ 3.2 [TBD] ããããŸããã
次ã«ãããã©ã«ãã®ãã£ã¹ã¯ ããŒãã£ã·ã§ã³ãéžæãããš...èŠåã衚瀺ãããŸãã
ããŒããã©ããããããèªåããŒãã£ã·ã§ãã³ã°ã¯ 32 GB ã®ãã£ã¹ã¯ã«ããŸã察å¿ã§ããŸããã§ããã ãã£ã¹ã¯ã¯å€æŽãããããªãŒã«ã€ã³ã¯ã³ãã¹ã¿ã€ã«ã§æåã§ãã£ã¹ã¯ ããŒãã£ã·ã§ãã³ã°ãè¡ã£ãŠã¯ãšã¹ããå®äºããŸããã /boot 㯠ext3 ã«ã§ããªããããext4 ãã€ã³ã¹ããŒã«ããå¿
èŠããããŸããã
ã·ã¹ãã ã¯åé¡ãªãèµ·åããŸããã
第2æ - 代æ¿æ¡ãæ¢ããŸãã
3.0 çªç®ã®ãã£ã¹ã¯ã®å
容ã調ã¹ããšããããããè¿œå ã®ãªããžããªã§ããããšãããããŸããã ããã±ãŒãžã§ã /etc/apt/sources.list ãèŠããšã/mnt/cdrom ã«ããŠã³ãããå¿
èŠãããããšãããããŸããã ãããã/etc/os-release ãèŠã€ãããŸããã§ããã ãã ãã/etc/mcst-version ã®å
容㯠36-rc3.0 ã§ãã ããŒãžã§ã³ã¯ãããã 36 ã§ããé©åããããã§ãããrcXNUMX ã§ãã? äžè¬ã«ããµãŒãããŒã㣠ãœãããŠã§ã¢ã¯ãåŸæ¥ã®æ¹æ³ã§ã¯ãã®ãã£ã¹ããªãã¥ãŒã·ã§ã³ãèªèã§ããªãå¯èœæ§ãé«ããªããŸãã
ã«ãŒã ããŒãã£ã·ã§ã³ã§ /mcst ãã£ã¬ã¯ããªãç®ã«çãŸããèœã¡èŸŒãå¿ã§ /mcst/backup ãçºèŠããŸããã ã€ãŸããããã¯ã¢ãã ããŒã«ãã·ã¹ãã ã«çµã¿èŸŒãŸããŠããã®ã§ãã ãããããªããšç§ã¯æããŸãããããããã©ã®ããã«æ©èœãããèŠãŠã¿ãŸããã!ã
ãã¡ã€ã«ã®ã³ããŒãæäŸãã 4Kb bash ã¹ã¯ãªãã /mcst/bin/backup ãããããšãå€æããŸããã ããã©ã«ãã§ã¯ã/mcst/backup ãã£ã¬ã¯ããªã«ä¿åãããŸãã ãœãŒã¹ ã³ãŒãã«ã¯ rsync ã³ãã³ãããããšäºæ³ããŠããŸããããããã©ã«ãèšå®ã«ã¯ãããŸããã§ããã ã¹ã¯ãªããã¯åã«ãã¡ã€ã«ãã³ããŒããã ãã§ãã ã³ãã³ãã¯æ¬¡ã®ããã«ãªããŸãã
cp -rpdx <file backup> <file>
ãã¡ã€ã«å šäœ /mcst/bin/backup ã¯ããã«ãããŸããã®ã¹ã¯ãªããã ãã§ã¯å®å šã«ç解ããã®ã«ååã§ã¯ãªãããšãããã«èŠåããŸãã ããã¯ãé¢æ°ã®ã©ã€ãã©ãªã®ãããªãã®ã§ãã /mcst/bin/source ããé¢æ°ãååŸããŸãã å ¥ããŠãŸããã§ãã(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
ã§ããããããããäœãç解ã§ããªãã£ãã§ããããïŒ ãããã誰ããã³ã¡ã³ãã§èª¬æããŠãããã§ãããïŒãã®ã¹ã¯ãªããã¯ã©ã®ããã«ããŠå®å šã§ä¿¡é Œæ§ã®é«ãããŒã¿ããã¯ã¢ãããä¿èšŒããã®ã§ããããïŒ [æªå®]
ã¡ãªã¿ã«ãrsync ã¯ã¢ããªã³ã«å«ãŸããŠããŸãã ãªããžããªã ããŒãžã§ã³3.1.3ã rsync ã䜿çšããããšã¯ã/mcst/bin/backup ã¢ããªã±ãŒã·ã§ã³ã®ããè¯ã代æ¿æ段ã§ãããšæããŸãã
次ã«ãæ°ãããã®ãå
¥ããããšã«ããŸãã Linux çš Veeam ãšãŒãžã§ã³ãã ãVeeam ãšèŒžå
¥ä»£æ¿åã¯ãããšäœã®é¢ä¿ãããã®ã§ãã?ããšå°ãã人ãããã§ãããã ã¯ããç»é²ãããŠããŸããããFSTEC ã«ãã£ãŠèªå®ãããŠããããã代æ¿åããªãå Žåã§ã䜿çšã§ããŸãã ïœã®ä»£æ¿æ¡ã« XNUMX åãè²»ãã
ã¹ããŒãž3 â Linux çš Veeam ãšãŒãžã§ã³ãã®ã€ã³ã¹ããŒã«ã
ãããã£ãŠãVeeam Agent for Linux 㯠XNUMX ã€ã®ããã±ãŒãžã§æ§æãããŠããŸã: veeamsnap ã«ãŒãã« ã¢ãžã¥ãŒã« (ã¡ãªã¿ã«ã
ã«ãŒãã« ã¢ãžã¥ãŒã«ã®ã€ã³ã¹ããŒã«ã«ã¯ãdkms ããã±ãŒãžãæ¬ èœããŠãããšããå°ããªåé¡ã XNUMX ã€ãããŸããã ããã¯ããœãŒã¹ããã«ãŒãã« ã¢ãžã¥ãŒã«ããã«ãã§ãããµãŒãã¹ã§ãã ååãšããŠããã¹ãŠã® deb ãã£ã¹ããªãã¥ãŒã·ã§ã³ã§å©çšã§ããŸãã ãµãŒãããŒãã£ã® deb ãªããžããªããããŠã³ããŒãããå¿ èŠããããŸããã å¬ããã£ãã®ã¯ãããã±ãŒãžãã¢ãŒããã¯ãã£ã«äŸåããªãããããã€ãã£ãããã±ãŒãžã®ããã«ãã£ããããããšã§ãã ãªãå©çšå¯èœãªããã±ãŒãžã®ãªã¹ãã«å«ãŸããŠããªãã£ãã®ãããããã¯éçºãããªãã£ãã®ã§ãã [TBD]? ããããã誰ãé MCST ã«ãŒãã« ã¢ãžã¥ãŒã«ãæ§ç¯ããŠå®è¡ãã¹ãã§ã¯ãªããšèããããŠããŸãã Linux ããããŒããããããããã«ã¯å®éã«ççŸããããŸãã ã€ãŸããå¿ èŠã«å¿ããŠã¢ãžã¥ãŒã«ãæåã§çµã¿ç«ãŠããã·ã³ã®èµ·åæã«ã¹ã¯ãªããã«ãã£ãŠèµ·åã§ããŸãã MCST [æªå®] ããã®é »ç¹ãªæŽæ°ã¯æåŸ ããªãã»ãããããšæããŸãã
ãOKãã¢ãžã¥ãŒã«ãã€ã³ã¹ããŒã«ãããŸãã - æãé£ããéšåã¯çµãã£ãããšç§ã¯æããŸãã... deb ãªããžããªã® veeam ããã±ãŒãžã¯ amd64 ãã©ãããã©ãŒã çšã§ãããElbrus OS 㯠x86_64 [TBD] ãã©ãããã©ãŒã ãåããŠããŸãã ãã¡ãããéãã¯ååã ãã§ããããã®éãã«ããããµãŒãããŒãã£ã® deb ãªããžããªã®ã»ãŒãã¹ãŠã®ããã±ãŒãžã Elbrus OS ãšäºææ§ããªããªããŸãã ãã®è¿·æãªèª€è§£ã¯ç°¡åã«è§£æ¶ã§ããŸããããã±ãŒãžãéã¢ã»ã³ãã«ããã¢ãŒããã¯ãã£ã«é¢ããæ
å ±ãä¿®æ£ããŠãå
ã«æ»ãã ãã§ãã ã©ããã£ãŠããã®
mkdir tmp
dpkg-deb -R original.deb tmp
# edit DEBIAN/postinst
dpkg-deb -b tmp fixed.deb
ãã XNUMX ã€ã®åé¡ã¯äŸåé¢ä¿ã§ãã å¿ èŠãªãã¡ã€ã«ã¯ããããã«èŠããŸãããããã±ãŒãžããããŸããã ããã±ãŒãžã®ååããèŒžå ¥ãããé¡äŒŒåããšã¯ç°ãªããšããå°è±¡ã§ããã ãããããã©ã€ãã©ãªã®ããã±ãŒãžåãç°ãªã£ãŠããå¯èœæ§ããããŸãã ããŸã詳现ã«ã¯è§Šãããã»ãŒãã¹ãŠã®äŸåé¢ä¿ãåé€ããŠãã€ã³ã¹ããŒã«ãç¶è¡ããŸããã
ãã®åŸããµãŒãã¹éå§ã³ãŒãã«åé¡ãçºçããŸããã ã¹ã¯ãªãã /lib/init/vars.sh ããããŸããã§ããã äœããã®çç±ã§ãElbrus ã¯ãããªãã§ã管çã§ããã®ã§ããããåé€ããŸãã 次ã«ãã¡ãã»ãŒãžåºåé¢æ°ã眮ãæããå¿ èŠããããŸãããlog_daemon_msg é¢æ°ãš log_end_msg é¢æ°ãæ¬ èœããŠããŸããã /lib/lsb/init-functions ãã¡ã€ã«ãæ¢ãåã£ãçµæãlog_success_msg é¢æ°ãèŠã€ããŸãããããã¯å®éšã«åœ¹ç«ã¡ãŸãã ã¡ãªã¿ã«ã/lib/lsb/init-functions ãã¡ã€ã«ã§ã¯ã[TBD] ãã¡ã€ã«ã®å é ã«ã# Source SuSE`s rc functionããšããè¡ããããŸãã
ãã®ããã«ãã¡ã€ã«ã䜿çšããŠããã±ãŒãžã倧ãŸãã«åŠçããåŸãNFS å ±æäžã®ãã·ã³å šäœã®ããã¯ã¢ãããæ£åžžã«éå§ãããŸããã ããã¯ã¢ããã®ããŠã³ããæåããŸããã ãããã£ãŠãäœã®çŸ©åããªãããã®ãŸãŸãããŠã³ããŒããã Elbrus PDK ãåãããã·ã³ãããã¯ã¢ããããã«ã¯ãVeeam Agent for Linux ãééããªãé©ããŠãããšæããŸãã ãã¡ã€ã«ã§ãã¹ãŠã®å€æŽãè¡ã£ãåŸã§ãã
ãã¡ãããElbrus OS é åžãããã¯ãµããŒã察象ãªã¹ãã«å«ãŸããŠããªããããæ£åŒã«ã¯ãµããŒããããŠããŸããã ããã«ãVeeam Agent for Linux 㯠QA éšéã«ãã£ãŠãã¹ããããŠããŸããã (å°ãªããšãèšäºã®å ¬éæç¹ã§ã¯) ãµããŒãã¯ãããŸããã
ãã®èšäºãã334 幎 29.06.2017 æ XNUMX æ¥ã®åœä»€ç¬¬ XNUMX å·ãå®è¡ããããšããŠãã人ã
ã«åœ¹ç«ã€ããšãé¡ã£ãŠããŸãã ç§ã®ãã®ãããªãã«âŠ[æªå®]ã
åºæïŒ habr.com