Tag Archives: marathi

लिनक्स डिव्हाईस ड्रायव्हर मराठीतून :भाग ७ :कँरेक्टर डिव्हाईस ड्रायव्हर फाईल ऑपरेशन्स.

आपण मागील भागात कँरेक्टर डिव्हाईस ड्रायव्हर म्हणजे काय ते पहिले आता त्या डिव्हाईस ड्रायव्हर बरोबर डाटा ऑपरेशन्स कशी करावीत ते आपण या भागात पाहूया.

कँरेक्टर डिव्हाईस ड्रायव्हर हा त्याचा फाईलला जोडला गेलेला असतो.

आपली सर्व कामे तो फाईल्स च्या माध्यमातून पूर्ण करतो.

फाईल ऑपरेशन्स या स्ट्रक्चर मध्ये पण फाईल ची सर्व फंक्शन्स डिक्लेअर करून आपण तो फाईल ओपन, कोल्ज, रीड ,राईट करू शकतो.

प्रत्येक फंक्शन मध्ये सध्या आपण त्या फंक्शन चे प्रिंट करून नाव देऊ.त्यामुळे करेक्टर डिव्हाईस ड्रायव्हर चा बेसिक प्रोग्राम खालील प्रमाणे होईल.

#include <linux/module.h>

#include <linux/version.h>

#include <linux/kernel.h>

#include <linux/init.h>

#include <linux/fs.h>

#include <linux/device.h>

#include <linux/cdev.h>

static dev_t first;  //globle variable for the device no

static struct cdev c_dev; //globle var for char struct

static struct class *cl; //globle var for device class

static int my_open(struct inode *i, struct file *f)

{

printk(KERN_INFO “Driver : open()\n”);

return 0;

}

static int my_close(struct inode *i , struct file *f)

{

printk(KERN_INFO “Driver:close()\n”);

return 0;

}

static ssize_t my_read(struct file *f,char __user *buf,size_t len,loff_t *off)

{

printk(KERN_INFO “Driver:read()\n”);

return 0;

}

static int my_write(struct file *f,const char __user *buf,size_t len,loff_t *off)

{

printk(KERN_INFO “Driver:write()\n”);

return len;

}

static struct file_operations pugs_fops=

{

.owner = THIS_MODULE,

.open = my_open,

.release =my_close,

.read =my_read,

.write =my_write

};

 

static int __init ofcd_init(void) /*const*/

{

printk(KERN_INFO “NAMSAKAR:ofd reg”);

if (alloc_chrdev_region(&first, 0, 3, “Mahesh”) < 0)

{

return -1;

}

if ((cl = class_create(THIS_MODULE, “chardrv”)) == NULL)

{

unregister_chrdev_region(first, 1);

return -1;

}

if (device_create(cl, NULL ,first, NULL, “mynull”) == NULL)

{

class_destroy(cl);

unregister_chrdev_region(first, 1);

return -1;

}

cdev_init(&c_dev, &pugs_fops);

if (cdev_add(&c_dev, first, 1)== -1)

{

device_destroy(cl,first);

class_destroy(cl);

unregister_chrdev_region(first,1);

return -1;

}

return 0;

}

static void __exit ofcd_exit(void)/*Destructor*/

{

cdev_del(&c_dev);

device_destroy(cl, first);

class_destroy(cl);

unregister_chrdev_region(first,1);

printk(KERN_INFO “by Gn:ofd unreg”);

}

module_init(ofcd_init);

module_exit(ofcd_exit);

MODULE_LICENSE(“GPL”);

MODULE_AUTHOR(“MJ”);

MODULE_DESCRIPTION(“OUR FIRST character DRIVER:automatic”);

     [REF:Linux for you magazine]

 कोणती .h फाईल कधी इन्क्लुड करावी:

#include <linux/init.h> : बेसिक इनिशियलायझेशन

#include <linux/module.h> :कोणतेही मोड्यूल्स लिहताना

#include <linux/version.h> :लिनक्स व्हर्जनचा डाटा मिळवण्यासाठी.

#include <linux/kernel.h> : prinitk() हे फंक्शन वापरता येण्यासाठी.

#include <linux/fs.h> :फाईल्स च्या निगडीत ऑपरेशन्स करण्यासाठी

#include <linux/device.h> : डिव्हाईस शी निगडीत ऑपरेशन करताना.

#include <linux/cdev.h> :मेजर व मायनर नंबरसह करेक्टर डिव्हाईस तयार करण्यासाठी.

#include <linux/slab.h> :kmalloc() हे फंक्शन वापरण्यासाठी.

#include <linux/errno.h> :एरर्स चा कोड या फाईल मध्ये असतो.

#include <linux/types.h> :size_t ,dev_t या सारखे डाटा टाईप सपोर्ट साठी.

#include <linux/fcntl.h> : o_accmode साठी

#include <asm/system.h> :cli(), _flags वापरण्यासाठी

#include <asm/uaccess.h> :copy_from /to _users या सारखी फंक्शन्स वापरताना.

 module.h मधील फंक्शन्सची माहिती :

MODULE_ALIAS(_alias) युजर स्पेस मध्ये मोड्युलचे नाव व माहितीदेण्यासाठी.
MODULE_LICENSE(_license) मोड्युल कोणते लायसन्स वापरणार आहे त्याचे नाव.
MODULE_AUTHOR() मोड्युलचा लेखक.
MODULE_DESCRIPTION() मोड्युलच्या कामविषयक थोडक्यात माहिती
MODULE_PARAM() मोड्युल लोड करताना पास केले जाणारी पँरामिटर
MODULE_VERSION() वापरल्या जाणाऱ्या मोड्यूल चे व्हर्जन

आपण modinfo मोड्युलचे नाव .ko अशी कमांड दिली असता वरील सर्व मोड्युल शी निगडीत माहिती आपणस मिळते.

फाईल ऑपरेशन्सच्या काही महत्त्वाच्या गोष्टी:

वरील कोड मध्ये ओपन आणि क्लोज फंक्शन int रिटर्न करतात ,० म्हणजे यशस्वीपणे पार पडले आणि निगेटिव्ह म्हणजे काही तरी प्रोब्लेम आहे.पण रीड आणि राईट हे फंक्शन्स काही पोझिटिव्ह नंबर रिटर्न करतात ते म्हणजे किती बाईट डाटा रीड किंवा राईट झाला म्हणूनच त्या फंक्शन्स चा रिटर्न टाईप ssize_t आहे.

तसेच आणखी एक मस्त गोष्ट आहे…read() हे फंक्शन len बाईट्स इतका डाटा buf या बफर मध्ये लिहिते आणि किती बाईट्स लिहिलेत ती संख्या रिटर्न व्हेल्यू म्हणून पाठवते.म्हणजेच रीड फंक्शन हे युजर स्पेसिफिक बफर मध्ये डाटा लिहिते कारण तो युजरला वाचता व वापरता यावा…आहे ना गंमत रीड फंक्शन्स बफर मध्ये राईट करते….

काही महत्त्वाचे कोडचे भाग:

loff_t (*llseek) (struct file *, loff_t, int);

यात llseek हि मेथड फाईल ची चालू रीड राईट पोझिशन बदलतो , loff_t म्हणजे लोंग ऑफसेट.

ssize_t (*read) (struct file *, char __user *, size_t, loff_t *);

हे फंक्शन डिव्हाईस कडून डा टा घेताना वापरतात जर या ठिकाणी काहीच डा टा नसेल तर ते –EINVAL म्हणजेच इन्व्हेलीड अर्ग्युमेंट म्हणून एरर दर्शविते.

int (*open) (struct inode *, struct file *);

डिव्हाईस ओपन करणे हि डिव्हाईस फाईल वर केली जाणारी पहिली क्रिया.

struct module *owner

हे आपल्या मोड्युल ला पोईंट करते आणि जर आपले मोड्यूल कामत असेल तर ते काढून टाकण्यास प्रतिबंध करते.

बयाचदा यास THIS_MODULE हे  नाव राहते याची डेफिनेशन <linux/module.h> मध्ये असते.

ओपन मेथड :

ओपन मेथड पुढील काम करते:

  • डिव्हाईस तयार आहे का नाही ते पाहणे आणि त्या निगडीत काही एरर्स आहेत का ते पाहणे.
  • जर डिव्हाईस प्रथमच ओपन हॉट अहेल तर त्याचे  इनिशियलायझेशन करणे.
  • f_op पोईंटर अपडेट करणे.
  • file->private_data मध्ये ठेवण्यात येणाऱ्या डाटा स्ट्रक्चर साठी राखीव जागा करून त्यात तो ठेवणे.

रिलीज मेथड:

रिलीज मेथड पुढील काम करते:

  • ओपन मेथडने file->private_data मध्ये ठेवलेली जागा काढून घेणे.
  • डिव्हाईस बंद करणे.

रीड आणि राईट मेथड:

  • ssize_t read(struct file *filp, char __user *buff, size_t count, loff_t *offp);
  • ssize_t write(struct file *filp, const char __user *buff,size_t count, loff_t *offp);
  • यात flip हा फाईलचा पोईंटर असतो.
  • count म्हणजे ट्रान्सफर करणाऱ्या डाटाची साईझ.
  • buff म्हणजे युजरचा बफर ज्यात रीड आणि राईट करताना डाटा ठेवला जातो.
  • offp [लोंग ऑफसेट टाईप पोईंटर] युजर वापरात असणर्‍या फाईलची पोझिशन दर्शवते.
  • रिटर्न व्हेल्यू ssize_t म्हणजेच signed size type.

हे अधिक स्पष्ट होण्यासाठी पुढील आकृती पहा:

कँरेक्टर डिव्हाईस ड्रायव्हर फाईल ऑपरेशन्स

कँरेक्टर डिव्हाईस ड्रायव्हर फाईल ऑपरेशन्स

   [Ref:Linux Device Driver Book]

रीड आणि राईट मेथड साठी नियम:

जर रिटर्न संख्या हि फंक्शन मधील count या अंके इतकी असेल तर तितके बाईट्स पाठवले जातात.

जात रिटर्न संख्या हि पोझिटिव्ह असेल आणि count पेक्षा कमी असेल तर तितकाच डाटा पाठवला जातो

जर रिटर्न संख्या हो शून्य असेल तर फाईल संपली असे मानले जाते .

निगेटिव्ह रिटर्न संख्या म्हणजे एरर याचा नंबर <linux/errno.h>या फाईल मध्ये असतो यात –EINTR [interrupt system call],-EFAULT [bad address]यांचा समावेश होतो.

 

डिव्हाईस ड्रायव्हरचा बेसिक सारांश.

क्रिया

युजर फंक्शन्स

कर्नेल फंक्शन्स

मोड्युल लोड करणे. [load] insmod module_init()
डिव्हाईस उघडणे. [open] fopen file_operations:open
डिव्हाईस मधून वाचणे.[close] fread file_operations:read
डिव्हाईस मध्ये लिहणे.[read] fwrite file_operations:write
डिव्हाईस बंद करणे.[write] fclose file_operations:release
मोड्यूल काढून टाकणे.[remove] rmmod module_exit()

[Ref:FreeSoftwareMagazine]

 आता आपण सर्व बेसिक फाईल ऑपरेशन्स शिकला आहात..मजा आली ना…आता..पुढील भागात आपण पी सी आय डिव्हाईस ड्रायव्हर ची महिती घेवूया.

आपणास हा भाग कसा वाटला ते नक्की कळवा.

