CentOS7.0系统升级systemd到246

113 阅读2分钟

使用编译方法在CentOS7.0升级systemd到246.注意此方法可能会导致机器崩溃、无法再启动。

安装Python3.8.10

yum groupinstall -y "Development Tools"
yum install -y gcc bzip2-devel libffi-devel openssl-devel 
echo 'export PYTHON_MIRROR_URL="https://mirrors.aliyun.com/python-release/source"' >> ~/.bashrc
source ~/.bashrc
sudo curl -O ${PYTHON_MIRROR_URL}/Python-3.8.10.tgz
tar xzf Python-3.8.10.tgz
cd Python-3.8.10
./configure prefix=/usr/local/python3 && make && make install
echo 'export PATH=$PATH:/usr/local/python3/bin/'>> ~/.bashrc
source ~/.bashrc
cd

安装编译systemd所依赖软件

pip3 install meson==0.59.4 ninja jinja2 -i https://mirrors.aliyun.com/pypi/simple/
yum install -y libcap-devel gperf glib2-devel
wget https://mirrors.edge.kernel.org/pub/linux/utils/util-linux/v2.30/util-linux-2.30.2.tar.gz --no-check-certificate
tar zxf util-linux-2.30.2.tar.gz && cd util-linux-2.30.2 && ./configure --disable-all-programs --enable-mount --enable-libmount --enable-libblkid --enable-libuuid && make && make install
wget https://github.com/Kitware/CMake/releases/download/v3.18.4/cmake-3.18.4-Linux-x86_64.tar.gz
tar zxf cmake-3.18.4-Linux-x86_64.tar.gz
echo 'export PATH=$PATH:/root/cmake-3.18.4-Linux-x86_64/bin'>> ~/.bashrc
source ~/.bashrc
ln /usr/lib/libmount.so /usr/lib64/libmount.so
cp /root/util-linux-2.30.2/libmount/mount.pc /usr/lib64/pkgconfig/mount.pc
cp /root/util-linux-2.30.2/libblkid/blkid.pc /usr/lib64/pkgconfig/blkid.pc
cp /root/util-linux-2.30.2/libuuid/uuid.pc /usr/lib64/pkgconfig/uuid.pc

下载systemd246并编译

wget https://github.com/systemd/systemd/archive/v246.tar.gz
tar zxf v246.tar.gz
cd systemd-246/
yum update -y
./configure && make && make install

检查systemd版本

systemctl --version

重启服务器

第一次编译成功后,重启服务器直接崩溃,无法再启动。第二次重新编译后没有出现问题

reboot

安装过程疑问

1.使用Python3

Systemd是编译安装,编译工具会用到meson,meson需要Python3的环境。meson编译运行依赖ninjia和jinjia2。

2.meson必须使用0.59.4

如果pip3安装meson不指定版本,使用默认版本编译systemd时会报错

3.yum 安装make版太低 从gitHub上下载

如果无法从github上下载,使用ipaddress解析这两个域名,并添加到/etc/hosts中。github.com和github.global.ssl.fastly.net。详见参考文档6

4.下载utlis-linux编译安装mount

编译安装utils-linux之后执行还是会报错,执行检查缺少文件,再把文件从utils-linux包中复制到服务器指定位置。

5.不可以安装版本高于250的systemd

CentOS7.X的内核版本过低,不支持systemd从251开始的版本。如果想要安装251或更高,需要升级内核版本。升级内核详见参考文档2。

6.其他升级方法

详见参考文档5,需要先设置/etc/selinux/config中SELINUX设置为permissive。再照文章方法使用facebook的第三方库。该作者的中编译方法未成功,不宜参考。

7.编译升级systemd导致服务器崩溃

请先在测试机或者空白机器中进行测试,实际升级时做好服务器备份或镜像。

参考文档