tmpfs ile RAM’de Yaşayan, Kapanınca Unutan Mini Linux

Bilgisayarınız her açılışta tertemiz başlasın, hiçbir iz bırakmasın ve disk yerine RAM hızında çalışsın ister miydiniz? Bu yazıda tmpfs üzerinde bir ramdisk oluşturup, içine minimal bir Linux kök dosya sistemi yerleştirerek tamamen RAM’de çalışan ve güç kesilince sıfırlanan bir sistemin mantığını kuracağız. Bunu bir “kullan-at işletim sistemi” gibi düşünebilirsiniz: hızlı, geçici ve eğlenceli derecede deneysel.

Devamı...

Terminalde ANSI Kaçış Kodlarıyla Gerçek Zamanlı Yılan Oyunu

Terminali sadece komut yazılan siyah bir kutu sanıyorsan, bugün biraz sihir yapıyoruz: ANSI kaçış kodlarıyla imleci piksel gibi oynatıp, renkleri değiştirip, gerçek zamanlı bir yılan oyunu tasarlayacağız. Buradaki amaç yalnızca “Snake yaptık” demek değil; terminalin nasıl çizim alanına dönüştüğünü, klavye girişinin nasıl anlık okunduğunu ve oyun döngüsünün nasıl çalıştığını anlamak.

Devamı...

Sanal Seri Portla Eski Usul Modem Sohbeti: İki Process’i Konuşturmak

Bir zamanlar internete bağlanmak, kulak tırmalayan bir modem serenadı eşliğinde gerçekleşirdi. Bugün TCP soketleri, REST API’leri ve mesaj kuyruklarıyla yaşıyoruz; ama iki process arasında sanal seri port çifti kurup bir taraftan AT komutları gönderirken diğer taraftan cevap okumak, haberleşmenin temel mantığını anlamak için hâlâ şahane bir laboratuvar deneyidir.

Devamı...

Raspberry Pi Device Tree Sorgulayıcı: GPIO, I2C ve SPI Fiziksel Adreslerini Avlamak

Raspberry Pi üzerinde GPIO, I2C, SPI ya da UART gibi çevre birimlerinin fiziksel adreslerini öğrenmek istiyorsan genelde datasheet, forum ve kernel kaynak kodu üçgeninde kaybolursun. Oysa Linux zaten bu bilgilerin büyük kısmını Device Tree üzerinden çekirdeğe sunar. Bu yazıda /proc/device-tree dosyalarını okuyarak çevre birimlerini ve adres aralıklarını listeleyen küçük ama güçlü bir sorgu aracı tasarlayacağız.

Devamı...

Netfilter ile Kedi Görsellerini Ters Çeviren HTTP Proxy Modülü

Bazen yazılım projeleri ciddi bir problemi çözer; bazen de ağdan geçen kedi fotoğraflarını baş aşağı çevirerek ekip arkadaşlarını hafifçe şaşırtır. Bu yazıda Linux ağ alt sistemindeki netfilter kancalarına takılan, giden HTTP trafiğini yakalayan ve kedi görseli dönen yanıtları kullanıcı alanındaki küçük bir proxy ile ters çeviren deneysel bir modül tasarlıyoruz. Not: HTTPS şifreli olduğu için bu oyun yalnızca düz HTTP ve laboratuvar ortamı içindir.

Devamı...

Linux ile Kötü Ağ Simülatörü: Sanal Arayüzde %5 Paket Kaybı ve Rastgele Gecikme

Uygulamanız lokal makinede ışık hızında çalışıyor olabilir; peki kullanıcı metroda, otel Wi‑Fi’ında ya da yağmurlu bir günde 4G’deyken ne olacak? Bu yazıda Linux üzerinde sanal bir ağ arayüzü oluşturup gelen paketlere yapay olarak %5 paket kaybı ve rastgele gecikme ekleyen küçük ama çok faydalı bir “kötü ağ simülatörü” kuracağız.

Devamı...

GDB Python ile Yığındaki Stringleri Avlayan Renkli Komut Yazmak

Debug oturumunda bazen en değerli ipucu, register’larda değil yığının arasında saklanan minicik bir stringdir: bir token, hata mesajı, dosya yolu ya da “buradayım!” diye bağıran bir parola. GNU Debugger, Python API’si sayesinde yalnızca komut çalıştırdığımız bir araç olmaktan çıkar; kendi mini dedektif komutlarımızı yazabileceğimiz genişletilebilir bir platforma dönüşür.

Devamı...

ext4 Günlükleme Mekanizmasını dd ve hexdump ile Canlı İzlemek

ext4 dosya sisteminde bir dosya yazdığınızda verinin diske “hop diye” gitmediğini bilmek, Linux’un perde arkasını anlamak için harika bir başlangıçtır. Bu yazıda güvenli bir loop imaj üzerinde ext4 günlük bölgesini bulup, yazma işlemi sırasında dd ve hexdump ile anlık izleyen küçük bir Bash betiği hazırlayacağız. Gerçek diskinize dokunmadan, dosya sisteminin kalp atışlarını dinleyeceğiz.

Devamı...

X11’de xinput ve xdotool ile Piksel Piksel İmleç Çizen Canlı Tuval

Fare imlecini ekranda minik bir robot kalem gibi gezdirip, geçtiği yolu canlı olarak çizen bir tuval uygulaması kulağa biraz büyücülük gibi gelebilir. Aslında X11 dünyasında bu işin arkasında çok net bir mantık var: imleç konumunu oku, konumu bir önceki noktayla birleştir, gerekiyorsa imleci programatik olarak bir piksel kaydır ve tekrar et.

Devamı...

