Kirjoittaja Aihe: Raspberry Pi Stratum-1 NTP-serverinä, osa 2  (Luettu 1334 kertaa)

0 jäsentä ja 1 Vieras katselee tätä aihetta.

Poissa J.Jäntti

  • Foorumin ylläpitäjä
  • Ylläpito
  • *****
  • Viestejä: 5318
    • Finland Weather Exchange (FinWX)
Raspberry Pi Stratum-1 NTP-serverinä, osa 2
« : Sunnuntai, 04.11.2018, 21:58 »
Jäikö jotain välistä, kuten alku (osa 1)? Hyppää siihen tästä!

Hauskuus alkaa!
Koodia: [Valitse]
Kaikki komennot näytetään näinKaikki näytöllä näkyvät asiat näkyvät asiat näytetään tällä fontilla.
Varoitukset näkyvät tämäntyyppisenä kirjoituksena
Huomioitavat asiat näkyvät puolestaan tämäntyyppisinä kirjoituksina

Hauskuus aloitetaan konfiguroimalla RasPiin muutamat perusasetukset, kuten näppäimistö, aikavyöhykkeet jne.
Ensin pitää tietenkin päästä koneeseen sisään.
RasPi:n "tehdasasetus"-käyttäjätunnus on:
Koodia: [Valitse]
pija salasana on:
Koodia: [Valitse]
raspberry
RasPi:n perustoiminnoista osaa ohjataan konfigurointiohjelmasta käsin. Siihen pääset kiinni kirjoittamalla:
Koodia: [Valitse]
sudo raspi-config
RasPi:n nimen pääset muuttamaan kohdasta 2 Network Options ja sieltä N1 Hostname, ellet sitten pidä siitä, että NTP-serverisi nimi on "raspberrypi" ;D

Näppäimistöasetukset ja aikavyöhyke asetetaan kohdasta 4  Localisation Options ja sen alta vastaavasti I2 Change Timezone sekä I3 Change Keyboard Layout.

Kun nämä asetukset ovat saatu paikalleen, vuorossa on 5 Interfacing Options ja sieltä valitaan P2 SSH         Enable/Disable remote command line access to your Pi using SSH. Vastaa kysymykseen Yes. Tämä avaa sinulle mahdollisuuden käyttää RasPia PuTTY:n kautta toisesta koneesta.

Kierrä tämän jälkeen uudelleen 5-valikkoon ja valitse seuraavaksi P6 Serial      Enable/Disable shell and kernel messages on the serial connection. Vastaa ensimmäiseen kysymykseen No ja seuraavaan Yes. Tämä kytkee irti konsoliyhteyden kaiuttamisen sarjaportilta, mutta jättää portin muutoin käytettäväksi GPS-korttia varten.

Tämän jälkeen ohjelmasta voi poistua. Ohjelma kysyy lupaa uudelleenkäynnistykseen. Anna lupa käynnistyä uudelleen.
Voit tarkistaa minkä IP-osoitteen RasPi sai katsomalla sisäänkirjautumisruudulla näkyviä viimeisiä rivejä, jossa IP-osoite kerrotaan. Voit nyt halutessasi nyppiä RasPilta HDMI-kaapelin ja USB-näppäimistön irti ja siirtyä keskustelemaan RasPi:n kanssa PuTTY:n kautta.

Kirjautuessasi koneelle tehdasasetus-salasanalla, järjestelmä huomauttaa että asiat eivät ole kovinkaan turvallisesti. Edessä on siis salasanan vaihtaminen:
Koodia: [Valitse]
sudo passwd piAnna pi-käyttäjätunnukselle mieluisa salasana, jonka muistat.

Tämän jälkeen on aika päivittää RasPi:n Firmware ja käyttöjärjestelmän osat:
Koodia: [Valitse]
sudo su
Koodia: [Valitse]
rpi-update
Koodia: [Valitse]
apt-get update && apt-get dist-upgradeTähän kaikkeen menee pieni hetki. Mikäli RasPi kyselee latauksista, vastaa myöntävästi.

Kun kaikki on saatu ladattua onnistuneesti, kirjoita
Koodia: [Valitse]
rebootRasPi starttaa itsensä uudelleen. Kirjaudu uudelleen sisälle.

Tämän jälkeen muokkaillaan vähän koneen sisuskalujen asetuksia.
Koodia: [Valitse]
sudo nano /boot/cmdline.txt
Lisää riville seuraava komento
Koodia: [Valitse]
nohz=offHUOM!! Tässä tiedostossa kaikki on yhdellä rivillä. Ylläolevan komennon voi kirjoittaa minne tahansa kohtaa riviä.
Paina tämän jälkeen <Ctrl> + <O> + <Enter> ja <Ctrl> + <X>
Mitä teimme? Komensimme RasPi:n käyttöjärjestelmän ytimen (kernelin) irrottamaan itsensä ajastetusta moodista. Tämä vähentää NTP:llä kellon tarkkuusvärinää (jitter).