“लिनक्स मराठीतून “ च्या पुढील भागाला भेट देण्यासाठी येथे टिचकी मारा:

भाग १]लिनक्सची ओळख आणि उबुंटू इन्स्टॉलेशन.

भाग २]लिनक्सची जान आणि शान टर्मिनलची ओळख आणि vi एडीटर.

भाग 3]लिनक्स कर्नेल आणि डिव्हाईस ड्रायव्हर ची ओळख.

भाग ४]डिव्हाईस ड्रायव्हरचा हँलो वल्ड प्रोग्रम.

भाग ५]डिव्हाईस ड्रायव्हरचा पँरामिटर पासिंग व प्रोसेस संबन्धित प्रोग्रम.

भाग ६ ]कँरेक्टर डिव्हाईस ड्रायव्हर बेसिक

धन्यवाद -MJ :-)


Filed under: Char Device Driver File operations, x-All Tablets
Read full storyComments Off

लिनक्स डिव्हाईस ड्रायव्हर मराठीतून :भाग ६ :कँरेक्टर डिव्हाईस ड्रायव्हर बेसिक

आपण बेसिक डिव्हाईस ड्रायव्हर कसा लिहायचा हे पाहिलंत,आता खास कँरेक्टर डिव्हाईस ड्रायव्हर कसा लिहायचा ते या अंकात पाहूया.

आपण मागील लिनक्स कर्नेल च्या भागात हे पण शिकला आहात कि लिनक्स मध्ये डिव्हाईस सुद्धा एका फाईलच्या रुपात असतो.या डिव्हाईस फाईलचे नाव हे आपल्या सिस्टीमवरील अप्लिकेशन आणि डिव्हाईस फाईल यांच्यातील दुवा म्हणून काम करते.आणि डिव्हाईस फाईल आणि डिव्हाईस यांच्या मध्ये संभाषण करण्यासाठी त्या डिव्हाईसचा नंबर महत्त्वाचा असतो.

डिव्हाईस फाईलचा नंबर हा दोन नंबरच्या जोडीने बनलेला असतो:मेजर नंबर आणि मायनर नंबर. <major,minor>.आपल्या सिस्टममध्ये अनेक ड्रायव्हर एखादा मेजर नंबर [कॉमन] वापरू शकतो पण त्यांचा मायनर नंबर वेगळा असेल.कर्नेल मायनर नंबर चा वापर नक्की कोणता डिव्हाईस कनेक्ट केला आहे ते समजून घेण्यासाठी करतो.

आपल्या सिस्टीम मधील कँरेक्टर डिव्हाईस ड्रायव्हर पाहण्यासाठी पुढील कमांड टर्मिनल विन्डो देऊन पाहू शकतो.

$ ls –l /dev/ grep “^c”

कँरेक्टर डिव्हाईस ड्रायव्हर

कँरेक्टर डिव्हाईस ड्रायव्हर

आपल्या सिस्टीम मधील सर्व डिव्हाईस ड्रायव्हर पाहण्यासाठी पुढील कमांड टर्मिनल विन्डोला द्या.

ls –l /dev :या कमांड ने आपण सर्व डिव्हाईस पाहू शकतो.

ते आपणास पुढील प्रमाणे दिसेल:

ब्लॉक व  कँरेक्टर डिव्हाईस ड्रायव्हर

ब्लॉक व कँरेक्टर डिव्हाईस ड्रायव्हर

यात brw : हे ब्लॉक डिव्हाईस ड्रायव्हर तर crw कँरेक्टर डिव्हाईस ड्रायव्हर दर्शवितात.

dev_t व्हेरिएबल यामध्ये दोन्ही नंबर साठवलेले असतात.

[१२ बीट मेजर +२० बीट मायनर=३२ बीट डेव्ह]

MKDEV( int major ,int minor) हि कमांड वापरली कि डिव्हाईस dev तयार होतो.

आपली डिव्हाईस फाईल हि डिव्हाईस ड्रायव्हरला जोडण्यासाठी पुढील दोन पायऱ्या आहेत.

१.आपल्या  डिव्हाईसचा <major,minor> नंबर देऊन रजिस्टर करणे.

२. डिव्हाईस फाईलच्या ऑपरेशन्स आणि डिव्हाईस ड्रायव्हर ची फंक्शन्स जोडणे.

डिव्हाईसचा नंबर मिळवण्यासाठी <linux/fs.h> मधील पुढील API फार महत्त्वाचे आहेत.

int register_chardev_region(dev_t first,unsigned int count, char *name);

int alloc_chardev_region(dev_t *dev,unsigned int firstminor,unsigned int count,char *name);

void unregister_chardev_region(dev_t first,unsigned int count);

  • पहिला API हा cnt इतका नंबर असलेला डिव्हाईस रजिस्टर करतो.
  • जर हे फंक्शन्स व्यवस्थितपणे चाले तर ते ० हे रिटर्न करते आणि जर काही प्रोब्लेम आला तर निगेटिव्ह संख्या रिटर्न होते.
  • दुसरा API हा आपोआप मोकळा मेजर नंबर शोधून डिव्हाईस रजिस्टर करतो.तो पहिला मायनर नंबर हा शक्यतो ० हाच असतो.
  • तिसरा API हा आपलास आपला डिव्हाईस नंबर वापरून झाल्यावर मोकळा करण्यासाठी वापरतात.हा API क्लीन अप फंक्शन मध्ये वापरावा.

[REF:Linux Device Driver Book]

डिव्हाईस नंबर दर्शविणारा प्रोग्राम:

#include <linux/module.h>

#include <linux/version.h>

#include <linux/kernel.h>

#include <linux/init.h>

#include <linux/fs.h>

static dev_t first;  //globle variable for the device no

int __init ofd_init(void) /*const*/

{

printk(KERN_INFO “NAMSAKAR:ofd reg”);

if (alloc_chrdev_region(&first, 0, 3, “Mahesh”) <0)

{

return -1;

}

printk(KERN_INFO “<major,minor>: <%d ,%d> \n”, MAJOR(first),MINOR(first));

return 0;

}

static void __exit ofd_exit(void)/*Destructor*/

{

unregister_chrdev_region(first, 3);

printk(KERN_INFO “by Gn:ofd unreg”);

}

module_init(ofd_init);

module_exit(ofd_exit);

MODULE_LICENSE(“GPL”);

MODULE_AUTHOR(“MJ”);

MODULE_DESCRIPTION(“OUR FIRST character DRIVER”);

 

हा प्रोग्राम रन केल्या नंतर mahesh नावाचा डिव्हाईस ड्रायव्हर तयार होऊन त्याचा मायनर आणि मेजर नंबर आपणास दिसेल.

मेजर नंबर आणि मायनर नंबर

मेजर नंबर आणि मायनर नंबर

वरील आउटपुट विंडो मध्ये आपण आपल्या डिव्हाईस चे मेजर नंबर आणि मायनर नंबर डिस्प्ले झालेले पाहिलेत हे आपण आपल्या प्रोग्राममधील printkफंक्शन वापरून आउटपुट विंडोमध्ये दाखवले आहेत.

डिव्हाईस सिस्टिम मध्ये रजिस्टर झाला.

डिव्हाईस सिस्टिम मध्ये रजिस्टर झाला.

वरील चित्रात आपण आपला डिव्हाईस सिस्टिम मध्ये रजिस्टर झाला आहे कि नाही हे /proc/device मध्ये जाऊन पहिले येथे आपण mahesh नावाचा डिव्हाईस तयार झालेला दिसेल.

नंतर आपण /devमध्ये जाऊन पाहिल्यास आपणास डिव्हाईस फाईल तयार झाली नाही हे कळेल मग आपण mknodचा वापर करून नोड तयार केले व त्यात आपल्या डिव्हाईस साठी फाईल तयार झालेली दिसेल.

हेच काम आपण ऑटोमॅटिक पण करू शकतो ते आपण पुढील भागात पाहणार आहोत.

आपणास हा भाग कसा वाटला ते नक्की कळवा.

“लिनक्स मराठीतून “ च्या पुढील भागाला भेट देण्यासाठी येथे टिचकी मारा:

भाग १]लिनक्सची ओळख आणि उबुंटू इन्स्टॉलेशन.

भाग २]लिनक्सची जान आणि शान टर्मिनलची ओळख आणि vi एडीटर.

भाग 3]लिनक्स कर्नेल आणि डिव्हाईस ड्रायव्हर ची ओळख.

भाग ४]डिव्हाईस ड्रायव्हरचा हँलो वल्ड प्रोग्रम.

भाग ५]डिव्हाईस ड्रायव्हरचा पँरामिटर पासिंग व प्रोसेस संबन्धित प्रोग्रम.

भाग ६ ]कँरेक्टर डिव्हाईस ड्रायव्हर बेसिक

धन्यवाद -MJ :-)


Filed under: Character Device driver
Read full storyComments Off

लिनक्स डिव्हाईस ड्रायव्हर मराठीतून :भाग ५:डिव्हाईस ड्रायव्हरचा पँरामिटर पासिंग व प्रोसेस संबन्धित प्रोग्रम.

नमस्कार मित्रानो, मागील भागात आपण बेसिक हेंलो वल्ड चा प्रोग्राम पाहिलात,इतक्या सोप्या पद्धतीने डिव्हाईस ड्रायव्हर लिहायला तुम्हाला नक्कीच मजा आली असेलच.

या भागात आपण थोडे पुढे जाऊन वेगवेगळे बेसिक प्रोग्राम्स शिकणार आहोत.

समजा तुम्हाला तुमच्या डिव्हाईस ड्रायव्हरला काही पँरामिटर द्यायचे असतील तर ते कसे द्यायचे ते आपण या अंकात पाहूया.

पँरामिटर पासिंग प्रोग्रम :

प्रथम आपण आपल्या मोड्युलला फक्त एक पँरामिटर कसे पाठवायचे ते पाहूया.

पुढे आपणस रन करण्यासाठी लागणारा प्रोग्राम दिलेला आहे.

#include<linux/init.h>#include#includeMODULE_LICENSE(“GPL”);int paramTest;module_param(paramTest, int,S_IRUSR|S_IWUSR);static int param_init(void)

{

printk(KERN_ALERT “Showing the parameter demo”);

printk(KERN_ALERT “VALUE OF PARAMTEST IS: %d”,paramTest);

return 0;

}

static void param_exit(void)

{

printk(KERN_ALERT “Exiting the parameter demo”);

}

module_init(param_init);

module_exit(param_exit);

[Ref: Linux For You magazine]

वरील प्रोग्रॅम मध्ये मोड्युल पँरामिटर शी निगडीत फंक्शन्स चा लाभ घेण्यासाठी moduleparam हि फाईल हेडर मध्ये इन्क्लुड केलेली आहे.

module_param(paraameter name, data type ,permission);

हा फॉरमेट कर्नेल ला पँरामिटरचे नाव ,त्याचा डाटा टाईप आणि त्यास दिल्या जाणाऱ्या परमिशन दर्शविते.

परमिशन चे प्रकार पडतात: S_IWUSR,S_IRUSR,S_IXUSR,S_IRGRP,S_WGRP

  • यात S_I हे हेडर सर्वाना कॉमन आहे.
  • R =रीड वाचणे ,W =राईट लिहिणे ,X= एक्झीक्युट करणे.
  • USR=युजर ,GRP=ग्रुप
  • यात OR म्हणजे | ऑर ऑपरेशन करून एका पेक्षा जास्त परमिशन सेट करता येतात.

