Overview and comparative testing of PC "Elbrus 401 ‑ PC". Part Two - Software

    We continue to review the new Russian computer of the original Elbrus architecture. In this part, we will focus on system and application software.

    Front and side view of the Elbrus 401-PC system unitView of the Habr page open in Firefox with news about the start of sales of Elbrus 401-PC

    We remind you that, due to the large volume, the material is divided into parts:

    1. hardware review :
      • acquisition process;
      • Hardware;
    2. software review:
    3. development tools overview :
      • architecture features;
      • machine language;
      • development tools;
    4. benchmarking performance :
      • Description of rival computers
      • benchmark results;
      • summarizing.

    Enjoy reading!

    System startup

    The boot program does not look like the BIOS (UEFI) POST and Setup from the x86 world, although it solves the same problem, and it has a user interface - in pure text mode, with a text menu or command line. But before the first messages appear on the screen, 25 seconds elapse. To observe the initialization process in detail from the very beginning, you need to connect to the RS ‑ 232 port (which of the two can be configured, as well as completely disable console access for input or output).

    System startup log in automatic mode ( fully on Pastebin , dmesg )

    BOOT started.
    BOOT E2S
    VERSION: release- ::::::::
    		(/tags/release- at revision 3816)
    BUILT BY neo
    TARGET: mono
    ON Nov 2 2015
    AT 18:05:37
    COMPILER: lcc: 1.17.12: Nov-27-2012: e2k-linux.cross: i386-linux
    		Thread model: posix gcc version 3.4.6 compatible.

    By pressing the Space bar when the appropriate prompt appears (45 seconds after power is supplied), you can interrupt the automatic loading of the system kernel and go to the main command menu, where the basic parameters of the bootloader are displayed or changed. By pressing the Tilda key, you can go from this menu to the command line interface, where you can fine-tune the hardware - from setting the date and time of day to setting the operating modes of peripheral controllers and the system bus. Although there is an option to force saving parameters in the menu, changes from the command line are saved automatically; in extreme cases, the settings can be reset using a jumper on the motherboard.

    Work log in the system menu ( fully on Pastebin )

     Press command letter, or press 'h' to get help
    : h
    'p' or 's' - load and Start file
    'c' - Change boot parameters
    'u' - show cUrrent parameters
    'd' - show Disks and partitions
    'm' - save params to NVRAM
    'b' - start Boot.conf menu
    '' ',' ~ '- enter enhanced cmd mode
    : `
     Enter command, 'help' to get help, or Esc to exit
    # set vga primary 1
    	[1] core: 0x0, link: 0x0, bus: 0x3, slot: 0x0, func: 0x0,
    	ven: 0x1002, dev: 0x6779, rev: 0x0, classcode: 0x30000 is selected!
    # boot
    boot # auto
    CPU # 00: Label 'auto' found, loading parameters
    Trying to load and start image with the following parameters:
    drive_number: '4'
    partition_number: '0'
    command_string: 'console = tty0 root = / dev / sda3 ........'
    filename: '/boot/image-033.6.57'
    initrdfilename: ''
    CPU # 00: Reading: File - '/boot/image-033.6.57', Drive - 4, Partition - 0

    Among other things, the possibility of activating and deactivating the Echelon-E trusted boot firmware module is noteworthy, although no board resembling traditional APDMDs has been installed on the computer. We could not find any intelligible information about such a device, with the exception of one note that claimed that it was a specialized version of the MDZ-Echelon product, which is a fully software development and uses standard computer hardware.

    Directly from the command line, without loading the operating system, you can run tests of the correct functioning of the equipment (System of test and diagnostic programs) - either those that are stored on disk and are accessible for starting from the operating system, or some others: it was not possible to figure out , since you need to specify the exact name of the executable file, and the documentation is missing.

    For the same reason, due to the lack of proper documentation, it was not possible to delve into the intricacies of controlling the bootloader of the operating system, or rather, how to load anything other than a regular system. After all, the same bootloader (SILO) is used here as on computers of the SPARC architecture - and there it is not supposed to work with a foreign set of instructions. The boot parameters themselves are intuitive: you need to specify the partition number and the name of the file with the kernel of the system, as well as the arguments for starting the kernel, the name of the file with the archive of auxiliary programs ( initrd , if necessary), the timeout for the user to cancel. These parameters are read from the file /boot/boot.confin the first partition of the disk specified from the command line; several sets of parameters can be defined in the file - by default, the one specified in the default directive is used , or to which the name “ auto ” is assigned . But what needs to be done to launch operating systems for x86 or x86‑64 architecture, transparent support of which is declared as one of the key features of Elbrus? Missing boot.conf fileon the Windows installation disc or the popular Linux distribution can be compensated by manual entry through the menu. And how to transfer control to a new bootloader that is not a Linux kernel? How to run at least the Linux kernel, if it is for x86? It did not work out without documentation: the case invariably ended in a hang-up at the moment of transfer of control from the loader to the kernel.

    Native bootloader configuration (boot.conf)

    default = auto
    timeout = 3
    label = auto
    partition = 0
    image = / boot / image-033.6.57
    cmdline = console = tty0 console = ttyS0,115200 consoleblank = 0
    	hardreset REBOOT root = / dev / sda3
    	video = DVI-D-1: 1024x768-24 @ 60 video = VGA-1: 1024x768-24 @ 60 fbcon = map: 10

    As for the standard kernels of the Elbrus operating system, the bootloader configuration file contains only one set of parameters, and they indicate the default kernel. In addition to it, there are two cores - with the suffixes “ nn ” and “ rt ”: judging by the configuration of the assembly of these cores, the first means “no NUMA” (a simplified version for uniprocessor systems; why not use it on a personal computer?), And the second is “real time” (Linux kernel extensions for task scheduling with a run-time limit). Without even superficial knowledge in these areas, the author finds it difficult to comment on the advantages or disadvantages of one or another alternative kernel.

    Regarding support for PPS and PTP
    Единственный знакомый параметр конфигурации — это включение поддержки PPS API (pulse per second) в ядре «rt», которая позволяет корректировать ход системных часов компьютера согласно внешнему синхроимпульсу, например, от приёмника GPS/ГЛОНАСС или от цезиевых часов, если у вас вдруг такие случайно завалялись. Вот только непонятно, как именно настроить эту синхронизацию: в отличие от FreeBSD, например, где всё начинает работать как бы само собой после пересборки ядра с нужным параметром и перенастройки NTPd на использование системной дисциплины, в Linux обычно требуются пляски с бубном вокруг утилиты ldattach, создающей виртуальное PPS-устройство на основе порта COM или LPT, — для этого нужны соответствующие драйверы в ядре или в отдельных модулях, а их здесь не видно.

    Встроенная сетевая карта тоже не проявила признаков аппаратной поддержки синхронизации времени: вывод утилиты ethtool касательно протокола PTP свидетельствовал об отсутствии подобных функций. В любом случае, — что при использовании ядра по умолчанию, что real time, единственным источником времени системы является устройство «lt» («Elbrus timer»?) с дискретностью 1 мкс. Не то чтобы это слишком грубо, но современным компьютерам вполне по силам обеспечить квантование на уровне 25–50 нс, причём независимо от текущей частоты процессора.

    By default, the operating system starts with the graphical environment: it takes 12 seconds to load the kernel into memory and about 23 more until the prompt to enter the system appears - only 80 seconds from the moment it was turned on. As already mentioned, we failed to select kernel arguments for starting in single-user mode: when specifying “ S ” or “ 1 ”, the system still reached level 5, and attempts to lower the level after this with the init command led to system crash .

    Since there are two video adapters in the computer, the virtual terminals are distributed among them in turn: the first terminal opens on a discrete card, the second on an integrated controller, the third on a discrete again, and so on. The graphic desktop, being on the seventh terminal, thus falls on a discrete graphics card, the speed of which does not cause problems. I really wanted to check how responsive the desktop will be if you bring it out through the built-in controller, because it can be tough on domestic platforms: for example, a simple redrawing of the screen using the Graphics Adapters module (developed by ICST) can take several seconds - not just slowly , but almost like a line-by-line appearance of a splash screen in ZX Spectrum games downloaded from a tape cassette. Alas, no editXorg.conf in the image and likeness, neither the selection of the kernel arguments, nor the change of the primary video adapter in the hardware settings gave the desired effect.

    Curious nuance
    Тогда как первичный экран на дискретной видеокарте инициализируется в текстовом режиме, тот же экран на встроенном контроллере инициализируется в графическом режиме и показывает 4 эмблемы процессора (как это делают некоторые ядра Linux сразу после своего запуска), но всё равно использует только верхние 25 строк текста.

    By default, the kernel starts with the hardreset argument , which instructs the system to perform a full hardware reset when the computer restarts. In the x86 world, everyone is used to this option, but alternative platforms, where the “cold” initialization takes several minutes after turning on the power, may offer a quick restart of the operating system - and this really works, unlike the Intel / AMD kexec lottery  . We were not able to select an argument that would be supported by the core of the Elbrus system and at the same time give the desired result.


    The Elbrus operating system (OS El, OSL) is standard for all MCST computers, although the port of the MSVS 3.0 system can also function on the SPARC platform . The official system for identifying software products goes back to their decimal numbers: for example, “OS 316‑10” stands for “TVGI.00316‑10 operating system with TVGI.00315‑03 core, which is part of the TVGI.00311‑05 general software”. On the one hand, it looks like more on the alphanumeric names , serial numbers than versions . On the other hand, a particular software product is usually closely associated with a specific hardware product, and does not undergo significant changes during its lifetime. However, in the file / etc / mcst_versionyou can see the tag “release 2.2.1”, and in the pseudo-file / proc / bootdata  - “release”. However, none of these designations are found in the user interface.

    $ cat / etc / mcst_version
    release 2.2.1
    $ cat / proc / bootdata
    boot_ver = '
    release- ::::::: (/tags/release- at revision 3816)
    built on Nov 2 2015 at 18:05:58 '
    mb_type = 'MONOCUB'
    chipset_type = 'IOHUB'
    cpu_type = 'E2S'
    cache_lines_damaged = 0
    $ cat / proc / version
    Linux version 2.6.33-elbrus.033.6.57 (gavrilova_tg @ e2k13)
    (gcc version 4.4.0 compatible) # 1 SMP Sun Oct 11 00:10:58 MSK 2015
    $ uname -a
    Linux MONOCUB-10-XX 2.6.33-elbrus.033.6.57 # 1 SMP Sun Oct 11 00:10:58 MSK 2015
    e2k E2S MONOCUB GNU / Linux

    The kernel of the system is Linux 2.6.33, ported to the Elbrus-2000 (E2K) architecture, and in general the system is based on the Debian distribution with a selective approach to selecting packages: for the most part, compliance with release 7.0 Wheezy or newer is observed, however versions of some packages are closer to 5.0 “Lenny”. According to a recent report(PDF, 172 Kbytes), surveys are also being carried out on direct porting of the original distribution kit with all its variety of packages, however, the same “Grandfather Lenin” was chosen as the basis there. And all because it is necessary to ensure backward compatibility with application and system software developed for even older versions of libraries and compilers. But why then not release several versions of the system - on an older and newer package base - so that the consumer can choose for himself? Probably because there is not enough demand from the target audience, and certification problems probably play an important role.

    Once installed, the system is not subject to regular updates from the official repository of the MCST company and immediately contains all the available packages. Here are some of the most significant versions (with the exception of the development tools discussed in the next part of the article):

    • office tools: abiword 2.8.6, evince 2.32.0, geeqie 1.1, gimp 2.6.12, gnumeric 1.10.0, graphviz 2.32.0, mtpaint 3.40, xsane 0.998;
    • Internet facilities: dillo 3.0.3, firefox 3.6.28, links 2.2, linphone 3.5.2, lynx 3.81, thunderbird 3.1.20, sylpheed 2.7.0;
    • cryptography: gnutls 3.1.22, openssl 0.9.8zc, openvpn 2.2.2;
    • multimedia: ffmpeg 1.0, mplayer 1.1.1;
    • text editors: ed 1.7, leafpad 0.8.17, vim 7.3 + gvim 7.3;
    • file managers: mc, thunar 1.4.0;
    • shells: bash 4.2.53, pdksh 5.2.14, tcsh 6.18.01, zsh 5.0.2;
    • services: openssh 6.1p1, httpd 2.4.3, postgresql 9.2.3 + slony1 2.2.0, zeromq 2.1.11;
    • package managers: apt, aptitude, dpkg 1.16.10, pkgtools 13.1.

    In total, there are 679 entries in the package manager , which is ten times smaller than the original Debian pool, however, it should be borne in mind that not all really installed software is packaged: for example, the system actually has a virtual machine and a set of Java developers, but the package manager this is not in the know.

    The only graphical desktop environment is Xfce 4.10. Surprisingly, in the domestic operating system, newly created user profiles are by default set to the English language of the interface, and in the  program menuThere are no shortcuts to configure switching the keyboard layout, and the indicator of the current layout is also not visible anywhere. However, experienced users know that domestic Linux-based operating systems usually try to copy the "best" traditions of Windows: working from root and switching layouts by Alt + Shift.

    Xfce desktop (sample view)
    An example view of the Xfce desktop

    Update as of February 9, 2016.The comments suggest that the function of taking screenshots is in the GIMP graphical editor, - the remark is fair, but for this you need to be an experienced user of this program; the author, although he did all the illustrations for this article in GIMP, does not belong to such experts. As for taking screenshots using command-line utilities, whether they were available or assembled independently, this method was not considered due to the low friendliness of the average user.

    As already mentioned, we were unable to launch at least some third-party operating system compiled for the x86 or x86‑64 architecture due to the lack of documentation. Attempts to directly launch the user application compiled for Linux x86‑64 directly from the Elbrus command line were also unsuccessful. There is no WinAPI emulation layer and PE-binaries launchers in the system, and in order to assemble WinE independently from the source code, it is necessary to port architecturally dependent sections of code. The Qemu emulator is also not in the standard delivery, but it is more or less successfully assembled (with the parameters –‐enable-tcg-interpreter ‑‐ disable-werror ) and it seems to even work in versions i386-softmmu , x86_64-softmmu , sparc-softmmu ,sparc64-softmmu ; porting is however required for the * application-specific * -linux-user options . Obviously, the creators of the Elbrus binary translation technology didn’t mean this at all when they talked about x86 hardware emulation, so we didn’t see the point of testing Qemu’s performance, and it’s so clear that it would be slow and sad.

    Returning to the topic of regular software, we venture to suggest that a typical user of this system is unlikely to feel left out, since he will either have to solve problems in specialized third-party programs, or create simple documents in office suites, scan and print, - and For this, few people need the latest versions. The only exception, perhaps, is the web browser: the simplest Dillo and text Lynx / Links do not pretend to anything, but Firefox 3.6 is not even 1.5 from MSVS 3.0, but it’s still hopelessly old for modern sites. This version is not supported, for example, by Yandex and Google maps (unlike OSM and Bing), Google Docs; you will see only a heading of Intel sites, Mail.ru and Sberbank. And of course, in the absence of built-in support for HTML Video and the Flash plugin, you will not be able to watch videos on any site, whether it be a foreign YouTube with a report on the launch of Doom 3 on Elbrus 401 ‑ PC or ideologically faithful Kremlin.ru with speeches by the Supreme Commander. Apparently, this is also not considered a drawback, since the typical scenario for using such computers is access to internal, specially developed sites in a closed network of an enterprise or department.

    Attempts to access the Internet (the word “Namoroka” in the screenshots is not just another rebranding of Firefox for Debian, but just a code name of version 3.6)
    View of docs.google.com from FirefoxView of mail.google.com from Firefox

    View of the site www.sberbank.ru from FirefoxView of the e.mail.ru site from Firefox

    View of maps.google.com from FirefoxView of maps.yandex.ru site from Firefox

    View of www.intel.com from FirefoxView of www.youtube.com from Firefox

    But after all, a software update serves not only to expand functionality, but also eliminates serious errors and vulnerabilities - what about this? Apparently, the ideologists of information security believe that since there is no external access to the private network, and internal users who have physical access to their computers will not consciously take malicious actions or connect questionable data carriers by negligence, there is nothing to worry about. In an extreme case, if some kind of bug bothers you very much and you want to talk about it, the MTsST has its own bugzilla with a login and tickets, in the sense that without a login issued to you you won’t get there, and you will only see tickets their own, even if the problem has already been discussed a thousand times with other customers and a solution has long been found.

    The next part of the article is devoted to the features of the Elbrus 2000 architecture and software development tools for it.

    Also popular now: