Open source software. Open Operating Systems for the Internet of Things

Over the past decade, a large number of open source OS projects have moved from the mobile market to the "Internet of Things". In this article, we will look at which of the open projects are aimed at IoT (Internet of Things).

Keep in mind that almost all modern open source operating systems claim to some extent that they are suitable for use in the IoT. But we will only look at those that really pay attention to such things as: low memory consumption, high energy efficiency, modular and customizable communication stack, and strong support for wireless and sensor technologies. Also, some projects emphasize their developments in the field of IoT security and real-time. Realtime can be really important in the industrial IoT, although it is almost useless in the domestic one.

We will not consider the so-called lightweight distributions here, even if they are really lightweight, but do not set themselves IoT tasks, but are limited to normal use in ordinary workstations.

Also, we will not look towards Windows 10 for IoT Core. Although this project is capable of performing tasks inherent in IoT, it has nothing to do with open source.

So, let's begin.

OS based on Linux

Brillo is a Google development, which is a lightweight Android and which has gained some popularity over the year of its existence. For example, it is used on the Intel Edison and Dragonboard 410c. However, this OS is tied to the Weave protocol, which is developed by Google and is not used anywhere else. The system is capable of running on hardware with 32MiB RAM and 128MiB flash.

Huawei LiteOS - Huawei's LiteOS is based on Linux, but there isn't much left of Linux. They started talking about the system about a year ago and it is claimed that the kernel can be as small as 10KB. LiteOS can be used on a wide range of hardware from MCU devices to Android devices. Key features: trivial setup, automatic detection of anything and everything, wide support for a variety of networks (including LTE and mesh networks), fast loading.

OpenWrt /LEDE/Linino/DD-Wrt is a well-known project, most in demand on routers and other MIPS network equipment. Given the initial network sharpness, he could not get past the IoT. These forks have no fundamental differences from each other and were born due to the NIH syndrome or organizational squabbles.

Ostro Linux is based on the Yocto Project (to be discussed separately) and became famous after Intel chose it for the Intel Joule based on the Atom SoC T5700. Ostro Linux is compatible with IoTivity, supports many wireless technologies, and provides a framework for working with a variety of sensors. Particular attention is paid to security, including cryptography.

Raspbian - Debian tailored to run on the Raspberry Pi. And although there are other distributions for Raspberry that are more focused on the nuances of IoT, it was Raspbian that became the de facto standard for DIY projects based on the Raspberry Pi.

Snappy Ubuntu Core is a snappy version of Ubuntu Core. Canonical claims that this system is capable of running on "any Linux desktop, server, cloud or device". In principle, it can work on Raspberry Pi, but in general it requires 600MHz CPU, 128MiB RAM, 4GiB flash. Quite widely used. For example: Erle-Copter drones, Dell Edge Gateways, Nextcloud Box, and LimeSDR.

Tizen - developed with the support of Samsung. It was originally planned as an OS for smartphones, but something went wrong and now you can only find it on TVs and the so-called. smart watch. The project is not going to die, but its future is not clear either. Able to start on the "raspberry".

uClinux is the only more or less sane and widespread version of Linux capable of running on microcontrollers. But so far only on some: Cortex-M3, M4, and M7. Yes, and there you need to connect an external RAM to work.

The Yocto Project is not a distribution, but a set of utilities, templates, and methods maintained and developed by the Linux Foundation for developing embedded distributions. A very successful project, which is the basis for most successful commercial distributions tailored for IoT.

Some Notable Non-Linux Distributions

Apache Mynewt - developed by Runtime for 32-bit microcontrollers with the support of the Apache Software Foundation. It is distinguished by good support for wireless connections, extensive debugging options and fine tuning of power consumption. It is supposed to be available for Arduino soon.

ARM Mbed is aimed at low power, battery powered boards based on Cortex-M microcontrollers. 8KiB of RAM is enough to work. First appeared on the BBC Micro:bit SBC. Initially, it was a single-threaded semi-proprietary piece of blob, but now it is a project open under the Apache 2.0 license with multi-threading and real-time support.

Contiki - Can't compete with Tiny OS or RIOT OS, but requires only 10KiB RAM and 30KiB flash to run, works great with wireless, and is IPv6 friendly. The OS is accompanied by an impressive set of utilities for development and testing, including Cooja Network Simulator for debugging wireless networks. The main "trick" - low memory consumption.

FreeRTOS is Linux's main competitor among embedded platforms. And although it has problems with drivers, user accounts and other nice things from the world of full-fledged OS, it is able to work on 1KiB of memory and 5-10 KiBROM. Although full networking with normal TCP/IP requires 24KiB RAM and 60KiB flash.

Fuchsia is another development from Google. There is little data, but the company claims that their OS can compete with FreeRTOS. Bring your own buckets for noodles. A rake for removing noodles from the ears is also not issued. We are waiting for the marketers to shut up and the techies to start talking.

Minoca - the code is open under the GPLv3 license. Assemblies are prepared for x86, ARMv6 and ARMv7 architectures, including boot images for Raspberry Pi 2, Raspberry Pi, BeagleBone Black, Asus C201, PandaBoard and Galileo boards, as well as an emulator based on QEMU. The system is modular - the subsystems of the kernel are separated from each other, and the interaction with the hardware is abstracted. Device drivers are not tied to the kernel and are packaged as universal executable files that do not depend on the kernel version. 5 MiB RAM is enough to run.

NuttX is widely used among developers of quadcopters and other drones. BSD license. Works on x86, Cortex-A5, -A8 and Cortex-M MCU. It is positioned by the developers as "looks almost like Linux with only reduced features."

RIOT OS - for 8 years now, this OS has been known for its energy efficiency and the widest support for wireless networks. 1.5KiB RAM and 5KiB flash are enough to work, which is almost the same as Tiny OS. At the same time, the system offers multithreading, memory management, partial POSIX compatibility and other things that are more typical for Linux than for lightweight RTOS. By the way, you can develop under this OS from under Linux or OS X.

TinyOS - this OS is developed under the BSD license and requires the least amount of resources from all sane systems. The system is written in a C dialect called nesC. Primary Application: Low-performance microcontrollers, although Cortex-M3 support is currently being worked on.

Zephyr - Developed by the Linux Foundation and consumes 2-8KiB of RAM. Works on x86, ARM, ARC, but focuses on Bluetooth/BLE MCUs and 802.15.4 radios like 6LoWPAN. Zephyr is based on River's Rocket OS, which in turn is based on Viper, which is nothing more than a stripped-down version of VxWorks.

Tags: Add tags

In addition to Android, we probably know about the existence of iOS and Windows Phone. Somewhere far away there is BlackBerry OS, and Symbian has remained in the past. This is what is heard, however, there are several operating systems that are much less known, but still worthy of attention. Like Android, they are built on the Linux kernel and are open source. However, this did not help them achieve the same success.

Ubuntu Phone

Canonical developed out of a desire to standardize everything around. Like Windows, which automatically adapts to your computer after installation, Ubuntu is ready to adapt to any device, be it a smartphone, tablet, TV or computer. Depending on the type of device, the OS itself will adjust to the screen size and type of data input.

Ubuntu Phone users can simply connect their smartphone to their computer and use the desktop version of Ubuntu on the computer screen. In this, the ideology coincides a bit with Microsoft, which wants to blur the lines between mobile and desktop OS, as well as applications for them.

HP webOS

WebOS was originally owned by Palm, but HP bought Palm in 2010. HP had big plans for webOS, planned to release a smartphone, tablet, printer, and even a computer running this OS. The HP TouchPad tablet was launched, but it couldn't compete with the iPad and the idea didn't go any further.


Later, LG used the capabilities of webOS in their smart TV, and it turned out to be a good idea. webOS, despite its unpopularity, has some interesting features that can still be sold.

Samsung Tizen

Tizen is built on the Linux kernel, and the interface of this OS completely copies Samsung's TouchWiz. In other words, there is nothing unfamiliar in this system and at the same time . Today, some Samsung smartwatches run on this OS, but the company does not have big plans for it. They have a problem attracting developers, and without applications, Tizen is useless.

Jolla Sailfish

This OS has a long and interesting history. Once Nokia was working on Maemo devices built on Linux. Maemo later became part of the MeeGo OS platform, which was owned by Intel. The only smartphone released on MeeGo was Nokia N9, and it was popular among developers. However, before the deal with Microsoft, the MeeGo project was closed, and the company concentrated on Windows Phone.

Most of the MeeGo team left the company and started their own, called Jolla. All rights to MeeGo remained with Nokia, and they were forced to create their own based on the MeeGo source codes. This OS can work with both Qt applications and Android applications.

Amazon Fire

Amazon Kindle tablets use what Amazon calls Fire OS. It's actually Android, a version of AOSP that Amazon has worked hard on. Finding out in Fire OS Android is simply impossible. At the same time, it works with Android applications, only you need to download them not from Google Play. Amazon does not use Google services, selling content through its own store, and it is quite large.

Firefox OS

Mozilla has been trying to create its own solution for smartphones for a long time. What they have is built on Gecko and the Firefox browser. All applications for Firefox OS support modern web technologies such as HTML 5. Mozilla believes that the era of native applications is gone, and the future belongs to web applications. So did Steve Jobs when he launched the iPhone.

Nokia X

Microsoft is working on this platform. It is a mixture of Android and Windows Phone, but it is still built on Android. Smartphones on this platform have not met with much love from users due to the lack of services from Google, but are sold due to their low cost.

According to EFY Times

  • Development for the Internet of Things
  • Over the past decade, a large number of open source OS projects have moved from the mobile market to the "Internet of Things". In this article, we will look at which of the open projects are aimed at IoT (Internet of Things).

    Keep in mind that almost all modern open source operating systems claim to some extent that they are suitable for use in the IoT. But we will only look at those that really pay attention to such things as: low memory consumption, high energy efficiency, modular and customizable communication stack, and strong support for wireless and sensor technologies. Also, some projects emphasize their developments in the field of IoT security and real-time. Realtime can be really important in the industrial IoT, although it is almost useless in the domestic one.

    We will not consider the so-called lightweight distributions here, even if they are really lightweight, but do not set themselves IoT tasks, but are limited to normal use in ordinary workstations.

    Also, we will not look towards Windows 10 for IoT Core. Although this project is capable of performing tasks inherent in IoT, it has nothing to do with open source.

    So, let's begin.

    OS based on Linux

    Brillo is a Google development, which is a lightweight Android and which has gained some popularity over the year of its existence. For example, it is used on the Intel Edison and Dragonboard 410c. However, this OS is tied to the Weave protocol, which is developed by Google and is not used anywhere else. The system is capable of running on hardware with 32MiB RAM and 128MiB flash.

    Huawei LiteOS - Huawei's LiteOS is based on Linux, but there isn't much left of Linux. They started talking about the system about a year ago and it is claimed that the kernel can be as small as 10KB. LiteOS can be used on a wide range of hardware from MCU devices to Android devices. Key features: trivial setup, automatic detection of anything and everything, wide support for a variety of networks (including LTE and mesh networks), fast loading.

    OpenWrt /LEDE/Linino/DD-Wrt is a well-known project, most in demand on routers and other MIPS network equipment. Given the initial network sharpness, he could not get past the IoT. These forks have no fundamental differences from each other and were born due to the NIH syndrome or organizational squabbles.

    Ostro Linux is based on the Yocto Project (to be discussed separately) and became famous after Intel chose it for the Intel Joule based on the Atom SoC T5700. Ostro Linux is compatible with IoTivity, supports many wireless technologies, and provides a framework for working with a variety of sensors. Particular attention is paid to security, including cryptography.

    Raspbian - Debian tailored to run on the Raspberry Pi. And although there are other distributions for Raspberry that are more focused on the nuances of IoT, it was Raspbian that became the de facto standard for DIY projects based on the Raspberry Pi.

    Snappy Ubuntu Core is a snappy version of Ubuntu Core. Canonical claims that this system is capable of running on "any Linux desktop, server, cloud or device". In principle, it can work on Raspberry Pi, but in general it requires 600MHz CPU, 128MiB RAM, 4GiB flash. Quite widely used. For example: Erle-Copter drones, Dell Edge Gateways, Nextcloud Box, and LimeSDR.

    Tizen - developed with the support of Samsung. It was originally planned as an OS for smartphones, but something went wrong and now you can only find it on TVs and the so-called. smart watch. The project is not going to die, but its future is not clear either. Able to start on the "raspberry".

    uClinux is the only more or less sane and widespread version of Linux capable of running on microcontrollers. But so far only on some: Cortex-M3, M4, and M7. Yes, and there you need to connect an external RAM to work.

    The Yocto Project is not a distribution, but a set of utilities, templates, and methods maintained and developed by the Linux Foundation for developing embedded distributions. A very successful project, which is the basis for most successful commercial distributions tailored for IoT.

    Some Notable Non-Linux Distributions

    Apache Mynewt - developed by Runtime for 32-bit microcontrollers with the support of the Apache Software Foundation. It is distinguished by good support for wireless connections, extensive debugging options and fine tuning of power consumption. It is supposed to be available for Arduino soon.

    ARM Mbed is aimed at low power, battery powered boards based on Cortex-M microcontrollers. 8KiB of RAM is enough to work. First appeared on the BBC Micro:bit SBC. Initially, it was a single-threaded semi-proprietary piece of blob, but now it is a project open under the Apache 2.0 license with multi-threading and real-time support.

    Contiki - Can't compete with Tiny OS or RIOT OS, but requires only 10KiB RAM and 30KiB flash to run, works great with wireless, and is IPv6 friendly. The OS is accompanied by an impressive set of utilities for development and testing, including Cooja Network Simulator for debugging wireless networks. The main "trick" - low memory consumption.

    FreeRTOS is Linux's main competitor among embedded platforms. And although it has problems with drivers, user accounts and other nice things from the world of full-fledged OS, it is able to work on 1KiB of memory and 5-10 KiBROM. Although full networking with normal TCP/IP requires 24KiB RAM and 60KiB flash.

    Fuchsia is another development from Google. There is little data, but the company claims that their OS can compete with FreeRTOS. Bring your own buckets for noodles. A rake for removing noodles from the ears is also not issued. We are waiting for the marketers to shut up and the techies to start talking.

    Minoca - the code is open under the GPLv3 license. Assemblies are prepared for x86, ARMv6 and ARMv7 architectures, including boot images for Raspberry Pi 2, Raspberry Pi, BeagleBone Black, Asus C201, PandaBoard and Galileo boards, as well as an emulator based on QEMU. The system is modular - the subsystems of the kernel are separated from each other, and the interaction with the hardware is abstracted. Device drivers are not tied to the kernel and are packaged as universal executable files that do not depend on the kernel version. 5 MiB RAM is enough to run.

    NuttX is widely used among developers of quadcopters and other drones. BSD license. Works on x86, Cortex-A5, -A8 and Cortex-M MCU. It is positioned by the developers as "looks almost like Linux with only reduced features."

    RIOT OS - for 8 years now, this OS has been known for its energy efficiency and the widest support for wireless networks. 1.5KiB RAM and 5KiB flash are enough to work, which is almost the same as Tiny OS. At the same time, the system offers multithreading, memory management, partial POSIX compatibility and other things that are more typical for Linux than for lightweight RTOS. By the way, you can develop under this OS from under Linux or OS X.

    TinyOS - this OS is developed under the BSD license and requires the least amount of resources from all sane systems. The system is written in a C dialect called nesC. Primary Application: Low-performance microcontrollers, although Cortex-M3 support is currently being worked on.

    Zephyr - Developed by the Linux Foundation and consumes 2-8KiB of RAM. Works on x86, ARM, ARC, but focuses on Bluetooth/BLE MCUs and 802.15.4 radios like 6LoWPAN. Zephyr is based on River's Rocket OS, which in turn is based on Viper, which is nothing more than a stripped-down version of VxWorks.

    Tags:

    • IoT
    • embedded
    Add tags

    Open source software is a method of software development in which the generated source code of programs is open, that is, publicly available for viewing and modification. This allows everyone to use the already created code for their own needs and, perhaps, help in the development of an open source program.

    An "open" license does not require the software to always be provided free of charge. But many of the most successful open source projects are free nonetheless.

    Overwhelming majority open programs is at the same time free(GNU GPL) and vice versa, because the definitions of open source and free software are close, and most licenses match both.

    difference between movements open source and free software is mainly about priorities. Open source advocates focus on efficiency of open source programs as a development method. Proponents of free software proceed from ideological considerations, and believe that it is precisely rights distribution, modification and study of programs are the main advantage free software.

    OS Microsoft Windows

    Rice. 39. OC Windows logo.

    MS Windows (pronounced Windows) is a family of operating systems from Microsoft. Head of Microsoft Corporation - Bill Gates.

    Since 1995, Windows has been the most popular operating system on the personal computer market - the de facto standard. By 2005, Microsoft Windows was installed on more than 89% of personal computers.

    However, many users have opted for Windows as they are not at all familiar with alternatives such as MacOS, Linux, BSD. In Russia, until the early 2000s, almost all personal computers were sold with a preinstalled Windows operating system. The fight against the distribution of pirated versions of software products has led to the emergence of interest in other operating systems. So, for example, it became possible to purchase a personal computer with a preinstalled Free Linux OS.

    Windows version release history


    1. Windows 1.0 (1985)

    2. Windows 2.0 (1987)

    3. Windows/386 (1987)

    4. Windows 3.0 (1990)

    5. Windows 3.1 (1992)

    6. Windows NT 3.1 (1993)

    7. Windows NT 3.5 (1994)

    8. Windows 95 (1995)

    9. Windows NT 4.0 (1996)

    10. Windows 98 (1998)

    11. Windows 2000 (2000)

    12 Windows Me (2000)

    13. Windows XP (2001)

    14. Windows 2003 (2003)

    15. Windows Vista (2007)

    16. Windows working title Vienna (2010)


    Integrated software products and application software

    The Microsoft Windows operating system includes standard applications such as Internet Explorer browser, Outlook Express mail client, Windows Media Player.

    There is a lot of controversy and discussion surrounding the fact that such standard products are included in the Windows operating system, as this creates a serious obstacle to the distribution of competing products.

    Rice. 40. MS Office package logo.

    For MS Windows there is a very convenient and mastered by most users Microsoft Office application suite, including:

    word processor MS Word,

    spreadsheet processor MS Excel,

    Organizer MS Outlook,

    Application for preparation of presentations MS PowerPoint,

    Database management application MS Access.

    Do not forget that both Windows and the vast majority of popular Windows applications have a copyright license, i.e. are proprietary ON. Accordingly, each copy of such a program must be purchased for money. For example, at the end of 2006 the price for Windows XP Home Edition Russian BOX (SP2) was $185, Office 2003 Russian CD was $322.

    By using unlicensed (pirated) software protected by a copyright license, you violate copyright laws.

    GNU/Linux OS

    Rice. 41. The logo of the GNU/Linux OS is the Tux penguin.

    The GNU/Linux operating system (pronounced "gnu linux") is a free UNIX-like operating system. Usually, for historical reasons and for brevity, this system is simply called "Linux". It is the most powerful alternative to MS Windows, popular as a server operating system and rapidly gaining popularity as a desktop operating system in recent years, due to increased enforcement of licensed use of Windows OS by Microsoft in XP and Vista versions.

    The GNU/Linux operating system also often includes programs that complement this operating system, and application programs that make it a full-fledged multifunctional operating environment.

    Unlike most other operating systems, GNU/Linux does not come with a single "official" bundle. Instead, GNU/Linux comes in a large number of so-called distributions, which links GNU programs to the Linux kernel and other programs. The most common distributions in the world:

    American red hat and his successor Fedora Core;

    Deutsch SuSE;

    French Mandriva(former Mandrake);

    Nationalless international distribution Debian GNU/Linux;

    One of the oldest distributions Slackware;

    Relatively young and actively developing distribution Gentoo;

    Young but promising distribution ubuntu linux.

    Creator of the Linux kernel - Linus Torvalds. GNU/Linux does not have a geographic development center. There is no organization that owns this system; there is not even a single coordinating center. Programs for GNU/Linux are the result of thousands of projects. Some of these projects are centralized, some are concentrated in firms, but most bring together programmers from around the world who know each other only through correspondence. Anyone can create their own project or join an existing one, and, if successful, the results of the work will become known to millions of users. Users take part in testing free software, communicate directly with developers, which allows them to quickly find and fix bugs and implement new features.

    In the server operating system market in Australia, Linux has already taken about 30%. The Australians were followed by the Brazilians. The Brazilian government has decided to move away from spending money on software and move from Microsoft products to open source systems, in particular the Linux operating system. The main reason for the changes is economic. In our country, the Linux market is still small.

    File system

    All information in the computer is stored in files, with which the operating system works.

    File(file)- is a named sequence of bytes, a place of permanent storage of various types of information.

    Files are organized in directories, also called directories or folders. Catalog is a file that stores information about other files: name, size, creation date, file address on disk.

    Any directory can contain an arbitrary number subdirectories, each of which can store files and other directories.

    Each disk has a master or root directory, which contains all other directories, called subdirectories, and some files. Thus, it creates hierarchical structure. The directory the user is currently working with is called current.

    Files and directories are the most important objects in a file system. File system- a regulation that defines the method of organization, storage and naming of data on media. It defines the format for the physical storage of files. A particular file system determines the size of a file name, the maximum possible file size, a set of file attributes.

    The way data is organized into bytes is called file format. In order to read a file, such as a spreadsheet, you need to know how the bytes represent the numbers (formulas, text) in each cell; to read a text editor file, one must know which bytes represent characters and which fonts or fields, and other information.

    All files can be conditionally divided into two parts - text and binary.

    Text files- the most common type of data in the computer world. To store each character, one byte is most often allocated, and encoding of text files is performed using special encoding tables.

    But pure text files are becoming rarer. People want documents to contain pictures and diagrams and use different fonts. As a result, formats appear that are various combinations of textual, graphical and other forms of data.

    Binaries, unlike text ones, it is not so easy to view and, as a rule, there are no words familiar to us in them - only a lot of incomprehensible characters. These files are not intended to be directly readable by humans. Examples of binary files are executable programs and graphics files.

    Each file on the disk is labeled ( full name), which consists of 2 parts: name and extensions, separated by a dot.

    File name extension- an optional sequence of characters added to the file name and intended to identify the type (format) of the file. This is one common way that a user or computer software can determine the type of data stored in a file.

    In early operating systems, the length of the extension was limited to three characters, in modern operating systems this restriction is not.

    The operating system or file manager can map file extensions to applications.

    When a user opens a file with a registered extension, the program corresponding to that extension is automatically launched. Some extensions indicate that the file itself is a program. Often, the file extension is displayed to the user with an icon.

    Drivers

    A variety of devices can be interfaced with a PC: a video card, a sound card, a printer, a scanner, manipulators, disk drives, digital cameras, cell phones ... Each of them has its own set of commands - its own "language". In order for a specific operating system to control a specific device, they resort to the help of “translator” programs that know, on the one hand, the command language of a specific device, and on the other hand, the language of a specific operating system under which this device should work.

    Such a program is called driver(driver) and is supplied with the device by its manufacturer. Hardware manufacturers typically also post device drivers they create on their websites.

    All modern digital devices run on a specific operating system. For example, it can be Windows or Linux, and for smartphones and tablets - Android and iOS.

    Operating systems are either open or closed. The term "open operating system" refers to an open source system. This code is open for editing, and any user can change it (naturally, within the framework of the license and the law). A closed operating system does not allow you to "dig" into its source code.

    Open operating systems are usually free, develop very quickly, and can be fine-tuned for any device. And all because any user who understands this at least a little can fix errors in the system, write drivers, etc. Errors in closed operating systems are fixed only by service packs that are released by the official developers of this OS.

    Examples of open and closed OS

    An example of an open operating system for smartphones and tablets is Google Android. This OS allows the user to do whatever he wants - rewrite some drivers, add support for new functions, etc. But the Windows Phone operating system is considered closed, and does not give users any right to interfere. They only need to periodically install service packs, buy programs or use free ones.

    There are also conditionally open operating systems - iOS and Symbian. In such operating systems, nothing can be changed either, but you can write programs for them using special software provided by developers. The most popular operating systems for smartphones are Google Android and iOS. For an ordinary user who does not create new programs, the difference between these operating systems will be only in the interface.

    When it comes to computer operating systems, Windows is considered a closed operating system, while Linux is an open one. Naturally, you can only change Linux for yourself. There is another operating system - Mac OS, which is very similar in architecture to Linux, but it is considered a closed OS.

    As for the choice of OS for use, then each user decides for himself. For example, in closed operating systems, the probability of catching a virus is much higher, and in this case, you will have to wait until the developers fix the hole in the system with the next service pack. In addition, Windows and Mac OS are paid operating systems, while Linux is freely available to everyone.