आपण आपला प्रोग्राम टेक्स्ट एडिटर मधून लिहला असता तो पुढीलप्रमाणे दिसतो.

पँरामिटर पासिंग प्रोग्रम

पँरामिटर पासिंग प्रोग्रम

हा प्रोग्राम रन करण्यासाठी पुढील पायऱ्या आहेत.

[आपण मागील भागातील मेक फाईल कशी करावी या भागाचा आधार घेऊ शकता]

आपल्या मेक फाईल मध्ये hello.o च्या जागी आपल्या वरील फाईल चे नाव [parameter.o] देणे आणि फाईल सेव्ह करणे.

मेक फाईल मधील बदल

मेक फाईल मधील बदल

नंतर make हि कमांड वापरून फाईल कंपाईल करणे.

आता हे मोड्युल कर्नेल मध्ये टाकण्यासाठी :sudo insmod parameter.ko paramTest=2

हि कमांड वापरणे यात आपण paramTest यास हि संख्या पँरामिटर म्हणून पाठवली.

आता आपले आउटपुट पाहण्यासाठी dmesg कमांड वापरणे.

तेंव्हा आपणास “Value of paramTest=2 “असे  आउटपुट मिळेल.

आउटपुट विंडो

आउटपुट विंडो

पँरामिटरचा अँरे :

आता एका पेक्षा जास्त पँरामिटर पास करण्यासाठी पँरामिटरचा अँरे पाठवावा लागतो.

त्यासाठी पुढील प्रोग्रम पहा:

#include<linux/init.h>

#include<linux/module.h>

#include<linux/moduleparam.h>

MODULE_LICENSE(“GPL”);

int paramArray[3];

module_param_array(paramArray, int,NULL, S_IWUSR|S_IRUSR);

static int array_init(void)

{

printk(“Into the parameter Array demo”);

printk(“Array elements are :%d\t%d\t%d”,paramArray[0],paramArray[1], paramArray[2]);

return 0;

}

static void array_exit(void)

{

printk(“Exiting the array parameter demo”);

}

module_init(array_init);

module_exit(array_exit);

यात int चा ३ इतकी साईझ असलेला अँरे वापरला आहे.

अँरे हे पँरामिटर म्हणून वापरण्यासाठी module_param() च्या जागी module_param_array() हे फंक्शन वापरले आहे.

यात इतर पँरामिटर सोबत counter असतो हा किती पँरामिटर पास केले याची नोंद ठेवतो आपलं प्रोग्राम मध्ये ती सुविधा वापरली नाही आहे म्हणून आपण तो असा ठेवला आहे.

पँरामिटरचा अँरे पासिंगचा प्रोग्राम

पँरामिटरचा अँरे पासिंगचा प्रोग्राम

आपण sudo insmod parameterArray.ko paramArray=1,2,3 असे पँरामिटर अँरे सोबत

मोड्युल लोड करतो.

तेंव्हा आपणस dmesg केल्यावर या तीन संख्या आउटपुट स्क्रीनवर दिसतील.

 

पँरामिटर अँरे पासिंग प्रोग्रम आउटपुट विंडो
पँरामिटर अँरे पासिंग प्रोग्रम आउटपुट विंडो

प्रोसेस संबन्धित प्रोग्रम.

आपल्या संगणकात अनेक प्रोसेस चालू असतात आपल्याला पुढील प्रोग्राम लिहताना कोणती प्रोसेस चालू आहे कोणती प्रोसेस बंद आहे याची माहिती प्रोसेस आय डी हि माहिती सिस्टीम कडून घावी लागते अशा वेळी आपणास पुढील प्रोसेस संबंधित प्रोग्राम नक्कीच उपयोगात येईल.

#include<linux/init.h>

#include<linux/module.h>

#include<linux/sched.h>

MODULE_LICENSE(“GPL”);

static int test_init(void)

{

struct task_struct *task;

for_each_process(task)

{

printk(“process Name :%s\t PID:%d\t Process State:%ld\n”,task->comm,task->pid, task->state);

}

return 0;

}

static void test_exit(void)

{

printk(KERN_INFO “Clearing up.\n”);

}

module_init(test_init);

module_exit(test_exit);

 

 

 

 

 

 

 

 

 

 

 

लिनक्स मध्ये प्रत्येक प्रोसेसला काही गोष्टी जोडल्या गेलेल्या असतात जसे कि प्रोसेसचा आय डी नंबर,प्रोसेस ची चालू स्थिती फ्लँग इत्यादी.

प्रोसेस संबधित प्रोग्रम लिहिताना आपणस sched.h हि फाईल हेडर मध्ये इन्क्लुड करावी लागते.

आपणस task_struct या स्ट्रक्चर चा पोईंटर करून याच्या आधारे आपण भरपूर माहिती मिळवू शकतो.

प्रोसेसची माहिती मिळवणारा प्रोग्रम.

प्रोसेसची माहिती मिळवणारा प्रोग्रम.

आपण वरील प्रोग्राम मध्ये आपल्या सिस्टीम मधील प्रोसेसचा आय डी नंबर,प्रोसेस ची चालू स्थिती फ्लँग इत्यादी माहिती पाहू.

यात task नावाचा पोईंटर तयार करण्यात आलेला असून आपण आपल्या सिस्टीम मधील प्रोसेस या स्ट्रक्चर पोईंटरचा वापर करून डिस्प्ले करणार आहोत.

हा प्रोग्राम रन केल्यानंतर आपणास प्रोसेस ची लिस्ट दिसेल.

अशा रीतीने आपण आपल्या सिस्टीम मधील प्रोसेस बद्दल पूर्णपणे माहिती घेवू शकता.आपणस आउटपुट विंडो खालीलप्रमाणे दिसेल.

आउटपुट :सिस्टीममधील प्रोसेस

आउटपुट :सिस्टीममधील प्रोसेस

या प्रोसेस आय डी आपण इंटरनेटवर सर्च कारण आपणस हव्या त्या प्रोसेस बद्दल अधिक माहिती घेवू शकतो.तसेच कोणती प्रोसेस कोणते अप्लिकेशन चालू आहे त्याची स्टेट काय हि सुद्धा माहिती मिळते.

हि माहिती आपण प्रोग्राम डेव्हलपमेंट करताना काही बाबी व काही प्रोसेस चालू आहेत का नाहीत या गोष्टी चेक करण्यासाठी वरील प्रोग्राम चा फायदा होतो.हे बेसिक प्रोग्राम पुढील प्रश्नांची उकल शोधण्याचे साधन आहे.या प्रोग्राम चा आपलास दिलेले टूल आहे असा वापर करावा.

अशा रीतीने आपण पँरामिटर पासिंग आणि प्रोसेसशी निगडीत प्रोग्राम कसे रन करावे ते पाहिलेत.

आपण कँरेक्टर डिव्हाईस ड्रायव्हरची माहिती पुढे घेणार आहोत तर हे डिव्हाईस ड्रायव्हर म्हणजे काय ते कसे काम करतात त्यांचे प्रकार कोणते हे प्रश्न तुम्हाला पडले असतीलच तर भेटूया पुढील अंकात याच प्रश्नांची उत्तरे शोधण्यासाठी…. 

आपणास हा भाग कसा वाटला ते नक्की कळवा.

“लिनक्स मराठीतून “ च्या पुढील भागाला भेट देण्यासाठी येथे टिचकी मारा:

भाग १]लिनक्सची ओळख आणि उबुंटू इन्स्टॉलेशन.

भाग २]लिनक्सची जान आणि शान टर्मिनलची ओळख आणि vi एडीटर.

भाग 3]लिनक्स कर्नेल आणि डिव्हाईस ड्रायव्हर ची ओळख.

भाग ४]डिव्हाईस ड्रायव्हरचा हँलो वल्ड प्रोग्रम.

भाग ५]डिव्हाईस ड्रायव्हरचा पँरामिटर पासिंग व प्रोसेस संबन्धित प्रोग्रम.

भाग ६ ]कँरेक्टर डिव्हाईस ड्रायव्हर बेसिक

धन्यवाद -MJ :-)


Filed under: Parameter passing, x-All Tablets
Read full storyComments Off

लिनक्स डिव्हाईस ड्रायव्हर मराठीतून :भाग ४:डिव्हाईस ड्रायव्हरचा हँलो वल्ड प्रोग्रम.

आपण कोणतीही नवीन प्रोग्रामिंग भाषा शिकताना सुरवात हँलो वल्ड प्रोग्रम या बेसिक प्रोग्राम पासून करतो.या भागातही आपण लिनक्स डिव्हाईस ड्रायव्हरचा हँलो वल्ड प्रोग्रम प्रोग्राम लिहिणार आहोत. या भागात आपण प्रोग्रामिंगला लागणाऱ्या सर्व बेसिक गोष्टी शिकणार आहोत त्यामुळे हा भाग फार महत्वाचा आहे.पुढचे प्रोग्राम करताना बऱ्याच वेळा आपणस या भागाचा रेफरन्स दिलेला आहे.

डिव्हाईस ड्रायव्हर प्रोग्राम हा लायब्ररी सारखा काम करतो याचा अर्थ असा कि अप्लिकेशन याच्यातील फंक्शन्स रन करतो.हा प्रोग्राम ‘c’ या भाषेत लिहिला जातो पण याच्यात C मध्ये वापरतो तसे main() हे फंक्शन नसते.हा प्रोग्राम कर्नेल द्वारा लॉक आणि लिंक केला जातो त्यासाठी त्यास कंपाईल करणे गरजेचे असते.

लिनक्स डिव्हाईस ड्रायव्हर मध्ये कन्स्ट्रक्टर आणि डीस्ट्रक्टर असतात.मोड्युल लोड केल्यावर  कन्स्ट्रक्टर कॉल केला जातो. आणि rmmod द्वारा मोड्यूल काढून टाकल्यास डीस्ट्रक्टर कॉल केला जातो ड्रायव्हर मध्ये मोड्युल init ,exit फंक्शन्स हे काम पाहतात.

लिनक्स डिव्हाईस ड्रायव्हर प्रोग्राम लिहण्यास सुरवात करण्या अगोदर आपण पुढील गोष्टी व सेटिंग करणे महत्त्वाचे आहे.

आपल्या लिनक्स कॉम्प्युटरमधील टर्मिनल विंडो ओपेन करा.

रुट अकौंट ने लॉग इन करा [su root].

रुट अकौंट कसे तयार करावे हे जाणून घेण्यासाठी येथे टिचकी मारा.

नंतर whoami [मी कोण ] हि कमांड वापरून आपण रुट अकौंट मधेच आहोत का याची खात्री करून घेणे.

नंतर आपण होम मध्ये एक फोल्डर तयार करावा जेथे प्रोग्राम स्टोअर करता येतील. आणि त्या फोल्डर मध्ये जावे.

उदा: [cd /home/MJ/]मी MJ नावाचा फोल्डर तयार करून त्यात काम करणार आहे.

आपण कोणत्या फोल्डर मध्ये आहे हे जाणून घेण्यासाठी pwd हि कमांन्ड वापरावी म्हणजे आपली चालू डिरेक्टरी कोणती ते समजेल.

आपण vi एडीटर वापरून आपले प्रोग्राम लिहणार आहोत तर vi hello.c हि कमांड दिल्यावर अगोदर जर hello.c फाईल असेल तर ती ओपेन होईल अन्यथा नवीन hello.c फाईल तयार होईल.आणि आपण व्हर्चुअल एडीटरच्या[vi] मध्ये जाऊ.

