Sannu kowa da kowa.
Labaran baya-bayan nan kan Habré
Da farko, na yanke shawarar zazzage Elbrus OS, ko kuma a maimakon haka, kawai rarrabawar da ake samu don gine-ginen x86_64, duba yadda yake aiki, da ƙoƙarin shigar da Agent na Linux akan sa. Idan kana son sanin abin da ya fito daga wannan, don Allah duba cat.
Don haka, ƙaramin digression, idan wani bai sani ba. "Elbrus" haka yake
Wani karamin ja da baya tilas yayi. Gaskiyar ita ce, na taɓa yin hulɗa da software na gida, kamar MSVS da Baguette RTOS. Ina da gogewa wajen aiki tare da kayan aikin gida, gami da na'ura mai sarrafawa daga MCST. Don haka, zan iya cewa tare da cikakken alhakin cewa akwai takamaiman takamaiman yanki a wannan yanki kuma zan yi ƙoƙarin kada in taɓa shi a cikin labarin. Lokacin da nake so sosai, zan sanya alamar [TBD]. Don haka za mu yi ƙoƙari mu yi ba tare da trolling da banal nishi ba. A ƙarshe, ana buƙatar fahimtar masana'antar tsaron Rasha da hukumomin gwamnati. Babban kasa - ƙananan kasafin kuɗi.. [TBD].
Matakin sifili - zazzagewa. Abin lura ne cewa labarai cewa Elbrus OS ya samu ya haifar da resonance, har sabar rarraba ya ragu. [TBD] Godiya ga Yandex da injiniyan da ya yi tunanin motsa shi a can. Don haka saurin saukewa yana da kyau.
Mataki na farko - shigarwa. Na shigar dashi akan farkon hypervisor wanda akwai don amfani kyauta. Na ware nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan RAM guda biyu, 32 MB don bidiyo (za a sami hanyar sadarwa ta hoto, na yi tunani). Disk kamar yadda aka saba - 32 GB.
Na fara shigarwa. Ban yi amfani da umarnin shigarwa ba, don haka ba zan iya yin sharhi game da shi ba. Tsarin shigarwa na TUI yana da ƙarancin ƙarancin ƙima.
To, mai girma, za mu iya yin ba tare da linzamin kwamfuta ba.
Na gudanar da taga na gaba akan gwaji na biyu. Me yasa baza'a zaɓi tsohuwar na'urar sr0 [TBD] lokacin shigarwa daga faifai ba?
Zaɓi tushen CD-ROM kuma ci gaba.
Yayin zabar yankin lokaci, kwatsam na gane cewa tsarin yana amfani da tsarin init boot, kuma ina aiki daga TTY0.
Ok, to bari mu rarraba "Elbrus" a matsayin al'umma
Sauran kusan ba su da mahimmanci: mun sanya komai kuma mun yarda. Tare da hanyar, mun gano cewa ana amfani da kwaya 3.14.79-13.84. Hmm, Debian 7 yana da 3.2 [TBD].
Na gaba, zaɓi tsohowar faifan diski kuma… Muna ganin gargaɗi:
Hmm, ko ta yaya rabon atomatik bai dace da faifan gig 32 ba. Ban canza faifai ba; Na kammala nema tare da rarraba faifai na hannu a cikin salon “duk-in-one”. Dole ne in shigar da ext3, tunda /boot ba zai iya kasancewa a cikin ext4 ba.
Tsarin ya fito ba tare da wani tashin hankali ba.
Mataki na biyu - bincika madadin.
Bayan rummaging ta cikin abinda ke ciki na faifai na biyu, na gane cewa wannan ma'ajiya ce tare da ƙarin. a cikin kunshin. Kuma duba /etc/apt/sources.list, na gane cewa yana buƙatar a saka shi a /mnt/cdrom. Amma ban sami /etc/os-release ba. Amma akwai /etc/mcst-version tare da abun ciki na 3.0-rc36. 3.0 shine mai yiwuwa sigar - da alama ya dace, amma rc36? Gabaɗaya, software na ɓangare na uku ba za su iya gane wannan rarraba ta hanyar gargajiya ba.
A cikin tushen ɓangaren, directory ɗin /mcst yana kama idona, kuma a can, tare da zuciya mai nutsewa, na gano /mcst/backup. Wato, akwai kayan aiki na ajiya, kuma an gina shi a cikin tsarin! "Mai girma," Na yi tunani, "Bari mu ga yadda wannan ke aiki!"
Ya juya cewa akwai 4Kb bash script /mcst/bin/backup wanda ke ba da kwafin fayil. Ta tsohuwa - zuwa ga /mcst/directory directory. A cikin lambar tushe Ina tsammanin ganin umarnin rsync, amma ba a cikin saitunan tsoho ba. Rubutun yana kwafi fayiloli kawai. Umurnin yayi kama da haka:
cp -rpdx <file backup> <file>
Duk fayil ɗin /mcst/bin/backup yana nanIna gargadin ku nan da nan cewa wannan rubutun kadai bai isa ku fahimta sosai ba. Yana jan ayyuka daga /mcst/bin/source, wanda shine wani abu kamar ɗakin karatu na ayyuka. Ban hada shi ba (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
Ko da yake, watakila ban fahimci wani abu ba? Wataƙila wani zai iya yin bayani a cikin sharhi: ta yaya wannan rubutun ke tabbatar da aminci da amincin bayanan bayanan? [TBD]
rsync, ta hanyar, an haɗa shi a cikin ƙarawa. wuraren ajiya. Shafin 3.1.3. Ina tsammanin yin amfani da rsync har yanzu shine mafi kyawun madadin aikace-aikacen /mcst/bin/ajiyayyen.
Na gaba, na yanke shawarar sanya sabo Veeam Agent don Linux. Wani zai tambaya: "Menene alakar Veeam da shigo da canji?" Haka ne, ba a cikin rajistar ba, amma FSTEC ce ta tabbatar da shi, wanda ke nufin cewa idan babu madadin za a iya amfani da shi. Ana kashe mintuna goma sha biyar akan madadin daga
Mataki na Uku - shigarwa na Veeam Agent don Linux.
Don haka, Wakilin Veeam na Linux ya ƙunshi fakiti biyu: ƙirar kernel veeamsnap (a hanya,
Akwai wata ƙaramar matsala tare da shigar da kernel module - kunshin dkms da ya ɓace. Wannan sabis ɗin ne wanda ke ba ku damar gina ƙirar kernel daga tushe. A matsayinka na mai mulki, yana samuwa akan duk rarraba bashi. Dole ne in zazzage shi daga wurin ajiyar kuɗi na ɓangare na uku. Wani abu da ya faranta min rai shine, kunshin bai dogara da gine-gine ba, don haka ya dace kamar na ɗan ƙasa. Me yasa ba a haɗa shi cikin jerin fakitin da ake da su ba, ko kuma, ba a haɓaka [TBD] ba? Wataƙila ana ɗauka cewa babu wanda ya isa ya gina da gudanar da kowane nau'in kwaya wanda ba na MCST ba. Da gaske akwai saɓani a nan - tunda akwai masu rubutun Linux. Wato, tsarin, idan ana so, ana iya haɗa shi da hannu kuma a ƙaddamar da shi ta hanyar rubutun lokacin da injin ya fara. Ina tsammanin bai kamata ku yi tsammanin sabuntawa akai-akai daga MCST [TBD].
"Ok, an shigar da tsarin - ɓangaren mafi wuya ya ƙare," Ina tsammanin... Kunshin veeam don ajiyar kuɗi na amd64 ne, kuma Elbrus OS yana da dandamali na x86_64 [TBD]. Bambanci, ba shakka, yana cikin sunan kawai, amma wannan bambanci yana sa kusan dukkanin fakiti daga wuraren ajiyar kuɗi na ɓangare na uku ba su dace da Elbrus OS ba. Wannan rashin fahimta mai ban haushi za a iya kawar da shi kawai: kawai tarwatsa kunshin, gyara bayanin game da gine-ginen kuma mayar da shi tare. Yadda za a yi
mkdir tmp
dpkg-deb -R original.deb tmp
# edit DEBIAN/postinst
dpkg-deb -b tmp fixed.deb
Wata matsalar ita ce dogaro. Fayilolin da ake buƙata suna da alama suna can, amma fakitin babu. Ma'anar ita ce sunayen fakitin sun bambanta da "analogin da aka shigo da su". Wataƙila ɗakunan karatu an haɗa su daban. Ban shiga daki-daki da yawa ba, cire kusan duk abin dogaro, kuma shigarwa ya ci gaba.
Sannan matsaloli sun bayyana tare da lambar fara sabis. Rubutun /lib/init/vars.sh ya ɓace. Don wasu dalilai, Elbrus yana sarrafawa ba tare da shi ba, don haka za mu cire shi ma. Bayan haka, dole ne mu maye gurbin aikin fitar da saƙo: ayyukan log_daemon_msg da log_end_msg sun ɓace. Bayan rummaging a cikin /lib/lsb/init-functions fayil, na sami aikin log_success_msg - zai yi mana kyau don gwaji. Af, a cikin /lib/lsb/init-functions fayil layin "# Source SuSE's rc services" yana farkon fayil ɗin [TBD].
Bayan irin wannan mummunan aiki na kunshin tare da fayil, an yi nasarar ƙaddamar da madadin injin gabaɗaya akan rabon NFS. Dutsen madadin shima yayi nasara. Don haka, na yi imani, don tallafawa na'ura tare da Elbrus PDK, wanda aka zazzage "kamar haka" ba tare da wani wajibai ba, Veeam Agent na Linux ya dace da shakka. Ko da bayan duk gyare-gyare tare da fayil.
Tabbas, kayan rarrabawar Elbrus OS ba su da tallafi bisa ƙa'ida, tunda ba a haɗa shi cikin jerin masu tallafi ba. Bugu da kari, ba a gwada Veeam Agent na Linux ta sashen QA ba, don haka wadancan. babu tallafi (akalla a lokacin buga labarin).
Ina fatan labarin zai kasance da amfani ga waɗanda ke ƙoƙarin aiwatar da oda mai lamba 334 na Yuni 29.06.2017, XNUMX. Nawa gare ku... [TBD].
source: www.habr.com