Home Map Index Search News Archives Links About LF
[Top Bar]
[Bottom
Bar]
[Photo of theAuthor]
Ken Yap
Yazar hakkında: Avustralya'da , Sidney'de yaşıyor. Unix'le ilk defa 1979'da karşılaştı ve Linux'u 4 yıldır sözcük işleme, Internet'e giriş ve elektronik hobisini desteklemek için kullanıyor. Çalışmadığı veya Linux ile uğraşmadığı zaman gezmeyi, ilginç insanlarla tanısşmayı, değişik yemekler pişirmeyi veya çevreye bakınarak gezmeyi seviyor. Halen çok uluslu bir kuruluşta araştırmacı bilimadamı olarak çalışmaktadır.

Yazarla iletişim kurun

İletişimağı Açınımı ve Etheraçınıma Giriş

Çeviri:İTÜ Fen-Edebiyat Fakültesi Öğrencilerinden Bir Grup

[Ilustration]

Özet: Bu, bilgisayarınızın açınımını (boot, bootstrap), katı tekerinize (hard disk) erişmeden, uçucu olmayan (non-volatile) bellekte tutulan bir programla nasıl gerçekleştirebileceğinizi açıklayan bir ileri düzey yazıdır. Bu, çok sayıda Linux makinenin biçimlendirim ve bakımı için ideal bir tekniktir.




İletişimağı Açınımı (Network Booting) Nedir?

İletişimağı açınımı eski bir düşüncedir. Ana düşünce, bilgisayarın uçucu olmayan bellekte (non-volatile memory), sözgelimi ROM yongası, bir sunucu ile iletişim kurmasına olanak sağlayan ve sistem dosyalarını iletişimağı üzerinden sağlayan bir açınım düzgüsüne (bootstrap code) sahip olmasıdır. Amaçlardan birisi katı tekeri (hard disk) açınım (booting) için kullanmaktan kaçınmaktır. Bunu yapmanın bir sürü nedeni bulunmaktadır. Birincisi bir sürü farklı makine üzerinde yazılım bakımının maliyetini düşürmektir. İletişimağı açınımıyla, dosyalar merkezi bir sunucuda tutulur ve böylelikle yalnızca tek bir yerde güncelleme yeterli hale getirilir. Diğer bir amaç da bilgisayarların tekerlerinin yeterince gürbüz (robust) olamadığı konumlarda kullanılmasıdır. Örneğin bu durumla, katı tekerin çok incinebilir durumda olabildiği fabrika tabanında bulunan bilgisayarlarda karşılaşılabilir. Son olarak, diğer bir amaç da, yazılımı yeniden yüklemeksizin, farklı işletim sistemleri arasında gidip gelebilen bir sisteme sahip olunmasıdır.

İletişimağı açınımı çoğunlukla teker açınımıyla birlikte bulunur. Örneğin bir sistem, Windows'u tekerden koşturabilirken, Linux'u da iletişimağından işletebilirdi. Bu ekniğin bazı ilginç uygulamaları bulunmaktadır. Örneğin: Benim bir arkadaşım bunu Windows'u iletişimağı üzerinden yeniden yüklemek için kullanmaktadır. Genellikle olduğu üzere bir Windows kurulumunun göçmesi durumunda, sistem yönetmeni Linux'un iletişimağı üzerinden açınımını sağlayarak ve de otomatik yazılımın tekeri formatlamasını ve üzerinde yeni bir Windows kurulumu yapmasını sağlayarak taze bir kurulum oluşturabilir.

Nasıl çalışır?

İletişimağı üzerinden açınım yapabilmek için bilgisayar 3 şeye sahip olmalıdır: 1. Kimlik, 2. Bir işletim sistemi görüntü dosyası (image), 3. ve genellikle çalışan bir dosya sistemi.

İletişimağı açınım ROM'u olan bir tekersiz bilgisayar (TB) düşünelim. Bu, eşdeğer yapıdaki birkaç TB'dan biri olabilir. Bu bilgisayarı diğerlerinden nasıl ayıracağız? Bilgisayara (gerçekte onun iletişimağı uyarlayıcısına, network adapter) özgı olan yalnızca bir tek bilgi kaynağı elimizde bulunmakta olup o da Ethernet adresidir. Dünyadaki tüm ethernet uyarlayıcılarının 48 bit'lik özgün ve tek bir Ethernet adresi bulunmaktadır. Çünkü, tüm ethernet kartı üreticileri belli adres bloklarına sahip bulunmaktadırlar. Uylaşım gereği, bu adresler, üstüste iki nokta ile birbirinde ayırılmış onaltı tabanlı ve iki basamaklı sayılarla gösterilirler. Sözgelimi: 00:60:08:C7:A3:D8.

