Embedded-Linux-Device-Driver/C2/Loading-and-Unloading-a-Module/English
Visual cue | Narration |
Slide 1:
Welcome slide: |
Welcome to the spoken tutorial on Loading and Unloading a Module. |
Slide 2:
Learning objectives:
|
In this tutorial, we will learn how to use,
|
Slide 3:
System Requirements:
|
To record this tutorial, I am using,
|
Slide 4:
Prerequisites: |
To follow this tutorial, you should be familiar with:
If not, then go through the C/C++ and Linux spoken tutorials on this website |
Open the terminal
Type >> cd DeviceDriver |
Open the terminal by pressing ALT+Ctrl+T keys simultaneously.
Press the Enter key after every command. Go to the folder where simple_module dot c is saved. |
Type >> make all
Press Enter |
Remember, we have used make clean command earlier.
To compile the module again, type make space all. |
Type sudo su
Press Enter Enter the password |
Type sudo space su
Enter the password of the system. |
Let us now load the module simple_module dot c. in the kernel using insmod tool. | |
Type >> insmod simple_module.ko
Highlight insmod |
Type insmod space simple_module dot ko.
The insmod tool loads a module into the kernel. |
Type >> clear | Clear the screen. |
Type lsmod | head -5
Press Enter Highlight lsmod |
Let us check whether a module is loaded into the kernel or not.
Type lsmod space pipe space head space hyphen 5. We know lsmod command shows the list of modules loaded in the current kernel. So this command displays the first five modules of the list. |
Type >> man pipe
Press Enter |
To know more about Linux command go through the man page as shown.
Type man space pipe |
|
Here, you get more information about pipe command.
Likewise, explore the command head to know more. Press ‘q’ to exit. |
Show the output
Highlight simple_module Highlight 16384 |
Here, you can see the name of the module in this list.
It shows memory utilised by this module. It indicates that the module is loaded into the kernel successfully. |
Type >> clear | Clear the screen. |
Type >> dmesg | grep my_module
Press Enter Highlight dmesg Highlight grep my_module Highlight dmesg | grep my_module |
Type dmesg space pipe space grep space my_module.
It displays messages from kernel log buffer. The grep command is used to search for lines matching a specified pattern. It displays the messages containing the string my_module in the simple_module.c |
Highlight my_module : inside the init function of our module | Here, dmesg prints the message from init function of a module.
As a module is loaded into the kernel, only init function is executed. |
Type >> clear | Clear the screen. |
Now let us see how to unload a module from the kernel. | |
Type rmmod simple_module.ko
Press Enter Highlight rmmod |
Type rmmod space simple_module dot ko.
This tool unloads a module from the kernel. Let us check this. |
Type >> lsmod | head -5 and press Enter
Show the output |
Type lsmod space pipe space head space hyphen 5.
Now, you can see the module name has disappeared from this list. It indicates that the module is unloaded from the kernel successfully. |
Type >> clear | Clear the screen. |
Type >> dmesg | grep my_module
Press Enter. Show the output Highlight Inside the exit function of our module |
Let us see the printk messages of a module.
Type dmesg space pipe space grep space my_ module Now, you can see the messages from exit function also. As a module is unloaded from the kernel, exit function is executed. |
Type >> clear
Press Enter |
Clear the screen. |
Let us see the use of the depmod command. | |
Type >> man 8 depmod
Press Enter |
for that, type man space 8 space depmod.
It creates a dependency file named modules.dep. This dependency file is later used by modprobe tool. You can get more information about depmod from it’s manpage. Press ‘q’ to exit. |
Let us see the use of the modprobe tool. | |
Type >> man 8 modprobe
Press Enter |
Type man space 8 space modprobe.
The modprobe tool intelligently adds or removes a module from the kernel. Some modules depend on other modules. This tool automatically loads and unloads its dependent modules. You can get more information about modprobe tool from it’s manpage The modprobe expects an up-to-date modules dot dep file generated by the depmod. |
Press q | Press ‘q’ to exit. |
Type >> clear
Press Enter |
Clear the screen. |
Type >> insmod simple_module.ko
Press Enter |
Let us now load a module in the kernel again.
Type insmod space simple_module dot ko |
Type >> lsmod | head -5
Press Enter |
Let us check a module is loaded into the kernel or not.
Type lsmod space pipe space head space hyphen 5 As a module loaded into the kernel successfully, it appears here. |
Type >> clear
Press Enter. |
Clear the screen. |
Type >> readelf hyphen h simple_module.ko
Press Enter. Highlight .ko Highlight ELF Header. |
Let us see the ELF file of the module.
Type readelf space hyphen h space simple_module dot ko Here, the dot ko is an ELF file. Each ELF file is made up of one ELF header, followed by file data. The elf header describes the overall information of the module dot ko file. ELF means “Executable and Linking Format”. It is a standard executable file format in Linux. Clear the screen. |
Type >> objdump -f simple_module.ko
Press Enter Highlight -f Highlight simple_module.ko Highlight elf64-x86-64 Highlight i386:x86-64 Highlight start address |
Let us see the information about the object file
Type objdump space hyphen f space simple_module dot ko. The hyphen f option shows our module’s elf header. It shows the name of a module, the file format of a module file. It shows the architecture of our system, and the entry point function’s address. For more information, go through its manpage. |
Type >> clear
Press Enter |
Clear the screen. |
Type >> rmmod simple_module
Press Enter |
To unload the module from the kernel, type rmmod simple_module.ko |
Type >> make clean
Press Enter |
Type make space clean.
So all extra files will be removed from the present working directory. |
Type >> exit
Press Enter Type >> exit Press Enter |
To go back to regular user, type exit
To go back to user login, type exit. |
With this, we come to the end of this tutorial. Let us summarize. | |
Slide 5:
Summary: |
In this tutorial, we learnt how to use
|
Slide 6:
Assignment: |
As an assignment,
|
Slide 7:
|
|
Slide 8:
Spoken Tutorial workshops: |
The Spoken Tutorial Project Team conducts workshops and gives certificates.
For more details, please write to us. |
Slide 9:
Forum questions: |
Please post your timed queries in this forum. |
Slide 10:
Forum for specific questions: |
|
Slide 11
Acknowledgment: |
Spoken Tutorial project is funded by MHRD, Government of India. |
Slide 12:
Thank you slide: |
This tutorial has been contributed by FOSSEE and Spoken Tutorial Project, IIT Bombay.
This is Mayuri Panchakshari signing off. Thanks for watching. |