美文网首页
CentOS 6 远程升级到 CentOS 7

CentOS 6 远程升级到 CentOS 7

作者: WqyJh | 来源:发表于2020-01-26 00:01 被阅读0次

    由于 CentOS 6 与 CentOS 7 的目录结构有一些差异,因此 CentOS 6 难以直接升级到 CentOS 7。本文提出一种在新分区上安装 CentOS 7,再修改启动项,以实现系统的升级。整个安装过程使用 ssh 远程操作,无需使用启动 U 盘。

    创建新分区

    系统分区结构

    /dev/sda1 # boot 分区
    /dev/sda2 # 根分区
    /dev/sdb1 # 新系统根分区
    

    格式化并挂载新系统的根分区

    sudo yum -y install xfsprogs xfsdump
    sudo mkfs.xfs /dev/sdb1
    sudo mount /dev/sdb1 /mnt
    

    安装 chroot 系统

    sudo mkdir -p /mnt/var/lib/rpm
    sudo rpm --rebuilddb --root=/mnt
    
    curl -O 'http://mirrors.ustc.edu.cn/centos/7/os/x86_64/Packages/filesystem-3.2-25.el7.x86_64.rpm'
    sudo rpm --root=/mnt --nodeps -i filesystem-3.2-25.el7.x86_64.rpm
    
    curl -O 'http://mirrors.ustc.edu.cn/centos/7/os/x86_64/Packages/centos-release-7-7.1908.0.el7.centos.x86_64.rpm'
    sudo rpm --root=/mnt --nodeps -i centos-release-7-7.1908.0.el7.centos.x86_64.rpm
    sudo rpm --root=/mnt --import /mnt/etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-*
    
    sudo mount --bind /boot/ /mnt/boot/
    sudo yum --installroot=/mnt update
    sudo yum --installroot=/mnt reinstall -y filesystem
    sudo yum --installroot=/mnt groupinstall -y "Core" "Minimal Install"
    sudo yum --installroot=/mnt install -y lvm2 mdadm # Important!
    

    修改 /etc/fstab

    sudo cp /etc/fstab /mnt/etc/
    

    查看磁盘 UUID。

    $ sudo blkid
    /dev/sda1: UUID="3dba5ca3-fd24-411c-bc87-4b44f0f78eea" TYPE="ext4" 
    /dev/sda2: UUID="p40eSj-OROh-yhan-OF7H-iOix-cGj3-cxdd3Y" TYPE="LVM2_member" 
    /dev/sdb1: UUID="244f600a-f457-4e53-b112-5cfd8ef79514" TYPE="xfs" 
    /dev/mapper/VolGroup00-LogVol01: UUID="ae11cc28-703e-4a98-ae59-cd3ee495189f" TYPE="swap" 
    /dev/mapper/VolGroup00-LogVol00: UUID="4028e39e-809e-40b8-8953-6655316b4238" TYPE="ext4" 
    

    复制 /dev/sdb1 的 UUID,编辑 /mnt/etc/fstab,修改根分区挂载点。

    即将

    /dev/mapper/VolGroup00-LogVol00 /                       ext4    defaults        1 1
    

    替换为

    UUID=244f600a-f457-4e53-b112-5cfd8ef79514   /                       xfs    defaults        1 1
    

    网络配置

    sudo cp /etc/sysconfig/network-scripts/ifcfg-* /mnt/etc/sysconfig/network-scripts/
    

    Chroot 到 CentOS 7

    sudo mount -t proc proc /mnt/proc
    sudo mount --bind /dev /mnt/dev
    sudo mount --rbind /sys /mnt/sys
    sudo cp /etc/resolv.conf /mnt/etc
    sudo chroot /mnt /bin/bash
    

    更新 grub 菜单

    sudo yum -y install grub2
    sudo grub2-install /dev/sda # /boot 分区所在磁盘
    sudo grub2-mkconfig -o /boot/grub2/grub.cfg
    

    SSH 服务配置

    sudo yum install -y openssh-server openssh-clients
    sudo systemctl enable sshd
    

    用户配置

    设置 root 密码(当前 root 密码处于未设置的状态,不设置 root 密码会导致无法以 root 用户登录)。

    passwd
    

    也可以创建一个新用户。

    adduser test
    passwd test
    cat << EOF | sudo tee /etc/sudoers.d/test
    test    ALL=(ALL)    ALL
    EOF
    

    禁用 selinux

    编辑 /etc/selinux/config,将 SELINUX=enforcing 改为 SELINUX=disabled

    sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config 
    

    重启进入 CentOS 7

    退出 Chroot 系统

    exit
    

    umount 和重启

    sudo umount /mnt/boot /mnt/proc /mnt/sys /mnt/dev 
    sudo umount /mnt
    sudo reboot
    

    Problem

    failed to connect to system bus

    systemd-logind failed to connect to system bus no such file or directory
    

    这是由于文件系统 layout 不对导致的错误。在 CentOS 7 中 /var/run 必须是指向 /run 的一个软链接。因此在安装其他软件包之前要安装 filesystem

    https://forums.gentoo.org/viewtopic-t-1079204-start-0.html

    lost lvm partitions

    重启进入 CentOS 7 后,可能无法挂载磁盘上的 lvm 卷。

    sudo yum install -y lvm2 mdadm
    

    执行以下命令查看 lvm 卷情况,可以看出有一个 Volume Group,名为 VolGroup00,它有两个 Logic Volume,处于 INACTIVE 的状态,并且在 /dev 下找不到它们对应的设备文件 (/dev/VolGroup00/LogVol01, /dev/dm-0, etc)。

    $ sudo vgscan
      Reading volume groups from cache.
      Found volume group "VolGroup00" using metadata type lvm2
    $ sudo lvscan
      INACTIVE            '/dev/VolGroup00/LogVol01' [1.50 GiB] inherit
      INACTIVE            '/dev/VolGroup00/LogVol00' [38.25 GiB] inherit
    

    执行以下命令以启用 lvm 卷。

    vgchange -a y VolGroup00
    

    查看 lvm 卷情况,可以看到这两个 Logic Volume 都处于 ACTIVE 的状态了,并且在 /dev 目录下存在它们对应的设备文件 (/dev/VolGroup00/LogVol01, /dev/dm-0, etc)。

    $ sudo lvscan
      ACTIVE            '/dev/VolGroup00/LogVol01' [1.50 GiB] inherit
      ACTIVE            '/dev/VolGroup00/LogVol00' [38.25 GiB] inherit
    

    通过以下命令可以挂载 lvm 分区。

    sudo mount /dev/VolGroup00/LogVol00 /mnt
    

    Reference

    相关文章

      网友评论

          本文标题:CentOS 6 远程升级到 CentOS 7

          本文链接:https://www.haomeiwen.com/subject/mwhdthtx.html