vi मध्ये प्रोग्राम लिहण्यासाठी आधी i बटन दाबावे तरच vi एडीटर इन्सर्ट मोडमध्ये येतो आणि आपण vi एडीटरमध्ये लिहू शकतो.

त्यानंतर खालील प्रोग्राम पेस्ट करावा किंवा टाईप करावा.

किंवा डायरेक्ट लिनक्सच्या टेक्स्ट एडीटर मध्ये जाऊन कोड कॉपी पेस्ट करून ती फाईल .c एक्सटेंशन देऊन सेव्ह करा.

हँलो वल्ड प्रोग्रम:

#include<linux/init.h>

#include<linux/module.h>

MODULE_LICENSE(“GPL”);

static int hello_init(void)

{

printk(KERN_ALERT “Hello world”);

return 0;

}

static void hello_exit(void)

{

printk(KERN_ALERT “Goodby”);

}

module_init(hello_init);

module_exit(hello_exit);

आपण वरील प्रोग्रामच्या कोडचे स्पष्टीकरण ओळीने पहात जाऊया.

प्रोग्रॅमच्या सुरवातीला काही हेडर फाईल इन्क्लुड कराव्या लागतात.

इन्क्लुड फाईल्सचे आपल्या संगणकातील लोकेशन पाहण्यासाठी /root/inclue/linux या लोकेशन वर जा आपलास डॉट एच [.h]फाईल्स चा साठा मिळेल.

१] init.h हि फाईल initहि प्रोसेस स्टार्ट करण्यासाठी इन्क्लुड केली जाते. जवळपास  सर्वच प्रोग्राम मध्ये हि फाईल इन्क्लुड करावी लागते.

या हेडर फाईलमध्ये सिस्टीम बुट आणि मोड्यूल्स कर्नेल मध्ये टाकण्यासाठी व काढण्यासाठी याचा उपयोग होतो.init आणि exitहि फंक्शन्स याचा फाईल मध्ये डिफाईन केली आहेत.

२] आपण जर डिव्हाईस् ड्रायव्हर लिहीत असो तर module.h फाईल इन्क्लुड करणे बंधनकार आहे.या फाईल मध्ये मोड्यूल्सशी निगडीत फंक्शन्स उपलब्द असतात

३] MODULE_LICENSE हि ओळ आपण GPL हा फ्री लायसन्स वापरणार आहे ते सांगते.

GPL चा अर्थ ग्नु पब्लिक लायसेन्स [GNU Public License]असा होतो.

४] जेंव्हा मोड्यूल कर्नेल मध्ये लोड होते तेंव्हा hello_init हे फंक्शन काम करते.या फंक्शनला इनिशलायझ फंक्शन म्हणतात.जर हे फंक्शन फेल झाले तर तो एरर कोड रिटर्न करतो म्हणून हे फंक्शन कधीच void नसते.

५] जसे आपण c प्रोग्रामिंग मध्ये printf वापरत होतो तसे लिनक्स कर्नेल प्रोग्रामिंग मध्ये prink()हे प्रिंटिंग साठी फंक्शन वापरतात.या फंक्शनमुळे स्ट्रिंग डाटा हा कर्नेल च्या लॉग बफर मध्ये साठवला जातो.

prink मध्ये अजून एक सुविधा असते ती म्हणजे मेसेजचे महत्व ठरवणे त्यासाठी मेसेजच्या सुरवातीला काही टँग लावतात.

printk फंक्शन मध्ये वेगवेगळ्या आठ loglevel असतात.त्या kernel.h या फाईल मध्ये कर्नेल मध्ये इनबिल्ट असतात.

Printk फंक्शनच्या आठ लॉग लेव्हल खालील प्रमाणे:

  • KERN_EMERG : हि लेव्हल मेसेज जेंव्हा इमर्जन्सी असेल तेंव्हा वापरतात.उदा:प्रोसेस बंद होणे.
  • KERN_ALERT : लक्ष वेधून घेण्यासाठी.
  • KERN_ERR : चूक दर्शविण्यासाठी
  • KERN_CRIT : क्रिटीकल सिरीयस हार्डवेअर वा सोफ्टवेअर प्रोब्लेम सांगण्यासाठी.
  • KERN_WARNING : धोक्याचा संदेश देण्यासाठी.
  • KERN_NOTICE : साधा नोटीस मेसेज सांगण्यासाठी.
  • KERN_INFO : माहिती सांगण्यासाठी.
  • KERN_DEBUG : डीबगिंग करताना मेसेज पाहण्यासाठी.

वरील प्रोग्राम मध्ये आपण Hello world हा मेसेज लॉग करणार आहोत.

६] त्यानंतर रिटर्न फंक्शन द्वारे आपण फंक्शन कॉल करताना आलेल्या एररचा कोड रिटर्न केला जातो.

७] मोड्युल कर्नेल मधून काढून टाकण्यासाठी hello_exit हे फंक्शन वापरतात.हे फंक्शन रन झाल्यानंतर “GoodBy”हा मेसेज लॉगमध्ये रेकोर्ड होतो.

८] module_init हे फंक्शन कर्नेल ला मोड्यूल्स इनिशलाईझ झाल्यवर कोणकोणते फंक्शन रन करायचे ते सांगतात.

९] module_exit हे फंक्शन कर्नेल ला मोड्यूल्स काढून टाकल्यावर कोणकोणते फंक्शन रन करायचे ते सांगतात

प्रोग्रम एडीटर मध्ये टाइप करून झाल्यानंतर Ctrl+Q बटन किंवा Esc दाबून आपण एडिटर मधून बाहेर पडावे.प्रोग्राम सेव्ह करून बाहेर पडण्यासाठी wq! हि कमांड वापरावी.

आता आपला पहिला प्रोग्रॅम तयार झाला आहे तो परत एकदा पाहण्यासाठी आपण .c फाईल टेक्स्ट एडीटर मधून ओपेन करून चेक करू शकता.

किंवा cat hello.c हि कमांड देऊन फाईल रीड ओन्ली मोड मध्ये बरोबर आहे का ते पाहू शकता.आपणस आपला प्रोग्राम पुढीलप्रमाणे दिसेल.

code of Hello world

Code of Hello world program

[Ref: Linux For You magazine]

मेक फाईल:

वरील कोड रन करण्या अगोदर तो मेक फाईल वापरून कंपाईल करावा लोगतो.त्यासाठी आपला प्रोग्राम ज्या फोल्डर मध्ये आहे त्याच फोल्डर मध्ये Makefile नावाची फाईल तयार करणे अन्यथा तुम्हाला तुमच्या फाईल चा पूर्ण पत्ता द्यावा लागेल.

      [नोंद :यातील Mekefile हा शब्द केस सेन्सेटिव्ह आहे त्यामुळे M हे केंपीटल लेटर्स मध्ये हवे.]

obj-m समोर कोणकोणते मोड्यूल्स बिल्ड करायचे आहेत त्यांची नावे द्यावीत. त्यानंतर .o,.koसारख्या फाईल कंपाईल झाल्यावर आपोआप तयार होतील.

      [नोंद :यामध्ये आपण आपल्या फाईल चे नाव .c या एक्सटेंशन चा वापर न करत .o [ऑब्जेक्ट] या एक्सटेंशन चा वापर करणार आहोत]

खालील कोड Makefileमध्ये पेस्ट करावा.

obj-m +=hello.o

all:

make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules

clean:

make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean

मेक कोडची माहिती:

shell uname –r :हि कमांड आपल्या सिस्टीम वर कर्नेल चे कोणते व्हर्जन आहे ते शोधते.

पुढील ओळ हे दर्शविते कि, लोड होणारे मोड्युल हे कर्नेल चा भाग आहे आणि लोड झाल्यानंतर ते कर्नेलचा भाग बनेल.

प्रोग्राम पुढीलप्रमाणे रन करणे:

१. टर्मिनल विंडो मध्ये जाऊन आपली मेक फाईल असेल त्या फोल्डर मध्ये जाणे.

२. make कमांड वापरून आपला कोड आपण कंपाईल करावा कोड कंपाईल झाला तरच बाकी सपोर्टिंग फाईल्स तयार होतील अन्यथा एरर्स चा मेसेज मिळेल.त्याच बरोबर कोणत्या ओळीला चूक झाली आहे त्या ओळीचा नंबर पण मिळेल.

३. आपण परत vi hello.c करून कोड मध्ये जाऊन आवश्यक चेंजेस करावेत.

. sudo insmod hello.ko:हि कमांड वापरल्यावर आपले मोड्युल कर्नेल मध्ये इन्क्लुड होते.

५. आता ते झाले का नाही हे चेक करण्यासाठी कर्नेल लॉग मधील मेसेज पाहण्यासाठी dmesg हि कमांड वापरा.

६. आपणास “Hello World”हा मेसेज दिसेल म्हणजे इनिशियलायझेशन फंक्शन सुरळीत चालत असेल.

७. lsmod हि कमांड वापरून आपले मोड्युल हे लिस्ट मध्ये आहे ना ते चेक करणे.

८. नंतर आपले मोड्युल काढून टाकण्यासाठी sudo rmmod hello.koहि कमांड वापरा आणि dmesg कमांड वापरून मेसेज चेक करणे.

९. [नोंद : आपण एक मोड्युल एकदाच इन्सर्ट करू शकतो दुसऱ्यांदा ते इन्सर्ट करायचे असल्यास आधीचे मोड्युल काढून मग परत सुधारित मोड्युल इन्सर्ट करावे.]

Output window

Output window

अशा प्रकारे आज आपण कर्नेल चा बेसिक प्रोग्राम कसा करावा हे शिकलात.आपण आपल्या कॉम्प्युटर वर हा सोपा प्रोग्राम नक्की करून पहा.

मी आपल्याला सोपे जावे म्हणून मी केलेला प्रोग्रॅम फाईल्स जोडलेल्या आहेत.

खालील hello.c आणि  Makefile यांचे .doc हे एक्सटेंशन काढून या फाईल्स आपण जशाच्या तशा वापरू शकतो.[हे एक्सटेंशन फाईल ब्लॉगला  जोडण्यासाठी मी लावलेले आहे.]

डाऊनलोड करण्यासाठी  फाईल्स :  Makefile आणि   hello1.doc

आपला स्वतः चा डिव्हाईस ड्रायव्हर कसा वाटला आपल्याला..झकास ना.. आता याच प्रोग्राम मध्ये सुधारणा करत करत आपण पुढचे प्रोग्राम शिकणार आहोत.

यानंतर डिव्हाईस ड्रायव्हरचा पँरामिटर पासिंग प्रोग्रम,प्रोसेस संबन्धित प्रोग्रम शिकण्यास आपणस नक्की आनंद होईल…मग सज्ज रहा पुढच्या पायरीसाठी…

आपणास हा भाग कसा वाटला ते नक्की कळवा.

“लिनक्स मराठीतून “ च्या पुढील भागाला भेट देण्यासाठी येथे टिचकी मारा:

भाग १]लिनक्सची ओळख आणि उबुंटू इन्स्टॉलेशन.

भाग २]लिनक्सची जान आणि शान टर्मिनलची ओळख आणि vi एडीटर.

भाग 3]लिनक्स कर्नेल आणि डिव्हाईस ड्रायव्हर ची ओळख.

