SGI O2'yi component video capture denemek için yeniden kurduğumda bir dizi sorunla karşılaştım. Bunları çözdükten sonra makineyi ağa bağladım; IRIX ortamını düzenleyip Nekoware ve wget kurulumuna kadar ilerledim. Fakat ertesi gün sistemi açtığımda öncekilerden farklı boot hatalarıyla karşılaştım. Böylece tek bir arıza hikâyesi değil, peş peşe yaşanan iki ayrı kurtarma süreci ortaya çıktı: önce SGI'yi yeniden kullanılabilir hâle getirmek, ardından yeni önyükleme hatalarını ağ üzerinden IRIX kurulum ortamına girerek çözmek.
Yıllar Sonra İlk Açılış
PROM monitöründe önce hinv ile donanım envanterine baktım. Sistem IP32 olarak kendisini, 256 MB belleği ve SCSI aygıtlarını görüyordu. Gerçek sistem diski SCSI ID 2 üzerindeydi. Buna karşılık önyükleme denemelerinde media not loaded, no recognizable filesystem, Unable to execute ... /unix ve SASH ile ilgili hatalar geliyordu.
PROM'da Kaybolan HDD Ayarları
printenv çıktısı sorunun ilk kısmını gösterdi: SystemPartition ve OSLoadPartition değişkenleri disk(1) tarafına kaymışken gerçek IRIX diski disk(2) idi. kernname ise disk(2)'yi gösteriyordu; yani PROM ortamındaki yollar kendi aralarında da tutarlı değildi.
Önyükleme değişkenlerini gerçek diske göre yeniden girdim:
setenv SystemPartition pci(0)scsi(0)disk(2)rdisk(0)partition(8)
setenv OSLoadPartition pci(0)scsi(0)disk(2)rdisk(0)partition(0)
setenv OSLoader sash
setenv OSLoadFilename /unix
setenv OSLoadOptions auto
setenv AutoLoad Yes
setenv kernname pci(0)scsi(0)disk(2)rdisk(0)partition(0)/unix
SystemPartition volume header içindeki standalone araçları, OSLoadPartition kök bölümü, kernname ise yüklenecek IRIX çekirdeğini gösteriyor. Bunlardan biri yanlış SCSI ID'ye baktığında disk fiziksel olarak görülse bile sistem açılmıyor.
Sorun Yalnızca PROM Değişkenleri Değilmiş
Disk yollarını düzeltmek tek başına yeterli olmadı. Bu kez SASH tarafında relocation error, invalid argument ve invalid bootfile mesajları gördüm. Bir noktadan sonra güç kablosunu takar takmaz sistem kendiliğinden çalışıyor, ön panel LED'i kırmızı yanıp sönüyor ve normal açılışa geçemiyordu. Bu aşamada yalnızca yazılım ayarıyla uğraşmayı bırakıp donanım tarafını kontrol ettim.
RTC/NVRAM, PROM Reset ve RAM'ler
İlk şüphelerden biri Dallas DS1687 RTC/NVRAM entegresiydi. Dahili pil hattını ölçtüğümde yaklaşık 3,05 V gördüm. Bu değer tamamen bitmiş bir pil göstermiyordu; dolayısıyla arızayı yalnızca “RTC pili ölmüş” diye açıklamak mümkün değildi.
Anakartı çıkarıp RTC/NVRAM bölgesini inceledim. Kartı kaldırmaya yarayan mandallardan birinin kırılması nedeniyle bunun elektriksel bir kilit olup olmadığından da şüphelendim; fakat mandalı kesin arıza nedeni yapacak bir bulgu yoktu.
Sonra PROM ayarlarını sıfırladım ve RAM modüllerini tamamen söküp yeniden oturttum. İşlemleri peş peşe yaptığım için sistemi tek başına PROM resetinin mi yoksa RAM temasının mı düzelttiğini kesin olarak ayıramıyorum. Bildiğim şey, RAM'ler yeniden takıldıktan ve PROM tarafı temizlendikten sonra makinenin yeniden normal açılış sürecine döndüğü.
- PROM'daki hatalı HDD yollarını tespit edip disk(2)'ye göre düzelttim.
- DS1687 RTC/NVRAM pil hattını ölçtüm: yaklaşık 3,05 V.
- PROM ayarlarını sıfırladım.
- RAM modüllerini söküp yeniden oturttum.
- Disk yollarını tekrar doğrulayıp sistemi açtım.
IRIX Yeniden Açıldı
Sistem açıldıktan sonra PROM/HDD değişkenlerini IRIX içinden de tekrar kontrol ettim. Aşağıdaki görüntüde SystemPartition, OSLoadPartition, OSLoader, OSLoadFilename ve kernname değerlerinin disk(2) üzerinde tutarlı hâle geldiği görülüyor.
|
| Sistem açıldıktan sonra doğrulanan PROM/HDD değişkenleri. IRIX diski scsi(0)disk(2) yolunda. |
Makine ayağa kalkınca asıl ikinci aşamaya geçtim. IRIX tarafındaki ağ ayarları yarım yamalak durumdaydı: sistem yönlendiriciye ve doğrudan IP adreslerine ulaşabiliyor, buna rağmen alan adlarını çözemiyordu. Üstelik normal kullanıcı hesabında ping bile “Command not found” diyordu. Buradan devam edip ağ, DNS, kabuk ayarları ve Nekoware paket kurulumunu tek seferde toparladım.
Bu yazı IRIX'in eski UNIX alışkanlıklarıyla modern ağın birbirine sürttüğü yerleri, yaptığım yanlış denemeleri ve çalışan son düzeni içeriyor. Ekran fotoğraflarını özellikle sırayla bıraktım; komutların gerçek sistemdeki karşılığını takip etmek isteyen için küçük bir kurulum günlüğü oldu.
Ağ Arayüzü ve /etc/hosts
Önce root oldum ve ağ servisini, makine adını, arayüzü ve yönlendirme tablosunu kontrol ettim. Makineye 192.168.1.50 adresini verdim; varsayılan ağ geçidi 192.168.1.1. /etc/hosts içinde hem localhost hem de SGI'ın kendi adı doğru IP ile bulunmalı. Ben makine adını sgi-irix olarak kullandım.
su root
hostname
ifconfig -a
netstat -rn
cat /etc/hosts
/usr/etc/ping 192.168.1.1
IRIX'te bazı yönetim komutları /usr/etc altında. Root ortamında bulunan bir komut normal kullanıcıda PATH'e girmemiş olabiliyor. Bu yüzden “ping yok” sonucu ağ aracının kurulu olmadığı anlamına gelmiyor; önce /usr/etc/ping ile denemek gerekiyor.
IP Çalışıyor, DNS Çalışmıyor
Ağ geçidine ve 8.8.8.8 adresine ping başarılıydı. Yani Ethernet, IP adresi ve route tarafı çalışıyordu. Buna karşılık ping google.com hâlâ “Cannot resolve” hatası veriyordu. /etc/resolv.conf içine DNS sunucularını ekledim:
nameserver 8.8.8.8
nameserver 1.1.1.1
İlginç tarafı, nslookup google.com cevap veriyor ama normal uygulamalar alan adını çözemiyordu. IRIX isim çözümlemeyi doğrudan yalnızca resolv.conf üzerinden değil, nsd ve /etc/nsswitch.conf üzerinden yürütüyor. nsd günlüklerinde “no domain or search path in resolv.conf” uyarısını görünce dosyaya yerel ağ için bir arama alanı ekledim ve servisi yeniden yükledim.
search local
killall -HUP nsd
/etc/init.d/network stop
/etc/init.d/network start
/usr/etc/ping google.com
Buradaki local yalnızca ev ağı için kullandığım arama alanı. Kendi DNS alanınız varsa onu yazmanız gerekir. Bu düzeltmeden sonra hem IP hem alan adı çözümlemesi çalıştı.
PATH, Komut Geçmişi ve tcsh
Normal kullanıcı hesabında ping komutunun bulunmamasının nedeni PATH'ti. /usr/etc dizinini kullanıcı ortamına ekledim. Ardından her oturumda yukarı/aşağı oklarla komut geçmişini kullanabilmek için tcsh ayarlarını kalıcılaştırdım.
which tcsh
echo $SHELL
set path = ( /usr/etc $path )
set history = 100
Bu satırları kullanıcı hesabındaki ~/.cshrc dosyasına ekledim ve yeni oturum açmadan denemek için source ~/.cshrc çalıştırdım. Sonuçta ping doğrudan çağrılabildi, komut geçmişi çalıştı ve istemde makine adı görünür hâle geldi.
Türkçe Klavye Denemesi
Ağ işi bitince Türkçe klavye düzenine de baktım. IRIX'teki find, GNU find ile aynı seçeneklere sahip değil; örneğin -iname yok. X11 tuş eşlemelerini xmodmap -pke ile çıkardım, Türkçe karakter keysymlerini ve ISO-8859-9 fontlarını aradım.
xmodmap -pke
xlsfonts | grep iso8859-9
locale
locale -a
setenv LC_CTYPE tr
xmodmap ile tek tek keycode eşlemek mümkün görünse de sistemde xev bulunmadığı için fiziksel tuşları rahatça teşhis edemedim. Ayrıca locale ile klavye eşlemesi aynı şey değil: LC_CTYPE=tr Türkçe karakter sınıflandırmasını sağlıyor, tuşların hangi karakteri ürettiğini tek başına değiştirmiyor. Bu yüzden bu aşamada çalışan ağı bozacak kadar dosya kurcalamak yerine Türkçe klavyeyi ayrı bir işe bıraktım.
Nekoware ve wget Kurulumu
IRIX üzerinde wget ve curl kurulu değildi; fakat klasik FTP istemcisi vardı. IRIX Network'ün FTP sunucusuna anonymous olarak bağlanıp nekoware/current dizinine geçtim. Nekoware paketleri tardist biçiminde ve IRIX'in kendi inst aracıyla kuruluyor.
ftp ftp.irixnet.org
Name: anonymous
cd nekoware
cd current
binary
get neko_wget-1.11.3.tardist
quit
İlk denemede paketi yanlış dizinden açmaya çalıştığım için “No such file or directory”, salt okunur konuma yazmaya çalıştığım için de izin hataları aldım. inst içinde göreli dosya adıyla uğraşmak yerine tardist dosyalarının tam yolunu vermek en temiz çözüm oldu.
Bağımlılıklar ve inst
wget tek başına kurulmadı; kullandığım Nekoware paketinin gettext, libiconv ve OpenSSL bağımlılıkları vardı. Paketleri önce kullanıcı dizinine indirdim, ardından root olarak inst başlattım.
su root
cd /usr/people/kadir
inst
inst ana menüsünde her paketi tam yoluyla açtım:
open /usr/people/kadir/neko_libiconv-1.14.tardist
open /usr/people/kadir/neko_gettext-0.18.1.1.tardist
open /usr/people/kadir/neko_openssl-0.9.8x.tardist
open /usr/people/kadir/neko_wget-1.11.3.tardist
list
go
Paket adı veya sürümü FTP'deki dosyayla birebir aynı olmalı. Fotoğraflardaki bazı “file not found” ve tar hataları, adı ezberden yazdığım ya da eksik inmiş dosyayı açmaya çalıştığım denemelere ait. Son turda dosyaları ls -l ile doğrulayıp tam yolları kullanınca ürün açıklamaları düzgün okundu ve bağımlılıklar birlikte seçilebildi.
İkinci Perde: Farklı Boot Hataları ve Ağdan IRIX Kurtarma
İlk sorunları giderip ağı çalıştırmış, Nekoware paketleri ve wget aşamasına kadar gelmiştim. Bugün karşıma çıkan boot hataları ise önceki arızaların devamı değil, ayrı bir olaydı. Bu kez SGI O2'yi CD-ROM'a bağımlı kalmadan modern bir Windows bilgisayar üzerinden kurtarma ortamına alabilmek için bir ağ kurulum sunucusu hazırladım. Amaç mevcut diski hemen silmek değildi; önce kurulum medyasını görünür hâle getirmek, fx ve inst yollarını doğrulamak ve diskteki mevcut IRIX kurulumunu onarmaktı.
|
| Modern araçlardan eski silikona: Windows, WSL, Vagrant, VirtualBox ve ağ servisleri üzerinden SGI O2'ye uzanan kurtarma zinciri. |
Windows tarafındaki arşivde IRIX 6.5 taban diskleriyle 6.5.3, 6.5.9 ve 6.5.30 overlay setleri zaten duruyordu. Bunları E:\Program\SGI\irixboot\irix\6.5 altında aracın beklediği foundation ve overlay30 dizinlerine yerleştirdim. Ardından Vagrantfile içindeki istemci adı, O2'nin Ethernet adresi, SGI'nin sabit IP'si, sunucu IP'si ve köprü kurulacak Windows adaptörünü kendi ağıma göre düzenledim.
clientname = 'o2'
clientip = '192.168.1.50'
clientether = '08:00:69:0c:09:68'
hostip = '192.168.1.109'
bridgenic = 'Ethernet 2'
|
| Vagrant ve VirtualBox ağ düzeni: köprü adaptörü, irixboot sunucusu ve SGI O2'nin aynı yerel ağdaki rolleri. |
İlk Vagrant Çalıştırması ve Jessie Duvarı
vagrant up sanal makineyi oluşturdu, ikinci adaptörü köprü modunda açtı ve paylaşımlı klasörü bağladı. Fakat irixboot projesi artık arşivlik sayılabilecek Debian Jessie tabanını kullanıyordu. Normal paket depoları taşındığı için provision aşamasında apt 404 hataları verdi; bunun zincirleme sonucu olarak parted, mkfs.xfs, rsync, dnsmasq, DHCP, TFTP ve inetd eksik kaldı. Ekranda “Ready to network boot” yazması bu yüzden gerçeği tam anlatmıyordu: servisleri olmayan bir sunucu hazır sayılmazdı.
parted: command not found
mkfs.xfs: command not found
rsync: command not found
Failed to start dnsmasq.service
Failed to start isc-dhcp-server.service
Failed to start tftpd-hpa.service
Dağıtım Diskinin Yeniden Hazırlanması
Paketler kurulunca paylaşımlı dizindeki Foundation ve 6.5.30 overlay görüntülerini doğruladım. İlk başarısız deneme geride yarım hazırlanmış bir /irix dizini ve .irixboot işaret dosyası bırakmıştı. Betik bu dosyayı görünce dağıtımın hazır olduğunu sanıyordu. İşaret dosyasını kaldırıp dist.sh 6.5 komutunu yeniden çalıştırınca ikinci sanal disk XFS olarak biçimlendirildi ve disk görüntülerinin içeriği gerçek dağıtım ağacına kopyalandı.
ls -lh /vagrant/irix/6.5/foundation/ /vagrant/irix/6.5/overlay30/
sudo rm /irix/.irixboot
sudo /vagrant/scripts/dist.sh 6.5
O2 Üzerinde inst ile Onarım
Sunucu tarafı ayağa kalktıktan sonra O2'yi PROM menüsünden Install System yoluyla ağ kaynağına yönlendirdim. inst açıldığında önce dağıtım kaynağını, ardından sistem diskini denetledim. Bu noktada kritik ayrıntı, IRIX'in kök dosya sistemini geçici olarak /root altına bağlamasıydı. Dolayısıyla normal açılmış sistemdeki /bin yerine kurtarma ortamında /root/usr/bin ve benzeri yolları görmek doğaldı.
Dosya sistemi erişilebiliyordu; /root/unix okunuyor, dizin yapısı duruyordu. Kurulum/onarım işlemi tamamlandıktan sonra restart seçildi. Asıl hüküm yeniden açılışta verildi: makine PROM'a geri düşmedi, IRIX masaüstüne sorunsuz ulaştı.
Sonuç
Son durumda SGI yerel ağda 192.168.1.50 adresiyle çalışıyor; ağ geçidine, internetteki IP adreslerine ve alan adlarına ulaşabiliyor. Normal kullanıcı ortamında /usr/etc PATH içinde, varsayılan kabuk tcsh ve komut geçmişi kalıcı. Daha önemlisi, Windows üzerindeki modern araçlardan başlayıp Vagrant içindeki tarihî Debian'a, oradan BOOTP/TFTP/RSH zincirine ve nihayet O2'nin inst ortamına uzanan ağdan kurtarma yolu da sınanmış oldu.
Bu işte en yanıltıcı nokta tek bir arızanın olmamasıydı. IRIX tarafında nsd, nsswitch.conf ve resolv.conf; Windows tarafında köprü adaptörü; sanal makinede ömrünü tamamlamış Jessie depoları; dağıtım betiğinde ise yarım kalmış .irixboot işareti aynı hikâyenin ayrı katmanlarıydı. Sistem bozuk değildi; yalnızca 1990'ların UNIX mantığıyla, 2010'ların Linux betikleriyle ve 2020'lerin sanallaştırma araçlarıyla aynı anda konuşmak gerekiyordu :)
SGI O2, IRIX 6.5, PROM, SASH, inst, Vagrant, VirtualBox, BOOTP, TFTP, RSH, Debian Jessie, nsd, DNS, tcsh, Nekoware, tardist, wget, IRIX Network.





















