Language Selection

English French German Italian Portuguese Spanish

Kernel: LWN Articles (Paywall Lapse), SchedViz Liberated and Amlogic Video Decode Driver

Filed under
Linux
  • 5.4 Merge window, part 2

    The release of the 5.4-rc1 kernel and the closing of the merge window for this development cycle came one day later than would have normally been expected. By that time, 12,554 non-merge changesets had been pulled into the mainline repository; that's nearly 2,900 since the first-week summary was written. That relatively small number of changes belies the amount of interesting change that arrived late in the merge window, though.

  • Upstreaming multipath TCP

    The multipath TCP (MPTCP) protocol (and the Linux implementation of it) have been under development for a solid decade; MPTCP offers a number of advantages for devices that have more than one network interface available. Despite having been deployed widely, though, MPTCP is still not supported by the upstream Linux kernel. At the 2019 Linux Plumbers Conference, Matthieu Baerts and Mat Martineau discussed the current state of the Linux MPTCP implementation and what will be required to get it into the mainline kernel.
    MPTCP, described by RFC 6824, is built around one fundamental idea: allowing a single network connection to exchange data over multiple physical paths. One obvious use case is a phone handset, which has both WiFi and broadband interfaces. Being able to use both at the same time would give the device greater bandwidth, but also greater redundancy — a connection could continue uninterrupted despite changes to individual paths.

  • Fixing getrandom()

    A report of a boot hang in the 5.3 series has led to an enormous, somewhat contentious thread on the linux-kernel mailing list. The proximate cause was some changes that made the ext4 filesystem do less I/O early in the boot phase, incidentally causing fewer interrupts, but the underlying issue was the getrandom() system call, which was blocking until the /dev/urandom pool was initialized—as designed. Since the system in question was not gathering enough entropy due to the lack of unpredictable interrupt timings, that would hang more or less forever. That has called into question the design and implementation of getrandom().

    Ahmed S. Darwish reported the original problem and tracked it down to the GNOME Display Manager (GDM), which handles graphical logins. It turns out that GDM was calling getrandom() in order to generate the "MIT magic cookie" that is used for authorization by the X Window System. As was pointed out by several in the mega-thread, using cryptographic-strength random numbers for the cookie (or much of anything in terms of X Window security) is well beyond the pale—a much weaker random number generator could have been used with no loss of security. Darwish noted that the call "only" requests a small number of random bytes (five calls requesting 16 bytes each) but, as Theodore Y. Ts'o said, that doesn't matter: by default getrandom() will not return anything until the cryptographic random number generator (CRNG) is initialized—which requires entropy.

    When Darwish originally bisected the problem, he pinpointed an ext4 commit that had the effect of reducing the amount of disk I/O that was being done early in the boot process. That performance enhancement also, unfortunately, turned out to reduce the amount of entropy gathered on Darwish's laptop—to the point it would not boot. That change has been reverted for now.

  • Compiling to BPF with GCC

    The addition of extended BPF to the kernel has opened up a whole range of use cases, but few developers actually write BPF code. It is, like any other assembly-level language, a tedious pain to work with; developers would rather use a higher-level language. For BPF, the language of choice is C, which is compiled to BPF with the LLVM compiler. But, as Jose Marchesi described during the Toolchains microconference at the 2019 Linux Plumbers Conference, LLVM will soon have company, as he has just added support for a BPF back-end to the GCC compiler.
    Marchesi, who described himself as "just a compiler guy" rather than a tracing wizard, said that this work is proceeding in three phases. The first of those is to get basic BPF support into the toolchain; for GCC, that takes the form of a new bpf-unknown-none target triplet. Support for BPF was added to binutils in May; the first GCC support landed in the project's repository just before the conference began.

  • Google Opens Up "SchedViz" To Visualize Linux Kernel Scheduling Behavior

    Google's newest open-source contribution for benefiting the Linux kernel is SchedViz.

    SchedViz is a tool developed at Google for visualizing the Linux kernel scheduling behavior. Google has already used this tool internally to find areas for improvement within the kernel to make better scheduling choices and analyzing memory latency problems.

  • Amlogic Video Decode Driver Nearly Ready With H.264 Support

    The in-kernel staging Amlogic Meson video decode driver could soon handle H.264 support as soon as Linux 5.5.

    After a lengthy journey getting into the kernel with initially just MPEG-1 and MPEG-2 support, this open-source Amlogic video decode driver should soon be in compliance with H.264.

More in Tux Machines

Distro Flashback: What happened to Cub Linux?