IP adresleri elde etmek için kullanılan protokoller, verilen bir ethernet adresi, Açınım Protokolü (BOOTP) ve Devinimli Konak Biçimlendirme Protokolü (DHCP, Dynamic Host Configuration Protocol) olarak adlandırılırlar. DHCP, BOOTP'nin evrimiyle oluşmuştur. İncelemelerimizde, aksi belirtilmedikçe, BOOTP'ye uygulanan herşey DHCP'ye de uygulanabilir. (Gerçekte BOOTP ve DHCP'nün yalnızca Ethernet adresinin çevirilmesi olarak yorumlanması küçük bir yalandır. Onların görüş açılarından, tasarımcılar BOOTP ve DHCP'nün herhangi bir donanım adresiyle çalışabilmesi için olanak yaratılmıştır. Ama Ethernet, çoğunluğun kullandığı donanım birimidir.)

BOOTP değiştokuşuna örnek olarak aşağıdakini verebiliriz:

TB: Merhaba , donanım adresim 00:60:08:C7:A3:D8 dir, lütfen IP adresimi ver.

BOOTP server: (Veritabanında adrese bakar.) Adın aldebaran, IP adresin 192.168.1.100, sunucun 192.168.1.1 dir, açınım yapacağın dosya /tftpboot/vmlinux.nb dir (Bunların yanısıra diğer bazı bilgi parçaları da verilebilmektedir).

TB'ın, ilk aşamada, BOOTP sunucu adresini nasıl bulduğunu merak edebilirsiniz. Yanıt onu bulmadığıdır. The BOOTP istemi iletişimağı üzerinde yayınlanır ve yanıt verebilecek durumda olan herhangi bir BOOTP sunucusu görevi üstlenir.

Bir IP adresi elde edildikten sonra, TB bir işletim sistemi görüntü dosyasını yöreye çekmeli ve onu çalıştırmalıdır. Burada kullanılan diğer bir Internet protokolü Önemsiz Dosya Aktarım Protokolü (Trivial File Transfer Protokol, TFTP) olarak bilinir. TFTP, FTP'nin küçültülmüş bir sürümü olarak düşünülebilir. Bunda kimlik saptama özelliği olmadığı gibi Aktarım Kontrol Protokolü (TCP, Transmission Control Protocol) yerine, Kullanıcı Veripaketi Protokolü (UDP, User Datagram Protocol) kullanılır. TCP yerine UDP seçilmesinin nedeni kolaylıktır. UDP'nin tekersiz bilgisayar üzerinde uygulanımı küçük olabildiğinden ROM üzerine sığdırılabilmektedir. UDP'nin blok tabanlı olması nedeniyle, veriakış tabanlı olanların aksine, veri akışı bloklar halinde sağlanır. Yani şöyle:

TB: Bana /tftpboot/vmlinux.nb'nin blok 1'ini ver.
TFTP sunucu: İşte al. TB: Blok 2'yi ver .

ve bu, tüm dosya aktarılana dek sürer. Denetimli aktarım (handshaking) her bir blok çizemi (scheme) için basit bir yapı olup paket kaybı zamanaşımlarında yeniden aktarımla kotarılır. Tüm blokların alınmasından sonra, iletişimağı açınım ROM'u denetimi, giriş noktasında, içletim sistemi görüntü dosyasına bırakır

Son olarak, bir işletim sisteminin koşturulabilmesi için bir kök (root) dosyasistemi sağlanmalıdır. Linux ve diğer Unix'ler tarafından kullanıan protokol, başka seçenekler de olabilmesine karşın, İletişimağı Dosya Sistemidir (NFS, Network File System). Bu durumda düzgü (code) ROM içinde bulunmak zorunda olmayıp, yöreyeçekilmiş bulunan işletim sisteminin parçası olabilmektedir. Bununla birlikte, işletim sistemi, gerçek teker yerine bir kök dosya sistemini yani NFS'i koşturabilme yetisine sahip bulunmalıdır. Linux, bunu yapabilecek bir sürümü oluşturabilmek için gereken biçimlendirim değişkenlerine sahip bulunmaktadır.

Uygulamada Ağdanaçınım

Tecimsel (ticari) açınım ROM'ların yanısıra iletişimağı açınımı için serbest paketlere yönelik iki kaynak bulunmaktadır. Bunlar Etherboot ve Netboot'dur, ikisini de Etherboot görsel sanalyöresi'nde bulabilirsiniz. Öncelikle İletişimağı kartınızı Etherboot ya da Netboot tarafından desteklendiğini öğrenmek zorundasınız. Sonuçta sizin için EPROM'a (Silinebilir, Programlanabilir, Yalnızca Okunabilir Bellek, İngilizcesi: Erasable Programmable Read Only Memory) düzgü (code) girmeye hazır birini bulmalısınız ama başlangıçta iletişimağı açınımını bir disketten yapabilirsiniz.

Bir açınım disketi yaratmak için dağıtım içinde özel bir açınım bloku bulunması gerekir. Bu küçük 512 baytlık program, disket üzerinde kendisini izleyen blokları belleğe yükler ve çalıştırır. Böylece, bir açınım disketi yapmak için yalnızca boot bloku ile aşağıdakine benzer biçimde bir iletişimağı kartı için sürücü içeren Etherboot ikilitaban dosyasını birleştirmek yeterlidir.

cat floppyload.bin 3c509.lzrom > /dev/fd0

İletişimağı açınım disketi içine yerleştirimden önce Linux üzerinde üç servisin devreye sokulması gerekir: BOOTP (ya da DHCP ) TFTP ve NFS. Bunların üçünün birden bir çırpıda ayarlanması zorunlu değildir, bu işlemler adım adım gerçekleştirilebilir. Böylece her aşamanın düzgün çalıştığından emin olunduktan sonra bir sonraki adıma geçilebilir.

bootpd sunucusunu bir dağıtımdan edinerek ya da kaynaktan derleyerek kurduğunuzu varsayalım. O zaman, bu sunucunun bootp istemleri için beklemekte olduğundan emin olmak gerekecektir. Bunu yapmanın iki yolu bulunmaktadır: birincisi bootpd'yi bir iletişimağı servisi olarak yani bilgisayar çalışırken sürekli dinleyen yapıda başlatmak, diğeri ise onu inetd'den başlatmaktır. İkincisi icin, /etc/inetd.conf şöyle bir satırı içermelidir:

bootps dgram udp wait root /usr/sbin/tcpd bootpd

Eger /etc/inetd.conf'ta değişiklik yapmak zorunda kaldıysanız daha sonra inetd'yi HUP sinyali göndererek yeniden başlatmanız gerekir.

Bundan sonraki aşamada, Ethernet adresini IP adresine çevirmek için bootp'ye bir veri tabanı vermeniz gerekir. Bu veritabanı /etc/bootptab.'in içindedir. O aşağıdaki biçimde satırları içerir.

aldebaran.foo.com:ha=006008C7A3D8:ip=192.168.1.100:bf=/tftpboot/vmlinuz.nb

Diğer bilgiler de açıkça belirtilebilir ama biz kolayından başlayacağız.

Artık tekersiz bilgisayarı (TB) açınım disketi ile açtığınızda o sizin internet kartınızı bulur ve bir BOOTP istemi yayınlar. Eğer herşey yolunda giderse, sunucu TB'a istemde bulunulan bilgilerle yanıt vermelidir. /tftpboot/vmlinux.nb'nin henüz varolmamasından dolayı dosya yükleme çabaları yanılgıyla sonuçlanacaktır.

Şimdi çalışmakta olan bir NFS'den kök dosyasitemini mount edebilme seçeneği olan özel bir çekirdek derlemeniz gerekmektedir. Ayrıca orijinal BOOTP yanıtından çekirdeğinizin IP adresini alabilme seçeneğini de etkinleştirmeniz gerekmektedir. Öte yandan, iletişimağı uyarlayıcınız için Linux sürücüsünü, modül olarak yükleme yerine, çekirdek içine derlemeniz de gerekmektedir. Modül yüklemenin mümkün olabilmesi için bir başlangıç ramtekerini (ramdisk) yöreyeçekmeniz (download) mümkündür. Ama bu daha sonra yapabileceğiniz birşeydir.

çekirdek derlemesinin sonucunda oluşan zImage dosyasını doğrudan kuramazsınız. Onun önce bir tagged image (etiketlenmiş görüntü dosyası) haline dönüştürülmesi gerekir. Etiketlenmiş görüntü dosyası, iletişimağı açınımyükleyicisine baytların bellekte nereye gideceklerini ve de programın hangi adreste başlatılacağını söyleyen özel bir başlığı olan normal bir çekirdektir. Bu etiketlenmiş görüntü dosyasını oluşturmak için mknbi-linux adlı bir program kullanılır. Bu kullandırım (utility) Etherboot dağıtımında bulunabilir. Görüntü dosyasını ürettikten sonra /etc/bootptab.'in içinde belirtilmiş olan ad altında /tftpboot dizinine koyabilirsiniz. FTP sunucusunun özel hakları olmamasından dolayı dosyanın herkesçe okunabilme haklarına sahip olduğundan emin olmak gerekmektedir.

