8 Nisan 2013
Linux'ta RAM'i disk olarak kullanmak
GB'larca kullanmadığım RAM'im varsa SSD diskin faydalarından neden geri kalayım ki diye düşünerek Google'da biraz araştırma sonucunda basit bir yöntem buldum. Aşağıdaki komutları sırayla vererek oluşturulan bir disk_on_ram (ismini istediğiniz gibi belirleyebilirsiniz) dizinini, RAM'de belirlediğim miktarda alanı disk olarak kullanabiliyorum Yani sqlite dosyasını buraya atıp üzerindeki işlemleri eskisine göre çok daha hızlı yaptıktan sonra işlenmiş halini alabiliyorum. Benzer diske sırasız yazma işlemi gerektiğinde yine bu alanı kullanıyorum.
sudo sysctl vm.swappiness=0
mkdir disk_on_ram
sudo mount -t tmpfs -o size=256M tmpfs disk_on_ram
İlk komutun ne yaptığından kısaca bahsedeyim. vm.swappiness, swap alanınının yüzde olarak ne sıklıkla kullanılacağını belirleyen bir sistem değişkenidir. Bunun standart değeri çoğu dağıtımda 60'tır. Bunun değeri 1 bile olsa tmpfs ile ramdisk yapmak mümkün olmuyor. Bu yüzden değeri 0'a indirdim. Eğer RAM'inizi tamamen kullanıyorsanız ve swap alanına ihtiyacınız oluyorsa bunu yapmanızı önermem, bunu yaptığım bilgisayarda 8GB RAM var ve günlük olarak en fazla 4GB kadarını kullanıyorum.
26 Mayıs 2011
Linux Konsolunda Bluetooth ile Cep Telefonunu Modem Olarak Kullanmak
Aşağıdaki komutların tamamını root yetkisiyle vermek gerekiyor. Önce gerekli araçları kuralım:
pisi it python-gtk bluez -yBağlantı kurmak için kullanacağımız Bluetooth arayüzünün ismini öğrenelim:
hciconfigBu komut şöyle bir liste verecektir:
hci0: Type: BR/EDR Bus: USBBuradan bilgisayarımızda bir tane Bluetooth arayüzünün bulunduğunu ve isminin hci0 olduğunu anlıyoruz. Bluetooth arayüzünü görünür ve bağlanılabilir duruma geçirmek için şu komutu veriyoruz:
BD Address: 00:24:D2:C8:F4:A7 ACL MTU: 1021:6 SCO MTU: 64:1
UP RUNNING PSCAN ISCAN
RX bytes:43710 acl:224 sco:0 events:815 errors:0
TX bytes:8544 acl:233 sco:0 commands:176 errors:0
hciconfig hci0 piscanŞimdi şu komutu verip telefonun bağlanmasını bekler konuma geçiyoruz:
simple-agentTelefondan Bluetooth aygıtlarını aratıp bilgisayarımızı buluyoruz ve eşleştirme için seçiyoruz. Seçtikten sonra 0000 gibi kendi seçtiğimiz herhangi bir pin kodu giriyoruz. Telefona pin kodu girdikten sonra simple-agent bunu soracaktır. Ona da aynı pini giriyoruz. Telefon eşleşmeyi onaylayacaktır. İsterseniz bu adımdan sonra telefonun ayarlarından bilgisayara tam yetki vererek iki de bir bağlantıyı onaylamak derdinden kurtulabilirsiniz. Artık simple-agent'tan çıkmak için ctrl+c'ye basabiliriz. Şimdi modem arayüzünün nerede olduğunu öğrenelim:
hcitool scanBu komut aşağıdaki gibi bir liste verecektir:
Scanning ...Bu listeden bağlanacağımız telefonun MAC adresini (00:1C:D4:84:BD:77) kullanarak bunun hangi kanalda modem hizmeti verdiğini öğreniyoruz:
00:1C:D4:84:BD:77 jnmbk-n73
sdptool browse 00:1C:D4:84:BD:77|grep Dial -C5
Service Name: Dial-Up NetworkingBu çıktıda bizi ilgilendiren tek şey Channel: 2 olan satırdır. Buradan modem servisinin 2 numaralı kanalda olduğunu öğreniyoruz. Öğrendiğimiz bilgileri kullanarak /etc/bluetooth/rfcomm.conf dosyasını aşağıdaki gibi düzenliyoruz:
Service RecHandle: 0x1000b
Service Class ID List:
"Dialup Networking" (0x1103)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 2
Language Base Attr List:
code_ISO639: 0x454e
encoding: 0x6a
base_offset: 0x100
Profile Descriptor List:
"Dialup Networking" (0x1103)
Version: 0x0100
rfcomm0 {Dosyayı kaydettikten sonra şu komutla modem aygıtını oluşturuyoruz:
bind yes;
device 00:1C:D4:84:BD:77;
channel 2;
comment "jnmbk-N73";
}
rfcomm bind rfcomm0Artık /dev/rfcomm0 aygıtını dial-up modem gibi kullanabiliriz. Telefonunuz bilgisayarın Bluetooth alanı (çoğu zaman 10 metre) içinde bulunduğu sürece bağlantınız kopmayacaktır. Telefon uzaklaşıp tekrar yakınlaşırsa da modem aygıtı ek işlem yapmadan tekrar çalışır hale gelecektir. Son komutu /etc/conf.d/local.start dosyasına ekleyerek açılışta modem aygıtının otomatik oluşturulmasını sağlayabilirsiniz.
25 Aralık 2010
Pardus'ta MSP430 LaunchPad Kullanımı
MSP430 LaunchPad, şuradan da görebileceğiniz gibi öğrenme amaçlı kullanılan çok düşük fiyatlı bir mikro denetleyicidir. Geçen hafta Gerçek Zamanlı Sistemler dersinde tüm sınıfa bunlardan (msp-exp430g2) dağıtıldı ve bunun üzerinde birkaç uygulama yapmamız istendi. Bu cihazlar ayrıca mcu-turkey adlı yarışmaya katılan öğrencilere de dağıtılıyor. Geliştirmeyi Pardus'la yapmak isteyenlere bir başlangıç olabilmesi amacıyla bu yazıyı yazıyorum.
sudo pisi it -c system.devel && sudo pisi it git minicom
git clone git://mspgcc4.git.sourceforge.net/gitroot/mspgcc4/mspgcc4cd mspgcc4sudo sh buildgcc.sh
wget -O mspdebug.tar.gz http://sourceforge.net/projects/mspdebug/files/mspdebug-0.13.tar.gz/downloadtar -zxvf mspdebug.tar.gzcd mspdebugmakesudo make install
/opt/msp430-gcc-4.4.5/bin/msp430-gcc -Os -mmcu=msp430x2231 -o main.elf main.c
mspdebug rf2500 "load main.elf"
sudo minicom -s
15 Nisan 2010
Star Wars ve Özgür Yazılım
9 Ağustos 2009
Compaq Mini 110 ve Linux ile 3G bağlantısı
İşin ucunda her yerden internete girebilmek olduğu için kardeşimin bilgisayarları değişelim teklifine hayır diyemedim. Bilgisayarımı hemen bıraktıktan sonra ilk iş olarak elimin altında duran Ubuntu Netbook Remix kurulu USB belleği Mini'ye takıp başladım. Ses çıkmaması ve 3G modemin ortalıkta görünmemesi dışında bir sorunu yoktu. Bundaki Gparted'i kullanarak yanlışlıkla(!) Windows bölümünü ortadan kaldırdıktan sonra Pardus ve Ubuntu'yu yan yana kurmayı düşünüp ona göre yeniden bölümlendirdim.
Ubuntu'yu kurduktan sonra Pardus 2009 kurulumunda ilk kez bu bilgisayarda bir sorunla karşılaştım. /dev içeriği dolduruluyor yazan yerde bilgisayar kilitleniyordu. Açılışta pek çok kernel parametresini denedikten sonra bir sonuca ulaşamayınca başka kurulum yöntemleri düşünmeye başladım. Diğer bilgisayarı kullanarak Pardus'u harici bir diske kurdum ve bunu Ubuntu'yla Mini'de hazırladığım Pardus bölümüne kopyalayarak kurulumu tamamlamış oldum.
/* Aşağıda Compaq Mini'ye Pardus kurulumu ile ilgili yazanları evde denememenizi öneririm. Henüz mutlu sona ulaşamadım. Sadece 3G modemle ilgileniyorsanız ikinci yorumdan itibaren okumaya devam edin. */
Kurduktan sonra tahmin ettiğim gibi yine aynı yere gelince kilitlenmeye devam ediyordu. Hemen Pardus'un açılışından sorumlu olan /sbin/mudur.py'yi inceleyip nerede kilitlendiğini bulmak için aralara ne yapıldığını anlatan çeşitli iletiler ekledim. Udev aygıtları tarayıp /dev dizinini doldurmaya başlıyor, bunun bitmesi beklenirken kilitleniyordu. /etc/udev/udev.conf'ta debug parametresini kullanarak daha ayrıntılı çıktı alabildim. Hangi aygıtın kilitlenmeye sebep olduğunu düşünürken sıkıldım ve başka fikirler denemeye karar verdim.
Önce Pardus'u Ubuntu kerneliyle (2.6.28) açmaya çalışırsam ne olur dedim ve kerneli kopyalayıp grub'a ekleyerek denedim. Tamam açılıyordu ama sürücüler olmadığı için doğal olarak konsolda kalıyordu. Sürücüleri de kopyalamaya üşendiğim için hemen başka bir şey denedim ve hazır Pardus açılmışken pisi'yle depodaki son kerneli kurayım dedim. Bu kez de dbus düzgün çalışmadığı için çomar yapılandırması başarısız oluyordu. Kernele ait çomar betiğini inceleyip çomarın işini (mkinitramfs çalıştırmak ve grub'a eklemek) elle yaparak bunu da atlattıktan sonra yeni Pardus kerneliyle başlattım ve dbusun yine çalışmadığını görünce Pardus kurulumuna biraz ara verip 3G modemle uğraşmaya karar verdim.
/* Asıl konuya dönüyoruz, okumaya devam. */
Ubuntu Jaunty Netbook Remix, 2.6.28 kerneliyle geliyordu ve Mini'deki entegre Hp un2400 Mobile Broadband modem için gerekli olan qcserial modülü 2.6.30 kerneli istiyordu. Aşağıdakileri indirip sudo dpkg -i komutuyla kurduktan sonra artık 2.6.30 kernelim de olmuştu:
linux-headers-2.6.30-020630-generic_2.6.30-020630_i386.deb
linux-headers-2.6.30-020630_2.6.30-020630_all.deb
linux-image-2.6.30-020630-generic_2.6.30-020630_i386.deb
Yeni kernelin en sevdiğim yanı Intel ekran kartını hemen hemen %50 oranında daha performanslı çalıştırıyor olmasıydı. Kötü olan yanı ise Broadcom kablosuz kartın artık çalışmamasıydı. Sahipli sürücüsü olan bu kartın 2.6.30 için sürücüsü yoktu. Durumu kurtarmak için HP'nin sitesinden ilgili Windows XP sürücüsünü indirdim ve Wine'yle çalıştırıp açılmasını sağladıktan sonra ndiswrapper ile bu sürücüyü yükledim. Sürücüyü b43 ve ssb modülleri sahiplendiği için önce rmmod ile bunları kaldırıp modprobe ndiswrapper diyerek kablosuzun çalışmasını sağlayabildim.
Bu kadar uğraştıktan sonra yine sıkılmaya başladım ve müzik dinleyebilmek için ses sorunuyla ilgilenmeye karar verdim. Ubuntu, alsa'nın biraz eski bir sürümünü kullanıyordu ve bu sürüm Mini'deki ses kartının kullandığı yepyeni kodek için destek vermiyordu. Hazır kerneli yenilemişken alsa sürücülerinin de son halini indirip sadece hda-intel sürücüsünü derledim ve kurduğum gibi ses gelmeye başladı.
Müzik de tamam olunca sıra 3G Modeme geldi. Kernel güncel olmasına rağmen lsusb çıktısında modemle ilgili hiçbir şey görünmüyordu. Bu konuda araştırırken bir forumda hp-wmi sürücüsünün adının geçtiğini gördüm. Bu sürücü HP bilgisayarlardaki kısayol düğmelerinin çalışmasını sağlıyordu. Sürücüyü modprobe ile etkinleştirip kablosuz ağ düğmesine iki kez basınca lsusb çıktısında modemi görmek heyecan vericiydi.
Çeşitli kaynaklarda yazdığına göre modem orada göründüğü haliyle bir işe yaramıyordu. Quallcomm'un ürettiği bu modemler gobi_loader denen bir araçla servis sağlayıcısının verdiği firmware'in modeme yüklenmesi ile çalışır hale geliyordu. Sonrasında da qcserial adlı bir modülün yüklenmesi gerekliydi. Hemen bu ikisini indirip derledim. Modemin firmware'ini almak bunlardan uzun sürdü çünkü HP'nin sitesindeki dosya tam 130MB büyüklüğündeydi. İçinde tüm servis sağlayıcılar için birer firmware dosyası bulunuyordu. Bunlar 0'dan 10'a kadar isimlendirilmiş dizinlerin içinde ikişer dosya halinde duruyordu. Bizim Turkcell olsa olsa sonuncu olmuştur diyerek 10 numaralı dizindekilerle şansımı denemeye karar verdim. Bunları /lib/firmware/gobi/ altına kopyaladım ve kablosuz ağ düğmesini tekrar aç-kapa yapıp biraz bekledikten sonra modem çalışmaya başladı.
Modem çalışmasına rağmen yine de bağlanamıyordu. Pardus-kullanıcıları e-posta listesinde Turkcell Vınn Modem ile bağlanabildiğini açıklayan Akın'a bir e-posta atarak fikrini aldım. SIM kartı bir telefona takıp pin kodu korumasını kaldırdım ve Apn yerine mgb yazdım. Sonra bağlan dedim ve çıkan küçük parola pencerelerini hiçbir şey yazmadan Tamam'a tıklayarak kapattım. Son pencereyi de tamam diyerek kapattığım anda bağlantı kurulmuştu.
Sırada Pardus 2009'daki sorunu bulup kurulumu tamamlamak var...
Not: Yazıdaki derleme ve kurulumlarla ilgili bağlantıları ve komutları zaman bulduğumda ekleyeceğim. Şimdilik bu haliyle yayına alıp aynı durumla uğraşan kişilerin zaman kazanmasını ve bunun mümkün olduğunu görmelerini istedim.
18 Haziran 2009
KDE 4.2 ve GPF - 2
Bunun ardından çizgi romanı bir süreliğine sitesinden okumaya devam ettim. Bu kez de sayfanın yenilenmesi uzun sürdüğü için parçalar arasında çok bekliyordum. En sonunda bekleme sorunumu ve belli bir tarihten sonrasını indirememe sorununu çözecek, aynı zamanda sevdiğim bölümleri kaydedebileceğim bir PyQt uygulaması yazmaya karar verdim.
Uygulamayı yazmam yaklaşık 30 dakika sürdü. İki parçadan oluşuyor. İlk parça olan indirici sadece siteye bağlanıp çizgi roman parçalarını kaldığım yerden şu anki tarihe kadar teker teker indirmeye çalışıyor ve bunları belirlediğim bir dizine tarihleriyle kaydediyor. İkinci parça olan okuyucu ise tıpkı KDE4 plasmoidinde olduğu gibi bu dizindeki resimleri sırayla gösteriyor. Artık sadece sırayla değil istediğim numaralı parçaya atlayarak da okuyabiliyor, sevdiğim parçaları ve son okuduğum parçayı kaydedebiliyordum.
Bir süre sonra plasmoidde olup da uygulamamda eksik olan bir özelliği fark ettim. KDE4 plasmoidleri istenilen açıyla çevrilebiliyorlar. Plasmoidi 90 derece çevirdiğim zaman yatarken de boynumu kırmadan okuyabiliyordum. Ekran kartımın sürücüsü desteklemediği için görüntüyü yan çevirmem de mümkün değildi. Bu yüzden uygulamama resmi gösterirken verilen açıyı kullanmasını sağlayan yeni bir özellik ekledim. Başta zor olacağını düşünmüştüm ama Qt sayesinde şu üç satır işimi gördü:
transform = QtGui.QTransform()Diğer insanların da faydalanabilmesi için yazdığım uygulamanın kodlarını GPLv3 ile lisanslayıp sudrap SVN deposuna koydum. Bir türlü zaman ayırıp kurulabilecek hatasız bir uygulama haline getiremediğim için pisi paketini yapmaya da uğraşmadım. İlgililer kodları buradan inceleyip indirebilir, hatta değiştirip tekrar dağıtabilirler.
transform.rotate(90)
pixmap = pixmap.transformed(transform)
GPF'i sonuna kadar okuduktan sonra kendi çizgi romanımı yapma girişimlerine başladım. Aslında bu ayrı bir blog girdisinin konusu olabilir. Ama hazır başlamışken devam edeyim. Girişimlerim birkaç hafta sürdü. Sonra plasmoide yeni eklenen bir web çizgi romanı daha ilgimi çekti. Adı Geek Hero Comic olan bu çizgi romanın diğerlerinden farkı özgür olmasıydı. Tüm parçalar SVG olarak Inkscape'te çiziliyor ve Creative Commons lisansıyla yayınlanıyor. Bir yazılım şirketinde çalışan özgür yazılımcının yaşadıklarını konu alması ise ilgimi çekmek için yeterliydi.
Geek Hero Comic'in bu parçasında hacker amblemini (tabutun üzerinde) görünce nereden geldiğini merak ettim. Wikipedia'da bunun anlamını öğrendim ve başka bir simgenin varlığından haberdar oldum. Hackerlığın ikinci simgesi olan Dust Puppy, User Friendly isimli başka bir çizgi romanın karakteriydi. Tabi hemen bu çizgi romanı da okumaya başladım. User Friendly, GPF'ten daha eski olduğu için okunacak daha fazla parçası vardı. Hemen daha önce yaptığım uygulama için bir de User Friendly indirme betiği hazırladım. Bununla 1997'den günümüze kadar olan bütün parçaları indirip okumaya başladım. User Friendly'i okudukça GPF'in köklerinin nereden geldiğini anlamaya başladım. Bunda da GPF'te olduğu gibi fantastik yan karakterler vardı. İlk fantastik karakter sunucuda biriken tozlardan meydana gelen Dust Puppy, ikincisiyse bunun yazdığı Erwin adlı yapay zeka olunca okumak için uzun bir çizgi roman daha bulduğum için sevindim...
Geçen zamanda çizgi romanlar dışında pek çok şeyle de uğraştım. Bunları başka bir gün, başka bir blog girdisinde anlatmayı umuyorum. Görüşmek üzere.
11 Ocak 2009
KDE 4.2 ve GPF
Dwayne Duncan
GPF Software'in karizmatik ve başarılı patronudur. Yönetimle ilgilendiği için uzun süre yazılımdan uzak kalır. Bir ara paslanmamak için çalışanlara yardım etmek ister fakat Cobol bilgisiyle Java'cı arkadaşlarına pek yardımcı olamaz. İyi niyetlidir, çalışanlarının sürekli bilgisayar başında durmasından endişelenerek onları rehabilitasyona gönderir.
Jason Barker (AKA "Fooker")
Fooker'ı tanımlamak için nerd'in önde gideni demek az kalır. Yeni çalışanların bilgisayarlarına Doom ve Quake kurarak iş için tüm ihtiyacının bunlar olduğunu söyler. Patronuna bir hafta süreceğini söylediği işi beş dakikada halleder ve geri kalan zamanda bu kurduklarıyla ilgilenir. Bir apartman dairesinde tek başına yaşar ve pasaklılığa yeni sınırlar kazandıracak kadar kirlidir. Evde rahatlamak için çıplak halde program yazar ve "Babewatch" kanalını izler. Ne zaman güzel bir kız görse çıkma teklif edip reddedilene kadar peşinden ayrılmaz. Bir de hiç belli etmediği halde çok iyi sunum yapar.
Fred
Fooker'ın yanda dediği gibi kiranın yarısını ödeyecek kadar gelişmiş bir yaşam biçimidir. Fooker'ın evinde her türlü atıktan yoğun şekilde bulunduğu için bu yaratık hızlıca evrimleşmiştir. Fooker evde yokken online bir üniversitede edebiyat dersleri vererek geçimini sağlar. Kumandayı yutarak televizyonun kontrolünü eline alır ve belgesel izler, izletir... Yılda bir kez mitoz geçirerek çoğalır.
Trudy
Trudy, GPF'in yeni pazarlama müdürüdür. Sürekli sırıtan bu kadın gerçek anlamda şeytana pabucunu ters giydirir. İşe girerken nedense diğer tüm adaylar çekilir. İşe girdikten sonra ise rakip şirketin patronu kafasına düşen bir kasadan dolayı vefat eder. Yaklaşık altı ayda bir kendine bir hedef seçer ve seçtiği kişiye hayatı zehir etmek için elinden geleni ardına koymaz.
Nick
Ana karakterimiz Nick, Fooker kadar olmasa da nerddür. Şirketin isminin bir Windows hatası olan General Protection Fault'un kısaltması olduğu teorisini ortaya atan kişidir. İş dışında rahatlamak için program yazar. Yanda kimse tanıştırmadığı ve bilgisayar başından kalkmadığı için ancak ikinci gün tanışabildiği Ki ile birlikte görülüyor. Ki'dan hoşlanır fakat IRC'deki gizli hayranını da kaybetmek istemez. Bu nedenle ikisine de açılamaz.
Ki
Ki, kolay kolay bilgisayarın başından kalkmaz. Eve gidince sabaha kadar Quake ve Doom oynar. Nick'ten ilk görüşte hoşlanmış fakat bir türlü açılamamıştır. Bu nedenle şirkete erişim kayıtlarından Nick'in evdeki IP'sini, IRC'de kullandığı takma adını bulur ve "pookel" takma adıyla girerek Nick'e gizli hayranı olduğunu söyler.