The operating system wasn’t always known as Cub Linux. In actuality, when it first got announced back in 2014, Chromixium OS was what it was called. After a year of its announcement, its first stable version hit the open-source world as a 32-bit live ISO. With that being said, this release didn’t go as smoothly as planned. There were several bugs reported by its users, which included slow menu generation and screen tearing. On the bright side, the developers soon got to solving these issues and released a service pack in addition to various updates. However, what really took Chromixium OS to the next level was the release of its 64-bit version in November 2015. All of this development hit a roadblock when the owner of Chromium and Chrome OS, Google, sent a request to the operating system’s developers to give up the name ‘Chromixium’ and other related social media presences websites. However, that couldn’t stop the head of this project, RichJack, as they soon addressed this issue and renamed their OS as Cub Linux. These events took place in late 2015 and ended on a positive note, but the project didn’t know what was approaching its way in 2016. When 2016 was nearing its end, Cub Linux users started noticing one big thing: the official website had been missing. This turned out to indicate the demise of a project that could have done wonders in the future. Even though their GitHub page is open to this very day, the development had stopped, and there was no point in keeping up with Cub Linux anymore. According to a developer, this project’s sudden end could be attributed to “private life restrictions,” which is as vague as a statement could get. With that being said, as far as the future of Cub Linux is concerned, many other developers got interested in this project and wanted to pick it up. Accordingly, the Feren OS developer announced in 2017 that he would give Cub Linux a major overhaul and “bring back Cub” with the name of Phoenix Linux. This might seem like good news to some, but honestly, the future of Phoenix Linux doesn’t seem too bright since the project hasn’t received another update since March 2018. If we’re really hopeful, we’ll get something as soon as 2021, but waiting any longer wouldn’t make much sense. Read more

Python Programming

  • Only Python: Friendly-traceback: work in progress

    It's been almost two months since my last blog post and I feel guilty of not haven't taken the time to write more regularly.  I should really tell you about how fantastic Will McGugan's Rich is, and how I have customized it for my projects. I should also tell you how Sylvain Desodt's DidYouMeanPython has been influencing Friendly-traceback latest developments. Also worthy of note is how Alex Hall's FutureCoder project is incorporating so many neat tools that it feels like a real honour that he has incorporated Friendly-traceback in it. Alas, while I have been busy making many changes and addition to the code, the documentation is hopelessly behind and no longer gives a correct picture of what Future-traceback is now capable of. So much to do, so little time. So, I will just end with a picture, and go back to coding, with a promise of writing more ... soon I hope.

  • Python range() Function – Linux Hint

    Python is a modern, general-purpose, and high-level programming language that comes with powerful features. Python has many built-in modules to support diverse operations. The range() function is a built-in function used to perform specific tasks or actions for a definite number of times. In other words, the range() function is used to perform a task iteratively. This function is used in conjunction with the for loop and the while loop.

  • Python Dictionaries – Linux Hint

    Python is an efficient and versatile programming language. It is one of the most frequently used high-level programming languages to perform data-related tasks due to its many supportive built-in modules and functions. To mention some of its many built-in data structures, it has arrays, lists, tuples, etc. Dictionaries are one of the built-in data structures in Python. It holds the data in the form of a key-value pair. The keys are the unique value that acts as a representative of data. The key is also called as “an index value”. Data structures are a very important aspect of any programming language. They are used to store and manipulate the data in a well-organized and efficient way. Therefore, Python dictionaries are more useful when we need to store the data in a form of key-value pair and to access the data faster. The Python dictionaries return the data faster because the key value for every data is unique, therefore the searching time for data is reduced, and we get the result faster. This article explicates the Python dictionaries in detail.

  • Python Classes – Linux Hint

    Python is one of the multiuse high-level programming languages. It is an object-oriented programming language. The main difference between the procedural and object-oriented programming languages is that we cannot create the classes in procedural programming languages. The main focus of procedural languages is on creating functions, and variables for performing the task whereas, in object-oriented programming languages, our main concern is to create objects and use them for performing our tasks. A class is simply a blueprint that contains functions and variables. A class is like a real-life classroom of any institute. It contains some chairs, tables, desks, a projector, walls, etc. base on all these components; we build a classroom. All these components are the variables and functions in a class, and a classroom is an object. The Python classes and objects are explained in this article.

  • FreeBSD process environ and resource limits

    New psutil 5.7.3 is out. This release adds support for 2 functionalities which were not available on BSD platforms: the ability to get the process environment (all BSD) and to get or set process resource limits (FreeBSD only), similarly to what can be done on Linux.  

Kernel: KVM, Btrfs and nosymfollow

Japanese IME on PCLinuxOS 64 KDE5 Magnum 2020 1015

I recently saw that my install of PCLinuxOS was behaving funny after and update: the effects ceased working and web pages were loading slowly. Last time this happened to me, I had to install a new iso because I had been working with a very old one. This time, however, I had kept up with all the updates thanks to the convenient Simple Update Notifier, but something was not good. Anyway, I decided to install the new PCLinuxOS 64 KDE5 Magnum 2020 1015. The installation went well, but I was worried because I normally install the PCLinuxOS GRUB2 on the distro partition, not on the MBR, but it was not possible for me to do it this time, so I was predicting a mess trying to boot OpenMandriva, Mageia, MX Linux, and Elive. Read more