Seuraavaksi suoritetaan hieman komentoja, jolla säädetään RasPi:n sisuskaluja hieman:
Koodia: [Valitse]
sudo nano /boot/config.txtKorvaa seuraavat kohdat tiedostossa:
#arm_freq=800
Koodia: [Valitse]
arm_freq=800!! Mitätöi RasPi:n takuun!! Ei ole pakollinen ominaisuus kytkeä päälle, mutta auttaa NTP:tä suoriutumaan kellon pitämisessä hyvin tarkkana.

dtparam=audio=on
Koodia: [Valitse]
dtparam=audio=off
gpu_mem=64
Koodia: [Valitse]
gpu_mem=0
Lisää tiedoston loppuun seuraava rivi:
Koodia: [Valitse]
dtoverlay=pps-gpio,gpiopin=4Paina tämän jälkeen <Ctrl> + <O> + <Enter> ja <Ctrl> + <X>
Mitä tehtiin? Ylikellotettiin RasPi:n prosessori tehdaskelloista (700MHz) 800MHz:iin, kytkettiin äänipiiri pois päältä ja nollattiin grafiikkapiirin muistivaraus, antaen kaiken järjestelmän käyttöön.

Sitten kömmitään taas pääkäyttäjänä tekemään pari pikkujuttua:
Koodia: [Valitse]
sudo su
Koodia: [Valitse]
apt-get install -y cpufrequtils setserial
Koodia: [Valitse]
echo 'GOVERNOR="performance"' > /etc/default/cpufrequtils
Koodia: [Valitse]
systemctl restart cpufrequtils
Koodia: [Valitse]
exit
Mitä teimme? Asensimme ohjelman, jolla ohjataan prosessorin nopeudensäätöä kuorman mukaan ja asetimme kaikki prosessoriytimet täysillä kierroksilla pyörimään pääsääntöisesti (ondemand => performance).
Toissijaisesti asensimme ohjelman, joka ohjaa sarjaportin ominaisuuksia (setserial)


Seuraavaksi suoritamme pientä loogista ohjausta
Koodia: [Valitse]
sudo nano /etc/udev/rules.d/10-pps.rules
Tämä luo tyhjän tiedoston, joka täytetään seuraavilla tiedoilla:
Koodia: [Valitse]
# Change MODE of ttyS0 so it is readable by NTP and provide a symlink to /dev/gps0
KERNEL=="ttyS0", SUBSYSTEM=="tty", DRIVER=="", SYMLINK+="gps0", MODE="0666"

# Set /dev/ttyS0 to run in Low Latency mode
KERNEL=="ttyS0", RUN+="/bin/setserial -q /dev/ttyS0 low_latency"

# Symlink /dev/pps0 to /dev/gpspps0
KERNEL=="pps0", SUBSYSTEM=="pps", SYMLINK+="gpspps0", MODE="0666"
Paina tämän jälkeen <Ctrl> + <O> + <Enter> ja <Ctrl> + <X>
Mitä teimme? Rakensimme symbolisia linkkejä sarjaportilta /dev/ttyS0 siten että sieltä tuleva data on haettavissa NTP:n toimesta osoitteesta /dev/gps0 ja asetimme oikeudet sellaisiksi, että NTP pääsee siihen kiinni.
Komensimme sarjaportin toimimaan ns. Low Latency-tilassa, jossa tiedonsiirtoviiveet minimoidaan prosessorikuorman kustannuksella, sekä sekuntimerkkipulssia (pps0) varten symbolisen linkin osoittamaan osoitteeseen /dev/gpspps0 ja oikeudet sellaisiksi että NTP pääsee siihen kiinni.


Käynnistä RasPi tämän jälkeen uudelleen ja kirjaudu sisään kun se on palannut hetken päästä takaisin
Koodia: [Valitse]
sudo reboot
Testi
Kun olet kirjautunut sisään, on aika komentaa GPS-piiriä jättämään huomiotta kaikki muut GPS-lähetteet, paitsi $GPRMC.

Tarkista, että GPS-piirillä on lukitus satelliitteihin. Piirilevyllä oleva LED, nimetty "FIX", pitäisi vilkkua kerran 10:ssä sekunnissa. Jos LED vilkkuu tätä tiheämmin, ei satelliitteja ole lukittuna. On syytä huomata, että jos antenni ei ole ulkona, lukituksen saaminen on hankalampaa ja jos piiri ei ole ollut aiemmin toiminnassa tai siitä on CR1220-paristo irrotettu, sillä voi mennä 15-30 minuuttia saada haettua GPS-almanakka satelliiteilta.

Anna tämä komento nopeasti monta kertaa peräkkäin (10 kertaa luulisi riittävän menevän perille)
Koodia: [Valitse]
echo -e '$PMTK314,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0*29\r\n' > /dev/ttyS0
Tarkista tämän jälkeen miltä lähete näyttää
Koodia: [Valitse]
sudo cat /dev/ttyS0Jos kaikki meni kuten piti, komennon pitäisi alkaa paiskomaan ruudulle sisältöä, joka näyttää kutakuinkin tällaiselta:
$GPRMC,191937.000,A,6013.4099,N,02459.1818,E,0.03,98.29,041118,,,D*51

