ORANGE PI RTC - II
Bir önceki RTC yazımızda, RTC ile ilgili temel bilgileri verdik. Bunun yanında, bağlantı ve gerekli yüklemeleri inceledik. Ayrıca yazının sonunda, yaşadığımız birkaç sorundan ve RTC'nin asıl kullanım amacından bahsettik.
Bağladığımız harici RTC'nin ana görevi, olabilecek her durumda güncel saati tutmak. İnternet olmayabilir, Orange pi'ye güç gitmeyebilir. Burada bağladığımız bağladığımız RTC sayesinde üzerindeki pil bitene kadar güncel saati okuyabiliriz.
İnternetsiz Ortamda RTC Kullanımı
İnternetsiz Ortamda RTC Kullanımı
Orange pi kapandığında sistem saati durur. Açtığımızda ise saatin internet sayesinde güncellenmesi lazım. Normalde Orange pi sistem saati, internete bağlı olduğu durumlarda "NTP" protokolü sayesinde, internet üzerinden saati güncel saate senkronize edebiliyor. İnternet olmadığında ise doğru saati kesintisiz tutabilmesi için harici bir RTC'ye ihtiyaç duyarız.
Linux Systemd
Systemd, en basit tanımıyla Linux çekirdeği için başlatıcı ve sistem yönetim aracıdır. Ana Linux dağıtımlarının bir çoğu systemd kullanır. Init sistem olarak adlandırılan başlatıcı sistemin temel işlevi, önyükleme(boot) esnasında Linux çekirdeğinin(kernel) yüklenmesinden sonra gerçekleştirilen kullanıcı safhası(userland) elemanlarının başlatılması ve kullanımının yönetilmesidir.
Systemd için gerçekleştirilecek işlemlerin çoğu unit adı verilen elemanlarla ilgilidir. Unit elemanları, systemd'nin anlayacağı şekilde yapılandırılmış dosyalardır. Her bir unit elemanı, sonuna nokta(.) işaretinden sonra verilen işlev ile ilgili uzantı kullanılarak gruplandırılır. Bu sayede bir unit elemanının hangi işlev ile ilgili olduğu temsil edilir.
Örneğin; aşağıda "/lib/systemd/system/" dizini altındaki unit dosyalara bakabilirsiniz. "mount", "service", "socket" ve "timer" gibi işlev uzantılarını görebilirsiniz.
Sistem Saatini Otomatik Harici RTC'den Almak
İnternet olmadığında karşılaştığımız sorunlardan bahsettik. Bunun yanında harici RTC'yi, Orange pi her yeniden açıldığında tekrardan aktif etmek gerektiğini de hatırlayalım. Şimdi bunların çözümüne geçelim.
İlk önce RTC'yi her yeniden açılışta el ile aktif etmemek ve bu işi otomatik bir şekle dönüştürmek gerekiyor. Bunun için ileride inceleyeceğimiz rc.local, .bashrc gibi alternatiflerin olduğu dosyalara başlangıçta çalıştırmak istediğimiz kodları giriyoruz. Bu yazıda bu işlemleri rc.local dosyasını kullanarak yapacağız. Rc.local dosyasına hem harici RTC'yi tanıtmak için gerekli olan komutu hem de harici RTC'deki saati okuyup sistem saatine atacak olan komutu yazacağız.
nano /etc/rc.local yazarak rc.local dosyasının içine giriyoruz.
echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-0/new_device
hwclock -s -f /dev/rtc1 satırlarının rc.local dosyasının en altına yazıyoruz ve daha sonra dosyayı kaydedip çıkıyoruz.
Bu işlemlere geçmeden önce timedatectl komutundan bahsetmek istiyorum. Timedatectl, sistem tarihi ve saatini kontrol ettiğimiz bir komut. Ayrıca bu komutla birlikte ağ-zaman senkronizasyonunu sağlayan servisleri de kontrol edebiliyoruz. Timedatectl bu verileri "system-timesyncd.service" üzerinden kontrol eder.
Saatin internet üzerinden senkronizsayonunu kapatmak için ister systemctl ile ister de timedatectl komut ile işlem yapabiliriz. Systemctl komut ile ilk önce servisi kapatıp daha sonra başlangıçta çalışmaması için pasif yaparken, aynı işlemleri timedatectl ile tek seferde halledebiliyoruz.
systemctl stop systemd-timesyncd.service
systemctl disable systemd-timesyncd.service diyerek servisi durdurup, pasif hale getiriyoruz.
timedatectl set-ntp off diyerek de aynı şekilde sistemi durdurup pasif hale getirebiliyoruz.
Bu şekilde saatin senkronize olmaması için servisi kapattığımızda, sanki internet yokmuş gibi saat güncellenmeyecek.
Tarih/saat senkronizasyonunu tekrardan aktif etmek için systemctl enable systemd-timesyncd.service veya timedatectl set-ntp on komutlarını kullanıp, Orange pi'yi tekrar başlatabiliriz.
RTC ile ilgili paylaşacağım yazı dizisinin ikincisi bu yazıydı. Bu yazıda genel olarak RTC modülünü sistem başlangıcında otomatik olarak tanıtmayı ve otomatik olarak harici RTC'deki saat/tarih değerinin sistem saatine yazdırılmasını inceledik. Konuyu daha iyi anlatmak için gerektiği kadar Linux sistem bilgisi ile ilgili de bazı konulara değindik. Bir sonraki yazıda RTC üzerinden, başlangıçta otomatik bir işlem yaptırmak için ne gibi yollara başvurabileceğimize değineceğiz.
Konu ile ilgili işlemleri sizlere sade ve anlaşılır bir biçimde anlatmaya çalıştım. Gerek gördükçe görsellerle bunu destekledim. Yazıda anlaşılmayan veya yanlış olduğunu düşündüğünüz kısımları iletişim adreslerinden bizelere bildirebilir ve öğretici yazıların daha kaliteli olması için destek verebilirsiniz. Herkese iyi çalışmalar.
Hiç yorum yok:
Yorum Gönder