由于 CentOS 6 與 CentOS 7 的目錄結(jié)構(gòu)有一些差異,因此 CentOS 6 難以直接升級(jí)到 CentOS 7。本文提出一種在新分區(qū)上安裝 CentOS 7,再修改啟動(dòng)項(xiàng),以實(shí)現(xiàn)系統(tǒng)的升級(jí)悦冀。整個(gè)安裝過(guò)程使用 ssh 遠(yuǎn)程操作,無(wú)需使用啟動(dòng) U 盤睛琳。
創(chuàng)建新分區(qū)
系統(tǒng)分區(qū)結(jié)構(gòu)
/dev/sda1 # boot 分區(qū)
/dev/sda2 # 根分區(qū)
/dev/sdb1 # 新系統(tǒng)根分區(qū)
格式化并掛載新系統(tǒng)的根分區(qū)
sudo yum -y install xfsprogs xfsdump
sudo mkfs.xfs /dev/sdb1
sudo mount /dev/sdb1 /mnt
安裝 chroot 系統(tǒng)
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"
復(fù)制 /dev/sdb1
的 UUID,編輯 /mnt/etc/fstab
掸掏,修改根分區(qū)掛載點(diǎn)茁影。
即將
/dev/mapper/VolGroup00-LogVol00 / ext4 defaults 1 1
替換為
UUID=244f600a-f457-4e53-b112-5cfd8ef79514 / xfs defaults 1 1
網(wǎng)絡(luò)配置
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 分區(qū)所在磁盤
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
SSH 服務(wù)配置
sudo yum install -y openssh-server openssh-clients
sudo systemctl enable sshd
用戶配置
設(shè)置 root 密碼(當(dāng)前 root 密碼處于未設(shè)置的狀態(tài),不設(shè)置 root 密碼會(huì)導(dǎo)致無(wú)法以 root 用戶登錄)丧凤。
passwd
也可以創(chuàng)建一個(gè)新用戶募闲。
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
重啟進(jìn)入 CentOS 7
退出 Chroot 系統(tǒng)
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
這是由于文件系統(tǒng) layout 不對(duì)導(dǎo)致的錯(cuò)誤浩螺。在 CentOS 7 中 /var/run
必須是指向 /run
的一個(gè)軟鏈接。因此在安裝其他軟件包之前要安裝 filesystem
仍侥。
https://forums.gentoo.org/viewtopic-t-1079204-start-0.html
lost lvm partitions
重啟進(jìn)入 CentOS 7 后要出,可能無(wú)法掛載磁盤上的 lvm 卷。
sudo yum install -y lvm2 mdadm
執(zhí)行以下命令查看 lvm 卷情況农渊,可以看出有一個(gè) Volume Group患蹂,名為 VolGroup00
,它有兩個(gè) Logic Volume,處于 INACTIVE
的狀態(tài)传于,并且在 /dev
下找不到它們對(duì)應(yīng)的設(shè)備文件 (/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
執(zhí)行以下命令以啟用 lvm 卷。
vgchange -a y VolGroup00
查看 lvm 卷情況沼溜,可以看到這兩個(gè) Logic Volume 都處于 ACTIVE
的狀態(tài)了平挑,并且在 /dev
目錄下存在它們對(duì)應(yīng)的設(shè)備文件 (/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
通過(guò)以下命令可以掛載 lvm 分區(qū)系草。
sudo mount /dev/VolGroup00/LogVol00 /mnt