$GPRMC,191938.000,A,6013.4100,N,02459.1816,E,0.01,47.23,041118,,,D*5B

$GPRMC,191939.000,A,6013.4101,N,02459.1813,E,0.01,38.52,041118,,,D*50


Paina <Ctrl> + <C> poistuaksesi tästä tilasta.
Jos mukana on muitakin merkintöjä kuin vain $GPRMC (poislukien $PMTK-alkuiset, jotka ovat GPS-piirin omia komentoja, ei aiemmin annettu komento mennyt läpi. Yritä silloin uudelleen.

Seuraavaksi tarkistetaan miltä näyttää PPS-signaali ajamalla seuraava komento
Koodia: [Valitse]
sudo ppstest /dev/pps0Tämän pitäisi tuottaa vastaavankaltaisen sisällön:
trying PPS source "/dev/pps0"
found PPS source "/dev/pps0"
ok, found 1 source(s), now start fetching data...
source 0 - assert 1541359782.000004794, sequence: 5654 - clear  0.000000000, sequence: 0
source 0 - assert 1541359783.000002027, sequence: 5655 - clear  0.000000000, sequence: 0
source 0 - assert 1541359784.000001395, sequence: 5656 - clear  0.000000000, sequence: 0
source 0 - assert 1541359785.000000555, sequence: 5657 - clear  0.000000000, sequence: 0
source 0 - assert 1541359786.000000183, sequence: 5658 - clear  0.000000000, sequence: 0
source 0 - assert 1541359787.000000018, sequence: 5659 - clear  0.000000000, sequence: 0

Paina <Ctrl> + <C> poistuaksesi tästä tilasta.
Huomaa, että jos ajat tämän komennon ilman GPS-lukitusta, saat virheilmoituksia tilalle.

Seuraavaksi suoritetaan NTP:n asennusta komponenttitasolla, poistoa ja lisäkomponenttien asennusta, seuraavalla komentojonolla:
Koodia: [Valitse]
sudo apt-get install -y ntp && sudo apt-get remove -y ntp && sudo apt-get update && sudo apt-get install -y libcap-dev libssh-dev pps-toolsTämä rivi asentaa Raspbianin NTP:n, poistaa sen heti perään, hakee viimeisimmät tiedot paketeista ja asentaa tämän jälkeen meidän oman NTP:n asennusta varten komponentteja, joita se tarvitsee saadakseen tarkan ajan määrityksen aikaan.

Kääntötemppu
Seuraavaksi aloitetaan kääntämään viimeisintä versiota NTP:stä
Koodia: [Valitse]
mkdir ntp-source
Koodia: [Valitse]
cd ntp-source/
Koodia: [Valitse]
wget http://www.eecis.udel.edu/~ntp/ntp_spool/ntp4/ntp-4.2/ntp-4.2.8p12.tar.gz
Koodia: [Valitse]
tar -xvf ntp-4.2.8p12.tar.gz
Koodia: [Valitse]
cd ntp-4.2.8p12/
Koodia: [Valitse]
./configure --prefix=/usr --enable-linuxcaps --enable-all-clocks --enable-parse-clocks --enable-SHM --enable-debugging --sysconfdir=/var/lib/ntp --with-sntp=no --with-lineeditlibs=edit --without-ntpsnmpd --disable-local-libopts --disable-dependency-tracking && make && sudo make install && sudo systemctl disable ntpTämän koko viritelmän ajo vie noin kymmenkunta minuuttia ja ruudulla vilisee tekstiä solkenaan. Syytä paniikkiin ei ole, vaikka osa riveistä heittäisi warning-ilmoituksia. Ne ovat osa ohjelman kääntöä lähdekoodista.
Mitä teimme? Teimme hakemiston lähdekoodia varten, haimme (4.11.2018 pohjalta) viimeisimmän vakaan lähdekoodiversion NTP-ohjelmasta, versioltaan 4.2.8p12 ja suoritettiin itse kääntöprosessi kaikkine osineen, lopulta asentaen sen koneelle ja estettiin juuri
asennettua NTP:tä automaattisesti käynnistymästä.


NTP:n loppukonfiguraatio käsitellään seuraavaksi. Hyppää siihen tästä (osa 3)!
« Viimeksi muokattu: Keskiviikko, 02.12.2020, 20:26 kirjoittanut J.Jäntti »
Juha Jäntti
Foorumin ja sivuston ylläpitäjä
Finland Weather Exchange (FinWX)

http://www.finwx.net/
------------------------------------------
Ukkoskausi avattu Suomessa: --.--.----
Ukkoskausi avattu Helsingissä: --.--.----
-------------------------------------------
Ukkospäivälaskuri 2021; Helsinki/Viikinmäki
0 ukkospäivää.
------------------------------------------
Twitter, FinWX:n ylläpidon ilmoitukset
------------------------------------------