SSH, Mikrofon ve Hoparlör Üçgeninde Etik Akustik Geri Besleme

Uzaktaki bir makinenin mikrofonunu açıp hoparlöre yönlendirmek teknik olarak ses yönlendirme, gecikme ve kazanç yönetimi konularına dokunur; fakat aynı zamanda çok ciddi mahremiyet riski taşır. Bu nedenle bu yazı, bir odayı gizlice dinleten bir düzenek kurma rehberi değil; yalnızca yetkili laboratuvar, konferans odası testi veya kendi cihazında yapılan kapalı devre akustik doğrulama için teorik ve güvenli bir çerçevedir.

Devamı...

Ses Kartından Nota Tahminine: Fourier Tabanlı Akort Uygulaması

Bir akort uygulaması kulağa basit gelir: teli çal, ekranda notayı gör. Ama perdenin arkasında ses kartından gelen ham örnekler, gürültü, pencereleme, Fourier dönüşümü ve biraz müzik teorisi birlikte dans eder. Bu yazıda, mikrofon ya da ses kartı girişinden alınan ham sinyali frekans analizine sokup enstrümanın notasını tahmin eden orta seviye bir uygulamanın mantığını kuracağız.

Devamı...

Satır Satır Fork: Child Process’lerle Paralel Boru Hattı Kurmak

Bir metin dosyasındaki her satırı ayrı bir iş birimi gibi düşünelim: Her satır küçük bir paket, her child process de bu paketi işleyen minik bir işçi. Sistem çağrısı seviyesinde paralel boru hattı kurmanın amacı, bu işçileri fork(), pipe(), dup2(), exec() ve wait() gibi yapı taşlarıyla yönetip çıktıları tek bir satırda birleştirmektir. Bu yaklaşım, shell komutlarını taklit etmekten öte, işletim sisteminin süreç ve dosya tanımlayıcı mantığını gerçekten kavratır.

Devamı...

LUKS İçin Sahte Masaüstü Tuzak Sistemi: Savunmacı Aldatma Tasarımı

Bir saldırganın cihazınızı ele geçirdiğini ve LUKS parolasını denediğini düşünün. Normalde yanlış parola yalnızca “erişim yok” demektir; fakat savunmacı aldatma yaklaşımında sistem, belirli sayıda hatadan sonra sanki parola kabul edilmiş gibi davranıp izole bir sahte masaüstü başlatabilir. Bu yazıda bunu kötüye kullanım değil, yalnızca kendi cihazınızda ve laboratuvar ortamında uygulanacak bir güvenlik tasarımı olarak ele alacağız.

Devamı...

Linux’ta /dev/uinput ile Sanal Fare ve Klavye Olayları Göndermek

Bazen fiziksel bir fareye ya da klavyeye dokunmadan sisteme giriş olayı göndermek isteriz: test otomasyonu, erişilebilirlik araçları, kiosk sistemleri, oyun botu prototipleri veya uzaktan kontrol yazılımları buna örnektir. Linux tarafında bu işin en temiz yollarından biri /dev/uinput aygıtıdır. Kısaca uinput, kullanıcı alanındaki bir programın çekirdeğe “Ben bir input aygıtıyım” demesini ve gerçek donanım gibi olay üretmesini sağlar.

Devamı...

Kabuk Betikleriyle Mini Konteyner Motoru: Namespace ve Cgroup Atölyesi

Konteyner denince akla hemen Docker gelir; ama sahnenin arkasında sihirli bir ejderha değil, Linux çekirdeğinin çok ciddi iki mekanizması çalışır: ad alanları ve kontrol grupları. Bu yazıda hazır bir konteyner motoru kullanmadan, kabuk betikleriyle küçük ama öğretici bir motor kuracağız. Amaç üretim ortamına rakip çıkarmak değil; kaputun altındaki pistonları tek tek görmek.

Devamı...

tmux ile Satranç Tahtası Gibi Çok Panelli İzleme Konsolu

Bir sunucuda log, kuyruk, API, veritabanı ve sistem metriklerini aynı anda izlemek bazen dedektiflik oyunu gibidir: ipucu bir yerde akar, hata başka yerde patlar. Bu yazıda kabuk betikleri ve tmux kullanarak ekranı satranç tahtası gibi bölen, her bölmede ayrı bir sürecin canlı çıktısını gösteren eğlenceli ama işe yarar bir izleme konsolu hazırlayacağız.

Devamı...

Prolog’da Kesme (Cut - !) Operatörü: Geriye İzlemeye Fren Yaptırmak

Prolog dünyasında program yazmak biraz labirentte akıllı bir dedektif gezdirmeye benzer: Dedektif her kapıyı dener, çıkmaz sokak görünce geri döner ve başka bir kapıya yönelir. Bu mekanizmaya geriye izleme denir. Kesme operatörü, yani !, dedektife şunu söyler: Buraya kadar geldiysen artık önceki kapıları kurcalama, bu yoldan devam et. Doğru kullanıldığında arama uzayını küçültür, performansı artırır ve programın niyetini daha net ifade eder.

Devamı...

Hata Ayıklama ve İzleme Modu: Kodun Dedektif Günlüğü

Kod yazmak bazen yemek tarifi uygulamak gibidir: Malzemeler doğru, fırın çalışıyor, ama kek yine de çöker. İşte hata ayıklama ve özellikle izleme yani trace modu, bu çöküşün hangi adımda başladığını görmemizi sağlar. Programın satır satır nasıl ilerlediğini, değişkenlerin hangi değerleri aldığını ve mantığın nerede ters köşe yaptığını takip ederek “bence çalışmalıydı” cümlesini “şurada yanlış düşünmüşüm” seviyesine taşırız.

Devamı...