GPL(GENERAL PUBLIC LICENSE) FREEDOM 0: The freedom to run the program as you wish, for any purpose.
FREEDOM 1: The freedom to study how the program works, and change it so it does your computing as you wish.
FREEDOM 2: The freedom to redistribute copies so you can help others.
FREEDOM 3: The freedom to distribute copies of your modified versions to others.
Linux Application Ecosystem Salon 2021 Changsha This weekend I traveled to Changsha for the Linux Application Ecosystem Salon 2021 Changsha, which is held by Ubuntu Kylin in the campus of Central South University. The journey itself is uneventful. I’ve never been to any offline Linux events before, I wanted to go to FOSDEM, but then the COVID hit. So anyway, it’s a first time for me. You can view the full news in Ubuntu Kylin’s post
Git is a mature, actively maintained open source project initially developed in 2005 by Linus Torvalds, the famous Linux operating system kernel creator. Git is designed for developers that need a pretty straightforward version control system. Most software is collaborative efforts and sometimes can have hundreds of people with commits working on software development projects. It is essential to track these commits customarily done in branches in most projects before being merged into the master for release. It is easy to review and track down any incorrect commits and revert, leading to a much easier development if anything goes wrong.
A few weeks ago, I received Microchip PolarFire SoC FPGA Icicle Kit with FPGA fabric and hard RISC-V cores capable of handling Linux. I wrote “Getting Started with Yocto Linux BSP” tutorial for the board, and I had initially titled the current post “Getting Started with FPGA development using Libero SoC and Polarfire FPGA SoC”.
I assumed I would write one or two paragraphs about the installation process, and then show how to work with Libero SoC Design Suite to create an FPGA bitstream. But instead, I spent countless hours trying to install the development tools. So I’ll report my experience to let readers avoid some of the pitfalls, and hopefully save time.
LAMP is one of the most widely used software stacks on servers because it allows us to get a working web server up and running quickly. So, in this post, you will learn how to use LAMP on Debian as well as a description of its main components.
It was suggested by some Ghacks visitors that I do a review of the current top 5 Distributions listed on popular ranking and information website Distrowatch; and I liked the idea, so this is my take on the current #1 spot holder: MX Linux.
MX Linux is a collaborative effort between the AntiX Linux distribution team and the MX Linux distribution team, based on Debian’s “Stable” branch. The About-Us page of the MX Linux website says, “MX Linux began in a discussion about future options among members of the MEPIS community in December 2013. Developers from antiX then joined them, bringing the ISO build system as well as the Live-USB/DVD technology. The name “MX” was chosen to combine the first letter of Mepis with the last of antiX, thus symbolizing their collaboration.”
MX Linux ships with three environment choices:
Xfce – The flagship desktop environment
For this installation and review, I opted for the Xfce version in order to get the full effect of what the team wants to present to users.
It should also be noted that MX Linux does not use Systemd, with the MXLinux website stating, “MX Linux uses systemd-shim, which emulates the systemd functions that are required to run the helpers without actually using the init service. This means that SvsVinit remains the default init yet MX Linux can use crucial Debian packages that have systemd dependencies such as CUPS and Network Manager. This approach also allows the user to retain the ability to choose his/her preferred init on the boot screen (GRUB).”
Ryzen 5 3500X
16GB DDR4 3000Mhz
NVIDIA GTX 1660 Super
System installed on a SATA SSD
The MX Linux installation from a Live-USB that I created was a little surprising to me, as they used an entirely different graphical installer than anything I had seen before; and frankly, it was very dated looking and perhaps might come across as a little intimidating to users who are not overly familiar with installing Linux systems.
That’s not to say it was complicated, I found it very easy to use...But I’ve also been installing distributions like most people change socks, for nearly 20 years...However, I will say that it was very well documented with a lot of help-text all over the place, so reading along and following instructions or reading descriptions of what various menu items are, should still be fairly manageable. The installation itself had all the usual features, encryption options, automatic or self-partitioning, etc.
The installation itself once it started, was insanely fast...I went downstairs to get some water after it began, and it was done by the time I sat back down; no longer than 5 minutes, I would even say possibly 3-4 minutes. Overall, if you’ve installed an OS at least a few times in the past, especially any Linux systems, this should be manageable for you.
Included software and features
MX Linux has everything the average user will need to enjoy themselves, be productive, listen to music, watch videos, etc. From LibreOffice to Clementine music player, VLC, Thunderbird, Firefox...There is a little bit of everything, without having too much bloat where you need to start ripping apart your menu of useless items. Something that I was quite impressed with is that MX Linux comes with an absolutely massive suite of “MX” related tools, for nearly everything, such as:
MX Boot Options
MX Boot Repair
MX Codecs Installer
MX Cleanup (think CCleaner)
MX Live-USB Maker
MX Menu Editor
MX Network Assistant
MX Repo Manager
There is more, suffice to say there is an MX Tool for almost anything you can think of related to managing your system, and that’s nice...It shows the level of depth and care put in by the development team to make a cohesive, manageable, organized desktop system for all users. There was even a handy application for installing NVIDIA drivers.
Xfce is a very lightweight desktop environment, and the MX Linux system is designed itself to also be quite lightweight. With LibreOffice Writer, Firefox with 3 tabs open, a file browser, and the default Conky running with my three monitors connected, I averaged 3-5% CPU used with 1.5GB of RAM being used. Everything flew open right away, and I never encountered any hiccups or stuttering.
I didn’t like the layout of the main panel being on the side, and I’m not a big fan of Xfce typically...but once I organized things a little more to my liking, I found MX Linux was a pleasure to use, responsive, fast, and had more tools than you can shake a stick at...So new users will likely not need to use the terminal for anything really, it’s all right there in nice custom-made GUI tools, however, power users may also find the simplicity of some of these tools quite handy too.
Being based on Debian will also help to ensure that MX Linux stays rock solid stable, and there should rarely be crashes or broken packages. I would recommend MX Linux to anyone who cares more about stability than bleeding edge package updates, as well as people looking for a strong distribution that does not use Systemd.
Have you tried MX Linux? What did you think of it? Let us know in the comments!
The supply-chain attack targeting the open-source
As you may know, email spoofing allows attackers to pose as someone else to gain illegal profit. For example, I only use email@example.com for communication, but someone might create a spoofed-up email, say firstname.lastname@example.org, to trick someone. This is called email spoofing with fake headers as follow:
Date: Thu, 24 Oct 2021 12:46:10
From: nixCraft <email@example.com>
Correct headers are often not checked by receiving email servers, and my@personal_gmail_com may think the email is from me. Here is the thing I don't use opensourceflare.com for email communication at all. So how do I prevent illegitimate email traffic on my domain? In this tutorial, I will explain how to configure DNS settings that tell receiving email servers this domain is not configured for emailing purposes and the attacker maliciously sending email on my behalf.
This week in DistroWatch Weekly: Review: Ubuntu 21.10News: Ubuntu plans features for 22.04, ReactOS receives large Linux-themed donation, AlmaLinux launches ELevateQuestions and answers: Running Steam safely and enabling a firewallReleased last week: MX Linux 21, Porteus Kiosk 5.3.0, Redcore Linux 2102Torrent corner: KDE neon, MX Linux, NuTyX, Porteus....
KVM (Kernel based Virtual Machine) is an opensource virtualization technology built for Linux machines. It comprises a kernel module – kvm.ko which provides the core virtualization platform and a processor-specific module ( kvm-intel.ko for Intel processors or kvm-amd.ko for AMD processors ).
There are two ways of creating virtual machines using KVM. You can leverage the virt-manager tool which is an X11 server that provides a GUI interface for creating virtual machines. Additionally, you can use the command line to create a virtual machine by defining various parameters associated with the virtual machine you want to deploy.
We already have an elaborate guide on how to install KVM virtual machines using GUI on Ubuntu. In this guide, we take a different approach and demonstrate how you can create a KVM virtual machine from the command line interface. We are using Ubuntu 18.04, but this should work across all Linux distributions.
Step 1) Check whether Virtualization is enabled
As we get started out, we need to check if your system supports Virtualization technology. To achieve this, run the following command.
$ egrep -c '(vmx|svm)' /proc/cpuinfo
If your system supports virtualization technology, you should get an output greater than 0.
Next, confirm if your system can run KVM virtual machines.
If you get an error on the screen, it implies that the kvm-ok utility is not yet installed. Therefore, install the following command to install the kvm-ok utility.
$ sudo apt install -y cpu-checker
Now run the kvm-ok command to confirm whether KVM virtualization is supported.
The –name attribute denotes the name of the virtual machine. Feel free to give it an arbitrary name.
The –os-type directive specifies the type of Operating system – in this case Linux.
The –os-variant option specifies the operating system releases.
NOTE: KVM provides predefined –os-variant options and you just cannot make up your own. To check the various variants that are supported, run the osinfo-query os command. This lists all the possible Operating systems and the supported variants. Also, note that the variants my not coincide with your latest Linux release. In this case, I’m using debian9 instead of debian11 since the latter is not provided by KVM as one of the variant options.
Moving on, the –vcpu parameter specifies the number of CPU cores to be allocated to the virtual machine.
The –ram option specifies the amount of RAM in Megabytes to be allocated.
The –disk path option defines the path of the virtual machine image. The –disk directive is the disk space of the VM in Gigabytes.
The –graphics option specifies the graphical tool for interactive installation, in this example, we are using spice.
The –location option points to the location of the ISO image
Lastly, the –network bridge directive specifies the interface to be used by the virtual machine.
If all goes well, you should get some output as indicated in the image above followed by a virt viewer pop-up of the virtual machine awaiting installation.
In our case, we are installing Debian 11 and this is the initial installation screen. We proceeded with the installation until the very end.
Step 4) Interacting with virtual machines
The virsh utility is a component that is used to interact with virtual machines on the command-line. For instance, to view the currently running virtual machines, execute the command:
$ virsh list
To list all the virtual machines including those that are powered off, append the –all option.
$ virsh list --all
To shut down a virtual machine use the syntax:
$ sudo virsh shutdown vm_name
For example, to turn off our virtual machine, the command will be:
$ sudo virsh shutdown debian-vm
To start or power on the virtual machine, run:
$ sudo virsh start debian-vm
To reboot the machine, run the command:
$ sudo virsh reboot debian-vm
To destroy or forcefully power off virtual machine, run:
$ sudo virsh destroy debian-vm
To delete or removing virtual machine along with its disk file, run
a) First shutdown the virtual machine
b) Delete the virtual machine along with its associated storage file, run
This was a guide on how to install a virtual machine using KVM on the command line. We have highlighted some of the salient options to specify to ensure the successful deployment of the virtual machine. We also went a step further and demonstrated how to interact with the virtual machine on command-line using the virsh utility. Those were just a few options, there are quite several of them.
ONLYOFFICE desktop app is an open-source office suite pack that comprises editors for text documents, spreadsheets, and presentations. In this tutorial, we’ll learn how to install ONLYOFFICE Desktop Editors on your Linux Mint.
Luna (Slashdot reader #20,969) quotes the Devuan web site.
"Dear Friends and Software Freedom Lovers," its announcement begins:
"Devuan Developers are delighted to announce the release of Devuan Chimaera 4.0 as the project's new stable release. This is the result of many months of painstaking work by the Team and detailed testing by the wider Devuan community."
This release is Based on Debian Bullseye (11.1) with Linux kernel 5.10, according to the announcement, and lets you choose your init system : sysvinit, runit, and OpenRC.
Another feature it's touting: Improved desktop support. "Virtually all desktop environments available in Debian are now part of Devuan, systemd-free."
Inkscape, the most used and loved tool of Fedora’s Design Team is not just a program for doing nice vector graphics. With vector graphics (in our case SVG) a lot more can be done. Many programs can import this format. Also, Inkscape can do a lot more than just graphics. The last article of this series showed how to use Stroke or Hershey Fonts for engraving and other such methods with Inkscape. This article will look at several Inkscape extensions for making Papercraft or that otherwise help to flatten out three-dimensional (3D) objects.
Rapid Prototyping is an oft-mentioned word (even more so since the advent of 3D-Printing). Sure, you can easily 3D-print computer designed objects. But the downsides are the cost and the amount of extra work you have to put into the 3D printed objects to get a clean surface.
Especially when prototyping large objects, 3D-Printing is less attractive. The cost for the object, the time to print it and the amount of reworking that needs to be done for the surface increase with the size of the object. Other methods are more efficient under these circumstances. Among other things, building paper models is a classic method for prototyping. Architectural models are often built this way. When I was a kid, paper models were also quiet popular as toys. Also, the cosplay scene often uses this method to build thee-dimensional costumes out of foam sheets. Not to mention that you can design nice product packaging this way. You can also use Joinery to laser cut the objects and build more complex 3D objects. So there are many good reasons to learn more about Papercraft.
Linux and Papercraft
The amount of software for this area is really limited and the most used seems to be Pepakura, which gets its name from the Japanese technique. Another program is Ultimate Papercraft 3D, which is also only available for Windows.
Are Linux/Fedora users excluded because this software is so often only made for Windows? Of course not. There are some extensions for Inkscape to do this. There are extensions to do this with Blender as well. A corresponding ad-on is even included with the standard version of Blender – Paper Model. So you just have to enable it.
But we will concentrate on the Inkscape extensions. If you would like to see an article about how to do it with Blender, let me know in the comments section below.
Why use Inkscape for Papercraft?
There are a few reasons why I prefer to use Inkscape for Papercraft. First, the Blender ad-on also outputs a SVG that can be further edited/processed with Inkscape. But the process is the main reason:
Set printing marks (Extensions > Render > Layout > Printing Marks...)
Installation of Paperfold
The main extension you will need to do Papercraft is Paperfold. Another extension exists called Papercraft Unfold, which does nearly the same thing. It is written by the same author. However, according to him, Paperfold is the better option.
This extension takes a 3D object as an OBJ file and flattens it out. It then sets the folding markings and angles. To get it working, you have to install OpenMesh and the corresponding Python bindings.
After you have installed this software, you can download the extension and unpack it under ~/.config/inkscape/extensions/. With the next start of Inkscape the extension will be available under Extensions > FabLab Chemnitz > Papercraft Flatteners > Paperfold.
Usage of Paperfold
About the 3D Objects
Other needed/recommended extensions
Tabgen – Generating Flaps
You may have noticed that all Paperfold does is to flatten out the 3D object. So after using it, you end up with an object that has separate 2D areas corresponding to each of the original 3D object’s surfaces. When making papercraft, you will also need flaps to glue it together.
Of course, you can put these to the object by hand using Inkscape’s drawing tools. But that might be time consuming. There is another extension for Inkscape which is helpful for performing this task – Tabgen.
Convert to Polyline
The Tabgen extension only works with straight lines. Curves do not work. Consequently, you must convert all the curves to polylines. For this, you can use another extension – Convert to Polyline.
The path must also be clean. It cannot have any stray nodes or else another folding tab will be generated there.
As mentioned before with the flattened objects, you can do more than just papercraft. For wood or other thicker materials you need joints. And there are of course extensions and other applications for making them.
Boxes – Generating Finger Joints/Dovetails
Boxes.py is an online box generator that is available as an Inkscape extension as well. Even better, the author delivers the INX files which provide the GUI so you can use it from within Inkscape. You just have to install it with pip.
$ pip install boxes
You can also install and use Boxes directly from the Git clone. I have personally used this method when I had problems with the pip installation. It installed all the packages except boxes.generators which is needed to build the INX files. The INX files were not provided with the installation at that time. To use it this way, just download the repository or clone it.
Make sure you have the needed packages installed – setuptools, affine and markdown. Also, if you want other export options such as SVG and PS, then you will need pstoedit.
Change to the directory of the Boxes git clone and run:
$ python setup.py build
$ python setup.py install
After the next start of Inkscape, you will find the tools under Extensions > Boxes.py. Boxes brings a lot of pre-defined objects as well as commonly-needed designs like fan holes. The parameters for all the pre-defined objects can, of course, be adapted to suit your needs.
Lasercut Tabbed Box
Lasercut Tabbed Boxes is an Inkscape extension with functionality similar to Boxes. But it has far fewer shape options.
Joinery – the complement for all
Since Tabgen only helps with the generation of flaps for papercraft and Boxes only makes finger-joints on pre-defined objects, you might find the aforementioned Joinery very useful. Joinery is not a Inkscape extension. It’s a web application that runs in your browser (of course, there are alternatives). You can find a very good description of its possibilities and a tutorial about how to work with it in this article at Instructables (it is very impressive how many different kinds of connections are available).
Those who don’t like to use browser-based tools like Joinery, might find QuickJoint useful. It can add box tabs/finger joints to selected paths or matching slots using guidelines.
Conical Box Generator
The extensions mentioned thus far have helped to create square, rectangular or angled boxes. But there is the possibility of cutting plywood sheets with relief cuts so they can be folded. Boxes.py uses this technique on some of its designs. But if you want to design your own conical or rounded shapes then you should have a look at the Conical Box Generator extension.
Those who just want to make simple foldable boxes for packaging design should have a look at the extension Foldable Box. This extension is installed by default – Extensions > Render > Foldable Box.
The Packaging Tools extension offers some more options for this type of design. After download and unpacking the files into ~/.config/inkscape/extensions, you will find new options under Extensions > Packaging. Packaging Tools provides a set of pre-defined packaging forms.
4 dots tray
Auto bottom lock case
Snap lock bottom case
Standard reverse tuck case
Standard shirt tray
You can customize the parameters on these forms to create your own package design.
There is a relatively new extension called Papercraft Extruder that I think is a nifty and useful tool. What it does is to generate for a given path object the pieces for an extrusion, including the flaps. This comes in very handy if you want to quickly create 3D letters and similar things. The downside it that it works only with straight lines. The extension produces each section of the extrusion with the given depth twice. The second copy is for use with Tabgen. Unfortunately, all the pieces are put on top of each other and they are not numbered or marked. So you have to sort it out by hand.
Also new is Polygen. It is written by the same author as Tabgen and Papercraft Extruder and it is used in much the same way. It uses a path and a center line to generate a polygon object. Of course, it also flattens the object out and it attaches flaps for assembly.
Papercraft is more than just a kids toy; especially when working with materials other than paper. You have to think outside the box to imagine the awesome materials that could be worked with. I’ve come up with several new ideas just working on this article. For example, how about using the flatteners for stained glass projects? I think one could create awesome lamps this way.
Fedora Linux and Inkscape along with the mentioned extensions and other tools give you the opportunity to unleash your creativity. So go ahead and MAKE things!
cURL is a command-line utility that developers use to transfer data via several network protocols. Client URL (cURL) or (curl) is considered a non-interactive web browser that uses URL syntax to transfer data to and from servers. It can pull information from the internet and display it in your terminal or save it to a file in your local drive.
This explanation article is for beginners in The Free Software and GNU/Linux Community. You will certainly meet terms like amd64, i386, and ppc64el as choices when getting copy of a software or an operating system. In short, these terms refer to choices of computer's CPU products (also known as processors) which would determine choices of software and operating systems that you can run on it. In practice, knowing these terms may benefit you to select correctly software and operating systems for your computer. Now let's start learning!
(Debian is the best example of choices between i386, amd64 and ppc64el for computer users)
Most PCs and laptops today are amd64. Most PCs and laptops produced in 1990's and before 2011 are i386. Several latest technology computers aimed for the future and could be replacing amd64 and i386 produced as ppc64el. For example, PCs with Intel Pentium 4 or AMD Althlon Classic are all i386 (also known as PC 32-bit) while today PCs with Intel Core 2 Duo and AMD Phenom onwards are all amd64 (also known as PC 64-bit).
What is Central Processing Unit?
CPU or Central Processing Unit is the most crucial part of a computer that represents computer itself. All talk about architectures, including amd64 and i386 and ppc64el, is about CPU. It is produced as a small, lightweight, thin rectangle silicon chip equipped with many downwards-pins attached to computer's internal motherboard and not visible by end-users unless by disassembling the computer.
What is computer architecture? What's the examples?
Computer architecture (also known as Instruction Set Architecture) is the generic design of a CPU in form of a technical document written by computer architects in which the implementation is the CPU product itself. A computer architecture determines its implementations and later determines end-users' choices of software and operating systems. Examples of architectures including x86 and POWER. These two architectures might be divided into several more, namely amd64 and i386, and ppc64el. There are other architectures, like ARM and MIPS, not discussed in this article.
What's 32-bit and 64-bit?
A computer architecture is based on mathematics of the power of 2. This means 2 power 0, 2 power 1, 2 power 3 and goes next to 2 power 32 (called 32-bit) and goes further to 2 power 64 (called 64-bit) today. Every computer architecture in this modern age is generally divided into two technology generations, 32-bit generation and 64-bit generation, showing difference in how much information the processor can process at a time. Today, 64-bit computers are the norm and sold everywhere; while the 32-bit ones are not produced anymore but still around us and considered legacy technology.
In practice, this means
by hardware, Personal Computers sold since 1980's to date are generally divided into two generations, the 32-bit ones, and the 64-bit ones; while
by software, the operating systems for that computers are also divided into two generations, 32-bit and 64-bit.
by history, in general all computers produced between 1980 to 2010 are 32-bit while those produced 2011 afterwards are 64-bit.
What is i386? What's the examples?
i386 (also known as IA-32, x86, x86_32, and PC 32-bit) is a choice of computers from the family of Personal Computer which is based on 32-bit technology. This architecture was first invented by Intel hence the name i386, and AMD later adopted it, resulting in availability of both i386 processors in the market. Historically, all 1990's produced computers are i386 hence the examples of i386 processors are Intel Pentium and AMD Athlon.
There are general rules of i386 computers: an i386 computer can run any i386 software and any i386 OS. No amd64 software, no amd64 OS either, can run on an i386 computer. This is its difference to amd64.
What is amd64? What's the examples?
amd64 (also known as x86_64, x64, PC 64 bit, and 64-bit) is a choice of computers produced by both AMD and Intel from the family of Personal Computers which is based on 64-bit technology. This architecture was first invented by AMD, hence the name amd64, and later adopted by Intel, resulting in both processors availability in the market. In practice, end-users might buy an amd64 CPU from either AMD or Intel. Examples of amd64 processors are AMD APU and Intel Core.
There are general rules of amd64 computers: an amd64 computer can run any amd64 software and can also run any amd64 OS with an exception that is, it can also run any i386 software and OS. This exception is one among benefits of amd64 over i386.
What is ppc64el? What's the examples?
ppc64el (not to be confused with PowerPC or ppc64) also known as IBM POWER Little Endian is a choice of computer from OpenPOWER Foundation starting with its POWER8 generation of architecture. CPU examples of ppc64el are IBM POWER8, POWER9 and Power10 while computer example of it is Raptor Talos II (that is a PC preloaded with Debian ppc64el). Today, this computing choice is new and still very expensive.
There are general rules of ppc64el computers: a ppc64el computer can run any ppc64el software and any ppc64el OS. No any i386 nor amd64 software and OS can run on ppc64el.
Where to find examples of amd64, i386, and ppc64el?
All computer operating systems today offered as amd64. In practice, Windows and Ubuntu today are amd64 only (meaning, no i386 version anymore).
All GNU/Linux operating systems in the past were offered as i386, while now only a few remaining to be available as i386. For example, in the past, Windows 95 and 98 were all i386, while 10 onwards are all amd64 only. Several distros which still offer i386 versions are among others Debian, Devuan, MX and Trisquel.
Many major GNU/Linux operating systems today also offered as ppc64el. For example, see Debian, Devuan, Fedora, openSUSE, Red Hat, and Ubuntu.
IMPORTANT NOTE: in fact, the reason why all major operating systems (Windows, MacOS, GNU/Linux) discontinued their i386 versions is that because i386 computers themselves were no longer produced since a long time (10 years ago at the moment we publish this article) so they gradually switched and focused to amd64 instead. Please note that in the future, all operating systems and software developers might discontinue i386 completely.
Relationship between software, OS, and architecture choices
Your hardware choice determines your operating system choice and later determines your software choice. The general rule is that an architecture runs operating systems matched that architecture and runs software matched that architecture as well, otherwise, the operating systems and/or the software will not run. In practice, this means generally if your computer is i386, you should run an i386 OS, and later run i386 software on it. You should not run an amd64 OS on that computer, as it will not run. Likewise, you should not run an amd64 software on that computer, as it will not run as well. Generally, same practice applies to i386, amd64, and ppc64el as well as any other architecture.
What to do with these three choices?
Finally, what you should do when seeing choices of amd64, i386, and ppc64el?
If your computer is amd64, choose operating system that is for amd64, and choose software that is for amd64 as well.
If your computer is i386, choose operating system that is for i386, and choose software that is for i386 as well.
If your computer is ppc64el, choose operating system that is for ppc64el, and choose software that is for ppc64el as well.