New kid in the block – Rocky linux.

If you’ve been following the recent changes in the linux world you probably remember how Red Hat and Centos announced in December 2020 that the CentOS Project was shifting focus to CentOS Stream and support for CentOS Linux 8 had been cut to December 31, 2021. It created a wave of discussions in the community about the future for Centos as an enterprise platform and some people started to look to alternative Linux distributives. As a result we got a new, community-driven downstream built, same as Centos used to be, Rocky linux.

The downstream build is based on the same code base as the vendor distributive and resembles most features of the “parent” vendor Linux. It is following all the releases after they have been built by the vendor. In most of my tests I am using Oracle Linux when I am in the Oracle cloud but I am using Centos in Google cloud and other public clouds like Azure or AWS. Now we have Rocky Linux available on those platforms and I’ve had a quick look and done some testing using the Rocky Linux 8.4 (Green Obsidian).

Let’s have a look to the kernel and packages.

[gleb_otochkin@gleb-rocky-01 ~]$ cat /etc/rocky-release
Rocky Linux release 8.4 (Green Obsidian)
[gleb_otochkin@gleb-rocky-01 ~]$ cat /etc/redhat-release 
Rocky Linux release 8.4 (Green Obsidian)
[gleb_otochkin@gleb-rocky-01 ~]$

It has the same kernel and versions of the packages as the upstream release and is probably compatible in most of the ways. You can verify it with information from Red Hat using the following link.

[gleb_otochkin@gleb-rocky-01 ~]$ uname -r

I gave it a quick ride and checked if I could use it in my tests and demo deployments. The tests were done in the Google Cloud Platform (GCP) using a e2-medium (2 vCPUs, 4 GB memory) VM with a standard “Rocky Linux 8” image. For the tests I decided to install an Oracle Database 19c to the VM to see if we would get any issues during the process. Maybe this is not an ideal test but I am working extensively  with data and with Oracle databases and it could help me and maybe to some of my Oracle peers to understand if it would be a suitable replacement for Oracle Linux or Centos.

To prepare the system I used Oracle’s oracle-database-preinstall-19c-1.0-2.el8.x86_64.rpm from the public Oracle repository. The package sets up kernel parameters, creates oracle users and groups and includes all the dependencies to other packages. In earlier versions it was requiring Oracle UEK kernel but it is not the case anymore. With the dnf utility you can install the package directly from the web.

[gleb_otochkin@gleb-rocky-01 ~]$ sudo dnf install
Rocky Linux 8 - AppStream                                                                                                                                                                                   7.1 MB/s | 8.0 MB     00:01    
Rocky Linux 8 - BaseOS                                                                                                                                                                                       12 MB/s | 4.5 MB     00:00    
Rocky Linux 8 - Extras                                                                                                                                                                                       13 kB/s | 3.9 kB     00:00    
Google Compute Engine                                                                                                                                                                                        17 kB/s | 9.3 kB     00:00    
Google Cloud SDK                                                                                                                                                                                             37 MB/s |  35 MB     00:00    
oracle-database-preinstall-19c-1.0-2.el8.x86_64.rpm                                                                                                                                                         163 kB/s |  31 kB     00:00    
Dependencies resolved.
 Package                                                            Architecture                               Version                                                               Repository                                        Size
 oracle-database-preinstall-19c                                     x86_64                                     1.0-2.el8                                                             @commandline                                      31 k
Installing dependencies:
 bc                                                                 x86_64                                     1.07.1-5.el8                                                          baseos                                           128 k
[gleb_otochkin@gleb-rocky-01 ~]$ id oracle
uid=54321(oracle) gid=54321(oinstall) groups=54321(oinstall),54330(racdba),54322(dba),54323(oper),54324(backupdba),54325(dgdba),54326(kmdba)
[gleb_otochkin@gleb-rocky-2 ~]$

All dependencies were installed correctly and the server was ready for the next steps.

I prepared storage for the binaries and mounted it to the system.

[gleb_otochkin@gleb-rocky-01 ~]$ lsblk 
sda      8:0    0   20G  0 disk 
├─sda1   8:1    0  200M  0 part /boot/efi
└─sda2   8:2    0 19.8G  0 part /
sdb      8:16   0   50G  0 disk 
[gleb_otochkin@gleb-rocky-01 ~]$ sudo pvcreate /dev/sdb
  Physical volume "/dev/sdb" successfully created.
[gleb_otochkin@gleb-rocky-01 ~]$ sudo vgcreate vgorasoft /dev/sdb
  Volume group "vgorasoft" successfully created
[gleb_otochkin@gleb-rocky-01 ~]$ sudo lvcreate -l 100%FREE -n lvorasoft01 vgorasoft
  Logical volume "lvorasoft01" created.
[gleb_otochkin@gleb-rocky-01 ~]$ sudo mkfs.xfs /dev/mapper/vgorasoft-lvorasoft01 
meta-data=/dev/mapper/vgorasoft-lvorasoft01 isize=512    agcount=4, agsize=3276544 blks
         =                       sectsz=4096  attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1
data     =                       bsize=4096   blocks=13106176, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=6399, version=2
         =                       sectsz=4096  sunit=1 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