TFTP icin, tftpd'yi bir dağıtımdan ya da kaynaktan derleyerek elde edip kurulumunu sağladığınızı varsayıyorum. Tftpd, normalde, inetd'den /etc/inetd.conf içinde aşağıdakine benzer bir satırla başlatılır.

tftp dgram udp wait root /usr/sbin/tcpd in.tftpd -s /tftpboot

inetd'yi bir HUP sinyali ile yeniden başlatıp açınımı (boot) yeniden denediğinizde çekirdek görüntü dosyasını yöreyeçekebilmeli ve onu başlatabilmelidir.Bu durumda, açınımın kök dosya sistemini mount edene dek süreceğini gözleyeceksiniz. Bu noktada, ilerleyebilmek için, NFS bölünümlerini biçimlendirip dışaaçmanız gerekir.

Çeşitli nedenlerden dolayı, sunucunun kök dosya sistemini, tekersiz bilisayarın kök dosya sistemi olarak kullanmak iyi bir düşünce değildir. Nedenlerden birisi basitçe, çeşitli biçimlendirim dosyalarının varolması ve bu yoldan tekersiz bilgisayarın yanlış bilgi almasıdır. Diğer bir neden de güvenliktir. Sunucunun köküne yazabilme haklı erişim sağlanması tehlikelidir ve de yazma haklı erişim, çeşitli nedenlerden dolayı, kök dosya sistemi için gerekmektedir. Bununla birlikte, tekersiz bilgisayar için kök dosya sisteminin çok büyük olmaması, yalnızca 30 MB dolayında olması ve bunun büyük bir kesiminin çok sayıda tekersiz bilgisayar tarafından paylaşılabilmesi işin iyimser yanıdır.

İdeal olarak bir kök dosya sistemi oluşturmak için işletim sistem dağıtımının hangi dosyaları görmeyi beklediıini bilmelisiniz. Açınıma kritik olan şeyler aygıt dosyaları ve /sbin ile /etc içinde bulunan dosyalardır. Varolan bir kök dosya sisteminin kopyasını çıkarıp bazı dosyaları tekersiz bilgisayar için yeniden düzenleyerek zor işlerden kaçınmak mümkündür. Etherboot dağıtımında, bir eğitselyazı (tutorial) ve varolan bir sunucu kök dosya sisteminden böyle bir tekersiz bilgisayar kök dosya sistemi yaratmak için bazı kabuk yazımlarına bağlantılar bulunmaktadır. Etherboot kaynakyazılandırımında (documentation), ayarlamaların aldatmacacı yanı olan öğütler de bulunmaktadır.

Tekersiz bilgisayar için isteğe göre düzenlenmiş Linux çekirdeği kök dosya sistemini /tftpboot/<Tekersiz bilgisayarın IP adresi>'nde görmeyi bekler. Sözgelimi: yukarıdaki durumda /tftpboot/192.168.1.100. Eğer istenirse, bu, çekirdek biçimlendirilirken değiştirilebilir.

Şimdi sunucu üzerindeki /etc/exports dosyasını yaratarak ya da edit ederek aşağıdaki biçimde bir satır ekleyebilirsiniz:

/tftpboot/192.168.1.100 aldebaran.foo.com(rw,no_root_squash)

rw erişimine bir çok sistem servisi tarafından gereksinim duyulur. no_root_squash niteliği NFS sistemini kök kimliğini diğerine dönüştürmekten alıkoyar. Eğer bu belirtilmezse birçok daemon ve kayıttutucu için hoş olmaz.

NFS servislerini (rpc.portmap ve rpc.mountd) başlatın (veya yeniden başlatın) ve tekersiz açınımı yeniden deneyin. Eğer başardıysanız, çekirdek bir kök dosya sistemine mount edebilecek ve giriş buyruksimgesine (login prompt) kadar açınımı sağlar. Benzer biçimde yanlış biçimlendirilmiş birçok şey bulacaksınız. Linux dağıtımlarının birçoğu tekerli işletime yönelik olarak tasarlanmış olup tekersiz açınım için bazı düzeltimleri gerektirirler. En bilinen yanılgı, açınım sürecinde, /usr dizini altındaki, sunucudan açınımda gecikmelere neden olan, dosyalara güvenmektir. İki olası çözüm söz konusudur: 1. Kök dosya sistemi üzerinde, içe alındığında /usr'ın üstüne yerleşeceği küçük bir /usr dizini altında birkaç gerekli dosyanın sağlanması ve 2. kök dosya sisteminde dosyaları aramak için erişimyollarının düzeltimi. Düzenlenecek dosyalar /tftpboot/192.168.1.100 altındadır (bunun tekersiz bilgisayarın kök dizini olduğunu anımsayın).