भाग ४]डिव्हाईस ड्रायव्हरचा हँलो वल्ड प्रोग्रम.

भाग ५]डिव्हाईस ड्रायव्हरचा पँरामिटर पासिंग व प्रोसेस संबन्धित प्रोग्रम.

भाग ६ ]कँरेक्टर डिव्हाईस ड्रायव्हर बेसिक

धन्यवाद -MJ :-)


Filed under: Hello World Device Driver, x-All Tablets
Read full storyComments Off

छे


गुजराती भाषेत ’आहे’ ला समानार्थी शब्द ’छे’ आहे. त्यामुळे त्याचा खूपदा वापर वाक्यरचनेत होत असतो. याशिवाय बंगाली व नेपाळी भाषेतही याच प्रकारचा शब्द वापरण्यात येतो. या ’छे’ वरून काही विनोद हिंदी व मराठी चित्रपटांत तयार झाले होते. त्यांचा हा थोडा गोषवारा.

प्रसंग १:
फू-बाई-फू
झी मराठी फू-बाई-फू मध्ये दुसऱ्या वा तिसऱ्या पर्वामध्ये विकास समुद्रे व आरती सोळंकी यांचा एक ऍक्ट होता. त्यामध्ये विकास समुद्रे हा एक कोकणी माणूस असतो व आरती ही एक गुजराती मुलगी असते. दोघेही आपापल्या भाषेत संवाद साधत असतात. आरतीच्या तोंडी सतत छे.. छे.. सारखे शब्द बाहेर पडत असतात. तेव्हा विकास तीला म्हणतो, ’तुमच्यात काय फक्त ’छे’च असतं काय...? सात-आठ नसतं काय...?’

प्रसंग २:
चित्रपट चुप-चुप के
राजपाल यादवचे विनोद या चित्रपटात खूप प्रसिद्ध झाले होते. गुजराती येत नसल्याने काही वाक्यांचा तो वेगळाच अर्थ काढतो व त्यामुळे त्याला विनाकारण मार खावा लागतो. त्यानंतर शक्ति कपूर त्याला सोडवून जेवणासाठी बाहेर बसवतो. राजपालला जेवणात वाढलेली पोळी खूपच जाड असल्याने तो आचाऱ्याला म्हणतो, ’इसको सूखा कैसे खाऊ? इस के साथ अचार मिलेगा?’
आचारी गुजराती असल्याने त्याला वाटते की, अचार म्हणजे आणखी चार पोळ्या हा मागतो आहे. मग तो राजपालला चार पोळ्या आणखी मोजून देतो.. एक, बे, त्रैण, चार...
आधीच वैतागलेला राजपाल अर्थात बांडिया उद्वेगाने म्हणतो, ’ये क्या....!!!! छे...!!!’
आचाऱ्याला वाटते, याला सहा पोळ्या हव्या आहेत. तो आणखी दोन पोळ्या त्याला देतो... पांच... छह...!!!

प्रसंग ३:
चित्रपट नवरा माझा नवसाचा
सचिन-सुप्रियाच्या एसटीने गणपतिपुळे प्रवासाची ही विनोदी कहाणी आहे, हे सर्वांना माहितच असेल. त्यांच्या बसमध्ये एक पारशी म्हातारी बसलेली असते. तीच्या दोन मुलींबद्दल सांगताना ती म्हणते...’मारी डिकरी छे ना ती चिपलूनमां छे.... अन बिजी डिकरी छे ना ती मानगांवमां डाक्टर छे...’
यावर सचिन म्हणतो, ’...आणि तीजी?’
’त्रीजी नथी... दोनच छे...’
कंडक्टर अशोक सराफ हे सर्व ऐकत असतो. त्या म्हातारीचे शेवटचे वाक्य ऐकुन तो उद्गारतो, ’दोनच आहेत आणि.. छे...छे म्हणतीये...!!!’.
Read full storyComments Off

लिनक्स मराठीतून :भाग ३: लिनक्स कर्नेल आणि डिव्हाईस ड्रायव्हर ची ओळख.

नमस्कार,या भागात आपण  लिनक्स कर्नेल आणि डिव्हाईस ड्रायव्हर यांची ओळख करून घेणार आहोत, याचा आपणास डिव्हाईस ड्रायव्हर प्रोग्रॅम तयार करताना फार फायदा होईल.

कर्नेल हा लिनक्स ऑपरेटिंग सिस्टीमचा गाभा आहे. लिनक्स कम्युनिटी सतत या कर्नेल ला सुधारत असतात व कर्नेल ची नवनवीन व्हर्जन रिलीज करत असतात.

लिनक्सचा कर्नेल हा c आणि assembly या दोन भाषेत लिहिला आहे. कर्नेल हा कर्नेल स्पेस मध्ये रन होत असतो.

कर्नेल हा सिस्टिम चे हार्डवेअर आणि युजर ची अप्लिकेशन्स यांच्यातील मिडलवेअर चे काम करतो. कर्नेलचा असेम्ब्ली कोड हा हार्डवेअर वर अवलंबून असतो बाकी सी कोड हा फार मोठा आहे तो हार्डवेअर वर अवलंबून नसतो.

कर्नेल हा युजर कडून डाटा घेऊन तो प्रोसेसर, मेमरी इतर डिव्हाईस यांच्याशी कम्युनिकेशन करत असतो.

लिनक्स कर्नेल

लिनक्स कर्नेल

लिनक्स शिकण्याची खरी मजा येते जेंव्हा आपण सिस्टीम इंटरनल्स शिकतो.लिनक्सच्या जसेजसे आत घुसत जातो तसतशी कॉम्प्लेक्सिटी वाढते आणि तितकेच ते शिकणे रोमांचकारी होते.

आपण या अंकात लिनक्सच्या गाभ्यात नक्की काय दडलेले आहे ते पाहूया.

लिनक्स कर्नेल :

युनिक्स सिस्टीम हि अनेक प्रोसेस एकच वेळी हाताळत असते त्याचा बेस म्हणजे ऑपरेटिंग सिस्टीम चे कर्नेल ,कर्नेल हा ऑपरेटिंग सिस्टीमची पॉवर, मेमरी, प्रोसेस या महत्वाच्या गोष्टी सांभाळणारा मोठा बेस कोड असतो.कर्नेल ऑपरेटिंग सिस्टीम मध्ये खालील प्रमाणे वेगवेगळ्या भूमिका बजावतो.

प्रोसेस मेनेजमेंट:

अनेक प्रेसेस तयार करणे,त्या प्रोसेसरला पाठवून शेड्यूल नुसार चालवणे आणि नंतर प्रोसेस बंद करणे हे कर्नेलचे प्रोसेस मेनेजमेंटचे काम.

मेमरी मेनेजमेंट :

प्रोसेस ला मेमरी मिळवून देणे काम झाल्यवर ती मोकळी करणे आणि उपलब्द मेमरीचे व्हर्चुअल अँड्रेसवापरून नियोजन करणे.

फाईल सिस्टीम:

लिनक्स चा बेस म्हणजे त्याची फाईल सिस्टीम.लिनक्स मध्ये सगळे काही फाईल असेच मानले जाते ,म्हणजे अगदी फोल्डर म्हणजे पण फाईल चा असतो  आणि सिस्टीम ला जोडलेला कोणताहि डिव्हाईस हा हि ऑपरेटिंग सिस्टीम साठी फाईलच असतो…..हि आहे ना मस्त गोष्ट..लिनक्स कर्नेल या फाईल सिस्टीमचा स्ट्रक्चरल लेयर हार्डवेअरच्यावर तयार करते. [अशा अनेक फाईल सिस्टीम आहेत लिनक्स मध्ये,उदा :FATफाईल सिस्टीम]

डिव्हाईस कंट्रोल:

सिस्टीम ला लावलेल्या  प्रत्येक डिव्हाईस काम करून घेयासाठी काही ठराविक कोड रन केला जातो.त्याला डिव्हाईस ड्रायव्हर म्हणतात कर्नेल मध्ये सिस्टीम चे बेसिक डिव्हाईस ड्रायव्हर इनबिल्ट असतात .

उदा:कि-बोर्ड चा डिव्हाईस ड्रायव्हर.

नेटवर्किंग:

नेटवर्किंग चे पँकेट्स तयार करणे पाठवणे आलेले पँकेट्स ओळखणे आणि त्याचा वापर करणे या सारख्या नेटवर्किंगच्या गोष्टी कर्नेल हाताळतो.

[Ref:Linux device driver : orelly: Hartman]

कर्नेल स्पेस आणि युजर स्पेस:

युजर स्पेस:

युजरचा प्रोग्राम ,shell किंवा इतर अप्लिकेशन्स हे युजर स्पेस चा भाग आहेत.या अप्लिकेशन्स ना सुद्धा हार्डवेअर बरोबर माहितीची देवाणघेवाण कार्याची असते पण ते डायरेक्ट करू शकत नाहीत त्यासाठी त्यांना कर्नेल ची मदत घावी लागते.

कर्नेल स्पेस:

कर्नेल हे हार्डवेअर बरोबर डायरेक्ट संभाषण करीत असतात.यात डिव्हाईस ड्रायव्हर आणि त्यांचे फंक्शन्स,सिस्टीम कॉल्स हे युजरला हार्डवेअर शी संबंधित काम करण्यास मदत करतात.ज्यांद्वारे रीड, राईट ऑपरेशन्स करता येतात.या मोड मध्ये युजर ला पूर्ण अधिकार असतात.

डिव्हाईस ड्रायव्हरहा अप्लिकेशन्स आणि हार्डवेअर यांच्यातील दुवा म्हणून काम करतो.

कर्नेल स्पेस ,युजर स्पेस आणि डिव्हाईस ड्रायव्हर

कर्नेल स्पेस ,युजर स्पेस आणि डिव्हाईस ड्रायव्हर

डिव्हाईस ड्रायव्हर म्हणजे काय ?

आपल्या सिस्टिमला डिव्हाईस जोडल्यावर तो डिव्हाईस कसा काम करावा यासाठी सिस्टिममध्ये त्या डिव्हाईससाठीचा तो डिव्हाईस कसा काम करावा हे ठरवण्यासाठी काही कोड लिहिलेला असतो यास डिव्हाईस ड्रायव्हर म्हणतात.जसे आपण आपल्या सिस्टिमला काही नवीन डिव्हाईस जोडला कि आपल्याला त्या डिव्हाईस चा ड्रायव्हर इन्स्टॉल करावा लागतो त्या नंतरच तो डिव्हाईस काम करायला सुरवात करतो.

काही ड्रायव्हर सिस्टिम मध्येच असतात आपण डिव्हाईस जोडल्यावर ते लोड होऊन काम करू लागतात. जसे आपण पेन ड्राईव्ह आपल्या कॉम्प्युटर ला जोडला कि आपला कॉम्प्युटर त्यासाठीचा ड्रायव्हर आपोआप इन्स्टॉल करतो मग आपला पेन ड्राईव्ह चालू लागतो.

लिनक्सचे एक मस्त फिचर म्हणजे ऑपरेटिंग सिस्टीम चालू असताना आपण डिव्हाईस ड्रायव्हर लोड किंवा अन लोड करू शकतो त्यासाठी सिस्टीम री स्टार्ट करायची गरज नाही.याच लिनक्सच्या सुविधेमुळे लिनक्स सर्व्हर्समध्ये वापरतात.डिव्हाईस ड्रायव्हर च्या प्रोग्रेमला कर्नेल च्या भाषेत ‘मोड्यूल्स’ असेही म्हणतात.प्रत्येक मोड्युल हा त्याला दिलेल्या डिव्हाईस संबंधित कामकाज पाहतो.

