Sisteme TCP/IP tabanlı bir ağ üzerinden dosya göndermek veya sisteme bağlanmak için FTP ve telnet
servislerini kurabiliriz. Bu amaçla basit bir FTP sunucu ygulaması in.ftpd ve
telnet sunucu uygulaması in.telnetd Linux yüklü sistemden SBC üzerine
aktarılmalıdır. FTP ve telnet servisleri, ilgili portları sürekli dinlemeyecektir. Bunun yerine her
iki port (ve olursa ileride diğer servislerin de ihtiyaç duyduğu portlar) inetd
(Internet Daemon) programı tarafından dinlenecek, porta veri geldiğinde ilgili
program arka planda çalıştırılacak, gelen istek programa yönlendirilecektir. inetd,
busybox içerisinden çıkmadığından programın çalıştırılabilmesi için Linux
yüklü sistemden /usr/sbin/inetd dosyasının da SBC üzerine aktarılması gereklidir.
Ayrıca inetd kendi içinde tcp uygulama yönlendiricisi
olarak /usr/sbin/tcpd uygulamasınıı kullandığından gene bu dosyanın da
aktarılması gerekmektedir.
Burada dikkat edilmesi gereken bir nokta, artık SBC üzerine attığımız uygulamaların çok fazla
kütüphaneye bağımlı olmaya başlamalarıdır. Temel işlerden daha özel işlere doğru çıktığımızda
uygulamaların kullandığı kütüphanelerin sayısı da artmaktadır. tcpd bunun
en basit örneğini oluşturuyor. Linux yüklü bilgisayarımızda aşağıdaki gibi tcpd
uygulamasının ihtiyaç duyduğu kütüphanelerin neler olduğunu öğrenebiliriz:
laptop:~/docbook/embedded$ ldd /usr/sbin/tcpd
libwrap.so.0 => /lib/libwrap.so.0 (0x4001b000)
libc.so.6 => /lib/libc.so.6 (0x40024000)
libnsl.so.1 => /lib/libnsl.so.1 (0x40134000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
Son üç kütüphane SBC sistemimizde zaten mevcut iken libwrap.so.0 henüz mevcut
değildir. Dolayısıyla tcpd uygulamasının çalışabilmesi için bu dosyanın
da dosya sistemi üzerine atılması gereklidir. Aksi takdirde uygulama çalışmayacak ve aşağıdaki gibi
bir hata mesajı verecektir:
/usr/sbin/tcpd: error while loading shared libraries: libwrap.so.0: cannot open
shared object file: No such file or directory
Bu aşamadan sonra SBC üzerine atacağımız çalıştırılabilir her uygulama için buradaki işlem adımlarını
tekrarlayarak gerekli kütüphanelerle birlikte atmalıyız.
Inetd programı, hangi portları dinleyeceğini ve gerektiğinde çalıştırması gereken uygulamaların neler
olduğunu /etc/inetd.conf ayar dosyasından okur. man inetd
ve man inetd.conf komutlarıyla program ve ayar dosyasının biçimi hakkında
sisteminizden yardım alabilirsiniz. Ftp ve telnet servisleri için gerekli inetd.conf
dosyası aşağıdaki gibi olmalıdır:
- Örnek 6.1. /etc/inetd.conf
# /etc/inetd.conf dosyamız
ftp stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.ftpd
telnet stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.telnetd
Bu dosyanın satırlarındaki ilk sözcük servisin ismini göstermektedir. Buradan alınan isim bilgisi
(ftp, telnet) /etc/services dosyası
içerisinde aranacaktır. Bu durumda /etc/services dosyası Linux yüklü bir
sistemden aynen kopyalanmalı veya sadece aşağıdaki kayıtları içerecek şekilde oluşturulmalıdır:
telnet 23/tcp
ftp-data 20/tcp
ftp 21/tcp
inetd, telnet vb. gibi servislerin ilk ayarlanması
süreci boyunca syslogd programının arka planda çalışıyor olması çıkabilecek
problemlerin çözümünde oldukça faydalı bilgiler sağlayacaktır. syslogd açık
olduğu müddetçe, syslog mekanizmasını kullanan programlar hata durumlarını günlüğe
yazabileceğinden /var/log dizini altındaki dosyaların incelenmesiyle sorunun
nereden kaynaklandığını bulmak çok daha kısa zaman alacaktır. syslogd programını
çalıştırmak için komut satırında syslogd yazmanız yeterlidir. Her
açılışta çalışması istenirse bu defa /etc/init.d/rcS dosyası içerisinde herhangi
bir satıra
kaydı eklenmelidir. Kullanımına artık gerek kalmadığı görüldüğünde rcS içerisinden
bu satır kaldırılmalıdır (gömülü bir sistemde bu anlamda günlük tutulması, sistem belirli bir kararlılığa
ulaştıktan sonra mutlaka önlenmelidir).
Bu ayarlamalar yapıldıktan sonra rcS içerisinde inetd şeklinde
inetd servisinin açılışta çalışabilmesi için gerekli satırın bulunduğundan
emin olunmalıdır. Sistemi yeniden başlatmadan inetd programını test edebilmek
için komut satırından inetd yazılması yeterlidir. Eğer bir hata oluşursa
/var/log/messages dosyası incelenmelidir.