Sunucudan, yalnızca okunabilir olarak dışaaçılabilen /usr gibi diğer dizinleri de mount etmek isteyebilirsiniz.


İletişimağı üzerinden sorunsuz olarak açınım yapabildiğiniz zaman düzgüyü bir EPROM üzerine yerleştirmek isteyebilirsiniz. Bir EPROM programcısı 100 Amerikan Doları'ndan baçlar ve bunu seçkisiz biçimde gerçekleştiren bir tutkun için tutarlı bir yatırım değildir. Kullanılmış mallar pazarında, bunlardan birisini uygun fiyatla bulmak, nadiren mümkün olur. Emin olunması gereken nokta sürülecek yazılımın bulunabilirliğidir. Yetkin bir elektronik tutkunu, Internet'te varolan çeşitli tasarımlardan birini kullanarak böyle birini oluşturabilirdi ama, okuyucuların çoğunluğu için, en iyi çözüm böyle birine sahip olan birisiyle, belki de bir elektronik tutkunları grubunda ya da elektronik endüstrisinde çalışan birisiyle, iletişim kurmaktır.

EPROM teknolojisi hakkında kısa bir açıklama: Bir EPROM'un bitleri 0 bitin gereksinim duyulduğu yer olan bir alan-etki transistörünün yüzer giriş kapısından yükseltilmiş gerilimle elektron enjekte ederek programlanır. Burada tutulan elektronlar transistörü iletken yapar ve sıfır gibi okunur. EPROM'u silmek için yongaya kuvartz pencereden UV radyasyon verilir. Tutulan elektronlar böylece yüksek enerjiyle karşı karşıya kalırlar ve yüzer giriş kapısından kaçarlar. Yıllarca güneş ve floresan ışığından kaynaklanan yavaş silinmeyi engellemek için bu kuvartz pencere normal kullanımda donuk (opak) bir etiket ile kaplanmıştır.


EEPROM veya elektriksel olarak silinebilir PROM (Electrically Erasable PROM) adlı, bazan da Flash PROM denen başka bir teknoloji daha vardır. Burada bit'ler elektriksel sinyaller ile temizlenir. Bu, eğer EPROM yeniden kullanılacaksa bir UV silici gerekinimini ortadan kaldırır fakat silme fazını destekleyecek ek bir devreyi gerektirir. Eğer elektronikte becerikli olanınız varsa Etherboot dağıtımında yardımcı bir devre tasarımı ve EPROM kartı için sürücü yazılımı bulunmaktadır. Kart bilgisayardaki herhangi bir boş ISA BUS yarığına takılır ve başka bir yarığa bağlı olan iletişimağı kartının açınımını sağlar.

İletişimağı Açınımının Kullanımları

X-terminalleri iletişimağı açınım olayının doğal bir kullanımıdır. Terminalde teker olmaması onu sessiz kılar ve hoş bir çalışma ortamı yaratır. Bilgisayar ideal olarak 16 MB veya daha fazla belleğe ve ona uyan bulabildiğiniz en iyi video kartına sahip olmalıdır. Bu, donanımdaki gelişmeler sonucu kullanılmaz hale gelen gelişmiş bir 486 ya da alt uçlardaki bir Pentium için ideal bir kullanımdır.


Diğer insanlar iletişimağı açınımını, bir grup dersane makinasi gibi, kullanımın tekersiz bilgisayar üzerine az yoğunlaştığı ve disk kullanımı gerektirmeyen makine grupları için kullanmışlardır.

Daha Çok Bilgi Icin

İlk durağınız Etherboot görsel sanalyöresi olmalıdır:
http://www.slug.org.au/etherboot/

Burada soru ve çözümlerin tartışıldığı, abone olabileceğiniz gönderi listelerini de içeren diğer kaynaklara bağlantılar bulabilirsiniz.

Mutlu iletişimağları açınımları.

Bu sanalyörenin bakımı Miguel Angel Sepulveda tarafından yapılmaktadır.
© Ken Yap 1998
LinuxFocus 1998