lamess / 鲲鹏内核麒麟操作系统使用记录

Created Wed, 26 Jun 2024 09:06:04 +0800 Modified Tue, 05 Nov 2024 14:23:17 +0800

鲲鹏内核麒麟操作系统使用记录

在一次偶然的机会接触到了鲲鹏处理器安装的麒麟操作系统,在部署MySQL等软件时发现了与常用的x86环境时不同的地方。本文记录过程中的处理方法。

mariadb

供应商预装的Kylin是带GUI的版本,在安装时还附带了mariadb。由于需要使用MySQL,因此需要将原来的mariadb卸载。

command -V mysql
dnf list installed | grep mariadb
dnf remove mariadb

卸载后还会遗留用户名为mysql的账户,可以检查其登录权限。

cat /etc/passwd |grep mysql

确认其权限是否为/sbin/nologin/bin/false

如果账户未被锁定,可以使用usermod命令修改。

usermod -s /bin/false mysql

OpenSSL 3.x

在部署aarch64版本的MySQL过程中,在执行mysqld --initialize命令时报错了,提示找不到libcrypto.so.3。这意味着在MySQL8.0.37-aarch64版本对OpenSSL3.x版本有依赖,必须先编译安装OpenSSL。

首先安装编译环境。

dnf install gcc make -y

下载OpenSSL3并编译

wget https://www.openssl.org/source/openssl-3.3.1.tar.gz
tar -zxf openssl-3.3.1.tar.gz
cd openssl-3.3.1
./config --prefix=/usr/local/openssl && make && make install

由于当前操作系统上内置的软件进程默认使用OpenSSL1.1,因此不可以直接将/usr/lib64/libcrypto.so软链接到libcrypto.so.3,这样会导致其它功能异常。
在编译完成后,将lib路径加入到环境变量。

echo 'export LD_LIBRARY_PATH=/usr/local/openssl/lib:$LD_LIBRARY_PATH' >> /etc/profile
source /etc/profile

如果使用systemd来控制MySQL的启动,也需要将环境变量写入mysqld.service文件的配置内。

[Service]
Environment="LD_LIBRARY_PATH=/usr/local/openssl/lib"

之后就可以正常运行最新版本的MySQL了。

OpenSSL 1.0.2

由于某个程序依赖OpenSSL1.0.2,一开始考虑的方法是和3.x版本一样进行编译。简单编译生成的lib文件中遇到了no version information available问题。
反复研究后并无比较好的处理方法,灵机一动找到相同内核的CentOS7的rpm安装后得到了.so文件,上传到/lib64下顺利启动了程序。

阿里云镜像路径找到aarch64的openssl-libs-1.0.2k并安装使用。

rpm -ivh openssl-libs-1.0.2k-19.el7.aarch64.rpm --force

在此期间的相关测试工作是使用了QEMU虚拟机在Win上搭建aarch64内核的虚拟机。参考了《使用Qemu在Windows上模拟arm平台并安装国产化arm 操作系统(麒麟V10)》