Installing NGNIX on FreeBSD/powerpc64

freebsd

As you might know, FreeBSD is also running on IBM POWER8 processor.

I just installed FreeBSD 11.0 on a VM, and installed NGINX. At this moment, FreeBSD does not have the pkg infrastructure for powerpc64, so, you need to use the ports infrastructure to install any software.

I tested it and everything I tried to build (git, zsh, vim, etc) worked fine.

This is the receipt on how to install NGINX after you install the base image:

# portsnap fetch
# portsnap update
# cd /usr/ports/www/ngninx
# make install clean

After that, NGINX will be installed on your system, and you could enable it adding the following line to /etc/rc.conf:

nginx_enable="YES"

 

Setting IPMI Power Restore Policy

If you want to set your Power machine to turn on automatically once it restarts or it is powered up, you can set the IPMI Power Restory Policy

You can choose to keep the machine off, and you need to turn it on manually. You can also choose to power the machine on automatically. The other options involves keeping the previous state, i.e, keep the machine off if it was off before, and vice-versa.

In order to do it, you should use IPMI and point to the BMC, as in the following example, where I set the machine to power on automatically when it is plugged in the power outlet.

 $ ipmitool -H  <x.x.x.x> -I lanplus -U >PASSWORD>  -P admin chassis power on

 

Possible network interface name change after upgrading kernel

Linux kernel 4.4 starts using a mechanism called Network Predictable Naming for the network interfaces. It means the name of network interfaces is based on PCI addresses of the network adapters. For example, an adapter with PCI address 0003:01:00.0 would have a mapped network interface called enP3p1s0f0.

Due to recent changes on Linux kernel to better accommodate the Network Predictable naming in ppc64el architecture, users can possibly experience change in their network interfaces’ names on Ubuntu kernel upgrade to version 4.4.0-36 or subsequent versions.

The solution to this issue is to change the network interface name on file /etc/network/interfaces to fit the new name interface got after the kernel upgrade. After this, for all subsequent kernel versions >= 4.4.0-36 there will be no more naming modifications.

Notice however that booting from old kernel after changing the interface name will present the same issue again!

This issue appears when upgrading from old kernel to 4.4.0-36 and subsequent. Happens on Ubuntu 16.04 and 14.04.5 .

Hint: to show all network interfaces on your system, just issue ls -l /sys/class/net – it’ll show all the interfaces currently available and the symbolic link to their PCI devices.

How to install IBM Java version 8 on Ubuntu

IBM provides a very powerful IBM Java for Linux. I will give the details on how to install it on Ubuntu version 16.04 (Xenial) on the ppc64el platform.

  1. Download the binary from the developerWorks page.
  2. Once you download it, give execution permission to the binary, as:chmod.png
  3. Choose the language you wish, and then the license will be shown to you, as: license.png
  4. Read the license, and if you agree, press 1.
  5. You will be able to select in which directory IBM Java will be installed, as:license.png
    1. In this case, I just pressed <Enter> to use the default path.
  6. Once you press <Enter>, the process starts. Once the process finish, you press <Enter> to exit the installer, as showed:almost
  7. After that you can load IBM Java from /opt/ibm/java-ppc64el-80/bin/java.

You can have both OpenJDK and IBM Java installed on you system, if you want to have both, as showed:

both.png

I tested these steps on both Ubuntu 15.04 and 16.04.

Try Ubuntu on POWER8 for FREE for 30 days

Canonical is collaborating with SoftLayer to offer a 30-day free trial to use the Ubuntu that you love on POWER8! This promotion, open to new and existing Softlayer customers, is a great way to discover the possibilities of Ubuntu on POWER8.

Certified Ubuntu images are now available on SoftLayer! Certified Ubuntu images provide first class security and quality assurance to guarantee the best possible experience on the industry’s leading clouds.

For more information, check: https://pages.ubuntu.com/POWER8-SoftLayer-offer.html?utm_source=Insights&utm_medium=Blog&utm_campaign=FY17_SoftlayerPromotion&

Missing legacy ethX interfaces names

If you are a old school sys admin, and wants to keep the default ethX convention for internet names,  you can do it easily on Ubuntu and Debian.

When running Ubuntu and Debian on a virtual machine on top of KVM, you will see that the name is ibmvethX, instead of the ethX. This changes happened on newer version (Ubuntu 15.10+ and Debian 10) due to a lot of benefits of interfaces naming when doing PCI hot plugs and replacement.

So, in order to solve it you have two options, changing the full ifname mechanism as a general change, doing:

Changing ifname in the kernel

Edit your /etc/default/grub. Change the the following line from:

GRUB_CMDLINE_LINUX=""

to

GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"

And then running:

# update-grub

Other than doing it, youou can also just change one interface, so, you can have more control.

Persistent udev naming

In order to run persistent name, which I personally prefer better, you can create a file name /etc/udev/rules.d, with the following content:

SUBSYSTEM==”net”, ACTION==”add”, ATTR{address}==”4c:45:42:45:01:09″, NAME=”eth0″

This is going to tell udev that a interface with mac ‘4c:45:42:45:01:09‘ should be named eth0. After that, just replace your configurations at /etc/network/interfaces and reboot your system. You should see eth0 instead of ibmveth0 now.

 

Export X from server to local system

Every now and then I have to verify a graphical application running on the remote server. That must be done via graphical output, no way to do it from the command line.

For those scenarios I usually export the X from the remote interface to my local workstation. That can be done simply by issuing:

ssh -X -C -c blowfish <username>@<remote-server>

From the ssh man page:

-X:
     Enables X11 forwarding. (X11 forwarding should be enabled
     with caution. Read the man page);
-C:
    Requests compression of all data;
-c cipher_spec:
    Selects the cipher specification for encrypting the session.
    The supported values are “3des”, “blowfish”, and “des”.

<EDIT>
Using a remote connection to a xenial ppc64el server from a Fedora24, I got the following error:

Unable to negotiate with <server>: no matching cipher found. 
Their offer: chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,
aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com

Adding blowfish-cbc (taken from the openssh man page) to the ssh_config files did not “blow it away” though. So to get rid of the error I simply removed the ‘blowfish‘ cipher type, and left the task to the system.
</EDIT>

After getting access you won’t notice any difference, for the result is the same as as regular ssh connection. The difference relies on the behavior when you run a graphical application from the CLI. Here I am running HardInfo in the remote system as an example:

hardInfo_3.png

Graphical interface being exported to a local workstation from a remote Ubuntu ppc64el system.

Please read the ssh man page carefully to get clearer all security considerations and get advantage of the X exporting when running graphical applications.

Have a nice day.

Debconf BoF presentation

At Debconf16, I was the chair of a nice BoF discussion around Power, covering all the three ports (powerpc, ppc64 and ppc64el).

There was some interesting discussion about powerpc and ppc64, and what to expect  in Stretch release. One of the discussions, raised by the release team, is regarding missing  porters. This should be more detailed later in the release team emails.

I also created a PDF to start the discussion, and I would like to share it here. You can find it clicking in the following like: ppc64el_bof.