Sampurasun sadayana.
Artikel panganyarna ngeunaan Habré
Anu mimiti, kuring mutuskeun pikeun ngundeur Elbrus OS, atawa rada, ngan distribusi sadia pikeun arsitektur x86_64, tingali kumaha gawéna, sarta nyoba install Veeam Agén pikeun Linux Ubuntu. Upami anjeun hoyong terang naon anu kaluar tina ieu, mangga tingali ucing.
Ku kituna, a digression leutik, bisi aya nu teu nyaho. "Elbrus" sapertos kitu
Lain leutik kapaksa mundur. Kanyataan yén kuring pernah ngurus parangkat lunak domestik, sapertos MSVS sareng Baguette RTOS. Kuring kungsi pangalaman gawé bareng komponén domestik, kaasup processor ti MCST. Kukituna, kuring tiasa nyarios kalayan tanggung jawab pinuh yén aya spésifisitas anu tangtu di daérah ieu sareng ieu anu kuring bakal nyobian henteu nyabak dina tulisan éta. Nalika Abdi hoyong pisan, abdi bakal nempatkeun tag [TBD]. Ku kituna urang bakal coba ngalakukeun tanpa trolling outright jeung moaning banal. Tungtungna, industri pertahanan Rusia sareng lembaga pamaréntahan kedah kahartos. Nagara badag - anggaran leutik.. [TBD].
Tahap nol - ngundeur. Éta noteworthy yén warta yén Elbrus OS geus sadia ngabalukarkeun résonansi a, jadi loba nu server distribution turun. [TBD] Hatur nuhun ka Yandex sareng insinyur anu panginten ngalih ka dinya. Jadi speed download téh alus.
Tahap Kahiji - pamasangan. Kuring dipasang dina hypervisor munggaran anu sayogi gratis. Kuring nyayogikeun dua inti, sababaraha gigs RAM, 32 MB pikeun pidéo (bakal aya antarmuka grafis, panginten). Disk sapertos biasa - 32 GB.
Kuring ngamimitian pamasangan. Abdi henteu nganggo petunjuk instalasi, janten kuring henteu tiasa mairan. Antarbeungeut pamasangan TUI parah pisan minimalis.
Nya, saé, urang tiasa ngalakukeun tanpa beurit.
Kuring junun jandela hareup dina try kadua. Naha henteu milih alat standar sr0 [TBD] nalika masang tina disk?
Pilih sumber CD-ROM jeung ngaléngkah.
Nalika milih zona waktos, kuring ujug-ujug sadar yén sistem nganggo prosés boot init, sareng kuring damel ti TTY0.
OKÉ, teras hayu urang mengklasifikasikan "Elbrus" salaku komunitas
Sésana ampir teu penting: urang nempatkeun sadayana sareng satuju. Sapanjang jalan, urang manggihan yén kernel dipaké 3.14.79-13.84. Hmm, Debian 7 ngagaduhan 3.2 [TBD].
Salajengna, pilih partisi disk standar sareng... Kami ningali peringatan:
Hmm, kumaha bae partisi otomatis teu Cope ogé kalawan 32 manggung disk. Kuring teu ngarobah disk; Kuring réngsé quest kalawan partisi disk manual dina gaya "sadayana-dina-hiji". Kuring kungsi install ext3, saprak / boot teu bisa di ext4.
Sistem muncul tanpa kajadian.
Tahap kadua - milarian alternatif.
Saatos rummaging ngaliwatan eusi disk kadua, abdi sadar yén ieu téh Repository kalawan tambahan. dina bungkusan. Sareng ningali /etc/apt/sources.list, kuring sadar yén éta kedah dipasang dina /mnt/cdrom. Tapi kuring henteu mendakan /etc/os-release. Tapi aya /etc/mcst-version kalawan eusi 3.0-rc36. 3.0 meureun versi - sigana cocog, tapi rc36? Sacara umum, parangkat lunak pihak katilu sigana moal tiasa ngakuan distribusi ieu ku cara klasik.
Dina partisi akar, diréktori / mcst nangkep panon kuring, sareng di dinya, kalayan haté anu tilelep, kuring mendakan /mcst/backup. Nyaéta, aya alat cadangan, sareng éta diwangun kana sistem! "Hebat," saur kuring, "Hayu urang tingali kumaha ieu jalanna!"
Tétéla aya skrip bash 4Kb /mcst/bin/backup anu nyayogikeun file salinan. Sacara standar - kana diréktori /mcst/cadangan. Dina kode sumber kuring diperkirakeun ningali paréntah rsync, tapi teu di konfigurasi standar. Skrip ngan saukur nyalin file. Paréntah sigana sapertos kieu:
cp -rpdx <file backup> <file>
Sakabéh file /mcst/bin/backup aya di dieuKuring ngingetkeun anjeun langsung yén naskah ieu nyalira teu cukup pikeun pinuh ngartos. Éta narik fungsi tina /mcst/bin/source, anu mangrupikeun perpustakaan fungsi. Abdi henteu kalebet (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
Sanajan, meureun kuring teu ngarti hal? Panginten aya anu tiasa ngajelaskeun dina koméntar: kumaha naskah ieu mastikeun cadangan data anu aman sareng dipercaya? [TBD]
rsync, saliwatan, kaasup kana add-on. repositories. Vérsi 3.1.3. Jigana ngagunakeun rsync masih alternatif hadé kana /mcst/bin/aplikasi cadangan.
Salajengna, abdi mutuskeun pikeun nempatkeun hiji seger Agén Veeam pikeun Linux. Aya anu bakal naros: "Naon hubunganana Veeam sareng substitusi impor sareng éta?" Sumuhun, éta teu di register, tapi ieu Certified ku FSTEC, nu hartina dina henteuna alternatif eta bisa dipaké. Méakkeun lima belas menit dina alternatif tina
Panggung Tilu - pamasangan Veeam Agent pikeun Linux.
Janten, Veeam Agent for Linux diwangun ku dua pakét: modul kernel veeamsnap (nyaéta,
Aya hiji masalah leutik kalawan masang modul kernel - pakét dkms leungit. Ieu mangrupikeun jasa anu ngamungkinkeun anjeun ngawangun modul kernel tina sumber. Sakumaha aturan, éta sayogi dina sadaya distribusi deb. Kuring kedah ngaunduh éta tina gudang deb pihak katilu. Hiji hal anu ngajadikeun kuring bagja nyaéta yén pakét henteu gumantung kana arsitéktur, janten pas sapertos anu asli. Naha éta henteu kalebet dina daptar bungkusan anu sayogi, atanapi langkungna, henteu dikembangkeun [TBD]? Panginten panginten teu aya anu kedah ngawangun sareng ngajalankeun modul kernel non-MCST. Nyaan aya bédana di dieu - sabab aya linux-headers. Nyaéta, modul, upami hoyong, tiasa dirakit ku leungeun sareng diluncurkeun ku naskah nalika mesin ngamimitian. Jigana anjeun teu kedah nyangka apdet sering ti MCST [TBD].
"OKÉ, modul dipasang - bagian hardest geus réngsé," Teu sangka ... Paket veeam pikeun Repository deb pikeun platform amd64, sarta Elbrus OS boga x86_64 [TBD] platform. Bédana, tangtosna, ngan ukur dina nami, tapi bédana ieu ngajantenkeun ampir sadaya bungkusan ti repositori deb pihak katilu teu cocog sareng Elbrus OS. Salah paham anu ngaganggu ieu tiasa dileungitkeun ngan saukur: ngan ukur ngabongkar bungkusan, ngabenerkeun inpormasi ngeunaan arsitéktur sareng ngahijikeun deui. Kumaha carana ngalakukeun eta
mkdir tmp
dpkg-deb -R original.deb tmp
# edit DEBIAN/postinst
dpkg-deb -b tmp fixed.deb
Masalah sanésna nyaéta katergantungan. Berkas anu diperyogikeun sigana aya, tapi bungkusan henteu. Gambaran éta yén nami bungkusan bénten tina "analogi impor"na. Panginten perpustakaan-perpustakaan dibungkus béda. Abdi henteu langkung seueur detil, ngaleungitkeun ampir sadaya katergantungan, sareng pamasangan teras diteruskeun.
Lajeng masalah mecenghul kalayan kode mimiti jasa. Aksara /lib/init/vars.sh leungit. Kanggo sababaraha alesan, Elbrus ngatur tanpa éta, janten kami ogé bakal ngahapus. Salajengna, urang kedah ngagentos fungsi kaluaran pesen: fungsi log_daemon_msg sareng log_end_msg leungit. Saatos rummaging sabudeureun dina / lib / lsb / file init-fungsi, kuring manggihan fungsi log_success_msg - éta alus keur urang keur percobaan. Ku jalan kitu, dina file /lib/lsb/init-functions baris "# Source SuSE`s rc functions" aya dina awal file [TBD].
Saatos ngolah kasar pakét sareng file, cadangan sadaya-mesin dina saham NFS parantos diluncurkeun. Gunung cadangan ogé suksés. Janten, kuring yakin, pikeun nyadangkeun mesin sareng Elbrus PDK, diunduh "sapertos kitu" tanpa kawajiban, Veeam Agent pikeun Linux pasti cocog. Malah sanggeus sagala modifikasi jeung file a.
Tangtosna, kit distribusi Elbrus OS henteu dirojong sacara resmi, sabab éta henteu kalebet dina daptar anu dirojong. Salaku tambahan, Veeam Agent pikeun Linux henteu diuji ku departemen QA, janten éta. teu aya dukungan (sahenteuna dina waktos publikasi artikel).
Mugi-mugi artikel ieu tiasa mangfaat kanggo anu bade ngalaksanakeun Paréntah No 334 kaping 29.06.2017 Juni XNUMX. milik anjeun ... [TBD].
sumber: www.habr.com