Discarding blocks...Done.
[gleb_otochkin@gleb-rocky-01 ~]$ 
[gleb_otochkin@gleb-rocky-01 ~]$ sudo mkdir /u01
[gleb_otochkin@gleb-rocky-01 ~]$ sudo cp /etc/fstab /etc/fstab.orig
[gleb_otochkin@gleb-rocky-01 ~]$ sudo su - 
[root@gleb-rocky-01 ~]# echo -e '\n'`blkid /dev/mapper/vgorasoft-lvorasoft01 | cut -d " " -f 2 | sed 's/"//g'`"\t\t/u01\txfs\tdefaults\t1 2" >>/etc/fstab
[root@gleb-rocky-01 ~]# mount /u01
[root@gleb-rocky-01 ~]# df -h /u01
Filesystem                         Size  Used Avail Use% Mounted on
/dev/mapper/vgorasoft-lvorasoft01   50G  390M   50G   1% /u01
[root@gleb-rocky-01 ~]# 
[root@gleb-rocky-01 ~]# chown oracle:oinstall /u01/app/oracle
[root@gleb-rocky-01 ~]#

Before doing installation you need to set up the CV_ASSUME_DISTID environment variable or your installation will fail with the “[INS-08101] Unexpected error while executing the action at state: ‘supportedOSCheck'”.

[WARNING] [INS-08101] Unexpected error while executing the action at state: 'supportedOSCheck'
   CAUSE: No additional information available.
   ACTION: Contact Oracle Support Services or refer to the software manual.
       - java.lang.NullPointerException

After setting the environment variable all the next steps were typical for a silent installation and I hadn’t hit any problems with the system or during the installation.

[oracle@gleb-rocky-01 dbhome1]$ cat /etc/redhat-release 
Rocky Linux release 8.4 (Green Obsidian)
[oracle@gleb-rocky-01 dbhome1]$ export CV_ASSUME_DISTID=OEL8.4
[oracle@gleb-rocky-01 dbhome1]$ ./runInstaller -silent -responseFile /u01/app/oracle/patchdepot/db_install.rsp 
Launching Oracle Database Setup Wizard...
As a root user, execute the following script(s):
        1. /u01/app/oraInventory/
        2. /u01/app/oracle/product/19.0.0/dbhome1/
Execute /u01/app/oraInventory/ on the following nodes: 
Execute /u01/app/oracle/product/19.0.0/dbhome1/ on the following nodes: 

Creation of the database was the same, correct, fast and didn’t produce any errors.

oracle@gleb-rocky-01 ~]$ /u01/app/oracle/product/19.0.0/dbhome1/bin/dbca -createDatabase -silent -createAsContainerDatabase true -gdbName orcl -pdbName ottawa -templateName General_Purpose.dbc -sysPassword welcome1 -systemPassword welcome1 -pdbAdminPassword welcome1 -datafileDestination /u01/app/oracle/oradata -storageType FS -sampleSchema true 
[WARNING] [DBT-06208] The 'SYS' password entered does not conform to the Oracle recommended standards.
a. Oracle recommends that the password entered should be at least 8 characters in length, contain at least 1 uppercase character, 1 lower case character and 1 digit [0-9].
b.The password entered is a keyword that Oracle does not recommend to be used as password
   ACTION: Specify a strong password. If required refer Oracle documentation for guidelines.
Database creation complete. For details check the logfiles at:
Database Information:
Global Database Name:orcl
System Identifier(SID):orcl
Look at the log file "/u01/app/oracle/cfgtoollogs/dbca/orcl/orcl.log" for further details.
[oracle@gleb-rocky-01 ~]$

After setting everything up I ran several tests and everything worked correctly as it would be on Red Hat or Oracle Linux.

I checked if I could update my packages with the latest bug fixes and it worked correctly too.

[gleb_otochkin@gleb-rocky-01 ~]$ sudo dnf updateinfo
Last metadata expiration check: 1:34:00 ago on Fri 23 Jul 2021 05:44:49 PM UTC.
Updates Information Summary: available
    2 Security notice(s)
        2 Important Security notice(s)
    9 Bugfix notice(s)
Security: kernel-core-4.18.0-305.10.2.el8_4.x86_64 is an installed security update
Security: kernel-core-4.18.0-305.3.1.el8_4.x86_64 is the currently running version
[gleb_otochkin@gleb-rocky-01 ~]$ sudo dnf upgrade
Last metadata expiration check: 1:34:33 ago on Fri 23 Jul 2021 05:44:49 PM UTC.
Dependencies resolved.
 Package                                               Architecture                            Version                                                                 Repository                                         Size
 NetworkManager                                        x86_64                                  1:1.30.0-9.el8_4                                                        baseos                                            2.6 M
 NetworkManager-libnm                                  x86_64                                  1:1.30.0-9.el8_4                                                        baseos                                            1.8 M
 NetworkManager-team                                   x86_64                                  1:1.30.0-9.el8_4                                                        baseos                                            144 k
 NetworkManager-tui                                    x86_64                                  1:1.30.0-9.el8_4                                                        baseos                                            327 k

I can conclude that the Rocky Linux will probably be replacing some other distributives as a preferable platform for tests, demo or as production on Google and maybe other clouds. Maybe with more intensive usage I will hit some problems but so far it works without any hiccups. If you are looking for a replacement for your Centos or want a RHEL like Linux distributive I recommend to look at Rocky Linux.

Leave a Reply

Your email address will not be published. Required fields are marked *