Raspberry Pi Stratum-1 NTP-serverinä, osa 2

Aloittaja J.Jäntti, sunnuntai, 04.11.2018, 21:58

« edellinen - seuraava »

0 Jäsenet ja 2 Vieraat katselee tätä aihetta.

J.Jäntti

Jäikö jotain välistä, kuten alku (osa 1)? Hyppää siihen tästä!

Hauskuus alkaa!
Kaikki komennot näytetään näin
Kaikki 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:
pi
ja salasana on:
raspberry

RasPi:n perustoiminnoista osaa ohjataan konfigurointiohjelmasta käsin. Siihen pääset kiinni kirjoittamalla:
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:
sudo passwd pi
Anna 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:
sudo su
rpi-update
apt-get update && apt-get dist-upgrade
Tähän kaikkeen menee pieni hetki. Mikäli RasPi kyselee latauksista, vastaa myöntävästi.

Kun kaikki on saatu ladattua onnistuneesti, kirjoita
reboot
RasPi starttaa itsensä uudelleen. Kirjaudu uudelleen sisälle.

Tämän jälkeen muokkaillaan vähän koneen sisuskalujen asetuksia.
sudo nano /boot/cmdline.txt

Lisää riville seuraava komento
nohz=off
HUOM!! 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:
sudo nano /boot/config.txt
Korvaa seuraavat kohdat tiedostossa:
#arm_freq=800
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
dtparam=audio=off

gpu_mem=64
gpu_mem=0

Lisää tiedoston loppuun seuraava rivi:
dtoverlay=pps-gpio,gpiopin=4
Paina 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:
sudo su
apt-get install -y cpufrequtils setserial
echo 'GOVERNOR="performance"' > /etc/default/cpufrequtils
systemctl restart cpufrequtils
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
sudo nano /etc/udev/rules.d/10-pps.rules

Tämä luo tyhjän tiedoston, joka täytetään seuraavilla tiedoilla:
# 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
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)
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ää
sudo cat /dev/ttyS0
Jos 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
sudo ppstest /dev/pps0
Tä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:
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-tools
Tä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ä
mkdir ntp-source
cd ntp-source/
wget http://www.eecis.udel.edu/~ntp/ntp_spool/ntp4/ntp-4.2/ntp-4.2.8p12.tar.gz
tar -xvf ntp-4.2.8p12.tar.gz
cd ntp-4.2.8p12/
./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 ntp
Tä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)!
Juha Jäntti
Foorumin ja sivuston ylläpitäjä
Finland Weather Exchange (FinWX)

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