डिव्हाईस ड्रायव्हरचे कँरेक्टर ड्रायव्हर [बाईट डाटा ट्रान्सफर],ब्लोँक ड्रायव्हर[स्टोरेज डिव्हाईस] ,नेटवर्क ड्रायव्हर[पेकेट्स डाटा ट्रान्सफर] असे प्रकार पडतात.

आपल्या टर्मिनल विंडो मध्ये जाऊन “ls /usr/src/linux/drivers/” हि कमांड दिल्यास आपणास आपल्या लिनक्स सिस्टीम मधील डिव्हाईस ड्रायव्हर पाहायला मिळतील.

माँड्यूल्स कमांड्स:

मोड्यूल्स हे .ko [कर्नेल ऑब्जेक्ट ]फाईल च्या  रुपात असतात .खालील कमांड्स टर्मिनलवर वापरून आपण आपणास हवे ते मोड्युल कर्नेल मध्ये घालू किंवा कर्नेल मधून काढू शकतो.

lsmod :हि कमांड आपल्या संगणकातील मोड्यूल्स म्हणजेच डिव्हाईस ड्रायव्हर ची लिस्ट दाखवते.

[नोंद :पुढील  कमांड मध्ये आपणास कमांड बरोबर फाईल चे नाव  द्यावे लागते].

insmod मोड्युल फाईल :हि कमांड वापरून आपण आपणस हवे ते मोड्युल कर्नेल मध्ये घालू शकतो.

modprobe मोड्युल फाईल : हि कमांड वापरल्यास ,आपणस हवे ते मोड्युल व त्या मोड्युलशी निगडीत असे मोड्यूल्स आपोआप कर्नेल मध्ये जातात.

rmmod मोड्युल फाईल :हि कमांड वापरून आपण आपणस हवे ते मोड्युल कर्नेल मधून बाहेर काढू शकतो.

अशा तऱ्हेने आपण या भागात कर्नेल आणि डिव्हाईस ड्रायव्हर यांची ओळख करून घेतली आहे.आपणस डिव्हाईस ड्रायव्हर प्रोग्रॅम लिहणे चालू करण्याआधी हि बेसिक माहिती समजणे फार महत्वाचे आहे.

पुढील अंकात आपण डिव्हाईस ड्रायव्हरचा हँलो वल्ड प्रोग्रम कसा लिहायचा ते पाहणार आहोत..

आपणास हा भाग कसा वाटला ते नक्की कळवा.

“लिनक्स मराठीतून “ च्या पुढील भागाला भेट देण्यासाठी येथे टिचकी मारा:

भाग १]लिनक्सची ओळख आणि उबुंटू इन्स्टॉलेशन.

भाग २]लिनक्सची जान आणि शान टर्मिनलची ओळख आणि vi एडीटर.

भाग 3]लिनक्स कर्नेल आणि डिव्हाईस ड्रायव्हर ची ओळख.

भाग ४]डिव्हाईस ड्रायव्हरचा हँलो वल्ड प्रोग्रम.

भाग ५]डिव्हाईस ड्रायव्हरचा पँरामिटर पासिंग व प्रोसेस संबन्धित प्रोग्रम.

भाग ६ ]कँरेक्टर डिव्हाईस ड्रायव्हर बेसिक

धन्यवाद -MJ :-)


Filed under: Kernel and Driver Intro, x-All Tablets
Read full storyComments Off

आयपीएल आणि पाणी

आयपीएलच्या सामन्यांमध्ये वापरल्या जाणाऱ्या पाण्यावरून सध्या युद्ध सुरू झाले आहे. महाराष्ट्रात होणाऱ्या सामन्यांसाठी दर सामन्याला आठ लाख लिटर पाणी लागणार आहे. असे १६ सामने महाराष्ट्रात होतील. म्हणजेच वानखेडे स्टेडियम, मुंबई व एमसीए स्टेडियम, गहुंजे (पुणे) येथील सामन्यांत आयपीएलच्या काळात ऐन उन्हाळ्यात सुमारे पन्नास लाख लिटर पाणी लागेल. एका अर्थाने महाराष्ट्र दुष्काळात होरपळत असताना या लाखो लिटर पाण्याची नासाडी होणार आहे. सामन्यांसाठी वापरले जाणारे पाणी हे सार्वजनिक असल्याने हा पाण्याचा अपव्ययच आहे. त्यावर तातडीने उपाय करण्याची गरज आहे. बीसीसीआयचे राजीव शुक्ला हे महाराष्ट्रातून खासदार म्हणून गेल्याने त्यांनीच या बाबीची काळजी घेण्याची आवश्यकता आहे. केवळ आयपीएल मधून पैशाचा वर्षाव होतो म्हणून दुष्काळी परिस्थितित पाण्याचा अपव्यय करू नये. भविष्यातही पाण्याच्या बाबतीत मैदानांनी स्वयंपूर्ण होणे, ही काळाची गरज ठरणार आहे. इंग्लंडच्या कौंटी क्लबमधील मैदाने तसेच ऑस्ट्रेलियातील गाबा स्टेडियम व विंडेजचं किंग्ज्टन ओव्हल ही मैदाने रेनवॉटर हार्वेस्टिंगचे प्रकल्प राबवितात. असे प्रकल्प आपल्या राज्यातही राबविता येतील. पावसाळ्यात मैदानातील व मैदानाच्या छतावरील पाणी साठवून त्याचा वापर मैदानासाठी करता येऊ शकतो. बडोद्याच्या मैदानात अशा प्रकारची योजना राबवली जाते. पुढील काळात आपल्यालाही त्याची गरज भासणार, हे निश्चित!
Read full storyComments Off

मराठीतून मल्याळम (भाग-१, स्वरांची ओळख)

दक्षिण भारतात केरळमध्ये बोलली जाणारी भाषा म्हणजे मल्याळम होय. आपल्यापासून हा मुलूख तसा दूरच असल्याने त्यांची भाषा आपल्याला तसे समजणे अवघडच. परंतु, मल्याळम भाषेतील चित्रपट पाहताना मी ही भाषा आत्मसात करण्याचा प्रयत्न केला. माझे हे थोडॆसे ज्ञान मी माझ्या नव्या ब्लॉग पोस्टच्या शृंखलेने तुमच्या समोर मांडणार आहे. एखादी नवी भाषा शिकायला काय हरकत आहे? तेव्हा तुम्ही द्राविडांच्या या प्रदेशात मल्याळमने सुरूवात करा. तुलनेने ही भाषा खूप सोपी व खऱ्या अर्थाने ’वळणदार’ आहे, हे तुमच्या ध्यानात येईलच. ह्या पूर्ण शृंखलेच्या अखेरीस मी एक मल्याळम ब्लॉग लिहिल. तेव्हा समजून घ्या.

अ - അ
आ - ആ
इ - ഇ
ई - ഈ
उ - ഉ
ऊ - ഊ
ए - എ
ऐ - ഐ
ओ - ഒ
औ - ഔ
अं - അം
अ: - അ:
Read full storyComments Off

संगणक माहिती मोजमाप करणारी एकके


कोणतीही गोष्ट मोजण्यासाठी विविध एककांची (युनिट्स) ची गरज पडते. संगणकीय माहितीसाठा अर्थात मेमरी मोजण्यासाठीही संगणकतज्ज्ञांनी एककांची निर्मिती केली आहे. यातील केवळ तीन-चार एककेच आपण जाणतो. कारण, आजची संगणक मेमरी त्यापुढे जाऊ शकलेली नाही. अगदी संगणक अभियंत्यांनाही या मोठ्या एककांची माहिती नाही. संगणकीय मेमरीचा डोलारा पाहता येत्या दहा वर्षांत या एककांची गरज आपल्याला पडू शकते. रजनिकांतच्या ’इंदिरन’ अर्थात ’रोबोट’ या चित्रपटांत स्वत:चे configuration सांगण्यासाठी तो मेमरीच्या एका एककाचा उल्लेख करतो. ते एकक कोणते ते खालच्या यादीत पाहून तुम्हीच ठरवा.

१ बिट (० किंवा १) = बायनरी डिजिट

८ बिट्स = १ बाईट

१०२४ बाईट्स = १ केबी (किलोबाईट्स)

१०२४ केबी = १ एमबी (मेगाबाईट्स)

१०२४ एमबी = १ जीबी (गीगाबाईट्स)

१०२४ जीबी = १ टीबी (टेराबाईट्स)

१०२४ टीबी = १ पीबी (पेटाबाईट्स)

१०२४ पीबी = १ ईबी (एक्साबाईट्स)

१०२४ ईबी = १ झेडबी (झेटाबाईट्स)

१०२४ झेडबी = १ वायबी (योटाबाईट्स)

१०२४ वायबी = १ बीबी (ब्रॉंटोबाईट्स)

१०२४ बीबी = १ जीऑपबाईट्स

जीऑपबाईट्स हे संगणक मेमरी मोजण्याचे सर्वात मोठे एकक आहे!

Read full storyComments Off

लिनक्स मराठीतून :भाग २:लिनक्सची जान आणि शान : टर्मिनलची ओळख.

लिनक्स मराठीतून :भाग २:लिनक्सची जान आणि शान टर्मिनलची ओळख आणि vi एडीटर.

लिनक्स च्या नवीन आवृत्तीनां युजर इंटरफेस ची सुविधा आली असली तरी लिनक्स ची सुरवाती पासूनची ओळख आणि सर्वात महत्त्वाचे फिचर म्हणजे टर्मिनल विन्डो.

या विन्डोद्वारे आपण संपर्ण सिस्टीम कंट्रोल करू शकतो.

आपल्या विंडोज मध्ये जसा डॉस कमांड विन्डो असते तसेच उबुंटू मध्ये ही टर्मिनल विन्डो असते.

या लेखमाले अंतर्गत मी आपणस लिनक्सचा प्रात्यक्षिक वापर कसा करायचा यावर भर देणार आहोत.

लिनक्स इंटर्नल्स हे सध्या व सोप्या भाषेत आपणास कसे समजावून देता येईल याचा मी कटाक्षाने प्रयत्न करीत आहे.

मागील भागात आपण उबुंटू इन्स्टॉल कसे करायचे ते पहिले आत्ता आपण उबुंटू मध्ये आपली सिस्टीम बूट करा.

टर्मिनल विन्डो लाँच करण्यासाठी उबुंटूच्या डाव्या कोपर्‍यात असलेल्या उबुंटू सर्च बटन वर किल्क करा.आणि Terminal असे टाईप करावे .

मग आपणस खाली टर्मिनल विन्डो दिसेल ती सिलेक्ट करून आपण टर्मिनल उघडू शकतो.

terminal window

आपण एकाच वेळी अनेक टर्मिनल्स उघडून त्या प्रत्येकावर अगदी निरनिराळे काम करू शकतो हे टर्मिनल्स विन्डोचे आणखी एक विशिष्ट!!

आणखी एक गोष्ट म्हणजे लिनक्स ची कोणतीही ऑपरेटिंग सिस्टिम घ्या तिचा युजर इंटरफेस वेगळा असू शकतो पण शेल /टर्मिनल शक्यतो सेमच असतो.त्यामुळे एकदा का टर्मिनल मध्ये शिरला का मग ती कोणती पण लिनक्स ची ऑपरेटिंग सिस्टम असतो ती सारखीच भासते.

