Hei kaikki
Viimeisimmät artikkelit Habresta
Ensinnäkin päätin ladata Elbrus-käyttöjärjestelmän, tai pikemminkin vain saatavilla olevan jakelun x86_64-arkkitehtuurille, nähdä kuinka se toimii ja yrittää asentaa Veeam Agent for Linux -agentin siihen. Jos haluat tietää, mitä tästä tuli, katso kissa.
Eli pieni poikkeama, jos joku ei tiedä. "Elbrus" on sellainen
Toinen pieni pakkoperääntyminen. Tosiasia on, että olen joskus käsitellyt kotimaisia ohjelmistoja, kuten MSVS ja Baguette RTOS. Minulla oli kokemusta työskentelystä kotimaisten komponenttien kanssa, mukaan lukien MCST:n prosessori. Siksi voin sanoa täydellä vastuulla, että tällä alalla on tietty erityispiirre, ja yritän olla käsittelemättä sitä artikkelissa. Kun todella haluan, laitan tunnisteen [TBD]. Joten yritämme pärjätä ilman suoraa trollausta ja banaalia valittamista. Lopulta Venäjän puolustusteollisuus ja valtion virastot on ymmärrettävä. Suuri maa - pieni budjetti.. [TBD].
Nolla vaihe - ladata. On huomionarvoista, että uutinen Elbrus-käyttöjärjestelmän saatavuudesta aiheutti resonanssia niin paljon, että jakelupalvelin kaatui. [TBD] Kiitos Yandexille ja insinöörille, joka ajatteli siirtää sen sinne. Latausnopeus on siis hyvä.
Ensimmäisessä vaiheessa - asennus. Asensin sen ensimmäiseen hypervisoriin, joka oli saatavilla ilmaiseksi. Varasin kaksi ydintä, pari keikkaa RAM-muistia, 32 Mt videota varten (josta tulee graafinen käyttöliittymä, ajattelin). Levy on tavalliseen tapaan - 32 Gt.
Aloitin asennuksen. En käyttänyt asennusohjeita, joten en voi kommentoida sitä. TUI-asennusliittymä on erittäin minimalistinen.
Hienoa, pärjäämme ilman hiirtä.
Seuraava ikkuna onnistui toisella yrittämällä. Mikset valitse oletuslaitetta sr0 [TBD], kun asennat levyltä?
Valitse CD-ROM-lähde ja siirry eteenpäin.
Kun valitsin aikavyöhykettä, tajusin yhtäkkiä, että järjestelmä käyttää init boot -prosessia, ja työskentelen TTY0: sta.
OK, luokitellaan sitten "Elbrus" yhteisöksi
Muu on melkein merkityksetöntä: laitamme kaiken ja olemme samaa mieltä. Matkan varrella saamme selville, että ydin on käytössä 3.14.79-13.84. Hmm, Debian 7:ssä oli 3.2 [TBD].
Valitse seuraavaksi oletuslevyn osiointi ja... Näemme varoituksen:
Hmm, jotenkin automaattinen osiointi ei selvinnyt hyvin 32 gigan levystä. En vaihtanut levyä; suoritin tehtävän manuaalisella levyosiolla "all-in-one"-tyylillä. Minun piti asentaa ext3, koska /boot ei voinut olla ext4:ssä.
Järjestelmä toimi ilman tapauksia.
Toisessa vaiheessa - etsi vaihtoehtoja.
Tutkittuani toisen levyn sisältöä tajusin, että tämä on arkisto, jossa on muita. paketeissa. Ja katsoessani tiedostoa /etc/apt/sources.list, tajusin, että se on asennettava kansioon /mnt/cdrom. Mutta en löytänyt /etc/os-release. Mutta on /etc/mcst-version, jonka sisältö on 3.0-rc36. 3.0 on luultavasti versio - se näyttää sopivan, mutta rc36? Yleisesti ottaen kolmannen osapuolen ohjelmistot eivät todennäköisesti pysty tunnistamaan tätä jakelua perinteisellä tavalla.
Juuriosiossa /mcst-hakemisto kiinnittää huomioni, ja sieltä vajoavalla sydämellä löysin /mcst/backup. Eli varmuuskopiointityökalu on olemassa, ja se on sisäänrakennettu järjestelmään! "Hienoa", ajattelin, "Katsotaan kuinka tämä toimii!"
Kävi ilmi, että on olemassa 4 kt:n bash-skripti /mcst/bin/backup, joka tarjoaa tiedostojen kopioinnin. Oletuksena - /mcst/backup-hakemistoon. Lähdekoodissa odotin näkeväni rsync-komennon, mutta se ei ole oletuskokoonpanossa. Skripti yksinkertaisesti kopioi tiedostoja. Komento näyttää suunnilleen tältä:
cp -rpdx <file backup> <file>
Koko tiedosto /mcst/bin/backup on täälläVaroitan sinua heti, että tämä käsikirjoitus ei yksin riitä ymmärtämään täysin. Se hakee funktioita hakemistosta /mcst/bin/source, joka on jotain funktiokirjaston kaltaista. En sisällyttänyt sitä (44 kt).
#!/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
Ehkä en kuitenkaan ymmärtänyt jotain? Ehkä joku voi selittää kommenteissa: miten tämä skripti varmistaa turvallisen ja luotettavan tietojen varmuuskopioinnin? [TBD]
rsync, muuten, sisältyy lisäosaan. arkistot. Versio 3.1.3. Mielestäni rsyncin käyttö on edelleen parempi vaihtoehto /mcst/bin/backup-sovellukselle.
Seuraavaksi päätin laittaa uuden Veeam Agent Linuxille. Joku kysyy: "Mitä tekemistä Veeamilla ja tuontikorvauksella on sen kanssa?" Kyllä, se ei ole rekisterissä, mutta se on FSTEC:n sertifioima, mikä tarkoittaa, että vaihtoehtojen puuttuessa sitä voidaan käyttää. Vietät viisitoista minuuttia vaihtoehtoihin alkaen
Kolmas vaihe — Veeam Agentin asennus Linuxille.
Joten Veeam Agent for Linux koostuu kahdesta paketista: veeamsnap-ydinmoduulista (muuten,
Ydinmoduulin asennuksessa oli yksi pieni ongelma - puuttuva dkms-paketti. Tämä on palvelu, jonka avulla voit rakentaa ydinmoduuleja lähdekoodista. Pääsääntöisesti se on saatavilla kaikissa deb-jakeluissa. Minun piti ladata se kolmannen osapuolen deb-varastosta. Yksi asia, joka teki minut iloiseksi, on se, että paketti ei riipu arkkitehtuurista, joten se sopii kuin natiivi. Miksi sitä ei sisällytetty saatavilla olevien pakettien luetteloon, tai pikemminkin sitä ei kehitetty [TBD]? Ehkä oletetaan, että kenenkään ei pitäisi rakentaa ja käyttää muita kuin MCST-ytimen moduuleja. Tässä on todellakin ristiriita - koska on linux-otsikoita. Toisin sanoen moduuli voidaan haluttaessa koota käsin ja käynnistää komentosarjalla koneen käynnistyessä. Mielestäni sinun ei pitäisi odottaa toistuvia päivityksiä MCST:ltä [TBD].
"OK, moduuli on asennettu - vaikein osa on ohi", ajattelin... Deb-varaston veeam-paketti on amd64-alustalle, ja Elbrus-käyttöjärjestelmässä on x86_64 [TBD]-alusta. Ero on tietysti vain nimessä, mutta tämä ero tekee lähes kaikista kolmannen osapuolen deb-tietovarastoista peräisin olevista paketeista yhteensopimattomia Elbrus-käyttöjärjestelmän kanssa. Tämä ärsyttävä väärinkäsitys voidaan poistaa yksinkertaisesti: pura paketti, korjaa tiedot arkkitehtuurista ja koota se takaisin. Kuinka tehdä se
mkdir tmp
dpkg-deb -R original.deb tmp
# edit DEBIAN/postinst
dpkg-deb -b tmp fixed.deb
Toinen ongelma on riippuvuudet. Tarvittavat tiedostot näyttävät olevan siellä, mutta paketteja ei ole. Vaikutelma oli, että pakkausten nimet poikkesivat niiden "tuoduista analogeista". Ehkä kirjastot on pakattu eri tavalla. En mennyt liian yksityiskohtiin, poistin melkein kaikki riippuvuudet ja asennus eteni.
Sitten ilmeni ongelmia palvelun aloituskoodin kanssa. Komentosarja /lib/init/vars.sh puuttui. Jostain syystä Elbrus pärjää ilman sitä, joten poistamme myös sen. Seuraavaksi jouduimme korvaamaan viestitulostusfunktion: log_daemon_msg- ja log_end_msg-funktiot puuttuivat. Tutkittuani /lib/lsb/init-functions-tiedostoa löysin log_success_msg-funktion - se on hyvä meille kokeisiin. Muuten, /lib/lsb/init-functions-tiedostossa rivi "# Source SuSE`s rc functions" on [TBD]-tiedoston alussa.
Paketin karkean käsittelyn jälkeen tiedostolla NFS-jaon koko koneen varmuuskopiointi käynnistettiin onnistuneesti. Myös varakiinnitys onnistui. Joten uskon, että Veeam Agent for Linux on ehdottomasti sopiva koneen varmuuskopiointiin Elbrus PDK:lla, joka on ladattu "juuri niin" ilman velvoitteita. Jopa kaikkien tiedostoon tehtyjen muutosten jälkeen.
Tietenkään Elbrus OS -jakelusarjaa ei tueta virallisesti, koska se ei sisälly tuettujen luetteloon. Lisäksi laadunvarmistusosasto ei testannut Veeam Agent for Linuxia sillä, joten ne. tukea ei ole (ainakaan artikkelin julkaisuhetkellä).
Toivon, että artikkelista on hyötyä niille, jotka yrittävät toteuttaa 334. kesäkuuta 29.06.2017 annettua määräystä nro XNUMX. Minun sinulle... [TBD].
Lähde: will.com