Jump to content
Forumu Destekleyenlere Katılın ×
Paticik Forumları
2000 lerden beri faal olan, çok şukela bir paylaşım platformuyuz. Hoşgeldiniz.

ubuntu kernel hacking


fizban

Öne çıkan mesajlar

neyi yanlış yapıyorum bilemiyorum, ama teoride herşeyi doğru yapıyorum diyerek giriş yapiyim bi.

bir ders projesi için kernel'i editlemek gerekli, ben de bunu yapıyorum, fakat ilk adım olarak eklediğim satırları falan test etmek için bir printk koyiyim sağa sola ki anliyim neler olduğunu diyorum.

hatta istediğim fonksiyonun return komutundan önce şöyle diyorum

printk("selam dayi nabern");


oldu diyor, sonracığıma kernel'i compile ediyorum, warning/error almıyorum; install ediyorum, boot edeyim derken hooop loadscreende gözgöze kalıyoruz öyle. sonra ctrl + alt + del ve tekrar aynı adımlar falan filan.

neyi atlıyor olabilirim ?
Link to comment
Sosyal ağlarda paylaş

selam fizban,

Şimdi linux kerneliyle elleşmek baya sıkıntılı bir konu; ben bitirme projemde ethernet layer network driver yazmıştım. Kernel hacking diyince kernel'e module yazıyorsun olarak algılıyorum.

Ubuntunun diğer distrolara göre bir farkı yok. compile edip insmod yapınca güzel güzel oluyor. Tam detaylarını hatırlamıyorum (projenin üzerinden çok zaman geçti) ama ben yazarken linkini aşağıda verdiğim kitaptan çok yararlanmıştım.
Linux Device Drivers 2nd ed.

Bunun dışında printk aslında sakat bir fonksiyon çünkü kernel leveldan user levela geçiyor basmak için, hem de baya performans bottleneck'i.

Bunun yerine linuxda /proc/ filesystem diye birşey var. Buraya yeni bir file yaratınca ekrana bastırmak yerine buraya yönlendiriyorsun outputlarını, driver çalışırken on the fly bu file'a yazıyor. (aslında tam file da değil, detaylarını okuyunca görürsün).


Yolladığım linkte /proc/ nasıl kullanılır var.

Umarım bir başlangıç noktası olmuştur.

Not: Bu arada kernelle elleşeceksen ve benim gibi ilk seferinse native ubuntu kurmak yerine VM üzerine kurmanı öneririm. Keza modülde ufak bir hata yaptığında program terminate etmek yerine tüm sistem aşağı iniyor. Ubuntu restart zamanı saç baş yolduruyor(workspace de tekrar fileları açmak vs cabası).
Link to comment
Sosyal ağlarda paylaş

selam berk, uzun zaman olmustur senin psotunu gormeyeli ehu.

proje "ubuntuda olacak" demese ugrasmam bile. hatta yaptigim seylerin bir kismi o kadar sacma ve scriptle yapsam o kadar kolay olacak tarzda ki, akliniz durur. ama ugrasiyorum simdilik, sikintimin sebebi de USB HID core driver blabla diyip aglamasiydi eski surum kernelin cok saygideger bilgisayarim karsisinda.

baska bilgisayara gectim cozdum o meseleyi =P
Link to comment
Sosyal ağlarda paylaş

selamlar, acil bir son dakiak sorusu

timer yazmam lazim. normalde timerlar anladigim kadariyla su sekilde calisiyor; x'ten geriye say, 0 olunca sunu yap.

ama ben boyle calissin istemiyorum, backgroundda surekli dongu halinde calissin istiyorum. fakat bu userlevel olmamali. istedigim sey aslinda tam olarak soyle:

kernel'de bir fonksiyonum var, bu fonksiyon birseyler yapip birsey donduruyor.. bu fonksiyon timer'i baslatacak, ama timer nonblocking oldugundan isine devam edecek.. timer surekli calisacak da calisacak..

fikir var midir ?
Link to comment
Sosyal ağlarda paylaş

fizban said:

selamlar, acil bir son dakiak sorusu

timer yazmam lazim. normalde timerlar anladigim kadariyla su sekilde calisiyor; x'ten geriye say, 0 olunca sunu yap.

ama ben boyle calissin istemiyorum, backgroundda surekli dongu halinde calissin istiyorum. fakat bu userlevel olmamali. istedigim sey aslinda tam olarak soyle:

kernel'de bir fonksiyonum var, bu fonksiyon birseyler yapip birsey donduruyor.. bu fonksiyon timer'i baslatacak, ama timer nonblocking oldugundan isine devam edecek.. timer surekli calisacak da calisacak..

fikir var midir ?


geçen dönem operating systems dersi için scheduler yazmıştık biz de kernele.

timerlar aslında interruptlar üzerinden çalışıyor kernelde, jiffies diye bi olay var interruptları sayan bir değer ve sürekli olarak aktif, yani sen istediğin zamanlarda bu jiffies değerini kontrol edip istediğin şeyi yaparsın buna göre, kernel bütün zamanlamayı jiffiese göre tutuyor.

2 farklı zamanda aldığın jiffies değerlerinin farkını bişeyle çarpınca milisaniye cinsinden geçen zamanı veriyordu ama o değeri hatırlamıyorum hehe

jiffiese bir bak olmadı sor daha detaylı yazarım çıkmam gerek lakin.
Link to comment
Sosyal ağlarda paylaş

×
×
  • Yeni Oluştur...