सिस्टम मध्ये काही इनस्टॉलेशन करायचे असल्यास वा इतर काही चेंजेस करायचे असल्यास आपणास सिस्टमचा अँडमिनिस्टर असावे लागते त्यासाठी आपणस टर्मिनलवर रूट अकौंट तयार करून त्याद्वारे लॉग इन करावे लागते ही बेसिक स्टेप पहिला आपण शिकूया.

रुट अकाऊंट तयार करणे.

१)प्रथम टर्मिनल विन्डो ओपेन करा.

२)विन्डोमध्ये आपण ज्यानावाने लॉग इन केले असेल ते नाव दिसेल.

३)नंतर “sudo passwd root” ही कमांड वापरा.

४)त्यानंतर आपल्या सिस्टीमचा पासवर्ड विचारल्या प्रमाणे दोनदा टाका.

५)नंतर su root” ही कमांड वापरा.

६)आणि रूट या अकौंटसाठी नवा पासवर्ड (ex:root) असा देणे.

७)मग आपण रूट या अकौंटवर लॉग इन झालेले असता.

८)ते आपणास एनटर बटन दाबल्यावर सुरवातीला जेथे आपले युजर नेम होते तेथे रुट हे नाव आलेले दिसेल.

९)पुढच्या वेळेला परत रूट मध्ये जायचे असल्यास फक्त “su root”आणि पासवर्ड दिला कि आपण रुट मध्ये लॉग एन होतो.

अधिक महितीसाठी खालील छायाचित पहा.

root

आता आपण सज्ज झाले आहात टर्मिनल चा पूर्णतः वापर करण्यासाठी…

टर्मिनलच्या कमांड्स :

खालील शेल कमांड्स लिनक्स व युनिक्स साठी सेमच आहेत.

ls :हि कमांड चालू डिरेक्टरी मधील फाईल आणि फोल्डर दाखवते.

pwd :कमांड चालू डिरेक्टरी कोणती त्या डिरेक्टरीचे लोकेशन दाखवते.

ps :हि कमांड संगणकातील चालू प्रोसेस दाखवते.

cat : हि कमांड चालू फाईल मधील कंटेंट दाखवते.

cp :हि कमांड फाईल कॉपी साठी वापरतात यात cp जुनी फाईल नवीन फाईल असे वापरतात.

mv :हि कमांड फाईल चे नाव बदलण्यासाठी वापरतात. mv जुने नाव नवीन नाव.

rm: हि कमांड फाईल डिलीट किंवा रिमुव्हल साठी वापरतात.

echo :हि कमांड अर्ग्युमेंट पाठवण्यासाठी वापरतात.

grep :एखाद्या फाईल मधून विशिष्ट शब्द असणारी ओळ शोधणे. grep शब्द फाईलचे नाव

sort :एखादी फाईल वाचून त्यातील डाटा ओळीने लावला जातो आणि तो परत फाईल मध्ये लिहला जातो.

mkdir :नवीन डिरेक्टरी तयार करणे.

exit :टर्मिनल बंद करणे.

[Ref:Unix Made Easy:Tata McGrow-hill:Muster]

व्हर्चुअल एडीटर:

टर्मिनल मध्ये प्रोग्रेम लिहिण्यासाठी व्हर्चुअल एडीटर म्हणजेच VI एडिटर वापरतात.

त्याचेच सुधारित व्हर्जन VIM हे पण लिनक्स ने दिलेले आहे फक्त त्यात कोड निरनिराळ्या कलर कोड मध्ये दिसतो बाकी VIM हे अंतर्गत vi एडीटरच वापरात असते.

vi एडीटर हा एकतर कमांड मोड मध्ये किंवा इन्सल्ट मोड मध्ये चालतो म्हणजे एक तर कोड लिहू शकतो नाहीतर कोड मध्ये बदल करू शकतो पण दोन्ही एकाच वेळी नाही.

कमांड मोड मध्ये एडीटर रीड ओन्ली मोड मध्ये चालतो.

प्रथम vi फाईल चे नाव  अशी कमांड देऊन आपण फाईल एडीटर मोड मध्ये उघडू शकतो.

नंतर i बटन दाबून मग आपण त्या एडीटर मध्ये लिहू शकतो.लिहून झाल्यवर Esc बटन दाबल्यावर एडीटर रीड ओन्ली मोड मध्ये जातो.

कर्सल हलवण्यासाठी h, j,k,l हि बटणे वापरतात.

एडीटरच्या फाईल मधून एखादा शब्द शोधायचा असल्यास /शब्द असा शोधला जातो.आणि पुढचा शब्द पाहण्यासाठी परत n बटन दाबून नेक्ट जाता येते.

एडीटर मधून बाहेर पडण्यासाठी Ctrl+Q बटन दावाव आणि नंतर q! कमांड वापरावी. आणि फाईल सेव्ह करून बाहेर पडण्यासाठी wq!हि कमांड वापरावी.

एखादी ओळ डिलीट करण्यासाठी dd हि कमांड वापरावी.

एखादी ओळ जर चुकून डिलीट झाली असेल तर तिला परत आणण्यासाठी u कमांड वापरावी.

एखादे अक्षर डिलीट करण्यासाठी कमांड मोड मध्ये जाऊन त्या अक्षरावर कर्सलनेऊन x बटन दाबावे.

एखाद्या शब्दाच्या पुढून चालू कारचे असल्यास त्या शब्दावर जाऊन a हे बटन दाबावे मग त्या पुढील अक्षरावर कर्सल शिफ्ट होतो.

एखाद्या विशिष्ट ओळीला जाण्यासाठी :ओळ नंबर [:११२]आणि एंटर हि कमांड वापरतात.

एखादे अक्षर रिप्लेस करण्यासाठी त्या अक्षरावर जाऊन r बटन दाबावे आणि नंतर नवीन अक्षर दाबावे ते अक्षर रेप्लेस होईल.

आपण या अंकात आपणस प्रोग्रामिंग साठी लागणाऱ्या बेसिक कमांड पहिल्या, ज्याचा वापर आपणास vi एडीटर मध्ये प्रोग्रेम लिहिताना नक्की होईल.

या शिवाय बऱ्याच कमांड आहेत पण आपण जितक्या लागतील तितक्याच कमांड शिकलो आहोत.

अधिक कमांड जाणून घेण्यासाठी पुढील लिंक वर टिचकी मारा.

vi-vim--sheet

टिप्स:

टर्मिनल मध्ये आधी वापरलेली कमांन्ड परत पाहण्यासाठी वा वापरण्यासाठी अप-एरो-कि वापरावी.

तसेच एखाद्या फाईल चे नाव टाईप करण्या ऐवजी त्या फाईलची सुरवातीची काही अध्याक्षरे टाईप करून tab बटन दाबावे मग फाईल चे पुढचे नाव आपोआप येईल.

अशा तऱ्हेने आपण टर्मिनल कमांड आणि vi एडीटर च्या कमांड्स पहिल्या ,पुढच्या अंकात आपण: कर्नेल आणि डिव्हाईस ड्रायव्हर ची ओळख करून घेणार आहोत.

मग तोपर्यंत आपली टर्मिनल वरील कमांड एकदम मजबूत करा..मग येईल मजा प्रोग्रामिंग करायला…लवकरच भेटू पुढच्या भागात.. :)

 आपणास हा भाग कसा वाटला ते नक्की कळवा.

“लिनक्स मराठीतून “ च्या पुढील भागाला भेट देण्यासाठी येथे टिचकी मारा:

भाग १]लिनक्सची ओळख आणि उबुंटू इन्स्टॉलेशन.

भाग २]लिनक्सची जान आणि शान टर्मिनलची ओळख आणि vi एडीटर.

भाग 3]लिनक्स कर्नेल आणि डिव्हाईस ड्रायव्हर ची ओळख.

भाग ४]डिव्हाईस ड्रायव्हरचा हँलो वल्ड प्रोग्रम.

भाग ५]डिव्हाईस ड्रायव्हरचा पँरामिटर पासिंग व प्रोसेस संबन्धित प्रोग्रम.

भाग ६ ]कँरेक्टर डिव्हाईस ड्रायव्हर बेसिक

धन्यवाद -MJ :-)


Filed under: Linux Learing, Terminal window
Read full storyComments Off

लिनक्स मराठीतून :भाग १:लिनक्सची ओळख आणि उबुंटू इन्स्टॉलेशन.

लिनक्सची ओळख :

आपण सर्व जण विंडोज ऑपरेटिंग सिस्टीमशी एकदम परिचयाचे आहोत,विंडोज बरोबरच आणखी एक ऑपरेटिंग सिस्टीम उदयास आली होती तिचे नाव युनिक्स त्याच ऑपरेटिंग सिस्टीम चे पुढे लिनस [Linus Torvalds]याने लिनक्स ऑपरेटिंग सिस्टीम मध्ये रुपांतर केले, लिनक्स रिलीज झाली ती 5 ऑक्टोबर  1991 ला आणि ती अतिशय प्रसिद्ध झाली.तुम्हाला गमतीची गोष्ट सांगतो कि ही लिनक्स म्हणजे लिनसचा “युनिक्सचा इम्युलेटर“हा कॉलेजचा प्रोजेक्ट होता तोच पुढे मोठा होऊन आज त्याची लिनक्स ऑपरेटिंग सिस्टीम तयार झाली आहे.

आजही सर्व्हर्स पासून सुपर कॉम्प्युटर ते लहान डिव्हाईस मध्ये तसेच काही मोबाईल मध्ये सुद्धा लिनक्स असते.आपल्या नकळत आपण लिनक्स वापरात असतो.आज आपल्या परिचयाची उबंटू ,रेड हँट,फेडोरा इत्यादी ऑपरेटिंग सिस्टीम चा बेस हा लिनक्स हाच आहे.

लिनक्स कम्युनिटीचे जगभरातील डेव्हलपर याच्या सोर्स कोड मध्ये नवनवीन चेंज करून लिनक्स चा कोड समृद्ध करत असतात.आणि अशी ही मस्त ऑपरेटिंग सिस्टीम एकदम मोफत आहे तसे त्याचे काही डीस्ट्रीब्यूटर्स [रेड हँट,फेडोरा] काही त्यांच्या कस्टम्स ऑपरेटिंग सिस्टीम ला किंमत लावतात पण बेसिक लिनक्स एकदम मोफत आहे ते ही ऑफिशियली..

तर लिनक्स ऑपरेटिंग सिस्टीम आणि त्याचे इंटरन्ल्स शिकण्यासाठी आपणास काय यायला हवे…विंडोज वापरली आहे ना तुम्ही??….मग बास!!…मी आहे तुमच्या बरोबर,आपण मिळून जाऊया या लिनक्स च्या सफरीवर…..मग तयार आहात ना लिनक्स शिकायला….

