<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Çağdaş&#039;ın Günlüğü &#187; ubuntu</title>
	<atom:link href="http://www.cagdastopcu.com/tag/ubuntu/feed" rel="self" type="application/rss+xml" />
	<link>http://www.cagdastopcu.com</link>
	<description>GNU HARDWARE DEVELOPER</description>
	<lastBuildDate>Mon, 22 Feb 2010 17:03:17 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Kernel Modül Programlama &#8211; Giriş</title>
		<link>http://www.cagdastopcu.com/kernel-modul-programlama-giris.html</link>
		<comments>http://www.cagdastopcu.com/kernel-modul-programlama-giris.html#comments</comments>
		<pubDate>Mon, 04 Jan 2010 02:22:05 +0000</pubDate>
		<dc:creator>cagdas</dc:creator>
				<category><![CDATA[GNU]]></category>
		<category><![CDATA[pragramlama]]></category>
		<category><![CDATA[compile]]></category>
		<category><![CDATA[derleme]]></category>
		<category><![CDATA[hack]]></category>
		<category><![CDATA[kernel]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[makefile]]></category>
		<category><![CDATA[modül]]></category>
		<category><![CDATA[module]]></category>
		<category><![CDATA[programlama]]></category>
		<category><![CDATA[source]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.cagdastopcu.com/?p=197</guid>
		<description><![CDATA[Kernel modülü programlamak sürekli korktuğum ancak merak ettiğim bir konuydu. Eğer mobile programlama yaparak yaşamımı devam ettireceksem bunu da öğrenmem gerekiyordu Java ME&#8217; nin yanında. Kernel işletim sisteminin çekirdeğidir ve Ubuntu dağıtımının (distro) kerneli Linux&#8217;tur. Kernel bütün programların trafiğini sağlar ve donanımla yazılım arasında bağ kurar. Basit bir kernel modülünü ekleyip çıkarmayı anlatıyorum bu yazımda.
Kernel [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_198" class="wp-caption aligncenter" style="width: 577px"><a href="http://www.cagdastopcu.com/wp-content/uploads/2010/01/kernelhello1.png"><img class="size-full wp-image-198" title="kernel, hack, linux, ubuntu, modül, module, programlama" src="http://www.cagdastopcu.com/wp-content/uploads/2010/01/kernelhello1.png" alt="kernel ilk modülü programlama" width="567" height="348" /></a><p class="wp-caption-text">ilk kernel modülü programlama</p></div>
<p>Kernel modülü programlamak sürekli korktuğum ancak merak ettiğim bir konuydu. Eğer mobile programlama yaparak yaşamımı devam ettireceksem bunu da öğrenmem gerekiyordu Java ME&#8217; nin yanında. Kernel işletim sisteminin çekirdeğidir ve Ubuntu dağıtımının (distro) kerneli Linux&#8217;tur. Kernel bütün programların trafiğini sağlar ve donanımla yazılım arasında bağ kurar. Basit bir kernel modülünü ekleyip çıkarmayı anlatıyorum bu yazımda.</p>
<h3><strong>Kernel Modülü Nedir?</strong></h3>
<p>Kernel (isteyen çekirdek diyebilir ancak uzayın kernelından aklımda hep kernel olarak kalacaktır <img src='http://www.cagdastopcu.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ) modülleri kernele ekleyip çıkarabildiğimiz kod parçalarıdır. Kernelin fonksiyonelliğini sistemi reboot etmeden, yani yeniden başlatmamıza gerek kalmadan modüller sayesinde geliştirebiliriz. Örnek olarak bir donanımın driverını gösterebiliriz, bu driverle kernelimiz sistem ve donanımımızın arasındaki bağlantıyı gerçekleştirebilecektir. Modülleri kullanmıyor olsaydık her fonksiyonelliği geliştirişimizde kernele eklenti yapmamız gerekecekti. Bu ise büyük kernele sahip sistemlerde her yeni geliştirmede kernelin yeniden derlenmesi ve sistemin reboot edilmesi gerçekten de kötü bir durumdur.</p>
<p><span id="more-197"></span></p>
<p>Kernelimizde kurulu olan modülleri <span style="color: #3366ff;">lsmod</span> komutuyla görebiliriz.</p>
<p><span style="color: #3366ff;">cagdas@cagdas:~$ lsmod<br />
Module                  Size  Used by<br />
msdos                  15744  0<br />
fat                    58272  1 msdos<br />
isofs                  39844  1<br />
udf                    87716  0 </span></p>
<p>gibi bir sürü kernel modülümüz görünecektir.</p>
<p>Eğer buradaki örnekler çalışmazsa büyük bir ihtimalle kernelinizin <span style="color: #3366ff;">CONFIG_MODVERSIONS</span> u aktif hale getirilmiştir. Eğer versiyon hataları alıyorsanız kernelinizdeki modversioning özelliğini off hale getirerek derlemeniz gerekmektedir.</p>
<p>Gelelim ilk kernel modülümüze. Elebette ki <span style="color: #3366ff;">&#8220;Hello World!&#8221;</span> uygulaması olucak. Başka türlü olsaydı şaşardım <img src='http://www.cagdastopcu.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><span style="color: #3366ff;">/*<br />
*  hello-1.c &#8211; The simplest kernel module.<br />
*/<br />
#include &lt;linux/module.h&gt;    /* Needed by all modules */<br />
#include &lt;linux/kernel.h&gt;    /* Needed for KERN_INFO */</span></p>
<p><span style="color: #3366ff;">int init_module(void)<br />
{<br />
printk(KERN_INFO &#8220;Hello world 1.\n&#8221;);</span></p>
<p><span style="color: #3366ff;">/*<br />
* A non 0 return means init_module failed; module can&#8217;t be loaded.<br />
*/<br />
return 0;<br />
}</span></p>
<p><span style="color: #3366ff;">void cleanup_module(void)<br />
{<br />
printk(KERN_INFO &#8220;Goodbye world 1.\n&#8221;);<br />
}</span></p>
<p>Kernel modülleri en az iki fonksiyondan oluşmaktadır. Bunlar başla ve bitir fonksiyonlarıdır. Genellikle <span style="color: #3366ff;">init_module()</span> başla ve <span style="color: #3366ff;">cleanup_module()</span> bitir (temizle) isimlendirmeleriyle kullanılırlar ancak kafamıza göre de isimler verebilirdik.</p>
<p>init_module() yapacağımız işi veya asıl fonksiyonu kernelin içine koyarak çağırmamızı veya kerneli denetlemizi sağlar. cleanup_module() kısmı ise init_module() ün yaptıklarını geri alarak modülümüzün güvenli bir şekilde kaldırılmasını sağlar.</p>
<p>linux/module.h kütüphanesi bütün kernel modüllerde kullanılır.</p>
<p>linux/kernel.h kütüphanesini ise printk() uyarısını kullanabilmek için çağırdık. Bu uyarı syslogd ve klogd programları çalışıyorsa /var/log/messages dosyasına çıktımızı loglamaya yarar.</p>
<p>Ardından Makefile&#8217;ımızı kodu koyduğumuz dizinin içine koyalım. Dosyanın adı <span style="color: #3366ff;">Makefile</span> olacak.</p>
<p><span style="color: #3366ff;">obj-m += hello-1.o</span></p>
<p>all:<br />
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules</p>
<p>clean:<br />
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean</p>
<p>make komutu ile modülümüzü derleyelim.</p>
<p><span style="color: #3366ff;">cagdas@cagdas:~/Belgeler$ make<br />
make -C /lib/modules/2.6.28-16-generic/build M=/home/cagdas/Belgeler modules<br />
make[1]:`/usr/src/linux-headers-2.6.28-16-generic&#8217; dizinine giriliyor<br />
CC [M]  /home/cagdas/Belgeler/hello-1.o<br />
Building modules, stage 2.<br />
MODPOST 1 modules<br />
CC      /home/cagdas/Belgeler/hello-1.mod.o<br />
LD [M]  /home/cagdas/Belgeler/hello-1.ko<br />
make[1]: `/usr/src/linux-headers-2.6.28-16-generic&#8217; dizininden çıkılıyor</span></p>
<p>Evet ilk kernel modülümüzü derledik. Ardından modinfo komudu ile kernel modülümüz hakkında bazı bilgilere erişebiliriz.</p>
<p><span style="color: #3366ff;">cagdas@cagdas:~/Belgeler$ modinfo hello-1.ko<br />
filename:       hello-1.ko<br />
srcversion:     140276773A3090F6F33891F<br />
depends:<br />
vermagic:       2.6.28-16-generic SMP mod_unload modversions 586 </span></p>
<p>Ve en sonunda kernelimizin içine modülümüzü koyalım. Bunun için root kullanıcı olmamız gerekiyor. <span style="color: #3366ff;">sudo -s -H</span> komutuyla bildiğiniz gibi root oluyoruz. <span style="color: #3366ff;">insmod ./hello-1.ko</span> ile kernelimize modülümüzü ekledik ve /var/log/messages logunun son satırlarına bakalım <img src='http://www.cagdastopcu.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><span style="color: #3366ff;">Jan  4 03:22:17 cagdas kernel: [37145.098506] hello_1: module license &#8216;unspecified&#8217; taints kernel.<br />
Jan  4 03:22:17 cagdas kernel: [37145.098594] Hello world 1.</span></p>
<p>Evet mutlu son <img src='http://www.cagdastopcu.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Eğer modülümüzü kernelimizden silmek istiyorsak <span style="color: #3366ff;">rmmod hello-1</span> komutunu kullanacağız.</p>
<p>Not: Bu yazı dizisi <a href="http://tldp.org/LDP/lkmpg/2.6/html/index.html">The Linux Kernel Module Programming Guide</a> belgesinin soft hali olucaktır. Kernelin 2.4 ve 2.6 sürümünlerine uygundur. Kernelinizin versiyonunu uname -a komutuyla öğrenebilirsiniz.</p>
<p>C kodu:</p>
<p><a href="http://www.cagdastopcu.com/wp-content/uploads/2010/01/hello-1.c">hello-1.c</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.cagdastopcu.com/kernel-modul-programlama-giris.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>NetBeans ile Mobil Geliştirme Araçlarının Kurulumu (SJWK, J2ME)</title>
		<link>http://www.cagdastopcu.com/netbeans-ile-mobil-gelistirme-araclarinin-kurulumu-sjwk-j2me.html</link>
		<comments>http://www.cagdastopcu.com/netbeans-ile-mobil-gelistirme-araclarinin-kurulumu-sjwk-j2me.html#comments</comments>
		<pubDate>Mon, 22 Jun 2009 12:00:15 +0000</pubDate>
		<dc:creator>cagdas</dc:creator>
				<category><![CDATA[GNU]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[mobil]]></category>
		<category><![CDATA[NetBeans]]></category>
		<category><![CDATA[programlama]]></category>
		<category><![CDATA[sdk]]></category>
		<category><![CDATA[Sun]]></category>
		<category><![CDATA[toolkit]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[wireless]]></category>

		<guid isPermaLink="false">http://www.cagdastopcu.com/netbeans-ile-mobil-gelistirme-araclarinin-kurulumu-sjwk-j2me.html</guid>
		<description><![CDATA[Kısa zaman önce yine Ubuntuma geçtim. Öyle mutluyum ki her şey oluyor. USB bluetoothu taktım telefonumla haberleştirdim ardından javaya başlamak için bir amaç aranıp duruyordum ve neden java mobile edition olmasın dedim (J2ME diyo avropalolar). Biraz bakınalım neler olmuş kurulum aşamasında.
Netbeansı ilk defa kurmuştum bilgisayarıma soora kurcalarken plugins siye bişiler buldum. Ahaha java web de [...]]]></description>
			<content:encoded><![CDATA[<div class="wp-caption alignnone" style="width: 622px"><img title="netbeans java mobil" src="http://blogs.sun.com/geertjan/resource/mobile-game-designer2.png" alt="netbeans java mobil" width="612" height="408" /><p class="wp-caption-text">netbeans java mobil</p></div>
<p>Kısa zaman önce yine Ubuntuma geçtim. Öyle mutluyum ki her şey oluyor. USB bluetoothu taktım telefonumla haberleştirdim ardından javaya başlamak için bir amaç aranıp duruyordum ve neden java mobile edition olmasın dedim (J2ME diyo avropalolar). Biraz bakınalım neler olmuş kurulum aşamasında.</p>
<p>Netbeansı ilk defa kurmuştum bilgisayarıma soora kurcalarken plugins siye bişiler buldum. Ahaha java web de kurdum onu da kurdum bunu da kurdum derken bu kurduklarımı nasıl kullanacağıma bakmaya başladım. Netbeans&#8217; in mobility ile ilgili herbir şeyini kurdum. Ancak NetBeans&#8217; in sitesindeki örnek uygulamaları yapamıyordum. Mobile den  seçtiğim herhangi bir uygulamada J2ME bulunamadı istersen kuralım diyordu. Hayret bişi kurmuştum halbuki. Sonra nette biraz dolaşınca kimsenin pluginle yapmadığını gördüm. <strong>Sun Java Wireless Toolki</strong><strong>t</strong> kurup ardından bunu NetBeans a tanıtıyorlardı. Ben de öyle yaptım. Önce şurdan son versiyon SJWK yı indirdim.</p>
<p><a href="http://java.sun.com/products/sjwtoolkit/download.html?feed=JSC">http://java.sun.com/products/sjwtoolkit/download.html?feed=JSC</a></p>
<p>Ardından home/cagdas dizinine taşıyıp kuruluma başladım.</p>
<p>Bu kitle aşağıdaki modüller gelicektir ki bu da eski teknoloji telefonların programlanması için yeterlidir (CLDC ve MIDP cihazlar)</p>
<ul>
<li>Mobile Service Architecture (JSR 248)</li>
<li>Java Technology for the Wireless Industry (JTWI) (JSR 185)</li>
<li>Connected Limited Device Configuration (CLDC) 1.1 (JSR 139)</li>
<li>Mobile Information Device Profile (MIDP) 2.0 (JSR 118)</li>
<li>PDA Optional Packages for the J2ME Platform (JSR 75)</li>
<li>Java APIs for Bluetooth (JSR 82)</li>
<li>Mobile Media API (MMAPI) (JSR 135)</li>
<li>J2ME Web Services Specification (JSR 172)</li>
<li>Security and Trust Services API for J2ME (JSR 177)</li>
<li>Location API for J2ME (JSR 179)</li>
<li>SIP API for J2ME (JSR 180)</li>
<li>Mobile 3D Graphics API for J2ME (JSR 184)</li>
<li>Wireless Messaging API (WMA) 2.0 (JSR 205)</li>
<li>Content Handler API (JSR 211)</li>
<li>Scalable 2D Vector Graphics API for J2ME (JSR 226)</li>
<li>Payment API (JSR 229)</li>
<li>Advanced Multimedia Supplements (JSR 234)</li>
<li>Mobile Internationalization API (JSR 238)</li>
<li>Java Binding for the OpenGL(R) ES API (JSR 239)</li>
</ul>
<p>Ubuntuda (veya herhangi bir GNU/Linux dağıtımında) sh uzantılı binary dosyaların kurulumu oldukça kolay. Terminali açıp içine sh yazdıktan sonra fareyle kuracağım dosyayı taşıyorum. Böylece sh komutunun istediğim uzantıdaki istediğim dosyada çalışabilmesini sağlıyorum. Lisans anlaşması çıkıyor ve sonunda soruyor hangi java sdk ile kuralım. Daha önceden kurduğum java sdk nın dizinini bulmam gerekiyor. Başka bir şey için lazım olmuştu ve biliyorum. Eğer sizde paket yöneticisiyle kurmuşsanız sun java 6 sdk yı aynı dizinde olması muhtemeldir.</p>
<p>Enter a path to the Java 2 SDK: /usr/lib/jvm/java-6-sun/bin</p>
<p>İle dizini belirtiorum. Ardından bir kaç soru daha sorup kurmaya başlıyor. Kurulum yerini değiştirmedim /home/cagdas/ in içine kurdu. Kurulumdan sonra</p>
<p>cagdas@cagdas:~$ /home/cagdas/WTK2.5.2/bin/ktoolbar</p>
<p>dediğimde bir proje yöneticisi açıldı ve proje yapmaya hazır hale geldiğini görmüş oldum. İşte ordan kareler <img src='http://www.cagdastopcu.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Sun Microsystems&#8217;ın logo sayfası çok güzel olmuş <img src='http://www.cagdastopcu.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<div id="attachment_218" class="wp-caption aligncenter" style="width: 600px"><a href="http://www.cagdastopcu.com/wp-content/uploads/2009/06/midpresim2.png"><img class="size-full wp-image-218" title="wireless toolkit for cldc midp sun java resim 2.5.2" src="http://www.cagdastopcu.com/wp-content/uploads/2009/06/midpresim2.png" alt="sun java wireless toolkit for cldc" width="590" height="379" /></a><p class="wp-caption-text">sun java wireless toolkit for cldc</p></div>
<p>ve proje yöneticisi</p>
<div id="attachment_220" class="wp-caption aligncenter" style="width: 508px"><a href="http://www.cagdastopcu.com/wp-content/uploads/2009/06/midpresim31.png"><img class="size-full wp-image-220" title="Java Wireless Toolkit for CLDC Proje Yöneticisi" src="http://www.cagdastopcu.com/wp-content/uploads/2009/06/midpresim31.png" alt="Java Wireless Toolkit for CLDC Proje Yöneticisi" width="498" height="191" /></a><p class="wp-caption-text">Java Wireless Toolkit for CLDC Proje Yöneticisi</p></div>
<p>Ardından NetBeans a geçtim. Yine mobil uygulaması başlatmaya çalıştım ardından sordu yine hangi sdk olsun. Java SE nin dışında bir SDK kuracaktım ve bu yüzden add dedim. Az önce ktoolbarı çalıştırırken kullandığım dizini kullandım /home/cagdas/WTK2.5.2/ ile J2ME SDK yı belirtmiş oldum ve projem açıldı. Umarım işinize yarar. Kolay gelsin.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cagdastopcu.com/netbeans-ile-mobil-gelistirme-araclarinin-kurulumu-sjwk-j2me.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>sıcak sıcak ubuntu!</title>
		<link>http://www.cagdastopcu.com/sicak-sicak-ubuntu.html</link>
		<comments>http://www.cagdastopcu.com/sicak-sicak-ubuntu.html#comments</comments>
		<pubDate>Sat, 13 Oct 2007 10:30:00 +0000</pubDate>
		<dc:creator>cagdas</dc:creator>
				<category><![CDATA[Kategorilenmemiş]]></category>
		<category><![CDATA[ben]]></category>
		<category><![CDATA[gibi]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.cagdastopcu.com/sicak-sicak-ubuntu.html</guid>
		<description><![CDATA[
5 g&#252;n sonra ubuntunun 7.10 kararlı s&#252;r&#252;m&#252; &#231;ıkacak. isteyenler http://releases.ubuntu.com/releases/7.10   adresinden indirebilirler veya http://www.ubuntu.com/ aracılığıyla cd isteyebilirler. yaklaşık 4 hafra sonra geliyor şimdiden isteyebiliyorsunuz. kargo bedeli bile &#246;demiyorsunuz. ben 2 tane normal ubuntu istedim. kubuntu edubuntu gibi modellerimiz mevcuttur =) &#231;ok mutluyum hatta şimdi hemen uyuyayım yarın kalkayım da 4 g&#252;n kalmış olsun [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://bp0.blogger.com/_Qa7ioJ5KoFk/RxCe8wIrjcI/AAAAAAAAAEc/7k6HawBjNRM/s1600-h/710countdown_5days.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img border="0" id="BLOGGER_PHOTO_ID_5120767542870904258" alt="" src="http://bp0.blogger.com/_Qa7ioJ5KoFk/RxCe8wIrjcI/AAAAAAAAAEc/7k6HawBjNRM/s400/710countdown_5days.png" style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" /></a><br />
5 g&uuml;n sonra ubuntunun 7.10 kararlı s&uuml;r&uuml;m&uuml; &ccedil;ıkacak. isteyenler <a target="_blank" href="http://releases.ubuntu.com/releases/7.10"><span>http://releases.ubuntu.com</span><wbr></wbr>/releases/7.10</a>   adresinden indirebilirler veya <a target="_blank" href="http://www.ubuntu.com/">http://www.ubuntu.com/</a> aracılığıyla cd isteyebilirler. yaklaşık 4 hafra sonra geliyor şimdiden isteyebiliyorsunuz. kargo bedeli bile &ouml;demiyorsunuz. ben 2 tane normal ubuntu istedim. kubuntu edubuntu gibi modellerimiz mevcuttur =) &ccedil;ok mutluyum hatta şimdi hemen uyuyayım yarın kalkayım da 4 g&uuml;n kalmış olsun <img src='http://www.cagdastopcu.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.cagdastopcu.com/sicak-sicak-ubuntu.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
