Halo kabeh.
Artikel paling anyar babagan Habré
Kaping pisanan, aku mutusake download Elbrus OS, utawa mung distribusi sing kasedhiya kanggo arsitektur x86_64, ndeleng cara kerjane, lan nyoba nginstal Veeam Agent kanggo Linux. Yen sampeyan pengin ngerti apa sing metu saka iki, deleng kucing.
Dadi, digression cilik, yen ana sing ora ngerti. "Elbrus" kaya ngono
Liyane mundur dipeksa cilik. Kasunyatan iku aku tau urusan karo piranti lunak domestik, kayata MSVS lan Baguette RTOS. Aku duwe pengalaman nggarap komponen domestik, kalebu prosesor saka MCST. Mulane, aku bisa ngomong kanthi tanggung jawab yen ana spesifik tartamtu ing wilayah iki lan aku bakal nyoba ora ndemek ing artikel kasebut. Yen pancene pengin, aku bakal menehi tag [TBD]. Dadi kita bakal nyoba kanggo nindakake tanpa trolling outright lan moaning banal. Ing pungkasan, industri pertahanan Rusia lan lembaga pemerintah kudu dimangerteni. Negara gedhe - anggaran cilik.. [TBD].
Tahap nol - download. Wigati dimangerteni manawa kabar yen Elbrus OS wis kasedhiya nyebabake resonansi, saengga server distribusi mudhun. [TBD] Matur nuwun kanggo Yandex lan insinyur sing mikir mindhah menyang kana. Dadi kacepetan download apik.
Tataran kapisan - panginstalan. Aku diinstal ing hypervisor pisanan sing kasedhiya kanggo free nggunakake. Aku diparengake loro intine, saperangan gigs RAM, 32 MB kanggo video (bakal ana antarmuka grafis, Aku panginten). Disk kaya biasane - 32 GB.
Aku miwiti instalasi. Aku ora nggunakake instruksi instalasi, dadi aku ora bisa menehi komentar. Antarmuka instalasi TUI pancen minimalis.
Inggih, apik, kita bisa nindakake tanpa mouse.
Aku ngatur jendhela sabanjuré ing nyoba kapindho. Napa ora milih piranti standar sr0 [TBD] nalika nginstal saka disk?
Pilih sumber CD-ROM lan nerusake.
Nalika milih zona wektu, Aku dumadakan temen maujud sing sistem nggunakake proses boot init, lan aku digunakake saka TTY0.
OK, banjur nggolongake "Elbrus" minangka komunitas
Liyane meh ora penting: kita sijine kabeh lan setuju. Sadawane dalan, kita ngerteni manawa kernel digunakake 3.14.79-13.84. Hmm, Debian 7 duwe 3.2 [TBD].
Sabanjure, pilih partisi disk standar lan ... Kita ndeleng bebaya:
Hmm, piye wae pemisahan otomatis ora bisa ngatasi disk 32 gig. Aku ora ngganti disk; Aku ngrampungake nggoleki kanthi partisi disk manual kanthi gaya "kabeh-ing-siji". Aku kudu nginstal ext3, amarga / boot ora bisa ing ext4.
Sistem kasebut muncul tanpa kedadeyan.
Tahap kapindho - nelusuri alternatif.
Sawise rummaging liwat isi disk kapindho, Aku temen maujud sing iki gudang karo tambahan. ing paket. Lan ndeleng ing /etc/apt/sources.list, Aku temen maujud sing kudu dipasang ing /mnt/cdrom. Nanging aku ora nemokake /etc/os-release. Nanging ana /etc/mcst-version karo isi 3.0-rc36. 3.0 mbokmenawa versi - misale jek pas, nanging rc36? Umumé, piranti lunak pihak katelu kemungkinan ora bisa ngenali distribusi iki kanthi cara klasik.
Ing partisi root, direktori / mcst nyekel mripatku, lan ing kana, kanthi ati sing klelep, aku nemokake /mcst/backup. Sing, ana alat serep, lan wis dibangun ing sistem! "Apik," pikirku, "Ayo dideleng kepiye cara iki!"
Ternyata ana skrip bash 4Kb /mcst/bin/backup sing nyedhiyakake salinan file. Kanthi gawan - menyang direktori /mcst/backup. Ing kode sumber aku samesthine ndeleng rsync printah, nanging ora ing konfigurasi gawan. Skrip mung nyalin file. Printah katon kaya iki:
cp -rpdx <file backup> <file>
Kabeh file /mcst/bin/backup ana ing keneAku langsung ngelingake yen naskah iki mung ora cukup kanggo ngerti kanthi lengkap. Iku narik fungsi saka / mcst / bin / sumber, kang kaya perpustakaan fungsi. Aku ora kalebu (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
Senajan, Mungkin aku ora ngerti soko? Mungkin ana sing bisa nerangake ing komentar: kepiye skrip iki njamin serep data sing aman lan dipercaya? [TBD]
rsync, kanthi cara, kalebu ing add-on. repositori. Versi 3.1.3. Aku nggunakake rsync isih alternatif sing luwih apik kanggo / mcst / bin / aplikasi serep.
Sabanjure, aku mutusake kanggo nyelehake sing seger Agen Veeam kanggo Linux. Ana sing bakal takon: "Apa hubungane Veeam lan substitusi impor?" Ya, ora ana ing daftar, nanging wis disertifikasi dening FSTEC, tegese yen ora ana alternatif bisa digunakake. Nglampahi limalas menit ing alternatif saka
Panggung Telung - instalasi Veeam Agent kanggo Linux.
Dadi, Veeam Agent kanggo Linux kasusun saka rong paket: modul kernel veeamsnap (kanthi cara,
Ana masalah cilik nalika nginstal modul kernel - paket dkms sing ilang. Iki minangka layanan sing ngidini sampeyan mbangun modul kernel saka sumber. Minangka aturan, kasedhiya ing kabeh distribusi deb. Aku kudu ngundhuh saka repositori deb pihak katelu. Siji-sijine sing nggawe aku seneng yaiku paket kasebut ora gumantung karo arsitektur, mula cocog karo wong asli. Napa ora kalebu ing dhaptar paket sing kasedhiya, utawa ora dikembangake [TBD]? Mbok menawa ora ana sing kudu mbangun lan mbukak modul kernel non-MCST. Pancen ana bedo ing kene - amarga ana linux-header. Yaiku, modul kasebut, yen dikarepake, bisa dirakit kanthi tangan lan diluncurake kanthi naskah nalika mesin diwiwiti. Aku sampeyan ora kudu ngarep-arep nganyari saka MCST [TBD].
"OK, modul wis diinstal - bagean paling angel wis rampung," Aku panginten ... Paket veeam kanggo repositori deb kanggo platform amd64, lan Elbrus OS wis x86_64 [TBD] platform. Bentenipun, mesthi, mung ing jeneng, nanging prabédan iki ndadekake meh kabeh paket saka repositori deb pihak katelu ora kompatibel karo Elbrus OS. Kesalahpahaman sing ngganggu iki bisa diilangi kanthi gampang: mung mbongkar paket kasebut, mbenerake informasi babagan arsitektur lan sijine maneh. Carane nindakake
mkdir tmp
dpkg-deb -R original.deb tmp
# edit DEBIAN/postinst
dpkg-deb -b tmp fixed.deb
Masalah liyane yaiku dependensi. File sing dibutuhake katon ana, nanging paket kasebut ora ana. Kesan kasebut yaiku jeneng paket kasebut beda karo "analog sing diimpor". Mbok menawa perpustakaan dikemas kanthi beda. Aku ora nerangake kakehan rinci, mbusak meh kabeh dependensi, lan instalasi nerusake.
Banjur masalah muncul karo kode wiwitan layanan. Skrip /lib/init/vars.sh ilang. Kanggo sawetara alesan, Elbrus ngatur tanpa iku, supaya kita uga bakal mbusak. Sabanjure, kita kudu ngganti fungsi output pesen: fungsi log_daemon_msg lan log_end_msg ilang. Sawise ngubengi file / lib / lsb / init-functions, aku nemokake fungsi log_success_msg - bakal apik kanggo eksperimen. Miturut cara, ing file /lib/lsb/init-functions baris "# Source SuSE`s rc functions" ana ing wiwitan file [TBD].
Sawise proses kasar saka paket kasebut kanthi file, serep kabeh mesin ing bagean NFS kasil diluncurake. Gunung serep uga sukses. Dadi, aku yakin, kanggo nggawe serep mesin karo Elbrus PDK, diundhuh "kaya" tanpa kewajiban, Veeam Agent kanggo Linux mesthi cocok. Malah sawise kabeh modifikasi karo file.
Mesthine, kit distribusi Elbrus OS ora didhukung sacara resmi, amarga ora kalebu ing dhaptar sing didhukung. Kajaba iku, Veeam Agent kanggo Linux ora dites dening departemen QA, dadi sing. ora ana dhukungan (paling ora nalika diterbitake artikel).
Muga-muga artikel kasebut bisa migunani kanggo sing nyoba ngetrapake pesenan nomer 334 tanggal 29.06.2017 Juni XNUMX. Kula kanggo sampeyan ... [TBD].
Source: www.habr.com