Sunday, 27 February 2022

A thought in Blue and Yellow

 

(I truly hope this is the first and last non-technical blog post I place here)

I still remember the war stories that my late grand-father, a platoon comander in the Romanian Royal Army at the time, a participant to the fight against the Soviets  from 1941 to 1944 and then to the war against the Axis until May 1945, was telling me when I was a child.

I remember how he told me about the national tragedy of the Polish people who, attacked from the West and then from the East, had barely enough time to use the Romanian Bridgehead to evacuate through Romania part of their Treasury and Army, to continue the fight from British soil. It was an event that affected greatly the Romanian population at the time.

The Poles never surrendered. They never bowed their heads. They proved to be a nation of heroes, even when completely overrun by enemies from all sides and even with their country erased from the map.

I also remember how he told me about the bravery of the Finns during the Winter War. How their troops were skillfully going on skis, unnnoticed, behind the enemy lines and bringing panic, havoc and death within the ranks of the Soviet invaders. How the Red Army had such a poor performance that Stalin had to supply the invading troops amply in order to defeat the Finns.

Finland sued for armistice and suffered tremendous losses both then and after WW2 but they managed to stay independent and not subject to the Communist yoke like the Eastern half of the continent.

I also remember how my grand-father was praising to me the bravery of the Greeks. Initially attacked by Fascist Italy, they resisted bravely and even managed to repel the enemy into the Italian-occupied Albania.

Italy performed so badly in that war that Germany had to come to help them and my grand-father told me how impressed the Germans were of the fighting spirit of the Greeks. So impressed that they allowed the Greek officers to retain their daggers and swords (symbolic elements of the military uniform) even in captivity.

Maybe an urban legend, but an ispiring one to me.

I mentioned these stories for several reasons:

  • because they aren't about one Giant against another Giant, like the Axis against the Allies. They are about a Giant going after a much smaller opponent.

    Today we see the same: a Giant going against a much smaller nation, commiting one of the most blatant and coward acts of aggression - much like Germany against the Poles, USSR against the Finns or Italians against the Greeks.

  • because, just as Romania stood to help her Northern neighbour in 1939, she has to stand to help her Northern neighbour again.

  • because the current fight is way more than the Putin regime or the balance of power in Europe and worldwide.
The current fight is about the right of 40 million people to their history, to their identity and to their destiny without anyone else's interference.

And as a Romanian British, I cannot do but empathise with that.

We, Romanians, know very well what it means to be divided and ruled by others - for centuries. We, Romanians, know very well what it means to have others to tell you who you are, where you're coming from and where you should be going.

We, Romanians, know very well the price to have your own name, your own language, your own intepretation of history and your own destiny. And Ukrainians are fighting precisely for that, I think.

And that's why, while deploring the situation in which the brother Russian nation finds itself in, I cannot do but express my deepest sympathy for the Ukrainian cause.

And to my Ukrainian colleagues whom I had the pleasure to work with at Barclays, I say: regardlesss of the outcome of the current conflict, if the bravery and dignity of your nation didn't win the respect of others, it certainly won mine.

Слава Україні!


Saturday, 1 January 2022

A Mariner Story - Part III

In the previous episode of the Mariner Story I showed how running Mariner within VirtualBox is easy but not without its own small challenges. This blog entry will show how to begin customizing the distribution.

Step One: building a demo OS

Fortunately for Mariner users, the distribution comes with a small tutorial on how to best use the flavour of Linux.

Customization is, in fact, the preferred way to use Mariner. This distribution isn't a distro like, say, Ubuntu - a fullyfledged OS that can be later installed upon. 
Mariner is, essentially, a toolkit to build your own specialized Linux images and those images can be installed upon or customized further on. Needless to say, the Mariner team offers tools and infrastructure to achieve that goal and this article presents exactly that.

Mariner comes with an aptly named repository, MarinerDemo. It is much like CBL-Mariner but it does not build an image 'from scratch'; it uses the core image instead to build an image derivative. I will not repeat the steps here since they are clearly exposed in the demo so I recommend to follow the steps up to Image Config File.

Note: I followed the ISO route and not the VHD and VHDx isn't even supported by VirtualBox. Furthermore, as in the case of CBL-Mariner ISO VM from before, enabling EFI is essential to make the installer boot.

I named this derivative image Mariner-Demo-Blank because it contained no extra package. It was not really a derivative, hence the -Blank suffix in the name.

Step Two: building with provided binary (zip)

The 'blank' OS built above is really so: it doesn't even have the zip utility and that can be easily verified with the which zip command: it complaints that there is 'no zip'.

I followed the instructions in Customize Demo Image with Pre-built Packages with the caveat that I rebuilt the ISO and not a VHD as indicated in the tutorial.

Next was to create a Mariner-Demo-Zip virtual machine within VirtualBox and running command which zip within it gave the expected answer: /bin/zip.

Step Three: building with other binary repos

The zip utility gets specified within core-packages.json file without a repo because it is a pre-built binary. It is possible to use another repo to add binaries to Mariner.

The demo tutorial shows how to add libX11 by referring to mariner-ui.repo. I did not pursue this train of action as I consider it very similar to the steps above.

Step Four: building with new packages

The last step is to add new packages to the distribution. The tutorial demonstrates how to build a gnuchess package and then how to add it to the VHD. I chose to build the ISO instead of the VHD, as before.

The steps in the tutorial work with the following caveats:
  • cloning the gnuchess repo yields a newer SPEC file than the one expected for version 6.2.7 mentioned in the tutorial
  • the patch version in the SPEC file should be 6.2.7-6 and not 6.2.7-4 as instructed, because two new patches occured after the tutorial was published
  • BuildRequires: help2man needs to be commented out from the newer SPEC file since it's not present in 6.2.7
Note: obviously, the user has the choice not to use 6.2.7 but the latest version. In this case the tutorial needs to be followed by reconsidering the versions and the SPEC snippets may differ. I preferred to stick with 6.2.7.

After a successful ISO build, creating a VirtualBox machine named Mariner-Demo-GnuChess as above and using the newly built image will load a Mariner VM containing gnuchess - a locally built package.

Some Thoughts

There are a few things to remember from this experience:
  • Each of the steps above require a fresh clone of MarinerDemo repository
  • The build steps are easy to fail. Sometimes the connection to the repositories proved to be flaky
  • It is easy to make mistakes when altering the files. Extra-care is required
Apart from that, building a customized version of Mariner Linux proved to be a quite straightforward procedure.