鲲鹏内核麒麟操作系统使用记录
在一次偶然的机会接触到了鲲鹏处理器安装的麒麟操作系统,在部署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)》