とある事情で AWS で Oracle Linux 8 を使ってみることになったのでそのメモ。
AMI
AMI は所有者を 131827586825
で検索するとずらずら出てきます。
aws ec2 describe-images \ --executable-users all \ --owners 131827586825 \ --query 'Images[] | [].{ Name: Name, ImageId: ImageId } | sort_by(@, &Name)' \ --output table # ------------------------------------------------------------------- # | DescribeImages | # +------------------------+----------------------------------------+ # | ImageId | Name | # +------------------------+----------------------------------------+ # | ami-352d1c34 | OL5.11-i386-10-17-2014-ebs | # | ami-3d2d1c3c | OL5.11-x86_64-10-17-2014-ebs | # | ami-0a7a660b | OL6-i386-HVM-2015-1-20 | # | ami-ce5742cf | OL6-i386-PVM-2014-12-11 | # | ami-a6637da7 | OL6-x86_64-HVM-2015-1-20 | # | ami-8c23308d | OL6-x86_64-PVM-2015-1-12 | # | ami-08021f6ff9bb5043e | OL6.10-x86_64-HVM-2019-01-30 | # | ami-06aec29ea727b45c5 | OL6.10-x86_64-PVM-2019-01-30 | # | ami-1011387e | OL6.7-i386-HVM-2015-12-04 | # | ami-8fefc6e1 | OL6.7-i386-PVM-2015-12-06 | # | ami-3e133a50 | OL6.7-x86_64-HVM-2015-12-04 | # | ami-6a1f3604 | OL6.7-x86_64-PVM-2015-12-04 | # | ami-a022cec1 | OL6.8-i386-HVM-2016-05-23 | # | ami-233cd042 | OL6.8-i386-PVM-2016-05-23 | # | ami-e726ca86 | OL6.8-x86_64-HVM-2016-05-23 | # | ami-6a3dd10b | OL6.8-x86_64-PVM-2016-05-24 | # | ami-9f8ca9f8 | OL6.9-i386-HVM-2017-03-29 | # | ami-4882a72f | OL6.9-i386-PVM-2017-03-29 | # | ami-6982a70e | OL6.9-x86_64-HVM-2017-03-28 | # | ami-afc65dc9 | OL6.9-x86_64-HVM-2018-01-10 | # | ami-c58faaa2 | OL6.9-x86_64-PVM-2017-03-28 | # | ami-70c45f16 | OL6.9-x86_64-PVM-2018-01-10 | # | ami-fce940fc | OL7.1-x86_64-HVM-2015-06-17 | # | ami-0ce8410c | OL7.1-x86_64-PVM-2015-04-06 | # | ami-65e0c80b | OL7.2-x86_64-HVM-2015-12-10 | # | ami-52e1c93c | OL7.2-x86_64-PVM-2015-12-10 | # | ami-de248ebf | OL7.3-x86_64-HVM-2016-11-09 | # | ami-1e11e778 | OL7.4-x86_64-HVM-2017-08-07 | # | ami-3ad3485c | OL7.4-x86_64-HVM-2018-01-09 | # | ami-0918cd1ebaef69218 | OL7.5-x86_64-HVM-2019-03-04 | # | ami-054e85339904efdef | OL7.6-x86_64-HVM-2019-01-29 | # | ami-0950559ec2dfaacec | OL7.7-x86_64-HVM-2020-02-13 | # | ami-0267b0d59b04d0de5 | OL7.7-x86_64-HVM-2020-02-13-13-14 | # | ami-04e6facfaefdca6ec | OL7.8-x86_64-HVM-2020-04-28 | # | ami-07174046d339a2557 | OL7.9-x86_64-HVM-2020-12-07 | # | ami-0ef7c57e516f3dda7 | OL8.1-x86_64-HVM-2019-12-11-15-50-57 | # | ami-0509f2707adadc9c5 | OL8.1-x86_64-HVM-2020-01-15 | # | ami-05cf17097c9e7017f | OL8.2-x86_64-HVM-2020-05-22 | # | ami-0d5bb29b78cc0af39 | OL8.2-x86_64-HVM-2020-12-09 | # | ami-0ab635c88e06025fb | OL8.3-x86_64-HVM-2020-12-10 | # | ami-0fbc34d0cb97e47b3 | OL8.4-x86_64-HVM-2021-05-28 | # | ami-0afe0424c9fd49524 | OL8.5-x86_64-HVM-2021-11-24 | # +------------------------+----------------------------------------+
Oracle Linux 8.5 = OL8.5 なので ami-0afe0424c9fd49524
です。
os-release とか
インスタンス作成後に ssh ログインして色々見てみます。
cat /etc/redhat-release # Red Hat Enterprise Linux release 8.5 (Ootpa) cat /etc/oracle-release # Oracle Linux Server release 8.5 cat /etc/os-release # NAME="Oracle Linux Server" # VERSION="8.5" # ID="ol" # ID_LIKE="fedora" # VARIANT="Server" # VARIANT_ID="server" # VERSION_ID="8.5" # PLATFORM_ID="platform:el8" # PRETTY_NAME="Oracle Linux Server 8.5" # ANSI_COLOR="0;31" # CPE_NAME="cpe:/o:oracle:linux:8:5:server" # HOME_URL="https://linux.oracle.com/" # BUG_REPORT_URL="https://bugzilla.oracle.com/" # # ORACLE_BUGZILLA_PRODUCT="Oracle Linux 8" # ORACLE_BUGZILLA_PRODUCT_VERSION=8.5 # ORACLE_SUPPORT_PRODUCT="Oracle Linux" # ORACLE_SUPPORT_PRODUCT_VERSION=8.5
ID_LIKE
に rhel
が無いですね、RHEL の ID_LIKE
はおそらく fedora
だけだろうので、それがそのままということなのでしょうけど。
なお、CentOS 8 なら rhel fedora
だし AlmaLinux 8 なら rhel centos fedora
です。
Kernel
uname -r # 5.4.17-2136.300.7.el8uek.x86_64
カーネルのバージョンが RHEL8 と全然違います。いわゆる Unbreakable Enterprise Kernel(UEK) です。 Oracle Linux は UEK と RHEL 互換のカーネル(Red Hat Compatible Kernel(RHCK)) が利用できますが、デフォルトが UEK になっているようです。
そのままでもあまり問題無いかもしれませんが RHCK に変更します。見た感じ RHCK のカーネル自体がインストールされていないようなのでインストールします。
ls -l /boot/vmlinuz* # -rwxr-xr-x. 1 root root 10348096 Oct 9 08:29 /boot/vmlinuz-5.4.17-2136.300.7.el8uek.x86_64 dnf install kernel # いろいろ ls -l /boot/vmlinuz* # -rwxr-xr-x. 1 root root 10221104 Dec 22 02:32 /boot/vmlinuz-4.18.0-348.7.1.el8_5.x86_64 # -rwxr-xr-x. 1 root root 10348096 Oct 9 08:29 /boot/vmlinuz-5.4.17-2136.300.7.el8uek.x86_64
grubby
でデフォルトカーネルを切り替えてリブートします。
grubby --default-kernel # /boot/vmlinuz-5.4.17-2136.300.7.el8uek.x86_64 grubby --info=ALL | grep -E "^kernel|^index" # index=0 # kernel="/boot/vmlinuz-5.4.17-2136.300.7.el8uek.x86_64" # index=1 # kernel="/boot/vmlinuz-4.18.0-348.7.1.el8_5.x86_64" grubby --set-default /boot/vmlinuz-4.18.0-348.7.1.el8_5.x86_64 # The default is /boot/loader/entries/ec2536de9a9cc53fbc785b744042fb86-4.18.0-348.7.1.el8_5.x86_64.conf with index 1 and kernel /boot/vmlinuz-4.18.0-348.7.1.el8_5.x86_64 grubby --default-kernel # /boot/vmlinuz-4.18.0-348.7.1.el8_5.x86_64 reboot
カーネルが RHEL 互換になっていることを確認します。
uname -r # 4.18.0-348.7.1.el8_5.x86_64
EPEL
EPEL は Oracle で専用のリポジトリを持っているらしく epel-release のパッケージ名が異なるようです。
dnf install -y oracle-epel-release-el8
PowerTools
CentOS 8 で EPEL の moreutils
をインストールしようとすると PowerTools リポジトリにある perl-IPC-Run
が必要になります。
PowerTools はデフォルトで無効なので有効にしてインストールする必要があるのですが、
dnf install --enablerepo=powertools moreutils
Oracle Linux 8 だとリポジトリ名が異なっており PowerTools は ol8_codeready_builder
です。
dnf install --enablerepo=ol8_codeready_builder moreutils
他のリポジトリ名の全然違っているため、リポジトリ名を指定してなにかしているなら注意が必要です。
dnf repolist --enablerepo=\* | column -t -s $'\t' # repo id repo name # ol8_UEKR6 Latest Unbreakable Enterprise Kernel Release 6 for Oracle Linux 8 (x86_64) # ol8_UEKR6_RDMA Oracle Linux 8 UEK6 RDMA (x86_64) # ol8_addons Oracle Linux 8 Addons (x86_64) # ol8_appstream Oracle Linux 8 Application Stream (x86_64) # ol8_baseos_latest Oracle Linux 8 BaseOS Latest (x86_64) # ol8_codeready_builder Oracle Linux 8 CodeReady Builder (x86_64) - Unsupported # ol8_developer_EPEL Oracle Linux 8 EPEL Packages for Development (x86_64) # ol8_distro_builder Oracle Linux 8 Distro Builder (x86_64) - Unsupported # ol8_kvm_appstream Oracle Linux 8 KVM Application Stream (x86_64) # ol8_u0_baseos_base Oracle Linux 8 BaseOS GA (x86_64) # ol8_u1_baseos_base Oracle Linux 8.1 BaseOS (x86_64) # ol8_u2_baseos_base Oracle Linux 8.2 BaseOS (x86_64) # ol8_u3_baseos_base Oracle Linux 8.3 BaseOS (x86_64) # ol8_u4_baseos_base Oracle Linux 8.4 BaseOS (x86_64) # ol8_u5_baseos_base Oracle Linux 8.5 BaseOS (x86_64)
参考:https://github.com/oracle/centos2ol/blob/1424a2417aaa383b5ebf0b77b9147584c85c9695/centos2ol.sh#L454
firewalld と iptables
Oracle Linux 8 の素の AMI だと firewalld が有効でした。CentOS 8 の素の AMI だと firewalld は無効だったと思うので、何も知らないと「何故か ssh 以外で接続できない・・」となり数分~十数分ぐらいの時間を無駄にします。
セキュリティグループやネットワークACLで十分ならサーバの firewalld は止めても良いでしょう。
systemctl stop firewalld
systemctl disable firewalld
がしかし、これだけでは不十分。なぜか iptables-services
がインストールされています。
rpm -q iptables-services # iptables-services-1.8.4-20.0.1.el8.x86_64
しかも有効です。
systemctl is-enabled iptables
# enabled
がしかし、firewalld で Conflicts に指定されているため iptables サービスは起動しません。
systemctl show firewalld -p Conflicts # Conflicts=ip6tables.service nftables.service ebtables.service ipset.service shutdown.target iptables.service systemctl status iptables # * iptables.service - IPv4 firewall with iptables # Loaded: loaded (/usr/lib/systemd/system/iptables.service; disabled; vendor preset: disabled) # Active: inactive (dead)
がしかし、前述のように firewalld を無効にしてリブートすると、次は iptables サービスが起動してきます。
systemctl disable firewalld reboot . . . systemctl status iptables # * iptables.service - IPv4 firewall with iptables # Loaded: loaded (/usr/lib/systemd/system/iptables.service; enabled; vendor preset: disabled) # Active: active (exited) since Tue 2022-01-18 13:20:10 GMT; 25min ago # :
ので、firewalld と iptables の両方を無効にする必要があります。
systemctl stop firewalld
systemctl disable firewalld
systemctl disable iptables
tar: command not found
素の AMI だと tar すら入っていませんでした。dnf install @base
とかで 普通入ってそうだけど入っていないもの を確認しておくと良いかもしれません。