编辑
现在我可以启动操作系统了。由于我/etc
在购买“新”专用服务器并安装 Ubuntu Server 20.04 后立即对目录进行了干净的复制,因此我继续执行以下操作:
- 将“新”服务器启动到救援模式。
chroot
进入系统。mv /etc /etc.old_server
tar -zxvf ~/etc.tar.gz && mv ~/etc /
apt update && apt --reinstall install linux-generic linux-headers-generic linux-image-generic linux-firmware intel-microcode
(顺便说一下,我安装了一个新的内核版本linux-modules-5.4.0-107-generic
。我还重新安装了原始内核,版本 105)。在这里我注意到操作系统开始使用常规的 Ubuntu 存储库(http://nova.clouds.archive.ubuntu.com)但在之前的/etc
目录中,使用的存储库是 OVH 存储库(http://ubuntu.mirrors.ovh.net)。- 重新启动恢复模式进入硬盘 Ubuntu 服务器 20.04,并且启动正常。
此时,我认为通过不同的存储库和不同的目录重新安装内核、initram 等,/etc
这些目录可能具有不同的 linux 内核/initram 配置文件,重建可能会解决问题,但随后注意到网络接口逻辑名称从 更改为enp3s0
。eno1
由于此时有一些网络配置文件,因此enp3s0
它们没有被应用。
所以,现在我想知道:
- 我是否遗漏了
/etc
用于重新安装内核/initram 的目录中的配置文件,以便现在可以正常工作? - 网络配置存在问题,由于逻辑名称更改为,因此现在无法应用
eno1
。 - 也许使用官方的 Ubuntu 存储库而不是 OVH 存储库可以解决问题?
明天我会尽力找出答案。
先谢谢了。
结束编辑
我刚刚将我的个人 OVH 专用服务器克隆到我刚刚租用的另一台 OVH 专用服务器上,并且一切“运行正常”,直到内核和 initram 映像(linux-image-5.4.0-105-generic
)意外重新安装。
重建 initram 并重新安装内核和 initram 映像后(无法备份,因为 apt 让我措手不及,我没有想到会重建/重新安装)系统再也没有启动过(除非我使用 OVH 救援模式chroot
并尝试修复问题)。
我从OVH技术人员那里得到了以下消息:
- 首先他们说
the system did not respond to keyboard
他重新启动了系统(进入救援模式后我尝试修复问题然后使用服务器硬盘和内核映像/ramdisk 再次重新启动)。 - 第二次,
The server gets stuck during the boot phase, with the message: (unable to boot correctly)
但我不知道这是内核恐慌还是当某些服务(如网络相关服务)无法启动时 Ubuntu 服务器显示的消息。
- 由于我能够在意外的内核重建之前启动系统,所以我想知道我应该排除并错过哪些文件、库或其他东西?我说的是那些似乎会影响重建/重新安装的 initram 和内核映像的内容。
linux-image-5.4.0-105-generic
顺便说一句,当我全新安装 Ubuntu 服务器 20.04 时,专用服务器正在通过内核运行。
完整序列可能是:
- 我租用了一台“新的”OVH 专用服务器。
- 我安装了 Ubuntu 服务器 20.04。
- 我重新启动了“新”服务器并进入救援模式。
- 我从“新”服务器中提取了一个完整克隆,将“旧”专用服务器同步到具有不同硬件的“新”服务器,同时通过命令排除一些目录。
rsync --log-file=/tmp/rsync-full-clone.log --stats --human-readable -aAXvHSI --exclude={/lib/modules/*,/boot/*,/dev/*,/etc/*,/proc/*,/sys/*,/tmp/*,/run/*,/mnt/*,/media/*,/lost+found} -e ssh [email protected]:/ /
- 当我排除该目录时,我通过命令将目录
/etc
的特定同步从“旧”服务器拉到“新”服务器。/etc
rsync --log-file=/tmp/rsync-etc-dir.log --stats --human-readable -aAXvHSI --exclude-from='/root/rsync-excluded-etc-files.txt' -e ssh [email protected]:/etc /
- 然后,我编辑了网络相关的配置文件(主要是)
/etc
,重新启动了“新”服务器,它启动正常,一切似乎“运行正常”。 - 然后我运行了以下命令
apt update && apt remove ufw
。 - 前一个命令触发了内核和 initram 映像的重建(
linux-image-5.4.0-105-generic
),但由于缺少文件/库/二进制文件而失败,因此我执行了apt install cryptsetup cryptsetup-bin cryptsetup-initramfs fuse ntfs-3g
。 - 之后,我远程重新启动了“新”服务器,它再也没有使用自己的内核映像启动(我怀疑这可能是由于内核恐慌引起的,但我没有任何机制来检查它)。
- 通过 OVH 控制面板,我将专用服务器配置为在救援模式下启动,因此当 OVH 技术人员硬重启专用服务器时,它会启动到救援模式环境,以便我可以尝试修复问题。
- 我尝试重新安装 (
apt --reinstall install
) Linux 内核映像和其他关键库,检查配置文件中的错误并修复它们,但没有成功。因此,每次我使用自己的硬盘和自己的内核映像重新启动系统时,它都无法启动。 - 因此,我想知道当将“旧”服务器 rsynced 到“新”服务器时,我可能会覆盖一些内核关键配置文件,但是当我不得不重新安装 Linux 内核并且 dpk 脚本使用属于“旧”专用服务器的库或配置文件(或两者)并通过它们构建内核映像时,问题就出现了。
所以我想知道我应该排除和错过哪些文件、库或其他什么?
以下是同步目录时排除的文件列表/etc
:
~# cat rsync-excluded-etc-files.txt
/etc/timezone
/etc/localtime
/etc/fstab
/etc/mtab
/etc/mdadm.conf
/etc/crypttab
/etc/mailname
/etc/hostname
/etc/host.conf
/etc/hosts
/etc/grub.d/
/etc/resolv.conf
/etc/netplan/
/etc/network/
/etc/networkd-dispatcher/
/etc/networks
/etc/systemd/network/50-default.network
/etc/systemd/network/pub.network
/etc/resolvconf/resolv.conf.d/original
/etc/resolvconf/resolv.conf.d/tail
/etc/nsswitch.conf
/etc/NetworkManager/*
/etc/networkd-dispatcher/*
/etc/dbus-1/*
/etc/udev/*
/etc/modules
/etc/modules-load.d/modules.conf
/etc/modprobe.d/*
/etc/modules-load.d/modules.conf
/etc/modules
/etc/depmod.d/*
/etc/mke2fs.conf
/etc/fwupd/*
/etc/hdparm.conf
/etc/initramfs-tools/*
/etc/iproute2/*
/etc/issue
/etc/iscsi/*
/etc/kernel/*
/etc/kernel-img.conf
/etc/polkit-1/*
/etc/PackageKit/*
/etc/udisks2/*