Kumusta tanan.
Bag-ong mga artikulo bahin sa Habré
Una sa tanan, nakahukom ko nga i-download ang Elbrus OS, o hinoon, ang anaa lamang nga pag-apod-apod alang sa x86_64 nga arkitektura, tan-awa kung giunsa kini pagtrabaho, ug pagsulay sa pag-instalar sa Veeam Agent para sa Linux niini. Kung gusto nimo mahibal-an kung unsa ang migawas niini, palihug tan-awa ang iring.
Busa, usa ka gamay nga pagtipas, kung adunay wala makahibalo. Ang "Elbrus" ingon niana
Laing gamay nga pinugos nga pag-atras. Ang tinuod mao nga kaniadto nakiglabot ako sa lokal nga software, sama sa MSVS ug Baguette RTOS. Ako adunay kasinatian sa pagtrabaho sa mga domestic nga sangkap, lakip ang usa ka processor gikan sa MCST. Busa, makaingon ako uban ang bug-os nga responsibilidad nga adunay usa ka piho nga espesipiko sa kini nga lugar ug sulayan nako nga dili kini mahikap sa artikulo. Kung gusto gyud nako, ibutang nako ang tag [TBD]. Mao nga sulayan namon nga buhaton nga wala’y direkta nga pag-trolling ug pag-agulo. Sa katapusan, ang industriya sa depensa sa Russia ug mga ahensya sa gobyerno kinahanglan nga masabtan. Dako nga nasud - gamay nga badyet.. [TBD].
Zero nga yugto - download. Mamatikdan nga ang balita nga ang Elbrus OS nahimo nang hinungdan sa usa ka resonance, mao nga ang server sa pag-apod-apod nahulog. [TBD] Salamat sa Yandex ug sa engineer nga nakahunahuna sa pagbalhin niini didto. Busa ang katulin sa pag-download maayo.
Ang unang yugto - pag-instalar. Gi-install nako kini sa una nga hypervisor nga magamit nga libre. Gigahin nako ang duha ka mga cores, usa ka magtiayon nga gig sa RAM, 32 MB alang sa video (adunay usa ka graphical interface, sa akong hunahuna). Ang disk sama sa naandan - 32 GB.
Gisugdan nako ang pag-instalar. Wala nako gigamit ang mga panudlo sa pag-install, mao nga dili ako makakomento bahin niini. Ang interface sa pag-install sa TUI hilabihan ka minimalist.
Aw, maayo, mahimo nato nga walay mouse.
Gidumala nako ang sunod nga bintana sa ikaduhang pagsulay. Ngano nga dili pilion ang default device sr0 [TBD] kung mag-install gikan sa disk?
Pilia ang tinubdan sa CD-ROM ug padayon.
Samtang nagpili sa time zone, kalit nakong naamgohan nga ang sistema naggamit sa init nga proseso sa boot, ug nagtrabaho ako gikan sa TTY0.
OK, unya atong klasipikasyon ang "Elbrus" isip usa ka komunidad
Ang uban halos dili importante: gibutang namo ang tanan ug nagkauyon. Sa dalan, nahibal-an namon nga ang kernel gigamit 3.14.79-13.84. Hmm, ang Debian 7 adunay 3.2 [TBD].
Sunod, pilia ang default disk partitioning ug... Nakakita mi og pasidaan:
Hmm, sa usa ka paagi ang awtomatik nga pagbahin dili maayo sa usa ka 32 gig disk. Wala nako giusab ang disk; Nakompleto nako ang pagpangita gamit ang manual disk partitioning sa "all-in-one" nga istilo. Kinahanglan kong i-install ang ext3, tungod kay ang /boot dili mahimo sa ext4.
Ang sistema mitungha nga walay insidente.
Ang ikaduhang yugto - pagpangita alang sa mga alternatibo.
Human sa pagpangita sa mga sulod sa ikaduha nga disk, nakaamgo ko nga kini mao ang usa ka repository uban sa dugang. sa mga pakete. Ug sa pagtan-aw sa /etc/apt/sources.list, akong naamgohan nga kini kinahanglan nga i-mount sa /mnt/cdrom. Apan wala nako makit-an ang /etc/os-release. Apan adunay /etc/mcst-version nga adunay sulod nga 3.0-rc36. 3.0 tingali ang bersyon - kini daw angay, apan ang rc36? Sa kinatibuk-an, ang software sa ikatulo nga partido lagmit dili makaila niini nga pag-apod-apod sa klasikal nga paagi.
Sa root partition, ang /mcst nga direktoryo nakakuha sa akong mata, ug didto, uban sa usa ka naunlod nga kasingkasing, akong nadiskobrehan /mcst/backup. Kana mao, adunay usa ka backup nga himan, ug kini gitukod sa sistema! “Nindot,” naghunahuna ko, “Atong tan-awon kon sa unsang paagi kini molihok!”
Kini nahimo nga adunay usa ka 4Kb bash script /mcst/bin/backup nga naghatag og pagkopya sa file. Sa default - sa /mcst/backup nga direktoryo. Sa source code akong gilauman nga makita ang rsync command, apan wala kini sa default configuration. Ang script nagkopya lang sa mga file. Ang sugo ingon niini:
cp -rpdx <file backup> <file>
Ang tibuok file /mcst/bin/backup ania dinhiGipasidan-an ko ikaw dayon nga kini nga script lamang dili igo aron hingpit nga masabtan. Gibira niini ang mga gimbuhaton gikan sa /mcst/bin/source, nga sama sa librarya sa mga gimbuhaton. Wala nako kini giapil (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
Bisan pa, tingali wala ako makasabut sa usa ka butang? Tingali adunay makapatin-aw sa mga komento: giunsa kini nga script pagsiguro nga luwas ug kasaligan nga pag-backup sa datos? [TBD]
rsync, sa dalan, gilakip sa add-on. mga tipiganan. Bersyon 3.1.3. Sa akong hunahuna ang paggamit sa rsync usa gihapon ka mas maayo nga alternatibo sa /mcst/bin/backup nga aplikasyon.
Sunod, nakahukom ko nga magbutang ug bag-o Veeam Ahente alang sa Linux. Adunay mangutana: "Unsa may kalabotan sa Veeam ug import substitution niini?" Oo, wala kini sa rehistro, apan gipamatud-an kini sa FSTEC, nga nagpasabot nga kung wala ang mga alternatibo kini magamit. Paggugol ug kinse ka minuto sa mga alternatibo gikan sa
Stage Tulo - pag-instalar sa Veeam Agent alang sa Linux.
Busa, ang Veeam Agent alang sa Linux naglangkob sa duha ka mga pakete: ang veeamsnap kernel module (sa dalan,
Adunay usa ka gamay nga problema sa pag-install sa kernel module - ang nawala nga dkms package. Kini usa ka serbisyo nga nagtugot kanimo sa paghimo sa mga module sa kernel gikan sa gigikanan. Ingon sa usa ka lagda, kini anaa sa tanan nga deb distributions. Kinahanglan nako nga i-download kini gikan sa usa ka third-party nga deb repository. Usa ka butang nga nakapalipay kanako mao nga ang pakete wala magdepende sa arkitektura, mao nga kini mohaum sama sa usa ka lumad. Ngano nga wala kini gilakip sa lista sa magamit nga mga pakete, o hinoon, wala gipalambo [TBD]? Tingali gituohan nga walay usa nga kinahanglan magtukod ug magpadagan sa bisan unsang non-MCST kernel modules. Adunay gyud usa ka kalainan dinhi - tungod kay adunay mga linux-header. Sa ato pa, ang module, kung gusto, mahimong tipunon pinaagi sa kamot ug ilunsad pinaagi sa usa ka script kung magsugod ang makina. Sa akong hunahuna dili ka magdahom nga kanunay nga mga update gikan sa MCST [TBD].
"OK, ang module na-install - ang pinakalisud nga bahin nahuman na," ako naghunahuna ... Ang veeam package alang sa deb repository kay para sa amd64 nga plataporma, ug ang Elbrus OS adunay x86_64 [TBD] nga plataporma. Ang kalainan, siyempre, anaa lamang sa ngalan, apan kini nga kalainan naghimo sa halos tanan nga mga pakete gikan sa mga third-party nga deb repository nga dili mahiuyon sa Elbrus OS. Kining makalagot nga dili pagsinabtanay mahimong mawagtang sa yano: i-disassemble lang ang pakete, itul-id ang impormasyon bahin sa arkitektura ug ibalik kini. Unsaon pagbuhat niini
mkdir tmp
dpkg-deb -R original.deb tmp
# edit DEBIAN/postinst
dpkg-deb -b tmp fixed.deb
Ang laing problema mao ang dependencies. Ang gikinahanglan nga mga file daw anaa, apan ang mga pakete wala. Ang impresyon mao nga ang mga ngalan sa mga pakete lahi sa ilang "imported analogues". Tingali lahi ang pagkaputos sa mga librarya. Wala ko maghisgot ug daghang detalye, gitangtang ang halos tanang dependency, ug nagpadayon ang pag-instalar.
Unya mitumaw ang mga problema sa service start code. Ang script /lib/init/vars.sh nawala. Sa pila ka rason, nagdumala si Elbrus nga wala kini, mao nga tangtangon usab namo kini. Sunod, kinahanglan namong ilisan ang message output function: ang log_daemon_msg ug log_end_msg function nawala. Human sa pagpangita sa /lib/lsb/init-functions file, akong nakit-an ang log_success_msg function - kini maayo alang kanato alang sa mga eksperimento. Pinaagi sa dalan, sa /lib/lsb/init-functions file ang linya nga "# Source SuSE's rc functions" anaa sa sinugdanan sa [TBD] file.
Pagkahuman sa ingon ka grabe nga pagproseso sa pakete nga adunay usa ka file, ang tibuuk nga makina nga backup sa bahin sa NFS malampuson nga gilunsad. Nagmalampuson usab ang backup mount. Mao nga, nagtuo ko nga alang sa pag-backup sa usa ka makina sa Elbrus PDK, na-download nga "sama ra" nga wala’y obligasyon, ang Veeam Agent alang sa Linux siguradong angay. Bisan human sa tanan nga mga pagbag-o sa usa ka file.
Siyempre, ang Elbrus OS distribution kit dili pormal nga gisuportahan, tungod kay wala kini gilakip sa listahan sa mga gisuportahan. Dugang pa, ang Veeam Agent para sa Linux wala gisulayan sa departamento sa QA, mao nga ang mga. walay suporta (labing menos sa panahon sa pagmantala sa artikulo).
Nanghinaut ko nga ang artikulo mahimong mapuslanon sa mga naningkamot sa pagpatuman sa mando No. 334 sa Hunyo 29.06.2017, XNUMX. Ang akoa kanimo... [TBD].
Source: www.habr.com