[ लिनक्स च्या घरात पोहचण्यासाठी पुढील लिंक वर टिचकी मारा.http://www.linux.org/.]

linux

लिनक्स मराठीतून

आपण या अंकात लिनक्स ऑपरेटिंग सिस्टीम कशी इन्स्टॉल करायची ते पाहणार आहोत.

आपण विंडोज वापरणारे असाल तर उबुंटू ही विंडोज ते लिनक्स प्रवास करणार्‍या लोकांसाठी मस्त आहे ज्यात युजर इंटरफेस विंडोज सारखा आहे पण याचा बेस लिनक्स आहे…

या लिनक्स ची अजून एक मजा म्हणजे तिचा सोर्स कोड ओपेन आहे आणि आपण पण यात आपले काहीतरी किडे करून काही भर घालू शकतो..आणि आपली स्पेशल ऑपरेटिंग सिस्टीम तयार करू शकतो,डिव्हाईस् ड्रायव्हर लिहू शकता  …म्हणजे माझ्या सारख्या किडेखोर लोकांना पर्वणीच…तसे हे फार सोपे नाही ..आणि प्रयन्त केल्यावर अवघड पण नाही फक्त शिकायची तयारी पाहिजे…

उबुंटू इन्स्टॉलेशन :

चला मग किक मारुया……आपण आपली सिस्टीम विंडोज मध्ये बुट करा मग ते एक्स पी असो वा विंडोज ७.

सिस्टीम चालू झाल्यावर इंटरनेट ब्राऊजर ओपन करून , पुढील उबंटूच्या लिंकवर जा. http://www.ubuntu.com/download

आपण आपली आहे ती ऑपरेटिंग सिस्टीम ठेवून त्याच बरोबर उबुंटू पण इन्स्टॉल करू शकतो त्यामुळे आपला डाटा पण जाणार नाही आणि आहे त्या सिस्टीम वर आपण लिनक्स एन्जोय करू शकता..

.त्यामुळे अजिबात घाबरू नका..बिनधास्त ट्राय करा…

त्यासाठी उबंटू मध्ये विंडोज इंस्टॉलर दिलेला आहे जो नॉर्मल इन्स्टॉलेशन सारखे आपल्या ऑपरेटिंग सिस्टीम सोबत नवीन लिनक्स इन्स्टॉल करून देतो.

त्यासाठी उबुंटू च्या साईटवर विंडोज इंस्टॉलर वर टिचकी मारा.

setup link

त्यानंतर आपणास हवे ते व्हर्जन ड्रॉप बॉक्स मधून सिलेक्ट करून गेट इंस्टॉलर वर टिचकी मारा.

व्हर्जन ड्रॉप बॉक्स यात LST हे स्टेबल व्हर्जन असते ज्याला उबंटू कडून लॉंग टाईम सपोर्ट दिला जातो.]

setup 2 इन्स्टॉलेशन

इन्स्टॉलेशन

नंतर नेक्स्ट जाऊन “Not now, take me to the download › “ ला टिचकी मारावी ..[तसे तुम्ही दिलदार असाल तर उबंटू ऑर्गनायझेशन ला देणगी पण देऊ शकता].

नंतर आपणस पॉप अप मेसेज येईल तो सेव्ह करा वा रन करा.

run setup

रन सेटअप

मग उबंटू इंस्तोल होण्यास सुरवात होईल.

त्या दरम्यान आपणस युजर नेम पासवर्ड सेव्ह करावा लागेल.आणि उबुंटू साठी किती जागा द्यायची हे पण सांगावे लागेल.

त्यासाठी महिती खालील विंडोत भरावी.

installtion window

इनस्टॉलर विंडो

या विंडो वर किल्क करा कि झाले आपोआप उबुंटू इंस्तोल होईल आपल्या सिस्टीम वर…

३-४ वेळा सिस्टीम री स्टार्ट होईल आणि नंतर ती लॉग इन विन्डो ला येऊन थांबेल.

मग पासवर्ड देऊन सिस्टीम उबुंटू मध्ये घुसा..एक मधुर आवाज येईल आणि आपण लिनक्स मध्ये पोहचला असाल…इतके सोपे आहे सगळे.. :)

आता उबुंटू आणि विंडोज मधून आलटूनपालटून फिरण्याच्या टिप्स:

सिस्टीम रिस्टार्ट केल्यावर आपणस पुढील प्रमाणे उबंटू का विंडोज असे दोन पर्याय दिसतील .

आपणस त्यादोन्ही मधील एक पर्याय निवडून कोणत्याही ऑपरेटिंग सिस्टीम मध्ये परत जाता येईल.

जसा विंडोज ला खालच्या बाजूस टास्क बार असतो तसा उबंटू च्या वरच्या बाजूस टास्क बार असतो.

या टास्क बारच्या उजव्या बाजूस आपणस सिस्टीम रिस्टार्ट किंवा शट डाऊन करण्याचे पर्याय उपलब्द असतात.

विंडोज च्या प्रत्येक विंडोमध्ये विंडोज मोठी ,लहान किंवा बंद करण्यासाठी विन्डो च्या उजव्या बाजूस पर्याय असतात पण उबंटू मध्ये ते विन्डो च्या डाव्या बाजूस असतात.

उबुंटू विंडोच्या डाव्या बाजूस अप्लिकेशन विषयक पर्याय असतात.

वरील कोपऱ्यातील बटन हे विंडोज च्या स्टार्ट मेनू सारखे काम करते यात आपणस हावे ते अप्लिकेशन शोधून आपण ते उघडू शकतो.

खालील प्रमाणे आपला डेस्कटॉप आपणस दिसतो….

opemning terminal

उबुंटु

हळूहळू वापरण्यास सुस्र्वात केल्यावर आपणस उबंटू एकदम जमूनही जाईल…आणि  नक्कीच मजा येईल.. काही तरी ग्रेट ऑपरेटिंग वापरात असल्याचा फील तर निर्विवाद ..!!!

लिनक्स च्या काही महत्त्वाच्या लिंक्स:

1] www.kernel.org  :या लिंक वर लिनक्सचा सोर्स दिलेला असतो.

याच्या वरती लिनक्स चे स्टेबल व्हर्जन दिलेले असेल ते पण डाऊनलोड करून आपल्या सिस्टीम वर सेव्ह करू शकता.[उदा: 3.8.3 हे आत्ताचे स्टेबल व्हर्जन आहेते दर वेळी अपडेट होत असते.]

२]www.lkml.org : ही लिनक्स ची ऑफिशियल मेलिंग लिस्ट आहे.यात आपण भाग घेवू शकतो. आणि हवे ते आधीच्या मेल्स मधून शोधू शकतो.

या भागात काही शंका आल्यास वा कुठे अडल्यास नक्की विचारा MJ आहेच तुमच्या मदतीला…

[नोंद :मी दर आठवड्याला लिनक्सशी निगडीत एक पोस्ट लिहीत आहे आणि संपूर्ण लिनक्स प्रात्यक्षिकसह आपणसमोर सदर करणार आहे तेंव्हा आपणस अपडेट न चुकता मिळण्यासाठी आपला ई मेल आयडी ब्लॉगला subscribe करून नोंद करू शकता.]

माझा लिनक्स मराठीतूनहा प्रयोग कसा वाटला हे पण नक्की सांगा…मला सूचना ,सुधारणा व प्रतिक्रिया   ऐकायला आवडतील.

आपणास हा भाग कसा वाटला ते नक्की कळवा.

“लिनक्स मराठीतून “ च्या पुढील भागाला भेट देण्यासाठी येथे टिचकी मारा:

भाग १]लिनक्सची ओळख आणि उबुंटू इन्स्टॉलेशन.

भाग २]लिनक्सची जान आणि शान टर्मिनलची ओळख आणि vi एडीटर.

भाग 3]लिनक्स कर्नेल आणि डिव्हाईस ड्रायव्हर ची ओळख.

भाग ४]डिव्हाईस ड्रायव्हरचा हँलो वल्ड प्रोग्रम.

भाग ५]डिव्हाईस ड्रायव्हरचा पँरामिटर पासिंग व प्रोसेस संबन्धित प्रोग्रम.

भाग ६ ]कँरेक्टर डिव्हाईस ड्रायव्हर बेसिक

धन्यवाद -MJ :-)


Filed under: Linux Intro and Ubuntu installation, Linux Learing
Read full storyComments Off

५० ची नोट

पिँट्या – जर मला देवाने १०० रुपये दिले,

तर मी त्यातले ५० रुपये मंदिरात दान करणार….. .

(थोडा वेळ चालल्यानंतर त्याला ५० ची नोट मिळते).

.
.

. पिँट्या – काय देवा, माझ्यावर एवढा पण विश्वास नाही का, की आधीच ५० रुपये कापुन घेतले..


Filed under: एकच नंबर Tagged: गम्मत, जम्मत, जोक्स, थोडी गम्मत जम्मत, ब्लॉग, मराठी, मराठी जोक्स, मराठी ब्लॉग, मराठी विनोद, विनोद, blog, gammat, jammat, joke, jokes, marathi, marathi blog, marathi joke, marathi jokes, marathi vinod, thodi gammat jammat, thodigammatjammat, vinod, wordpress, wordpress blog
Read full storyComments Off

laptop

गण्या दारु पिउन
घरी येतो..

वडिलांना संशय येऊ नये
म्हणून laptop उघडून
बसतो..

थोड्या वेळाने,

वडील- गण्या, दारू पिऊन
आलायस का?

गण्या- नाही हो..!!

वडील- मग
माझी suitcase उघडून
काय type करतोयस?


Filed under: एकच नंबर Tagged: गम्मत, जम्मत, जोक्स, थोडी गम्मत जम्मत, ब्लॉग, मराठी, मराठी जोक्स, मराठी ब्लॉग, मराठी विनोद, विनोद, blog, gammat, jammat, joke, jokes, marathi, marathi blog, marathi joke, marathi jokes, marathi vinod, thodi gammat jammat, thodigammatjammat, vinod, wordpress, wordpress blog
Read full storyComments Off

बास्केट – लंच

एक जोडप चित्रपट पाहायला जाते,

तेथे लहान मुलांना लहान मुलांना चित्रपट बघायची परवानगी नसते .

ते जोडपे त्यांच्या लहान मुलाला बास्केट मध्ये लपवतात.

वाचमनने त्यांला विचारतो : या बास्केट मध्ये काय आहे?

जोडपे:- यात लंच आहे.

वाचमन :- सांभाळून न्या ,

डाळ बाहेर सांडत आहे.


Filed under: पांचट Tagged: गम्मत, जम्मत, जोक्स, थोडी गम्मत जम्मत, ब्लॉग, मराठी, मराठी जोक्स, मराठी ब्लॉग, मराठी विनोद, विनोद, blog, gammat, jammat, joke, jokes, marathi, marathi blog, marathi joke, marathi jokes, marathi vinod, thodi gammat jammat, thodigammatjammat, vinod, wordpress, wordpress blog
Read full storyComments Off

घोर कलियुग

एक गर्लफ्रेंन्ड तिच्या आंधळ्या बॉयफ्रेन्ड ला : तुझे
डोळे असते तर तू पहिलं,असतं मी किती सुंदर आहे :D
.
. .
.
.
.
बॉयफ्रेंन्ड : खरचं जर सुंदर असती तर
डोळे असणार्यांनी तुला माझ्यासाठी सोडलचं
नसतं…..
.
.
.
आंधळा आहे…..वेडा नाही मी…


Filed under: पांचट Tagged: गम्मत, जम्मत, जोक्स, थोडी गम्मत जम्मत, ब्लॉग, मराठी, मराठी जोक्स, मराठी ब्लॉग, मराठी विनोद, विनोद, blog, gammat, jammat, joke, jokes, marathi, marathi blog, marathi joke, marathi jokes, marathi vinod, thodi gammat jammat, thodigammatjammat, vinod, wordpress, wordpress blog
Read full storyComments Off