Hammaga salom.
Habré haqidagi so'nggi maqolalar
Avvalo, men Elbrus OS-ni, aniqrog'i, faqat x86_64 arxitekturasi uchun mavjud tarqatishni yuklab olishga, uning qanday ishlashini ko'rishga va unga Linux uchun Veeam Agent-ni o'rnatishga qaror qildim. Agar bundan nima chiqqanini bilmoqchi bo'lsangiz, mushukka qarang.
Shunday qilib, kimdir bilmasa, kichik bir chekinish. "Elbrus" xuddi shunday
Yana bir kichik majburiy chekinish. Gap shundaki, men bir vaqtlar MSVS va Baguette RTOS kabi mahalliy dasturlar bilan shug'ullanganman. Mahalliy komponentlar, shu jumladan MCST protsessorlari bilan ishlash tajribam bor edi. Shuning uchun men to'liq mas'uliyat bilan aytishim mumkinki, bu sohada ma'lum bir o'ziga xoslik bor va men maqolada unga tegmaslikka harakat qilaman. Men chindan ham xohlasam, [TBD] tegini qo'yaman. Shunday qilib, biz ochiqchasiga trolling va nola qilmasdan qilishga harakat qilamiz. Oxir-oqibat, Rossiya mudofaa sanoati va davlat idoralarini tushunish kerak. Katta davlat - kichik byudjet.. [TBD].
Nolinchi bosqich - yuklab olish. Shunisi e'tiborga loyiqki, Elbrus OS mavjud bo'lganligi haqidagi xabar rezonansga sabab bo'ldi, shuning uchun tarqatish serveri ishlamay qoldi. [TBD] Yandex va uni u erga ko'chirishni o'ylagan muhandisga rahmat. Shunday qilib, yuklab olish tezligi yaxshi.
birinchi bosqichi - o'rnatish. Men uni bepul foydalanish mumkin bo'lgan birinchi gipervizorga o'rnatdim. Men ikkita yadro, bir nechta operativ xotira, video uchun 32 MB ajratdim (grafik interfeys bo'ladi, deb o'yladim). Disk odatdagidek - 32 GB.
Men o'rnatishni boshladim. Men o'rnatish ko'rsatmalaridan foydalanmadim, shuning uchun unga izoh berolmayman. TUI o'rnatish interfeysi juda minimalist.
Xo'sh, ajoyib, biz sichqonchasiz ham qila olamiz.
Men ikkinchi urinishda keyingi oynani boshqardim. Nima uchun diskdan o'rnatishda standart qurilma sr0 [TBD] ni tanlamaysiz?
CD-ROM manbasini tanlang va davom eting.
Vaqt mintaqasini tanlashda men to'satdan tizim ishga tushirish jarayonidan foydalanishini tushunib etdim va men TTY0 dan ishlayapman.
OK, keling, "Elbrus" ni hamjamiyat sifatida tasniflaymiz
Qolganlari deyarli ahamiyatsiz: biz hamma narsani qo'yamiz va rozi bo'lamiz. Yo'l davomida biz yadro 3.14.79-13.84 ishlatilganligini bilib olamiz. Hmm, Debian 7 da 3.2 [TBD] bor edi.
Keyin, standart disk bo'limini tanlang va... Biz ogohlantirishni ko'ramiz:
Hmm, qandaydir tarzda avtomatik bo'linish 32 gig disk bilan yaxshi ishlamadi. Men diskni o'zgartirmadim, men topshiriqni "hamma birida" uslubida diskni qo'lda bo'lish bilan yakunladim. Men ext3-ni o'rnatishim kerak edi, chunki /boot ext4-da bo'lishi mumkin emas edi.
Tizim hech qanday hodisasiz ishga tushdi.
Ikkinchi bosqich - muqobil variantlarni izlash.
Ikkinchi diskning mazmunini ko'rib chiqqach, men bu qo'shimchali ombor ekanligini angladim. paketlarda. Va /etc/apt/sources.list ga qarab, men uni /mnt/cdrom-ga o'rnatish kerakligini angladim. Lekin men /etc/os-release-ni topa olmadim. Ammo 3.0-rc36 mazmuniga ega /etc/mcst-version mavjud. 3.0, ehtimol, versiya - bu mos ko'rinadi, lekin rc36? Umuman olganda, uchinchi tomon dasturiy ta'minoti, ehtimol, bu taqsimotni klassik tarzda taniy olmaydi.
Ildiz bo'limida /mcst katalogi mening ko'zimni tortadi va u erda men chuqur yurak bilan /mcst/backup-ni topdim. Ya'ni, zaxira vositasi mavjud va u tizimga o'rnatilgan! "Ajoyib", deb o'yladim men, "Keling, bu qanday ishlashini ko'raylik!"
Ma'lum bo'lishicha, faylni nusxalashni ta'minlaydigan 4Kb bash skripti /mcst/bin/backup mavjud. Odatiy bo'lib - /mcst/backup katalogiga. Manba kodida men rsync buyrug'ini ko'rishni kutgandim, lekin u standart konfiguratsiyada emas. Skript shunchaki fayllarni nusxalaydi. Buyruq shunday ko'rinadi:
cp -rpdx <file backup> <file>
Butun fayl /mcst/bin/backup bu yerdaMen sizni darhol ogohlantiraman, bu skriptning o'zi to'liq tushunish uchun etarli emas. U funksiyalarni /mcst/bin/source dan tortib oladi, bu funksiyalar kutubxonasi kabi. Men uni qo'shmaganman (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
Garchi, ehtimol men biror narsani tushunmadim? Ehtimol, kimdir izohlarda tushuntirishi mumkin: bu skript qanday qilib xavfsiz va ishonchli ma'lumotlarni zaxiralashni ta'minlaydi? [TBD]
rsync, aytmoqchi, qo'shimchaga kiritilgan. omborlar. 3.1.3 versiyasi. Menimcha, rsync dan foydalanish hali ham /mcst/bin/backup ilovasiga yaxshiroq muqobildir.
Keyin men yangisini qo'yishga qaror qildim Linux uchun Veeam agent. Kimdir so'raydi: "Veeam va import o'rnini bosishning bunga nima aloqasi bor?" Ha, u reestrda yo'q, lekin u FSTEC tomonidan sertifikatlangan, ya'ni muqobillar bo'lmasa, undan foydalanish mumkin. Muqobil variantlarga o'n besh daqiqa sarflash
Uchinchi bosqich — Linux uchun Veeam Agentni o'rnatish.
Shunday qilib, Linux uchun Veeam Agent ikkita paketdan iborat: veeamsnap yadro moduli (darvoqe,
Yadro modulini o'rnatishda bitta kichik muammo bor edi - etishmayotgan dkms paketi. Bu manbadan yadro modullarini yaratish imkonini beruvchi xizmatdir. Qoida tariqasida, u barcha debi tarqatishlarda mavjud. Men uni uchinchi tomon debi omboridan yuklab olishim kerak edi. Meni xursand qilgan narsa shundaki, paket arxitekturaga bog'liq emas, shuning uchun u mahalliy kabi mos keladi. Nega u mavjud paketlar ro'yxatiga kiritilmagan, aniqrog'i [TBD] ishlab chiqilmagan? Ehtimol, hech kim MCST bo'lmagan yadro modullarini yaratmasligi va ishga tushirmasligi kerak deb taxmin qilinadi. Bu erda haqiqatan ham nomuvofiqlik bor - chunki Linux-sarlavhalari mavjud. Ya'ni, agar so'ralsa, modulni qo'lda yig'ish va mashina ishga tushganda skript orqali ishga tushirish mumkin. Menimcha, siz MCST [TBD] dan tez-tez yangilanishlarni kutmasligingiz kerak.
“OK, modul o‘rnatildi – eng qiyin qismi tugadi”, deb o‘yladim... Deb ombori uchun veeam paketi amd64 platformasi uchun, Elbrus OSda esa x86_64 [TBD] platformasi mavjud. Farqi, albatta, faqat nomda, ammo bu farq uchinchi tomon deb nomli omborlaridan deyarli barcha paketlarni Elbrus OS bilan mos kelmaydi. Bu zerikarli tushunmovchilikni oddiygina yo'q qilish mumkin: shunchaki paketni qismlarga ajratish, arxitektura haqidagi ma'lumotlarni to'g'rilash va uni bir joyga qo'yish kifoya. Buni qanday qilish kerak
mkdir tmp
dpkg-deb -R original.deb tmp
# edit DEBIAN/postinst
dpkg-deb -b tmp fixed.deb
Yana bir muammo - bu qaramlik. Kerakli fayllar borga o'xshaydi, lekin paketlar yo'q. Paketlarning nomlari ularning "import qilingan analoglari" dan farq qilgani taassurot qoldirdi. Ehtimol, kutubxonalar boshqacha tarzda paketlangan. Men juda ko'p tafsilotlarga kirmadim, deyarli barcha bog'liqliklarni olib tashladim va o'rnatish davom etdi.
Keyin xizmatni boshlash kodi bilan bog'liq muammolar paydo bo'ldi. /lib/init/vars.sh skripti yo'q edi. Ba'zi sabablarga ko'ra, Elbrus busiz boshqaradi, shuning uchun biz uni ham olib tashlaymiz. Keyinchalik, biz xabarni chiqarish funksiyasini almashtirishimiz kerak edi: log_daemon_msg va log_end_msg funksiyalari yo'q edi. /lib/lsb/init-functions faylini aylanib chiqqach, log_success_msg funksiyasini topdim - bu biz uchun tajribalar uchun yaxshi bo'ladi. Aytgancha, /lib/lsb/init-functions faylida “# Source SuSE`s rc functions” qatori [TBD] faylining boshida joylashgan.
Paketni fayl bilan qo'pol qayta ishlashdan so'ng, NFS ulushidagi butun mashinaning zaxira nusxasi muvaffaqiyatli ishga tushirildi. Zaxira o'rnatish ham muvaffaqiyatli bo'ldi. Shunday qilib, menimcha, hech qanday majburiyatsiz "xuddi shunday" yuklab olingan Elbrus PDK bilan mashinaning zaxira nusxasini yaratish uchun Linux uchun Veeam Agent albatta mos keladi. Fayl bilan barcha o'zgarishlardan keyin ham.
Albatta, Elbrus OS tarqatish to'plami rasmiy ravishda qo'llab-quvvatlanmaydi, chunki u qo'llab-quvvatlanadiganlar ro'yxatiga kiritilmagan. Bundan tashqari, Linux uchun Veeam Agent QA bo'limi tomonidan sinovdan o'tkazilmagan, shuning uchun ular. hech qanday qo'llab-quvvatlash yo'q (hech bo'lmaganda maqola nashr etilganda).
Umid qilamanki, maqola 334 yil 29.06.2017 iyundagi XNUMX-son buyrug'ini amalga oshirishga harakat qilayotganlar uchun foydali bo'ladi. Meni senga... [TBD].
Manba: www.habr.com