Ndewonu onye obula.
Akụkọ ọhụrụ gbasara Habré
Nke mbụ, ekpebiri m ibudata Elbrus OS, ma ọ bụ karịa, ọ bụ naanị nkesa dị maka ụlọ ọrụ x86_64, hụ ka o si arụ ọrụ, wee gbalịa ịwụnye Veeam Agent maka Linux na ya. Ọ bụrụ na ịchọrọ ịma ihe si na nke a pụta, biko hụ pusi.
Ya mere, obere digression, ma ọ bụrụ na mmadụ amaghị. "Elbrus" dị otú ahụ
Obere mgbagha nke mmanye ọzọ. Nke bụ́ eziokwu bụ na otu oge m na-emeso sọftụwia ụlọ, dị ka MSVS na Baguette RTOS. Enwere m ahụmịhe na-arụ ọrụ na akụrụngwa ụlọ, gụnyere ihe nrụpụta sitere na MCST. Ya mere, enwere m ike ịsị na ọrụ zuru oke na enwere ụfọdụ nkọwa na mpaghara a ma m ga-agbalị ka m ghara imetụ ya aka na isiokwu ahụ. Mgbe m chọrọ n'ezie, m ga-etinye mkpado [TBD]. Ya mere, anyị ga-agbalị ime na-enweghị trolling kpọmkwem na banal-asụ ude. N'ikpeazụ, ọ dị mkpa ka a ghọta ụlọ ọrụ nchekwa Russia na ụlọ ọrụ gọọmentị. Nnukwu obodo - obere mmefu ego .. [TBD].
Ogbo efu - budata. Ọ bụ ihe kwesịrị ịrịba ama na ozi ọma na Elbrus OS aghọọla mere ka a resonance, nke mere na nkesa nkesa gbadara. [TBD] Daalụ Yandex na onye injinia chere ịkwaga ya ebe ahụ. Ya mere ọsọ nbudata dị mma.
The akpa ogbo - echichi. M tinye ya na hypervisor nke mbụ dị maka iji n'efu. Enyere m cores abụọ, gigs nke RAM, 32 MB maka vidiyo (a ga-enwe interface eserese, echere m). Disk dị ka ọ dị na mbụ - 32 GB.
M malitere echichi. Ejighị m ntuziaka nwụnye, yabụ enweghị m ike ịza ajụjụ na ya. Ihe nrụnye TUI dị ntakịrị.
Ọfọn, nnukwu, anyị nwere ike ime na-enweghị òké.
Ejisiri m windo na-esote na mbọ nke abụọ. Kedu ihe kpatara na ị gaghị ahọrọ ngwaọrụ ndabara sr0 [TBD] mgbe ị na-etinye na diski?
Họrọ isi iyi CD-ROM wee gaa n'ihu.
Mgbe m na-ahọrọ mpaghara oge, achọpụtara m na mberede na sistemụ na-eji usoro buut init, ana m arụ ọrụ site na TTY0.
OK, ka anyị kewaa "Elbrus" dịka obodo
Ndị ọzọ fọrọ nke nta ka ọ bụrụ ihe na-adịghị mkpa: anyị na-etinye ihe niile ma kwenye. N'akụkụ ụzọ, anyị na-achọpụta na a na-eji kernel 3.14.79-13.84. Hmm, Debian 7 nwere 3.2 [TBD].
Ọzọ, họrọ nkebi diski ndabara na... Anyị na-ahụ ịdọ aka ná ntị:
Hmm, n'ụzọ ụfọdụ nkewa akpaka anabataghị nke ọma na diski gig 32. Agbanweghị m diski ahụ; Emechara m ọchịchọ ahụ site na nkebi diski akwụkwọ ntuziaka na ụdị "niile-in-one". Ekwesịrị m ịwụnye ext3, ebe / buut enweghị ike ịdị na ext4.
Sistemu bịara n'enweghị ihe ọ bụla.
Nke abụọ - chọọ ụzọ ọzọ.
Mgbe m nwetasịrị ihe dị na diski nke abụọ, achọpụtara m na nke a bụ ebe nchekwa na mgbakwunye. na ngwugwu. Na ilele /etc/apt/sources.list, achọpụtara m na ọ dị mkpa ka etinye ya na /mnt/cdrom. Mana ahụghị m /etc/os-release. Mana enwere /etc/mcst-ụdị nwere ọdịnaya 3.0-rc36. 3.0 nwere ike ịbụ ụdị - ọ dị ka ọ dabara, mana rc36? N'ozuzu, ngwanrọ nke ndị ọzọ agaghị enwe ike ịmata nkesa a n'ụzọ oge gboo.
Na mgbọrọgwụ nkebi, akwụkwọ ndekọ / mcst na-ejide anya m, ma n'ebe ahụ, na obi na-ada mbà, achọpụtara m / mcst/backup. Ya bụ, e nwere ngwá ọrụ ndabere, ma etinyere ya n'ime usoro ahụ! "Ọ dị mma," ka m chere, "Ka anyị hụ ka nke a si arụ ọrụ!"
Ọ tụgharịrị na enwere 4Kb bash script /mcst/bin/ndabere na-enye iṅomi faịlụ. Site na ndabara - gaa na /mcst/ndabere ndabere. Na koodu isi iyi m tụrụ anya ịhụ iwu rsync, mana ọ bụghị na nhazi ndabara. Edemede ahụ na-eṅomi faịlụ naanị. Iwu ahụ dị ka nke a:
cp -rpdx <file backup> <file>
Faịlụ niile /mcst/bin/backup dị ebe aM na-adọ gị aka ná ntị ozugbo na naanị edemede a ezughị iji ghọta nke ọma. Ọ na-ewepụ ọrụ site na /mcst/bin/source, nke bụ ihe dị ka ọba akwụkwọ nke ọrụ. Etinyeghị m ya (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
Agbanyeghị, ma eleghị anya, aghọtaghị m ihe? Ma eleghị anya, mmadụ nwere ike ịkọwa na nkwupụta: kedu ka edemede a si eme ka ndabere data dị mma na nke a pụrụ ịdabere na ya? [TBD]
rsync, n'ụzọ, gụnyere na mgbakwunye. ebe nchekwa. Ụdị 3.1.3. Echere m na iji rsync ka bụ ihe ọzọ dị mma na /mcst/bin/ndabere ngwa.
Ọzọ, ekpebiri m itinye nke ọhụrụ Veeam Agent maka Linux. Mmadụ ga-ajụ: "Gịnị ka Veeam na nnọchi mbubata nwere metụtara ya?" Ee, ọ bụghị na ndekọ, mana FSTEC kwadoro ya, nke pụtara na ọ bụrụ na enweghị ihe ọzọ enwere ike iji ya. Na-emefu nkeji iri na ise na ụzọ ọzọ si
Nkeji atọ - ntinye nke Veeam Agent maka Linux.
Yabụ, Veeam Agent maka Linux nwere ngwugwu abụọ: veeamsnap kernel modul (n'agbanyeghị,
Enwere otu obere nsogbu na ịwụnye modul kernel - ngwugwu dkms efu. Nke a bụ ọrụ na-enye gị ohere ịmepụta modul kernel site na isi iyi. Dịka iwu, ọ dị na nkesa ụgwọ niile. Ekwesịrị m ibudata ya na ebe nchekwa ego ndị ọzọ. Otu ihe mere m obi ụtọ bụ na ngwugwu anaghị adabere na ụkpụrụ ụlọ, ya mere ọ dabara dị ka onye obodo. Kedu ihe kpatara na etinyeghị ya na ndepụta ngwugwu dị, ma ọ bụ kama emebebeghị [TBD]? Ikekwe a na-eche na ọ nweghị onye kwesịrị ịrụ ma rụọ modul kernel ọ bụla na-abụghị MCST. N'ezie enwere ọdịiche ebe a - ebe ọ bụ na e nwere linux-headers. Ya bụ, modul, ma ọ bụrụ na achọrọ, enwere ike iji aka chịkọta ya wee malite edemede mgbe igwe malitere. Echere m na ị gaghị atụ anya mmelite ugboro ugboro site na MCST [TBD].
"Ọ dị mma, arụnyere modul ahụ - akụkụ kacha sie ike agwụla," echere m ... ngwugwu veeam maka ebe nchekwa ego bụ maka amd64 ikpo okwu, na Elbrus OS nwere usoro x86_64 [TBD]. Ihe dị iche, n'ezie, bụ naanị n'aha, mana ọdịiche a na-eme ka ihe fọrọ nke nta ka ọ bụrụ nchịkọta niile sitere na ebe nchekwa ego ndị ọzọ na-ekwekọghị na Elbrus OS. Enwere ike iwepụ nghọtahie a na-akpasu iwe n'ụzọ dị mfe: naanị ịkwasa ngwugwu ahụ, dozie ozi gbasara ihe owuwu ahụ ma tinyeghachi ya ọnụ. Otu esi eme ya
mkdir tmp
dpkg-deb -R original.deb tmp
# edit DEBIAN/postinst
dpkg-deb -b tmp fixed.deb
Nsogbu ọzọ bụ ịdabere. Faịlụ ndị dị mkpa dị ka ọ dị, mana ngwugwu adịghị. Echiche ahụ bụ na aha ngwugwu ahụ dị iche na "analọgụ ebubata" ha. Ikekwe, a na-achịkọta ọba akwụkwọ ndị ahụ n'ụzọ dị iche. Anaghị m abanye n'ime oke nkọwa, wepụ ihe fọrọ nke nta ka ọ bụrụ ihe niile dabere, na nrụnye gara n'ihu.
Mgbe ahụ nsogbu bilitere na koodu mmalite ọrụ. Edemede /lib/init/vars.sh na-efu. Maka ihe ụfọdụ, Elbrus na-achịkwa na-enweghị ya, yabụ anyị ga-ewepụ ya. Ọzọ, anyị ga-eji dochie ọrụ mmepụta ozi: log_daemon_msg na log_end_msg ọrụ na-efu. Mgbe agbachara gburugburu na faịlụ /lib/lsb/init-functions, ahụrụ m ọrụ log_success_msg - ọ ga-adịrị anyị mma maka nnwale. Site n'ụzọ, na /lib/lsb/init-functions faịlụ ahịrị "# Source SuSE`s rc function" dị na mmalite nke faịlụ [TBD].
Mgbe nhazi ihe siri ike nke ngwugwu ahụ na faịlụ, a na-ewepụta nkwado ndabere igwe dum na òkè NFS nke ọma. Ugwu ndabere ahụ nwekwara ihe ịga nke ọma. Yabụ, ekwenyere m na maka ịkwado igwe na Elbrus PDK, ebudatara “dị ka nke ahụ” na-enweghị ọrụ ọ bụla, Veeam Agent maka Linux dabara adaba. Ọbụna mgbe niile mgbanwe na faịlụ.
N'ezie, anaghị akwado ngwa nkesa Elbrus OS, ebe ọ bụ na etinyeghị ya na ndepụta ndị akwadoro. Na mgbakwunye, Veeam Agent maka Linux anwaleghị ya site na ngalaba QA, yabụ ndị ahụ. enweghị nkwado (opekata mpe n'oge mbipụta nke isiokwu).
Enwere m olileanya na isiokwu ahụ ga-aba uru nye ndị na-agbalị imejuputa iwu nke 334 nke June 29.06.2017, XNUMX. Nke m diri gi... [TBD].
isi: www.habr.com