BOSS MOOL
MOOL (Minimalistic Object Oriented Linux) aims at redesigning the Linux kernel to reduce coupling and increase maintainability by means of OO (Object Oriented) abstractions.
Linux kernel is one of the most popular and widely used open source operation systems. It has been developed in a procedural manner with the primary focus on the system performance. As a side effect, there are maintainability issues arising due to high coupling in the kernel. The entire kernel source code can be divided into two parts : the core kernel and the device drivers. Given Linux kernel popularity, it is deployed on a wide range of machines and supports numerous hardware devices. The device drivers constitute the majority of the kernel code and are also responsible for the majority of the kernel bugs that are found. MOOL Kernel has been developed at DOS ( Distributed and Object Systems) Lab, IIT, Madras. MOOL features a device driver framework to write drivers in C++ and insert them as loadable kernel modules.
DOS Lab at IIT Madras and CDAC Chennai have integrated the MOOL kernel into BOSS MOOL distribution. BOSS MOOL supports C++ device drivers. This feature is a new offering of BOSS to the Linux community.Further, the BOSS-MOOL Kernel supports localisation at Console level, which hitherto was not available on any flavors of LINUX.The students can also develop Message filters. Message filters work by intercepting system calls, built using object-oriented wrappers which provide better maintainability and extensibility, without modifying the existing kernel code. Placing them at the system call level disturbs very little of the kernel code.Filters are developed as kernel modules, so they can be dynamically added at runtime. When a user makes a system call, it is forwarded transparently to the filter which in-turn will call the actual system call. The users and applications are not aware of the presence of filter model, as there is no change to the user interface. Hence this design provides a transparent way of intercepting messages for the kernel.
For example, the filters can perform biometric verification by adding face recognition or finger print recognition algorithm as policies.
Advantages of Message Filters:
- The message filter model can be used for real time monitoring. One direct application is to build an intrusion detection system that monitors and filters the interactions with the kernel.
- Message filters are in the kernel space. Hence they are safe from manipulations by normal users.
- It provides an ability to add and enforce variety of security policies.
- It also allows implementation of policies in form of (object oriented) code instead of only a static policy data (e.g. policy file written in a DSL or XML).
- Since the model is developed in an object-oriented way abstracting the core functionality of the kernel, adding extensible and maintainable kernel extensions is made easier.
- It can be used to handle device driver failures and protect kernel against exploitation of bugs in the code.
To become a partner with BOSSMOOL
CDAC, Chennai and IIT Madras jointly works to evangelize BOSS MOOL in engineering colleges and universities.MOUs have been signed with the following universities:
- Jawaharlal Nehru Technological University, Kakinada (JNTUK)
- Jawaharlal Nehru Technological University, Ananthapur (JNTU A)
- Bharath University, Chennai
- National Institute of Technology (NIT), Trichy
- Vels University
- Bharath University
- B.S.Abdur Rahman University (BSAU)
- Coimbatore Institute of Technology (CIT)
Once the college signs the MOU, CDAC would Establish the Complete Foss lab ( BOSS – MOOL ) with the help of the Lab Assistant for migration of Entire Client and Server Machines to BOSS-MOOL. CDAC shall provide training on BOSS-MOOL to the Network administrators of the colleges.
Click here to download the MOU template. Fill the necessary details, sign and send the scanned copy of MOU to CDAC Chennai.
Tutorial
Currently tty drivers for Indian languages are being written in C++ for BOSS-MOOL kernel. Apart from the language drivers, the following drivers are selected to be redesigned in C++.
Drivers
Ethernet | Wireless | TTY Drivers | Block Drivers | Character Drivers |
intel | b43 | vt | loop | hpet |
dlink | b43legacy | serial | brd | pcmcia |
broadcom | hostap | nbd | ||
cisco | brcom80211 | |||
realtek |
We welcome any contribution towards fulfillment of a C++ device driver repository. Please post your driver code here.
A small tutorial on writing C++ modules in MOOL kernel is given below.
Tutorial
- Install the BOSS-MOOL distribution using standard Linux system installation procedure.
- Download the tarball of sample C++ driver and compilation scripts from here.
- Extract the items from the tarball
- Change LINUX_HOME variable in script.sh to point to the BOSS-MOOL installation directory.
- Compile the C++ driver by running script.sh. A loadable kernel module file hello_imp.ko will be generated.
- Insert the kernel module as root or with sudo:
- $sudo insmod hello_imp.ko
- Check the dmesg for the message:
$dmesg Constructor is being called [51444.022662] Hello world!! [51444.022664] Module inserted: To remove the module: $sudo rmmod hello1_imp [51535.572623] Module removed: